From a3496263b9285677ed771741ed64a0faab1f9c24 Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Fri, 3 Mar 2023 21:19:39 -0600 Subject: [PATCH] Added emoji support, refactored, internalized pyautogui --- README.md | 6 +- src/__builtins__.py | 57 +- src/core/columns/controls_column.py | 4 +- src/core/columns/keys_column.py | 8 +- src/core/columns/left_column.py | 4 +- src/core/columns/right_column.py | 13 +- src/core/widgets/defined_keys.py | 22 +- src/core/widgets/emoji_popover.py | 101 + src/core/widgets/key.py | 20 +- src/core/window.py | 24 +- src/utils/pyautogui/__init__.py | 2163 ++ src/utils/pyautogui/__main__.py | 2 + src/utils/pyautogui/_pyautogui_java.py | 0 src/utils/pyautogui/_pyautogui_osx.py | 434 + src/utils/pyautogui/_pyautogui_win.py | 568 + src/utils/pyautogui/_pyautogui_x11.py | 301 + src/utils/pyautogui_control.py | 25 +- user_config/bin/mouse-keyboard | 23 + .../usr/applications/mouse-keyboard.desktop | 11 + .../usr/share/mouse keyboard/emoji.txt | 1593 -- .../usr/share/mouse-keyboard/emoji.json | 23215 ++++++++++++++++ .../icons/mouse-keyboard.png} | Bin .../stylesheet.css | 0 23 files changed, 26934 insertions(+), 1660 deletions(-) create mode 100644 src/core/widgets/emoji_popover.py create mode 100644 src/utils/pyautogui/__init__.py create mode 100644 src/utils/pyautogui/__main__.py create mode 100644 src/utils/pyautogui/_pyautogui_java.py create mode 100644 src/utils/pyautogui/_pyautogui_osx.py create mode 100644 src/utils/pyautogui/_pyautogui_win.py create mode 100644 src/utils/pyautogui/_pyautogui_x11.py create mode 100755 user_config/bin/mouse-keyboard create mode 100755 user_config/usr/applications/mouse-keyboard.desktop delete mode 100644 user_config/usr/share/mouse keyboard/emoji.txt create mode 100644 user_config/usr/share/mouse-keyboard/emoji.json rename user_config/usr/share/{mouse keyboard/icon.png => mouse-keyboard/icons/mouse-keyboard.png} (100%) rename user_config/usr/share/{mouse keyboard => mouse-keyboard}/stylesheet.css (100%) diff --git a/README.md b/README.md index 8010991..c7c91c4 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ -# Mouse_Keyboard +# Mouse-Keyboard An onscreen keyboard for the mouse. +### Requirements +* PyGObject +* python-xlib + # TODO
  • Get save and execute of custom commands working.
  • diff --git a/src/__builtins__.py b/src/__builtins__.py index f85a8ea..728a2a6 100644 --- a/src/__builtins__.py +++ b/src/__builtins__.py @@ -1,5 +1,7 @@ # Python imports -import builtins, threading +import os +import builtins +import threading # Lib imports @@ -24,6 +26,9 @@ def daemon_threaded_wrapper(fn): +class MissingConfigError(Exception): + pass + class Pyautogui_Controller(ControlMixin): def __init__(self): @@ -38,39 +43,69 @@ keys_json = { "keys": { "row1": { "pKeys": ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'], - "sKeys": ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'], - "eKeys": ['๐Ÿคฉ', '\U0001F600', '', '', '', '', '', '', '', ''] + "sKeys": ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'] }, "row2": { "pKeys": ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'], - "sKeys": ['\\', '^', '#', '$', '%', '&', '-', '_', '"', '*'], - "eKeys": ['', '', '', '', '', '', '', '', '', ''] + "sKeys": ['\\', '^', '#', '$', '%', '&', '-', '_', '"', '*'] }, "row3": { "pKeys": ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', "'"], - "sKeys": ['/', '|', ':', '=', '+', '', '', '', ';', '!'], - "eKeys": ['', '', '', '', '', '', '', '', '', ''] + "sKeys": ['/', '|', ':', '=', '+', '', '', '', ';', '!'] }, "row4": { "pKeys": ['z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '?'], - "sKeys": ['', '', '<', '>', '[', ']', '(', ')', '{', '}'], - "eKeys": ['', '', '', '', '', '', '', '', '', ''] + "sKeys": ['', '', '<', '>', '[', ']', '(', ')', '{', '}'] }, } } - # NOTE: Just reminding myself we can add to builtins two different ways... # __builtins__.update({"event_system": Builtins()}) -builtins.app_name = "Mouse Keyboard" +builtins.app_name = "Mouse-Keyboard" builtins.threaded = threaded_wrapper builtins.daemon_threaded = daemon_threaded_wrapper builtins.keys_set = keys_json builtins.trace_debug = False builtins.debug = False builtins.app_settings = None +builtins.get_clipboard = ['xclip','-selection', 'clipboard', '-o'] +builtins.set_clipboard = ['xclip','-selection','clipboard'] builtins.endpoint_registry = EndpointRegistry() builtins.event_system = EventSystem() builtins.typwriter = Pyautogui_Controller() + + + +_USER_HOME = os.path.expanduser('~') +_USR_PATH = f"/usr/share/{app_name.lower()}" +_CONFIG_PATH = f"{_USER_HOME}/.config/{app_name.lower()}" +_ICON_FILE = f"{_CONFIG_PATH}/icons/{app_name.lower()}.png" +_CSS_FILE = f"{_CONFIG_PATH}/stylesheet.css" +_EMOJI_FILE = f"{_CONFIG_PATH}/emoji.json" + + +if not os.path.exists(_ICON_FILE): + _ICON_FILE = f"{_USR_PATH}/icons/{app_name.lower()}.png" + if not os.path.exists(_ICON_FILE): + print(_ICON_FILE) + raise MissingConfigError("Unable to find the application icon.") + +if not os.path.exists(_CSS_FILE): + _CSS_FILE = f"{_USR_PATH}/stylesheet.css" + if not os.path.exists(_CSS_FILE): + raise MissingConfigError("Unable to find the stylesheet.") + +if not os.path.exists(_EMOJI_FILE): + _EMOJI_FILE = f"{_USR_PATH}/emoji.json" + if not os.path.exists(_EMOJI_FILE): + raise MissingConfigError("Unable to find the stylesheet.") + + + +builtins.CONFIG_PATH = _CONFIG_PATH +builtins.ICON_FILE = _ICON_FILE +builtins.CSS_FILE = _CSS_FILE +builtins.EMOJI_FILE = _EMOJI_FILE diff --git a/src/core/columns/controls_column.py b/src/core/columns/controls_column.py index 3fc1acd..0c24fac 100644 --- a/src/core/columns/controls_column.py +++ b/src/core/columns/controls_column.py @@ -6,7 +6,7 @@ gi.require_version('Gtk', '3.0') from gi.repository import Gtk # Application imports -from ..widgets.defined_keys import Tab_Key +from ..widgets.defined_keys import Symbols_Key from ..widgets.defined_keys import Del_Key from ..widgets.defined_keys import Ctrl_Key from ..widgets.defined_keys import Shift_Key @@ -26,7 +26,7 @@ class Button_Box(Gtk.ButtonBox): def __init__(self): super(Button_Box, self).__init__() - for key in [Tab_Key(), Del_Key(), Ctrl_Key(), Shift_Key(), Alt_Key(), PrtSc_Key()]: + for key in [Symbols_Key(), Del_Key(), Ctrl_Key(), Shift_Key(), Alt_Key(), PrtSc_Key()]: self.add(key) diff --git a/src/core/columns/keys_column.py b/src/core/columns/keys_column.py index fdecf68..fd67536 100644 --- a/src/core/columns/keys_column.py +++ b/src/core/columns/keys_column.py @@ -38,17 +38,15 @@ class Keys_Column(Gtk.Box): for child in children: pKeys = keys[child]["pKeys"] sKeys = keys[child]["sKeys"] - eKeys = keys[child]["eKeys"] row_box = self.add_row() - if len(pKeys) == len(sKeys) and len(pKeys) == len(eKeys): + if len(pKeys) == len(sKeys): for i in range(10): pkey = pKeys[i] sKey = sKeys[i] - eKey = eKeys[i] - row_box.add(Key(pkey, sKey, eKey)) + row_box.add(Key(pkey, sKey)) else: - raise KeyboardRowMatchError("A row in keys_json has missmatched pKeys, sKeys, or eKeys lengths.") + raise KeyboardRowMatchError("A row in keys_json has missmatched pKeys to sKeys lengths.") self.add(Bottom_Key_Row()) diff --git a/src/core/columns/left_column.py b/src/core/columns/left_column.py index b658846..6de02c9 100644 --- a/src/core/columns/left_column.py +++ b/src/core/columns/left_column.py @@ -7,7 +7,7 @@ from gi.repository import Gtk # Application imports from ..widgets.defined_keys import Esc_Key -from ..widgets.defined_keys import Symbols_Key +from ..widgets.defined_keys import Tab_Key from ..widgets.defined_keys import CAPS_Key @@ -21,7 +21,7 @@ class Left_Column(Gtk.Box): self.setup_styling() - for key in [Symbols_Key(), Esc_Key(), CAPS_Key()]: + for key in [Tab_Key(), Esc_Key(), CAPS_Key()]: self.add(key) self.show_all() diff --git a/src/core/columns/right_column.py b/src/core/columns/right_column.py index 895fbae..516e2cc 100644 --- a/src/core/columns/right_column.py +++ b/src/core/columns/right_column.py @@ -6,12 +6,14 @@ gi.require_version('Gtk', '3.0') from gi.repository import Gtk # Application imports -from ..widgets.defined_keys import Emoji_Keys +from ..widgets.emoji_popover import Emoji_Popover +from ..widgets.defined_keys import Emoji_Key from ..widgets.defined_keys import Backspace_Key from ..widgets.defined_keys import Enter_Key + class Right_Column(Gtk.Box): """docstring for Right_Column.""" @@ -20,7 +22,14 @@ class Right_Column(Gtk.Box): self.setup_styling() - for key in [Emoji_Keys(), Backspace_Key(), Enter_Key()]: + emoji_popover = Emoji_Popover() + emoji_key = Emoji_Key(emoji_popover) + + emoji_popover.set_parent_key(emoji_key) + emoji_popover.set_relative_to(emoji_key) + emoji_popover.set_constrain_to(0) # LEFT = 0, RIGHT = 1, TOP = 2, BOTTOM = 3 + + for key in [emoji_key, Backspace_Key(), Enter_Key()]: self.add(key) self.show_all() diff --git a/src/core/widgets/defined_keys.py b/src/core/widgets/defined_keys.py index 54fbbaf..4689c5e 100644 --- a/src/core/widgets/defined_keys.py +++ b/src/core/widgets/defined_keys.py @@ -63,21 +63,25 @@ class Backspace_Key(Key): def _clicked(self, widget = None): typwriter.press_special_keys(self.get_label()) -class Emoji_Keys(Key): - def __init__(self): - super(Emoji_Keys, self).__init__("Emoji", "Emoji", iscontrol=True) +class Emoji_Key(Key): + def __init__(self, emoji_popover): + super(Emoji_Key, self).__init__("Emoji", "Emoji", iscontrol=True) + + self._ctx = self.get_style_context() + self._emoji_popover = emoji_popover def setup_signals(self): self.connect("released", self._clicked) def _clicked(self, widget = None): - ctx = widget.get_style_context() - ctx.remove_class("toggled_bttn") if ctx.has_class("toggled_bttn") else ctx.add_class("toggled_bttn") + self._ctx.add_class("toggled_bttn") + self._emoji_popover.popup() + + def unset_selected(self, widget = None): + self._ctx.remove_class("toggled_bttn") + + - key_columns = self.get_parent().get_parent().get_children()[1] - for row in key_columns.get_children(): - for key in row: - key.emit("toggle-emoji-keys", ()) class Enter_Key(Key): def __init__(self): diff --git a/src/core/widgets/emoji_popover.py b/src/core/widgets/emoji_popover.py new file mode 100644 index 0000000..89caa57 --- /dev/null +++ b/src/core/widgets/emoji_popover.py @@ -0,0 +1,101 @@ +# Python imports +from collections import defaultdict +import json + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports +from .key import Key + + + + +class Emoji_Notebook(Gtk.Notebook): + """docstring for Emoji_Notebook.""" + + def __init__(self): + super(Emoji_Notebook, self).__init__() + + self.load_ui( self.get_data(EMOJI_FILE) ) + + self.setup_styling() + self.show_all() + + + def setup_styling(self): + self.set_current_page(0) + self.set_scrollable(True) + + def get_data(self, file): + emoji_grouping = defaultdict(list) + + with open(file, 'r') as f: + emoji_data = json.load(f) + for emoji in emoji_data: + category = emoji['category'] + del emoji['category'] + del emoji['unicode_version'] + del emoji['ios_version'] + emoji_grouping[category].append(emoji) + + return emoji_grouping + + def load_ui(self, emoji_grouping): + width = 1 + height = 1 + for group in emoji_grouping: + tab_widget = Gtk.Label(label=group) + scroll, grid = self.create_scroll_and_grid() + + top = 0 + left = 0 + for emoji in emoji_grouping[group]: + key = Key(emoji["emoji"], emoji["emoji"]) + key._is_emoji = True + grid.attach(key, left, top, width, height) + + left += 1 + if left > 8: + left = 0 + top += 1 + + self.append_page(scroll, tab_widget) + self.set_tab_reorderable(scroll, False) + self.set_tab_detachable(scroll, False) + + def create_scroll_and_grid(self): + scroll = Gtk.ScrolledWindow() + grid = Gtk.Grid() + scroll.add(grid) + + return scroll, grid + + + +class Emoji_Popover(Gtk.Popover): + """docstring for Emoji_Popover.""" + + def __init__(self): + super(Emoji_Popover, self).__init__() + + emoji_notebook = Emoji_Notebook() + self.add(emoji_notebook) + self.set_default_widget(emoji_notebook) + self.setup_styling() + + self._emoji_key = None + + + def setup_styling(self): + self.set_vexpand(True) + self.set_size_request(480, 280) + + def setup_signals(self): + self.connect("closed", self._emoji_key.unset_selected) + + def set_parent_key(self, emoji_key): + self._emoji_key = emoji_key + self.setup_signals() diff --git a/src/core/widgets/key.py b/src/core/widgets/key.py index 5c4af1f..046edf5 100644 --- a/src/core/widgets/key.py +++ b/src/core/widgets/key.py @@ -9,13 +9,12 @@ from gi.repository import Gtk class Key(Gtk.Button or Gtk.ToggleButton): - def __init__(self, primary = "NULL", secondary = "NULL", emoji = "NULL", iscontrol=False): + def __init__(self, primary = "NULL", secondary = "NULL", iscontrol=False): super(Key, self).__init__() self.iscontrol = iscontrol self._primary_symbol = primary self._secondary_symbol = secondary - self._emoji_symbol = emoji self._is_upper = False self._is_symbol = False self._is_emoji = False @@ -30,13 +29,17 @@ class Key(Gtk.Button or Gtk.ToggleButton): def setup_signals(self): self.connect("released", self._do_type) - # self.connect("toggle-caps", self.toggle_caps) - # self.connect("toggle-symbol-keys", self.toggle_symbol_keys) self.connect("toggle-emoji-keys", self.toggle_emoji_keys) def _do_type(self, widget = None): key = self.get_label().strip() - typwriter.type(key) + if not self._is_emoji: + typwriter.type(key) + else: + typwriter.set_clipboard_data(key, "utf-16") + typwriter.isCtrlOn = True + typwriter.type('v') + typwriter.isCtrlOn = False def _do_press_special_key(self, widget = None): key = self.get_label() @@ -51,18 +54,13 @@ class Key(Gtk.Button or Gtk.ToggleButton): self._is_symbol = not self._is_symbol if self._is_symbol: self.set_label(self._secondary_symbol) - elif self._is_emoji: - self.set_label(self._emoji_symbol) else: self.set_label(self._primary_symbol.upper()) if self._is_upper else self.set_label(self._primary_symbol.lower()) # NOTE: Might use name attrib on widgets and de-duplicate this and the above logic. def toggle_emoji_keys(self, widget = None, eve = None): if not self.iscontrol: - self._is_emoji = not self._is_emoji - if self._is_emoji: - self.set_label(self._emoji_symbol) - elif self._is_symbol: + if self._is_symbol: self.set_label(self._secondary_symbol) else: self.set_label(self._primary_symbol.upper()) if self._is_upper else self.set_label(self._primary_symbol.lower()) diff --git a/src/core/window.py b/src/core/window.py index 90a6a80..b3d6111 100644 --- a/src/core/window.py +++ b/src/core/window.py @@ -16,9 +16,6 @@ from .container import Container -class MissingConfigError(Exception): - pass - class Window(SignalsMixin, Gtk.ApplicationWindow): """docstring for Window.""" @@ -26,22 +23,6 @@ class Window(SignalsMixin, Gtk.ApplicationWindow): def __init__(self, args, unknownargs): super(Window, self).__init__() - self._USER_HOME = os.path.expanduser('~') - self._USR_PATH = f"/usr/share/{app_name.lower()}" - self._CONFIG_PATH = f"{self._USER_HOME}/.config/{app_name.lower()}" - self._ICON_FILE = f"{self._CONFIG_PATH}/icon.png" - self._CSS_FILE = f"{self._CONFIG_PATH}/stylesheet.css" - - if not os.path.exists(self._ICON_FILE): - self._ICON_FILE = f"{self._USR_PATH}/icon.png" - if not os.path.exists(self._ICON_FILE): - raise MissingConfigError("Unable to find the application icon.") - - if not os.path.exists(self._ICON_FILE): - self._CSS_FILE = f"{self._USR_PATH}/stylesheet.css" - if not os.path.exists(self._ICON_FILE): - raise MissingConfigError("Unable to find the stylesheet.") - self.setup_win_settings() self.setup_styling() self.setup_signals() @@ -50,12 +31,11 @@ class Window(SignalsMixin, Gtk.ApplicationWindow): self.show_all() - def setup_signals(self): self.connect("delete-event", Gtk.main_quit) def setup_win_settings(self): - self.set_icon_from_file(self._ICON_FILE) + self.set_icon_from_file(ICON_FILE) self.set_title(app_name) self.set_default_size(800, 200) self.set_keep_above(True) @@ -77,7 +57,7 @@ class Window(SignalsMixin, Gtk.ApplicationWindow): self.connect("draw", self._area_draw) css_provider = Gtk.CssProvider() - css_provider.load_from_path(self._CSS_FILE) + css_provider.load_from_path(CSS_FILE) screen = Gdk.Screen.get_default() style_context = Gtk.StyleContext() style_context.add_provider_for_screen(screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER) diff --git a/src/utils/pyautogui/__init__.py b/src/utils/pyautogui/__init__.py new file mode 100644 index 0000000..ec7d097 --- /dev/null +++ b/src/utils/pyautogui/__init__.py @@ -0,0 +1,2163 @@ +# PyAutoGUI lets Python control the mouse and keyboard, and other GUI automation tasks. For Windows, macOS, and Linux, +# on Python 3 and 2. +# https://github.com/asweigart/pyautogui +# Al Sweigart al@inventwithpython.com (Send me feedback & suggestions!) + + +# TODO - the following features are half-implemented right now: +# snapshot logging +# non-qwerty keyboard mapping +# primary secondary mouse button awareness + + +from __future__ import absolute_import, division, print_function + + +__version__ = "0.9.53" + +import sys +import time +import datetime +import os +import platform +import re +import functools +from contextlib import contextmanager + + +class PyAutoGUIException(Exception): + """ + PyAutoGUI code will raise this exception class for any invalid actions. If PyAutoGUI raises some other exception, + you should assume that this is caused by a bug in PyAutoGUI itself. (Including a failure to catch potential + exceptions raised by PyAutoGUI.) + """ + + pass + + +class FailSafeException(PyAutoGUIException): + """ + This exception is raised by PyAutoGUI functions when the user puts the mouse cursor into one of the "failsafe + points" (by default, one of the four corners of the primary monitor). This exception shouldn't be caught; it's + meant to provide a way to terminate a misbehaving script. + """ + + pass + + +class ImageNotFoundException(PyAutoGUIException): + """ + This exception is the PyAutoGUI version of PyScreeze's `ImageNotFoundException`, which is raised when a locate*() + function call is unable to find an image. + + Ideally, `pyscreeze.ImageNotFoundException` should never be raised by PyAutoGUI. + """ + + +if sys.version_info[0] == 2 or sys.version_info[0:2] in ((3, 1), (3, 2)): + # Python 2 and 3.1 and 3.2 uses collections.Sequence + import collections + + collectionsSequence = collections.Sequence +else: + # Python 3.3+ uses collections.abc.Sequence + import collections.abc + + collectionsSequence = collections.abc.Sequence # type: ignore + + +try: + from pytweening import ( + easeInQuad, + easeOutQuad, + easeInOutQuad, + easeInCubic, + easeOutCubic, + easeInOutCubic, + easeInQuart, + easeOutQuart, + easeInOutQuart, + easeInQuint, + easeOutQuint, + easeInOutQuint, + easeInSine, + easeOutSine, + easeInOutSine, + easeInExpo, + easeOutExpo, + easeInOutExpo, + easeInCirc, + easeOutCirc, + easeInOutCirc, + easeInElastic, + easeOutElastic, + easeInOutElastic, + easeInBack, + easeOutBack, + easeInOutBack, + easeInBounce, + easeOutBounce, + easeInOutBounce, + ) + + # getLine is not needed. + # getPointOnLine has been redefined in this file, to avoid dependency on pytweening. + # linear has also been redefined in this file. +except ImportError: + + def _couldNotImportPyTweening(*unused_args, **unused_kwargs): + """ + This function raises ``PyAutoGUIException``. It's used for the PyTweening function names if the PyTweening + module failed to be imported. + """ + raise PyAutoGUIException( + "PyAutoGUI was unable to import pytweening. Please install this module to enable the function you tried to call." + ) + + easeInQuad = _couldNotImportPyTweening + easeOutQuad = _couldNotImportPyTweening + easeInOutQuad = _couldNotImportPyTweening + easeInCubic = _couldNotImportPyTweening + easeOutCubic = _couldNotImportPyTweening + easeInOutCubic = _couldNotImportPyTweening + easeInQuart = _couldNotImportPyTweening + easeOutQuart = _couldNotImportPyTweening + easeInOutQuart = _couldNotImportPyTweening + easeInQuint = _couldNotImportPyTweening + easeOutQuint = _couldNotImportPyTweening + easeInOutQuint = _couldNotImportPyTweening + easeInSine = _couldNotImportPyTweening + easeOutSine = _couldNotImportPyTweening + easeInOutSine = _couldNotImportPyTweening + easeInExpo = _couldNotImportPyTweening + easeOutExpo = _couldNotImportPyTweening + easeInOutExpo = _couldNotImportPyTweening + easeInCirc = _couldNotImportPyTweening + easeOutCirc = _couldNotImportPyTweening + easeInOutCirc = _couldNotImportPyTweening + easeInElastic = _couldNotImportPyTweening + easeOutElastic = _couldNotImportPyTweening + easeInOutElastic = _couldNotImportPyTweening + easeInBack = _couldNotImportPyTweening + easeOutBack = _couldNotImportPyTweening + easeInOutBack = _couldNotImportPyTweening + easeInBounce = _couldNotImportPyTweening + easeOutBounce = _couldNotImportPyTweening + easeInOutBounce = _couldNotImportPyTweening + + +try: + from pymsgbox import alert, confirm, prompt, password +except ImportError: + # If pymsgbox module is not found, those methods will not be available. + def _couldNotImportPyMsgBox(*unused_args, **unused_kwargs): + """ + This function raises ``PyAutoGUIException``. It's used for the PyMsgBox function names if the PyMsgbox module + failed to be imported. + """ + raise PyAutoGUIException( + "PyAutoGUI was unable to import pymsgbox. Please install this module to enable the function you tried to call." + ) + + alert = confirm = prompt = password = _couldNotImportPyMsgBox + + +def raisePyAutoGUIImageNotFoundException(wrappedFunction): + """ + A decorator that wraps PyScreeze locate*() functions so that the PyAutoGUI user sees them raise PyAutoGUI's + ImageNotFoundException rather than PyScreeze's ImageNotFoundException. This is because PyScreeze should be + invisible to PyAutoGUI users. + """ + + @functools.wraps(wrappedFunction) + def wrapper(*args, **kwargs): + try: + return wrappedFunction(*args, **kwargs) + except pyscreeze.ImageNotFoundException: + raise ImageNotFoundException # Raise PyAutoGUI's ImageNotFoundException. + + return wrapper + + +try: + import pyscreeze + from pyscreeze import center, grab, pixel, pixelMatchesColor, screenshot + + # Change the locate*() functions so that they raise PyAutoGUI's ImageNotFoundException instead. + @raisePyAutoGUIImageNotFoundException + def locate(*args, **kwargs): + return pyscreeze.locate(*args, **kwargs) + + locate.__doc__ = pyscreeze.locate.__doc__ + + @raisePyAutoGUIImageNotFoundException + def locateAll(*args, **kwargs): + return pyscreeze.locateAll(*args, **kwargs) + + locateAll.__doc__ = pyscreeze.locateAll.__doc__ + + @raisePyAutoGUIImageNotFoundException + def locateAllOnScreen(*args, **kwargs): + return pyscreeze.locateAllOnScreen(*args, **kwargs) + + locateAllOnScreen.__doc__ = pyscreeze.locateAllOnScreen.__doc__ + + @raisePyAutoGUIImageNotFoundException + def locateCenterOnScreen(*args, **kwargs): + return pyscreeze.locateCenterOnScreen(*args, **kwargs) + + locateCenterOnScreen.__doc__ = pyscreeze.locateCenterOnScreen.__doc__ + + @raisePyAutoGUIImageNotFoundException + def locateOnScreen(*args, **kwargs): + return pyscreeze.locateOnScreen(*args, **kwargs) + + locateOnScreen.__doc__ = pyscreeze.locateOnScreen.__doc__ + + @raisePyAutoGUIImageNotFoundException + def locateOnWindow(*args, **kwargs): + return pyscreeze.locateOnWindow(*args, **kwargs) + + locateOnWindow.__doc__ = pyscreeze.locateOnWindow.__doc__ + + +except ImportError: + # If pyscreeze module is not found, screenshot-related features will simply not work. + def _couldNotImportPyScreeze(*unused_args, **unsed_kwargs): + """ + This function raises ``PyAutoGUIException``. It's used for the PyScreeze function names if the PyScreeze module + failed to be imported. + """ + raise PyAutoGUIException( + "PyAutoGUI was unable to import pyscreeze. (This is likely because you're running a version of Python that Pillow (which pyscreeze depends on) doesn't support currently.) Please install this module to enable the function you tried to call." + ) + + center = _couldNotImportPyScreeze + grab = _couldNotImportPyScreeze + locate = _couldNotImportPyScreeze + locateAll = _couldNotImportPyScreeze + locateAllOnScreen = _couldNotImportPyScreeze + locateCenterOnScreen = _couldNotImportPyScreeze + locateOnScreen = _couldNotImportPyScreeze + locateOnWindow = _couldNotImportPyScreeze + pixel = _couldNotImportPyScreeze + pixelMatchesColor = _couldNotImportPyScreeze + screenshot = _couldNotImportPyScreeze + + +try: + import mouseinfo + + def mouseInfo(): + """ + Launches the MouseInfo app. This application provides mouse coordinate information which can be useful when + planning GUI automation tasks. This function blocks until the application is closed. + """ + mouseinfo.MouseInfoWindow() + + +except ImportError: + + def mouseInfo(): + """ + This function raises PyAutoGUIException. It's used for the MouseInfo function names if the MouseInfo module + failed to be imported. + """ + raise PyAutoGUIException( + "PyAutoGUI was unable to import mouseinfo. Please install this module to enable the function you tried to call." + ) + + +def useImageNotFoundException(value=None): + """ + When called with no arguments, PyAutoGUI will raise ImageNotFoundException when the PyScreeze locate*() functions + can't find the image it was told to locate. The default behavior is to return None. Call this function with no + arguments (or with True as the argument) to have exceptions raised, which is a better practice. + + You can also disable raising exceptions by passing False for the argument. + """ + if value is None: + value = True + # TODO - this will cause a NameError if PyScreeze couldn't be imported: + try: + pyscreeze.USE_IMAGE_NOT_FOUND_EXCEPTION = value + except NameError: + raise PyAutoGUIException("useImageNotFoundException() ws called but pyscreeze isn't installed.") + + +if sys.platform == "win32": # PyGetWindow currently only supports Windows. + try: + from pygetwindow import ( + Window, + getActiveWindow, + getActiveWindowTitle, + getWindowsAt, + getWindowsWithTitle, + getAllWindows, + getAllTitles, + ) + except ImportError: + # If pygetwindow module is not found, those methods will not be available. + def _couldNotImportPyGetWindow(*unused_args, **unused_kwargs): + """ + This function raises PyAutoGUIException. It's used for the PyGetWindow function names if the PyGetWindow + module failed to be imported. + """ + raise PyAutoGUIException( + "PyAutoGUI was unable to import pygetwindow. Please install this module to enable the function you tried to call." + ) + + Window = _couldNotImportPyGetWindow + getActiveWindow = _couldNotImportPyGetWindow + getActiveWindowTitle = _couldNotImportPyGetWindow + getWindowsAt = _couldNotImportPyGetWindow + getWindowsWithTitle = _couldNotImportPyGetWindow + getAllWindows = _couldNotImportPyGetWindow + getAllTitles = _couldNotImportPyGetWindow + +KEY_NAMES = [ + "\t", + "\n", + "\r", + " ", + "!", + '"', + "#", + "$", + "%", + "&", + "'", + "(", + ")", + "*", + "+", + ",", + "-", + ".", + "/", + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + ":", + ";", + "<", + "=", + ">", + "?", + "@", + "[", + "\\", + "]", + "^", + "_", + "`", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "{", + "|", + "}", + "~", + "accept", + "add", + "alt", + "altleft", + "altright", + "apps", + "backspace", + "browserback", + "browserfavorites", + "browserforward", + "browserhome", + "browserrefresh", + "browsersearch", + "browserstop", + "capslock", + "clear", + "convert", + "ctrl", + "ctrlleft", + "ctrlright", + "decimal", + "del", + "delete", + "divide", + "down", + "end", + "enter", + "esc", + "escape", + "execute", + "f1", + "f10", + "f11", + "f12", + "f13", + "f14", + "f15", + "f16", + "f17", + "f18", + "f19", + "f2", + "f20", + "f21", + "f22", + "f23", + "f24", + "f3", + "f4", + "f5", + "f6", + "f7", + "f8", + "f9", + "final", + "fn", + "hanguel", + "hangul", + "hanja", + "help", + "home", + "insert", + "junja", + "kana", + "kanji", + "launchapp1", + "launchapp2", + "launchmail", + "launchmediaselect", + "left", + "modechange", + "multiply", + "nexttrack", + "nonconvert", + "num0", + "num1", + "num2", + "num3", + "num4", + "num5", + "num6", + "num7", + "num8", + "num9", + "numlock", + "pagedown", + "pageup", + "pause", + "pgdn", + "pgup", + "playpause", + "prevtrack", + "print", + "printscreen", + "prntscrn", + "prtsc", + "prtscr", + "return", + "right", + "scrolllock", + "select", + "separator", + "shift", + "shiftleft", + "shiftright", + "sleep", + "space", + "stop", + "subtract", + "tab", + "up", + "volumedown", + "volumemute", + "volumeup", + "win", + "winleft", + "winright", + "yen", + "command", + "option", + "optionleft", + "optionright", +] +KEYBOARD_KEYS = KEY_NAMES # keeping old KEYBOARD_KEYS for backwards compatibility + +# Constants for the mouse button names: +LEFT = "left" +MIDDLE = "middle" +RIGHT = "right" +PRIMARY = "primary" +SECONDARY = "secondary" + +# Different keyboard mappings: +# TODO - finish this feature. +# NOTE: Eventually, I'd like to come up with a better system than this. For now, this seems like it works. +QWERTY = r"""`1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?""" +QWERTZ = r"""=1234567890/0qwertzuiop89-asdfghjkl,\yxcvbnm,.7+!@#$%^&*()?)QWERTZUIOP*(_ASDFGHJKL<|YXCVBNM<>&""" + + +def isShiftCharacter(character): + """ + Returns True if the ``character`` is a keyboard key that would require the shift key to be held down, such as + uppercase letters or the symbols on the keyboard's number row. + """ + # NOTE TODO - This will be different for non-qwerty keyboards. + return character.isupper() or character in set('~!@#$%^&*()_+{}|:"<>?') + + +# The platformModule is where we reference the platform-specific functions. +if sys.platform.startswith("java"): + # from . import _pyautogui_java as platformModule + raise NotImplementedError("Jython is not yet supported by PyAutoGUI.") +elif sys.platform == "darwin": + from . import _pyautogui_osx as platformModule +elif sys.platform == "win32": + from . import _pyautogui_win as platformModule +elif platform.system() == "Linux": + from . import _pyautogui_x11 as platformModule +else: + raise NotImplementedError("Your platform (%s) is not supported by PyAutoGUI." % (platform.system())) + +# TODO: Having module-wide user-writable global variables is bad. It makes +# restructuring the code very difficult. For instance, what if we decide to +# move the mouse-related functions to a separate file (a submodule)? How that +# file will access this module vars? It will probably lead to a circular +# import. + +# In seconds. Any duration less than this is rounded to 0.0 to instantly move +# the mouse. +MINIMUM_DURATION = 0.1 +# If sleep_amount is less than MINIMUM_DURATION, time.sleep() will be a no-op and the mouse cursor moves there instantly. +# TODO: This value should vary with the platform. http://stackoverflow.com/q/1133857 +MINIMUM_SLEEP = 0.05 + +# The number of seconds to pause after EVERY public function call. Useful for debugging: +PAUSE = 0.1 # Tenth-second pause by default. + +# Interface need some catch up time on darwin (macOS) systems. Possible values probably differ based on your system performance. +# This value affects mouse moveTo, dragTo and key event duration. +# TODO: Find a dynamic way to let the system catch up instead of blocking with a magic number. +DARWIN_CATCH_UP_TIME = 0.01 + +# If the mouse is over a coordinate in FAILSAFE_POINTS and FAILSAFE is True, the FailSafeException is raised. +# The rest of the points are added to the FAILSAFE_POINTS list at the bottom of this file, after size() has been defined. +# The points are for the corners of the screen, but note that these points don't automatically change if the screen resolution changes. +FAILSAFE = True +FAILSAFE_POINTS = [(0, 0)] + +LOG_SCREENSHOTS = False # If True, save screenshots for clicks and key presses. + +# If not None, PyAutoGUI deletes old screenshots when this limit has been reached: +LOG_SCREENSHOTS_LIMIT = 10 +G_LOG_SCREENSHOTS_FILENAMES = [] # TODO - make this a deque + +Point = collections.namedtuple("Point", "x y") +Size = collections.namedtuple("Size", "width height") + + +def _genericPyAutoGUIChecks(wrappedFunction): + """ + A decorator that calls failSafeCheck() before the decorated function and + _handlePause() after it. + """ + + @functools.wraps(wrappedFunction) + def wrapper(*args, **kwargs): + failSafeCheck() + returnVal = wrappedFunction(*args, **kwargs) + _handlePause(kwargs.get("_pause", True)) + return returnVal + + return wrapper + + +# General Functions +# ================= + + +def getPointOnLine(x1, y1, x2, y2, n): + """ + Returns an (x, y) tuple of the point that has progressed a proportion ``n`` along the line defined by the two + ``x1``, ``y1`` and ``x2``, ``y2`` coordinates. + + This function was copied from pytweening module, so that it can be called even if PyTweening is not installed. + """ + x = ((x2 - x1) * n) + x1 + y = ((y2 - y1) * n) + y1 + return (x, y) + + +def linear(n): + """ + Returns ``n``, where ``n`` is the float argument between ``0.0`` and ``1.0``. This function is for the default + linear tween for mouse moving functions. + + This function was copied from PyTweening module, so that it can be called even if PyTweening is not installed. + """ + + # We use this function instead of pytweening.linear for the default tween function just in case pytweening couldn't be imported. + if not 0.0 <= n <= 1.0: + raise PyAutoGUIException("Argument must be between 0.0 and 1.0.") + return n + + +def _handlePause(_pause): + """ + A helper function for performing a pause at the end of a PyAutoGUI function based on some settings. + + If ``_pause`` is ``True``, then sleep for ``PAUSE`` seconds (the global pause setting). + """ + if _pause: + assert isinstance(PAUSE, int) or isinstance(PAUSE, float) + time.sleep(PAUSE) + + +def _normalizeXYArgs(firstArg, secondArg): + """ + Returns a ``Point`` object based on ``firstArg`` and ``secondArg``, which are the first two arguments passed to + several PyAutoGUI functions. If ``firstArg`` and ``secondArg`` are both ``None``, returns the current mouse cursor + position. + + ``firstArg`` and ``secondArg`` can be integers, a sequence of integers, or a string representing an image filename + to find on the screen (and return the center coordinates of). + """ + if firstArg is None and secondArg is None: + return position() + + elif firstArg is None and secondArg is not None: + return Point(int(position()[0]), int(secondArg)) + + elif secondArg is None and firstArg is not None: + return Point(int(firstArg), int(position()[1])) + + elif isinstance(firstArg, str): + # If x is a string, we assume it's an image filename to locate on the screen: + try: + location = locateOnScreen(firstArg) + # The following code only runs if pyscreeze.USE_IMAGE_NOT_FOUND_EXCEPTION is not set to True, meaning that + # locateOnScreen() returns None if the image can't be found. + if location is not None: + return center(location) + else: + return None + except pyscreeze.ImageNotFoundException: + raise ImageNotFoundException + + return center(locateOnScreen(firstArg)) + + elif isinstance(firstArg, collectionsSequence): + if len(firstArg) == 2: + # firstArg is a two-integer tuple: (x, y) + if secondArg is None: + return Point(int(firstArg[0]), int(firstArg[1])) + else: + raise PyAutoGUIException( + "When passing a sequence for firstArg, secondArg must not be passed (received {0}).".format( + repr(secondArg) + ) + ) + elif len(firstArg) == 4: + # firstArg is a four-integer tuple, (left, top, width, height), we should return the center point + if secondArg is None: + return center(firstArg) + else: + raise PyAutoGUIException( + "When passing a sequence for firstArg, secondArg must not be passed and default to None (received {0}).".format( + repr(secondArg) + ) + ) + else: + raise PyAutoGUIException( + "The supplied sequence must have exactly 2 or exactly 4 elements ({0} were received).".format( + len(firstArg) + ) + ) + else: + return Point(int(firstArg), int(secondArg)) # firstArg and secondArg are just x and y number values + + +def _logScreenshot(logScreenshot, funcName, funcArgs, folder="."): + """ + A helper function that creates a screenshot to act as a logging mechanism. When a PyAutoGUI function is called, + this function is also called to capture the state of the screen when that function was called. + + If ``logScreenshot`` is ``False`` (or None and the ``LOG_SCREENSHOTS`` constant is ``False``), no screenshot is taken. + + The ``funcName`` argument is a string of the calling function's name. It's used in the screenshot's filename. + + The ``funcArgs`` argument is a string describing the arguments passed to the calling function. It's limited to + twelve characters to keep it short. + + The ``folder`` argument is the folder to place the screenshot file in, and defaults to the current working directory. + """ + if logScreenshot == False: + return # Don't take a screenshot. + if logScreenshot is None and LOG_SCREENSHOTS == False: + return # Don't take a screenshot. + + # Ensure that the "specifics" string isn't too long for the filename: + if len(funcArgs) > 12: + funcArgs = funcArgs[:12] + "..." + + now = datetime.datetime.now() + filename = "%s-%s-%s_%s-%s-%s-%s_%s_%s.png" % ( + now.year, + str(now.month).rjust(2, "0"), + str(now.day).rjust(2, "0"), + now.hour, + now.minute, + now.second, + str(now.microsecond)[:3], + funcName, + funcArgs, + ) + filepath = os.path.join(folder, filename) + + # Delete the oldest screenshot if we've reached the maximum: + if (LOG_SCREENSHOTS_LIMIT is not None) and (len(G_LOG_SCREENSHOTS_FILENAMES) >= LOG_SCREENSHOTS_LIMIT): + os.unlink(os.path.join(folder, G_LOG_SCREENSHOTS_FILENAMES[0])) + del G_LOG_SCREENSHOTS_FILENAMES[0] + + screenshot(filepath) + G_LOG_SCREENSHOTS_FILENAMES.append(filename) + + +def position(x=None, y=None): + """ + Returns the current xy coordinates of the mouse cursor as a two-integer tuple. + + Args: + x (int, None, optional) - If not None, this argument overrides the x in + the return value. + y (int, None, optional) - If not None, this argument overrides the y in + the return value. + + Returns: + (x, y) tuple of the current xy coordinates of the mouse cursor. + + NOTE: The position() function doesn't check for failsafe. + """ + posx, posy = platformModule._position() + posx = int(posx) + posy = int(posy) + if x is not None: # If set, the x parameter overrides the return value. + posx = int(x) + if y is not None: # If set, the y parameter overrides the return value. + posy = int(y) + return Point(posx, posy) + + +def size(): + """Returns the width and height of the screen as a two-integer tuple. + + Returns: + (width, height) tuple of the screen size, in pixels. + """ + return Size(*platformModule._size()) + + +def onScreen(x, y=None): + """Returns whether the given xy coordinates are on the primary screen or not. + + Note that this function doesn't work for secondary screens. + + Args: + Either the arguments are two separate values, first arg for x and second + for y, or there is a single argument of a sequence with two values, the + first x and the second y. + Example: onScreen(x, y) or onScreen([x, y]) + + Returns: + bool: True if the xy coordinates are on the screen at its current + resolution, otherwise False. + """ + x, y = _normalizeXYArgs(x, y) + x = int(x) + y = int(y) + + width, height = platformModule._size() + return 0 <= x < width and 0 <= y < height + + +# Mouse Functions +# =============== + +""" +NOTE: Although "mouse1" and "mouse2" buttons usually refer to the left and +right mouse buttons respectively, in PyAutoGUI 1, 2, and 3 refer to the left, +middle, and right buttons, respectively. This is because Xlib interprets +button 2 as the middle button and button 3 as the right button, so we hold +that for Windows and macOS as well (since those operating systems don't use +button numbers but rather just "left" or "right"). +""" + + +def _normalizeButton(button): + """ + The left, middle, and right mouse buttons are button numbers 1, 2, and 3 respectively. This is the numbering that + Xlib on Linux uses (while Windows and macOS don't care about numbers; they just use "left" and "right"). + + This function takes one of ``LEFT``, ``MIDDLE``, ``RIGHT``, ``PRIMARY``, ``SECONDARY``, ``1``, ``2``, ``3``, ``4``, + ``5``, ``6``, or ``7`` for the button argument and returns either ``LEFT``, ``MIDDLE``, ``RIGHT``, ``4``, ``5``, + ``6``, or ``7``. The ``PRIMARY``, ``SECONDARY``, ``1``, ``2``, and ``3`` values are never returned. + + The ``'left'`` and ``'right'`` mouse buttons will always refer to the physical left and right + buttons on the mouse. The same applies for buttons 1 and 3. + + However, if ``button`` is ``'primary'`` or ``'secondary'``, then we must check if + the mouse buttons have been "swapped" (for left-handed users) by the operating system's mouse + settings. + + If the buttons are swapped, the primary button is the right mouse button and the secondary button is the left mouse + button. If not swapped, the primary and secondary buttons are the left and right buttons, respectively. + + NOTE: Swap detection has not been implemented yet. + """ + # TODO - The swap detection hasn't been done yet. For Windows, see https://stackoverflow.com/questions/45627956/check-if-mouse-buttons-are-swapped-or-not-in-c + # TODO - We should check the OS settings to see if it's a left-hand setup, where button 1 would be "right". + + # Check that `button` has a valid value: + button = button.lower() + if platform.system() == "Linux": + # Check for valid button arg on Linux: + if button not in (LEFT, MIDDLE, RIGHT, PRIMARY, SECONDARY, 1, 2, 3, 4, 5, 6, 7): + raise PyAutoGUIException( + "button argument must be one of ('left', 'middle', 'right', 'primary', 'secondary', 1, 2, 3, 4, 5, 6, 7)" + ) + else: + # Check for valid button arg on Windows and macOS: + if button not in (LEFT, MIDDLE, RIGHT, PRIMARY, SECONDARY, 1, 2, 3): + raise PyAutoGUIException( + "button argument must be one of ('left', 'middle', 'right', 'primary', 'secondary', 1, 2, 3)" + ) + + # TODO - Check if the primary/secondary mouse buttons have been swapped: + if button in (PRIMARY, SECONDARY): + swapped = False # TODO - Add the operating system-specific code to detect mouse swap later. + if swapped: + if button == PRIMARY: + return RIGHT + elif button == SECONDARY: + return LEFT + else: + if button == PRIMARY: + return LEFT + elif button == SECONDARY: + return RIGHT + + # Return a mouse button integer value, not a string like 'left': + return {LEFT: LEFT, MIDDLE: MIDDLE, RIGHT: RIGHT, 1: LEFT, 2: MIDDLE, 3: RIGHT, 4: 4, 5: 5, 6: 6, 7: 7}[button] + + +@_genericPyAutoGUIChecks +def mouseDown(x=None, y=None, button=PRIMARY, duration=0.0, tween=linear, logScreenshot=None, _pause=True): + """Performs pressing a mouse button down (but not up). + + The x and y parameters detail where the mouse event happens. If None, the + current mouse position is used. If a float value, it is rounded down. If + outside the boundaries of the screen, the event happens at edge of the + screen. + + Args: + x (int, float, None, tuple, optional): The x position on the screen where the + mouse down happens. None by default. If tuple, this is used for x and y. + If x is a str, it's considered a filename of an image to find on + the screen with locateOnScreen() and click the center of. + y (int, float, None, optional): The y position on the screen where the + mouse down happens. None by default. + button (str, int, optional): The mouse button pressed down. TODO + + Returns: + None + + Raises: + PyAutoGUIException: If button is not one of 'left', 'middle', 'right', 1, 2, or 3 + """ + button = _normalizeButton(button) + x, y = _normalizeXYArgs(x, y) + + _mouseMoveDrag("move", x, y, 0, 0, duration=0, tween=None) + + _logScreenshot(logScreenshot, "mouseDown", "%s,%s" % (x, y), folder=".") + platformModule._mouseDown(x, y, button) + + +@_genericPyAutoGUIChecks +def mouseUp(x=None, y=None, button=PRIMARY, duration=0.0, tween=linear, logScreenshot=None, _pause=True): + """Performs releasing a mouse button up (but not down beforehand). + + The x and y parameters detail where the mouse event happens. If None, the + current mouse position is used. If a float value, it is rounded down. If + outside the boundaries of the screen, the event happens at edge of the + screen. + + Args: + x (int, float, None, tuple, optional): The x position on the screen where the + mouse up happens. None by default. If tuple, this is used for x and y. + If x is a str, it's considered a filename of an image to find on + the screen with locateOnScreen() and click the center of. + y (int, float, None, optional): The y position on the screen where the + mouse up happens. None by default. + button (str, int, optional): The mouse button released. TODO + + Returns: + None + + Raises: + PyAutoGUIException: If button is not one of 'left', 'middle', 'right', 1, 2, or 3 + """ + button = _normalizeButton(button) + x, y = _normalizeXYArgs(x, y) + + _mouseMoveDrag("move", x, y, 0, 0, duration=0, tween=None) + + _logScreenshot(logScreenshot, "mouseUp", "%s,%s" % (x, y), folder=".") + platformModule._mouseUp(x, y, button) + + +@_genericPyAutoGUIChecks +def click( + x=None, y=None, clicks=1, interval=0.0, button=PRIMARY, duration=0.0, tween=linear, logScreenshot=None, _pause=True +): + """ + Performs pressing a mouse button down and then immediately releasing it. Returns ``None``. + + When no arguments are passed, the primary mouse button is clicked at the mouse cursor's current location. + + If integers for ``x`` and ``y`` are passed, the click will happen at that XY coordinate. If ``x`` is a string, the + string is an image filename that PyAutoGUI will attempt to locate on the screen and click the center of. If ``x`` + is a sequence of two coordinates, those coordinates will be used for the XY coordinate to click on. + + The ``clicks`` argument is an int of how many clicks to make, and defaults to ``1``. + + The ``interval`` argument is an int or float of how many seconds to wait in between each click, if ``clicks`` is + greater than ``1``. It defaults to ``0.0`` for no pause in between clicks. + + The ``button`` argument is one of the constants ``LEFT``, ``MIDDLE``, ``RIGHT``, ``PRIMARY``, or ``SECONDARY``. + It defaults to ``PRIMARY`` (which is the left mouse button, unless the operating system has been set for + left-handed users.) + + If ``x`` and ``y`` are specified, and the click is not happening at the mouse cursor's current location, then + the ``duration`` argument is an int or float of how many seconds it should take to move the mouse to the XY + coordinates. It defaults to ``0`` for an instant move. + + If ``x`` and ``y`` are specified and ``duration`` is not ``0``, the ``tween`` argument is a tweening function + that specifies the movement pattern of the mouse cursor as it moves to the XY coordinates. The default is a + simple linear tween. See the PyTweening module documentation for more details. + + The ``pause`` parameter is deprecated. Call the ``pyautogui.sleep()`` function to implement a pause. + + Raises: + PyAutoGUIException: If button is not one of 'left', 'middle', 'right', 1, 2, 3 + """ + # TODO: I'm leaving buttons 4, 5, 6, and 7 undocumented for now. I need to understand how they work. + button = _normalizeButton(button) + x, y = _normalizeXYArgs(x, y) + + # Move the mouse cursor to the x, y coordinate: + _mouseMoveDrag("move", x, y, 0, 0, duration, tween) + + _logScreenshot(logScreenshot, "click", "%s,%s,%s,%s" % (button, clicks, x, y), folder=".") + + if sys.platform == 'darwin': + for i in range(clicks): + failSafeCheck() + if button in (LEFT, MIDDLE, RIGHT): + platformModule._multiClick(x, y, button, 1, interval) + else: + for i in range(clicks): + failSafeCheck() + if button in (LEFT, MIDDLE, RIGHT): + platformModule._click(x, y, button) + + time.sleep(interval) + + +@_genericPyAutoGUIChecks +def leftClick(x=None, y=None, interval=0.0, duration=0.0, tween=linear, logScreenshot=None, _pause=True): + """Performs a left mouse button click. + + This is a wrapper function for click('left', x, y). + + The x and y parameters detail where the mouse event happens. If None, the + current mouse position is used. If a float value, it is rounded down. If + outside the boundaries of the screen, the event happens at edge of the + screen. + + Args: + x (int, float, None, tuple, optional): The x position on the screen where the + click happens. None by default. If tuple, this is used for x and y. + If x is a str, it's considered a filename of an image to find on + the screen with locateOnScreen() and click the center of. + y (int, float, None, optional): The y position on the screen where the + click happens. None by default. + interval (float, optional): The number of seconds in between each click, + if the number of clicks is greater than 1. 0.0 by default, for no + pause in between clicks. + + Returns: + None + """ + + # TODO - Do we need the decorator for this function? Should click() handle this? (Also applies to other alias functions.) + click(x, y, 1, interval, LEFT, duration, tween, logScreenshot, _pause=_pause) + + +@_genericPyAutoGUIChecks +def rightClick(x=None, y=None, interval=0.0, duration=0.0, tween=linear, logScreenshot=None, _pause=True): + """Performs a right mouse button click. + + This is a wrapper function for click('right', x, y). + + The x and y parameters detail where the mouse event happens. If None, the + current mouse position is used. If a float value, it is rounded down. If + outside the boundaries of the screen, the event happens at edge of the + screen. + + Args: + x (int, float, None, tuple, optional): The x position on the screen where the + click happens. None by default. If tuple, this is used for x and y. + If x is a str, it's considered a filename of an image to find on + the screen with locateOnScreen() and click the center of. + y (int, float, None, optional): The y position on the screen where the + click happens. None by default. + interval (float, optional): The number of seconds in between each click, + if the number of clicks is greater than 1. 0.0 by default, for no + pause in between clicks. + + Returns: + None + """ + click(x, y, 1, interval, RIGHT, duration, tween, logScreenshot, _pause=_pause) + + +@_genericPyAutoGUIChecks +def middleClick(x=None, y=None, interval=0.0, duration=0.0, tween=linear, logScreenshot=None, _pause=True): + """Performs a middle mouse button click. + + This is a wrapper function for click('middle', x, y). + + The x and y parameters detail where the mouse event happens. If None, the + current mouse position is used. If a float value, it is rounded down. If + outside the boundaries of the screen, the event happens at edge of the + screen. + + Args: + x (int, float, None, tuple, optional): The x position on the screen where the + click happens. None by default. If tuple, this is used for x and y. + If x is a str, it's considered a filename of an image to find on + the screen with locateOnScreen() and click the center of. + y (int, float, None, optional): The y position on the screen where the + click happens. None by default. + + Returns: + None + """ + click(x, y, 1, interval, MIDDLE, duration, tween, logScreenshot, _pause=_pause) + + +@_genericPyAutoGUIChecks +def doubleClick(x=None, y=None, interval=0.0, button=LEFT, duration=0.0, tween=linear, logScreenshot=None, _pause=True): + """Performs a double click. + + This is a wrapper function for click('left', x, y, 2, interval). + + The x and y parameters detail where the mouse event happens. If None, the + current mouse position is used. If a float value, it is rounded down. If + outside the boundaries of the screen, the event happens at edge of the + screen. + + Args: + x (int, float, None, tuple, optional): The x position on the screen where the + click happens. None by default. If tuple, this is used for x and y. + If x is a str, it's considered a filename of an image to find on + the screen with locateOnScreen() and click the center of. + y (int, float, None, optional): The y position on the screen where the + click happens. None by default. + interval (float, optional): The number of seconds in between each click, + if the number of clicks is greater than 1. 0.0 by default, for no + pause in between clicks. + button (str, int, optional): The mouse button released. TODO + + Returns: + None + + Raises: + PyAutoGUIException: If button is not one of 'left', 'middle', 'right', 1, 2, 3, 4, + 5, 6, or 7 + """ + + # Multiple clicks work different in OSX + if sys.platform == "darwin": + x, y = _normalizeXYArgs(x, y) + _mouseMoveDrag("move", x, y, 0, 0, duration=0, tween=None) + x, y = platformModule._position() + platformModule._multiClick(x, y, button, 2) + _logScreenshot(logScreenshot, 'click', '%s,2,%s,%s' % (button, x, y), folder='.') + else: + # Click for Windows or Linux: + click(x, y, 2, interval, button, duration, tween, logScreenshot, _pause=False) + + +@_genericPyAutoGUIChecks +def tripleClick(x=None, y=None, interval=0.0, button=LEFT, duration=0.0, tween=linear, logScreenshot=None, _pause=True): + """Performs a triple click. + + This is a wrapper function for click('left', x, y, 3, interval). + + The x and y parameters detail where the mouse event happens. If None, the + current mouse position is used. If a float value, it is rounded down. If + outside the boundaries of the screen, the event happens at edge of the + screen. + + Args: + x (int, float, None, tuple, optional): The x position on the screen where the + click happens. None by default. If tuple, this is used for x and y. + If x is a str, it's considered a filename of an image to find on + the screen with locateOnScreen() and click the center of. + y (int, float, None, optional): The y position on the screen where the + click happens. None by default. + interval (float, optional): The number of seconds in between each click, + if the number of clicks is greater than 1. 0.0 by default, for no + pause in between clicks. + button (str, int, optional): The mouse button released. TODO + + Returns: + None + + Raises: + PyAutoGUIException: If button is not one of 'left', 'middle', 'right', 1, 2, 3, 4, + 5, 6, or 7 + """ + # Multiple clicks work different in OSX + if sys.platform == "darwin": + x, y = _normalizeXYArgs(x, y) + _mouseMoveDrag("move", x, y, 0, 0, duration=0, tween=None) + x, y = platformModule._position() + _logScreenshot(logScreenshot, "click", "%s,3,%s,%s" % (x, y), folder=".") + platformModule._multiClick(x, y, button, 3) + else: + # Click for Windows or Linux: + click(x, y, 3, interval, button, duration, tween, logScreenshot, _pause=False) + + +@_genericPyAutoGUIChecks +def scroll(clicks, x=None, y=None, logScreenshot=None, _pause=True): + """Performs a scroll of the mouse scroll wheel. + + Whether this is a vertical or horizontal scroll depends on the underlying + operating system. + + The x and y parameters detail where the mouse event happens. If None, the + current mouse position is used. If a float value, it is rounded down. If + outside the boundaries of the screen, the event happens at edge of the + screen. + + Args: + clicks (int, float): The amount of scrolling to perform. + x (int, float, None, tuple, optional): The x position on the screen where the + click happens. None by default. If tuple, this is used for x and y. + y (int, float, None, optional): The y position on the screen where the + click happens. None by default. + + Returns: + None + """ + if type(x) in (tuple, list): + x, y = x[0], x[1] + x, y = position(x, y) + + _logScreenshot(logScreenshot, "scroll", "%s,%s,%s" % (clicks, x, y), folder=".") + platformModule._scroll(clicks, x, y) + + +@_genericPyAutoGUIChecks +def hscroll(clicks, x=None, y=None, logScreenshot=None, _pause=True): + """Performs an explicitly horizontal scroll of the mouse scroll wheel, + if this is supported by the operating system. (Currently just Linux.) + + The x and y parameters detail where the mouse event happens. If None, the + current mouse position is used. If a float value, it is rounded down. If + outside the boundaries of the screen, the event happens at edge of the + screen. + + Args: + clicks (int, float): The amount of scrolling to perform. + x (int, float, None, tuple, optional): The x position on the screen where the + click happens. None by default. If tuple, this is used for x and y. + y (int, float, None, optional): The y position on the screen where the + click happens. None by default. + + Returns: + None + """ + if type(x) in (tuple, list): + x, y = x[0], x[1] + x, y = position(x, y) + + _logScreenshot(logScreenshot, "hscroll", "%s,%s,%s" % (clicks, x, y), folder=".") + platformModule._hscroll(clicks, x, y) + + +@_genericPyAutoGUIChecks +def vscroll(clicks, x=None, y=None, logScreenshot=None, _pause=True): + """Performs an explicitly vertical scroll of the mouse scroll wheel, + if this is supported by the operating system. (Currently just Linux.) + + The x and y parameters detail where the mouse event happens. If None, the + current mouse position is used. If a float value, it is rounded down. If + outside the boundaries of the screen, the event happens at edge of the + screen. + + Args: + clicks (int, float): The amount of scrolling to perform. + x (int, float, None, tuple, optional): The x position on the screen where the + click happens. None by default. If tuple, this is used for x and y. + y (int, float, None, optional): The y position on the screen where the + click happens. None by default. + + Returns: + None + """ + if type(x) in (tuple, list): + x, y = x[0], x[1] + x, y = position(x, y) + + _logScreenshot(logScreenshot, "vscroll", "%s,%s,%s" % (clicks, x, y), folder=".") + platformModule._vscroll(clicks, x, y) + + +@_genericPyAutoGUIChecks +def moveTo(x=None, y=None, duration=0.0, tween=linear, logScreenshot=False, _pause=True): + """Moves the mouse cursor to a point on the screen. + + The x and y parameters detail where the mouse event happens. If None, the + current mouse position is used. If a float value, it is rounded down. If + outside the boundaries of the screen, the event happens at edge of the + screen. + + Args: + x (int, float, None, tuple, optional): The x position on the screen where the + click happens. None by default. If tuple, this is used for x and y. + If x is a str, it's considered a filename of an image to find on + the screen with locateOnScreen() and click the center of. + y (int, float, None, optional): The y position on the screen where the + click happens. None by default. + duration (float, optional): The amount of time it takes to move the mouse + cursor to the xy coordinates. If 0, then the mouse cursor is moved + instantaneously. 0.0 by default. + tween (func, optional): The tweening function used if the duration is not + 0. A linear tween is used by default. + + Returns: + None + """ + x, y = _normalizeXYArgs(x, y) + + _logScreenshot(logScreenshot, "moveTo", "%s,%s" % (x, y), folder=".") + _mouseMoveDrag("move", x, y, 0, 0, duration, tween) + + +@_genericPyAutoGUIChecks +def moveRel(xOffset=None, yOffset=None, duration=0.0, tween=linear, logScreenshot=False, _pause=True): + """Moves the mouse cursor to a point on the screen, relative to its current + position. + + The x and y parameters detail where the mouse event happens. If None, the + current mouse position is used. If a float value, it is rounded down. If + outside the boundaries of the screen, the event happens at edge of the + screen. + + Args: + x (int, float, None, tuple, optional): How far left (for negative values) or + right (for positive values) to move the cursor. 0 by default. If tuple, this is used for x and y. + y (int, float, None, optional): How far up (for negative values) or + down (for positive values) to move the cursor. 0 by default. + duration (float, optional): The amount of time it takes to move the mouse + cursor to the new xy coordinates. If 0, then the mouse cursor is moved + instantaneously. 0.0 by default. + tween (func, optional): The tweening function used if the duration is not + 0. A linear tween is used by default. + + Returns: + None + """ + xOffset, yOffset = _normalizeXYArgs(xOffset, yOffset) + + _logScreenshot(logScreenshot, "moveRel", "%s,%s" % (xOffset, yOffset), folder=".") + _mouseMoveDrag("move", None, None, xOffset, yOffset, duration, tween) + + +move = moveRel # For PyAutoGUI 1.0, move() replaces moveRel(). + + +@_genericPyAutoGUIChecks +def dragTo( + x=None, y=None, duration=0.0, tween=linear, button=PRIMARY, logScreenshot=None, _pause=True, mouseDownUp=True +): + """Performs a mouse drag (mouse movement while a button is held down) to a + point on the screen. + + The x and y parameters detail where the mouse event happens. If None, the + current mouse position is used. If a float value, it is rounded down. If + outside the boundaries of the screen, the event happens at edge of the + screen. + + Args: + x (int, float, None, tuple, optional): How far left (for negative values) or + right (for positive values) to move the cursor. 0 by default. If tuple, this is used for x and y. + If x is a str, it's considered a filename of an image to find on + the screen with locateOnScreen() and click the center of. + y (int, float, None, optional): How far up (for negative values) or + down (for positive values) to move the cursor. 0 by default. + duration (float, optional): The amount of time it takes to move the mouse + cursor to the new xy coordinates. If 0, then the mouse cursor is moved + instantaneously. 0.0 by default. + tween (func, optional): The tweening function used if the duration is not + 0. A linear tween is used by default. + button (str, int, optional): The mouse button released. TODO + mouseDownUp (True, False): When true, the mouseUp/Down actions are not performed. + Which allows dragging over multiple (small) actions. 'True' by default. + + Returns: + None + """ + x, y = _normalizeXYArgs(x, y) + + _logScreenshot(logScreenshot, "dragTo", "%s,%s" % (x, y), folder=".") + if mouseDownUp: + mouseDown(button=button, logScreenshot=False, _pause=False) + _mouseMoveDrag("drag", x, y, 0, 0, duration, tween, button) + if mouseDownUp: + mouseUp(button=button, logScreenshot=False, _pause=False) + + +@_genericPyAutoGUIChecks +def dragRel( + xOffset=0, yOffset=0, duration=0.0, tween=linear, button=PRIMARY, logScreenshot=None, _pause=True, mouseDownUp=True +): + """Performs a mouse drag (mouse movement while a button is held down) to a + point on the screen, relative to its current position. + + The x and y parameters detail where the mouse event happens. If None, the + current mouse position is used. If a float value, it is rounded down. If + outside the boundaries of the screen, the event happens at edge of the + screen. + + Args: + x (int, float, None, tuple, optional): How far left (for negative values) or + right (for positive values) to move the cursor. 0 by default. If tuple, this is used for xOffset and yOffset. + y (int, float, None, optional): How far up (for negative values) or + down (for positive values) to move the cursor. 0 by default. + duration (float, optional): The amount of time it takes to move the mouse + cursor to the new xy coordinates. If 0, then the mouse cursor is moved + instantaneously. 0.0 by default. + tween (func, optional): The tweening function used if the duration is not + 0. A linear tween is used by default. + button (str, int, optional): The mouse button released. TODO + mouseDownUp (True, False): When true, the mouseUp/Down actions are not performed. + Which allows dragging over multiple (small) actions. 'True' by default. + + Returns: + None + """ + if xOffset is None: + xOffset = 0 + if yOffset is None: + yOffset = 0 + + if type(xOffset) in (tuple, list): + xOffset, yOffset = xOffset[0], xOffset[1] + + if xOffset == 0 and yOffset == 0: + return # no-op case + + mousex, mousey = platformModule._position() + _logScreenshot(logScreenshot, "dragRel", "%s,%s" % (xOffset, yOffset), folder=".") + if mouseDownUp: + mouseDown(button=button, logScreenshot=False, _pause=False) + _mouseMoveDrag("drag", mousex, mousey, xOffset, yOffset, duration, tween, button) + if mouseDownUp: + mouseUp(button=button, logScreenshot=False, _pause=False) + + +drag = dragRel # For PyAutoGUI 1.0, we want drag() to replace dragRel(). + + +def _mouseMoveDrag(moveOrDrag, x, y, xOffset, yOffset, duration, tween=linear, button=None): + """Handles the actual move or drag event, since different platforms + implement them differently. + + On Windows & Linux, a drag is a normal mouse move while a mouse button is + held down. On OS X, a distinct "drag" event must be used instead. + + The code for moving and dragging the mouse is similar, so this function + handles both. Users should call the moveTo() or dragTo() functions instead + of calling _mouseMoveDrag(). + + Args: + moveOrDrag (str): Either 'move' or 'drag', for the type of action this is. + x (int, float, None, optional): How far left (for negative values) or + right (for positive values) to move the cursor. 0 by default. + y (int, float, None, optional): How far up (for negative values) or + down (for positive values) to move the cursor. 0 by default. + xOffset (int, float, None, optional): How far left (for negative values) or + right (for positive values) to move the cursor. 0 by default. + yOffset (int, float, None, optional): How far up (for negative values) or + down (for positive values) to move the cursor. 0 by default. + duration (float, optional): The amount of time it takes to move the mouse + cursor to the new xy coordinates. If 0, then the mouse cursor is moved + instantaneously. 0.0 by default. + tween (func, optional): The tweening function used if the duration is not + 0. A linear tween is used by default. + button (str, int, optional): The mouse button released. TODO + + Returns: + None + """ + + # The move and drag code is similar, but OS X requires a special drag event instead of just a move event when dragging. + # See https://stackoverflow.com/a/2696107/1893164 + assert moveOrDrag in ("move", "drag"), "moveOrDrag must be in ('move', 'drag'), not %s" % (moveOrDrag) + + if sys.platform != "darwin": + moveOrDrag = "move" # Only OS X needs the drag event specifically. + + xOffset = int(xOffset) if xOffset is not None else 0 + yOffset = int(yOffset) if yOffset is not None else 0 + + if x is None and y is None and xOffset == 0 and yOffset == 0: + return # Special case for no mouse movement at all. + + startx, starty = position() + + x = int(x) if x is not None else startx + y = int(y) if y is not None else starty + + # x, y, xOffset, yOffset are now int. + x += xOffset + y += yOffset + + width, height = size() + + # Make sure x and y are within the screen bounds. + # x = max(0, min(x, width - 1)) + # y = max(0, min(y, height - 1)) + + # If the duration is small enough, just move the cursor there instantly. + steps = [(x, y)] + + if duration > MINIMUM_DURATION: + # Non-instant moving/dragging involves tweening: + num_steps = max(width, height) + sleep_amount = duration / num_steps + if sleep_amount < MINIMUM_SLEEP: + num_steps = int(duration / MINIMUM_SLEEP) + sleep_amount = duration / num_steps + + steps = [getPointOnLine(startx, starty, x, y, tween(n / num_steps)) for n in range(num_steps)] + # Making sure the last position is the actual destination. + steps.append((x, y)) + + for tweenX, tweenY in steps: + if len(steps) > 1: + # A single step does not require tweening. + time.sleep(sleep_amount) + + tweenX = int(round(tweenX)) + tweenY = int(round(tweenY)) + + # Do a fail-safe check to see if the user moved the mouse to a fail-safe position, but not if the mouse cursor + # moved there as a result of this function. (Just because tweenX and tweenY aren't in a fail-safe position + # doesn't mean the user couldn't have moved the mouse cursor to a fail-safe position.) + if (tweenX, tweenY) not in FAILSAFE_POINTS: + failSafeCheck() + + if moveOrDrag == "move": + platformModule._moveTo(tweenX, tweenY) + elif moveOrDrag == "drag": + platformModule._dragTo(tweenX, tweenY, button) + else: + raise NotImplementedError("Unknown value of moveOrDrag: {0}".format(moveOrDrag)) + + if (tweenX, tweenY) not in FAILSAFE_POINTS: + failSafeCheck() + + +# Keyboard Functions +# ================== + + +def isValidKey(key): + """Returns a Boolean value if the given key is a valid value to pass to + PyAutoGUI's keyboard-related functions for the current platform. + + This function is here because passing an invalid value to the PyAutoGUI + keyboard functions currently is a no-op that does not raise an exception. + + Some keys are only valid on some platforms. For example, while 'esc' is + valid for the Escape key on all platforms, 'browserback' is only used on + Windows operating systems. + + Args: + key (str): The key value. + + Returns: + bool: True if key is a valid value, False if not. + """ + return platformModule.keyboardMapping.get(key, None) != None + + +@_genericPyAutoGUIChecks +def keyDown(key, logScreenshot=None, _pause=True): + """Performs a keyboard key press without the release. This will put that + key in a held down state. + + NOTE: For some reason, this does not seem to cause key repeats like would + happen if a keyboard key was held down on a text field. + + Args: + key (str): The key to be pressed down. The valid names are listed in + KEYBOARD_KEYS. + + Returns: + None + """ + if len(key) > 1: + key = key.lower() + + _logScreenshot(logScreenshot, "keyDown", key, folder=".") + platformModule._keyDown(key) + + +@_genericPyAutoGUIChecks +def keyUp(key, logScreenshot=None, _pause=True): + """Performs a keyboard key release (without the press down beforehand). + + Args: + key (str): The key to be released up. The valid names are listed in + KEYBOARD_KEYS. + + Returns: + None + """ + if len(key) > 1: + key = key.lower() + + _logScreenshot(logScreenshot, "keyUp", key, folder=".") + platformModule._keyUp(key) + + +@_genericPyAutoGUIChecks +def press(keys, presses=1, interval=0.0, logScreenshot=None, _pause=True): + """Performs a keyboard key press down, followed by a release. + + Args: + key (str, list): The key to be pressed. The valid names are listed in + KEYBOARD_KEYS. Can also be a list of such strings. + presses (integer, optional): The number of press repetitions. + 1 by default, for just one press. + interval (float, optional): How many seconds between each press. + 0.0 by default, for no pause between presses. + pause (float, optional): How many seconds in the end of function process. + None by default, for no pause in the end of function process. + Returns: + None + """ + if type(keys) == str: + if len(keys) > 1: + keys = keys.lower() + keys = [keys] # If keys is 'enter', convert it to ['enter']. + else: + lowerKeys = [] + for s in keys: + if len(s) > 1: + lowerKeys.append(s.lower()) + else: + lowerKeys.append(s) + keys = lowerKeys + interval = float(interval) + _logScreenshot(logScreenshot, "press", ",".join(keys), folder=".") + for i in range(presses): + for k in keys: + failSafeCheck() + platformModule._keyDown(k) + platformModule._keyUp(k) + time.sleep(interval) + + +@contextmanager +@_genericPyAutoGUIChecks +def hold(keys, logScreenshot=None, _pause=True): + """Context manager that performs a keyboard key press down upon entry, + followed by a release upon exit. + + Args: + key (str, list): The key to be pressed. The valid names are listed in + KEYBOARD_KEYS. Can also be a list of such strings. + pause (float, optional): How many seconds in the end of function process. + None by default, for no pause in the end of function process. + Returns: + None + """ + if type(keys) == str: + if len(keys) > 1: + keys = keys.lower() + keys = [keys] # If keys is 'enter', convert it to ['enter']. + else: + lowerKeys = [] + for s in keys: + if len(s) > 1: + lowerKeys.append(s.lower()) + else: + lowerKeys.append(s) + keys = lowerKeys + _logScreenshot(logScreenshot, "press", ",".join(keys), folder=".") + for k in keys: + failSafeCheck() + platformModule._keyDown(k) + try: + yield + finally: + for k in keys: + failSafeCheck() + platformModule._keyUp(k) + + +@_genericPyAutoGUIChecks +def typewrite(message, interval=0.0, logScreenshot=None, _pause=True): + """Performs a keyboard key press down, followed by a release, for each of + the characters in message. + + The message argument can also be list of strings, in which case any valid + keyboard name can be used. + + Since this performs a sequence of keyboard presses and does not hold down + keys, it cannot be used to perform keyboard shortcuts. Use the hotkey() + function for that. + + Args: + message (str, list): If a string, then the characters to be pressed. If a + list, then the key names of the keys to press in order. The valid names + are listed in KEYBOARD_KEYS. + interval (float, optional): The number of seconds in between each press. + 0.0 by default, for no pause in between presses. + + Returns: + None + """ + interval = float(interval) # TODO - this should be taken out. + + _logScreenshot(logScreenshot, "write", message, folder=".") + for c in message: + if len(c) > 1: + c = c.lower() + press(c, _pause=False) + time.sleep(interval) + failSafeCheck() + + +write = typewrite # In PyAutoGUI 1.0, write() replaces typewrite(). + + +@_genericPyAutoGUIChecks +def hotkey(*args, **kwargs): + """Performs key down presses on the arguments passed in order, then performs + key releases in reverse order. + + The effect is that calling hotkey('ctrl', 'shift', 'c') would perform a + "Ctrl-Shift-C" hotkey/keyboard shortcut press. + + Args: + key(s) (str): The series of keys to press, in order. This can also be a + list of key strings to press. + interval (float, optional): The number of seconds in between each press. + 0.0 by default, for no pause in between presses. + + Returns: + None + """ + interval = float(kwargs.get("interval", 0.0)) # TODO - this should be taken out. + + _logScreenshot(kwargs.get("logScreenshot"), "hotkey", ",".join(args), folder=".") + for c in args: + if len(c) > 1: + c = c.lower() + platformModule._keyDown(c) + time.sleep(interval) + for c in reversed(args): + if len(c) > 1: + c = c.lower() + platformModule._keyUp(c) + time.sleep(interval) + + +def failSafeCheck(): + if FAILSAFE and tuple(position()) in FAILSAFE_POINTS: + raise FailSafeException( + "PyAutoGUI fail-safe triggered from mouse moving to a corner of the screen. To disable this fail-safe, set pyautogui.FAILSAFE to False. DISABLING FAIL-SAFE IS NOT RECOMMENDED." + ) + + +def displayMousePosition(xOffset=0, yOffset=0): + """This function is meant to be run from the command line. It will + automatically display the location and RGB of the mouse cursor.""" + try: + runningIDLE = sys.stdin.__module__.startswith("idlelib") + except: + runningIDLE = False + + print("Press Ctrl-C to quit.") + if xOffset != 0 or yOffset != 0: + print("xOffset: %s yOffset: %s" % (xOffset, yOffset)) + try: + while True: + # Get and print the mouse coordinates. + x, y = position() + positionStr = "X: " + str(x - xOffset).rjust(4) + " Y: " + str(y - yOffset).rjust(4) + if not onScreen(x - xOffset, y - yOffset) or sys.platform == "darwin": + # Pixel color can only be found for the primary monitor, and also not on mac due to the screenshot having the mouse cursor in the way. + pixelColor = ("NaN", "NaN", "NaN") + else: + pixelColor = pyscreeze.screenshot().getpixel( + (x, y) + ) # NOTE: On Windows & Linux, getpixel() returns a 3-integer tuple, but on macOS it returns a 4-integer tuple. + positionStr += " RGB: (" + str(pixelColor[0]).rjust(3) + positionStr += ", " + str(pixelColor[1]).rjust(3) + positionStr += ", " + str(pixelColor[2]).rjust(3) + ")" + sys.stdout.write(positionStr) + if not runningIDLE: + # If this is a terminal, than we can erase the text by printing \b backspaces. + sys.stdout.write("\b" * len(positionStr)) + else: + # If this isn't a terminal (i.e. IDLE) then we can only append more text. Print a newline instead and pause a second (so we don't send too much output). + sys.stdout.write("\n") + time.sleep(1) + sys.stdout.flush() + except KeyboardInterrupt: + sys.stdout.write("\n") + sys.stdout.flush() + + +def _snapshot(tag, folder=None, region=None, radius=None): + # TODO feature not finished + if region is not None and radius is not None: + raise Exception("Either region or radius arguments (or neither) can be passed to snapshot, but not both") + + if radius is not None: + x, y = platformModule._position() + + if folder is None: + folder = os.getcwd() + + now = datetime.datetime.now() + filename = "%s-%s-%s_%s-%s-%s-%s_%s.png" % ( + now.year, + str(now.month).rjust(2, "0"), + str(now.day).rjust(2, "0"), + now.hour, + now.minute, + now.second, + str(now.microsecond)[:3], + tag, + ) + filepath = os.path.join(folder, filename) + screenshot(filepath) + + +def sleep(seconds): + time.sleep(seconds) + + +def countdown(seconds): + for i in range(seconds, 0, -1): + print(str(i), end=" ", flush=True) + time.sleep(1) + print() + + +def _getNumberToken(commandStr): + """Gets the number token at the start of commandStr. + + Given '5hello' returns '5' + Given ' 5hello' returns ' 5' + Given '-42hello' returns '-42' + Given '+42hello' returns '+42' + Given '3.14hello' returns '3.14' + + Raises an exception if it can't tokenize a number. + """ + pattern = re.compile(r"^(\s*(\+|\-)?\d+(\.\d+)?)") + mo = pattern.search(commandStr) + if mo is None: + raise PyAutoGUIException("Invalid command at index 0: a number was expected") + + return mo.group(1) + + +def _getQuotedStringToken(commandStr): + """Gets the quoted string token at the start of commandStr. + The quoted string must use single quotes. + + Given "'hello'world" returns "'hello'" + Given " 'hello'world" returns " 'hello'" + + Raises an exception if it can't tokenize a quoted string. + """ + pattern = re.compile(r"^((\s*)('(.*?)'))") + mo = pattern.search(commandStr) + if mo is None: + raise PyAutoGUIException("Invalid command at index 0: a quoted string was expected") + + return mo.group(1) + + +def _getParensCommandStrToken(commandStr): + """Gets the command string token at the start of commandStr. It will also + be enclosed with parentheses. + + Given "(ccc)world" returns "(ccc)" + Given " (ccc)world" returns " (ccc)" + Given "(ccf10(r))world" returns "(ccf10(r))" + + Raises an exception if it can't tokenize a quoted string. + """ + + # Check to make sure at least one open parenthesis exists: + pattern = re.compile(r"^\s*\(") + mo = pattern.search(commandStr) + if mo is None: + raise PyAutoGUIException("Invalid command at index 0: No open parenthesis found.") + + # Check to make sure the parentheses are balanced: + i = 0 + openParensCount = 0 + while i < len(commandStr): + if commandStr[i] == "(": + openParensCount += 1 + elif commandStr[i] == ")": + openParensCount -= 1 + if openParensCount == 0: + i += 1 # Remember to increment i past the ) before breaking. + break + elif openParensCount == -1: + raise PyAutoGUIException("Invalid command at index 0: No open parenthesis for this close parenthesis.") + i += 1 + if openParensCount > 0: + raise PyAutoGUIException("Invalid command at index 0: Not enough close parentheses.") + + return commandStr[0:i] + + +def _getCommaToken(commandStr): + """Gets the comma token at the start of commandStr. + + Given ',' returns ',' + Given ' ,', returns ' ,' + + Raises an exception if a comma isn't found. + """ + pattern = re.compile(r"^((\s*),)") + mo = pattern.search(commandStr) + if mo is None: + raise PyAutoGUIException("Invalid command at index 0: a comma was expected") + + return mo.group(1) + + +def _tokenizeCommandStr(commandStr): + """Tokenizes commandStr into a list of commands and their arguments for + the run() function. Returns the list.""" + + commandPattern = re.compile(r"^(su|sd|ss|c|l|m|r|g|d|k|w|h|f|s|a|p)") + + # Tokenize the command string. + commandList = [] + i = 0 # Points to the current index in commandStr that is being tokenized. + while i < len(commandStr): + if commandStr[i] in (" ", "\t", "\n", "\r"): + # Skip over whitespace: + i += 1 + continue + + mo = commandPattern.match(commandStr[i:]) + if mo is None: + raise PyAutoGUIException("Invalid command at index %s: %s is not a valid command" % (i, commandStr[i])) + + individualCommand = mo.group(1) + commandList.append(individualCommand) + i += len(individualCommand) + + # Handle the no argument commands (c, l, m, r, su, sd, ss): + if individualCommand in ("c", "l", "m", "r", "su", "sd", "ss"): + pass # This just exists so these commands are covered by one of these cases. + + # Handle the arguments of the mouse (g)o and mouse (d)rag commands: + elif individualCommand in ("g", "d"): + try: + x = _getNumberToken(commandStr[i:]) + i += len(x) # Increment past the x number. + + comma = _getCommaToken(commandStr[i:]) + i += len(comma) # Increment past the comma (and any whitespace). + + y = _getNumberToken(commandStr[i:]) + i += len(y) # Increment past the y number. + + except PyAutoGUIException as excObj: + # Exception message starts with something like "Invalid command at index 0:" + # Change the index number and reraise it. + indexPart, colon, message = str(excObj).partition(":") + + indexNum = indexPart[len("Invalid command at index ") :] + newIndexNum = int(indexNum) + i + raise PyAutoGUIException("Invalid command at index %s:%s" % (newIndexNum, message)) + + # Make sure either both x and y have +/- or neither of them do: + if x.lstrip()[0].isdecimal() and not y.lstrip()[0].isdecimal(): + raise PyAutoGUIException("Invalid command at index %s: Y has a +/- but X does not." % (i - len(y))) + if not x.lstrip()[0].isdecimal() and y.lstrip()[0].isdecimal(): + raise PyAutoGUIException( + "Invalid command at index %s: Y does not have a +/- but X does." % (i - len(y)) + ) + + # Get rid of any whitespace at the front: + commandList.append(x.lstrip()) + commandList.append(y.lstrip()) + + # Handle the arguments of the (s)leep and (p)ause commands: + elif individualCommand in ("s", "p"): + try: + num = _getNumberToken(commandStr[i:]) + i += len(num) # Increment past the number. + + # TODO - raise an exception if a + or - is in the number. + + except PyAutoGUIException as excObj: + # Exception message starts with something like "Invalid command at index 0:" + # Change the index number and reraise it. + indexPart, colon, message = str(excObj).partition(":") + + indexNum = indexPart[len("Invalid command at index ") :] + newIndexNum = int(indexNum) + i + raise PyAutoGUIException("Invalid command at index %s:%s" % (newIndexNum, message)) + + # Get rid of any whitespace at the front: + commandList.append(num.lstrip()) + + # Handle the arguments of the (k)ey press, (w)rite, (h)otkeys, and (a)lert commands: + elif individualCommand in ("k", "w", "h", "a"): + try: + quotedString = _getQuotedStringToken(commandStr[i:]) + i += len(quotedString) # Increment past the quoted string. + except PyAutoGUIException as excObj: + # Exception message starts with something like "Invalid command at index 0:" + # Change the index number and reraise it. + indexPart, colon, message = str(excObj).partition(":") + + indexNum = indexPart[len("Invalid command at index ") :] + newIndexNum = int(indexNum) + i + raise PyAutoGUIException("Invalid command at index %s:%s" % (newIndexNum, message)) + + # Get rid of any whitespace at the front and the quotes: + commandList.append(quotedString[1:-1].lstrip()) + + # Handle the arguments of the (f)or loop command: + elif individualCommand == "f": + try: + numberOfLoops = _getNumberToken(commandStr[i:]) + i += len(numberOfLoops) # Increment past the number of loops. + + subCommandStr = _getParensCommandStrToken(commandStr[i:]) + i += len(subCommandStr) # Increment past the sub-command string. + + except PyAutoGUIException as excObj: + # Exception message starts with something like "Invalid command at index 0:" + # Change the index number and reraise it. + indexPart, colon, message = str(excObj).partition(":") + + indexNum = indexPart[len("Invalid command at index ") :] + newIndexNum = int(indexNum) + i + raise PyAutoGUIException("Invalid command at index %s:%s" % (newIndexNum, message)) + + # Get rid of any whitespace at the front: + commandList.append(numberOfLoops.lstrip()) + + # Get rid of any whitespace at the front and the quotes: + subCommandStr = subCommandStr.lstrip()[1:-1] + # Recursively call this function and append the list it returns: + commandList.append(_tokenizeCommandStr(subCommandStr)) + + return commandList + + +def _runCommandList(commandList, _ssCount): + global PAUSE + i = 0 + while i < len(commandList): + command = commandList[i] + + if command == "c": + click(button=PRIMARY) + elif command == "l": + click(button=LEFT) + elif command == "m": + click(button=MIDDLE) + elif command == "r": + click(button=RIGHT) + elif command == "su": + scroll(1) # scroll up + elif command == "sd": + scroll(-1) # scroll down + elif command == "ss": + screenshot("screenshot%s.png" % (_ssCount[0])) + _ssCount[0] += 1 + elif command == "s": + sleep(float(commandList[i + 1])) + i += 1 + elif command == "p": + PAUSE = float(commandList[i + 1]) + i += 1 + elif command == "g": + if commandList[i + 1][0] in ("+", "-") and commandList[i + 2][0] in ("+", "-"): + move(int(commandList[i + 1]), int(commandList[i + 2])) + else: + moveTo(int(commandList[i + 1]), int(commandList[i + 2])) + i += 2 + elif command == "d": + if commandList[i + 1][0] in ("+", "-") and commandList[i + 2][0] in ("+", "-"): + drag(int(commandList[i + 1]), int(commandList[i + 2])) + else: + dragTo(int(commandList[i + 1]), int(commandList[i + 2])) + i += 2 + elif command == "k": + press(commandList[i + 1]) + i += 1 + elif command == "w": + write(commandList[i + 1]) + i += 1 + elif command == "h": + hotkey(*commandList[i + 1].replace(" ", "").split(",")) + i += 1 + elif command == "a": + alert(commandList[i + 1]) + i += 1 + elif command == "f": + for j in range(int(commandList[i + 1])): + _runCommandList(commandList[i + 2], _ssCount) + i += 2 + i += 1 + + +def run(commandStr, _ssCount=None): + """Run a series of PyAutoGUI function calls according to a mini-language + made for this function. The `commandStr` is composed of character + commands that represent PyAutoGUI function calls. + + For example, `run('ccg-20,+0c')` clicks the mouse twice, then makes + the mouse cursor go 20 pixels to the left, then click again. + + Whitespace between commands and arguments is ignored. Command characters + must be lowercase. Quotes must be single quotes. + + For example, the previous call could also be written as `run('c c g -20, +0 c')`. + + The character commands and their equivalents are here: + + `c` => `click(button=PRIMARY)` + `l` => `click(button=LEFT)` + `m` => `click(button=MIDDLE)` + `r` => `click(button=RIGHT)` + `su` => `scroll(1) # scroll up` + `sd` => `scroll(-1) # scroll down` + `ss` => `screenshot('screenshot1.png') # filename number increases on its own` + + `gX,Y` => `moveTo(X, Y)` + `g+X,-Y` => `move(X, Y) # The + or - prefix is the difference between move() and moveTo()` + `dX,Y` => `dragTo(X, Y)` + `d+X,-Y` => `drag(X, Y) # The + or - prefix is the difference between drag() and dragTo()` + + `k'key'` => `press('key')` + `w'text'` => `write('text')` + `h'key,key,key'` => `hotkey(*'key,key,key'.replace(' ', '').split(','))` + `a'hello'` => `alert('hello')` + + `sN` => `sleep(N) # N can be an int or float` + `pN` => `PAUSE = N # N can be an int or float` + + `fN(commands)` => for i in range(N): run(commands) + + Note that any changes to `PAUSE` with the `p` command will be undone when + this function returns. The original `PAUSE` setting will be reset. + + TODO - This function is under development. + """ + + # run("ccc") straight forward + # run("susu") if 's' then peek at the next character + global PAUSE + + if _ssCount is None: + _ssCount = [ + 0 + ] # Setting this to a mutable list so that the callers can read the changed value. TODO improve this comment + + commandList = _tokenizeCommandStr(commandStr) + + # Carry out each command. + originalPAUSE = PAUSE + _runCommandList(commandList, _ssCount) + PAUSE = originalPAUSE + + +def printInfo(dontPrint=False): + msg = ''' + Platform: {} + Python Version: {} +PyAutoGUI Version: {} + Executable: {} + Resolution: {} + Timestamp: {}'''.format(*getInfo()) + if not dontPrint: + print(msg) + return msg + + +def getInfo(): + return (sys.platform, sys.version, __version__, sys.executable, size(), datetime.datetime.now()) + + +# Add the bottom left, top right, and bottom right corners to FAILSAFE_POINTS. +_right, _bottom = size() +FAILSAFE_POINTS.extend([(0, _bottom - 1), (_right - 1, 0), (_right - 1, _bottom - 1)]) diff --git a/src/utils/pyautogui/__main__.py b/src/utils/pyautogui/__main__.py new file mode 100644 index 0000000..5720467 --- /dev/null +++ b/src/utils/pyautogui/__main__.py @@ -0,0 +1,2 @@ +from . import displayMousePosition +displayMousePosition() \ No newline at end of file diff --git a/src/utils/pyautogui/_pyautogui_java.py b/src/utils/pyautogui/_pyautogui_java.py new file mode 100644 index 0000000..e69de29 diff --git a/src/utils/pyautogui/_pyautogui_osx.py b/src/utils/pyautogui/_pyautogui_osx.py new file mode 100644 index 0000000..6365a77 --- /dev/null +++ b/src/utils/pyautogui/_pyautogui_osx.py @@ -0,0 +1,434 @@ +import time +import sys + +try: + import Quartz +except: + assert False, "You must first install pyobjc-core and pyobjc: https://pyautogui.readthedocs.io/en/latest/install.html" +import AppKit + +import pyautogui +from pyautogui import LEFT, MIDDLE, RIGHT + +if sys.platform != 'darwin': + raise Exception('The pyautogui_osx module should only be loaded on an OS X system.') + + + +""" Taken from events.h +/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h + +The *KB dictionaries in pyautogui map a string that can be passed to keyDown(), +keyUp(), or press() into the code used for the OS-specific keyboard function. + +They should always be lowercase, and the same keys should be used across all OSes.""" +keyboardMapping = dict([(key, None) for key in pyautogui.KEY_NAMES]) +keyboardMapping.update({ + 'a': 0x00, # kVK_ANSI_A + 's': 0x01, # kVK_ANSI_S + 'd': 0x02, # kVK_ANSI_D + 'f': 0x03, # kVK_ANSI_F + 'h': 0x04, # kVK_ANSI_H + 'g': 0x05, # kVK_ANSI_G + 'z': 0x06, # kVK_ANSI_Z + 'x': 0x07, # kVK_ANSI_X + 'c': 0x08, # kVK_ANSI_C + 'v': 0x09, # kVK_ANSI_V + 'b': 0x0b, # kVK_ANSI_B + 'q': 0x0c, # kVK_ANSI_Q + 'w': 0x0d, # kVK_ANSI_W + 'e': 0x0e, # kVK_ANSI_E + 'r': 0x0f, # kVK_ANSI_R + 'y': 0x10, # kVK_ANSI_Y + 't': 0x11, # kVK_ANSI_T + '1': 0x12, # kVK_ANSI_1 + '!': 0x12, # kVK_ANSI_1 + '2': 0x13, # kVK_ANSI_2 + '@': 0x13, # kVK_ANSI_2 + '3': 0x14, # kVK_ANSI_3 + '#': 0x14, # kVK_ANSI_3 + '4': 0x15, # kVK_ANSI_4 + '$': 0x15, # kVK_ANSI_4 + '6': 0x16, # kVK_ANSI_6 + '^': 0x16, # kVK_ANSI_6 + '5': 0x17, # kVK_ANSI_5 + '%': 0x17, # kVK_ANSI_5 + '=': 0x18, # kVK_ANSI_Equal + '+': 0x18, # kVK_ANSI_Equal + '9': 0x19, # kVK_ANSI_9 + '(': 0x19, # kVK_ANSI_9 + '7': 0x1a, # kVK_ANSI_7 + '&': 0x1a, # kVK_ANSI_7 + '-': 0x1b, # kVK_ANSI_Minus + '_': 0x1b, # kVK_ANSI_Minus + '8': 0x1c, # kVK_ANSI_8 + '*': 0x1c, # kVK_ANSI_8 + '0': 0x1d, # kVK_ANSI_0 + ')': 0x1d, # kVK_ANSI_0 + ']': 0x1e, # kVK_ANSI_RightBracket + '}': 0x1e, # kVK_ANSI_RightBracket + 'o': 0x1f, # kVK_ANSI_O + 'u': 0x20, # kVK_ANSI_U + '[': 0x21, # kVK_ANSI_LeftBracket + '{': 0x21, # kVK_ANSI_LeftBracket + 'i': 0x22, # kVK_ANSI_I + 'p': 0x23, # kVK_ANSI_P + 'l': 0x25, # kVK_ANSI_L + 'j': 0x26, # kVK_ANSI_J + "'": 0x27, # kVK_ANSI_Quote + '"': 0x27, # kVK_ANSI_Quote + 'k': 0x28, # kVK_ANSI_K + ';': 0x29, # kVK_ANSI_Semicolon + ':': 0x29, # kVK_ANSI_Semicolon + '\\': 0x2a, # kVK_ANSI_Backslash + '|': 0x2a, # kVK_ANSI_Backslash + ',': 0x2b, # kVK_ANSI_Comma + '<': 0x2b, # kVK_ANSI_Comma + '/': 0x2c, # kVK_ANSI_Slash + '?': 0x2c, # kVK_ANSI_Slash + 'n': 0x2d, # kVK_ANSI_N + 'm': 0x2e, # kVK_ANSI_M + '.': 0x2f, # kVK_ANSI_Period + '>': 0x2f, # kVK_ANSI_Period + '`': 0x32, # kVK_ANSI_Grave + '~': 0x32, # kVK_ANSI_Grave + ' ': 0x31, # kVK_Space + 'space': 0x31, + '\r': 0x24, # kVK_Return + '\n': 0x24, # kVK_Return + 'enter': 0x24, # kVK_Return + 'return': 0x24, # kVK_Return + '\t': 0x30, # kVK_Tab + 'tab': 0x30, # kVK_Tab + 'backspace': 0x33, # kVK_Delete, which is "Backspace" on OS X. + '\b': 0x33, # kVK_Delete, which is "Backspace" on OS X. + 'esc': 0x35, # kVK_Escape + 'escape': 0x35, # kVK_Escape + 'command': 0x37, # kVK_Command + 'shift': 0x38, # kVK_Shift + 'shiftleft': 0x38, # kVK_Shift + 'capslock': 0x39, # kVK_CapsLock + 'option': 0x3a, # kVK_Option + 'optionleft': 0x3a, # kVK_Option + 'alt': 0x3a, # kVK_Option + 'altleft': 0x3a, # kVK_Option + 'ctrl': 0x3b, # kVK_Control + 'ctrlleft': 0x3b, # kVK_Control + 'shiftright': 0x3c, # kVK_RightShift + 'optionright': 0x3d, # kVK_RightOption + 'ctrlright': 0x3e, # kVK_RightControl + 'fn': 0x3f, # kVK_Function + 'f17': 0x40, # kVK_F17 + 'volumeup': 0x48, # kVK_VolumeUp + 'volumedown': 0x49, # kVK_VolumeDown + 'volumemute': 0x4a, # kVK_Mute + 'f18': 0x4f, # kVK_F18 + 'f19': 0x50, # kVK_F19 + 'f20': 0x5a, # kVK_F20 + 'f5': 0x60, # kVK_F5 + 'f6': 0x61, # kVK_F6 + 'f7': 0x62, # kVK_F7 + 'f3': 0x63, # kVK_F3 + 'f8': 0x64, # kVK_F8 + 'f9': 0x65, # kVK_F9 + 'f11': 0x67, # kVK_F11 + 'f13': 0x69, # kVK_F13 + 'f16': 0x6a, # kVK_F16 + 'f14': 0x6b, # kVK_F14 + 'f10': 0x6d, # kVK_F10 + 'f12': 0x6f, # kVK_F12 + 'f15': 0x71, # kVK_F15 + 'help': 0x72, # kVK_Help + 'home': 0x73, # kVK_Home + 'pageup': 0x74, # kVK_PageUp + 'pgup': 0x74, # kVK_PageUp + 'del': 0x75, # kVK_ForwardDelete + 'delete': 0x75, # kVK_ForwardDelete + 'f4': 0x76, # kVK_F4 + 'end': 0x77, # kVK_End + 'f2': 0x78, # kVK_F2 + 'pagedown': 0x79, # kVK_PageDown + 'pgdn': 0x79, # kVK_PageDown + 'f1': 0x7a, # kVK_F1 + 'left': 0x7b, # kVK_LeftArrow + 'right': 0x7c, # kVK_RightArrow + 'down': 0x7d, # kVK_DownArrow + 'up': 0x7e, # kVK_UpArrow + 'yen': 0x5d, # kVK_JIS_Yen + #'underscore' : 0x5e, # kVK_JIS_Underscore (only applies to Japanese keyboards) + #'comma': 0x5f, # kVK_JIS_KeypadComma (only applies to Japanese keyboards) + 'eisu': 0x66, # kVK_JIS_Eisu + 'kana': 0x68, # kVK_JIS_Kana +}) + +""" +# TODO - additional key codes to add + kVK_ANSI_KeypadDecimal = 0x41, + kVK_ANSI_KeypadMultiply = 0x43, + kVK_ANSI_KeypadPlus = 0x45, + kVK_ANSI_KeypadClear = 0x47, + kVK_ANSI_KeypadDivide = 0x4B, + kVK_ANSI_KeypadEnter = 0x4C, + kVK_ANSI_KeypadMinus = 0x4E, + kVK_ANSI_KeypadEquals = 0x51, + kVK_ANSI_Keypad0 = 0x52, + kVK_ANSI_Keypad1 = 0x53, + kVK_ANSI_Keypad2 = 0x54, + kVK_ANSI_Keypad3 = 0x55, + kVK_ANSI_Keypad4 = 0x56, + kVK_ANSI_Keypad5 = 0x57, + kVK_ANSI_Keypad6 = 0x58, + kVK_ANSI_Keypad7 = 0x59, + kVK_ANSI_Keypad8 = 0x5B, + kVK_ANSI_Keypad9 = 0x5C, +""" + +# add mappings for uppercase letters +for c in 'abcdefghijklmnopqrstuvwxyz': + keyboardMapping[c.upper()] = keyboardMapping[c] + +# Taken from ev_keymap.h +# http://www.opensource.apple.com/source/IOHIDFamily/IOHIDFamily-86.1/IOHIDSystem/IOKit/hidsystem/ev_keymap.h +special_key_translate_table = { + 'KEYTYPE_SOUND_UP': 0, + 'KEYTYPE_SOUND_DOWN': 1, + 'KEYTYPE_BRIGHTNESS_UP': 2, + 'KEYTYPE_BRIGHTNESS_DOWN': 3, + 'KEYTYPE_CAPS_LOCK': 4, + 'KEYTYPE_HELP': 5, + 'POWER_KEY': 6, + 'KEYTYPE_MUTE': 7, + 'UP_ARROW_KEY': 8, + 'DOWN_ARROW_KEY': 9, + 'KEYTYPE_NUM_LOCK': 10, + 'KEYTYPE_CONTRAST_UP': 11, + 'KEYTYPE_CONTRAST_DOWN': 12, + 'KEYTYPE_LAUNCH_PANEL': 13, + 'KEYTYPE_EJECT': 14, + 'KEYTYPE_VIDMIRROR': 15, + 'KEYTYPE_PLAY': 16, + 'KEYTYPE_NEXT': 17, + 'KEYTYPE_PREVIOUS': 18, + 'KEYTYPE_FAST': 19, + 'KEYTYPE_REWIND': 20, + 'KEYTYPE_ILLUMINATION_UP': 21, + 'KEYTYPE_ILLUMINATION_DOWN': 22, + 'KEYTYPE_ILLUMINATION_TOGGLE': 23 +} + +def _keyDown(key): + if key not in keyboardMapping or keyboardMapping[key] is None: + return + + if key in special_key_translate_table: + _specialKeyEvent(key, 'down') + else: + _normalKeyEvent(key, 'down') + +def _keyUp(key): + if key not in keyboardMapping or keyboardMapping[key] is None: + return + + if key in special_key_translate_table: + _specialKeyEvent(key, 'up') + else: + _normalKeyEvent(key, 'up') + + +def _normalKeyEvent(key, upDown): + assert upDown in ('up', 'down'), "upDown argument must be 'up' or 'down'" + + try: + if pyautogui.isShiftCharacter(key): + key_code = keyboardMapping[key.lower()] + + event = Quartz.CGEventCreateKeyboardEvent(None, + keyboardMapping['shift'], upDown == 'down') + Quartz.CGEventPost(Quartz.kCGHIDEventTap, event) + # Tiny sleep to let OS X catch up on us pressing shift + time.sleep(pyautogui.DARWIN_CATCH_UP_TIME) + + else: + key_code = keyboardMapping[key] + + event = Quartz.CGEventCreateKeyboardEvent(None, key_code, upDown == 'down') + Quartz.CGEventPost(Quartz.kCGHIDEventTap, event) + time.sleep(pyautogui.DARWIN_CATCH_UP_TIME) + + # TODO - wait, is the shift key's keyup not done? + # TODO - get rid of this try-except. + + except KeyError: + raise RuntimeError("Key %s not implemented." % (key)) + +def _specialKeyEvent(key, upDown): + """ Helper method for special keys. + + Source: http://stackoverflow.com/questions/11045814/emulate-media-key-press-on-mac + """ + assert upDown in ('up', 'down'), "upDown argument must be 'up' or 'down'" + + key_code = special_key_translate_table[key] + + ev = AppKit.NSEvent.otherEventWithType_location_modifierFlags_timestamp_windowNumber_context_subtype_data1_data2_( + Quartz.NSSystemDefined, # type + (0,0), # location + 0xa00 if upDown == 'down' else 0xb00, # flags + 0, # timestamp + 0, # window + 0, # ctx + 8, # subtype + (key_code << 16) | ((0xa if upDown == 'down' else 0xb) << 8), # data1 + -1 # data2 + ) + + Quartz.CGEventPost(0, ev.CGEvent()) + + + + + + + + + +def _position(): + loc = AppKit.NSEvent.mouseLocation() + return int(loc.x), int(Quartz.CGDisplayPixelsHigh(0) - loc.y) + + +def _size(): + return Quartz.CGDisplayPixelsWide(Quartz.CGMainDisplayID()), Quartz.CGDisplayPixelsHigh(Quartz.CGMainDisplayID()) + + + +def _scroll(clicks, x=None, y=None): + _vscroll(clicks, x, y) + + +""" +According to https://developer.apple.com/library/mac/documentation/Carbon/Reference/QuartzEventServicesRef/Reference/reference.html#//apple_ref/c/func/Quartz.CGEventCreateScrollWheelEvent +"Scrolling movement is generally represented by small signed integer values, typically in a range from -10 to +10. Large values may have unexpected results, depending on the application that processes the event." +The scrolling functions will create multiple events that scroll 10 each, and then scroll the remainder. +""" + +def _vscroll(clicks, x=None, y=None): + _moveTo(x, y) + clicks = int(clicks) + for _ in range(abs(clicks) // 10): + scrollWheelEvent = Quartz.CGEventCreateScrollWheelEvent( + None, # no source + Quartz.kCGScrollEventUnitLine, # units + 1, # wheelCount (number of dimensions) + 10 if clicks >= 0 else -10) # vertical movement + Quartz.CGEventPost(Quartz.kCGHIDEventTap, scrollWheelEvent) + + scrollWheelEvent = Quartz.CGEventCreateScrollWheelEvent( + None, # no source + Quartz.kCGScrollEventUnitLine, # units + 1, # wheelCount (number of dimensions) + clicks % 10 if clicks >= 0 else -1 * (-clicks % 10)) # vertical movement + Quartz.CGEventPost(Quartz.kCGHIDEventTap, scrollWheelEvent) + + +def _hscroll(clicks, x=None, y=None): + _moveTo(x, y) + clicks = int(clicks) + for _ in range(abs(clicks) // 10): + scrollWheelEvent = Quartz.CGEventCreateScrollWheelEvent( + None, # no source + Quartz.kCGScrollEventUnitLine, # units + 2, # wheelCount (number of dimensions) + 0, # vertical movement + 10 if clicks >= 0 else -10) # horizontal movement + Quartz.CGEventPost(Quartz.kCGHIDEventTap, scrollWheelEvent) + + scrollWheelEvent = Quartz.CGEventCreateScrollWheelEvent( + None, # no source + Quartz.kCGScrollEventUnitLine, # units + 2, # wheelCount (number of dimensions) + 0, # vertical movement + (clicks % 10) if clicks >= 0 else (-1 * clicks % 10)) # horizontal movement + Quartz.CGEventPost(Quartz.kCGHIDEventTap, scrollWheelEvent) + + +def _mouseDown(x, y, button): + if button == LEFT: + _sendMouseEvent(Quartz.kCGEventLeftMouseDown, x, y, Quartz.kCGMouseButtonLeft) + elif button == MIDDLE: + _sendMouseEvent(Quartz.kCGEventOtherMouseDown, x, y, Quartz.kCGMouseButtonCenter) + elif button == RIGHT: + _sendMouseEvent(Quartz.kCGEventRightMouseDown, x, y, Quartz.kCGMouseButtonRight) + else: + assert False, "button argument not in ('left', 'middle', 'right')" + + +def _mouseUp(x, y, button): + if button == LEFT: + _sendMouseEvent(Quartz.kCGEventLeftMouseUp, x, y, Quartz.kCGMouseButtonLeft) + elif button == MIDDLE: + _sendMouseEvent(Quartz.kCGEventOtherMouseUp, x, y, Quartz.kCGMouseButtonCenter) + elif button == RIGHT: + _sendMouseEvent(Quartz.kCGEventRightMouseUp, x, y, Quartz.kCGMouseButtonRight) + else: + assert False, "button argument not in ('left', 'middle', 'right')" + + +def _click(x, y, button): + if button == LEFT: + _sendMouseEvent(Quartz.kCGEventLeftMouseDown, x, y, Quartz.kCGMouseButtonLeft) + _sendMouseEvent(Quartz.kCGEventLeftMouseUp, x, y, Quartz.kCGMouseButtonLeft) + elif button == MIDDLE: + _sendMouseEvent(Quartz.kCGEventOtherMouseDown, x, y, Quartz.kCGMouseButtonCenter) + _sendMouseEvent(Quartz.kCGEventOtherMouseUp, x, y, Quartz.kCGMouseButtonCenter) + elif button == RIGHT: + _sendMouseEvent(Quartz.kCGEventRightMouseDown, x, y, Quartz.kCGMouseButtonRight) + _sendMouseEvent(Quartz.kCGEventRightMouseUp, x, y, Quartz.kCGMouseButtonRight) + else: + assert False, "button argument not in ('left', 'middle', 'right')" + +def _multiClick(x, y, button, num, interval=0.0): + btn = None + down = None + up = None + + if button == LEFT: + btn = Quartz.kCGMouseButtonLeft + down = Quartz.kCGEventLeftMouseDown + up = Quartz.kCGEventLeftMouseUp + elif button == MIDDLE: + btn = Quartz.kCGMouseButtonCenter + down = Quartz.kCGEventOtherMouseDown + up = Quartz.kCGEventOtherMouseUp + elif button == RIGHT: + btn = Quartz.kCGMouseButtonRight + down = Quartz.kCGEventRightMouseDown + up = Quartz.kCGEventRightMouseUp + else: + assert False, "button argument not in ('left', 'middle', 'right')" + return + + for i in range(num): + _click(x, y, button) + time.sleep(interval) + + +def _sendMouseEvent(ev, x, y, button): + mouseEvent = Quartz.CGEventCreateMouseEvent(None, ev, (x, y), button) + Quartz.CGEventPost(Quartz.kCGHIDEventTap, mouseEvent) + + +def _dragTo(x, y, button): + if button == LEFT: + _sendMouseEvent(Quartz.kCGEventLeftMouseDragged , x, y, Quartz.kCGMouseButtonLeft) + elif button == MIDDLE: + _sendMouseEvent(Quartz.kCGEventOtherMouseDragged , x, y, Quartz.kCGMouseButtonCenter) + elif button == RIGHT: + _sendMouseEvent(Quartz.kCGEventRightMouseDragged , x, y, Quartz.kCGMouseButtonRight) + else: + assert False, "button argument not in ('left', 'middle', 'right')" + time.sleep(pyautogui.DARWIN_CATCH_UP_TIME) # needed to allow OS time to catch up. + +def _moveTo(x, y): + _sendMouseEvent(Quartz.kCGEventMouseMoved, x, y, 0) + time.sleep(pyautogui.DARWIN_CATCH_UP_TIME) # needed to allow OS time to catch up. diff --git a/src/utils/pyautogui/_pyautogui_win.py b/src/utils/pyautogui/_pyautogui_win.py new file mode 100644 index 0000000..188ba53 --- /dev/null +++ b/src/utils/pyautogui/_pyautogui_win.py @@ -0,0 +1,568 @@ +# Windows implementation of PyAutoGUI functions. +# BSD license +# Al Sweigart al@inventwithpython.com + +import ctypes +import ctypes.wintypes +import pyautogui +from pyautogui import LEFT, MIDDLE, RIGHT + +import sys +if sys.platform != 'win32': + raise Exception('The pyautogui_win module should only be loaded on a Windows system.') + + +# Fixes the scaling issues where PyAutoGUI was reporting the wrong resolution: +try: + ctypes.windll.user32.SetProcessDPIAware() +except AttributeError: + pass # Windows XP doesn't support this, so just do nothing. + + +""" +A lot of this code is probably repeated from win32 extensions module, but I didn't want to have that dependency. + +Note: According to http://msdn.microsoft.com/en-us/library/windows/desktop/ms646260(v=vs.85).aspx +the ctypes.windll.user32.mouse_event() function has been superseded by SendInput. + +SendInput() is documented here: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs.85).aspx + +UPDATE: SendInput() doesn't seem to be working for me. I've switched back to mouse_event().""" + + +# Event codes to be passed to the mouse_event() win32 function. +# Documented here: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646273(v=vs.85).aspx +MOUSEEVENTF_MOVE = 0x0001 +MOUSEEVENTF_LEFTDOWN = 0x0002 +MOUSEEVENTF_LEFTUP = 0x0004 +MOUSEEVENTF_LEFTCLICK = MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_LEFTUP +MOUSEEVENTF_RIGHTDOWN = 0x0008 +MOUSEEVENTF_RIGHTUP = 0x0010 +MOUSEEVENTF_RIGHTCLICK = MOUSEEVENTF_RIGHTDOWN + MOUSEEVENTF_RIGHTUP +MOUSEEVENTF_MIDDLEDOWN = 0x0020 +MOUSEEVENTF_MIDDLEUP = 0x0040 +MOUSEEVENTF_MIDDLECLICK = MOUSEEVENTF_MIDDLEDOWN + MOUSEEVENTF_MIDDLEUP + +MOUSEEVENTF_ABSOLUTE = 0x8000 +MOUSEEVENTF_WHEEL = 0x0800 +MOUSEEVENTF_HWHEEL = 0x01000 + +# Documented here: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646304(v=vs.85).aspx +KEYEVENTF_KEYDOWN = 0x0000 # Technically this constant doesn't exist in the MS documentation. It's the lack of KEYEVENTF_KEYUP that means pressing the key down. +KEYEVENTF_KEYUP = 0x0002 + +# Documented here: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646270(v=vs.85).aspx +INPUT_MOUSE = 0 +INPUT_KEYBOARD = 1 + + +# These ctypes structures are for Win32 INPUT, MOUSEINPUT, KEYBDINPUT, and HARDWAREINPUT structures, +# used by SendInput and documented here: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646270(v=vs.85).aspx +# Thanks to BSH for this StackOverflow answer: https://stackoverflow.com/questions/18566289/how-would-you-recreate-this-windows-api-structure-with-ctypes +class MOUSEINPUT(ctypes.Structure): + _fields_ = [ + ('dx', ctypes.wintypes.LONG), + ('dy', ctypes.wintypes.LONG), + ('mouseData', ctypes.wintypes.DWORD), + ('dwFlags', ctypes.wintypes.DWORD), + ('time', ctypes.wintypes.DWORD), + ('dwExtraInfo', ctypes.POINTER(ctypes.wintypes.ULONG)), + ] + +class KEYBDINPUT(ctypes.Structure): + _fields_ = [ + ('wVk', ctypes.wintypes.WORD), + ('wScan', ctypes.wintypes.WORD), + ('dwFlags', ctypes.wintypes.DWORD), + ('time', ctypes.wintypes.DWORD), + ('dwExtraInfo', ctypes.POINTER(ctypes.wintypes.ULONG)), + ] + +class HARDWAREINPUT(ctypes.Structure): + _fields_ = [ + ('uMsg', ctypes.wintypes.DWORD), + ('wParamL', ctypes.wintypes.WORD), + ('wParamH', ctypes.wintypes.DWORD) + ] + +class INPUT(ctypes.Structure): + class _I(ctypes.Union): + _fields_ = [ + ('mi', MOUSEINPUT), + ('ki', KEYBDINPUT), + ('hi', HARDWAREINPUT), + ] + + _anonymous_ = ('i', ) + _fields_ = [ + ('type', ctypes.wintypes.DWORD), + ('i', _I), + ] +# End of the SendInput win32 data structures. + + + +""" Keyboard key mapping for pyautogui: +Documented at http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx + +The *KB dictionaries in pyautogui map a string that can be passed to keyDown(), +keyUp(), or press() into the code used for the OS-specific keyboard function. + +They should always be lowercase, and the same keys should be used across all OSes.""" +keyboardMapping = dict([(key, None) for key in pyautogui.KEY_NAMES]) +keyboardMapping.update({ + 'backspace': 0x08, # VK_BACK + '\b': 0x08, # VK_BACK + 'super': 0x5B, #VK_LWIN + 'tab': 0x09, # VK_TAB + '\t': 0x09, # VK_TAB + 'clear': 0x0c, # VK_CLEAR + 'enter': 0x0d, # VK_RETURN + '\n': 0x0d, # VK_RETURN + 'return': 0x0d, # VK_RETURN + 'shift': 0x10, # VK_SHIFT + 'ctrl': 0x11, # VK_CONTROL + 'alt': 0x12, # VK_MENU + 'pause': 0x13, # VK_PAUSE + 'capslock': 0x14, # VK_CAPITAL + 'kana': 0x15, # VK_KANA + 'hanguel': 0x15, # VK_HANGUEL + 'hangul': 0x15, # VK_HANGUL + 'junja': 0x17, # VK_JUNJA + 'final': 0x18, # VK_FINAL + 'hanja': 0x19, # VK_HANJA + 'kanji': 0x19, # VK_KANJI + 'esc': 0x1b, # VK_ESCAPE + 'escape': 0x1b, # VK_ESCAPE + 'convert': 0x1c, # VK_CONVERT + 'nonconvert': 0x1d, # VK_NONCONVERT + 'accept': 0x1e, # VK_ACCEPT + 'modechange': 0x1f, # VK_MODECHANGE + ' ': 0x20, # VK_SPACE + 'space': 0x20, # VK_SPACE + 'pgup': 0x21, # VK_PRIOR + 'pgdn': 0x22, # VK_NEXT + 'pageup': 0x21, # VK_PRIOR + 'pagedown': 0x22, # VK_NEXT + 'end': 0x23, # VK_END + 'home': 0x24, # VK_HOME + 'left': 0x25, # VK_LEFT + 'up': 0x26, # VK_UP + 'right': 0x27, # VK_RIGHT + 'down': 0x28, # VK_DOWN + 'select': 0x29, # VK_SELECT + 'print': 0x2a, # VK_PRINT + 'execute': 0x2b, # VK_EXECUTE + 'prtsc': 0x2c, # VK_SNAPSHOT + 'prtscr': 0x2c, # VK_SNAPSHOT + 'prntscrn': 0x2c, # VK_SNAPSHOT + 'printscreen': 0x2c, # VK_SNAPSHOT + 'insert': 0x2d, # VK_INSERT + 'del': 0x2e, # VK_DELETE + 'delete': 0x2e, # VK_DELETE + 'help': 0x2f, # VK_HELP + 'win': 0x5b, # VK_LWIN + 'winleft': 0x5b, # VK_LWIN + 'winright': 0x5c, # VK_RWIN + 'apps': 0x5d, # VK_APPS + 'sleep': 0x5f, # VK_SLEEP + 'num0': 0x60, # VK_NUMPAD0 + 'num1': 0x61, # VK_NUMPAD1 + 'num2': 0x62, # VK_NUMPAD2 + 'num3': 0x63, # VK_NUMPAD3 + 'num4': 0x64, # VK_NUMPAD4 + 'num5': 0x65, # VK_NUMPAD5 + 'num6': 0x66, # VK_NUMPAD6 + 'num7': 0x67, # VK_NUMPAD7 + 'num8': 0x68, # VK_NUMPAD8 + 'num9': 0x69, # VK_NUMPAD9 + 'multiply': 0x6a, # VK_MULTIPLY ??? Is this the numpad *? + 'add': 0x6b, # VK_ADD ??? Is this the numpad +? + 'separator': 0x6c, # VK_SEPARATOR ??? Is this the numpad enter? + 'subtract': 0x6d, # VK_SUBTRACT ??? Is this the numpad -? + 'decimal': 0x6e, # VK_DECIMAL + 'divide': 0x6f, # VK_DIVIDE + 'f1': 0x70, # VK_F1 + 'f2': 0x71, # VK_F2 + 'f3': 0x72, # VK_F3 + 'f4': 0x73, # VK_F4 + 'f5': 0x74, # VK_F5 + 'f6': 0x75, # VK_F6 + 'f7': 0x76, # VK_F7 + 'f8': 0x77, # VK_F8 + 'f9': 0x78, # VK_F9 + 'f10': 0x79, # VK_F10 + 'f11': 0x7a, # VK_F11 + 'f12': 0x7b, # VK_F12 + 'f13': 0x7c, # VK_F13 + 'f14': 0x7d, # VK_F14 + 'f15': 0x7e, # VK_F15 + 'f16': 0x7f, # VK_F16 + 'f17': 0x80, # VK_F17 + 'f18': 0x81, # VK_F18 + 'f19': 0x82, # VK_F19 + 'f20': 0x83, # VK_F20 + 'f21': 0x84, # VK_F21 + 'f22': 0x85, # VK_F22 + 'f23': 0x86, # VK_F23 + 'f24': 0x87, # VK_F24 + 'numlock': 0x90, # VK_NUMLOCK + 'scrolllock': 0x91, # VK_SCROLL + 'shiftleft': 0xa0, # VK_LSHIFT + 'shiftright': 0xa1, # VK_RSHIFT + 'ctrlleft': 0xa2, # VK_LCONTROL + 'ctrlright': 0xa3, # VK_RCONTROL + 'altleft': 0xa4, # VK_LMENU + 'altright': 0xa5, # VK_RMENU + 'browserback': 0xa6, # VK_BROWSER_BACK + 'browserforward': 0xa7, # VK_BROWSER_FORWARD + 'browserrefresh': 0xa8, # VK_BROWSER_REFRESH + 'browserstop': 0xa9, # VK_BROWSER_STOP + 'browsersearch': 0xaa, # VK_BROWSER_SEARCH + 'browserfavorites': 0xab, # VK_BROWSER_FAVORITES + 'browserhome': 0xac, # VK_BROWSER_HOME + 'volumemute': 0xad, # VK_VOLUME_MUTE + 'volumedown': 0xae, # VK_VOLUME_DOWN + 'volumeup': 0xaf, # VK_VOLUME_UP + 'nexttrack': 0xb0, # VK_MEDIA_NEXT_TRACK + 'prevtrack': 0xb1, # VK_MEDIA_PREV_TRACK + 'stop': 0xb2, # VK_MEDIA_STOP + 'playpause': 0xb3, # VK_MEDIA_PLAY_PAUSE + 'launchmail': 0xb4, # VK_LAUNCH_MAIL + 'launchmediaselect': 0xb5, # VK_LAUNCH_MEDIA_SELECT + 'launchapp1': 0xb6, # VK_LAUNCH_APP1 + 'launchapp2': 0xb7, # VK_LAUNCH_APP2 + }) + + # There are other virtual key constants that are not used here because the printable ascii keys are + # handled in the following `for` loop. + # The virtual key constants that aren't used are: + # VK_OEM_1, VK_OEM_PLUS, VK_OEM_COMMA, VK_OEM_MINUS, VK_OEM_PERIOD, VK_OEM_2, VK_OEM_3, VK_OEM_4, + # VK_OEM_5, VK_OEM_6, VK_OEM_7, VK_OEM_8, VK_PACKET, VK_ATTN, VK_CRSEL, VK_EXSEL, VK_EREOF, + # VK_PLAY, VK_ZOOM, VK_NONAME, VK_PA1, VK_OEM_CLEAR + +# Populate the basic printable ascii characters. +# https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-vkkeyscana +for c in range(32, 128): + keyboardMapping[chr(c)] = ctypes.windll.user32.VkKeyScanA(ctypes.wintypes.WCHAR(chr(c))) + + +def _keyDown(key): + """Performs a keyboard key press without the release. This will put that + key in a held down state. + + NOTE: For some reason, this does not seem to cause key repeats like would + happen if a keyboard key was held down on a text field. + + Args: + key (str): The key to be pressed down. The valid names are listed in + pyautogui.KEY_NAMES. + + Returns: + None + """ + if key not in keyboardMapping or keyboardMapping[key] is None: + return + + needsShift = pyautogui.isShiftCharacter(key) + + """ + # OLD CODE: The new code relies on having all keys be loaded in keyboardMapping from the start. + if key in keyboardMapping.keys(): + vkCode = keyboardMapping[key] + elif len(key) == 1: + # note: I could use this case to update keyboardMapping to cache the VkKeyScan results, but I've decided not to just to make any possible bugs easier to reproduce. + vkCode = ctypes.windll.user32.VkKeyScanW(ctypes.wintypes.WCHAR(key)) + if vkCode == -1: + raise ValueError('There is no VK code for key "%s"' % (key)) + if vkCode > 0x100: # the vk code will be > 0x100 if it needs shift + vkCode -= 0x100 + needsShift = True + """ + mods, vkCode = divmod(keyboardMapping[key], 0x100) + + for apply_mod, vk_mod in [(mods & 4, 0x12), (mods & 2, 0x11), + (mods & 1 or needsShift, 0x10)]: #HANKAKU not supported! mods & 8 + if apply_mod: + ctypes.windll.user32.keybd_event(vk_mod, 0, KEYEVENTF_KEYDOWN, 0) # + ctypes.windll.user32.keybd_event(vkCode, 0, KEYEVENTF_KEYDOWN, 0) + for apply_mod, vk_mod in [(mods & 1 or needsShift, 0x10), (mods & 2, 0x11), + (mods & 4, 0x12)]: #HANKAKU not supported! mods & 8 + if apply_mod: + ctypes.windll.user32.keybd_event(vk_mod, 0, KEYEVENTF_KEYUP, 0) # + + +def _keyUp(key): + """Performs a keyboard key release (without the press down beforehand). + + Args: + key (str): The key to be released up. The valid names are listed in + pyautogui.KEY_NAMES. + + Returns: + None + """ + if key not in keyboardMapping or keyboardMapping[key] is None: + return + + needsShift = pyautogui.isShiftCharacter(key) + """ + # OLD CODE: The new code relies on having all keys be loaded in keyboardMapping from the start. + if key in keyboardMapping.keys(): + vkCode = keyboardMapping[key] + elif len(key) == 1: + # note: I could use this case to update keyboardMapping to cache the VkKeyScan results, but I've decided not to just to make any possible bugs easier to reproduce. + vkCode = ctypes.windll.user32.VkKeyScanW(ctypes.wintypes.WCHAR(key)) + if vkCode == -1: + raise ValueError('There is no VK code for key "%s"' % (key)) + if vkCode > 0x100: # the vk code will be > 0x100 if it needs shift + vkCode -= 0x100 + needsShift = True + """ + mods, vkCode = divmod(keyboardMapping[key], 0x100) + + for apply_mod, vk_mod in [(mods & 4, 0x12), (mods & 2, 0x11), + (mods & 1 or needsShift, 0x10)]: #HANKAKU not supported! mods & 8 + if apply_mod: + ctypes.windll.user32.keybd_event(vk_mod, 0, 0, 0) # + ctypes.windll.user32.keybd_event(vkCode, 0, KEYEVENTF_KEYUP, 0) + for apply_mod, vk_mod in [(mods & 1 or needsShift, 0x10), (mods & 2, 0x11), + (mods & 4, 0x12)]: #HANKAKU not supported! mods & 8 + if apply_mod: + ctypes.windll.user32.keybd_event(vk_mod, 0, KEYEVENTF_KEYUP, 0) # + + +def _position(): + """Returns the current xy coordinates of the mouse cursor as a two-integer + tuple by calling the GetCursorPos() win32 function. + + Returns: + (x, y) tuple of the current xy coordinates of the mouse cursor. + """ + + cursor = ctypes.wintypes.POINT() + ctypes.windll.user32.GetCursorPos(ctypes.byref(cursor)) + return (cursor.x, cursor.y) + + +def _size(): + """Returns the width and height of the screen as a two-integer tuple. + + Returns: + (width, height) tuple of the screen size, in pixels. + """ + return (ctypes.windll.user32.GetSystemMetrics(0), ctypes.windll.user32.GetSystemMetrics(1)) + + +def _moveTo(x, y): + """Send the mouse move event to Windows by calling SetCursorPos() win32 + function. + + Args: + button (str): The mouse button, either 'left', 'middle', or 'right' + x (int): The x position of the mouse event. + y (int): The y position of the mouse event. + + Returns: + None + """ + ctypes.windll.user32.SetCursorPos(x, y) + # This was a possible solution to issue #314 https://github.com/asweigart/pyautogui/issues/314 + # but I'd like to hang on to SetCursorPos because mouse_event() has been superseded. + #_sendMouseEvent(MOUSEEVENTF_MOVE + MOUSEEVENTF_ABSOLUTE, x, y) + + +def _mouseDown(x, y, button): + """Send the mouse down event to Windows by calling the mouse_event() win32 + function. + + Args: + x (int): The x position of the mouse event. + y (int): The y position of the mouse event. + button (str): The mouse button, either 'left', 'middle', or 'right' + + Returns: + None + """ + if button not in (LEFT, MIDDLE, RIGHT): + raise ValueError('button arg to _click() must be one of "left", "middle", or "right", not %s' % button) + + if button == LEFT: + EV = MOUSEEVENTF_LEFTDOWN + elif button == MIDDLE: + EV = MOUSEEVENTF_MIDDLEDOWN + elif button == RIGHT: + EV = MOUSEEVENTF_RIGHTDOWN + + try: + _sendMouseEvent(EV, x, y) + except (PermissionError, OSError): + # TODO: We need to figure out how to prevent these errors, see https://github.com/asweigart/pyautogui/issues/60 + pass + + +def _mouseUp(x, y, button): + """Send the mouse up event to Windows by calling the mouse_event() win32 + function. + + Args: + x (int): The x position of the mouse event. + y (int): The y position of the mouse event. + button (str): The mouse button, either 'left', 'middle', or 'right' + + Returns: + None + """ + if button not in (LEFT, MIDDLE, RIGHT): + raise ValueError('button arg to _click() must be one of "left", "middle", or "right", not %s' % button) + + if button == LEFT: + EV = MOUSEEVENTF_LEFTUP + elif button == MIDDLE: + EV = MOUSEEVENTF_MIDDLEUP + elif button == RIGHT: + EV = MOUSEEVENTF_RIGHTUP + + try: + _sendMouseEvent(EV, x, y) + except (PermissionError, OSError): # TODO: We need to figure out how to prevent these errors, see https://github.com/asweigart/pyautogui/issues/60 + pass + + +def _click(x, y, button): + """Send the mouse click event to Windows by calling the mouse_event() win32 + function. + + Args: + button (str): The mouse button, either 'left', 'middle', or 'right' + x (int): The x position of the mouse event. + y (int): The y position of the mouse event. + + Returns: + None + """ + if button not in (LEFT, MIDDLE, RIGHT): + raise ValueError('button arg to _click() must be one of "left", "middle", or "right", not %s' % button) + + if button == LEFT: + EV = MOUSEEVENTF_LEFTCLICK + elif button == MIDDLE: + EV = MOUSEEVENTF_MIDDLECLICK + elif button ==RIGHT: + EV = MOUSEEVENTF_RIGHTCLICK + + try: + _sendMouseEvent(EV, x, y) + except (PermissionError, OSError): + # TODO: We need to figure out how to prevent these errors, see https://github.com/asweigart/pyautogui/issues/60 + pass + + +def _sendMouseEvent(ev, x, y, dwData=0): + """The helper function that actually makes the call to the mouse_event() + win32 function. + + Args: + ev (int): The win32 code for the mouse event. Use one of the MOUSEEVENTF_* + constants for this argument. + x (int): The x position of the mouse event. + y (int): The y position of the mouse event. + dwData (int): The argument for mouse_event()'s dwData parameter. So far + this is only used by mouse scrolling. + + Returns: + None + """ + assert x != None and y != None, 'x and y cannot be set to None' + # TODO: ARG! For some reason, SendInput isn't working for mouse events. I'm switching to using the older mouse_event win32 function. + #mouseStruct = MOUSEINPUT() + #mouseStruct.dx = x + #mouseStruct.dy = y + #mouseStruct.mouseData = ev + #mouseStruct.time = 0 + #mouseStruct.dwExtraInfo = ctypes.pointer(ctypes.c_ulong(0)) # according to https://stackoverflow.com/questions/13564851/generate-keyboard-events I can just set this. I don't really care about this value. + #inputStruct = INPUT() + #inputStruct.mi = mouseStruct + #inputStruct.type = INPUT_MOUSE + #ctypes.windll.user32.SendInput(1, ctypes.pointer(inputStruct), ctypes.sizeof(inputStruct)) + + # TODO Note: We need to handle additional buttons, which I believe is documented here: + # https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-mouse_event + + width, height = _size() + convertedX = 65536 * x // width + 1 + convertedY = 65536 * y // height + 1 + ctypes.windll.user32.mouse_event(ev, ctypes.c_long(convertedX), ctypes.c_long(convertedY), dwData, 0) + + # TODO: Too many false positives with this code: See: https://github.com/asweigart/pyautogui/issues/108 + #if ctypes.windll.kernel32.GetLastError() != 0: + # raise ctypes.WinError() + + +def _scroll(clicks, x=None, y=None): + """Send the mouse vertical scroll event to Windows by calling the + mouse_event() win32 function. + + Args: + clicks (int): The amount of scrolling to do. A positive value is the mouse + wheel moving forward (scrolling up), a negative value is backwards (down). + x (int): The x position of the mouse event. + y (int): The y position of the mouse event. + + Returns: + None + """ + startx, starty = _position() + width, height = _size() + + if x is None: + x = startx + else: + if x < 0: + x = 0 + elif x >= width: + x = width - 1 + if y is None: + y = starty + else: + if y < 0: + y = 0 + elif y >= height: + y = height - 1 + + try: + _sendMouseEvent(MOUSEEVENTF_WHEEL, x, y, dwData=clicks) + except (PermissionError, OSError): # TODO: We need to figure out how to prevent these errors, see https://github.com/asweigart/pyautogui/issues/60 + pass + + +def _hscroll(clicks, x, y): + """Send the mouse horizontal scroll event to Windows by calling the + mouse_event() win32 function. + + Args: + clicks (int): The amount of scrolling to do. A positive value is the mouse + wheel moving right, a negative value is moving left. + x (int): The x position of the mouse event. + y (int): The y position of the mouse event. + + Returns: + None + """ + return _scroll(clicks, x, y) + + +def _vscroll(clicks, x, y): + """A wrapper for _scroll(), which does vertical scrolling. + + Args: + clicks (int): The amount of scrolling to do. A positive value is the mouse + wheel moving forward (scrolling up), a negative value is backwards (down). + x (int): The x position of the mouse event. + y (int): The y position of the mouse event. + + Returns: + None + """ + return _scroll(clicks, x, y) + diff --git a/src/utils/pyautogui/_pyautogui_x11.py b/src/utils/pyautogui/_pyautogui_x11.py new file mode 100644 index 0000000..7306e0f --- /dev/null +++ b/src/utils/pyautogui/_pyautogui_x11.py @@ -0,0 +1,301 @@ +# NOTE - It is a known issue that the keyboard-related functions don't work on Ubuntu VMs in Virtualbox. + +# import pyautogui +import sys +import os +from . import LEFT, MIDDLE, RIGHT, KEY_NAMES, isShiftCharacter +# from pyautogui import LEFT, MIDDLE, RIGHT + +from Xlib.display import Display +from Xlib import X +from Xlib.ext.xtest import fake_input +import Xlib.XK + +BUTTON_NAME_MAPPING = {LEFT: 1, MIDDLE: 2, RIGHT: 3, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7} + + +if sys.platform in ('java', 'darwin', 'win32'): + raise Exception('The pyautogui_x11 module should only be loaded on a Unix system that supports X11.') + +#from pyautogui import * + +""" +Much of this code is based on information gleaned from Paul Barton's PyKeyboard in PyUserInput from 2013, itself derived from Akkana Peck's pykey in 2008 ( http://www.shallowsky.com/software/crikey/pykey-0.1 ), itself derived from her "Crikey" lib. +""" + +def _position(): + """Returns the current xy coordinates of the mouse cursor as a two-integer + tuple. + + Returns: + (x, y) tuple of the current xy coordinates of the mouse cursor. + """ + coord = _display.screen().root.query_pointer()._data + return coord["root_x"], coord["root_y"] + + +def _size(): + return _display.screen().width_in_pixels, _display.screen().height_in_pixels + + + +def _vscroll(clicks, x=None, y=None): + clicks = int(clicks) + if clicks == 0: + return + elif clicks > 0: + button = 4 # scroll up + else: + button = 5 # scroll down + + for i in range(abs(clicks)): + _click(x, y, button=button) + + +def _hscroll(clicks, x=None, y=None): + clicks = int(clicks) + if clicks == 0: + return + elif clicks > 0: + button = 7 # scroll right + else: + button = 6 # scroll left + + for i in range(abs(clicks)): + _click(x, y, button=button) + + +def _scroll(clicks, x=None, y=None): + return _vscroll(clicks, x, y) + + +def _click(x, y, button): + assert button in BUTTON_NAME_MAPPING.keys(), "button argument not in ('left', 'middle', 'right', 4, 5, 6, 7)" + button = BUTTON_NAME_MAPPING[button] + + _mouseDown(x, y, button) + _mouseUp(x, y, button) + + +def _moveTo(x, y): + fake_input(_display, X.MotionNotify, x=x, y=y) + _display.sync() + + +def _mouseDown(x, y, button): + _moveTo(x, y) + assert button in BUTTON_NAME_MAPPING.keys(), "button argument not in ('left', 'middle', 'right', 4, 5, 6, 7)" + button = BUTTON_NAME_MAPPING[button] + fake_input(_display, X.ButtonPress, button) + _display.sync() + + +def _mouseUp(x, y, button): + _moveTo(x, y) + assert button in BUTTON_NAME_MAPPING.keys(), "button argument not in ('left', 'middle', 'right', 4, 5, 6, 7)" + button = BUTTON_NAME_MAPPING[button] + fake_input(_display, X.ButtonRelease, button) + _display.sync() + + +def _keyDown(key): + """Performs a keyboard key press without the release. This will put that + key in a held down state. + + NOTE: For some reason, this does not seem to cause key repeats like would + happen if a keyboard key was held down on a text field. + + Args: + key (str): The key to be pressed down. The valid names are listed in + KEY_NAMES. + + Returns: + None + """ + if key not in keyboardMapping or keyboardMapping[key] is None: + return + + if type(key) == int: + fake_input(_display, X.KeyPress, key) + _display.sync() + return + + needsShift = isShiftCharacter(key) + if needsShift: + fake_input(_display, X.KeyPress, keyboardMapping['shift']) + + fake_input(_display, X.KeyPress, keyboardMapping[key]) + + if needsShift: + fake_input(_display, X.KeyRelease, keyboardMapping['shift']) + _display.sync() + + +def _keyUp(key): + """Performs a keyboard key release (without the press down beforehand). + + Args: + key (str): The key to be released up. The valid names are listed in + KEY_NAMES. + + Returns: + None + """ + + """ + Release a given character key. Also works with character keycodes as + integers, but not keysyms. + """ + if key not in keyboardMapping or keyboardMapping[key] is None: + return + + if type(key) == int: + keycode = key + else: + keycode = keyboardMapping[key] + + fake_input(_display, X.KeyRelease, keycode) + _display.sync() + + +# Taken from PyKeyboard's ctor function. +_display = Display(os.environ['DISPLAY']) + + +""" Information for keyboardMapping derived from PyKeyboard's special_key_assignment() function. + +The *KB dictionaries in pyautogui map a string that can be passed to keyDown(), +keyUp(), or press() into the code used for the OS-specific keyboard function. + +They should always be lowercase, and the same keys should be used across all OSes.""" +keyboardMapping = dict([(key, None) for key in KEY_NAMES]) +keyboardMapping.update({ + 'backspace': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('BackSpace')), + '\b': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('BackSpace')), + 'tab': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Tab')), + 'enter': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Return')), + 'return': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Return')), + 'shift': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Shift_L')), + 'ctrl': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Control_L')), + 'alt': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Alt_L')), + 'pause': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Pause')), + 'capslock': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Caps_Lock')), + 'esc': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Escape')), + 'escape': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Escape')), + 'pgup': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Page_Up')), + 'pgdn': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Page_Down')), + 'pageup': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Page_Up')), + 'pagedown': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Page_Down')), + 'end': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('End')), + 'home': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Home')), + 'left': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Left')), + 'up': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Up')), + 'right': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Right')), + 'down': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Down')), + 'select': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Select')), + 'print': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Print')), + 'execute': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Execute')), + 'prtsc': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Print')), + 'prtscr': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Print')), + 'prntscrn': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Print')), + 'printscreen': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Print')), + 'insert': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Insert')), + 'del': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Delete')), + 'delete': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Delete')), + 'help': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Help')), + 'win': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Super_L')), + 'winleft': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Super_L')), + 'winright': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Super_R')), + 'apps': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Menu')), + 'num0': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('KP_0')), + 'num1': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('KP_1')), + 'num2': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('KP_2')), + 'num3': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('KP_3')), + 'num4': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('KP_4')), + 'num5': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('KP_5')), + 'num6': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('KP_6')), + 'num7': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('KP_7')), + 'num8': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('KP_8')), + 'num9': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('KP_9')), + 'multiply': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('KP_Multiply')), + 'add': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('KP_Add')), + 'separator': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('KP_Separator')), + 'subtract': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('KP_Subtract')), + 'decimal': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('KP_Decimal')), + 'divide': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('KP_Divide')), + 'f1': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F1')), + 'f2': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F2')), + 'f3': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F3')), + 'f4': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F4')), + 'f5': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F5')), + 'f6': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F6')), + 'f7': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F7')), + 'f8': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F8')), + 'f9': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F9')), + 'f10': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F10')), + 'f11': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F11')), + 'f12': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F12')), + 'f13': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F13')), + 'f14': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F14')), + 'f15': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F15')), + 'f16': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F16')), + 'f17': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F17')), + 'f18': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F18')), + 'f19': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F19')), + 'f20': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F20')), + 'f21': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F21')), + 'f22': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F22')), + 'f23': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F23')), + 'f24': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('F24')), + 'numlock': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Num_Lock')), + 'scrolllock': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Scroll_Lock')), + 'shiftleft': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Shift_L')), + 'shiftright': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Shift_R')), + 'ctrlleft': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Control_L')), + 'ctrlright': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Control_R')), + 'altleft': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Alt_L')), + 'altright': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Alt_R')), + # These are added because unlike a-zA-Z0-9, the single characters do not have a + ' ': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('space')), + 'space': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('space')), + '\t': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Tab')), + '\n': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Return')), # for some reason this needs to be cr, not lf + '\r': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Return')), + '\e': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('Escape')), + '!': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('exclam')), + '#': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('numbersign')), + '%': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('percent')), + '$': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('dollar')), + '&': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('ampersand')), + '"': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('quotedbl')), + "'": _display.keysym_to_keycode(Xlib.XK.string_to_keysym('apostrophe')), + '(': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('parenleft')), + ')': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('parenright')), + '*': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('asterisk')), + '=': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('equal')), + '+': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('plus')), + ',': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('comma')), + '-': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('minus')), + '.': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('period')), + '/': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('slash')), + ':': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('colon')), + ';': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('semicolon')), + '<': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('less')), + '>': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('greater')), + '?': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('question')), + '@': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('at')), + '[': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('bracketleft')), + ']': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('bracketright')), + '\\': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('backslash')), + '^': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('asciicircum')), + '_': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('underscore')), + '`': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('grave')), + '{': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('braceleft')), + '|': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('bar')), + '}': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('braceright')), + '~': _display.keysym_to_keycode(Xlib.XK.string_to_keysym('asciitilde')), +}) + +# Trading memory for time" populate winKB so we don't have to call VkKeyScanA each time. +for c in """abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890""": + keyboardMapping[c] = _display.keysym_to_keycode(Xlib.XK.string_to_keysym(c)) diff --git a/src/utils/pyautogui_control.py b/src/utils/pyautogui_control.py index f217084..26538ad 100644 --- a/src/utils/pyautogui_control.py +++ b/src/utils/pyautogui_control.py @@ -1,7 +1,16 @@ # Python imports -import pyautogui +import subprocess -# Gtk imports +# Lib imports +# NOTE: Source: https://github.com/asweigart/pyautogui +# Gunna try importing an env pyautogui; but, If none exist we will use the internal one +# modified to import itself properly for Linux systems. +try: + import pyautogui + print("Found system/env pyautogui instance...") +except Exception as e: + print("Defering to internal pyautogui instance...") + from . import pyautogui # Application imports @@ -14,6 +23,18 @@ pyautogui.PAUSE = 0 class ControlMixin: + def get_clipboard_data(self, encoding="utf-8") -> str: + proc = subprocess.Popen(get_clipboard, stdout=subprocess.PIPE) + retcode = proc.wait() + data = proc.stdout.read() + return data.decode(encoding).strip() + + def set_clipboard_data(self, data: type, encoding="utf-8") -> None: + proc = subprocess.Popen(set_clipboard, stdin=subprocess.PIPE) + proc.stdin.write(data.encode(encoding)) + proc.stdin.close() + retcode = proc.wait() + def type(self, key): if self.isCtrlOn or self.isShiftOn or self.isAltOn: self.set_hotkeys() diff --git a/user_config/bin/mouse-keyboard b/user_config/bin/mouse-keyboard new file mode 100755 index 0000000..ed6ca16 --- /dev/null +++ b/user_config/bin/mouse-keyboard @@ -0,0 +1,23 @@ +#!/bin/bash + +# . CONFIG.sh + +# set -o xtrace ## To debug scripts +# set -o errexit ## To exit on error +# set -o errunset ## To exit if a variable is referenced but not set + + +function main() { + call_path=`pwd` + path="" + + if [[ ! "${1::1}" == /* ]]; then + path="${call_path}/${1}" + else + path="${1}" + fi + + cd "/opt/" + python /opt/mouse-keyboard.zip "$@" +} +main "$@"; diff --git a/user_config/usr/applications/mouse-keyboard.desktop b/user_config/usr/applications/mouse-keyboard.desktop new file mode 100755 index 0000000..5836852 --- /dev/null +++ b/user_config/usr/applications/mouse-keyboard.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=Mouse-Board +GenericName=Mouse Keyboard +Comment=A Python and Gtk+ mouse based keyboard. +Exec=/bin/mouse-keyboard %F +Icon=/usr/share/mouse-keyboard/icons/mouse-keyboard.png +Type=Application +StartupNotify=true +Categories=System;FileTools;Utility;Core +MimeType= +Terminal=false diff --git a/user_config/usr/share/mouse keyboard/emoji.txt b/user_config/usr/share/mouse keyboard/emoji.txt deleted file mode 100644 index 2925c82..0000000 --- a/user_config/usr/share/mouse keyboard/emoji.txt +++ /dev/null @@ -1,1593 +0,0 @@ -๐Ÿ˜€ grinning face; 1F600; -๐Ÿ˜ƒ grinning face with big eyes; 1F603; -๐Ÿ˜„ grinning face with smiling eyes; 1F604; -๐Ÿ˜ beaming face with smiling eyes; 1F601; -๐Ÿ˜† grinning squinting face; 1F606; -๐Ÿ˜… grinning face with sweat; 1F605; -๐Ÿคฃ rolling on the floor laughing; 1F923; -๐Ÿ˜‚ face with tears of joy; 1F602; -๐Ÿ™‚ slightly smiling face; 1F642; -๐Ÿ™ƒ upside-down face; 1F643; -๐Ÿ˜‰ winking face; 1F609; -๐Ÿ˜Š smiling face with smiling eyes; 1F60A; -๐Ÿ˜‡ smiling face with halo; 1F607; -๐Ÿฅฐ smiling face with hearts; 1F970; -๐Ÿ˜ smiling face with heart-eyes; 1F60D; -๐Ÿคฉ star-struck; 1F929; -๐Ÿ˜˜ face blowing a kiss; 1F618; -๐Ÿ˜— kissing face; 1F617; -โ˜บ๏ธ smiling face; 263A FE0F; -๐Ÿ˜š kissing face with closed eyes; 1F61A; -๐Ÿ˜™ kissing face with smiling eyes; 1F619; -๐Ÿฅฒ smiling face with tear; 1F972; -๐Ÿ˜‹ face savoring food; 1F60B; -๐Ÿ˜› face with tongue; 1F61B; -๐Ÿ˜œ winking face with tongue; 1F61C; -๐Ÿคช zany face; 1F92A; -๐Ÿ˜ squinting face with tongue; 1F61D; -๐Ÿค‘ money-mouth face; 1F911; -๐Ÿค— hugging face; 1F917; -๐Ÿคญ face with hand over mouth; 1F92D; -๐Ÿคซ shushing face; 1F92B; -๐Ÿค” thinking face; 1F914; -๐Ÿค zipper-mouth face; 1F910; -๐Ÿคจ face with raised eyebrow; 1F928; -๐Ÿ˜ neutral face; 1F610; -๐Ÿ˜‘ expressionless face; 1F611; -๐Ÿ˜ถ face without mouth; 1F636; -๐Ÿ˜ smirking face; 1F60F; -๐Ÿ˜’ unamused face; 1F612; -๐Ÿ™„ face with rolling eyes; 1F644; -๐Ÿ˜ฌ grimacing face; 1F62C; -๐Ÿคฅ lying face; 1F925; -๐Ÿ˜Œ relieved face; 1F60C; -๐Ÿ˜” pensive face; 1F614; -๐Ÿ˜ช sleepy face; 1F62A; -๐Ÿคค drooling face; 1F924; -๐Ÿ˜ด sleeping face; 1F634; -๐Ÿ˜ท face with medical mask; 1F637; -๐Ÿค’ face with thermometer; 1F912; -๐Ÿค• face with head-bandage; 1F915; -๐Ÿคข nauseated face; 1F922; -๐Ÿคฎ face vomiting; 1F92E; -๐Ÿคง sneezing face; 1F927; -๐Ÿฅต hot face; 1F975; -๐Ÿฅถ cold face; 1F976; -๐Ÿฅด woozy face; 1F974; -๐Ÿ˜ต dizzy face; 1F635; -๐Ÿคฏ exploding head; 1F92F; -๐Ÿค  cowboy hat face; 1F920; -๐Ÿฅณ partying face; 1F973; -๐Ÿฅธ disguised face; 1F978; -๐Ÿ˜Ž smiling face with sunglasses; 1F60E; -๐Ÿค“ nerd face; 1F913; -๐Ÿง face with monocle; 1F9D0; -๐Ÿ˜• confused face; 1F615; -๐Ÿ˜Ÿ worried face; 1F61F; -๐Ÿ™ slightly frowning face; 1F641; -โ˜น๏ธ frowning face; 2639 FE0F; -๐Ÿ˜ฎ face with open mouth; 1F62E; -๐Ÿ˜ฏ hushed face; 1F62F; -๐Ÿ˜ฒ astonished face; 1F632; -๐Ÿ˜ณ flushed face; 1F633; -๐Ÿฅบ pleading face; 1F97A; -๐Ÿ˜ฆ frowning face with open mouth; 1F626; -๐Ÿ˜ง anguished face; 1F627; -๐Ÿ˜จ fearful face; 1F628; -๐Ÿ˜ฐ anxious face with sweat; 1F630; -๐Ÿ˜ฅ sad but relieved face; 1F625; -๐Ÿ˜ข crying face; 1F622; -๐Ÿ˜ญ loudly crying face; 1F62D; -๐Ÿ˜ฑ face screaming in fear; 1F631; -๐Ÿ˜– confounded face; 1F616; -๐Ÿ˜ฃ persevering face; 1F623; -๐Ÿ˜ž disappointed face; 1F61E; -๐Ÿ˜“ downcast face with sweat; 1F613; -๐Ÿ˜ฉ weary face; 1F629; -๐Ÿ˜ซ tired face; 1F62B; -๐Ÿฅฑ yawning face; 1F971; -๐Ÿ˜ค face with steam from nose; 1F624; -๐Ÿ˜ก pouting face; 1F621; -๐Ÿ˜  angry face; 1F620; -๐Ÿคฌ face with symbols on mouth; 1F92C; -๐Ÿ˜ˆ smiling face with horns; 1F608; -๐Ÿ‘ฟ angry face with horns; 1F47F; -๐Ÿ’€ skull; 1F480; -โ˜ ๏ธ skull and crossbones; 2620 FE0F; -๐Ÿ’ฉ pile of poo; 1F4A9; -๐Ÿคก clown face; 1F921; -๐Ÿ‘น ogre; 1F479; -๐Ÿ‘บ goblin; 1F47A; -๐Ÿ‘ป ghost; 1F47B; -๐Ÿ‘ฝ alien; 1F47D; -๐Ÿ‘พ alien monster; 1F47E; -๐Ÿค– robot; 1F916; -๐Ÿ˜บ grinning cat; 1F63A; -๐Ÿ˜ธ grinning cat with smiling eyes; 1F638; -๐Ÿ˜น cat with tears of joy; 1F639; -๐Ÿ˜ป smiling cat with heart-eyes; 1F63B; -๐Ÿ˜ผ cat with wry smile; 1F63C; -๐Ÿ˜ฝ kissing cat; 1F63D; -๐Ÿ™€ weary cat; 1F640; -๐Ÿ˜ฟ crying cat; 1F63F; -๐Ÿ˜พ pouting cat; 1F63E; -๐Ÿ™ˆ see-no-evil monkey; 1F648; -๐Ÿ™‰ hear-no-evil monkey; 1F649; -๐Ÿ™Š speak-no-evil monkey; 1F64A; -๐Ÿ’‹ kiss mark; 1F48B; -๐Ÿ’Œ love letter; 1F48C; -๐Ÿ’˜ heart with arrow; 1F498; -๐Ÿ’ heart with ribbon; 1F49D; -๐Ÿ’– sparkling heart; 1F496; -๐Ÿ’— growing heart; 1F497; -๐Ÿ’“ beating heart; 1F493; -๐Ÿ’ž revolving hearts; 1F49E; -๐Ÿ’• two hearts; 1F495; -๐Ÿ’Ÿ heart decoration; 1F49F; -โฃ๏ธ heart exclamation; 2763 FE0F; -๐Ÿ’” broken heart; 1F494; -โค๏ธ red heart; 2764 FE0F; -๐Ÿงก orange heart; 1F9E1; -๐Ÿ’› yellow heart; 1F49B; -๐Ÿ’š green heart; 1F49A; -๐Ÿ’™ blue heart; 1F499; -๐Ÿ’œ purple heart; 1F49C; -๐ŸคŽ brown heart; 1F90E; -๐Ÿ–ค black heart; 1F5A4; -๐Ÿค white heart; 1F90D; -๐Ÿ’ฏ hundred points; 1F4AF; -๐Ÿ’ข anger symbol; 1F4A2; -๐Ÿ’ฅ collision; 1F4A5; -๐Ÿ’ซ dizzy; 1F4AB; -๐Ÿ’ฆ sweat droplets; 1F4A6; -๐Ÿ’จ dashing away; 1F4A8; -๐Ÿ•ณ๏ธ hole; 1F573 FE0F; -๐Ÿ’ฃ bomb; 1F4A3; -๐Ÿ’ฌ speech balloon; 1F4AC; -๐Ÿ—จ๏ธ left speech bubble; 1F5E8 FE0F; -๐Ÿ—ฏ๏ธ right anger bubble; 1F5EF FE0F; -๐Ÿ’ญ thought balloon; 1F4AD; -๐Ÿ’ค zzz; 1F4A4; -๐Ÿ‘‹ waving hand; 1F44B; -๐Ÿคš raised back of hand; 1F91A; -๐Ÿ–๏ธ hand with fingers splayed; 1F590 FE0F; -โœ‹ raised hand; 270B; -๐Ÿ–– vulcan salute; 1F596; -๐Ÿ‘Œ OK hand; 1F44C; -๐ŸคŒ pinched fingers; 1F90C; -๐Ÿค pinching hand; 1F90F; -โœŒ๏ธ victory hand; 270C FE0F; -๐Ÿคž crossed fingers; 1F91E; -๐ŸคŸ love-you gesture; 1F91F; -๐Ÿค˜ sign of the horns; 1F918; -๐Ÿค™ call me hand; 1F919; -๐Ÿ‘ˆ backhand index pointing left; 1F448; -๐Ÿ‘‰ backhand index pointing right; 1F449; -๐Ÿ‘† backhand index pointing up; 1F446; -๐Ÿ–• middle finger; 1F595; -๐Ÿ‘‡ backhand index pointing down; 1F447; -โ˜๏ธ index pointing up; 261D FE0F; -๐Ÿ‘ thumbs up; 1F44D; -๐Ÿ‘Ž thumbs down; 1F44E; -โœŠ raised fist; 270A; -๐Ÿ‘Š oncoming fist; 1F44A; -๐Ÿค› left-facing fist; 1F91B; -๐Ÿคœ right-facing fist; 1F91C; -๐Ÿ‘ clapping hands; 1F44F; -๐Ÿ™Œ raising hands; 1F64C; -๐Ÿ‘ open hands; 1F450; -๐Ÿคฒ palms up together; 1F932; -๐Ÿค handshake; 1F91D; -๐Ÿ™ folded hands; 1F64F; -โœ๏ธ writing hand; 270D FE0F; -๐Ÿ’… nail polish; 1F485; -๐Ÿคณ selfie; 1F933; -๐Ÿ’ช flexed biceps; 1F4AA; -๐Ÿฆพ mechanical arm; 1F9BE; -๐Ÿฆฟ mechanical leg; 1F9BF; -๐Ÿฆต leg; 1F9B5; -๐Ÿฆถ foot; 1F9B6; -๐Ÿ‘‚ ear; 1F442; -๐Ÿฆป ear with hearing aid; 1F9BB; -๐Ÿ‘ƒ nose; 1F443; -๐Ÿง  brain; 1F9E0; -๐Ÿซ€ anatomical heart; 1FAC0; -๐Ÿซ lungs; 1FAC1; -๐Ÿฆท tooth; 1F9B7; -๐Ÿฆด bone; 1F9B4; -๐Ÿ‘€ eyes; 1F440; -๐Ÿ‘๏ธ eye; 1F441 FE0F; -๐Ÿ‘… tongue; 1F445; -๐Ÿ‘„ mouth; 1F444; -๐Ÿ‘ถ baby; 1F476; -๐Ÿง’ child; 1F9D2; -๐Ÿ‘ฆ boy; 1F466; -๐Ÿ‘ง girl; 1F467; -๐Ÿง‘ person; 1F9D1; -๐Ÿ‘ฑ person: blond hair; 1F471; -๐Ÿ‘จ man; 1F468; -๐Ÿง” man: beard; 1F9D4; -๐Ÿ‘ฉ woman; 1F469; -๐Ÿง“ older person; 1F9D3; -๐Ÿ‘ด old man; 1F474; -๐Ÿ‘ต old woman; 1F475; -๐Ÿ™ person frowning; 1F64D; -๐Ÿ™Ž person pouting; 1F64E; -๐Ÿ™… person gesturing NO; 1F645; -๐Ÿ™† person gesturing OK; 1F646; -๐Ÿ’ person tipping hand; 1F481; -๐Ÿ™‹ person raising hand; 1F64B; -๐Ÿง deaf person; 1F9CF; -๐Ÿ™‡ person bowing; 1F647; -๐Ÿคฆ person facepalming; 1F926; -๐Ÿคท person shrugging; 1F937; -๐Ÿ‘ฎ police officer; 1F46E; -๐Ÿ•ต๏ธ detective; 1F575 FE0F; -๐Ÿ’‚ guard; 1F482; -๐Ÿฅท ninja; 1F977; -๐Ÿ‘ท construction worker; 1F477; -๐Ÿคด prince; 1F934; -๐Ÿ‘ธ princess; 1F478; -๐Ÿ‘ณ person wearing turban; 1F473; -๐Ÿ‘ฒ person with skullcap; 1F472; -๐Ÿง• woman with headscarf; 1F9D5; -๐Ÿคต person in tuxedo; 1F935; -๐Ÿ‘ฐ person with veil; 1F470; -๐Ÿคฐ pregnant woman; 1F930; -๐Ÿคฑ breast-feeding; 1F931; -๐Ÿ‘ผ baby angel; 1F47C; -๐ŸŽ… Santa Claus; 1F385; -๐Ÿคถ Mrs. Claus; 1F936; -๐Ÿฆธ superhero; 1F9B8; -๐Ÿฆน supervillain; 1F9B9; -๐Ÿง™ mage; 1F9D9; -๐Ÿงš fairy; 1F9DA; -๐Ÿง› vampire; 1F9DB; -๐Ÿงœ merperson; 1F9DC; -๐Ÿง elf; 1F9DD; -๐Ÿงž genie; 1F9DE; -๐ŸงŸ zombie; 1F9DF; -๐Ÿ’† person getting massage; 1F486; -๐Ÿ’‡ person getting haircut; 1F487; -๐Ÿšถ person walking; 1F6B6; -๐Ÿง person standing; 1F9CD; -๐ŸงŽ person kneeling; 1F9CE; -๐Ÿƒ person running; 1F3C3; -๐Ÿ’ƒ woman dancing; 1F483; -๐Ÿ•บ man dancing; 1F57A; -๐Ÿ•ด๏ธ person in suit levitating; 1F574 FE0F; -๐Ÿ‘ฏ people with bunny ears; 1F46F; -๐Ÿง– person in steamy room; 1F9D6; -๐Ÿง— person climbing; 1F9D7; -๐Ÿคบ person fencing; 1F93A; -๐Ÿ‡ horse racing; 1F3C7; -โ›ท๏ธ skier; 26F7 FE0F; -๐Ÿ‚ snowboarder; 1F3C2; -๐ŸŒ๏ธ person golfing; 1F3CC FE0F; -๐Ÿ„ person surfing; 1F3C4; -๐Ÿšฃ person rowing boat; 1F6A3; -๐ŸŠ person swimming; 1F3CA; -โ›น๏ธ person bouncing ball; 26F9 FE0F; -๐Ÿ‹๏ธ person lifting weights; 1F3CB FE0F; -๐Ÿšด person biking; 1F6B4; -๐Ÿšต person mountain biking; 1F6B5; -๐Ÿคธ person cartwheeling; 1F938; -๐Ÿคผ people wrestling; 1F93C; -๐Ÿคฝ person playing water polo; 1F93D; -๐Ÿคพ person playing handball; 1F93E; -๐Ÿคน person juggling; 1F939; -๐Ÿง˜ person in lotus position; 1F9D8; -๐Ÿ›€ person taking bath; 1F6C0; -๐Ÿ›Œ person in bed; 1F6CC; -๐Ÿ‘ญ women holding hands; 1F46D; -๐Ÿ‘ซ woman and man holding hands; 1F46B; -๐Ÿ‘ฌ men holding hands; 1F46C; -๐Ÿ’ kiss; 1F48F; -๐Ÿ’‘ couple with heart; 1F491; -๐Ÿ‘ช family; 1F46A; -๐Ÿ—ฃ๏ธ speaking head; 1F5E3 FE0F; -๐Ÿ‘ค bust in silhouette; 1F464; -๐Ÿ‘ฅ busts in silhouette; 1F465; -๐Ÿซ‚ people hugging; 1FAC2; -๐Ÿ‘ฃ footprints; 1F463; -๐Ÿต monkey face; 1F435; -๐Ÿ’ monkey; 1F412; -๐Ÿฆ gorilla; 1F98D; -๐Ÿฆง orangutan; 1F9A7; -๐Ÿถ dog face; 1F436; -๐Ÿ• dog; 1F415; -๐Ÿฆฎ guide dog; 1F9AE; -๐Ÿฉ poodle; 1F429; -๐Ÿบ wolf; 1F43A; -๐ŸฆŠ fox; 1F98A; -๐Ÿฆ raccoon; 1F99D; -๐Ÿฑ cat face; 1F431; -๐Ÿˆ cat; 1F408; -๐Ÿฆ lion; 1F981; -๐Ÿฏ tiger face; 1F42F; -๐Ÿ… tiger; 1F405; -๐Ÿ† leopard; 1F406; -๐Ÿด horse face; 1F434; -๐ŸŽ horse; 1F40E; -๐Ÿฆ„ unicorn; 1F984; -๐Ÿฆ“ zebra; 1F993; -๐ŸฆŒ deer; 1F98C; -๐Ÿฆฌ bison; 1F9AC; -๐Ÿฎ cow face; 1F42E; -๐Ÿ‚ ox; 1F402; -๐Ÿƒ water buffalo; 1F403; -๐Ÿ„ cow; 1F404; -๐Ÿท pig face; 1F437; -๐Ÿ– pig; 1F416; -๐Ÿ— boar; 1F417; -๐Ÿฝ pig nose; 1F43D; -๐Ÿ ram; 1F40F; -๐Ÿ‘ ewe; 1F411; -๐Ÿ goat; 1F410; -๐Ÿช camel; 1F42A; -๐Ÿซ two-hump camel; 1F42B; -๐Ÿฆ™ llama; 1F999; -๐Ÿฆ’ giraffe; 1F992; -๐Ÿ˜ elephant; 1F418; -๐Ÿฆฃ mammoth; 1F9A3; -๐Ÿฆ rhinoceros; 1F98F; -๐Ÿฆ› hippopotamus; 1F99B; -๐Ÿญ mouse face; 1F42D; -๐Ÿ mouse; 1F401; -๐Ÿ€ rat; 1F400; -๐Ÿน hamster; 1F439; -๐Ÿฐ rabbit face; 1F430; -๐Ÿ‡ rabbit; 1F407; -๐Ÿฟ๏ธ chipmunk; 1F43F FE0F; -๐Ÿฆซ beaver; 1F9AB; -๐Ÿฆ” hedgehog; 1F994; -๐Ÿฆ‡ bat; 1F987; -๐Ÿป bear; 1F43B; -๐Ÿจ koala; 1F428; -๐Ÿผ panda; 1F43C; -๐Ÿฆฅ sloth; 1F9A5; -๐Ÿฆฆ otter; 1F9A6; -๐Ÿฆจ skunk; 1F9A8; -๐Ÿฆ˜ kangaroo; 1F998; -๐Ÿฆก badger; 1F9A1; -๐Ÿพ paw prints; 1F43E; -๐Ÿฆƒ turkey; 1F983; -๐Ÿ” chicken; 1F414; -๐Ÿ“ rooster; 1F413; -๐Ÿฃ hatching chick; 1F423; -๐Ÿค baby chick; 1F424; -๐Ÿฅ front-facing baby chick; 1F425; -๐Ÿฆ bird; 1F426; -๐Ÿง penguin; 1F427; -๐Ÿ•Š๏ธ dove; 1F54A FE0F; -๐Ÿฆ… eagle; 1F985; -๐Ÿฆ† duck; 1F986; -๐Ÿฆข swan; 1F9A2; -๐Ÿฆ‰ owl; 1F989; -๐Ÿฆค dodo; 1F9A4; -๐Ÿชถ feather; 1FAB6; -๐Ÿฆฉ flamingo; 1F9A9; -๐Ÿฆš peacock; 1F99A; -๐Ÿฆœ parrot; 1F99C; -๐Ÿธ frog; 1F438; -๐ŸŠ crocodile; 1F40A; -๐Ÿข turtle; 1F422; -๐ŸฆŽ lizard; 1F98E; -๐Ÿ snake; 1F40D; -๐Ÿฒ dragon face; 1F432; -๐Ÿ‰ dragon; 1F409; -๐Ÿฆ• sauropod; 1F995; -๐Ÿฆ– T-Rex; 1F996; -๐Ÿณ spouting whale; 1F433; -๐Ÿ‹ whale; 1F40B; -๐Ÿฌ dolphin; 1F42C; -๐Ÿฆญ seal; 1F9AD; -๐ŸŸ fish; 1F41F; -๐Ÿ  tropical fish; 1F420; -๐Ÿก blowfish; 1F421; -๐Ÿฆˆ shark; 1F988; -๐Ÿ™ octopus; 1F419; -๐Ÿš spiral shell; 1F41A; -๐ŸŒ snail; 1F40C; -๐Ÿฆ‹ butterfly; 1F98B; -๐Ÿ› bug; 1F41B; -๐Ÿœ ant; 1F41C; -๐Ÿ honeybee; 1F41D; -๐Ÿชฒ beetle; 1FAB2; -๐Ÿž lady beetle; 1F41E; -๐Ÿฆ— cricket; 1F997; -๐Ÿชณ cockroach; 1FAB3; -๐Ÿ•ท๏ธ spider; 1F577 FE0F; -๐Ÿ•ธ๏ธ spider web; 1F578 FE0F; -๐Ÿฆ‚ scorpion; 1F982; -๐ŸฆŸ mosquito; 1F99F; -๐Ÿชฐ fly; 1FAB0; -๐Ÿชฑ worm; 1FAB1; -๐Ÿฆ  microbe; 1F9A0; -๐Ÿ’ bouquet; 1F490; -๐ŸŒธ cherry blossom; 1F338; -๐Ÿ’ฎ white flower; 1F4AE; -๐Ÿต๏ธ rosette; 1F3F5 FE0F; -๐ŸŒน rose; 1F339; -๐Ÿฅ€ wilted flower; 1F940; -๐ŸŒบ hibiscus; 1F33A; -๐ŸŒป sunflower; 1F33B; -๐ŸŒผ blossom; 1F33C; -๐ŸŒท tulip; 1F337; -๐ŸŒฑ seedling; 1F331; -๐Ÿชด potted plant; 1FAB4; -๐ŸŒฒ evergreen tree; 1F332; -๐ŸŒณ deciduous tree; 1F333; -๐ŸŒด palm tree; 1F334; -๐ŸŒต cactus; 1F335; -๐ŸŒพ sheaf of rice; 1F33E; -๐ŸŒฟ herb; 1F33F; -โ˜˜๏ธ shamrock; 2618 FE0F; -๐Ÿ€ four leaf clover; 1F340; -๐Ÿ maple leaf; 1F341; -๐Ÿ‚ fallen leaf; 1F342; -๐Ÿƒ leaf fluttering in wind; 1F343; -๐Ÿ‡ grapes; 1F347; -๐Ÿˆ melon; 1F348; -๐Ÿ‰ watermelon; 1F349; -๐ŸŠ tangerine; 1F34A; -๐Ÿ‹ lemon; 1F34B; -๐ŸŒ banana; 1F34C; -๐Ÿ pineapple; 1F34D; -๐Ÿฅญ mango; 1F96D; -๐ŸŽ red apple; 1F34E; -๐Ÿ green apple; 1F34F; -๐Ÿ pear; 1F350; -๐Ÿ‘ peach; 1F351; -๐Ÿ’ cherries; 1F352; -๐Ÿ“ strawberry; 1F353; -๐Ÿซ blueberries; 1FAD0; -๐Ÿฅ kiwi fruit; 1F95D; -๐Ÿ… tomato; 1F345; -๐Ÿซ’ olive; 1FAD2; -๐Ÿฅฅ coconut; 1F965; -๐Ÿฅ‘ avocado; 1F951; -๐Ÿ† eggplant; 1F346; -๐Ÿฅ” potato; 1F954; -๐Ÿฅ• carrot; 1F955; -๐ŸŒฝ ear of corn; 1F33D; -๐ŸŒถ๏ธ hot pepper; 1F336 FE0F; -๐Ÿซ‘ bell pepper; 1FAD1; -๐Ÿฅ’ cucumber; 1F952; -๐Ÿฅฌ leafy green; 1F96C; -๐Ÿฅฆ broccoli; 1F966; -๐Ÿง„ garlic; 1F9C4; -๐Ÿง… onion; 1F9C5; -๐Ÿ„ mushroom; 1F344; -๐Ÿฅœ peanuts; 1F95C; -๐ŸŒฐ chestnut; 1F330; -๐Ÿž bread; 1F35E; -๐Ÿฅ croissant; 1F950; -๐Ÿฅ– baguette bread; 1F956; -๐Ÿซ“ flatbread; 1FAD3; -๐Ÿฅจ pretzel; 1F968; -๐Ÿฅฏ bagel; 1F96F; -๐Ÿฅž pancakes; 1F95E; -๐Ÿง‡ waffle; 1F9C7; -๐Ÿง€ cheese wedge; 1F9C0; -๐Ÿ– meat on bone; 1F356; -๐Ÿ— poultry leg; 1F357; -๐Ÿฅฉ cut of meat; 1F969; -๐Ÿฅ“ bacon; 1F953; -๐Ÿ” hamburger; 1F354; -๐ŸŸ french fries; 1F35F; -๐Ÿ• pizza; 1F355; -๐ŸŒญ hot dog; 1F32D; -๐Ÿฅช sandwich; 1F96A; -๐ŸŒฎ taco; 1F32E; -๐ŸŒฏ burrito; 1F32F; -๐Ÿซ” tamale; 1FAD4; -๐Ÿฅ™ stuffed flatbread; 1F959; -๐Ÿง† falafel; 1F9C6; -๐Ÿฅš egg; 1F95A; -๐Ÿณ cooking; 1F373; -๐Ÿฅ˜ shallow pan of food; 1F958; -๐Ÿฒ pot of food; 1F372; -๐Ÿซ• fondue; 1FAD5; -๐Ÿฅฃ bowl with spoon; 1F963; -๐Ÿฅ— green salad; 1F957; -๐Ÿฟ popcorn; 1F37F; -๐Ÿงˆ butter; 1F9C8; -๐Ÿง‚ salt; 1F9C2; -๐Ÿฅซ canned food; 1F96B; -๐Ÿฑ bento box; 1F371; -๐Ÿ˜ rice cracker; 1F358; -๐Ÿ™ rice ball; 1F359; -๐Ÿš cooked rice; 1F35A; -๐Ÿ› curry rice; 1F35B; -๐Ÿœ steaming bowl; 1F35C; -๐Ÿ spaghetti; 1F35D; -๐Ÿ  roasted sweet potato; 1F360; -๐Ÿข oden; 1F362; -๐Ÿฃ sushi; 1F363; -๐Ÿค fried shrimp; 1F364; -๐Ÿฅ fish cake with swirl; 1F365; -๐Ÿฅฎ moon cake; 1F96E; -๐Ÿก dango; 1F361; -๐ŸฅŸ dumpling; 1F95F; -๐Ÿฅ  fortune cookie; 1F960; -๐Ÿฅก takeout box; 1F961; -๐Ÿฆ€ crab; 1F980; -๐Ÿฆž lobster; 1F99E; -๐Ÿฆ shrimp; 1F990; -๐Ÿฆ‘ squid; 1F991; -๐Ÿฆช oyster; 1F9AA; -๐Ÿฆ soft ice cream; 1F366; -๐Ÿง shaved ice; 1F367; -๐Ÿจ ice cream; 1F368; -๐Ÿฉ doughnut; 1F369; -๐Ÿช cookie; 1F36A; -๐ŸŽ‚ birthday cake; 1F382; -๐Ÿฐ shortcake; 1F370; -๐Ÿง cupcake; 1F9C1; -๐Ÿฅง pie; 1F967; -๐Ÿซ chocolate bar; 1F36B; -๐Ÿฌ candy; 1F36C; -๐Ÿญ lollipop; 1F36D; -๐Ÿฎ custard; 1F36E; -๐Ÿฏ honey pot; 1F36F; -๐Ÿผ baby bottle; 1F37C; -๐Ÿฅ› glass of milk; 1F95B; -โ˜• hot beverage; 2615; -๐Ÿซ– teapot; 1FAD6; -๐Ÿต teacup without handle; 1F375; -๐Ÿถ sake; 1F376; -๐Ÿพ bottle with popping cork; 1F37E; -๐Ÿท wine glass; 1F377; -๐Ÿธ cocktail glass; 1F378; -๐Ÿน tropical drink; 1F379; -๐Ÿบ beer mug; 1F37A; -๐Ÿป clinking beer mugs; 1F37B; -๐Ÿฅ‚ clinking glasses; 1F942; -๐Ÿฅƒ tumbler glass; 1F943; -๐Ÿฅค cup with straw; 1F964; -๐Ÿง‹ bubble tea; 1F9CB; -๐Ÿงƒ beverage box; 1F9C3; -๐Ÿง‰ mate; 1F9C9; -๐ŸงŠ ice; 1F9CA; -๐Ÿฅข chopsticks; 1F962; -๐Ÿฝ๏ธ fork and knife with plate; 1F37D FE0F; -๐Ÿด fork and knife; 1F374; -๐Ÿฅ„ spoon; 1F944; -๐Ÿ”ช kitchen knife; 1F52A; -๐Ÿบ amphora; 1F3FA; -๐ŸŒ globe showing Europe-Africa; 1F30D; -๐ŸŒŽ globe showing Americas; 1F30E; -๐ŸŒ globe showing Asia-Australia; 1F30F; -๐ŸŒ globe with meridians; 1F310; -๐Ÿ—บ๏ธ world map; 1F5FA FE0F; -๐Ÿ—พ map of Japan; 1F5FE; -๐Ÿงญ compass; 1F9ED; -๐Ÿ”๏ธ snow-capped mountain; 1F3D4 FE0F; -โ›ฐ๏ธ mountain; 26F0 FE0F; -๐ŸŒ‹ volcano; 1F30B; -๐Ÿ—ป mount fuji; 1F5FB; -๐Ÿ•๏ธ camping; 1F3D5 FE0F; -๐Ÿ–๏ธ beach with umbrella; 1F3D6 FE0F; -๐Ÿœ๏ธ desert; 1F3DC FE0F; -๐Ÿ๏ธ desert island; 1F3DD FE0F; -๐Ÿž๏ธ national park; 1F3DE FE0F; -๐ŸŸ๏ธ stadium; 1F3DF FE0F; -๐Ÿ›๏ธ classical building; 1F3DB FE0F; -๐Ÿ—๏ธ building construction; 1F3D7 FE0F; -๐Ÿงฑ brick; 1F9F1; -๐Ÿชจ rock; 1FAA8; -๐Ÿชต wood; 1FAB5; -๐Ÿ›– hut; 1F6D6; -๐Ÿ˜๏ธ houses; 1F3D8 FE0F; -๐Ÿš๏ธ derelict house; 1F3DA FE0F; -๐Ÿ  house; 1F3E0; -๐Ÿก house with garden; 1F3E1; -๐Ÿข office building; 1F3E2; -๐Ÿฃ Japanese post office; 1F3E3; -๐Ÿค post office; 1F3E4; -๐Ÿฅ hospital; 1F3E5; -๐Ÿฆ bank; 1F3E6; -๐Ÿจ hotel; 1F3E8; -๐Ÿฉ love hotel; 1F3E9; -๐Ÿช convenience store; 1F3EA; -๐Ÿซ school; 1F3EB; -๐Ÿฌ department store; 1F3EC; -๐Ÿญ factory; 1F3ED; -๐Ÿฏ Japanese castle; 1F3EF; -๐Ÿฐ castle; 1F3F0; -๐Ÿ’’ wedding; 1F492; -๐Ÿ—ผ Tokyo tower; 1F5FC; -๐Ÿ—ฝ Statue of Liberty; 1F5FD; -โ›ช church; 26EA; -๐Ÿ•Œ mosque; 1F54C; -๐Ÿ›• hindu temple; 1F6D5; -๐Ÿ• synagogue; 1F54D; -โ›ฉ๏ธ shinto shrine; 26E9 FE0F; -๐Ÿ•‹ kaaba; 1F54B; -โ›ฒ fountain; 26F2; -โ›บ tent; 26FA; -๐ŸŒ foggy; 1F301; -๐ŸŒƒ night with stars; 1F303; -๐Ÿ™๏ธ cityscape; 1F3D9 FE0F; -๐ŸŒ„ sunrise over mountains; 1F304; -๐ŸŒ… sunrise; 1F305; -๐ŸŒ† cityscape at dusk; 1F306; -๐ŸŒ‡ sunset; 1F307; -๐ŸŒ‰ bridge at night; 1F309; -โ™จ๏ธ hot springs; 2668 FE0F; -๐ŸŽ  carousel horse; 1F3A0; -๐ŸŽก ferris wheel; 1F3A1; -๐ŸŽข roller coaster; 1F3A2; -๐Ÿ’ˆ barber pole; 1F488; -๐ŸŽช circus tent; 1F3AA; -๐Ÿš‚ locomotive; 1F682; -๐Ÿšƒ railway car; 1F683; -๐Ÿš„ high-speed train; 1F684; -๐Ÿš… bullet train; 1F685; -๐Ÿš† train; 1F686; -๐Ÿš‡ metro; 1F687; -๐Ÿšˆ light rail; 1F688; -๐Ÿš‰ station; 1F689; -๐ŸšŠ tram; 1F68A; -๐Ÿš monorail; 1F69D; -๐Ÿšž mountain railway; 1F69E; -๐Ÿš‹ tram car; 1F68B; -๐ŸšŒ bus; 1F68C; -๐Ÿš oncoming bus; 1F68D; -๐ŸšŽ trolleybus; 1F68E; -๐Ÿš minibus; 1F690; -๐Ÿš‘ ambulance; 1F691; -๐Ÿš’ fire engine; 1F692; -๐Ÿš“ police car; 1F693; -๐Ÿš” oncoming police car; 1F694; -๐Ÿš• taxi; 1F695; -๐Ÿš– oncoming taxi; 1F696; -๐Ÿš— automobile; 1F697; -๐Ÿš˜ oncoming automobile; 1F698; -๐Ÿš™ sport utility vehicle; 1F699; -๐Ÿ›ป pickup truck; 1F6FB; -๐Ÿšš delivery truck; 1F69A; -๐Ÿš› articulated lorry; 1F69B; -๐Ÿšœ tractor; 1F69C; -๐ŸŽ๏ธ racing car; 1F3CE FE0F; -๐Ÿ๏ธ motorcycle; 1F3CD FE0F; -๐Ÿ›ต motor scooter; 1F6F5; -๐Ÿฆฝ manual wheelchair; 1F9BD; -๐Ÿฆผ motorized wheelchair; 1F9BC; -๐Ÿ›บ auto rickshaw; 1F6FA; -๐Ÿšฒ bicycle; 1F6B2; -๐Ÿ›ด kick scooter; 1F6F4; -๐Ÿ›น skateboard; 1F6F9; -๐Ÿ›ผ roller skate; 1F6FC; -๐Ÿš bus stop; 1F68F; -๐Ÿ›ฃ๏ธ motorway; 1F6E3 FE0F; -๐Ÿ›ค๏ธ railway track; 1F6E4 FE0F; -๐Ÿ›ข๏ธ oil drum; 1F6E2 FE0F; -โ›ฝ fuel pump; 26FD; -๐Ÿšจ police car light; 1F6A8; -๐Ÿšฅ horizontal traffic light; 1F6A5; -๐Ÿšฆ vertical traffic light; 1F6A6; -๐Ÿ›‘ stop sign; 1F6D1; -๐Ÿšง construction; 1F6A7; -โš“ anchor; 2693; -โ›ต sailboat; 26F5; -๐Ÿ›ถ canoe; 1F6F6; -๐Ÿšค speedboat; 1F6A4; -๐Ÿ›ณ๏ธ passenger ship; 1F6F3 FE0F; -โ›ด๏ธ ferry; 26F4 FE0F; -๐Ÿ›ฅ๏ธ motor boat; 1F6E5 FE0F; -๐Ÿšข ship; 1F6A2; -โœˆ๏ธ airplane; 2708 FE0F; -๐Ÿ›ฉ๏ธ small airplane; 1F6E9 FE0F; -๐Ÿ›ซ airplane departure; 1F6EB; -๐Ÿ›ฌ airplane arrival; 1F6EC; -๐Ÿช‚ parachute; 1FA82; -๐Ÿ’บ seat; 1F4BA; -๐Ÿš helicopter; 1F681; -๐ŸšŸ suspension railway; 1F69F; -๐Ÿš  mountain cableway; 1F6A0; -๐Ÿšก aerial tramway; 1F6A1; -๐Ÿ›ฐ๏ธ satellite; 1F6F0 FE0F; -๐Ÿš€ rocket; 1F680; -๐Ÿ›ธ flying saucer; 1F6F8; -๐Ÿ›Ž๏ธ bellhop bell; 1F6CE FE0F; -๐Ÿงณ luggage; 1F9F3; -โŒ› hourglass done; 231B; -โณ hourglass not done; 23F3; -โŒš watch; 231A; -โฐ alarm clock; 23F0; -โฑ๏ธ stopwatch; 23F1 FE0F; -โฒ๏ธ timer clock; 23F2 FE0F; -๐Ÿ•ฐ๏ธ mantelpiece clock; 1F570 FE0F; -๐Ÿ•› twelve oโ€™clock; 1F55B; -๐Ÿ•ง twelve-thirty; 1F567; -๐Ÿ• one oโ€™clock; 1F550; -๐Ÿ•œ one-thirty; 1F55C; -๐Ÿ•‘ two oโ€™clock; 1F551; -๐Ÿ• two-thirty; 1F55D; -๐Ÿ•’ three oโ€™clock; 1F552; -๐Ÿ•ž three-thirty; 1F55E; -๐Ÿ•“ four oโ€™clock; 1F553; -๐Ÿ•Ÿ four-thirty; 1F55F; -๐Ÿ•” five oโ€™clock; 1F554; -๐Ÿ•  five-thirty; 1F560; -๐Ÿ•• six oโ€™clock; 1F555; -๐Ÿ•ก six-thirty; 1F561; -๐Ÿ•– seven oโ€™clock; 1F556; -๐Ÿ•ข seven-thirty; 1F562; -๐Ÿ•— eight oโ€™clock; 1F557; -๐Ÿ•ฃ eight-thirty; 1F563; -๐Ÿ•˜ nine oโ€™clock; 1F558; -๐Ÿ•ค nine-thirty; 1F564; -๐Ÿ•™ ten oโ€™clock; 1F559; -๐Ÿ•ฅ ten-thirty; 1F565; -๐Ÿ•š eleven oโ€™clock; 1F55A; -๐Ÿ•ฆ eleven-thirty; 1F566; -๐ŸŒ‘ new moon; 1F311; -๐ŸŒ’ waxing crescent moon; 1F312; -๐ŸŒ“ first quarter moon; 1F313; -๐ŸŒ” waxing gibbous moon; 1F314; -๐ŸŒ• full moon; 1F315; -๐ŸŒ– waning gibbous moon; 1F316; -๐ŸŒ— last quarter moon; 1F317; -๐ŸŒ˜ waning crescent moon; 1F318; -๐ŸŒ™ crescent moon; 1F319; -๐ŸŒš new moon face; 1F31A; -๐ŸŒ› first quarter moon face; 1F31B; -๐ŸŒœ last quarter moon face; 1F31C; -๐ŸŒก๏ธ thermometer; 1F321 FE0F; -โ˜€๏ธ sun; 2600 FE0F; -๐ŸŒ full moon face; 1F31D; -๐ŸŒž sun with face; 1F31E; -๐Ÿช ringed planet; 1FA90; -โญ star; 2B50; -๐ŸŒŸ glowing star; 1F31F; -๐ŸŒ  shooting star; 1F320; -๐ŸŒŒ milky way; 1F30C; -โ˜๏ธ cloud; 2601 FE0F; -โ›… sun behind cloud; 26C5; -โ›ˆ๏ธ cloud with lightning and rain; 26C8 FE0F; -๐ŸŒค๏ธ sun behind small cloud; 1F324 FE0F; -๐ŸŒฅ๏ธ sun behind large cloud; 1F325 FE0F; -๐ŸŒฆ๏ธ sun behind rain cloud; 1F326 FE0F; -๐ŸŒง๏ธ cloud with rain; 1F327 FE0F; -๐ŸŒจ๏ธ cloud with snow; 1F328 FE0F; -๐ŸŒฉ๏ธ cloud with lightning; 1F329 FE0F; -๐ŸŒช๏ธ tornado; 1F32A FE0F; -๐ŸŒซ๏ธ fog; 1F32B FE0F; -๐ŸŒฌ๏ธ wind face; 1F32C FE0F; -๐ŸŒ€ cyclone; 1F300; -๐ŸŒˆ rainbow; 1F308; -๐ŸŒ‚ closed umbrella; 1F302; -โ˜‚๏ธ umbrella; 2602 FE0F; -โ˜” umbrella with rain drops; 2614; -โ›ฑ๏ธ umbrella on ground; 26F1 FE0F; -โšก high voltage; 26A1; -โ„๏ธ snowflake; 2744 FE0F; -โ˜ƒ๏ธ snowman; 2603 FE0F; -โ›„ snowman without snow; 26C4; -โ˜„๏ธ comet; 2604 FE0F; -๐Ÿ”ฅ fire; 1F525; -๐Ÿ’ง droplet; 1F4A7; -๐ŸŒŠ water wave; 1F30A; -๐ŸŽƒ jack-o-lantern; 1F383; -๐ŸŽ„ Christmas tree; 1F384; -๐ŸŽ† fireworks; 1F386; -๐ŸŽ‡ sparkler; 1F387; -๐Ÿงจ firecracker; 1F9E8; -โœจ sparkles; 2728; -๐ŸŽˆ balloon; 1F388; -๐ŸŽ‰ party popper; 1F389; -๐ŸŽŠ confetti ball; 1F38A; -๐ŸŽ‹ tanabata tree; 1F38B; -๐ŸŽ pine decoration; 1F38D; -๐ŸŽŽ Japanese dolls; 1F38E; -๐ŸŽ carp streamer; 1F38F; -๐ŸŽ wind chime; 1F390; -๐ŸŽ‘ moon viewing ceremony; 1F391; -๐Ÿงง red envelope; 1F9E7; -๐ŸŽ€ ribbon; 1F380; -๐ŸŽ wrapped gift; 1F381; -๐ŸŽ—๏ธ reminder ribbon; 1F397 FE0F; -๐ŸŽŸ๏ธ admission tickets; 1F39F FE0F; -๐ŸŽซ ticket; 1F3AB; -๐ŸŽ–๏ธ military medal; 1F396 FE0F; -๐Ÿ† trophy; 1F3C6; -๐Ÿ… sports medal; 1F3C5; -๐Ÿฅ‡ 1st place medal; 1F947; -๐Ÿฅˆ 2nd place medal; 1F948; -๐Ÿฅ‰ 3rd place medal; 1F949; -โšฝ soccer ball; 26BD; -โšพ baseball; 26BE; -๐ŸฅŽ softball; 1F94E; -๐Ÿ€ basketball; 1F3C0; -๐Ÿ volleyball; 1F3D0; -๐Ÿˆ american football; 1F3C8; -๐Ÿ‰ rugby football; 1F3C9; -๐ŸŽพ tennis; 1F3BE; -๐Ÿฅ flying disc; 1F94F; -๐ŸŽณ bowling; 1F3B3; -๐Ÿ cricket game; 1F3CF; -๐Ÿ‘ field hockey; 1F3D1; -๐Ÿ’ ice hockey; 1F3D2; -๐Ÿฅ lacrosse; 1F94D; -๐Ÿ“ ping pong; 1F3D3; -๐Ÿธ badminton; 1F3F8; -๐ŸฅŠ boxing glove; 1F94A; -๐Ÿฅ‹ martial arts uniform; 1F94B; -๐Ÿฅ… goal net; 1F945; -โ›ณ flag in hole; 26F3; -โ›ธ๏ธ ice skate; 26F8 FE0F; -๐ŸŽฃ fishing pole; 1F3A3; -๐Ÿคฟ diving mask; 1F93F; -๐ŸŽฝ running shirt; 1F3BD; -๐ŸŽฟ skis; 1F3BF; -๐Ÿ›ท sled; 1F6F7; -๐ŸฅŒ curling stone; 1F94C; -๐ŸŽฏ direct hit; 1F3AF; -๐Ÿช€ yo-yo; 1FA80; -๐Ÿช kite; 1FA81; -๐ŸŽฑ pool 8 ball; 1F3B1; -๐Ÿ”ฎ crystal ball; 1F52E; -๐Ÿช„ magic wand; 1FA84; -๐Ÿงฟ nazar amulet; 1F9FF; -๐ŸŽฎ video game; 1F3AE; -๐Ÿ•น๏ธ joystick; 1F579 FE0F; -๐ŸŽฐ slot machine; 1F3B0; -๐ŸŽฒ game die; 1F3B2; -๐Ÿงฉ puzzle piece; 1F9E9; -๐Ÿงธ teddy bear; 1F9F8; -๐Ÿช… piรฑata; 1FA85; -๐Ÿช† nesting dolls; 1FA86; -โ™ ๏ธ spade suit; 2660 FE0F; -โ™ฅ๏ธ heart suit; 2665 FE0F; -โ™ฆ๏ธ diamond suit; 2666 FE0F; -โ™ฃ๏ธ club suit; 2663 FE0F; -โ™Ÿ๏ธ chess pawn; 265F FE0F; -๐Ÿƒ joker; 1F0CF; -๐Ÿ€„ mahjong red dragon; 1F004; -๐ŸŽด flower playing cards; 1F3B4; -๐ŸŽญ performing arts; 1F3AD; -๐Ÿ–ผ๏ธ framed picture; 1F5BC FE0F; -๐ŸŽจ artist palette; 1F3A8; -๐Ÿงต thread; 1F9F5; -๐Ÿชก sewing needle; 1FAA1; -๐Ÿงถ yarn; 1F9F6; -๐Ÿชข knot; 1FAA2; -๐Ÿ‘“ glasses; 1F453; -๐Ÿ•ถ๏ธ sunglasses; 1F576 FE0F; -๐Ÿฅฝ goggles; 1F97D; -๐Ÿฅผ lab coat; 1F97C; -๐Ÿฆบ safety vest; 1F9BA; -๐Ÿ‘” necktie; 1F454; -๐Ÿ‘• t-shirt; 1F455; -๐Ÿ‘– jeans; 1F456; -๐Ÿงฃ scarf; 1F9E3; -๐Ÿงค gloves; 1F9E4; -๐Ÿงฅ coat; 1F9E5; -๐Ÿงฆ socks; 1F9E6; -๐Ÿ‘— dress; 1F457; -๐Ÿ‘˜ kimono; 1F458; -๐Ÿฅป sari; 1F97B; -๐Ÿฉฑ one-piece swimsuit; 1FA71; -๐Ÿฉฒ briefs; 1FA72; -๐Ÿฉณ shorts; 1FA73; -๐Ÿ‘™ bikini; 1F459; -๐Ÿ‘š womanโ€™s clothes; 1F45A; -๐Ÿ‘› purse; 1F45B; -๐Ÿ‘œ handbag; 1F45C; -๐Ÿ‘ clutch bag; 1F45D; -๐Ÿ›๏ธ shopping bags; 1F6CD FE0F; -๐ŸŽ’ backpack; 1F392; -๐Ÿฉด thong sandal; 1FA74; -๐Ÿ‘ž manโ€™s shoe; 1F45E; -๐Ÿ‘Ÿ running shoe; 1F45F; -๐Ÿฅพ hiking boot; 1F97E; -๐Ÿฅฟ flat shoe; 1F97F; -๐Ÿ‘  high-heeled shoe; 1F460; -๐Ÿ‘ก womanโ€™s sandal; 1F461; -๐Ÿฉฐ ballet shoes; 1FA70; -๐Ÿ‘ข womanโ€™s boot; 1F462; -๐Ÿ‘‘ crown; 1F451; -๐Ÿ‘’ womanโ€™s hat; 1F452; -๐ŸŽฉ top hat; 1F3A9; -๐ŸŽ“ graduation cap; 1F393; -๐Ÿงข billed cap; 1F9E2; -๐Ÿช– military helmet; 1FA96; -โ›‘๏ธ rescue workerโ€™s helmet; 26D1 FE0F; -๐Ÿ“ฟ prayer beads; 1F4FF; -๐Ÿ’„ lipstick; 1F484; -๐Ÿ’ ring; 1F48D; -๐Ÿ’Ž gem stone; 1F48E; -๐Ÿ”‡ muted speaker; 1F507; -๐Ÿ”ˆ speaker low volume; 1F508; -๐Ÿ”‰ speaker medium volume; 1F509; -๐Ÿ”Š speaker high volume; 1F50A; -๐Ÿ“ข loudspeaker; 1F4E2; -๐Ÿ“ฃ megaphone; 1F4E3; -๐Ÿ“ฏ postal horn; 1F4EF; -๐Ÿ”” bell; 1F514; -๐Ÿ”• bell with slash; 1F515; -๐ŸŽผ musical score; 1F3BC; -๐ŸŽต musical note; 1F3B5; -๐ŸŽถ musical notes; 1F3B6; -๐ŸŽ™๏ธ studio microphone; 1F399 FE0F; -๐ŸŽš๏ธ level slider; 1F39A FE0F; -๐ŸŽ›๏ธ control knobs; 1F39B FE0F; -๐ŸŽค microphone; 1F3A4; -๐ŸŽง headphone; 1F3A7; -๐Ÿ“ป radio; 1F4FB; -๐ŸŽท saxophone; 1F3B7; -๐Ÿช— accordion; 1FA97; -๐ŸŽธ guitar; 1F3B8; -๐ŸŽน musical keyboard; 1F3B9; -๐ŸŽบ trumpet; 1F3BA; -๐ŸŽป violin; 1F3BB; -๐Ÿช• banjo; 1FA95; -๐Ÿฅ drum; 1F941; -๐Ÿช˜ long drum; 1FA98; -๐Ÿ“ฑ mobile phone; 1F4F1; -๐Ÿ“ฒ mobile phone with arrow; 1F4F2; -โ˜Ž๏ธ telephone; 260E FE0F; -๐Ÿ“ž telephone receiver; 1F4DE; -๐Ÿ“Ÿ pager; 1F4DF; -๐Ÿ“  fax machine; 1F4E0; -๐Ÿ”‹ battery; 1F50B; -๐Ÿ”Œ electric plug; 1F50C; -๐Ÿ’ป laptop; 1F4BB; -๐Ÿ–ฅ๏ธ desktop computer; 1F5A5 FE0F; -๐Ÿ–จ๏ธ printer; 1F5A8 FE0F; -โŒจ๏ธ keyboard; 2328 FE0F; -๐Ÿ–ฑ๏ธ computer mouse; 1F5B1 FE0F; -๐Ÿ–ฒ๏ธ trackball; 1F5B2 FE0F; -๐Ÿ’ฝ computer disk; 1F4BD; -๐Ÿ’พ floppy disk; 1F4BE; -๐Ÿ’ฟ optical disk; 1F4BF; -๐Ÿ“€ dvd; 1F4C0; -๐Ÿงฎ abacus; 1F9EE; -๐ŸŽฅ movie camera; 1F3A5; -๐ŸŽž๏ธ film frames; 1F39E FE0F; -๐Ÿ“ฝ๏ธ film projector; 1F4FD FE0F; -๐ŸŽฌ clapper board; 1F3AC; -๐Ÿ“บ television; 1F4FA; -๐Ÿ“ท camera; 1F4F7; -๐Ÿ“ธ camera with flash; 1F4F8; -๐Ÿ“น video camera; 1F4F9; -๐Ÿ“ผ videocassette; 1F4FC; -๐Ÿ” magnifying glass tilted left; 1F50D; -๐Ÿ”Ž magnifying glass tilted right; 1F50E; -๐Ÿ•ฏ๏ธ candle; 1F56F FE0F; -๐Ÿ’ก light bulb; 1F4A1; -๐Ÿ”ฆ flashlight; 1F526; -๐Ÿฎ red paper lantern; 1F3EE; -๐Ÿช” diya lamp; 1FA94; -๐Ÿ“” notebook with decorative cover; 1F4D4; -๐Ÿ“• closed book; 1F4D5; -๐Ÿ“– open book; 1F4D6; -๐Ÿ“— green book; 1F4D7; -๐Ÿ“˜ blue book; 1F4D8; -๐Ÿ“™ orange book; 1F4D9; -๐Ÿ“š books; 1F4DA; -๐Ÿ““ notebook; 1F4D3; -๐Ÿ“’ ledger; 1F4D2; -๐Ÿ“ƒ page with curl; 1F4C3; -๐Ÿ“œ scroll; 1F4DC; -๐Ÿ“„ page facing up; 1F4C4; -๐Ÿ“ฐ newspaper; 1F4F0; -๐Ÿ—ž๏ธ rolled-up newspaper; 1F5DE FE0F; -๐Ÿ“‘ bookmark tabs; 1F4D1; -๐Ÿ”– bookmark; 1F516; -๐Ÿท๏ธ label; 1F3F7 FE0F; -๐Ÿ’ฐ money bag; 1F4B0; -๐Ÿช™ coin; 1FA99; -๐Ÿ’ด yen banknote; 1F4B4; -๐Ÿ’ต dollar banknote; 1F4B5; -๐Ÿ’ถ euro banknote; 1F4B6; -๐Ÿ’ท pound banknote; 1F4B7; -๐Ÿ’ธ money with wings; 1F4B8; -๐Ÿ’ณ credit card; 1F4B3; -๐Ÿงพ receipt; 1F9FE; -๐Ÿ’น chart increasing with yen; 1F4B9; -โœ‰๏ธ envelope; 2709 FE0F; -๐Ÿ“ง e-mail; 1F4E7; -๐Ÿ“จ incoming envelope; 1F4E8; -๐Ÿ“ฉ envelope with arrow; 1F4E9; -๐Ÿ“ค outbox tray; 1F4E4; -๐Ÿ“ฅ inbox tray; 1F4E5; -๐Ÿ“ฆ package; 1F4E6; -๐Ÿ“ซ closed mailbox with raised flag; 1F4EB; -๐Ÿ“ช closed mailbox with lowered flag; 1F4EA; -๐Ÿ“ฌ open mailbox with raised flag; 1F4EC; -๐Ÿ“ญ open mailbox with lowered flag; 1F4ED; -๐Ÿ“ฎ postbox; 1F4EE; -๐Ÿ—ณ๏ธ ballot box with ballot; 1F5F3 FE0F; -โœ๏ธ pencil; 270F FE0F; -โœ’๏ธ black nib; 2712 FE0F; -๐Ÿ–‹๏ธ fountain pen; 1F58B FE0F; -๐Ÿ–Š๏ธ pen; 1F58A FE0F; -๐Ÿ–Œ๏ธ paintbrush; 1F58C FE0F; -๐Ÿ–๏ธ crayon; 1F58D FE0F; -๐Ÿ“ memo; 1F4DD; -๐Ÿ’ผ briefcase; 1F4BC; -๐Ÿ“ file folder; 1F4C1; -๐Ÿ“‚ open file folder; 1F4C2; -๐Ÿ—‚๏ธ card index dividers; 1F5C2 FE0F; -๐Ÿ“… calendar; 1F4C5; -๐Ÿ“† tear-off calendar; 1F4C6; -๐Ÿ—’๏ธ spiral notepad; 1F5D2 FE0F; -๐Ÿ—“๏ธ spiral calendar; 1F5D3 FE0F; -๐Ÿ“‡ card index; 1F4C7; -๐Ÿ“ˆ chart increasing; 1F4C8; -๐Ÿ“‰ chart decreasing; 1F4C9; -๐Ÿ“Š bar chart; 1F4CA; -๐Ÿ“‹ clipboard; 1F4CB; -๐Ÿ“Œ pushpin; 1F4CC; -๐Ÿ“ round pushpin; 1F4CD; -๐Ÿ“Ž paperclip; 1F4CE; -๐Ÿ–‡๏ธ linked paperclips; 1F587 FE0F; -๐Ÿ“ straight ruler; 1F4CF; -๐Ÿ“ triangular ruler; 1F4D0; -โœ‚๏ธ scissors; 2702 FE0F; -๐Ÿ—ƒ๏ธ card file box; 1F5C3 FE0F; -๐Ÿ—„๏ธ file cabinet; 1F5C4 FE0F; -๐Ÿ—‘๏ธ wastebasket; 1F5D1 FE0F; -๐Ÿ”’ locked; 1F512; -๐Ÿ”“ unlocked; 1F513; -๐Ÿ” locked with pen; 1F50F; -๐Ÿ” locked with key; 1F510; -๐Ÿ”‘ key; 1F511; -๐Ÿ—๏ธ old key; 1F5DD FE0F; -๐Ÿ”จ hammer; 1F528; -๐Ÿช“ axe; 1FA93; -โ›๏ธ pick; 26CF FE0F; -โš’๏ธ hammer and pick; 2692 FE0F; -๐Ÿ› ๏ธ hammer and wrench; 1F6E0 FE0F; -๐Ÿ—ก๏ธ dagger; 1F5E1 FE0F; -โš”๏ธ crossed swords; 2694 FE0F; -๐Ÿ”ซ pistol; 1F52B; -๐Ÿชƒ boomerang; 1FA83; -๐Ÿน bow and arrow; 1F3F9; -๐Ÿ›ก๏ธ shield; 1F6E1 FE0F; -๐Ÿชš carpentry saw; 1FA9A; -๐Ÿ”ง wrench; 1F527; -๐Ÿช› screwdriver; 1FA9B; -๐Ÿ”ฉ nut and bolt; 1F529; -โš™๏ธ gear; 2699 FE0F; -๐Ÿ—œ๏ธ clamp; 1F5DC FE0F; -โš–๏ธ balance scale; 2696 FE0F; -๐Ÿฆฏ white cane; 1F9AF; -๐Ÿ”— link; 1F517; -โ›“๏ธ chains; 26D3 FE0F; -๐Ÿช hook; 1FA9D; -๐Ÿงฐ toolbox; 1F9F0; -๐Ÿงฒ magnet; 1F9F2; -๐Ÿชœ ladder; 1FA9C; -โš—๏ธ alembic; 2697 FE0F; -๐Ÿงช test tube; 1F9EA; -๐Ÿงซ petri dish; 1F9EB; -๐Ÿงฌ dna; 1F9EC; -๐Ÿ”ฌ microscope; 1F52C; -๐Ÿ”ญ telescope; 1F52D; -๐Ÿ“ก satellite antenna; 1F4E1; -๐Ÿ’‰ syringe; 1F489; -๐Ÿฉธ drop of blood; 1FA78; -๐Ÿ’Š pill; 1F48A; -๐Ÿฉน adhesive bandage; 1FA79; -๐Ÿฉบ stethoscope; 1FA7A; -๐Ÿšช door; 1F6AA; -๐Ÿ›— elevator; 1F6D7; -๐Ÿชž mirror; 1FA9E; -๐ŸชŸ window; 1FA9F; -๐Ÿ›๏ธ bed; 1F6CF FE0F; -๐Ÿ›‹๏ธ couch and lamp; 1F6CB FE0F; -๐Ÿช‘ chair; 1FA91; -๐Ÿšฝ toilet; 1F6BD; -๐Ÿช  plunger; 1FAA0; -๐Ÿšฟ shower; 1F6BF; -๐Ÿ› bathtub; 1F6C1; -๐Ÿชค mouse trap; 1FAA4; -๐Ÿช’ razor; 1FA92; -๐Ÿงด lotion bottle; 1F9F4; -๐Ÿงท safety pin; 1F9F7; -๐Ÿงน broom; 1F9F9; -๐Ÿงบ basket; 1F9FA; -๐Ÿงป roll of paper; 1F9FB; -๐Ÿชฃ bucket; 1FAA3; -๐Ÿงผ soap; 1F9FC; -๐Ÿชฅ toothbrush; 1FAA5; -๐Ÿงฝ sponge; 1F9FD; -๐Ÿงฏ fire extinguisher; 1F9EF; -๐Ÿ›’ shopping cart; 1F6D2; -๐Ÿšฌ cigarette; 1F6AC; -โšฐ๏ธ coffin; 26B0 FE0F; -๐Ÿชฆ headstone; 1FAA6; -โšฑ๏ธ funeral urn; 26B1 FE0F; -๐Ÿ—ฟ moai; 1F5FF; -๐Ÿชง placard; 1FAA7; -๐Ÿง ATM sign; 1F3E7; -๐Ÿšฎ litter in bin sign; 1F6AE; -๐Ÿšฐ potable water; 1F6B0; -โ™ฟ wheelchair symbol; 267F; -๐Ÿšน menโ€™s room; 1F6B9; -๐Ÿšบ womenโ€™s room; 1F6BA; -๐Ÿšป restroom; 1F6BB; -๐Ÿšผ baby symbol; 1F6BC; -๐Ÿšพ water closet; 1F6BE; -๐Ÿ›‚ passport control; 1F6C2; -๐Ÿ›ƒ customs; 1F6C3; -๐Ÿ›„ baggage claim; 1F6C4; -๐Ÿ›… left luggage; 1F6C5; -โš ๏ธ warning; 26A0 FE0F; -๐Ÿšธ children crossing; 1F6B8; -โ›” no entry; 26D4; -๐Ÿšซ prohibited; 1F6AB; -๐Ÿšณ no bicycles; 1F6B3; -๐Ÿšญ no smoking; 1F6AD; -๐Ÿšฏ no littering; 1F6AF; -๐Ÿšฑ non-potable water; 1F6B1; -๐Ÿšท no pedestrians; 1F6B7; -๐Ÿ“ต no mobile phones; 1F4F5; -๐Ÿ”ž no one under eighteen; 1F51E; -โ˜ข๏ธ radioactive; 2622 FE0F; -โ˜ฃ๏ธ biohazard; 2623 FE0F; -โฌ†๏ธ up arrow; 2B06 FE0F; -โ†—๏ธ up-right arrow; 2197 FE0F; -โžก๏ธ right arrow; 27A1 FE0F; -โ†˜๏ธ down-right arrow; 2198 FE0F; -โฌ‡๏ธ down arrow; 2B07 FE0F; -โ†™๏ธ down-left arrow; 2199 FE0F; -โฌ…๏ธ left arrow; 2B05 FE0F; -โ†–๏ธ up-left arrow; 2196 FE0F; -โ†•๏ธ up-down arrow; 2195 FE0F; -โ†”๏ธ left-right arrow; 2194 FE0F; -โ†ฉ๏ธ right arrow curving left; 21A9 FE0F; -โ†ช๏ธ left arrow curving right; 21AA FE0F; -โคด๏ธ right arrow curving up; 2934 FE0F; -โคต๏ธ right arrow curving down; 2935 FE0F; -๐Ÿ”ƒ clockwise vertical arrows; 1F503; -๐Ÿ”„ counterclockwise arrows button; 1F504; -๐Ÿ”™ BACK arrow; 1F519; -๐Ÿ”š END arrow; 1F51A; -๐Ÿ”› ON! arrow; 1F51B; -๐Ÿ”œ SOON arrow; 1F51C; -๐Ÿ” TOP arrow; 1F51D; -๐Ÿ› place of worship; 1F6D0; -โš›๏ธ atom symbol; 269B FE0F; -๐Ÿ•‰๏ธ om; 1F549 FE0F; -โœก๏ธ star of David; 2721 FE0F; -โ˜ธ๏ธ wheel of dharma; 2638 FE0F; -โ˜ฏ๏ธ yin yang; 262F FE0F; -โœ๏ธ latin cross; 271D FE0F; -โ˜ฆ๏ธ orthodox cross; 2626 FE0F; -โ˜ช๏ธ star and crescent; 262A FE0F; -โ˜ฎ๏ธ peace symbol; 262E FE0F; -๐Ÿ•Ž menorah; 1F54E; -๐Ÿ”ฏ dotted six-pointed star; 1F52F; -โ™ˆ Aries; 2648; -โ™‰ Taurus; 2649; -โ™Š Gemini; 264A; -โ™‹ Cancer; 264B; -โ™Œ Leo; 264C; -โ™ Virgo; 264D; -โ™Ž Libra; 264E; -โ™ Scorpio; 264F; -โ™ Sagittarius; 2650; -โ™‘ Capricorn; 2651; -โ™’ Aquarius; 2652; -โ™“ Pisces; 2653; -โ›Ž Ophiuchus; 26CE; -๐Ÿ”€ shuffle tracks button; 1F500; -๐Ÿ” repeat button; 1F501; -๐Ÿ”‚ repeat single button; 1F502; -โ–ถ๏ธ play button; 25B6 FE0F; -โฉ fast-forward button; 23E9; -โญ๏ธ next track button; 23ED FE0F; -โฏ๏ธ play or pause button; 23EF FE0F; -โ—€๏ธ reverse button; 25C0 FE0F; -โช fast reverse button; 23EA; -โฎ๏ธ last track button; 23EE FE0F; -๐Ÿ”ผ upwards button; 1F53C; -โซ fast up button; 23EB; -๐Ÿ”ฝ downwards button; 1F53D; -โฌ fast down button; 23EC; -โธ๏ธ pause button; 23F8 FE0F; -โน๏ธ stop button; 23F9 FE0F; -โบ๏ธ record button; 23FA FE0F; -โ๏ธ eject button; 23CF FE0F; -๐ŸŽฆ cinema; 1F3A6; -๐Ÿ”… dim button; 1F505; -๐Ÿ”† bright button; 1F506; -๐Ÿ“ถ antenna bars; 1F4F6; -๐Ÿ“ณ vibration mode; 1F4F3; -๐Ÿ“ด mobile phone off; 1F4F4; -โ™€๏ธ female sign; 2640 FE0F; -โ™‚๏ธ male sign; 2642 FE0F; -โšง๏ธ transgender symbol; 26A7 FE0F; -โœ–๏ธ multiply; 2716 FE0F; -โž• plus; 2795; -โž– minus; 2796; -โž— divide; 2797; -โ™พ๏ธ infinity; 267E FE0F; -โ€ผ๏ธ double exclamation mark; 203C FE0F; -โ‰๏ธ exclamation question mark; 2049 FE0F; -โ“ question mark; 2753; -โ” white question mark; 2754; -โ• white exclamation mark; 2755; -โ— exclamation mark; 2757; -ใ€ฐ๏ธ wavy dash; 3030 FE0F; -๐Ÿ’ฑ currency exchange; 1F4B1; -๐Ÿ’ฒ heavy dollar sign; 1F4B2; -โš•๏ธ medical symbol; 2695 FE0F; -โ™ป๏ธ recycling symbol; 267B FE0F; -โšœ๏ธ fleur-de-lis; 269C FE0F; -๐Ÿ”ฑ trident emblem; 1F531; -๐Ÿ“› name badge; 1F4DB; -๐Ÿ”ฐ Japanese symbol for beginner; 1F530; -โญ• hollow red circle; 2B55; -โœ… check mark button; 2705; -โ˜‘๏ธ check box with check; 2611 FE0F; -โœ”๏ธ check mark; 2714 FE0F; -โŒ cross mark; 274C; -โŽ cross mark button; 274E; -โžฐ curly loop; 27B0; -โžฟ double curly loop; 27BF; -ใ€ฝ๏ธ part alternation mark; 303D FE0F; -โœณ๏ธ eight-spoked asterisk; 2733 FE0F; -โœด๏ธ eight-pointed star; 2734 FE0F; -โ‡๏ธ sparkle; 2747 FE0F; -ยฉ๏ธ copyright; 00A9 FE0F; -ยฎ๏ธ registered; 00AE FE0F; -โ„ข๏ธ trade mark; 2122 FE0F; -#๏ธโƒฃ keycap: #; 0023 FE0F 20E3; -*๏ธโƒฃ keycap: *; 002A FE0F 20E3; -0๏ธโƒฃ keycap: 0; 0030 FE0F 20E3; -1๏ธโƒฃ keycap: 1; 0031 FE0F 20E3; -2๏ธโƒฃ keycap: 2; 0032 FE0F 20E3; -3๏ธโƒฃ keycap: 3; 0033 FE0F 20E3; -4๏ธโƒฃ keycap: 4; 0034 FE0F 20E3; -5๏ธโƒฃ keycap: 5; 0035 FE0F 20E3; -6๏ธโƒฃ keycap: 6; 0036 FE0F 20E3; -7๏ธโƒฃ keycap: 7; 0037 FE0F 20E3; -8๏ธโƒฃ keycap: 8; 0038 FE0F 20E3; -9๏ธโƒฃ keycap: 9; 0039 FE0F 20E3; -๐Ÿ”Ÿ keycap: 10; 1F51F; -๐Ÿ”  input latin uppercase; 1F520; -๐Ÿ”ก input latin lowercase; 1F521; -๐Ÿ”ข input numbers; 1F522; -๐Ÿ”ฃ input symbols; 1F523; -๐Ÿ”ค input latin letters; 1F524; -๐Ÿ…ฐ๏ธ A button (blood type); 1F170 FE0F; -๐Ÿ†Ž AB button (blood type); 1F18E; -๐Ÿ…ฑ๏ธ B button (blood type); 1F171 FE0F; -๐Ÿ†‘ CL button; 1F191; -๐Ÿ†’ COOL button; 1F192; -๐Ÿ†“ FREE button; 1F193; -โ„น๏ธ information; 2139 FE0F; -๐Ÿ†” ID button; 1F194; -โ“‚๏ธ circled M; 24C2 FE0F; -๐Ÿ†• NEW button; 1F195; -๐Ÿ†– NG button; 1F196; -๐Ÿ…พ๏ธ O button (blood type); 1F17E FE0F; -๐Ÿ†— OK button; 1F197; -๐Ÿ…ฟ๏ธ P button; 1F17F FE0F; -๐Ÿ†˜ SOS button; 1F198; -๐Ÿ†™ UP! button; 1F199; -๐Ÿ†š VS button; 1F19A; -๐Ÿˆ Japanese โ€œhereโ€ button; 1F201; -๐Ÿˆ‚๏ธ Japanese โ€œservice chargeโ€ button; 1F202 FE0F; -๐Ÿˆท๏ธ Japanese โ€œmonthly amountโ€ button; 1F237 FE0F; -๐Ÿˆถ Japanese โ€œnot free of chargeโ€ button; 1F236; -๐Ÿˆฏ Japanese โ€œreservedโ€ button; 1F22F; -๐Ÿ‰ Japanese โ€œbargainโ€ button; 1F250; -๐Ÿˆน Japanese โ€œdiscountโ€ button; 1F239; -๐Ÿˆš Japanese โ€œfree of chargeโ€ button; 1F21A; -๐Ÿˆฒ Japanese โ€œprohibitedโ€ button; 1F232; -๐Ÿ‰‘ Japanese โ€œacceptableโ€ button; 1F251; -๐Ÿˆธ Japanese โ€œapplicationโ€ button; 1F238; -๐Ÿˆด Japanese โ€œpassing gradeโ€ button; 1F234; -๐Ÿˆณ Japanese โ€œvacancyโ€ button; 1F233; -ใŠ—๏ธ Japanese โ€œcongratulationsโ€ button; 3297 FE0F; -ใŠ™๏ธ Japanese โ€œsecretโ€ button; 3299 FE0F; -๐Ÿˆบ Japanese โ€œopen for businessโ€ button; 1F23A; -๐Ÿˆต Japanese โ€œno vacancyโ€ button; 1F235; -๐Ÿ”ด red circle; 1F534; -๐ŸŸ  orange circle; 1F7E0; -๐ŸŸก yellow circle; 1F7E1; -๐ŸŸข green circle; 1F7E2; -๐Ÿ”ต blue circle; 1F535; -๐ŸŸฃ purple circle; 1F7E3; -๐ŸŸค brown circle; 1F7E4; -โšซ black circle; 26AB; -โšช white circle; 26AA; -๐ŸŸฅ red square; 1F7E5; -๐ŸŸง orange square; 1F7E7; -๐ŸŸจ yellow square; 1F7E8; -๐ŸŸฉ green square; 1F7E9; -๐ŸŸฆ blue square; 1F7E6; -๐ŸŸช purple square; 1F7EA; -๐ŸŸซ brown square; 1F7EB; -โฌ› black large square; 2B1B; -โฌœ white large square; 2B1C; -โ—ผ๏ธ black medium square; 25FC FE0F; -โ—ป๏ธ white medium square; 25FB FE0F; -โ—พ black medium-small square; 25FE; -โ—ฝ white medium-small square; 25FD; -โ–ช๏ธ black small square; 25AA FE0F; -โ–ซ๏ธ white small square; 25AB FE0F; -๐Ÿ”ถ large orange diamond; 1F536; -๐Ÿ”ท large blue diamond; 1F537; -๐Ÿ”ธ small orange diamond; 1F538; -๐Ÿ”น small blue diamond; 1F539; -๐Ÿ”บ red triangle pointed up; 1F53A; -๐Ÿ”ป red triangle pointed down; 1F53B; -๐Ÿ’  diamond with a dot; 1F4A0; -๐Ÿ”˜ radio button; 1F518; -๐Ÿ”ณ white square button; 1F533; -๐Ÿ”ฒ black square button; 1F532; -๐Ÿ chequered flag; 1F3C1; -๐Ÿšฉ triangular flag; 1F6A9; -๐ŸŽŒ crossed flags; 1F38C; -๐Ÿด black flag; 1F3F4; -๐Ÿณ๏ธ white flag; 1F3F3 FE0F; -๐Ÿ‡ฆ๐Ÿ‡จ flag: Ascension Island; 1F1E6 1F1E8; -๐Ÿ‡ฆ๐Ÿ‡ฉ flag: Andorra; 1F1E6 1F1E9; -๐Ÿ‡ฆ๐Ÿ‡ช flag: United Arab Emirates; 1F1E6 1F1EA; -๐Ÿ‡ฆ๐Ÿ‡ซ flag: Afghanistan; 1F1E6 1F1EB; -๐Ÿ‡ฆ๐Ÿ‡ฌ flag: Antigua & Barbuda; 1F1E6 1F1EC; -๐Ÿ‡ฆ๐Ÿ‡ฎ flag: Anguilla; 1F1E6 1F1EE; -๐Ÿ‡ฆ๐Ÿ‡ฑ flag: Albania; 1F1E6 1F1F1; -๐Ÿ‡ฆ๐Ÿ‡ฒ flag: Armenia; 1F1E6 1F1F2; -๐Ÿ‡ฆ๐Ÿ‡ด flag: Angola; 1F1E6 1F1F4; -๐Ÿ‡ฆ๐Ÿ‡ถ flag: Antarctica; 1F1E6 1F1F6; -๐Ÿ‡ฆ๐Ÿ‡ท flag: Argentina; 1F1E6 1F1F7; -๐Ÿ‡ฆ๐Ÿ‡ธ flag: American Samoa; 1F1E6 1F1F8; -๐Ÿ‡ฆ๐Ÿ‡น flag: Austria; 1F1E6 1F1F9; -๐Ÿ‡ฆ๐Ÿ‡บ flag: Australia; 1F1E6 1F1FA; -๐Ÿ‡ฆ๐Ÿ‡ผ flag: Aruba; 1F1E6 1F1FC; -๐Ÿ‡ฆ๐Ÿ‡ฝ flag: ร…land Islands; 1F1E6 1F1FD; -๐Ÿ‡ฆ๐Ÿ‡ฟ flag: Azerbaijan; 1F1E6 1F1FF; -๐Ÿ‡ง๐Ÿ‡ฆ flag: Bosnia & Herzegovina; 1F1E7 1F1E6; -๐Ÿ‡ง๐Ÿ‡ง flag: Barbados; 1F1E7 1F1E7; -๐Ÿ‡ง๐Ÿ‡ฉ flag: Bangladesh; 1F1E7 1F1E9; -๐Ÿ‡ง๐Ÿ‡ช flag: Belgium; 1F1E7 1F1EA; -๐Ÿ‡ง๐Ÿ‡ซ flag: Burkina Faso; 1F1E7 1F1EB; -๐Ÿ‡ง๐Ÿ‡ฌ flag: Bulgaria; 1F1E7 1F1EC; -๐Ÿ‡ง๐Ÿ‡ญ flag: Bahrain; 1F1E7 1F1ED; -๐Ÿ‡ง๐Ÿ‡ฎ flag: Burundi; 1F1E7 1F1EE; -๐Ÿ‡ง๐Ÿ‡ฏ flag: Benin; 1F1E7 1F1EF; -๐Ÿ‡ง๐Ÿ‡ฑ flag: St. Barthรฉlemy; 1F1E7 1F1F1; -๐Ÿ‡ง๐Ÿ‡ฒ flag: Bermuda; 1F1E7 1F1F2; -๐Ÿ‡ง๐Ÿ‡ณ flag: Brunei; 1F1E7 1F1F3; -๐Ÿ‡ง๐Ÿ‡ด flag: Bolivia; 1F1E7 1F1F4; -๐Ÿ‡ง๐Ÿ‡ถ flag: Caribbean Netherlands; 1F1E7 1F1F6; -๐Ÿ‡ง๐Ÿ‡ท flag: Brazil; 1F1E7 1F1F7; -๐Ÿ‡ง๐Ÿ‡ธ flag: Bahamas; 1F1E7 1F1F8; -๐Ÿ‡ง๐Ÿ‡น flag: Bhutan; 1F1E7 1F1F9; -๐Ÿ‡ง๐Ÿ‡ป flag: Bouvet Island; 1F1E7 1F1FB; -๐Ÿ‡ง๐Ÿ‡ผ flag: Botswana; 1F1E7 1F1FC; -๐Ÿ‡ง๐Ÿ‡พ flag: Belarus; 1F1E7 1F1FE; -๐Ÿ‡ง๐Ÿ‡ฟ flag: Belize; 1F1E7 1F1FF; -๐Ÿ‡จ๐Ÿ‡ฆ flag: Canada; 1F1E8 1F1E6; -๐Ÿ‡จ๐Ÿ‡จ flag: Cocos (Keeling) Islands; 1F1E8 1F1E8; -๐Ÿ‡จ๐Ÿ‡ฉ flag: Congo - Kinshasa; 1F1E8 1F1E9; -๐Ÿ‡จ๐Ÿ‡ซ flag: Central African Republic; 1F1E8 1F1EB; -๐Ÿ‡จ๐Ÿ‡ฌ flag: Congo - Brazzaville; 1F1E8 1F1EC; -๐Ÿ‡จ๐Ÿ‡ญ flag: Switzerland; 1F1E8 1F1ED; -๐Ÿ‡จ๐Ÿ‡ฎ flag: Cรดte dโ€™Ivoire; 1F1E8 1F1EE; -๐Ÿ‡จ๐Ÿ‡ฐ flag: Cook Islands; 1F1E8 1F1F0; -๐Ÿ‡จ๐Ÿ‡ฑ flag: Chile; 1F1E8 1F1F1; -๐Ÿ‡จ๐Ÿ‡ฒ flag: Cameroon; 1F1E8 1F1F2; -๐Ÿ‡จ๐Ÿ‡ณ flag: China; 1F1E8 1F1F3; -๐Ÿ‡จ๐Ÿ‡ด flag: Colombia; 1F1E8 1F1F4; -๐Ÿ‡จ๐Ÿ‡ต flag: Clipperton Island; 1F1E8 1F1F5; -๐Ÿ‡จ๐Ÿ‡ท flag: Costa Rica; 1F1E8 1F1F7; -๐Ÿ‡จ๐Ÿ‡บ flag: Cuba; 1F1E8 1F1FA; -๐Ÿ‡จ๐Ÿ‡ป flag: Cape Verde; 1F1E8 1F1FB; -๐Ÿ‡จ๐Ÿ‡ผ flag: Curaรงao; 1F1E8 1F1FC; -๐Ÿ‡จ๐Ÿ‡ฝ flag: Christmas Island; 1F1E8 1F1FD; -๐Ÿ‡จ๐Ÿ‡พ flag: Cyprus; 1F1E8 1F1FE; -๐Ÿ‡จ๐Ÿ‡ฟ flag: Czechia; 1F1E8 1F1FF; -๐Ÿ‡ฉ๐Ÿ‡ช flag: Germany; 1F1E9 1F1EA; -๐Ÿ‡ฉ๐Ÿ‡ฌ flag: Diego Garcia; 1F1E9 1F1EC; -๐Ÿ‡ฉ๐Ÿ‡ฏ flag: Djibouti; 1F1E9 1F1EF; -๐Ÿ‡ฉ๐Ÿ‡ฐ flag: Denmark; 1F1E9 1F1F0; -๐Ÿ‡ฉ๐Ÿ‡ฒ flag: Dominica; 1F1E9 1F1F2; -๐Ÿ‡ฉ๐Ÿ‡ด flag: Dominican Republic; 1F1E9 1F1F4; -๐Ÿ‡ฉ๐Ÿ‡ฟ flag: Algeria; 1F1E9 1F1FF; -๐Ÿ‡ช๐Ÿ‡ฆ flag: Ceuta & Melilla; 1F1EA 1F1E6; -๐Ÿ‡ช๐Ÿ‡จ flag: Ecuador; 1F1EA 1F1E8; -๐Ÿ‡ช๐Ÿ‡ช flag: Estonia; 1F1EA 1F1EA; -๐Ÿ‡ช๐Ÿ‡ฌ flag: Egypt; 1F1EA 1F1EC; -๐Ÿ‡ช๐Ÿ‡ญ flag: Western Sahara; 1F1EA 1F1ED; -๐Ÿ‡ช๐Ÿ‡ท flag: Eritrea; 1F1EA 1F1F7; -๐Ÿ‡ช๐Ÿ‡ธ flag: Spain; 1F1EA 1F1F8; -๐Ÿ‡ช๐Ÿ‡น flag: Ethiopia; 1F1EA 1F1F9; -๐Ÿ‡ช๐Ÿ‡บ flag: European Union; 1F1EA 1F1FA; -๐Ÿ‡ซ๐Ÿ‡ฎ flag: Finland; 1F1EB 1F1EE; -๐Ÿ‡ซ๐Ÿ‡ฏ flag: Fiji; 1F1EB 1F1EF; -๐Ÿ‡ซ๐Ÿ‡ฐ flag: Falkland Islands; 1F1EB 1F1F0; -๐Ÿ‡ซ๐Ÿ‡ฒ flag: Micronesia; 1F1EB 1F1F2; -๐Ÿ‡ซ๐Ÿ‡ด flag: Faroe Islands; 1F1EB 1F1F4; -๐Ÿ‡ซ๐Ÿ‡ท flag: France; 1F1EB 1F1F7; -๐Ÿ‡ฌ๐Ÿ‡ฆ flag: Gabon; 1F1EC 1F1E6; -๐Ÿ‡ฌ๐Ÿ‡ง flag: United Kingdom; 1F1EC 1F1E7; -๐Ÿ‡ฌ๐Ÿ‡ฉ flag: Grenada; 1F1EC 1F1E9; -๐Ÿ‡ฌ๐Ÿ‡ช flag: Georgia; 1F1EC 1F1EA; -๐Ÿ‡ฌ๐Ÿ‡ซ flag: French Guiana; 1F1EC 1F1EB; -๐Ÿ‡ฌ๐Ÿ‡ฌ flag: Guernsey; 1F1EC 1F1EC; -๐Ÿ‡ฌ๐Ÿ‡ญ flag: Ghana; 1F1EC 1F1ED; -๐Ÿ‡ฌ๐Ÿ‡ฎ flag: Gibraltar; 1F1EC 1F1EE; -๐Ÿ‡ฌ๐Ÿ‡ฑ flag: Greenland; 1F1EC 1F1F1; -๐Ÿ‡ฌ๐Ÿ‡ฒ flag: Gambia; 1F1EC 1F1F2; -๐Ÿ‡ฌ๐Ÿ‡ณ flag: Guinea; 1F1EC 1F1F3; -๐Ÿ‡ฌ๐Ÿ‡ต flag: Guadeloupe; 1F1EC 1F1F5; -๐Ÿ‡ฌ๐Ÿ‡ถ flag: Equatorial Guinea; 1F1EC 1F1F6; -๐Ÿ‡ฌ๐Ÿ‡ท flag: Greece; 1F1EC 1F1F7; -๐Ÿ‡ฌ๐Ÿ‡ธ flag: South Georgia & South Sandwich Islands; 1F1EC 1F1F8; -๐Ÿ‡ฌ๐Ÿ‡น flag: Guatemala; 1F1EC 1F1F9; -๐Ÿ‡ฌ๐Ÿ‡บ flag: Guam; 1F1EC 1F1FA; -๐Ÿ‡ฌ๐Ÿ‡ผ flag: Guinea-Bissau; 1F1EC 1F1FC; -๐Ÿ‡ฌ๐Ÿ‡พ flag: Guyana; 1F1EC 1F1FE; -๐Ÿ‡ญ๐Ÿ‡ฐ flag: Hong Kong SAR China; 1F1ED 1F1F0; -๐Ÿ‡ญ๐Ÿ‡ฒ flag: Heard & McDonald Islands; 1F1ED 1F1F2; -๐Ÿ‡ญ๐Ÿ‡ณ flag: Honduras; 1F1ED 1F1F3; -๐Ÿ‡ญ๐Ÿ‡ท flag: Croatia; 1F1ED 1F1F7; -๐Ÿ‡ญ๐Ÿ‡น flag: Haiti; 1F1ED 1F1F9; -๐Ÿ‡ญ๐Ÿ‡บ flag: Hungary; 1F1ED 1F1FA; -๐Ÿ‡ฎ๐Ÿ‡จ flag: Canary Islands; 1F1EE 1F1E8; -๐Ÿ‡ฎ๐Ÿ‡ฉ flag: Indonesia; 1F1EE 1F1E9; -๐Ÿ‡ฎ๐Ÿ‡ช flag: Ireland; 1F1EE 1F1EA; -๐Ÿ‡ฎ๐Ÿ‡ฑ flag: Israel; 1F1EE 1F1F1; -๐Ÿ‡ฎ๐Ÿ‡ฒ flag: Isle of Man; 1F1EE 1F1F2; -๐Ÿ‡ฎ๐Ÿ‡ณ flag: India; 1F1EE 1F1F3; -๐Ÿ‡ฎ๐Ÿ‡ด flag: British Indian Ocean Territory; 1F1EE 1F1F4; -๐Ÿ‡ฎ๐Ÿ‡ถ flag: Iraq; 1F1EE 1F1F6; -๐Ÿ‡ฎ๐Ÿ‡ท flag: Iran; 1F1EE 1F1F7; -๐Ÿ‡ฎ๐Ÿ‡ธ flag: Iceland; 1F1EE 1F1F8; -๐Ÿ‡ฎ๐Ÿ‡น flag: Italy; 1F1EE 1F1F9; -๐Ÿ‡ฏ๐Ÿ‡ช flag: Jersey; 1F1EF 1F1EA; -๐Ÿ‡ฏ๐Ÿ‡ฒ flag: Jamaica; 1F1EF 1F1F2; -๐Ÿ‡ฏ๐Ÿ‡ด flag: Jordan; 1F1EF 1F1F4; -๐Ÿ‡ฏ๐Ÿ‡ต flag: Japan; 1F1EF 1F1F5; -๐Ÿ‡ฐ๐Ÿ‡ช flag: Kenya; 1F1F0 1F1EA; -๐Ÿ‡ฐ๐Ÿ‡ฌ flag: Kyrgyzstan; 1F1F0 1F1EC; -๐Ÿ‡ฐ๐Ÿ‡ญ flag: Cambodia; 1F1F0 1F1ED; -๐Ÿ‡ฐ๐Ÿ‡ฎ flag: Kiribati; 1F1F0 1F1EE; -๐Ÿ‡ฐ๐Ÿ‡ฒ flag: Comoros; 1F1F0 1F1F2; -๐Ÿ‡ฐ๐Ÿ‡ณ flag: St. Kitts & Nevis; 1F1F0 1F1F3; -๐Ÿ‡ฐ๐Ÿ‡ต flag: North Korea; 1F1F0 1F1F5; -๐Ÿ‡ฐ๐Ÿ‡ท flag: South Korea; 1F1F0 1F1F7; -๐Ÿ‡ฐ๐Ÿ‡ผ flag: Kuwait; 1F1F0 1F1FC; -๐Ÿ‡ฐ๐Ÿ‡พ flag: Cayman Islands; 1F1F0 1F1FE; -๐Ÿ‡ฐ๐Ÿ‡ฟ flag: Kazakhstan; 1F1F0 1F1FF; -๐Ÿ‡ฑ๐Ÿ‡ฆ flag: Laos; 1F1F1 1F1E6; -๐Ÿ‡ฑ๐Ÿ‡ง flag: Lebanon; 1F1F1 1F1E7; -๐Ÿ‡ฑ๐Ÿ‡จ flag: St. Lucia; 1F1F1 1F1E8; -๐Ÿ‡ฑ๐Ÿ‡ฎ flag: Liechtenstein; 1F1F1 1F1EE; -๐Ÿ‡ฑ๐Ÿ‡ฐ flag: Sri Lanka; 1F1F1 1F1F0; -๐Ÿ‡ฑ๐Ÿ‡ท flag: Liberia; 1F1F1 1F1F7; -๐Ÿ‡ฑ๐Ÿ‡ธ flag: Lesotho; 1F1F1 1F1F8; -๐Ÿ‡ฑ๐Ÿ‡น flag: Lithuania; 1F1F1 1F1F9; -๐Ÿ‡ฑ๐Ÿ‡บ flag: Luxembourg; 1F1F1 1F1FA; -๐Ÿ‡ฑ๐Ÿ‡ป flag: Latvia; 1F1F1 1F1FB; -๐Ÿ‡ฑ๐Ÿ‡พ flag: Libya; 1F1F1 1F1FE; -๐Ÿ‡ฒ๐Ÿ‡ฆ flag: Morocco; 1F1F2 1F1E6; -๐Ÿ‡ฒ๐Ÿ‡จ flag: Monaco; 1F1F2 1F1E8; -๐Ÿ‡ฒ๐Ÿ‡ฉ flag: Moldova; 1F1F2 1F1E9; -๐Ÿ‡ฒ๐Ÿ‡ช flag: Montenegro; 1F1F2 1F1EA; -๐Ÿ‡ฒ๐Ÿ‡ซ flag: St. Martin; 1F1F2 1F1EB; -๐Ÿ‡ฒ๐Ÿ‡ฌ flag: Madagascar; 1F1F2 1F1EC; -๐Ÿ‡ฒ๐Ÿ‡ญ flag: Marshall Islands; 1F1F2 1F1ED; -๐Ÿ‡ฒ๐Ÿ‡ฐ flag: North Macedonia; 1F1F2 1F1F0; -๐Ÿ‡ฒ๐Ÿ‡ฑ flag: Mali; 1F1F2 1F1F1; -๐Ÿ‡ฒ๐Ÿ‡ฒ flag: Myanmar (Burma); 1F1F2 1F1F2; -๐Ÿ‡ฒ๐Ÿ‡ณ flag: Mongolia; 1F1F2 1F1F3; -๐Ÿ‡ฒ๐Ÿ‡ด flag: Macao SAR China; 1F1F2 1F1F4; -๐Ÿ‡ฒ๐Ÿ‡ต flag: Northern Mariana Islands; 1F1F2 1F1F5; -๐Ÿ‡ฒ๐Ÿ‡ถ flag: Martinique; 1F1F2 1F1F6; -๐Ÿ‡ฒ๐Ÿ‡ท flag: Mauritania; 1F1F2 1F1F7; -๐Ÿ‡ฒ๐Ÿ‡ธ flag: Montserrat; 1F1F2 1F1F8; -๐Ÿ‡ฒ๐Ÿ‡น flag: Malta; 1F1F2 1F1F9; -๐Ÿ‡ฒ๐Ÿ‡บ flag: Mauritius; 1F1F2 1F1FA; -๐Ÿ‡ฒ๐Ÿ‡ป flag: Maldives; 1F1F2 1F1FB; -๐Ÿ‡ฒ๐Ÿ‡ผ flag: Malawi; 1F1F2 1F1FC; -๐Ÿ‡ฒ๐Ÿ‡ฝ flag: Mexico; 1F1F2 1F1FD; -๐Ÿ‡ฒ๐Ÿ‡พ flag: Malaysia; 1F1F2 1F1FE; -๐Ÿ‡ฒ๐Ÿ‡ฟ flag: Mozambique; 1F1F2 1F1FF; -๐Ÿ‡ณ๐Ÿ‡ฆ flag: Namibia; 1F1F3 1F1E6; -๐Ÿ‡ณ๐Ÿ‡จ flag: New Caledonia; 1F1F3 1F1E8; -๐Ÿ‡ณ๐Ÿ‡ช flag: Niger; 1F1F3 1F1EA; -๐Ÿ‡ณ๐Ÿ‡ซ flag: Norfolk Island; 1F1F3 1F1EB; -๐Ÿ‡ณ๐Ÿ‡ฌ flag: Nigeria; 1F1F3 1F1EC; -๐Ÿ‡ณ๐Ÿ‡ฎ flag: Nicaragua; 1F1F3 1F1EE; -๐Ÿ‡ณ๐Ÿ‡ฑ flag: Netherlands; 1F1F3 1F1F1; -๐Ÿ‡ณ๐Ÿ‡ด flag: Norway; 1F1F3 1F1F4; -๐Ÿ‡ณ๐Ÿ‡ต flag: Nepal; 1F1F3 1F1F5; -๐Ÿ‡ณ๐Ÿ‡ท flag: Nauru; 1F1F3 1F1F7; -๐Ÿ‡ณ๐Ÿ‡บ flag: Niue; 1F1F3 1F1FA; -๐Ÿ‡ณ๐Ÿ‡ฟ flag: New Zealand; 1F1F3 1F1FF; -๐Ÿ‡ด๐Ÿ‡ฒ flag: Oman; 1F1F4 1F1F2; -๐Ÿ‡ต๐Ÿ‡ฆ flag: Panama; 1F1F5 1F1E6; -๐Ÿ‡ต๐Ÿ‡ช flag: Peru; 1F1F5 1F1EA; -๐Ÿ‡ต๐Ÿ‡ซ flag: French Polynesia; 1F1F5 1F1EB; -๐Ÿ‡ต๐Ÿ‡ฌ flag: Papua New Guinea; 1F1F5 1F1EC; -๐Ÿ‡ต๐Ÿ‡ญ flag: Philippines; 1F1F5 1F1ED; -๐Ÿ‡ต๐Ÿ‡ฐ flag: Pakistan; 1F1F5 1F1F0; -๐Ÿ‡ต๐Ÿ‡ฑ flag: Poland; 1F1F5 1F1F1; -๐Ÿ‡ต๐Ÿ‡ฒ flag: St. Pierre & Miquelon; 1F1F5 1F1F2; -๐Ÿ‡ต๐Ÿ‡ณ flag: Pitcairn Islands; 1F1F5 1F1F3; -๐Ÿ‡ต๐Ÿ‡ท flag: Puerto Rico; 1F1F5 1F1F7; -๐Ÿ‡ต๐Ÿ‡ธ flag: Palestinian Territories; 1F1F5 1F1F8; -๐Ÿ‡ต๐Ÿ‡น flag: Portugal; 1F1F5 1F1F9; -๐Ÿ‡ต๐Ÿ‡ผ flag: Palau; 1F1F5 1F1FC; -๐Ÿ‡ต๐Ÿ‡พ flag: Paraguay; 1F1F5 1F1FE; -๐Ÿ‡ถ๐Ÿ‡ฆ flag: Qatar; 1F1F6 1F1E6; -๐Ÿ‡ท๐Ÿ‡ช flag: Rรฉunion; 1F1F7 1F1EA; -๐Ÿ‡ท๐Ÿ‡ด flag: Romania; 1F1F7 1F1F4; -๐Ÿ‡ท๐Ÿ‡ธ flag: Serbia; 1F1F7 1F1F8; -๐Ÿ‡ท๐Ÿ‡บ flag: Russia; 1F1F7 1F1FA; -๐Ÿ‡ท๐Ÿ‡ผ flag: Rwanda; 1F1F7 1F1FC; -๐Ÿ‡ธ๐Ÿ‡ฆ flag: Saudi Arabia; 1F1F8 1F1E6; -๐Ÿ‡ธ๐Ÿ‡ง flag: Solomon Islands; 1F1F8 1F1E7; -๐Ÿ‡ธ๐Ÿ‡จ flag: Seychelles; 1F1F8 1F1E8; -๐Ÿ‡ธ๐Ÿ‡ฉ flag: Sudan; 1F1F8 1F1E9; -๐Ÿ‡ธ๐Ÿ‡ช flag: Sweden; 1F1F8 1F1EA; -๐Ÿ‡ธ๐Ÿ‡ฌ flag: Singapore; 1F1F8 1F1EC; -๐Ÿ‡ธ๐Ÿ‡ญ flag: St. Helena; 1F1F8 1F1ED; -๐Ÿ‡ธ๐Ÿ‡ฎ flag: Slovenia; 1F1F8 1F1EE; -๐Ÿ‡ธ๐Ÿ‡ฏ flag: Svalbard & Jan Mayen; 1F1F8 1F1EF; -๐Ÿ‡ธ๐Ÿ‡ฐ flag: Slovakia; 1F1F8 1F1F0; -๐Ÿ‡ธ๐Ÿ‡ฑ flag: Sierra Leone; 1F1F8 1F1F1; -๐Ÿ‡ธ๐Ÿ‡ฒ flag: San Marino; 1F1F8 1F1F2; -๐Ÿ‡ธ๐Ÿ‡ณ flag: Senegal; 1F1F8 1F1F3; -๐Ÿ‡ธ๐Ÿ‡ด flag: Somalia; 1F1F8 1F1F4; -๐Ÿ‡ธ๐Ÿ‡ท flag: Suriname; 1F1F8 1F1F7; -๐Ÿ‡ธ๐Ÿ‡ธ flag: South Sudan; 1F1F8 1F1F8; -๐Ÿ‡ธ๐Ÿ‡น flag: Sรฃo Tomรฉ & Prรญncipe; 1F1F8 1F1F9; -๐Ÿ‡ธ๐Ÿ‡ป flag: El Salvador; 1F1F8 1F1FB; -๐Ÿ‡ธ๐Ÿ‡ฝ flag: Sint Maarten; 1F1F8 1F1FD; -๐Ÿ‡ธ๐Ÿ‡พ flag: Syria; 1F1F8 1F1FE; -๐Ÿ‡ธ๐Ÿ‡ฟ flag: Eswatini; 1F1F8 1F1FF; -๐Ÿ‡น๐Ÿ‡ฆ flag: Tristan da Cunha; 1F1F9 1F1E6; -๐Ÿ‡น๐Ÿ‡จ flag: Turks & Caicos Islands; 1F1F9 1F1E8; -๐Ÿ‡น๐Ÿ‡ฉ flag: Chad; 1F1F9 1F1E9; -๐Ÿ‡น๐Ÿ‡ซ flag: French Southern Territories; 1F1F9 1F1EB; -๐Ÿ‡น๐Ÿ‡ฌ flag: Togo; 1F1F9 1F1EC; -๐Ÿ‡น๐Ÿ‡ญ flag: Thailand; 1F1F9 1F1ED; -๐Ÿ‡น๐Ÿ‡ฏ flag: Tajikistan; 1F1F9 1F1EF; -๐Ÿ‡น๐Ÿ‡ฐ flag: Tokelau; 1F1F9 1F1F0; -๐Ÿ‡น๐Ÿ‡ฑ flag: Timor-Leste; 1F1F9 1F1F1; -๐Ÿ‡น๐Ÿ‡ฒ flag: Turkmenistan; 1F1F9 1F1F2; -๐Ÿ‡น๐Ÿ‡ณ flag: Tunisia; 1F1F9 1F1F3; -๐Ÿ‡น๐Ÿ‡ด flag: Tonga; 1F1F9 1F1F4; -๐Ÿ‡น๐Ÿ‡ท flag: Turkey; 1F1F9 1F1F7; -๐Ÿ‡น๐Ÿ‡น flag: Trinidad & Tobago; 1F1F9 1F1F9; -๐Ÿ‡น๐Ÿ‡ป flag: Tuvalu; 1F1F9 1F1FB; -๐Ÿ‡น๐Ÿ‡ผ flag: Taiwan; 1F1F9 1F1FC; -๐Ÿ‡น๐Ÿ‡ฟ flag: Tanzania; 1F1F9 1F1FF; -๐Ÿ‡บ๐Ÿ‡ฆ flag: Ukraine; 1F1FA 1F1E6; -๐Ÿ‡บ๐Ÿ‡ฌ flag: Uganda; 1F1FA 1F1EC; -๐Ÿ‡บ๐Ÿ‡ฒ flag: U.S. Outlying Islands; 1F1FA 1F1F2; -๐Ÿ‡บ๐Ÿ‡ณ flag: United Nations; 1F1FA 1F1F3; -๐Ÿ‡บ๐Ÿ‡ธ flag: United States; 1F1FA 1F1F8; -๐Ÿ‡บ๐Ÿ‡พ flag: Uruguay; 1F1FA 1F1FE; -๐Ÿ‡บ๐Ÿ‡ฟ flag: Uzbekistan; 1F1FA 1F1FF; -๐Ÿ‡ป๐Ÿ‡ฆ flag: Vatican City; 1F1FB 1F1E6; -๐Ÿ‡ป๐Ÿ‡จ flag: St. Vincent & Grenadines; 1F1FB 1F1E8; -๐Ÿ‡ป๐Ÿ‡ช flag: Venezuela; 1F1FB 1F1EA; -๐Ÿ‡ป๐Ÿ‡ฌ flag: British Virgin Islands; 1F1FB 1F1EC; -๐Ÿ‡ป๐Ÿ‡ฎ flag: U.S. Virgin Islands; 1F1FB 1F1EE; -๐Ÿ‡ป๐Ÿ‡ณ flag: Vietnam; 1F1FB 1F1F3; -๐Ÿ‡ป๐Ÿ‡บ flag: Vanuatu; 1F1FB 1F1FA; -๐Ÿ‡ผ๐Ÿ‡ซ flag: Wallis & Futuna; 1F1FC 1F1EB; -๐Ÿ‡ผ๐Ÿ‡ธ flag: Samoa; 1F1FC 1F1F8; -๐Ÿ‡ฝ๐Ÿ‡ฐ flag: Kosovo; 1F1FD 1F1F0; -๐Ÿ‡พ๐Ÿ‡ช flag: Yemen; 1F1FE 1F1EA; -๐Ÿ‡พ๐Ÿ‡น flag: Mayotte; 1F1FE 1F1F9; -๐Ÿ‡ฟ๐Ÿ‡ฆ flag: South Africa; 1F1FF 1F1E6; -๐Ÿ‡ฟ๐Ÿ‡ฒ flag: Zambia; 1F1FF 1F1F2; -๐Ÿ‡ฟ๐Ÿ‡ผ flag: Zimbabwe; 1F1FF 1F1FC; -๐Ÿด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ flag: England; 1F3F4725E7F; -๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ flag: Scotland; 1F3F472334F; -๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ flag: Wales; 1F3F4727C3F; diff --git a/user_config/usr/share/mouse-keyboard/emoji.json b/user_config/usr/share/mouse-keyboard/emoji.json new file mode 100644 index 0000000..5cd0d26 --- /dev/null +++ b/user_config/usr/share/mouse-keyboard/emoji.json @@ -0,0 +1,23215 @@ +[ + { + "emoji": "๐Ÿ˜€" + , "description": "grinning face" + , "category": "Smileys & Emotion" + , "aliases": [ + "grinning" + ] + , "tags": [ + "smile" + , "happy" + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ƒ" + , "description": "grinning face with big eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "smiley" + ] + , "tags": [ + "happy" + , "joy" + , "haha" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜„" + , "description": "grinning face with smiling eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "smile" + ] + , "tags": [ + "happy" + , "joy" + , "laugh" + , "pleased" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜" + , "description": "beaming face with smiling eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "grin" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜†" + , "description": "grinning squinting face" + , "category": "Smileys & Emotion" + , "aliases": [ + "laughing" + , "satisfied" + ] + , "tags": [ + "happy" + , "haha" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜…" + , "description": "grinning face with sweat" + , "category": "Smileys & Emotion" + , "aliases": [ + "sweat_smile" + ] + , "tags": [ + "hot" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿคฃ" + , "description": "rolling on the floor laughing" + , "category": "Smileys & Emotion" + , "aliases": [ + "rofl" + ] + , "tags": [ + "lol" + , "laughing" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿ˜‚" + , "description": "face with tears of joy" + , "category": "Smileys & Emotion" + , "aliases": [ + "joy" + ] + , "tags": [ + "tears" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ™‚" + , "description": "slightly smiling face" + , "category": "Smileys & Emotion" + , "aliases": [ + "slightly_smiling_face" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ™ƒ" + , "description": "upside-down face" + , "category": "Smileys & Emotion" + , "aliases": [ + "upside_down_face" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿซ " + , "description": "melting face" + , "category": "Smileys & Emotion" + , "aliases": [ + "melting_face" + ] + , "tags": [ + "sarcasm" + , "dread" + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿ˜‰" + , "description": "winking face" + , "category": "Smileys & Emotion" + , "aliases": [ + "wink" + ] + , "tags": [ + "flirt" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜Š" + , "description": "smiling face with smiling eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "blush" + ] + , "tags": [ + "proud" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜‡" + , "description": "smiling face with halo" + , "category": "Smileys & Emotion" + , "aliases": [ + "innocent" + ] + , "tags": [ + "angel" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅฐ" + , "description": "smiling face with hearts" + , "category": "Smileys & Emotion" + , "aliases": [ + "smiling_face_with_three_hearts" + ] + , "tags": [ + "love" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ˜" + , "description": "smiling face with heart-eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "heart_eyes" + ] + , "tags": [ + "love" + , "crush" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿคฉ" + , "description": "star-struck" + , "category": "Smileys & Emotion" + , "aliases": [ + "star_struck" + ] + , "tags": [ + "eyes" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ˜˜" + , "description": "face blowing a kiss" + , "category": "Smileys & Emotion" + , "aliases": [ + "kissing_heart" + ] + , "tags": [ + "flirt" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜—" + , "description": "kissing face" + , "category": "Smileys & Emotion" + , "aliases": [ + "kissing" + ] + , "tags": [ + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "โ˜บ๏ธ" + , "description": "smiling face" + , "category": "Smileys & Emotion" + , "aliases": [ + "relaxed" + ] + , "tags": [ + "blush" + , "pleased" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜š" + , "description": "kissing face with closed eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "kissing_closed_eyes" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜™" + , "description": "kissing face with smiling eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "kissing_smiling_eyes" + ] + , "tags": [ + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅฒ" + , "description": "smiling face with tear" + , "category": "Smileys & Emotion" + , "aliases": [ + "smiling_face_with_tear" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿ˜‹" + , "description": "face savoring food" + , "category": "Smileys & Emotion" + , "aliases": [ + "yum" + ] + , "tags": [ + "tongue" + , "lick" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜›" + , "description": "face with tongue" + , "category": "Smileys & Emotion" + , "aliases": [ + "stuck_out_tongue" + ] + , "tags": [ + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜œ" + , "description": "winking face with tongue" + , "category": "Smileys & Emotion" + , "aliases": [ + "stuck_out_tongue_winking_eye" + ] + , "tags": [ + "prank" + , "silly" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿคช" + , "description": "zany face" + , "category": "Smileys & Emotion" + , "aliases": [ + "zany_face" + ] + , "tags": [ + "goofy" + , "wacky" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ˜" + , "description": "squinting face with tongue" + , "category": "Smileys & Emotion" + , "aliases": [ + "stuck_out_tongue_closed_eyes" + ] + , "tags": [ + "prank" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿค‘" + , "description": "money-mouth face" + , "category": "Smileys & Emotion" + , "aliases": [ + "money_mouth_face" + ] + , "tags": [ + "rich" + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿค—" + , "description": "smiling face with open hands" + , "category": "Smileys & Emotion" + , "aliases": [ + "hugs" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿคญ" + , "description": "face with hand over mouth" + , "category": "Smileys & Emotion" + , "aliases": [ + "hand_over_mouth" + ] + , "tags": [ + "quiet" + , "whoops" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿซข" + , "description": "face with open eyes and hand over mouth" + , "category": "Smileys & Emotion" + , "aliases": [ + "face_with_open_eyes_and_hand_over_mouth" + ] + , "tags": [ + "gasp" + , "shock" + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿซฃ" + , "description": "face with peeking eye" + , "category": "Smileys & Emotion" + , "aliases": [ + "face_with_peeking_eye" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿคซ" + , "description": "shushing face" + , "category": "Smileys & Emotion" + , "aliases": [ + "shushing_face" + ] + , "tags": [ + "silence" + , "quiet" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿค”" + , "description": "thinking face" + , "category": "Smileys & Emotion" + , "aliases": [ + "thinking" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿซก" + , "description": "saluting face" + , "category": "Smileys & Emotion" + , "aliases": [ + "saluting_face" + ] + , "tags": [ + "respect" + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿค" + , "description": "zipper-mouth face" + , "category": "Smileys & Emotion" + , "aliases": [ + "zipper_mouth_face" + ] + , "tags": [ + "silence" + , "hush" + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿคจ" + , "description": "face with raised eyebrow" + , "category": "Smileys & Emotion" + , "aliases": [ + "raised_eyebrow" + ] + , "tags": [ + "suspicious" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ˜" + , "description": "neutral face" + , "category": "Smileys & Emotion" + , "aliases": [ + "neutral_face" + ] + , "tags": [ + "meh" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜‘" + , "description": "expressionless face" + , "category": "Smileys & Emotion" + , "aliases": [ + "expressionless" + ] + , "tags": [ + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ถ" + , "description": "face without mouth" + , "category": "Smileys & Emotion" + , "aliases": [ + "no_mouth" + ] + , "tags": [ + "mute" + , "silence" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿซฅ" + , "description": "dotted line face" + , "category": "Smileys & Emotion" + , "aliases": [ + "dotted_line_face" + ] + , "tags": [ + "invisible" + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿ˜ถโ€๐ŸŒซ๏ธ" + , "description": "face in clouds" + , "category": "Smileys & Emotion" + , "aliases": [ + "face_in_clouds" + ] + , "tags": [ + ] + , "unicode_version": "13.1" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿ˜" + , "description": "smirking face" + , "category": "Smileys & Emotion" + , "aliases": [ + "smirk" + ] + , "tags": [ + "smug" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜’" + , "description": "unamused face" + , "category": "Smileys & Emotion" + , "aliases": [ + "unamused" + ] + , "tags": [ + "meh" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ™„" + , "description": "face with rolling eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "roll_eyes" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ˜ฌ" + , "description": "grimacing face" + , "category": "Smileys & Emotion" + , "aliases": [ + "grimacing" + ] + , "tags": [ + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ฎโ€๐Ÿ’จ" + , "description": "face exhaling" + , "category": "Smileys & Emotion" + , "aliases": [ + "face_exhaling" + ] + , "tags": [ + ] + , "unicode_version": "13.1" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿคฅ" + , "description": "lying face" + , "category": "Smileys & Emotion" + , "aliases": [ + "lying_face" + ] + , "tags": [ + "liar" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿ˜Œ" + , "description": "relieved face" + , "category": "Smileys & Emotion" + , "aliases": [ + "relieved" + ] + , "tags": [ + "whew" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜”" + , "description": "pensive face" + , "category": "Smileys & Emotion" + , "aliases": [ + "pensive" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ช" + , "description": "sleepy face" + , "category": "Smileys & Emotion" + , "aliases": [ + "sleepy" + ] + , "tags": [ + "tired" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿคค" + , "description": "drooling face" + , "category": "Smileys & Emotion" + , "aliases": [ + "drooling_face" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿ˜ด" + , "description": "sleeping face" + , "category": "Smileys & Emotion" + , "aliases": [ + "sleeping" + ] + , "tags": [ + "zzz" + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ท" + , "description": "face with medical mask" + , "category": "Smileys & Emotion" + , "aliases": [ + "mask" + ] + , "tags": [ + "sick" + , "ill" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿค’" + , "description": "face with thermometer" + , "category": "Smileys & Emotion" + , "aliases": [ + "face_with_thermometer" + ] + , "tags": [ + "sick" + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿค•" + , "description": "face with head-bandage" + , "category": "Smileys & Emotion" + , "aliases": [ + "face_with_head_bandage" + ] + , "tags": [ + "hurt" + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿคข" + , "description": "nauseated face" + , "category": "Smileys & Emotion" + , "aliases": [ + "nauseated_face" + ] + , "tags": [ + "sick" + , "barf" + , "disgusted" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿคฎ" + , "description": "face vomiting" + , "category": "Smileys & Emotion" + , "aliases": [ + "vomiting_face" + ] + , "tags": [ + "barf" + , "sick" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿคง" + , "description": "sneezing face" + , "category": "Smileys & Emotion" + , "aliases": [ + "sneezing_face" + ] + , "tags": [ + "achoo" + , "sick" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฅต" + , "description": "hot face" + , "category": "Smileys & Emotion" + , "aliases": [ + "hot_face" + ] + , "tags": [ + "heat" + , "sweating" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฅถ" + , "description": "cold face" + , "category": "Smileys & Emotion" + , "aliases": [ + "cold_face" + ] + , "tags": [ + "freezing" + , "ice" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฅด" + , "description": "woozy face" + , "category": "Smileys & Emotion" + , "aliases": [ + "woozy_face" + ] + , "tags": [ + "groggy" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ˜ต" + , "description": "face with crossed-out eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "dizzy_face" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ตโ€๐Ÿ’ซ" + , "description": "face with spiral eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "face_with_spiral_eyes" + ] + , "tags": [ + ] + , "unicode_version": "13.1" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿคฏ" + , "description": "exploding head" + , "category": "Smileys & Emotion" + , "aliases": [ + "exploding_head" + ] + , "tags": [ + "mind" + , "blown" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿค " + , "description": "cowboy hat face" + , "category": "Smileys & Emotion" + , "aliases": [ + "cowboy_hat_face" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฅณ" + , "description": "partying face" + , "category": "Smileys & Emotion" + , "aliases": [ + "partying_face" + ] + , "tags": [ + "celebration" + , "birthday" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฅธ" + , "description": "disguised face" + , "category": "Smileys & Emotion" + , "aliases": [ + "disguised_face" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿ˜Ž" + , "description": "smiling face with sunglasses" + , "category": "Smileys & Emotion" + , "aliases": [ + "sunglasses" + ] + , "tags": [ + "cool" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿค“" + , "description": "nerd face" + , "category": "Smileys & Emotion" + , "aliases": [ + "nerd_face" + ] + , "tags": [ + "geek" + , "glasses" + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿง" + , "description": "face with monocle" + , "category": "Smileys & Emotion" + , "aliases": [ + "monocle_face" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ˜•" + , "description": "confused face" + , "category": "Smileys & Emotion" + , "aliases": [ + "confused" + ] + , "tags": [ + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿซค" + , "description": "face with diagonal mouth" + , "category": "Smileys & Emotion" + , "aliases": [ + "face_with_diagonal_mouth" + ] + , "tags": [ + "confused" + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿ˜Ÿ" + , "description": "worried face" + , "category": "Smileys & Emotion" + , "aliases": [ + "worried" + ] + , "tags": [ + "nervous" + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ™" + , "description": "slightly frowning face" + , "category": "Smileys & Emotion" + , "aliases": [ + "slightly_frowning_face" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "โ˜น๏ธ" + , "description": "frowning face" + , "category": "Smileys & Emotion" + , "aliases": [ + "frowning_face" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ˜ฎ" + , "description": "face with open mouth" + , "category": "Smileys & Emotion" + , "aliases": [ + "open_mouth" + ] + , "tags": [ + "surprise" + , "impressed" + , "wow" + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ฏ" + , "description": "hushed face" + , "category": "Smileys & Emotion" + , "aliases": [ + "hushed" + ] + , "tags": [ + "silence" + , "speechless" + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ฒ" + , "description": "astonished face" + , "category": "Smileys & Emotion" + , "aliases": [ + "astonished" + ] + , "tags": [ + "amazed" + , "gasp" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ณ" + , "description": "flushed face" + , "category": "Smileys & Emotion" + , "aliases": [ + "flushed" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅบ" + , "description": "pleading face" + , "category": "Smileys & Emotion" + , "aliases": [ + "pleading_face" + ] + , "tags": [ + "puppy" + , "eyes" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฅน" + , "description": "face holding back tears" + , "category": "Smileys & Emotion" + , "aliases": [ + "face_holding_back_tears" + ] + , "tags": [ + "tears" + , "gratitude" + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿ˜ฆ" + , "description": "frowning face with open mouth" + , "category": "Smileys & Emotion" + , "aliases": [ + "frowning" + ] + , "tags": [ + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ง" + , "description": "anguished face" + , "category": "Smileys & Emotion" + , "aliases": [ + "anguished" + ] + , "tags": [ + "stunned" + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜จ" + , "description": "fearful face" + , "category": "Smileys & Emotion" + , "aliases": [ + "fearful" + ] + , "tags": [ + "scared" + , "shocked" + , "oops" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ฐ" + , "description": "anxious face with sweat" + , "category": "Smileys & Emotion" + , "aliases": [ + "cold_sweat" + ] + , "tags": [ + "nervous" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ฅ" + , "description": "sad but relieved face" + , "category": "Smileys & Emotion" + , "aliases": [ + "disappointed_relieved" + ] + , "tags": [ + "phew" + , "sweat" + , "nervous" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ข" + , "description": "crying face" + , "category": "Smileys & Emotion" + , "aliases": [ + "cry" + ] + , "tags": [ + "sad" + , "tear" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ญ" + , "description": "loudly crying face" + , "category": "Smileys & Emotion" + , "aliases": [ + "sob" + ] + , "tags": [ + "sad" + , "cry" + , "bawling" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ฑ" + , "description": "face screaming in fear" + , "category": "Smileys & Emotion" + , "aliases": [ + "scream" + ] + , "tags": [ + "horror" + , "shocked" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜–" + , "description": "confounded face" + , "category": "Smileys & Emotion" + , "aliases": [ + "confounded" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ฃ" + , "description": "persevering face" + , "category": "Smileys & Emotion" + , "aliases": [ + "persevere" + ] + , "tags": [ + "struggling" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ž" + , "description": "disappointed face" + , "category": "Smileys & Emotion" + , "aliases": [ + "disappointed" + ] + , "tags": [ + "sad" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜“" + , "description": "downcast face with sweat" + , "category": "Smileys & Emotion" + , "aliases": [ + "sweat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ฉ" + , "description": "weary face" + , "category": "Smileys & Emotion" + , "aliases": [ + "weary" + ] + , "tags": [ + "tired" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ซ" + , "description": "tired face" + , "category": "Smileys & Emotion" + , "aliases": [ + "tired_face" + ] + , "tags": [ + "upset" + , "whine" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅฑ" + , "description": "yawning face" + , "category": "Smileys & Emotion" + , "aliases": [ + "yawning_face" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿ˜ค" + , "description": "face with steam from nose" + , "category": "Smileys & Emotion" + , "aliases": [ + "triumph" + ] + , "tags": [ + "smug" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ก" + , "description": "pouting face" + , "category": "Smileys & Emotion" + , "aliases": [ + "rage" + , "pout" + ] + , "tags": [ + "angry" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ " + , "description": "angry face" + , "category": "Smileys & Emotion" + , "aliases": [ + "angry" + ] + , "tags": [ + "mad" + , "annoyed" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿคฌ" + , "description": "face with symbols on mouth" + , "category": "Smileys & Emotion" + , "aliases": [ + "cursing_face" + ] + , "tags": [ + "foul" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ˜ˆ" + , "description": "smiling face with horns" + , "category": "Smileys & Emotion" + , "aliases": [ + "smiling_imp" + ] + , "tags": [ + "devil" + , "evil" + , "horns" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘ฟ" + , "description": "angry face with horns" + , "category": "Smileys & Emotion" + , "aliases": [ + "imp" + ] + , "tags": [ + "angry" + , "devil" + , "evil" + , "horns" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’€" + , "description": "skull" + , "category": "Smileys & Emotion" + , "aliases": [ + "skull" + ] + , "tags": [ + "dead" + , "danger" + , "poison" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ˜ ๏ธ" + , "description": "skull and crossbones" + , "category": "Smileys & Emotion" + , "aliases": [ + "skull_and_crossbones" + ] + , "tags": [ + "danger" + , "pirate" + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ’ฉ" + , "description": "pile of poo" + , "category": "Smileys & Emotion" + , "aliases": [ + "hankey" + , "poop" + , "shit" + ] + , "tags": [ + "crap" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿคก" + , "description": "clown face" + , "category": "Smileys & Emotion" + , "aliases": [ + "clown_face" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿ‘น" + , "description": "ogre" + , "category": "Smileys & Emotion" + , "aliases": [ + "japanese_ogre" + ] + , "tags": [ + "monster" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘บ" + , "description": "goblin" + , "category": "Smileys & Emotion" + , "aliases": [ + "japanese_goblin" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘ป" + , "description": "ghost" + , "category": "Smileys & Emotion" + , "aliases": [ + "ghost" + ] + , "tags": [ + "halloween" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘ฝ" + , "description": "alien" + , "category": "Smileys & Emotion" + , "aliases": [ + "alien" + ] + , "tags": [ + "ufo" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘พ" + , "description": "alien monster" + , "category": "Smileys & Emotion" + , "aliases": [ + "space_invader" + ] + , "tags": [ + "game" + , "retro" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿค–" + , "description": "robot" + , "category": "Smileys & Emotion" + , "aliases": [ + "robot" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ˜บ" + , "description": "grinning cat" + , "category": "Smileys & Emotion" + , "aliases": [ + "smiley_cat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ธ" + , "description": "grinning cat with smiling eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "smile_cat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜น" + , "description": "cat with tears of joy" + , "category": "Smileys & Emotion" + , "aliases": [ + "joy_cat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ป" + , "description": "smiling cat with heart-eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "heart_eyes_cat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ผ" + , "description": "cat with wry smile" + , "category": "Smileys & Emotion" + , "aliases": [ + "smirk_cat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ฝ" + , "description": "kissing cat" + , "category": "Smileys & Emotion" + , "aliases": [ + "kissing_cat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ™€" + , "description": "weary cat" + , "category": "Smileys & Emotion" + , "aliases": [ + "scream_cat" + ] + , "tags": [ + "horror" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜ฟ" + , "description": "crying cat" + , "category": "Smileys & Emotion" + , "aliases": [ + "crying_cat_face" + ] + , "tags": [ + "sad" + , "tear" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜พ" + , "description": "pouting cat" + , "category": "Smileys & Emotion" + , "aliases": [ + "pouting_cat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ™ˆ" + , "description": "see-no-evil monkey" + , "category": "Smileys & Emotion" + , "aliases": [ + "see_no_evil" + ] + , "tags": [ + "monkey" + , "blind" + , "ignore" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ™‰" + , "description": "hear-no-evil monkey" + , "category": "Smileys & Emotion" + , "aliases": [ + "hear_no_evil" + ] + , "tags": [ + "monkey" + , "deaf" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ™Š" + , "description": "speak-no-evil monkey" + , "category": "Smileys & Emotion" + , "aliases": [ + "speak_no_evil" + ] + , "tags": [ + "monkey" + , "mute" + , "hush" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’‹" + , "description": "kiss mark" + , "category": "Smileys & Emotion" + , "aliases": [ + "kiss" + ] + , "tags": [ + "lipstick" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’Œ" + , "description": "love letter" + , "category": "Smileys & Emotion" + , "aliases": [ + "love_letter" + ] + , "tags": [ + "email" + , "envelope" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’˜" + , "description": "heart with arrow" + , "category": "Smileys & Emotion" + , "aliases": [ + "cupid" + ] + , "tags": [ + "love" + , "heart" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’" + , "description": "heart with ribbon" + , "category": "Smileys & Emotion" + , "aliases": [ + "gift_heart" + ] + , "tags": [ + "chocolates" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’–" + , "description": "sparkling heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "sparkling_heart" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’—" + , "description": "growing heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "heartpulse" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’“" + , "description": "beating heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "heartbeat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ž" + , "description": "revolving hearts" + , "category": "Smileys & Emotion" + , "aliases": [ + "revolving_hearts" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’•" + , "description": "two hearts" + , "category": "Smileys & Emotion" + , "aliases": [ + "two_hearts" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’Ÿ" + , "description": "heart decoration" + , "category": "Smileys & Emotion" + , "aliases": [ + "heart_decoration" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โฃ๏ธ" + , "description": "heart exclamation" + , "category": "Smileys & Emotion" + , "aliases": [ + "heavy_heart_exclamation" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ’”" + , "description": "broken heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "broken_heart" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โค๏ธโ€๐Ÿ”ฅ" + , "description": "heart on fire" + , "category": "Smileys & Emotion" + , "aliases": [ + "heart_on_fire" + ] + , "tags": [ + ] + , "unicode_version": "13.1" + , "ios_version": "14.0" + } +, { + "emoji": "โค๏ธโ€๐Ÿฉน" + , "description": "mending heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "mending_heart" + ] + , "tags": [ + ] + , "unicode_version": "13.1" + , "ios_version": "14.0" + } +, { + "emoji": "โค๏ธ" + , "description": "red heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "heart" + ] + , "tags": [ + "love" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿงก" + , "description": "orange heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "orange_heart" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ’›" + , "description": "yellow heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "yellow_heart" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’š" + , "description": "green heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "green_heart" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’™" + , "description": "blue heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "blue_heart" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’œ" + , "description": "purple heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "purple_heart" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸคŽ" + , "description": "brown heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "brown_heart" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿ–ค" + , "description": "black heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "black_heart" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿค" + , "description": "white heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "white_heart" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿ’ฏ" + , "description": "hundred points" + , "category": "Smileys & Emotion" + , "aliases": [ + "100" + ] + , "tags": [ + "score" + , "perfect" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ข" + , "description": "anger symbol" + , "category": "Smileys & Emotion" + , "aliases": [ + "anger" + ] + , "tags": [ + "angry" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ฅ" + , "description": "collision" + , "category": "Smileys & Emotion" + , "aliases": [ + "boom" + , "collision" + ] + , "tags": [ + "explode" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ซ" + , "description": "dizzy" + , "category": "Smileys & Emotion" + , "aliases": [ + "dizzy" + ] + , "tags": [ + "star" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ฆ" + , "description": "sweat droplets" + , "category": "Smileys & Emotion" + , "aliases": [ + "sweat_drops" + ] + , "tags": [ + "water" + , "workout" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’จ" + , "description": "dashing away" + , "category": "Smileys & Emotion" + , "aliases": [ + "dash" + ] + , "tags": [ + "wind" + , "blow" + , "fast" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•ณ๏ธ" + , "description": "hole" + , "category": "Smileys & Emotion" + , "aliases": [ + "hole" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ’ฃ" + , "description": "bomb" + , "category": "Smileys & Emotion" + , "aliases": [ + "bomb" + ] + , "tags": [ + "boom" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ฌ" + , "description": "speech balloon" + , "category": "Smileys & Emotion" + , "aliases": [ + "speech_balloon" + ] + , "tags": [ + "comment" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธ" + , "description": "eye in speech bubble" + , "category": "Smileys & Emotion" + , "aliases": [ + "eye_speech_bubble" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ—จ๏ธ" + , "description": "left speech bubble" + , "category": "Smileys & Emotion" + , "aliases": [ + "left_speech_bubble" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ—ฏ๏ธ" + , "description": "right anger bubble" + , "category": "Smileys & Emotion" + , "aliases": [ + "right_anger_bubble" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ’ญ" + , "description": "thought balloon" + , "category": "Smileys & Emotion" + , "aliases": [ + "thought_balloon" + ] + , "tags": [ + "thinking" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ค" + , "description": "zzz" + , "category": "Smileys & Emotion" + , "aliases": [ + "zzz" + ] + , "tags": [ + "sleeping" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘‹" + , "description": "waving hand" + , "category": "People & Body" + , "aliases": [ + "wave" + ] + , "tags": [ + "goodbye" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคš" + , "description": "raised back of hand" + , "category": "People & Body" + , "aliases": [ + "raised_back_of_hand" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ–๏ธ" + , "description": "hand with fingers splayed" + , "category": "People & Body" + , "aliases": [ + "raised_hand_with_fingers_splayed" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + , "skin_tones": true + } +, { + "emoji": "โœ‹" + , "description": "raised hand" + , "category": "People & Body" + , "aliases": [ + "hand" + , "raised_hand" + ] + , "tags": [ + "highfive" + , "stop" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ––" + , "description": "vulcan salute" + , "category": "People & Body" + , "aliases": [ + "vulcan_salute" + ] + , "tags": [ + "prosper" + , "spock" + ] + , "unicode_version": "7.0" + , "ios_version": "8.3" + , "skin_tones": true + } +, { + "emoji": "๐Ÿซฑ" + , "description": "rightwards hand" + , "category": "People & Body" + , "aliases": [ + "rightwards_hand" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + , "skin_tones": true + } +, { + "emoji": "๐Ÿซฒ" + , "description": "leftwards hand" + , "category": "People & Body" + , "aliases": [ + "leftwards_hand" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + , "skin_tones": true + } +, { + "emoji": "๐Ÿซณ" + , "description": "palm down hand" + , "category": "People & Body" + , "aliases": [ + "palm_down_hand" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + , "skin_tones": true + } +, { + "emoji": "๐Ÿซด" + , "description": "palm up hand" + , "category": "People & Body" + , "aliases": [ + "palm_up_hand" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘Œ" + , "description": "OK hand" + , "category": "People & Body" + , "aliases": [ + "ok_hand" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐ŸคŒ" + , "description": "pinched fingers" + , "category": "People & Body" + , "aliases": [ + "pinched_fingers" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿค" + , "description": "pinching hand" + , "category": "People & Body" + , "aliases": [ + "pinching_hand" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "โœŒ๏ธ" + , "description": "victory hand" + , "category": "People & Body" + , "aliases": [ + "v" + ] + , "tags": [ + "victory" + , "peace" + ] + , "unicode_version": "" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคž" + , "description": "crossed fingers" + , "category": "People & Body" + , "aliases": [ + "crossed_fingers" + ] + , "tags": [ + "luck" + , "hopeful" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿซฐ" + , "description": "hand with index finger and thumb crossed" + , "category": "People & Body" + , "aliases": [ + "hand_with_index_finger_and_thumb_crossed" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + , "skin_tones": true + } +, { + "emoji": "๐ŸคŸ" + , "description": "love-you gesture" + , "category": "People & Body" + , "aliases": [ + "love_you_gesture" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿค˜" + , "description": "sign of the horns" + , "category": "People & Body" + , "aliases": [ + "metal" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿค™" + , "description": "call me hand" + , "category": "People & Body" + , "aliases": [ + "call_me_hand" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ˆ" + , "description": "backhand index pointing left" + , "category": "People & Body" + , "aliases": [ + "point_left" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘‰" + , "description": "backhand index pointing right" + , "category": "People & Body" + , "aliases": [ + "point_right" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘†" + , "description": "backhand index pointing up" + , "category": "People & Body" + , "aliases": [ + "point_up_2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ–•" + , "description": "middle finger" + , "category": "People & Body" + , "aliases": [ + "middle_finger" + , "fu" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘‡" + , "description": "backhand index pointing down" + , "category": "People & Body" + , "aliases": [ + "point_down" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "โ˜๏ธ" + , "description": "index pointing up" + , "category": "People & Body" + , "aliases": [ + "point_up" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿซต" + , "description": "index pointing at the viewer" + , "category": "People & Body" + , "aliases": [ + "index_pointing_at_the_viewer" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘" + , "description": "thumbs up" + , "category": "People & Body" + , "aliases": [ + "+1" + , "thumbsup" + ] + , "tags": [ + "approve" + , "ok" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘Ž" + , "description": "thumbs down" + , "category": "People & Body" + , "aliases": [ + "-1" + , "thumbsdown" + ] + , "tags": [ + "disapprove" + , "bury" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "โœŠ" + , "description": "raised fist" + , "category": "People & Body" + , "aliases": [ + "fist_raised" + , "fist" + ] + , "tags": [ + "power" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘Š" + , "description": "oncoming fist" + , "category": "People & Body" + , "aliases": [ + "fist_oncoming" + , "facepunch" + , "punch" + ] + , "tags": [ + "attack" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿค›" + , "description": "left-facing fist" + , "category": "People & Body" + , "aliases": [ + "fist_left" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคœ" + , "description": "right-facing fist" + , "category": "People & Body" + , "aliases": [ + "fist_right" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘" + , "description": "clapping hands" + , "category": "People & Body" + , "aliases": [ + "clap" + ] + , "tags": [ + "praise" + , "applause" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ™Œ" + , "description": "raising hands" + , "category": "People & Body" + , "aliases": [ + "raised_hands" + ] + , "tags": [ + "hooray" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿซถ" + , "description": "heart hands" + , "category": "People & Body" + , "aliases": [ + "heart_hands" + ] + , "tags": [ + "love" + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘" + , "description": "open hands" + , "category": "People & Body" + , "aliases": [ + "open_hands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคฒ" + , "description": "palms up together" + , "category": "People & Body" + , "aliases": [ + "palms_up_together" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿค" + , "description": "handshake" + , "category": "People & Body" + , "aliases": [ + "handshake" + ] + , "tags": [ + "deal" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ™" + , "description": "folded hands" + , "category": "People & Body" + , "aliases": [ + "pray" + ] + , "tags": [ + "please" + , "hope" + , "wish" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "โœ๏ธ" + , "description": "writing hand" + , "category": "People & Body" + , "aliases": [ + "writing_hand" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ’…" + , "description": "nail polish" + , "category": "People & Body" + , "aliases": [ + "nail_care" + ] + , "tags": [ + "beauty" + , "manicure" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคณ" + , "description": "selfie" + , "category": "People & Body" + , "aliases": [ + "selfie" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ’ช" + , "description": "flexed biceps" + , "category": "People & Body" + , "aliases": [ + "muscle" + ] + , "tags": [ + "flex" + , "bicep" + , "strong" + , "workout" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿฆพ" + , "description": "mechanical arm" + , "category": "People & Body" + , "aliases": [ + "mechanical_arm" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿฆฟ" + , "description": "mechanical leg" + , "category": "People & Body" + , "aliases": [ + "mechanical_leg" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿฆต" + , "description": "leg" + , "category": "People & Body" + , "aliases": [ + "leg" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿฆถ" + , "description": "foot" + , "category": "People & Body" + , "aliases": [ + "foot" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘‚" + , "description": "ear" + , "category": "People & Body" + , "aliases": [ + "ear" + ] + , "tags": [ + "hear" + , "sound" + , "listen" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿฆป" + , "description": "ear with hearing aid" + , "category": "People & Body" + , "aliases": [ + "ear_with_hearing_aid" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ƒ" + , "description": "nose" + , "category": "People & Body" + , "aliases": [ + "nose" + ] + , "tags": [ + "smell" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง " + , "description": "brain" + , "category": "People & Body" + , "aliases": [ + "brain" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿซ€" + , "description": "anatomical heart" + , "category": "People & Body" + , "aliases": [ + "anatomical_heart" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿซ" + , "description": "lungs" + , "category": "People & Body" + , "aliases": [ + "lungs" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿฆท" + , "description": "tooth" + , "category": "People & Body" + , "aliases": [ + "tooth" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฆด" + , "description": "bone" + , "category": "People & Body" + , "aliases": [ + "bone" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ‘€" + , "description": "eyes" + , "category": "People & Body" + , "aliases": [ + "eyes" + ] + , "tags": [ + "look" + , "see" + , "watch" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘๏ธ" + , "description": "eye" + , "category": "People & Body" + , "aliases": [ + "eye" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ‘…" + , "description": "tongue" + , "category": "People & Body" + , "aliases": [ + "tongue" + ] + , "tags": [ + "taste" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘„" + , "description": "mouth" + , "category": "People & Body" + , "aliases": [ + "lips" + ] + , "tags": [ + "kiss" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿซฆ" + , "description": "biting lip" + , "category": "People & Body" + , "aliases": [ + "biting_lip" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿ‘ถ" + , "description": "baby" + , "category": "People & Body" + , "aliases": [ + "baby" + ] + , "tags": [ + "child" + , "newborn" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง’" + , "description": "child" + , "category": "People & Body" + , "aliases": [ + "child" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฆ" + , "description": "boy" + , "category": "People & Body" + , "aliases": [ + "boy" + ] + , "tags": [ + "child" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ง" + , "description": "girl" + , "category": "People & Body" + , "aliases": [ + "girl" + ] + , "tags": [ + "child" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘" + , "description": "person" + , "category": "People & Body" + , "aliases": [ + "adult" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฑ" + , "description": "person: blond hair" + , "category": "People & Body" + , "aliases": [ + "blond_haired_person" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จ" + , "description": "man" + , "category": "People & Body" + , "aliases": [ + "man" + ] + , "tags": [ + "mustache" + , "father" + , "dad" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง”" + , "description": "person: beard" + , "category": "People & Body" + , "aliases": [ + "bearded_person" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง”โ€โ™‚๏ธ" + , "description": "man: beard" + , "category": "People & Body" + , "aliases": [ + "man_beard" + ] + , "tags": [ + ] + , "unicode_version": "13.1" + , "ios_version": "14.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง”โ€โ™€๏ธ" + , "description": "woman: beard" + , "category": "People & Body" + , "aliases": [ + "woman_beard" + ] + , "tags": [ + ] + , "unicode_version": "13.1" + , "ios_version": "14.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿฆฐ" + , "description": "man: red hair" + , "category": "People & Body" + , "aliases": [ + "red_haired_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿฆฑ" + , "description": "man: curly hair" + , "category": "People & Body" + , "aliases": [ + "curly_haired_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿฆณ" + , "description": "man: white hair" + , "category": "People & Body" + , "aliases": [ + "white_haired_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿฆฒ" + , "description": "man: bald" + , "category": "People & Body" + , "aliases": [ + "bald_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉ" + , "description": "woman" + , "category": "People & Body" + , "aliases": [ + "woman" + ] + , "tags": [ + "girls" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿฆฐ" + , "description": "woman: red hair" + , "category": "People & Body" + , "aliases": [ + "red_haired_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐Ÿฆฐ" + , "description": "person: red hair" + , "category": "People & Body" + , "aliases": [ + "person_red_hair" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿฆฑ" + , "description": "woman: curly hair" + , "category": "People & Body" + , "aliases": [ + "curly_haired_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐Ÿฆฑ" + , "description": "person: curly hair" + , "category": "People & Body" + , "aliases": [ + "person_curly_hair" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿฆณ" + , "description": "woman: white hair" + , "category": "People & Body" + , "aliases": [ + "white_haired_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐Ÿฆณ" + , "description": "person: white hair" + , "category": "People & Body" + , "aliases": [ + "person_white_hair" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿฆฒ" + , "description": "woman: bald" + , "category": "People & Body" + , "aliases": [ + "bald_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐Ÿฆฒ" + , "description": "person: bald" + , "category": "People & Body" + , "aliases": [ + "person_bald" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฑโ€โ™€๏ธ" + , "description": "woman: blond hair" + , "category": "People & Body" + , "aliases": [ + "blond_haired_woman" + , "blonde_woman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฑโ€โ™‚๏ธ" + , "description": "man: blond hair" + , "category": "People & Body" + , "aliases": [ + "blond_haired_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง“" + , "description": "older person" + , "category": "People & Body" + , "aliases": [ + "older_adult" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ด" + , "description": "old man" + , "category": "People & Body" + , "aliases": [ + "older_man" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ต" + , "description": "old woman" + , "category": "People & Body" + , "aliases": [ + "older_woman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ™" + , "description": "person frowning" + , "category": "People & Body" + , "aliases": [ + "frowning_person" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ™โ€โ™‚๏ธ" + , "description": "man frowning" + , "category": "People & Body" + , "aliases": [ + "frowning_man" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ™โ€โ™€๏ธ" + , "description": "woman frowning" + , "category": "People & Body" + , "aliases": [ + "frowning_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ™Ž" + , "description": "person pouting" + , "category": "People & Body" + , "aliases": [ + "pouting_face" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ™Žโ€โ™‚๏ธ" + , "description": "man pouting" + , "category": "People & Body" + , "aliases": [ + "pouting_man" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ™Žโ€โ™€๏ธ" + , "description": "woman pouting" + , "category": "People & Body" + , "aliases": [ + "pouting_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ™…" + , "description": "person gesturing NO" + , "category": "People & Body" + , "aliases": [ + "no_good" + ] + , "tags": [ + "stop" + , "halt" + , "denied" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ™…โ€โ™‚๏ธ" + , "description": "man gesturing NO" + , "category": "People & Body" + , "aliases": [ + "no_good_man" + , "ng_man" + ] + , "tags": [ + "stop" + , "halt" + , "denied" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ™…โ€โ™€๏ธ" + , "description": "woman gesturing NO" + , "category": "People & Body" + , "aliases": [ + "no_good_woman" + , "ng_woman" + ] + , "tags": [ + "stop" + , "halt" + , "denied" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ™†" + , "description": "person gesturing OK" + , "category": "People & Body" + , "aliases": [ + "ok_person" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ™†โ€โ™‚๏ธ" + , "description": "man gesturing OK" + , "category": "People & Body" + , "aliases": [ + "ok_man" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ™†โ€โ™€๏ธ" + , "description": "woman gesturing OK" + , "category": "People & Body" + , "aliases": [ + "ok_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ’" + , "description": "person tipping hand" + , "category": "People & Body" + , "aliases": [ + "tipping_hand_person" + , "information_desk_person" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ’โ€โ™‚๏ธ" + , "description": "man tipping hand" + , "category": "People & Body" + , "aliases": [ + "tipping_hand_man" + , "sassy_man" + ] + , "tags": [ + "information" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ’โ€โ™€๏ธ" + , "description": "woman tipping hand" + , "category": "People & Body" + , "aliases": [ + "tipping_hand_woman" + , "sassy_woman" + ] + , "tags": [ + "information" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ™‹" + , "description": "person raising hand" + , "category": "People & Body" + , "aliases": [ + "raising_hand" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ™‹โ€โ™‚๏ธ" + , "description": "man raising hand" + , "category": "People & Body" + , "aliases": [ + "raising_hand_man" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ™‹โ€โ™€๏ธ" + , "description": "woman raising hand" + , "category": "People & Body" + , "aliases": [ + "raising_hand_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง" + , "description": "deaf person" + , "category": "People & Body" + , "aliases": [ + "deaf_person" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿงโ€โ™‚๏ธ" + , "description": "deaf man" + , "category": "People & Body" + , "aliases": [ + "deaf_man" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿงโ€โ™€๏ธ" + , "description": "deaf woman" + , "category": "People & Body" + , "aliases": [ + "deaf_woman" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ™‡" + , "description": "person bowing" + , "category": "People & Body" + , "aliases": [ + "bow" + ] + , "tags": [ + "respect" + , "thanks" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ™‡โ€โ™‚๏ธ" + , "description": "man bowing" + , "category": "People & Body" + , "aliases": [ + "bowing_man" + ] + , "tags": [ + "respect" + , "thanks" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ™‡โ€โ™€๏ธ" + , "description": "woman bowing" + , "category": "People & Body" + , "aliases": [ + "bowing_woman" + ] + , "tags": [ + "respect" + , "thanks" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคฆ" + , "description": "person facepalming" + , "category": "People & Body" + , "aliases": [ + "facepalm" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคฆโ€โ™‚๏ธ" + , "description": "man facepalming" + , "category": "People & Body" + , "aliases": [ + "man_facepalming" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคฆโ€โ™€๏ธ" + , "description": "woman facepalming" + , "category": "People & Body" + , "aliases": [ + "woman_facepalming" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคท" + , "description": "person shrugging" + , "category": "People & Body" + , "aliases": [ + "shrug" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคทโ€โ™‚๏ธ" + , "description": "man shrugging" + , "category": "People & Body" + , "aliases": [ + "man_shrugging" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคทโ€โ™€๏ธ" + , "description": "woman shrugging" + , "category": "People & Body" + , "aliases": [ + "woman_shrugging" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€โš•๏ธ" + , "description": "health worker" + , "category": "People & Body" + , "aliases": [ + "health_worker" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€โš•๏ธ" + , "description": "man health worker" + , "category": "People & Body" + , "aliases": [ + "man_health_worker" + ] + , "tags": [ + "doctor" + , "nurse" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€โš•๏ธ" + , "description": "woman health worker" + , "category": "People & Body" + , "aliases": [ + "woman_health_worker" + ] + , "tags": [ + "doctor" + , "nurse" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐ŸŽ“" + , "description": "student" + , "category": "People & Body" + , "aliases": [ + "student" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐ŸŽ“" + , "description": "man student" + , "category": "People & Body" + , "aliases": [ + "man_student" + ] + , "tags": [ + "graduation" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐ŸŽ“" + , "description": "woman student" + , "category": "People & Body" + , "aliases": [ + "woman_student" + ] + , "tags": [ + "graduation" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐Ÿซ" + , "description": "teacher" + , "category": "People & Body" + , "aliases": [ + "teacher" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿซ" + , "description": "man teacher" + , "category": "People & Body" + , "aliases": [ + "man_teacher" + ] + , "tags": [ + "school" + , "professor" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿซ" + , "description": "woman teacher" + , "category": "People & Body" + , "aliases": [ + "woman_teacher" + ] + , "tags": [ + "school" + , "professor" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€โš–๏ธ" + , "description": "judge" + , "category": "People & Body" + , "aliases": [ + "judge" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€โš–๏ธ" + , "description": "man judge" + , "category": "People & Body" + , "aliases": [ + "man_judge" + ] + , "tags": [ + "justice" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€โš–๏ธ" + , "description": "woman judge" + , "category": "People & Body" + , "aliases": [ + "woman_judge" + ] + , "tags": [ + "justice" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐ŸŒพ" + , "description": "farmer" + , "category": "People & Body" + , "aliases": [ + "farmer" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐ŸŒพ" + , "description": "man farmer" + , "category": "People & Body" + , "aliases": [ + "man_farmer" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐ŸŒพ" + , "description": "woman farmer" + , "category": "People & Body" + , "aliases": [ + "woman_farmer" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐Ÿณ" + , "description": "cook" + , "category": "People & Body" + , "aliases": [ + "cook" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿณ" + , "description": "man cook" + , "category": "People & Body" + , "aliases": [ + "man_cook" + ] + , "tags": [ + "chef" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿณ" + , "description": "woman cook" + , "category": "People & Body" + , "aliases": [ + "woman_cook" + ] + , "tags": [ + "chef" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐Ÿ”ง" + , "description": "mechanic" + , "category": "People & Body" + , "aliases": [ + "mechanic" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿ”ง" + , "description": "man mechanic" + , "category": "People & Body" + , "aliases": [ + "man_mechanic" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿ”ง" + , "description": "woman mechanic" + , "category": "People & Body" + , "aliases": [ + "woman_mechanic" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐Ÿญ" + , "description": "factory worker" + , "category": "People & Body" + , "aliases": [ + "factory_worker" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿญ" + , "description": "man factory worker" + , "category": "People & Body" + , "aliases": [ + "man_factory_worker" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿญ" + , "description": "woman factory worker" + , "category": "People & Body" + , "aliases": [ + "woman_factory_worker" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐Ÿ’ผ" + , "description": "office worker" + , "category": "People & Body" + , "aliases": [ + "office_worker" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿ’ผ" + , "description": "man office worker" + , "category": "People & Body" + , "aliases": [ + "man_office_worker" + ] + , "tags": [ + "business" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿ’ผ" + , "description": "woman office worker" + , "category": "People & Body" + , "aliases": [ + "woman_office_worker" + ] + , "tags": [ + "business" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐Ÿ”ฌ" + , "description": "scientist" + , "category": "People & Body" + , "aliases": [ + "scientist" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿ”ฌ" + , "description": "man scientist" + , "category": "People & Body" + , "aliases": [ + "man_scientist" + ] + , "tags": [ + "research" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿ”ฌ" + , "description": "woman scientist" + , "category": "People & Body" + , "aliases": [ + "woman_scientist" + ] + , "tags": [ + "research" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐Ÿ’ป" + , "description": "technologist" + , "category": "People & Body" + , "aliases": [ + "technologist" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿ’ป" + , "description": "man technologist" + , "category": "People & Body" + , "aliases": [ + "man_technologist" + ] + , "tags": [ + "coder" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿ’ป" + , "description": "woman technologist" + , "category": "People & Body" + , "aliases": [ + "woman_technologist" + ] + , "tags": [ + "coder" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐ŸŽค" + , "description": "singer" + , "category": "People & Body" + , "aliases": [ + "singer" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐ŸŽค" + , "description": "man singer" + , "category": "People & Body" + , "aliases": [ + "man_singer" + ] + , "tags": [ + "rockstar" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐ŸŽค" + , "description": "woman singer" + , "category": "People & Body" + , "aliases": [ + "woman_singer" + ] + , "tags": [ + "rockstar" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐ŸŽจ" + , "description": "artist" + , "category": "People & Body" + , "aliases": [ + "artist" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐ŸŽจ" + , "description": "man artist" + , "category": "People & Body" + , "aliases": [ + "man_artist" + ] + , "tags": [ + "painter" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐ŸŽจ" + , "description": "woman artist" + , "category": "People & Body" + , "aliases": [ + "woman_artist" + ] + , "tags": [ + "painter" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€โœˆ๏ธ" + , "description": "pilot" + , "category": "People & Body" + , "aliases": [ + "pilot" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€โœˆ๏ธ" + , "description": "man pilot" + , "category": "People & Body" + , "aliases": [ + "man_pilot" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€โœˆ๏ธ" + , "description": "woman pilot" + , "category": "People & Body" + , "aliases": [ + "woman_pilot" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐Ÿš€" + , "description": "astronaut" + , "category": "People & Body" + , "aliases": [ + "astronaut" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿš€" + , "description": "man astronaut" + , "category": "People & Body" + , "aliases": [ + "man_astronaut" + ] + , "tags": [ + "space" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿš€" + , "description": "woman astronaut" + , "category": "People & Body" + , "aliases": [ + "woman_astronaut" + ] + , "tags": [ + "space" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐Ÿš’" + , "description": "firefighter" + , "category": "People & Body" + , "aliases": [ + "firefighter" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿš’" + , "description": "man firefighter" + , "category": "People & Body" + , "aliases": [ + "man_firefighter" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿš’" + , "description": "woman firefighter" + , "category": "People & Body" + , "aliases": [ + "woman_firefighter" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฎ" + , "description": "police officer" + , "category": "People & Body" + , "aliases": [ + "police_officer" + , "cop" + ] + , "tags": [ + "law" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฎโ€โ™‚๏ธ" + , "description": "man police officer" + , "category": "People & Body" + , "aliases": [ + "policeman" + ] + , "tags": [ + "law" + , "cop" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฎโ€โ™€๏ธ" + , "description": "woman police officer" + , "category": "People & Body" + , "aliases": [ + "policewoman" + ] + , "tags": [ + "law" + , "cop" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ•ต๏ธ" + , "description": "detective" + , "category": "People & Body" + , "aliases": [ + "detective" + ] + , "tags": [ + "sleuth" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ•ต๏ธโ€โ™‚๏ธ" + , "description": "man detective" + , "category": "People & Body" + , "aliases": [ + "male_detective" + ] + , "tags": [ + "sleuth" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ•ต๏ธโ€โ™€๏ธ" + , "description": "woman detective" + , "category": "People & Body" + , "aliases": [ + "female_detective" + ] + , "tags": [ + "sleuth" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ’‚" + , "description": "guard" + , "category": "People & Body" + , "aliases": [ + "guard" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ’‚โ€โ™‚๏ธ" + , "description": "man guard" + , "category": "People & Body" + , "aliases": [ + "guardsman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ’‚โ€โ™€๏ธ" + , "description": "woman guard" + , "category": "People & Body" + , "aliases": [ + "guardswoman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿฅท" + , "description": "ninja" + , "category": "People & Body" + , "aliases": [ + "ninja" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ท" + , "description": "construction worker" + , "category": "People & Body" + , "aliases": [ + "construction_worker" + ] + , "tags": [ + "helmet" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ทโ€โ™‚๏ธ" + , "description": "man construction worker" + , "category": "People & Body" + , "aliases": [ + "construction_worker_man" + ] + , "tags": [ + "helmet" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ทโ€โ™€๏ธ" + , "description": "woman construction worker" + , "category": "People & Body" + , "aliases": [ + "construction_worker_woman" + ] + , "tags": [ + "helmet" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿซ…" + , "description": "person with crown" + , "category": "People & Body" + , "aliases": [ + "person_with_crown" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคด" + , "description": "prince" + , "category": "People & Body" + , "aliases": [ + "prince" + ] + , "tags": [ + "crown" + , "royal" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ธ" + , "description": "princess" + , "category": "People & Body" + , "aliases": [ + "princess" + ] + , "tags": [ + "crown" + , "royal" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ณ" + , "description": "person wearing turban" + , "category": "People & Body" + , "aliases": [ + "person_with_turban" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ณโ€โ™‚๏ธ" + , "description": "man wearing turban" + , "category": "People & Body" + , "aliases": [ + "man_with_turban" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ณโ€โ™€๏ธ" + , "description": "woman wearing turban" + , "category": "People & Body" + , "aliases": [ + "woman_with_turban" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฒ" + , "description": "person with skullcap" + , "category": "People & Body" + , "aliases": [ + "man_with_gua_pi_mao" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง•" + , "description": "woman with headscarf" + , "category": "People & Body" + , "aliases": [ + "woman_with_headscarf" + ] + , "tags": [ + "hijab" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคต" + , "description": "person in tuxedo" + , "category": "People & Body" + , "aliases": [ + "person_in_tuxedo" + ] + , "tags": [ + "groom" + , "marriage" + , "wedding" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคตโ€โ™‚๏ธ" + , "description": "man in tuxedo" + , "category": "People & Body" + , "aliases": [ + "man_in_tuxedo" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคตโ€โ™€๏ธ" + , "description": "woman in tuxedo" + , "category": "People & Body" + , "aliases": [ + "woman_in_tuxedo" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฐ" + , "description": "person with veil" + , "category": "People & Body" + , "aliases": [ + "person_with_veil" + ] + , "tags": [ + "marriage" + , "wedding" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฐโ€โ™‚๏ธ" + , "description": "man with veil" + , "category": "People & Body" + , "aliases": [ + "man_with_veil" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฐโ€โ™€๏ธ" + , "description": "woman with veil" + , "category": "People & Body" + , "aliases": [ + "woman_with_veil" + , "bride_with_veil" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคฐ" + , "description": "pregnant woman" + , "category": "People & Body" + , "aliases": [ + "pregnant_woman" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿซƒ" + , "description": "pregnant man" + , "category": "People & Body" + , "aliases": [ + "pregnant_man" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + , "skin_tones": true + } +, { + "emoji": "๐Ÿซ„" + , "description": "pregnant person" + , "category": "People & Body" + , "aliases": [ + "pregnant_person" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคฑ" + , "description": "breast-feeding" + , "category": "People & Body" + , "aliases": [ + "breast_feeding" + ] + , "tags": [ + "nursing" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿผ" + , "description": "woman feeding baby" + , "category": "People & Body" + , "aliases": [ + "woman_feeding_baby" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿผ" + , "description": "man feeding baby" + , "category": "People & Body" + , "aliases": [ + "man_feeding_baby" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐Ÿผ" + , "description": "person feeding baby" + , "category": "People & Body" + , "aliases": [ + "person_feeding_baby" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ผ" + , "description": "baby angel" + , "category": "People & Body" + , "aliases": [ + "angel" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐ŸŽ…" + , "description": "Santa Claus" + , "category": "People & Body" + , "aliases": [ + "santa" + ] + , "tags": [ + "christmas" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคถ" + , "description": "Mrs. Claus" + , "category": "People & Body" + , "aliases": [ + "mrs_claus" + ] + , "tags": [ + "santa" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐ŸŽ„" + , "description": "mx claus" + , "category": "People & Body" + , "aliases": [ + "mx_claus" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿฆธ" + , "description": "superhero" + , "category": "People & Body" + , "aliases": [ + "superhero" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿฆธโ€โ™‚๏ธ" + , "description": "man superhero" + , "category": "People & Body" + , "aliases": [ + "superhero_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿฆธโ€โ™€๏ธ" + , "description": "woman superhero" + , "category": "People & Body" + , "aliases": [ + "superhero_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿฆน" + , "description": "supervillain" + , "category": "People & Body" + , "aliases": [ + "supervillain" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿฆนโ€โ™‚๏ธ" + , "description": "man supervillain" + , "category": "People & Body" + , "aliases": [ + "supervillain_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿฆนโ€โ™€๏ธ" + , "description": "woman supervillain" + , "category": "People & Body" + , "aliases": [ + "supervillain_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง™" + , "description": "mage" + , "category": "People & Body" + , "aliases": [ + "mage" + ] + , "tags": [ + "wizard" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง™โ€โ™‚๏ธ" + , "description": "man mage" + , "category": "People & Body" + , "aliases": [ + "mage_man" + ] + , "tags": [ + "wizard" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง™โ€โ™€๏ธ" + , "description": "woman mage" + , "category": "People & Body" + , "aliases": [ + "mage_woman" + ] + , "tags": [ + "wizard" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿงš" + , "description": "fairy" + , "category": "People & Body" + , "aliases": [ + "fairy" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿงšโ€โ™‚๏ธ" + , "description": "man fairy" + , "category": "People & Body" + , "aliases": [ + "fairy_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿงšโ€โ™€๏ธ" + , "description": "woman fairy" + , "category": "People & Body" + , "aliases": [ + "fairy_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง›" + , "description": "vampire" + , "category": "People & Body" + , "aliases": [ + "vampire" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง›โ€โ™‚๏ธ" + , "description": "man vampire" + , "category": "People & Body" + , "aliases": [ + "vampire_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง›โ€โ™€๏ธ" + , "description": "woman vampire" + , "category": "People & Body" + , "aliases": [ + "vampire_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿงœ" + , "description": "merperson" + , "category": "People & Body" + , "aliases": [ + "merperson" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿงœโ€โ™‚๏ธ" + , "description": "merman" + , "category": "People & Body" + , "aliases": [ + "merman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿงœโ€โ™€๏ธ" + , "description": "mermaid" + , "category": "People & Body" + , "aliases": [ + "mermaid" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง" + , "description": "elf" + , "category": "People & Body" + , "aliases": [ + "elf" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿงโ€โ™‚๏ธ" + , "description": "man elf" + , "category": "People & Body" + , "aliases": [ + "elf_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿงโ€โ™€๏ธ" + , "description": "woman elf" + , "category": "People & Body" + , "aliases": [ + "elf_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿงž" + , "description": "genie" + , "category": "People & Body" + , "aliases": [ + "genie" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿงžโ€โ™‚๏ธ" + , "description": "man genie" + , "category": "People & Body" + , "aliases": [ + "genie_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿงžโ€โ™€๏ธ" + , "description": "woman genie" + , "category": "People & Body" + , "aliases": [ + "genie_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐ŸงŸ" + , "description": "zombie" + , "category": "People & Body" + , "aliases": [ + "zombie" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐ŸงŸโ€โ™‚๏ธ" + , "description": "man zombie" + , "category": "People & Body" + , "aliases": [ + "zombie_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐ŸงŸโ€โ™€๏ธ" + , "description": "woman zombie" + , "category": "People & Body" + , "aliases": [ + "zombie_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐ŸงŒ" + , "description": "troll" + , "category": "People & Body" + , "aliases": [ + "troll" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿ’†" + , "description": "person getting massage" + , "category": "People & Body" + , "aliases": [ + "massage" + ] + , "tags": [ + "spa" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ’†โ€โ™‚๏ธ" + , "description": "man getting massage" + , "category": "People & Body" + , "aliases": [ + "massage_man" + ] + , "tags": [ + "spa" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ’†โ€โ™€๏ธ" + , "description": "woman getting massage" + , "category": "People & Body" + , "aliases": [ + "massage_woman" + ] + , "tags": [ + "spa" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ’‡" + , "description": "person getting haircut" + , "category": "People & Body" + , "aliases": [ + "haircut" + ] + , "tags": [ + "beauty" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ’‡โ€โ™‚๏ธ" + , "description": "man getting haircut" + , "category": "People & Body" + , "aliases": [ + "haircut_man" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ’‡โ€โ™€๏ธ" + , "description": "woman getting haircut" + , "category": "People & Body" + , "aliases": [ + "haircut_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿšถ" + , "description": "person walking" + , "category": "People & Body" + , "aliases": [ + "walking" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿšถโ€โ™‚๏ธ" + , "description": "man walking" + , "category": "People & Body" + , "aliases": [ + "walking_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿšถโ€โ™€๏ธ" + , "description": "woman walking" + , "category": "People & Body" + , "aliases": [ + "walking_woman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง" + , "description": "person standing" + , "category": "People & Body" + , "aliases": [ + "standing_person" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿงโ€โ™‚๏ธ" + , "description": "man standing" + , "category": "People & Body" + , "aliases": [ + "standing_man" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿงโ€โ™€๏ธ" + , "description": "woman standing" + , "category": "People & Body" + , "aliases": [ + "standing_woman" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "๐ŸงŽ" + , "description": "person kneeling" + , "category": "People & Body" + , "aliases": [ + "kneeling_person" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "๐ŸงŽโ€โ™‚๏ธ" + , "description": "man kneeling" + , "category": "People & Body" + , "aliases": [ + "kneeling_man" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "๐ŸงŽโ€โ™€๏ธ" + , "description": "woman kneeling" + , "category": "People & Body" + , "aliases": [ + "kneeling_woman" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐Ÿฆฏ" + , "description": "person with white cane" + , "category": "People & Body" + , "aliases": [ + "person_with_probing_cane" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿฆฏ" + , "description": "man with white cane" + , "category": "People & Body" + , "aliases": [ + "man_with_probing_cane" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿฆฏ" + , "description": "woman with white cane" + , "category": "People & Body" + , "aliases": [ + "woman_with_probing_cane" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐Ÿฆผ" + , "description": "person in motorized wheelchair" + , "category": "People & Body" + , "aliases": [ + "person_in_motorized_wheelchair" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿฆผ" + , "description": "man in motorized wheelchair" + , "category": "People & Body" + , "aliases": [ + "man_in_motorized_wheelchair" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿฆผ" + , "description": "woman in motorized wheelchair" + , "category": "People & Body" + , "aliases": [ + "woman_in_motorized_wheelchair" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐Ÿฆฝ" + , "description": "person in manual wheelchair" + , "category": "People & Body" + , "aliases": [ + "person_in_manual_wheelchair" + ] + , "tags": [ + ] + , "unicode_version": "12.1" + , "ios_version": "13.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿฆฝ" + , "description": "man in manual wheelchair" + , "category": "People & Body" + , "aliases": [ + "man_in_manual_wheelchair" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿฆฝ" + , "description": "woman in manual wheelchair" + , "category": "People & Body" + , "aliases": [ + "woman_in_manual_wheelchair" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿƒ" + , "description": "person running" + , "category": "People & Body" + , "aliases": [ + "runner" + , "running" + ] + , "tags": [ + "exercise" + , "workout" + , "marathon" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿƒโ€โ™‚๏ธ" + , "description": "man running" + , "category": "People & Body" + , "aliases": [ + "running_man" + ] + , "tags": [ + "exercise" + , "workout" + , "marathon" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿƒโ€โ™€๏ธ" + , "description": "woman running" + , "category": "People & Body" + , "aliases": [ + "running_woman" + ] + , "tags": [ + "exercise" + , "workout" + , "marathon" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ’ƒ" + , "description": "woman dancing" + , "category": "People & Body" + , "aliases": [ + "woman_dancing" + , "dancer" + ] + , "tags": [ + "dress" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ•บ" + , "description": "man dancing" + , "category": "People & Body" + , "aliases": [ + "man_dancing" + ] + , "tags": [ + "dancer" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ•ด๏ธ" + , "description": "person in suit levitating" + , "category": "People & Body" + , "aliases": [ + "business_suit_levitating" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฏ" + , "description": "people with bunny ears" + , "category": "People & Body" + , "aliases": [ + "dancers" + ] + , "tags": [ + "bunny" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘ฏโ€โ™‚๏ธ" + , "description": "men with bunny ears" + , "category": "People & Body" + , "aliases": [ + "dancing_men" + ] + , "tags": [ + "bunny" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "๐Ÿ‘ฏโ€โ™€๏ธ" + , "description": "women with bunny ears" + , "category": "People & Body" + , "aliases": [ + "dancing_women" + ] + , "tags": [ + "bunny" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿง–" + , "description": "person in steamy room" + , "category": "People & Body" + , "aliases": [ + "sauna_person" + ] + , "tags": [ + "steamy" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง–โ€โ™‚๏ธ" + , "description": "man in steamy room" + , "category": "People & Body" + , "aliases": [ + "sauna_man" + ] + , "tags": [ + "steamy" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง–โ€โ™€๏ธ" + , "description": "woman in steamy room" + , "category": "People & Body" + , "aliases": [ + "sauna_woman" + ] + , "tags": [ + "steamy" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง—" + , "description": "person climbing" + , "category": "People & Body" + , "aliases": [ + "climbing" + ] + , "tags": [ + "bouldering" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง—โ€โ™‚๏ธ" + , "description": "man climbing" + , "category": "People & Body" + , "aliases": [ + "climbing_man" + ] + , "tags": [ + "bouldering" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง—โ€โ™€๏ธ" + , "description": "woman climbing" + , "category": "People & Body" + , "aliases": [ + "climbing_woman" + ] + , "tags": [ + "bouldering" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคบ" + , "description": "person fencing" + , "category": "People & Body" + , "aliases": [ + "person_fencing" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿ‡" + , "description": "horse racing" + , "category": "People & Body" + , "aliases": [ + "horse_racing" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "โ›ท๏ธ" + , "description": "skier" + , "category": "People & Body" + , "aliases": [ + "skier" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ‚" + , "description": "snowboarder" + , "category": "People & Body" + , "aliases": [ + "snowboarder" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐ŸŒ๏ธ" + , "description": "person golfing" + , "category": "People & Body" + , "aliases": [ + "golfing" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + , "skin_tones": true + } +, { + "emoji": "๐ŸŒ๏ธโ€โ™‚๏ธ" + , "description": "man golfing" + , "category": "People & Body" + , "aliases": [ + "golfing_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐ŸŒ๏ธโ€โ™€๏ธ" + , "description": "woman golfing" + , "category": "People & Body" + , "aliases": [ + "golfing_woman" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ„" + , "description": "person surfing" + , "category": "People & Body" + , "aliases": [ + "surfer" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ„โ€โ™‚๏ธ" + , "description": "man surfing" + , "category": "People & Body" + , "aliases": [ + "surfing_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ„โ€โ™€๏ธ" + , "description": "woman surfing" + , "category": "People & Body" + , "aliases": [ + "surfing_woman" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿšฃ" + , "description": "person rowing boat" + , "category": "People & Body" + , "aliases": [ + "rowboat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿšฃโ€โ™‚๏ธ" + , "description": "man rowing boat" + , "category": "People & Body" + , "aliases": [ + "rowing_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿšฃโ€โ™€๏ธ" + , "description": "woman rowing boat" + , "category": "People & Body" + , "aliases": [ + "rowing_woman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐ŸŠ" + , "description": "person swimming" + , "category": "People & Body" + , "aliases": [ + "swimmer" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐ŸŠโ€โ™‚๏ธ" + , "description": "man swimming" + , "category": "People & Body" + , "aliases": [ + "swimming_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐ŸŠโ€โ™€๏ธ" + , "description": "woman swimming" + , "category": "People & Body" + , "aliases": [ + "swimming_woman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "โ›น๏ธ" + , "description": "person bouncing ball" + , "category": "People & Body" + , "aliases": [ + "bouncing_ball_person" + ] + , "tags": [ + "basketball" + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + , "skin_tones": true + } +, { + "emoji": "โ›น๏ธโ€โ™‚๏ธ" + , "description": "man bouncing ball" + , "category": "People & Body" + , "aliases": [ + "bouncing_ball_man" + , "basketball_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "โ›น๏ธโ€โ™€๏ธ" + , "description": "woman bouncing ball" + , "category": "People & Body" + , "aliases": [ + "bouncing_ball_woman" + , "basketball_woman" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‹๏ธ" + , "description": "person lifting weights" + , "category": "People & Body" + , "aliases": [ + "weight_lifting" + ] + , "tags": [ + "gym" + , "workout" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‹๏ธโ€โ™‚๏ธ" + , "description": "man lifting weights" + , "category": "People & Body" + , "aliases": [ + "weight_lifting_man" + ] + , "tags": [ + "gym" + , "workout" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‹๏ธโ€โ™€๏ธ" + , "description": "woman lifting weights" + , "category": "People & Body" + , "aliases": [ + "weight_lifting_woman" + ] + , "tags": [ + "gym" + , "workout" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿšด" + , "description": "person biking" + , "category": "People & Body" + , "aliases": [ + "bicyclist" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿšดโ€โ™‚๏ธ" + , "description": "man biking" + , "category": "People & Body" + , "aliases": [ + "biking_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿšดโ€โ™€๏ธ" + , "description": "woman biking" + , "category": "People & Body" + , "aliases": [ + "biking_woman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿšต" + , "description": "person mountain biking" + , "category": "People & Body" + , "aliases": [ + "mountain_bicyclist" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿšตโ€โ™‚๏ธ" + , "description": "man mountain biking" + , "category": "People & Body" + , "aliases": [ + "mountain_biking_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿšตโ€โ™€๏ธ" + , "description": "woman mountain biking" + , "category": "People & Body" + , "aliases": [ + "mountain_biking_woman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคธ" + , "description": "person cartwheeling" + , "category": "People & Body" + , "aliases": [ + "cartwheeling" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคธโ€โ™‚๏ธ" + , "description": "man cartwheeling" + , "category": "People & Body" + , "aliases": [ + "man_cartwheeling" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคธโ€โ™€๏ธ" + , "description": "woman cartwheeling" + , "category": "People & Body" + , "aliases": [ + "woman_cartwheeling" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคผ" + , "description": "people wrestling" + , "category": "People & Body" + , "aliases": [ + "wrestling" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿคผโ€โ™‚๏ธ" + , "description": "men wrestling" + , "category": "People & Body" + , "aliases": [ + "men_wrestling" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿคผโ€โ™€๏ธ" + , "description": "women wrestling" + , "category": "People & Body" + , "aliases": [ + "women_wrestling" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿคฝ" + , "description": "person playing water polo" + , "category": "People & Body" + , "aliases": [ + "water_polo" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคฝโ€โ™‚๏ธ" + , "description": "man playing water polo" + , "category": "People & Body" + , "aliases": [ + "man_playing_water_polo" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคฝโ€โ™€๏ธ" + , "description": "woman playing water polo" + , "category": "People & Body" + , "aliases": [ + "woman_playing_water_polo" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคพ" + , "description": "person playing handball" + , "category": "People & Body" + , "aliases": [ + "handball_person" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคพโ€โ™‚๏ธ" + , "description": "man playing handball" + , "category": "People & Body" + , "aliases": [ + "man_playing_handball" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคพโ€โ™€๏ธ" + , "description": "woman playing handball" + , "category": "People & Body" + , "aliases": [ + "woman_playing_handball" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคน" + , "description": "person juggling" + , "category": "People & Body" + , "aliases": [ + "juggling_person" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคนโ€โ™‚๏ธ" + , "description": "man juggling" + , "category": "People & Body" + , "aliases": [ + "man_juggling" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿคนโ€โ™€๏ธ" + , "description": "woman juggling" + , "category": "People & Body" + , "aliases": [ + "woman_juggling" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง˜" + , "description": "person in lotus position" + , "category": "People & Body" + , "aliases": [ + "lotus_position" + ] + , "tags": [ + "meditation" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง˜โ€โ™‚๏ธ" + , "description": "man in lotus position" + , "category": "People & Body" + , "aliases": [ + "lotus_position_man" + ] + , "tags": [ + "meditation" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง˜โ€โ™€๏ธ" + , "description": "woman in lotus position" + , "category": "People & Body" + , "aliases": [ + "lotus_position_woman" + ] + , "tags": [ + "meditation" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ›€" + , "description": "person taking bath" + , "category": "People & Body" + , "aliases": [ + "bath" + ] + , "tags": [ + "shower" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ›Œ" + , "description": "person in bed" + , "category": "People & Body" + , "aliases": [ + "sleeping_bed" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘" + , "description": "people holding hands" + , "category": "People & Body" + , "aliases": [ + "people_holding_hands" + ] + , "tags": [ + "couple" + , "date" + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": false + } +, { + "emoji": "๐Ÿ‘ญ" + , "description": "women holding hands" + , "category": "People & Body" + , "aliases": [ + "two_women_holding_hands" + ] + , "tags": [ + "couple" + , "date" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ซ" + , "description": "woman and man holding hands" + , "category": "People & Body" + , "aliases": [ + "couple" + ] + , "tags": [ + "date" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฌ" + , "description": "men holding hands" + , "category": "People & Body" + , "aliases": [ + "two_men_holding_hands" + ] + , "tags": [ + "couple" + , "date" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ’" + , "description": "kiss" + , "category": "People & Body" + , "aliases": [ + "couplekiss" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ" + , "description": "kiss: woman, man" + , "category": "People & Body" + , "aliases": [ + "couplekiss_man_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ" + , "description": "kiss: man, man" + , "category": "People & Body" + , "aliases": [ + "couplekiss_man_man" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘ฉ" + , "description": "kiss: woman, woman" + , "category": "People & Body" + , "aliases": [ + "couplekiss_woman_woman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ’‘" + , "description": "couple with heart" + , "category": "People & Body" + , "aliases": [ + "couple_with_heart" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘จ" + , "description": "couple with heart: woman, man" + , "category": "People & Body" + , "aliases": [ + "couple_with_heart_woman_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘จโ€โค๏ธโ€๐Ÿ‘จ" + , "description": "couple with heart: man, man" + , "category": "People & Body" + , "aliases": [ + "couple_with_heart_man_man" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘ฉ" + , "description": "couple with heart: woman, woman" + , "category": "People & Body" + , "aliases": [ + "couple_with_heart_woman_woman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + , "skin_tones": true + } +, { + "emoji": "๐Ÿ‘ช" + , "description": "family" + , "category": "People & Body" + , "aliases": [ + "family" + ] + , "tags": [ + "home" + , "parents" + , "child" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ" + , "description": "family: man, woman, boy" + , "category": "People & Body" + , "aliases": [ + "family_man_woman_boy" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง" + , "description": "family: man, woman, girl" + , "category": "People & Body" + , "aliases": [ + "family_man_woman_girl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ" + , "description": "family: man, woman, girl, boy" + , "category": "People & Body" + , "aliases": [ + "family_man_woman_girl_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ" + , "description": "family: man, woman, boy, boy" + , "category": "People & Body" + , "aliases": [ + "family_man_woman_boy_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง" + , "description": "family: man, woman, girl, girl" + , "category": "People & Body" + , "aliases": [ + "family_man_woman_girl_girl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆ" + , "description": "family: man, man, boy" + , "category": "People & Body" + , "aliases": [ + "family_man_man_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ง" + , "description": "family: man, man, girl" + , "category": "People & Body" + , "aliases": [ + "family_man_man_girl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ" + , "description": "family: man, man, girl, boy" + , "category": "People & Body" + , "aliases": [ + "family_man_man_girl_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ" + , "description": "family: man, man, boy, boy" + , "category": "People & Body" + , "aliases": [ + "family_man_man_boy_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง" + , "description": "family: man, man, girl, girl" + , "category": "People & Body" + , "aliases": [ + "family_man_man_girl_girl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ" + , "description": "family: woman, woman, boy" + , "category": "People & Body" + , "aliases": [ + "family_woman_woman_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ง" + , "description": "family: woman, woman, girl" + , "category": "People & Body" + , "aliases": [ + "family_woman_woman_girl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ" + , "description": "family: woman, woman, girl, boy" + , "category": "People & Body" + , "aliases": [ + "family_woman_woman_girl_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ" + , "description": "family: woman, woman, boy, boy" + , "category": "People & Body" + , "aliases": [ + "family_woman_woman_boy_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง" + , "description": "family: woman, woman, girl, girl" + , "category": "People & Body" + , "aliases": [ + "family_woman_woman_girl_girl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿ‘ฆ" + , "description": "family: man, boy" + , "category": "People & Body" + , "aliases": [ + "family_man_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ" + , "description": "family: man, boy, boy" + , "category": "People & Body" + , "aliases": [ + "family_man_boy_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿ‘ง" + , "description": "family: man, girl" + , "category": "People & Body" + , "aliases": [ + "family_man_girl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ" + , "description": "family: man, girl, boy" + , "category": "People & Body" + , "aliases": [ + "family_man_girl_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง" + , "description": "family: man, girl, girl" + , "category": "People & Body" + , "aliases": [ + "family_man_girl_girl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿ‘ฆ" + , "description": "family: woman, boy" + , "category": "People & Body" + , "aliases": [ + "family_woman_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ" + , "description": "family: woman, boy, boy" + , "category": "People & Body" + , "aliases": [ + "family_woman_boy_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿ‘ง" + , "description": "family: woman, girl" + , "category": "People & Body" + , "aliases": [ + "family_woman_girl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ" + , "description": "family: woman, girl, boy" + , "category": "People & Body" + , "aliases": [ + "family_woman_girl_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง" + , "description": "family: woman, girl, girl" + , "category": "People & Body" + , "aliases": [ + "family_woman_girl_girl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "๐Ÿ—ฃ๏ธ" + , "description": "speaking head" + , "category": "People & Body" + , "aliases": [ + "speaking_head" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ‘ค" + , "description": "bust in silhouette" + , "category": "People & Body" + , "aliases": [ + "bust_in_silhouette" + ] + , "tags": [ + "user" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘ฅ" + , "description": "busts in silhouette" + , "category": "People & Body" + , "aliases": [ + "busts_in_silhouette" + ] + , "tags": [ + "users" + , "group" + , "team" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿซ‚" + , "description": "people hugging" + , "category": "People & Body" + , "aliases": [ + "people_hugging" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿ‘ฃ" + , "description": "footprints" + , "category": "People & Body" + , "aliases": [ + "footprints" + ] + , "tags": [ + "feet" + , "tracks" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿต" + , "description": "monkey face" + , "category": "Animals & Nature" + , "aliases": [ + "monkey_face" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’" + , "description": "monkey" + , "category": "Animals & Nature" + , "aliases": [ + "monkey" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฆ" + , "description": "gorilla" + , "category": "Animals & Nature" + , "aliases": [ + "gorilla" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฆง" + , "description": "orangutan" + , "category": "Animals & Nature" + , "aliases": [ + "orangutan" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿถ" + , "description": "dog face" + , "category": "Animals & Nature" + , "aliases": [ + "dog" + ] + , "tags": [ + "pet" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•" + , "description": "dog" + , "category": "Animals & Nature" + , "aliases": [ + "dog2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฆฎ" + , "description": "guide dog" + , "category": "Animals & Nature" + , "aliases": [ + "guide_dog" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿ•โ€๐Ÿฆบ" + , "description": "service dog" + , "category": "Animals & Nature" + , "aliases": [ + "service_dog" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿฉ" + , "description": "poodle" + , "category": "Animals & Nature" + , "aliases": [ + "poodle" + ] + , "tags": [ + "dog" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿบ" + , "description": "wolf" + , "category": "Animals & Nature" + , "aliases": [ + "wolf" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸฆŠ" + , "description": "fox" + , "category": "Animals & Nature" + , "aliases": [ + "fox_face" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฆ" + , "description": "raccoon" + , "category": "Animals & Nature" + , "aliases": [ + "raccoon" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฑ" + , "description": "cat face" + , "category": "Animals & Nature" + , "aliases": [ + "cat" + ] + , "tags": [ + "pet" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿˆ" + , "description": "cat" + , "category": "Animals & Nature" + , "aliases": [ + "cat2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿˆโ€โฌ›" + , "description": "black cat" + , "category": "Animals & Nature" + , "aliases": [ + "black_cat" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿฆ" + , "description": "lion" + , "category": "Animals & Nature" + , "aliases": [ + "lion" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿฏ" + , "description": "tiger face" + , "category": "Animals & Nature" + , "aliases": [ + "tiger" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ…" + , "description": "tiger" + , "category": "Animals & Nature" + , "aliases": [ + "tiger2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ†" + , "description": "leopard" + , "category": "Animals & Nature" + , "aliases": [ + "leopard" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿด" + , "description": "horse face" + , "category": "Animals & Nature" + , "aliases": [ + "horse" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽ" + , "description": "horse" + , "category": "Animals & Nature" + , "aliases": [ + "racehorse" + ] + , "tags": [ + "speed" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฆ„" + , "description": "unicorn" + , "category": "Animals & Nature" + , "aliases": [ + "unicorn" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿฆ“" + , "description": "zebra" + , "category": "Animals & Nature" + , "aliases": [ + "zebra" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐ŸฆŒ" + , "description": "deer" + , "category": "Animals & Nature" + , "aliases": [ + "deer" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฆฌ" + , "description": "bison" + , "category": "Animals & Nature" + , "aliases": [ + "bison" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿฎ" + , "description": "cow face" + , "category": "Animals & Nature" + , "aliases": [ + "cow" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‚" + , "description": "ox" + , "category": "Animals & Nature" + , "aliases": [ + "ox" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿƒ" + , "description": "water buffalo" + , "category": "Animals & Nature" + , "aliases": [ + "water_buffalo" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ„" + , "description": "cow" + , "category": "Animals & Nature" + , "aliases": [ + "cow2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿท" + , "description": "pig face" + , "category": "Animals & Nature" + , "aliases": [ + "pig" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ–" + , "description": "pig" + , "category": "Animals & Nature" + , "aliases": [ + "pig2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ—" + , "description": "boar" + , "category": "Animals & Nature" + , "aliases": [ + "boar" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฝ" + , "description": "pig nose" + , "category": "Animals & Nature" + , "aliases": [ + "pig_nose" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ" + , "description": "ram" + , "category": "Animals & Nature" + , "aliases": [ + "ram" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘" + , "description": "ewe" + , "category": "Animals & Nature" + , "aliases": [ + "sheep" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ" + , "description": "goat" + , "category": "Animals & Nature" + , "aliases": [ + "goat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿช" + , "description": "camel" + , "category": "Animals & Nature" + , "aliases": [ + "dromedary_camel" + ] + , "tags": [ + "desert" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿซ" + , "description": "two-hump camel" + , "category": "Animals & Nature" + , "aliases": [ + "camel" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฆ™" + , "description": "llama" + , "category": "Animals & Nature" + , "aliases": [ + "llama" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฆ’" + , "description": "giraffe" + , "category": "Animals & Nature" + , "aliases": [ + "giraffe" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ˜" + , "description": "elephant" + , "category": "Animals & Nature" + , "aliases": [ + "elephant" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฆฃ" + , "description": "mammoth" + , "category": "Animals & Nature" + , "aliases": [ + "mammoth" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿฆ" + , "description": "rhinoceros" + , "category": "Animals & Nature" + , "aliases": [ + "rhinoceros" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฆ›" + , "description": "hippopotamus" + , "category": "Animals & Nature" + , "aliases": [ + "hippopotamus" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿญ" + , "description": "mouse face" + , "category": "Animals & Nature" + , "aliases": [ + "mouse" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ" + , "description": "mouse" + , "category": "Animals & Nature" + , "aliases": [ + "mouse2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ€" + , "description": "rat" + , "category": "Animals & Nature" + , "aliases": [ + "rat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿน" + , "description": "hamster" + , "category": "Animals & Nature" + , "aliases": [ + "hamster" + ] + , "tags": [ + "pet" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฐ" + , "description": "rabbit face" + , "category": "Animals & Nature" + , "aliases": [ + "rabbit" + ] + , "tags": [ + "bunny" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‡" + , "description": "rabbit" + , "category": "Animals & Nature" + , "aliases": [ + "rabbit2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฟ๏ธ" + , "description": "chipmunk" + , "category": "Animals & Nature" + , "aliases": [ + "chipmunk" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿฆซ" + , "description": "beaver" + , "category": "Animals & Nature" + , "aliases": [ + "beaver" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿฆ”" + , "description": "hedgehog" + , "category": "Animals & Nature" + , "aliases": [ + "hedgehog" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฆ‡" + , "description": "bat" + , "category": "Animals & Nature" + , "aliases": [ + "bat" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿป" + , "description": "bear" + , "category": "Animals & Nature" + , "aliases": [ + "bear" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿปโ€โ„๏ธ" + , "description": "polar bear" + , "category": "Animals & Nature" + , "aliases": [ + "polar_bear" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿจ" + , "description": "koala" + , "category": "Animals & Nature" + , "aliases": [ + "koala" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿผ" + , "description": "panda" + , "category": "Animals & Nature" + , "aliases": [ + "panda_face" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฆฅ" + , "description": "sloth" + , "category": "Animals & Nature" + , "aliases": [ + "sloth" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿฆฆ" + , "description": "otter" + , "category": "Animals & Nature" + , "aliases": [ + "otter" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿฆจ" + , "description": "skunk" + , "category": "Animals & Nature" + , "aliases": [ + "skunk" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿฆ˜" + , "description": "kangaroo" + , "category": "Animals & Nature" + , "aliases": [ + "kangaroo" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฆก" + , "description": "badger" + , "category": "Animals & Nature" + , "aliases": [ + "badger" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿพ" + , "description": "paw prints" + , "category": "Animals & Nature" + , "aliases": [ + "feet" + , "paw_prints" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฆƒ" + , "description": "turkey" + , "category": "Animals & Nature" + , "aliases": [ + "turkey" + ] + , "tags": [ + "thanksgiving" + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ”" + , "description": "chicken" + , "category": "Animals & Nature" + , "aliases": [ + "chicken" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“" + , "description": "rooster" + , "category": "Animals & Nature" + , "aliases": [ + "rooster" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฃ" + , "description": "hatching chick" + , "category": "Animals & Nature" + , "aliases": [ + "hatching_chick" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿค" + , "description": "baby chick" + , "category": "Animals & Nature" + , "aliases": [ + "baby_chick" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅ" + , "description": "front-facing baby chick" + , "category": "Animals & Nature" + , "aliases": [ + "hatched_chick" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฆ" + , "description": "bird" + , "category": "Animals & Nature" + , "aliases": [ + "bird" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿง" + , "description": "penguin" + , "category": "Animals & Nature" + , "aliases": [ + "penguin" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•Š๏ธ" + , "description": "dove" + , "category": "Animals & Nature" + , "aliases": [ + "dove" + ] + , "tags": [ + "peace" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿฆ…" + , "description": "eagle" + , "category": "Animals & Nature" + , "aliases": [ + "eagle" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฆ†" + , "description": "duck" + , "category": "Animals & Nature" + , "aliases": [ + "duck" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฆข" + , "description": "swan" + , "category": "Animals & Nature" + , "aliases": [ + "swan" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฆ‰" + , "description": "owl" + , "category": "Animals & Nature" + , "aliases": [ + "owl" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฆค" + , "description": "dodo" + , "category": "Animals & Nature" + , "aliases": [ + "dodo" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿชถ" + , "description": "feather" + , "category": "Animals & Nature" + , "aliases": [ + "feather" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿฆฉ" + , "description": "flamingo" + , "category": "Animals & Nature" + , "aliases": [ + "flamingo" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿฆš" + , "description": "peacock" + , "category": "Animals & Nature" + , "aliases": [ + "peacock" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฆœ" + , "description": "parrot" + , "category": "Animals & Nature" + , "aliases": [ + "parrot" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿธ" + , "description": "frog" + , "category": "Animals & Nature" + , "aliases": [ + "frog" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŠ" + , "description": "crocodile" + , "category": "Animals & Nature" + , "aliases": [ + "crocodile" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿข" + , "description": "turtle" + , "category": "Animals & Nature" + , "aliases": [ + "turtle" + ] + , "tags": [ + "slow" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸฆŽ" + , "description": "lizard" + , "category": "Animals & Nature" + , "aliases": [ + "lizard" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿ" + , "description": "snake" + , "category": "Animals & Nature" + , "aliases": [ + "snake" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฒ" + , "description": "dragon face" + , "category": "Animals & Nature" + , "aliases": [ + "dragon_face" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‰" + , "description": "dragon" + , "category": "Animals & Nature" + , "aliases": [ + "dragon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฆ•" + , "description": "sauropod" + , "category": "Animals & Nature" + , "aliases": [ + "sauropod" + ] + , "tags": [ + "dinosaur" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฆ–" + , "description": "T-Rex" + , "category": "Animals & Nature" + , "aliases": [ + "t-rex" + ] + , "tags": [ + "dinosaur" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿณ" + , "description": "spouting whale" + , "category": "Animals & Nature" + , "aliases": [ + "whale" + ] + , "tags": [ + "sea" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‹" + , "description": "whale" + , "category": "Animals & Nature" + , "aliases": [ + "whale2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฌ" + , "description": "dolphin" + , "category": "Animals & Nature" + , "aliases": [ + "dolphin" + , "flipper" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฆญ" + , "description": "seal" + , "category": "Animals & Nature" + , "aliases": [ + "seal" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐ŸŸ" + , "description": "fish" + , "category": "Animals & Nature" + , "aliases": [ + "fish" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ " + , "description": "tropical fish" + , "category": "Animals & Nature" + , "aliases": [ + "tropical_fish" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿก" + , "description": "blowfish" + , "category": "Animals & Nature" + , "aliases": [ + "blowfish" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฆˆ" + , "description": "shark" + , "category": "Animals & Nature" + , "aliases": [ + "shark" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿ™" + , "description": "octopus" + , "category": "Animals & Nature" + , "aliases": [ + "octopus" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš" + , "description": "spiral shell" + , "category": "Animals & Nature" + , "aliases": [ + "shell" + ] + , "tags": [ + "sea" + , "beach" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿชธ" + , "description": "coral" + , "category": "Animals & Nature" + , "aliases": [ + "coral" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐ŸŒ" + , "description": "snail" + , "category": "Animals & Nature" + , "aliases": [ + "snail" + ] + , "tags": [ + "slow" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฆ‹" + , "description": "butterfly" + , "category": "Animals & Nature" + , "aliases": [ + "butterfly" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿ›" + , "description": "bug" + , "category": "Animals & Nature" + , "aliases": [ + "bug" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿœ" + , "description": "ant" + , "category": "Animals & Nature" + , "aliases": [ + "ant" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ" + , "description": "honeybee" + , "category": "Animals & Nature" + , "aliases": [ + "bee" + , "honeybee" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿชฒ" + , "description": "beetle" + , "category": "Animals & Nature" + , "aliases": [ + "beetle" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿž" + , "description": "lady beetle" + , "category": "Animals & Nature" + , "aliases": [ + "lady_beetle" + ] + , "tags": [ + "bug" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฆ—" + , "description": "cricket" + , "category": "Animals & Nature" + , "aliases": [ + "cricket" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿชณ" + , "description": "cockroach" + , "category": "Animals & Nature" + , "aliases": [ + "cockroach" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿ•ท๏ธ" + , "description": "spider" + , "category": "Animals & Nature" + , "aliases": [ + "spider" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ•ธ๏ธ" + , "description": "spider web" + , "category": "Animals & Nature" + , "aliases": [ + "spider_web" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿฆ‚" + , "description": "scorpion" + , "category": "Animals & Nature" + , "aliases": [ + "scorpion" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸฆŸ" + , "description": "mosquito" + , "category": "Animals & Nature" + , "aliases": [ + "mosquito" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿชฐ" + , "description": "fly" + , "category": "Animals & Nature" + , "aliases": [ + "fly" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿชฑ" + , "description": "worm" + , "category": "Animals & Nature" + , "aliases": [ + "worm" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿฆ " + , "description": "microbe" + , "category": "Animals & Nature" + , "aliases": [ + "microbe" + ] + , "tags": [ + "germ" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ’" + , "description": "bouquet" + , "category": "Animals & Nature" + , "aliases": [ + "bouquet" + ] + , "tags": [ + "flowers" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒธ" + , "description": "cherry blossom" + , "category": "Animals & Nature" + , "aliases": [ + "cherry_blossom" + ] + , "tags": [ + "flower" + , "spring" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ฎ" + , "description": "white flower" + , "category": "Animals & Nature" + , "aliases": [ + "white_flower" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿชท" + , "description": "lotus" + , "category": "Animals & Nature" + , "aliases": [ + "lotus" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿต๏ธ" + , "description": "rosette" + , "category": "Animals & Nature" + , "aliases": [ + "rosette" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŒน" + , "description": "rose" + , "category": "Animals & Nature" + , "aliases": [ + "rose" + ] + , "tags": [ + "flower" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅ€" + , "description": "wilted flower" + , "category": "Animals & Nature" + , "aliases": [ + "wilted_flower" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐ŸŒบ" + , "description": "hibiscus" + , "category": "Animals & Nature" + , "aliases": [ + "hibiscus" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒป" + , "description": "sunflower" + , "category": "Animals & Nature" + , "aliases": [ + "sunflower" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒผ" + , "description": "blossom" + , "category": "Animals & Nature" + , "aliases": [ + "blossom" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒท" + , "description": "tulip" + , "category": "Animals & Nature" + , "aliases": [ + "tulip" + ] + , "tags": [ + "flower" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒฑ" + , "description": "seedling" + , "category": "Animals & Nature" + , "aliases": [ + "seedling" + ] + , "tags": [ + "plant" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿชด" + , "description": "potted plant" + , "category": "Animals & Nature" + , "aliases": [ + "potted_plant" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐ŸŒฒ" + , "description": "evergreen tree" + , "category": "Animals & Nature" + , "aliases": [ + "evergreen_tree" + ] + , "tags": [ + "wood" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒณ" + , "description": "deciduous tree" + , "category": "Animals & Nature" + , "aliases": [ + "deciduous_tree" + ] + , "tags": [ + "wood" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒด" + , "description": "palm tree" + , "category": "Animals & Nature" + , "aliases": [ + "palm_tree" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒต" + , "description": "cactus" + , "category": "Animals & Nature" + , "aliases": [ + "cactus" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒพ" + , "description": "sheaf of rice" + , "category": "Animals & Nature" + , "aliases": [ + "ear_of_rice" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒฟ" + , "description": "herb" + , "category": "Animals & Nature" + , "aliases": [ + "herb" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ˜˜๏ธ" + , "description": "shamrock" + , "category": "Animals & Nature" + , "aliases": [ + "shamrock" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ€" + , "description": "four leaf clover" + , "category": "Animals & Nature" + , "aliases": [ + "four_leaf_clover" + ] + , "tags": [ + "luck" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ" + , "description": "maple leaf" + , "category": "Animals & Nature" + , "aliases": [ + "maple_leaf" + ] + , "tags": [ + "canada" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‚" + , "description": "fallen leaf" + , "category": "Animals & Nature" + , "aliases": [ + "fallen_leaf" + ] + , "tags": [ + "autumn" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿƒ" + , "description": "leaf fluttering in wind" + , "category": "Animals & Nature" + , "aliases": [ + "leaves" + ] + , "tags": [ + "leaf" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿชน" + , "description": "empty nest" + , "category": "Animals & Nature" + , "aliases": [ + "empty_nest" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿชบ" + , "description": "nest with eggs" + , "category": "Animals & Nature" + , "aliases": [ + "nest_with_eggs" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿ‡" + , "description": "grapes" + , "category": "Food & Drink" + , "aliases": [ + "grapes" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿˆ" + , "description": "melon" + , "category": "Food & Drink" + , "aliases": [ + "melon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‰" + , "description": "watermelon" + , "category": "Food & Drink" + , "aliases": [ + "watermelon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŠ" + , "description": "tangerine" + , "category": "Food & Drink" + , "aliases": [ + "tangerine" + , "orange" + , "mandarin" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‹" + , "description": "lemon" + , "category": "Food & Drink" + , "aliases": [ + "lemon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ" + , "description": "banana" + , "category": "Food & Drink" + , "aliases": [ + "banana" + ] + , "tags": [ + "fruit" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ" + , "description": "pineapple" + , "category": "Food & Drink" + , "aliases": [ + "pineapple" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅญ" + , "description": "mango" + , "category": "Food & Drink" + , "aliases": [ + "mango" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐ŸŽ" + , "description": "red apple" + , "category": "Food & Drink" + , "aliases": [ + "apple" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ" + , "description": "green apple" + , "category": "Food & Drink" + , "aliases": [ + "green_apple" + ] + , "tags": [ + "fruit" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ" + , "description": "pear" + , "category": "Food & Drink" + , "aliases": [ + "pear" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘" + , "description": "peach" + , "category": "Food & Drink" + , "aliases": [ + "peach" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’" + , "description": "cherries" + , "category": "Food & Drink" + , "aliases": [ + "cherries" + ] + , "tags": [ + "fruit" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“" + , "description": "strawberry" + , "category": "Food & Drink" + , "aliases": [ + "strawberry" + ] + , "tags": [ + "fruit" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿซ" + , "description": "blueberries" + , "category": "Food & Drink" + , "aliases": [ + "blueberries" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿฅ" + , "description": "kiwi fruit" + , "category": "Food & Drink" + , "aliases": [ + "kiwi_fruit" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿ…" + , "description": "tomato" + , "category": "Food & Drink" + , "aliases": [ + "tomato" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿซ’" + , "description": "olive" + , "category": "Food & Drink" + , "aliases": [ + "olive" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿฅฅ" + , "description": "coconut" + , "category": "Food & Drink" + , "aliases": [ + "coconut" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฅ‘" + , "description": "avocado" + , "category": "Food & Drink" + , "aliases": [ + "avocado" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿ†" + , "description": "eggplant" + , "category": "Food & Drink" + , "aliases": [ + "eggplant" + ] + , "tags": [ + "aubergine" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅ”" + , "description": "potato" + , "category": "Food & Drink" + , "aliases": [ + "potato" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฅ•" + , "description": "carrot" + , "category": "Food & Drink" + , "aliases": [ + "carrot" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐ŸŒฝ" + , "description": "ear of corn" + , "category": "Food & Drink" + , "aliases": [ + "corn" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒถ๏ธ" + , "description": "hot pepper" + , "category": "Food & Drink" + , "aliases": [ + "hot_pepper" + ] + , "tags": [ + "spicy" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿซ‘" + , "description": "bell pepper" + , "category": "Food & Drink" + , "aliases": [ + "bell_pepper" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿฅ’" + , "description": "cucumber" + , "category": "Food & Drink" + , "aliases": [ + "cucumber" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฅฌ" + , "description": "leafy green" + , "category": "Food & Drink" + , "aliases": [ + "leafy_green" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฅฆ" + , "description": "broccoli" + , "category": "Food & Drink" + , "aliases": [ + "broccoli" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿง„" + , "description": "garlic" + , "category": "Food & Drink" + , "aliases": [ + "garlic" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿง…" + , "description": "onion" + , "category": "Food & Drink" + , "aliases": [ + "onion" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿ„" + , "description": "mushroom" + , "category": "Food & Drink" + , "aliases": [ + "mushroom" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅœ" + , "description": "peanuts" + , "category": "Food & Drink" + , "aliases": [ + "peanuts" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿซ˜" + , "description": "beans" + , "category": "Food & Drink" + , "aliases": [ + "beans" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐ŸŒฐ" + , "description": "chestnut" + , "category": "Food & Drink" + , "aliases": [ + "chestnut" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿž" + , "description": "bread" + , "category": "Food & Drink" + , "aliases": [ + "bread" + ] + , "tags": [ + "toast" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅ" + , "description": "croissant" + , "category": "Food & Drink" + , "aliases": [ + "croissant" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฅ–" + , "description": "baguette bread" + , "category": "Food & Drink" + , "aliases": [ + "baguette_bread" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿซ“" + , "description": "flatbread" + , "category": "Food & Drink" + , "aliases": [ + "flatbread" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿฅจ" + , "description": "pretzel" + , "category": "Food & Drink" + , "aliases": [ + "pretzel" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฅฏ" + , "description": "bagel" + , "category": "Food & Drink" + , "aliases": [ + "bagel" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฅž" + , "description": "pancakes" + , "category": "Food & Drink" + , "aliases": [ + "pancakes" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿง‡" + , "description": "waffle" + , "category": "Food & Drink" + , "aliases": [ + "waffle" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿง€" + , "description": "cheese wedge" + , "category": "Food & Drink" + , "aliases": [ + "cheese" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ–" + , "description": "meat on bone" + , "category": "Food & Drink" + , "aliases": [ + "meat_on_bone" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ—" + , "description": "poultry leg" + , "category": "Food & Drink" + , "aliases": [ + "poultry_leg" + ] + , "tags": [ + "meat" + , "chicken" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅฉ" + , "description": "cut of meat" + , "category": "Food & Drink" + , "aliases": [ + "cut_of_meat" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฅ“" + , "description": "bacon" + , "category": "Food & Drink" + , "aliases": [ + "bacon" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿ”" + , "description": "hamburger" + , "category": "Food & Drink" + , "aliases": [ + "hamburger" + ] + , "tags": [ + "burger" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŸ" + , "description": "french fries" + , "category": "Food & Drink" + , "aliases": [ + "fries" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•" + , "description": "pizza" + , "category": "Food & Drink" + , "aliases": [ + "pizza" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒญ" + , "description": "hot dog" + , "category": "Food & Drink" + , "aliases": [ + "hotdog" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿฅช" + , "description": "sandwich" + , "category": "Food & Drink" + , "aliases": [ + "sandwich" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐ŸŒฎ" + , "description": "taco" + , "category": "Food & Drink" + , "aliases": [ + "taco" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŒฏ" + , "description": "burrito" + , "category": "Food & Drink" + , "aliases": [ + "burrito" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿซ”" + , "description": "tamale" + , "category": "Food & Drink" + , "aliases": [ + "tamale" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿฅ™" + , "description": "stuffed flatbread" + , "category": "Food & Drink" + , "aliases": [ + "stuffed_flatbread" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿง†" + , "description": "falafel" + , "category": "Food & Drink" + , "aliases": [ + "falafel" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿฅš" + , "description": "egg" + , "category": "Food & Drink" + , "aliases": [ + "egg" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿณ" + , "description": "cooking" + , "category": "Food & Drink" + , "aliases": [ + "fried_egg" + ] + , "tags": [ + "breakfast" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅ˜" + , "description": "shallow pan of food" + , "category": "Food & Drink" + , "aliases": [ + "shallow_pan_of_food" + ] + , "tags": [ + "paella" + , "curry" + ] + , "unicode_version": "" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฒ" + , "description": "pot of food" + , "category": "Food & Drink" + , "aliases": [ + "stew" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿซ•" + , "description": "fondue" + , "category": "Food & Drink" + , "aliases": [ + "fondue" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿฅฃ" + , "description": "bowl with spoon" + , "category": "Food & Drink" + , "aliases": [ + "bowl_with_spoon" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฅ—" + , "description": "green salad" + , "category": "Food & Drink" + , "aliases": [ + "green_salad" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฟ" + , "description": "popcorn" + , "category": "Food & Drink" + , "aliases": [ + "popcorn" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿงˆ" + , "description": "butter" + , "category": "Food & Drink" + , "aliases": [ + "butter" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿง‚" + , "description": "salt" + , "category": "Food & Drink" + , "aliases": [ + "salt" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฅซ" + , "description": "canned food" + , "category": "Food & Drink" + , "aliases": [ + "canned_food" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฑ" + , "description": "bento box" + , "category": "Food & Drink" + , "aliases": [ + "bento" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ˜" + , "description": "rice cracker" + , "category": "Food & Drink" + , "aliases": [ + "rice_cracker" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ™" + , "description": "rice ball" + , "category": "Food & Drink" + , "aliases": [ + "rice_ball" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš" + , "description": "cooked rice" + , "category": "Food & Drink" + , "aliases": [ + "rice" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›" + , "description": "curry rice" + , "category": "Food & Drink" + , "aliases": [ + "curry" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿœ" + , "description": "steaming bowl" + , "category": "Food & Drink" + , "aliases": [ + "ramen" + ] + , "tags": [ + "noodle" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ" + , "description": "spaghetti" + , "category": "Food & Drink" + , "aliases": [ + "spaghetti" + ] + , "tags": [ + "pasta" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ " + , "description": "roasted sweet potato" + , "category": "Food & Drink" + , "aliases": [ + "sweet_potato" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿข" + , "description": "oden" + , "category": "Food & Drink" + , "aliases": [ + "oden" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฃ" + , "description": "sushi" + , "category": "Food & Drink" + , "aliases": [ + "sushi" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿค" + , "description": "fried shrimp" + , "category": "Food & Drink" + , "aliases": [ + "fried_shrimp" + ] + , "tags": [ + "tempura" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅ" + , "description": "fish cake with swirl" + , "category": "Food & Drink" + , "aliases": [ + "fish_cake" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅฎ" + , "description": "moon cake" + , "category": "Food & Drink" + , "aliases": [ + "moon_cake" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿก" + , "description": "dango" + , "category": "Food & Drink" + , "aliases": [ + "dango" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸฅŸ" + , "description": "dumpling" + , "category": "Food & Drink" + , "aliases": [ + "dumpling" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฅ " + , "description": "fortune cookie" + , "category": "Food & Drink" + , "aliases": [ + "fortune_cookie" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฅก" + , "description": "takeout box" + , "category": "Food & Drink" + , "aliases": [ + "takeout_box" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฆ€" + , "description": "crab" + , "category": "Food & Drink" + , "aliases": [ + "crab" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿฆž" + , "description": "lobster" + , "category": "Food & Drink" + , "aliases": [ + "lobster" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฆ" + , "description": "shrimp" + , "category": "Food & Drink" + , "aliases": [ + "shrimp" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฆ‘" + , "description": "squid" + , "category": "Food & Drink" + , "aliases": [ + "squid" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฆช" + , "description": "oyster" + , "category": "Food & Drink" + , "aliases": [ + "oyster" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿฆ" + , "description": "soft ice cream" + , "category": "Food & Drink" + , "aliases": [ + "icecream" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿง" + , "description": "shaved ice" + , "category": "Food & Drink" + , "aliases": [ + "shaved_ice" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿจ" + , "description": "ice cream" + , "category": "Food & Drink" + , "aliases": [ + "ice_cream" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฉ" + , "description": "doughnut" + , "category": "Food & Drink" + , "aliases": [ + "doughnut" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿช" + , "description": "cookie" + , "category": "Food & Drink" + , "aliases": [ + "cookie" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽ‚" + , "description": "birthday cake" + , "category": "Food & Drink" + , "aliases": [ + "birthday" + ] + , "tags": [ + "party" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฐ" + , "description": "shortcake" + , "category": "Food & Drink" + , "aliases": [ + "cake" + ] + , "tags": [ + "dessert" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿง" + , "description": "cupcake" + , "category": "Food & Drink" + , "aliases": [ + "cupcake" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฅง" + , "description": "pie" + , "category": "Food & Drink" + , "aliases": [ + "pie" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿซ" + , "description": "chocolate bar" + , "category": "Food & Drink" + , "aliases": [ + "chocolate_bar" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฌ" + , "description": "candy" + , "category": "Food & Drink" + , "aliases": [ + "candy" + ] + , "tags": [ + "sweet" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿญ" + , "description": "lollipop" + , "category": "Food & Drink" + , "aliases": [ + "lollipop" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฎ" + , "description": "custard" + , "category": "Food & Drink" + , "aliases": [ + "custard" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฏ" + , "description": "honey pot" + , "category": "Food & Drink" + , "aliases": [ + "honey_pot" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿผ" + , "description": "baby bottle" + , "category": "Food & Drink" + , "aliases": [ + "baby_bottle" + ] + , "tags": [ + "milk" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅ›" + , "description": "glass of milk" + , "category": "Food & Drink" + , "aliases": [ + "milk_glass" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "โ˜•" + , "description": "hot beverage" + , "category": "Food & Drink" + , "aliases": [ + "coffee" + ] + , "tags": [ + "cafe" + , "espresso" + ] + , "unicode_version": "4.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿซ–" + , "description": "teapot" + , "category": "Food & Drink" + , "aliases": [ + "teapot" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿต" + , "description": "teacup without handle" + , "category": "Food & Drink" + , "aliases": [ + "tea" + ] + , "tags": [ + "green" + , "breakfast" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿถ" + , "description": "sake" + , "category": "Food & Drink" + , "aliases": [ + "sake" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿพ" + , "description": "bottle with popping cork" + , "category": "Food & Drink" + , "aliases": [ + "champagne" + ] + , "tags": [ + "bottle" + , "bubbly" + , "celebration" + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿท" + , "description": "wine glass" + , "category": "Food & Drink" + , "aliases": [ + "wine_glass" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿธ" + , "description": "cocktail glass" + , "category": "Food & Drink" + , "aliases": [ + "cocktail" + ] + , "tags": [ + "drink" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿน" + , "description": "tropical drink" + , "category": "Food & Drink" + , "aliases": [ + "tropical_drink" + ] + , "tags": [ + "summer" + , "vacation" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿบ" + , "description": "beer mug" + , "category": "Food & Drink" + , "aliases": [ + "beer" + ] + , "tags": [ + "drink" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿป" + , "description": "clinking beer mugs" + , "category": "Food & Drink" + , "aliases": [ + "beers" + ] + , "tags": [ + "drinks" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅ‚" + , "description": "clinking glasses" + , "category": "Food & Drink" + , "aliases": [ + "clinking_glasses" + ] + , "tags": [ + "cheers" + , "toast" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฅƒ" + , "description": "tumbler glass" + , "category": "Food & Drink" + , "aliases": [ + "tumbler_glass" + ] + , "tags": [ + "whisky" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿซ—" + , "description": "pouring liquid" + , "category": "Food & Drink" + , "aliases": [ + "pouring_liquid" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿฅค" + , "description": "cup with straw" + , "category": "Food & Drink" + , "aliases": [ + "cup_with_straw" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿง‹" + , "description": "bubble tea" + , "category": "Food & Drink" + , "aliases": [ + "bubble_tea" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿงƒ" + , "description": "beverage box" + , "category": "Food & Drink" + , "aliases": [ + "beverage_box" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿง‰" + , "description": "mate" + , "category": "Food & Drink" + , "aliases": [ + "mate" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐ŸงŠ" + , "description": "ice" + , "category": "Food & Drink" + , "aliases": [ + "ice_cube" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿฅข" + , "description": "chopsticks" + , "category": "Food & Drink" + , "aliases": [ + "chopsticks" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฝ๏ธ" + , "description": "fork and knife with plate" + , "category": "Food & Drink" + , "aliases": [ + "plate_with_cutlery" + ] + , "tags": [ + "dining" + , "dinner" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿด" + , "description": "fork and knife" + , "category": "Food & Drink" + , "aliases": [ + "fork_and_knife" + ] + , "tags": [ + "cutlery" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅ„" + , "description": "spoon" + , "category": "Food & Drink" + , "aliases": [ + "spoon" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿ”ช" + , "description": "kitchen knife" + , "category": "Food & Drink" + , "aliases": [ + "hocho" + , "knife" + ] + , "tags": [ + "cut" + , "chop" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿซ™" + , "description": "jar" + , "category": "Food & Drink" + , "aliases": [ + "jar" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿบ" + , "description": "amphora" + , "category": "Food & Drink" + , "aliases": [ + "amphora" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŒ" + , "description": "globe showing Europe-Africa" + , "category": "Travel & Places" + , "aliases": [ + "earth_africa" + ] + , "tags": [ + "globe" + , "world" + , "international" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒŽ" + , "description": "globe showing Americas" + , "category": "Travel & Places" + , "aliases": [ + "earth_americas" + ] + , "tags": [ + "globe" + , "world" + , "international" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ" + , "description": "globe showing Asia-Australia" + , "category": "Travel & Places" + , "aliases": [ + "earth_asia" + ] + , "tags": [ + "globe" + , "world" + , "international" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ" + , "description": "globe with meridians" + , "category": "Travel & Places" + , "aliases": [ + "globe_with_meridians" + ] + , "tags": [ + "world" + , "global" + , "international" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ—บ๏ธ" + , "description": "world map" + , "category": "Travel & Places" + , "aliases": [ + "world_map" + ] + , "tags": [ + "travel" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ—พ" + , "description": "map of Japan" + , "category": "Travel & Places" + , "aliases": [ + "japan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿงญ" + , "description": "compass" + , "category": "Travel & Places" + , "aliases": [ + "compass" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ”๏ธ" + , "description": "snow-capped mountain" + , "category": "Travel & Places" + , "aliases": [ + "mountain_snow" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "โ›ฐ๏ธ" + , "description": "mountain" + , "category": "Travel & Places" + , "aliases": [ + "mountain" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŒ‹" + , "description": "volcano" + , "category": "Travel & Places" + , "aliases": [ + "volcano" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ—ป" + , "description": "mount fuji" + , "category": "Travel & Places" + , "aliases": [ + "mount_fuji" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•๏ธ" + , "description": "camping" + , "category": "Travel & Places" + , "aliases": [ + "camping" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ–๏ธ" + , "description": "beach with umbrella" + , "category": "Travel & Places" + , "aliases": [ + "beach_umbrella" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿœ๏ธ" + , "description": "desert" + , "category": "Travel & Places" + , "aliases": [ + "desert" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ๏ธ" + , "description": "desert island" + , "category": "Travel & Places" + , "aliases": [ + "desert_island" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿž๏ธ" + , "description": "national park" + , "category": "Travel & Places" + , "aliases": [ + "national_park" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŸ๏ธ" + , "description": "stadium" + , "category": "Travel & Places" + , "aliases": [ + "stadium" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ›๏ธ" + , "description": "classical building" + , "category": "Travel & Places" + , "aliases": [ + "classical_building" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ—๏ธ" + , "description": "building construction" + , "category": "Travel & Places" + , "aliases": [ + "building_construction" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿงฑ" + , "description": "brick" + , "category": "Travel & Places" + , "aliases": [ + "bricks" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿชจ" + , "description": "rock" + , "category": "Travel & Places" + , "aliases": [ + "rock" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿชต" + , "description": "wood" + , "category": "Travel & Places" + , "aliases": [ + "wood" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿ›–" + , "description": "hut" + , "category": "Travel & Places" + , "aliases": [ + "hut" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿ˜๏ธ" + , "description": "houses" + , "category": "Travel & Places" + , "aliases": [ + "houses" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿš๏ธ" + , "description": "derelict house" + , "category": "Travel & Places" + , "aliases": [ + "derelict_house" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ " + , "description": "house" + , "category": "Travel & Places" + , "aliases": [ + "house" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿก" + , "description": "house with garden" + , "category": "Travel & Places" + , "aliases": [ + "house_with_garden" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿข" + , "description": "office building" + , "category": "Travel & Places" + , "aliases": [ + "office" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฃ" + , "description": "Japanese post office" + , "category": "Travel & Places" + , "aliases": [ + "post_office" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿค" + , "description": "post office" + , "category": "Travel & Places" + , "aliases": [ + "european_post_office" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅ" + , "description": "hospital" + , "category": "Travel & Places" + , "aliases": [ + "hospital" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฆ" + , "description": "bank" + , "category": "Travel & Places" + , "aliases": [ + "bank" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿจ" + , "description": "hotel" + , "category": "Travel & Places" + , "aliases": [ + "hotel" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฉ" + , "description": "love hotel" + , "category": "Travel & Places" + , "aliases": [ + "love_hotel" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿช" + , "description": "convenience store" + , "category": "Travel & Places" + , "aliases": [ + "convenience_store" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿซ" + , "description": "school" + , "category": "Travel & Places" + , "aliases": [ + "school" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฌ" + , "description": "department store" + , "category": "Travel & Places" + , "aliases": [ + "department_store" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿญ" + , "description": "factory" + , "category": "Travel & Places" + , "aliases": [ + "factory" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฏ" + , "description": "Japanese castle" + , "category": "Travel & Places" + , "aliases": [ + "japanese_castle" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฐ" + , "description": "castle" + , "category": "Travel & Places" + , "aliases": [ + "european_castle" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’’" + , "description": "wedding" + , "category": "Travel & Places" + , "aliases": [ + "wedding" + ] + , "tags": [ + "marriage" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ—ผ" + , "description": "Tokyo tower" + , "category": "Travel & Places" + , "aliases": [ + "tokyo_tower" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ—ฝ" + , "description": "Statue of Liberty" + , "category": "Travel & Places" + , "aliases": [ + "statue_of_liberty" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ›ช" + , "description": "church" + , "category": "Travel & Places" + , "aliases": [ + "church" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•Œ" + , "description": "mosque" + , "category": "Travel & Places" + , "aliases": [ + "mosque" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ›•" + , "description": "hindu temple" + , "category": "Travel & Places" + , "aliases": [ + "hindu_temple" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿ•" + , "description": "synagogue" + , "category": "Travel & Places" + , "aliases": [ + "synagogue" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "โ›ฉ๏ธ" + , "description": "shinto shrine" + , "category": "Travel & Places" + , "aliases": [ + "shinto_shrine" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ•‹" + , "description": "kaaba" + , "category": "Travel & Places" + , "aliases": [ + "kaaba" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "โ›ฒ" + , "description": "fountain" + , "category": "Travel & Places" + , "aliases": [ + "fountain" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "โ›บ" + , "description": "tent" + , "category": "Travel & Places" + , "aliases": [ + "tent" + ] + , "tags": [ + "camping" + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ" + , "description": "foggy" + , "category": "Travel & Places" + , "aliases": [ + "foggy" + ] + , "tags": [ + "karl" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒƒ" + , "description": "night with stars" + , "category": "Travel & Places" + , "aliases": [ + "night_with_stars" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ™๏ธ" + , "description": "cityscape" + , "category": "Travel & Places" + , "aliases": [ + "cityscape" + ] + , "tags": [ + "skyline" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŒ„" + , "description": "sunrise over mountains" + , "category": "Travel & Places" + , "aliases": [ + "sunrise_over_mountains" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ…" + , "description": "sunrise" + , "category": "Travel & Places" + , "aliases": [ + "sunrise" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ†" + , "description": "cityscape at dusk" + , "category": "Travel & Places" + , "aliases": [ + "city_sunset" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ‡" + , "description": "sunset" + , "category": "Travel & Places" + , "aliases": [ + "city_sunrise" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ‰" + , "description": "bridge at night" + , "category": "Travel & Places" + , "aliases": [ + "bridge_at_night" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ™จ๏ธ" + , "description": "hot springs" + , "category": "Travel & Places" + , "aliases": [ + "hotsprings" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽ " + , "description": "carousel horse" + , "category": "Travel & Places" + , "aliases": [ + "carousel_horse" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›" + , "description": "playground slide" + , "category": "Travel & Places" + , "aliases": [ + "playground_slide" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐ŸŽก" + , "description": "ferris wheel" + , "category": "Travel & Places" + , "aliases": [ + "ferris_wheel" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽข" + , "description": "roller coaster" + , "category": "Travel & Places" + , "aliases": [ + "roller_coaster" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ˆ" + , "description": "barber pole" + , "category": "Travel & Places" + , "aliases": [ + "barber" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽช" + , "description": "circus tent" + , "category": "Travel & Places" + , "aliases": [ + "circus_tent" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš‚" + , "description": "locomotive" + , "category": "Travel & Places" + , "aliases": [ + "steam_locomotive" + ] + , "tags": [ + "train" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšƒ" + , "description": "railway car" + , "category": "Travel & Places" + , "aliases": [ + "railway_car" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš„" + , "description": "high-speed train" + , "category": "Travel & Places" + , "aliases": [ + "bullettrain_side" + ] + , "tags": [ + "train" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš…" + , "description": "bullet train" + , "category": "Travel & Places" + , "aliases": [ + "bullettrain_front" + ] + , "tags": [ + "train" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš†" + , "description": "train" + , "category": "Travel & Places" + , "aliases": [ + "train2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš‡" + , "description": "metro" + , "category": "Travel & Places" + , "aliases": [ + "metro" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšˆ" + , "description": "light rail" + , "category": "Travel & Places" + , "aliases": [ + "light_rail" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš‰" + , "description": "station" + , "category": "Travel & Places" + , "aliases": [ + "station" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸšŠ" + , "description": "tram" + , "category": "Travel & Places" + , "aliases": [ + "tram" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš" + , "description": "monorail" + , "category": "Travel & Places" + , "aliases": [ + "monorail" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšž" + , "description": "mountain railway" + , "category": "Travel & Places" + , "aliases": [ + "mountain_railway" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš‹" + , "description": "tram car" + , "category": "Travel & Places" + , "aliases": [ + "train" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸšŒ" + , "description": "bus" + , "category": "Travel & Places" + , "aliases": [ + "bus" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš" + , "description": "oncoming bus" + , "category": "Travel & Places" + , "aliases": [ + "oncoming_bus" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸšŽ" + , "description": "trolleybus" + , "category": "Travel & Places" + , "aliases": [ + "trolleybus" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš" + , "description": "minibus" + , "category": "Travel & Places" + , "aliases": [ + "minibus" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš‘" + , "description": "ambulance" + , "category": "Travel & Places" + , "aliases": [ + "ambulance" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš’" + , "description": "fire engine" + , "category": "Travel & Places" + , "aliases": [ + "fire_engine" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš“" + , "description": "police car" + , "category": "Travel & Places" + , "aliases": [ + "police_car" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš”" + , "description": "oncoming police car" + , "category": "Travel & Places" + , "aliases": [ + "oncoming_police_car" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš•" + , "description": "taxi" + , "category": "Travel & Places" + , "aliases": [ + "taxi" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš–" + , "description": "oncoming taxi" + , "category": "Travel & Places" + , "aliases": [ + "oncoming_taxi" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš—" + , "description": "automobile" + , "category": "Travel & Places" + , "aliases": [ + "car" + , "red_car" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš˜" + , "description": "oncoming automobile" + , "category": "Travel & Places" + , "aliases": [ + "oncoming_automobile" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš™" + , "description": "sport utility vehicle" + , "category": "Travel & Places" + , "aliases": [ + "blue_car" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›ป" + , "description": "pickup truck" + , "category": "Travel & Places" + , "aliases": [ + "pickup_truck" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿšš" + , "description": "delivery truck" + , "category": "Travel & Places" + , "aliases": [ + "truck" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš›" + , "description": "articulated lorry" + , "category": "Travel & Places" + , "aliases": [ + "articulated_lorry" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšœ" + , "description": "tractor" + , "category": "Travel & Places" + , "aliases": [ + "tractor" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽ๏ธ" + , "description": "racing car" + , "category": "Travel & Places" + , "aliases": [ + "racing_car" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ๏ธ" + , "description": "motorcycle" + , "category": "Travel & Places" + , "aliases": [ + "motorcycle" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ›ต" + , "description": "motor scooter" + , "category": "Travel & Places" + , "aliases": [ + "motor_scooter" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฆฝ" + , "description": "manual wheelchair" + , "category": "Travel & Places" + , "aliases": [ + "manual_wheelchair" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿฆผ" + , "description": "motorized wheelchair" + , "category": "Travel & Places" + , "aliases": [ + "motorized_wheelchair" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿ›บ" + , "description": "auto rickshaw" + , "category": "Travel & Places" + , "aliases": [ + "auto_rickshaw" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿšฒ" + , "description": "bicycle" + , "category": "Travel & Places" + , "aliases": [ + "bike" + ] + , "tags": [ + "bicycle" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›ด" + , "description": "kick scooter" + , "category": "Travel & Places" + , "aliases": [ + "kick_scooter" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿ›น" + , "description": "skateboard" + , "category": "Travel & Places" + , "aliases": [ + "skateboard" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ›ผ" + , "description": "roller skate" + , "category": "Travel & Places" + , "aliases": [ + "roller_skate" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿš" + , "description": "bus stop" + , "category": "Travel & Places" + , "aliases": [ + "busstop" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›ฃ๏ธ" + , "description": "motorway" + , "category": "Travel & Places" + , "aliases": [ + "motorway" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ›ค๏ธ" + , "description": "railway track" + , "category": "Travel & Places" + , "aliases": [ + "railway_track" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ›ข๏ธ" + , "description": "oil drum" + , "category": "Travel & Places" + , "aliases": [ + "oil_drum" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "โ›ฝ" + , "description": "fuel pump" + , "category": "Travel & Places" + , "aliases": [ + "fuelpump" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›ž" + , "description": "wheel" + , "category": "Travel & Places" + , "aliases": [ + "wheel" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿšจ" + , "description": "police car light" + , "category": "Travel & Places" + , "aliases": [ + "rotating_light" + ] + , "tags": [ + "911" + , "emergency" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšฅ" + , "description": "horizontal traffic light" + , "category": "Travel & Places" + , "aliases": [ + "traffic_light" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšฆ" + , "description": "vertical traffic light" + , "category": "Travel & Places" + , "aliases": [ + "vertical_traffic_light" + ] + , "tags": [ + "semaphore" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›‘" + , "description": "stop sign" + , "category": "Travel & Places" + , "aliases": [ + "stop_sign" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿšง" + , "description": "construction" + , "category": "Travel & Places" + , "aliases": [ + "construction" + ] + , "tags": [ + "wip" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โš“" + , "description": "anchor" + , "category": "Travel & Places" + , "aliases": [ + "anchor" + ] + , "tags": [ + "ship" + ] + , "unicode_version": "4.1" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›Ÿ" + , "description": "ring buoy" + , "category": "Travel & Places" + , "aliases": [ + "ring_buoy" + ] + , "tags": [ + "life preserver" + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "โ›ต" + , "description": "sailboat" + , "category": "Travel & Places" + , "aliases": [ + "boat" + , "sailboat" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›ถ" + , "description": "canoe" + , "category": "Travel & Places" + , "aliases": [ + "canoe" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿšค" + , "description": "speedboat" + , "category": "Travel & Places" + , "aliases": [ + "speedboat" + ] + , "tags": [ + "ship" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›ณ๏ธ" + , "description": "passenger ship" + , "category": "Travel & Places" + , "aliases": [ + "passenger_ship" + ] + , "tags": [ + "cruise" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "โ›ด๏ธ" + , "description": "ferry" + , "category": "Travel & Places" + , "aliases": [ + "ferry" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ›ฅ๏ธ" + , "description": "motor boat" + , "category": "Travel & Places" + , "aliases": [ + "motor_boat" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿšข" + , "description": "ship" + , "category": "Travel & Places" + , "aliases": [ + "ship" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โœˆ๏ธ" + , "description": "airplane" + , "category": "Travel & Places" + , "aliases": [ + "airplane" + ] + , "tags": [ + "flight" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›ฉ๏ธ" + , "description": "small airplane" + , "category": "Travel & Places" + , "aliases": [ + "small_airplane" + ] + , "tags": [ + "flight" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ›ซ" + , "description": "airplane departure" + , "category": "Travel & Places" + , "aliases": [ + "flight_departure" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ›ฌ" + , "description": "airplane arrival" + , "category": "Travel & Places" + , "aliases": [ + "flight_arrival" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿช‚" + , "description": "parachute" + , "category": "Travel & Places" + , "aliases": [ + "parachute" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿ’บ" + , "description": "seat" + , "category": "Travel & Places" + , "aliases": [ + "seat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš" + , "description": "helicopter" + , "category": "Travel & Places" + , "aliases": [ + "helicopter" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸšŸ" + , "description": "suspension railway" + , "category": "Travel & Places" + , "aliases": [ + "suspension_railway" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿš " + , "description": "mountain cableway" + , "category": "Travel & Places" + , "aliases": [ + "mountain_cableway" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšก" + , "description": "aerial tramway" + , "category": "Travel & Places" + , "aliases": [ + "aerial_tramway" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›ฐ๏ธ" + , "description": "satellite" + , "category": "Travel & Places" + , "aliases": [ + "artificial_satellite" + ] + , "tags": [ + "orbit" + , "space" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿš€" + , "description": "rocket" + , "category": "Travel & Places" + , "aliases": [ + "rocket" + ] + , "tags": [ + "ship" + , "launch" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›ธ" + , "description": "flying saucer" + , "category": "Travel & Places" + , "aliases": [ + "flying_saucer" + ] + , "tags": [ + "ufo" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ›Ž๏ธ" + , "description": "bellhop bell" + , "category": "Travel & Places" + , "aliases": [ + "bellhop_bell" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿงณ" + , "description": "luggage" + , "category": "Travel & Places" + , "aliases": [ + "luggage" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "โŒ›" + , "description": "hourglass done" + , "category": "Travel & Places" + , "aliases": [ + "hourglass" + ] + , "tags": [ + "time" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โณ" + , "description": "hourglass not done" + , "category": "Travel & Places" + , "aliases": [ + "hourglass_flowing_sand" + ] + , "tags": [ + "time" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โŒš" + , "description": "watch" + , "category": "Travel & Places" + , "aliases": [ + "watch" + ] + , "tags": [ + "time" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โฐ" + , "description": "alarm clock" + , "category": "Travel & Places" + , "aliases": [ + "alarm_clock" + ] + , "tags": [ + "morning" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โฑ๏ธ" + , "description": "stopwatch" + , "category": "Travel & Places" + , "aliases": [ + "stopwatch" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.1" + } +, { + "emoji": "โฒ๏ธ" + , "description": "timer clock" + , "category": "Travel & Places" + , "aliases": [ + "timer_clock" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ•ฐ๏ธ" + , "description": "mantelpiece clock" + , "category": "Travel & Places" + , "aliases": [ + "mantelpiece_clock" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ•›" + , "description": "twelve oโ€™clock" + , "category": "Travel & Places" + , "aliases": [ + "clock12" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•ง" + , "description": "twelve-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock1230" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•" + , "description": "one oโ€™clock" + , "category": "Travel & Places" + , "aliases": [ + "clock1" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•œ" + , "description": "one-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock130" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•‘" + , "description": "two oโ€™clock" + , "category": "Travel & Places" + , "aliases": [ + "clock2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•" + , "description": "two-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock230" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•’" + , "description": "three oโ€™clock" + , "category": "Travel & Places" + , "aliases": [ + "clock3" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•ž" + , "description": "three-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock330" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•“" + , "description": "four oโ€™clock" + , "category": "Travel & Places" + , "aliases": [ + "clock4" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•Ÿ" + , "description": "four-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock430" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•”" + , "description": "five oโ€™clock" + , "category": "Travel & Places" + , "aliases": [ + "clock5" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ• " + , "description": "five-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock530" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ••" + , "description": "six oโ€™clock" + , "category": "Travel & Places" + , "aliases": [ + "clock6" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•ก" + , "description": "six-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock630" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•–" + , "description": "seven oโ€™clock" + , "category": "Travel & Places" + , "aliases": [ + "clock7" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•ข" + , "description": "seven-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock730" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•—" + , "description": "eight oโ€™clock" + , "category": "Travel & Places" + , "aliases": [ + "clock8" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•ฃ" + , "description": "eight-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock830" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•˜" + , "description": "nine oโ€™clock" + , "category": "Travel & Places" + , "aliases": [ + "clock9" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•ค" + , "description": "nine-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock930" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•™" + , "description": "ten oโ€™clock" + , "category": "Travel & Places" + , "aliases": [ + "clock10" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•ฅ" + , "description": "ten-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock1030" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•š" + , "description": "eleven oโ€™clock" + , "category": "Travel & Places" + , "aliases": [ + "clock11" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•ฆ" + , "description": "eleven-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock1130" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ‘" + , "description": "new moon" + , "category": "Travel & Places" + , "aliases": [ + "new_moon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ’" + , "description": "waxing crescent moon" + , "category": "Travel & Places" + , "aliases": [ + "waxing_crescent_moon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ“" + , "description": "first quarter moon" + , "category": "Travel & Places" + , "aliases": [ + "first_quarter_moon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ”" + , "description": "waxing gibbous moon" + , "category": "Travel & Places" + , "aliases": [ + "moon" + , "waxing_gibbous_moon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ•" + , "description": "full moon" + , "category": "Travel & Places" + , "aliases": [ + "full_moon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ–" + , "description": "waning gibbous moon" + , "category": "Travel & Places" + , "aliases": [ + "waning_gibbous_moon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ—" + , "description": "last quarter moon" + , "category": "Travel & Places" + , "aliases": [ + "last_quarter_moon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ˜" + , "description": "waning crescent moon" + , "category": "Travel & Places" + , "aliases": [ + "waning_crescent_moon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ™" + , "description": "crescent moon" + , "category": "Travel & Places" + , "aliases": [ + "crescent_moon" + ] + , "tags": [ + "night" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒš" + , "description": "new moon face" + , "category": "Travel & Places" + , "aliases": [ + "new_moon_with_face" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ›" + , "description": "first quarter moon face" + , "category": "Travel & Places" + , "aliases": [ + "first_quarter_moon_with_face" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒœ" + , "description": "last quarter moon face" + , "category": "Travel & Places" + , "aliases": [ + "last_quarter_moon_with_face" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒก๏ธ" + , "description": "thermometer" + , "category": "Travel & Places" + , "aliases": [ + "thermometer" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "โ˜€๏ธ" + , "description": "sun" + , "category": "Travel & Places" + , "aliases": [ + "sunny" + ] + , "tags": [ + "weather" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ" + , "description": "full moon face" + , "category": "Travel & Places" + , "aliases": [ + "full_moon_with_face" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒž" + , "description": "sun with face" + , "category": "Travel & Places" + , "aliases": [ + "sun_with_face" + ] + , "tags": [ + "summer" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿช" + , "description": "ringed planet" + , "category": "Travel & Places" + , "aliases": [ + "ringed_planet" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "โญ" + , "description": "star" + , "category": "Travel & Places" + , "aliases": [ + "star" + ] + , "tags": [ + ] + , "unicode_version": "5.1" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒŸ" + , "description": "glowing star" + , "category": "Travel & Places" + , "aliases": [ + "star2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ " + , "description": "shooting star" + , "category": "Travel & Places" + , "aliases": [ + "stars" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒŒ" + , "description": "milky way" + , "category": "Travel & Places" + , "aliases": [ + "milky_way" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ˜๏ธ" + , "description": "cloud" + , "category": "Travel & Places" + , "aliases": [ + "cloud" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ›…" + , "description": "sun behind cloud" + , "category": "Travel & Places" + , "aliases": [ + "partly_sunny" + ] + , "tags": [ + "weather" + , "cloud" + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "โ›ˆ๏ธ" + , "description": "cloud with lightning and rain" + , "category": "Travel & Places" + , "aliases": [ + "cloud_with_lightning_and_rain" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŒค๏ธ" + , "description": "sun behind small cloud" + , "category": "Travel & Places" + , "aliases": [ + "sun_behind_small_cloud" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŒฅ๏ธ" + , "description": "sun behind large cloud" + , "category": "Travel & Places" + , "aliases": [ + "sun_behind_large_cloud" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŒฆ๏ธ" + , "description": "sun behind rain cloud" + , "category": "Travel & Places" + , "aliases": [ + "sun_behind_rain_cloud" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŒง๏ธ" + , "description": "cloud with rain" + , "category": "Travel & Places" + , "aliases": [ + "cloud_with_rain" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŒจ๏ธ" + , "description": "cloud with snow" + , "category": "Travel & Places" + , "aliases": [ + "cloud_with_snow" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŒฉ๏ธ" + , "description": "cloud with lightning" + , "category": "Travel & Places" + , "aliases": [ + "cloud_with_lightning" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŒช๏ธ" + , "description": "tornado" + , "category": "Travel & Places" + , "aliases": [ + "tornado" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŒซ๏ธ" + , "description": "fog" + , "category": "Travel & Places" + , "aliases": [ + "fog" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŒฌ๏ธ" + , "description": "wind face" + , "category": "Travel & Places" + , "aliases": [ + "wind_face" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŒ€" + , "description": "cyclone" + , "category": "Travel & Places" + , "aliases": [ + "cyclone" + ] + , "tags": [ + "swirl" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒˆ" + , "description": "rainbow" + , "category": "Travel & Places" + , "aliases": [ + "rainbow" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒ‚" + , "description": "closed umbrella" + , "category": "Travel & Places" + , "aliases": [ + "closed_umbrella" + ] + , "tags": [ + "weather" + , "rain" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ˜‚๏ธ" + , "description": "umbrella" + , "category": "Travel & Places" + , "aliases": [ + "open_umbrella" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "โ˜”" + , "description": "umbrella with rain drops" + , "category": "Travel & Places" + , "aliases": [ + "umbrella" + ] + , "tags": [ + "rain" + , "weather" + ] + , "unicode_version": "4.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ›ฑ๏ธ" + , "description": "umbrella on ground" + , "category": "Travel & Places" + , "aliases": [ + "parasol_on_ground" + ] + , "tags": [ + "beach_umbrella" + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + } +, { + "emoji": "โšก" + , "description": "high voltage" + , "category": "Travel & Places" + , "aliases": [ + "zap" + ] + , "tags": [ + "lightning" + , "thunder" + ] + , "unicode_version": "4.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ„๏ธ" + , "description": "snowflake" + , "category": "Travel & Places" + , "aliases": [ + "snowflake" + ] + , "tags": [ + "winter" + , "cold" + , "weather" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ˜ƒ๏ธ" + , "description": "snowman" + , "category": "Travel & Places" + , "aliases": [ + "snowman_with_snow" + ] + , "tags": [ + "winter" + , "christmas" + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "โ›„" + , "description": "snowman without snow" + , "category": "Travel & Places" + , "aliases": [ + "snowman" + ] + , "tags": [ + "winter" + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "โ˜„๏ธ" + , "description": "comet" + , "category": "Travel & Places" + , "aliases": [ + "comet" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ”ฅ" + , "description": "fire" + , "category": "Travel & Places" + , "aliases": [ + "fire" + ] + , "tags": [ + "burn" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ง" + , "description": "droplet" + , "category": "Travel & Places" + , "aliases": [ + "droplet" + ] + , "tags": [ + "water" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŒŠ" + , "description": "water wave" + , "category": "Travel & Places" + , "aliases": [ + "ocean" + ] + , "tags": [ + "sea" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽƒ" + , "description": "jack-o-lantern" + , "category": "Activities" + , "aliases": [ + "jack_o_lantern" + ] + , "tags": [ + "halloween" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽ„" + , "description": "Christmas tree" + , "category": "Activities" + , "aliases": [ + "christmas_tree" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽ†" + , "description": "fireworks" + , "category": "Activities" + , "aliases": [ + "fireworks" + ] + , "tags": [ + "festival" + , "celebration" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽ‡" + , "description": "sparkler" + , "category": "Activities" + , "aliases": [ + "sparkler" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿงจ" + , "description": "firecracker" + , "category": "Activities" + , "aliases": [ + "firecracker" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "โœจ" + , "description": "sparkles" + , "category": "Activities" + , "aliases": [ + "sparkles" + ] + , "tags": [ + "shiny" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽˆ" + , "description": "balloon" + , "category": "Activities" + , "aliases": [ + "balloon" + ] + , "tags": [ + "party" + , "birthday" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽ‰" + , "description": "party popper" + , "category": "Activities" + , "aliases": [ + "tada" + ] + , "tags": [ + "hooray" + , "party" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽŠ" + , "description": "confetti ball" + , "category": "Activities" + , "aliases": [ + "confetti_ball" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽ‹" + , "description": "tanabata tree" + , "category": "Activities" + , "aliases": [ + "tanabata_tree" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽ" + , "description": "pine decoration" + , "category": "Activities" + , "aliases": [ + "bamboo" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽŽ" + , "description": "Japanese dolls" + , "category": "Activities" + , "aliases": [ + "dolls" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽ" + , "description": "carp streamer" + , "category": "Activities" + , "aliases": [ + "flags" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽ" + , "description": "wind chime" + , "category": "Activities" + , "aliases": [ + "wind_chime" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽ‘" + , "description": "moon viewing ceremony" + , "category": "Activities" + , "aliases": [ + "rice_scene" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿงง" + , "description": "red envelope" + , "category": "Activities" + , "aliases": [ + "red_envelope" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐ŸŽ€" + , "description": "ribbon" + , "category": "Activities" + , "aliases": [ + "ribbon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽ" + , "description": "wrapped gift" + , "category": "Activities" + , "aliases": [ + "gift" + ] + , "tags": [ + "present" + , "birthday" + , "christmas" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽ—๏ธ" + , "description": "reminder ribbon" + , "category": "Activities" + , "aliases": [ + "reminder_ribbon" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŽŸ๏ธ" + , "description": "admission tickets" + , "category": "Activities" + , "aliases": [ + "tickets" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŽซ" + , "description": "ticket" + , "category": "Activities" + , "aliases": [ + "ticket" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽ–๏ธ" + , "description": "military medal" + , "category": "Activities" + , "aliases": [ + "medal_military" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ†" + , "description": "trophy" + , "category": "Activities" + , "aliases": [ + "trophy" + ] + , "tags": [ + "award" + , "contest" + , "winner" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ…" + , "description": "sports medal" + , "category": "Activities" + , "aliases": [ + "medal_sports" + ] + , "tags": [ + "gold" + , "winner" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿฅ‡" + , "description": "1st place medal" + , "category": "Activities" + , "aliases": [ + "1st_place_medal" + ] + , "tags": [ + "gold" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฅˆ" + , "description": "2nd place medal" + , "category": "Activities" + , "aliases": [ + "2nd_place_medal" + ] + , "tags": [ + "silver" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฅ‰" + , "description": "3rd place medal" + , "category": "Activities" + , "aliases": [ + "3rd_place_medal" + ] + , "tags": [ + "bronze" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "โšฝ" + , "description": "soccer ball" + , "category": "Activities" + , "aliases": [ + "soccer" + ] + , "tags": [ + "sports" + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "โšพ" + , "description": "baseball" + , "category": "Activities" + , "aliases": [ + "baseball" + ] + , "tags": [ + "sports" + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸฅŽ" + , "description": "softball" + , "category": "Activities" + , "aliases": [ + "softball" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ€" + , "description": "basketball" + , "category": "Activities" + , "aliases": [ + "basketball" + ] + , "tags": [ + "sports" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ" + , "description": "volleyball" + , "category": "Activities" + , "aliases": [ + "volleyball" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿˆ" + , "description": "american football" + , "category": "Activities" + , "aliases": [ + "football" + ] + , "tags": [ + "sports" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‰" + , "description": "rugby football" + , "category": "Activities" + , "aliases": [ + "rugby_football" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽพ" + , "description": "tennis" + , "category": "Activities" + , "aliases": [ + "tennis" + ] + , "tags": [ + "sports" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅ" + , "description": "flying disc" + , "category": "Activities" + , "aliases": [ + "flying_disc" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐ŸŽณ" + , "description": "bowling" + , "category": "Activities" + , "aliases": [ + "bowling" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ" + , "description": "cricket game" + , "category": "Activities" + , "aliases": [ + "cricket_game" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ‘" + , "description": "field hockey" + , "category": "Activities" + , "aliases": [ + "field_hockey" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ’" + , "description": "ice hockey" + , "category": "Activities" + , "aliases": [ + "ice_hockey" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿฅ" + , "description": "lacrosse" + , "category": "Activities" + , "aliases": [ + "lacrosse" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ“" + , "description": "ping pong" + , "category": "Activities" + , "aliases": [ + "ping_pong" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿธ" + , "description": "badminton" + , "category": "Activities" + , "aliases": [ + "badminton" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸฅŠ" + , "description": "boxing glove" + , "category": "Activities" + , "aliases": [ + "boxing_glove" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฅ‹" + , "description": "martial arts uniform" + , "category": "Activities" + , "aliases": [ + "martial_arts_uniform" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿฅ…" + , "description": "goal net" + , "category": "Activities" + , "aliases": [ + "goal_net" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "โ›ณ" + , "description": "flag in hole" + , "category": "Activities" + , "aliases": [ + "golf" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "โ›ธ๏ธ" + , "description": "ice skate" + , "category": "Activities" + , "aliases": [ + "ice_skate" + ] + , "tags": [ + "skating" + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŽฃ" + , "description": "fishing pole" + , "category": "Activities" + , "aliases": [ + "fishing_pole_and_fish" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿคฟ" + , "description": "diving mask" + , "category": "Activities" + , "aliases": [ + "diving_mask" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐ŸŽฝ" + , "description": "running shirt" + , "category": "Activities" + , "aliases": [ + "running_shirt_with_sash" + ] + , "tags": [ + "marathon" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽฟ" + , "description": "skis" + , "category": "Activities" + , "aliases": [ + "ski" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›ท" + , "description": "sled" + , "category": "Activities" + , "aliases": [ + "sled" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐ŸฅŒ" + , "description": "curling stone" + , "category": "Activities" + , "aliases": [ + "curling_stone" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐ŸŽฏ" + , "description": "bullseye" + , "category": "Activities" + , "aliases": [ + "dart" + ] + , "tags": [ + "target" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿช€" + , "description": "yo-yo" + , "category": "Activities" + , "aliases": [ + "yo_yo" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿช" + , "description": "kite" + , "category": "Activities" + , "aliases": [ + "kite" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐ŸŽฑ" + , "description": "pool 8 ball" + , "category": "Activities" + , "aliases": [ + "8ball" + ] + , "tags": [ + "pool" + , "billiards" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”ฎ" + , "description": "crystal ball" + , "category": "Activities" + , "aliases": [ + "crystal_ball" + ] + , "tags": [ + "fortune" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿช„" + , "description": "magic wand" + , "category": "Activities" + , "aliases": [ + "magic_wand" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿงฟ" + , "description": "nazar amulet" + , "category": "Activities" + , "aliases": [ + "nazar_amulet" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿชฌ" + , "description": "hamsa" + , "category": "Activities" + , "aliases": [ + "hamsa" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐ŸŽฎ" + , "description": "video game" + , "category": "Activities" + , "aliases": [ + "video_game" + ] + , "tags": [ + "play" + , "controller" + , "console" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•น๏ธ" + , "description": "joystick" + , "category": "Activities" + , "aliases": [ + "joystick" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŽฐ" + , "description": "slot machine" + , "category": "Activities" + , "aliases": [ + "slot_machine" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽฒ" + , "description": "game die" + , "category": "Activities" + , "aliases": [ + "game_die" + ] + , "tags": [ + "dice" + , "gambling" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿงฉ" + , "description": "puzzle piece" + , "category": "Activities" + , "aliases": [ + "jigsaw" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿงธ" + , "description": "teddy bear" + , "category": "Activities" + , "aliases": [ + "teddy_bear" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿช…" + , "description": "piรฑata" + , "category": "Activities" + , "aliases": [ + "pinata" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿชฉ" + , "description": "mirror ball" + , "category": "Activities" + , "aliases": [ + "mirror_ball" + ] + , "tags": [ + "disco" + , "party" + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿช†" + , "description": "nesting dolls" + , "category": "Activities" + , "aliases": [ + "nesting_dolls" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "โ™ ๏ธ" + , "description": "spade suit" + , "category": "Activities" + , "aliases": [ + "spades" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ™ฅ๏ธ" + , "description": "heart suit" + , "category": "Activities" + , "aliases": [ + "hearts" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ™ฆ๏ธ" + , "description": "diamond suit" + , "category": "Activities" + , "aliases": [ + "diamonds" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ™ฃ๏ธ" + , "description": "club suit" + , "category": "Activities" + , "aliases": [ + "clubs" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ™Ÿ๏ธ" + , "description": "chess pawn" + , "category": "Activities" + , "aliases": [ + "chess_pawn" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿƒ" + , "description": "joker" + , "category": "Activities" + , "aliases": [ + "black_joker" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ€„" + , "description": "mahjong red dragon" + , "category": "Activities" + , "aliases": [ + "mahjong" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽด" + , "description": "flower playing cards" + , "category": "Activities" + , "aliases": [ + "flower_playing_cards" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽญ" + , "description": "performing arts" + , "category": "Activities" + , "aliases": [ + "performing_arts" + ] + , "tags": [ + "theater" + , "drama" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ–ผ๏ธ" + , "description": "framed picture" + , "category": "Activities" + , "aliases": [ + "framed_picture" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŽจ" + , "description": "artist palette" + , "category": "Activities" + , "aliases": [ + "art" + ] + , "tags": [ + "design" + , "paint" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿงต" + , "description": "thread" + , "category": "Activities" + , "aliases": [ + "thread" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿชก" + , "description": "sewing needle" + , "category": "Activities" + , "aliases": [ + "sewing_needle" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿงถ" + , "description": "yarn" + , "category": "Activities" + , "aliases": [ + "yarn" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿชข" + , "description": "knot" + , "category": "Activities" + , "aliases": [ + "knot" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿ‘“" + , "description": "glasses" + , "category": "Objects" + , "aliases": [ + "eyeglasses" + ] + , "tags": [ + "glasses" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•ถ๏ธ" + , "description": "sunglasses" + , "category": "Objects" + , "aliases": [ + "dark_sunglasses" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿฅฝ" + , "description": "goggles" + , "category": "Objects" + , "aliases": [ + "goggles" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฅผ" + , "description": "lab coat" + , "category": "Objects" + , "aliases": [ + "lab_coat" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฆบ" + , "description": "safety vest" + , "category": "Objects" + , "aliases": [ + "safety_vest" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿ‘”" + , "description": "necktie" + , "category": "Objects" + , "aliases": [ + "necktie" + ] + , "tags": [ + "shirt" + , "formal" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘•" + , "description": "t-shirt" + , "category": "Objects" + , "aliases": [ + "shirt" + , "tshirt" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘–" + , "description": "jeans" + , "category": "Objects" + , "aliases": [ + "jeans" + ] + , "tags": [ + "pants" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿงฃ" + , "description": "scarf" + , "category": "Objects" + , "aliases": [ + "scarf" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿงค" + , "description": "gloves" + , "category": "Objects" + , "aliases": [ + "gloves" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿงฅ" + , "description": "coat" + , "category": "Objects" + , "aliases": [ + "coat" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿงฆ" + , "description": "socks" + , "category": "Objects" + , "aliases": [ + "socks" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ‘—" + , "description": "dress" + , "category": "Objects" + , "aliases": [ + "dress" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘˜" + , "description": "kimono" + , "category": "Objects" + , "aliases": [ + "kimono" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅป" + , "description": "sari" + , "category": "Objects" + , "aliases": [ + "sari" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿฉฑ" + , "description": "one-piece swimsuit" + , "category": "Objects" + , "aliases": [ + "one_piece_swimsuit" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿฉฒ" + , "description": "briefs" + , "category": "Objects" + , "aliases": [ + "swim_brief" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿฉณ" + , "description": "shorts" + , "category": "Objects" + , "aliases": [ + "shorts" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿ‘™" + , "description": "bikini" + , "category": "Objects" + , "aliases": [ + "bikini" + ] + , "tags": [ + "beach" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘š" + , "description": "womanโ€™s clothes" + , "category": "Objects" + , "aliases": [ + "womans_clothes" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘›" + , "description": "purse" + , "category": "Objects" + , "aliases": [ + "purse" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘œ" + , "description": "handbag" + , "category": "Objects" + , "aliases": [ + "handbag" + ] + , "tags": [ + "bag" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘" + , "description": "clutch bag" + , "category": "Objects" + , "aliases": [ + "pouch" + ] + , "tags": [ + "bag" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›๏ธ" + , "description": "shopping bags" + , "category": "Objects" + , "aliases": [ + "shopping" + ] + , "tags": [ + "bags" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŽ’" + , "description": "backpack" + , "category": "Objects" + , "aliases": [ + "school_satchel" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฉด" + , "description": "thong sandal" + , "category": "Objects" + , "aliases": [ + "thong_sandal" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿ‘ž" + , "description": "manโ€™s shoe" + , "category": "Objects" + , "aliases": [ + "mans_shoe" + , "shoe" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘Ÿ" + , "description": "running shoe" + , "category": "Objects" + , "aliases": [ + "athletic_shoe" + ] + , "tags": [ + "sneaker" + , "sport" + , "running" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฅพ" + , "description": "hiking boot" + , "category": "Objects" + , "aliases": [ + "hiking_boot" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿฅฟ" + , "description": "flat shoe" + , "category": "Objects" + , "aliases": [ + "flat_shoe" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ‘ " + , "description": "high-heeled shoe" + , "category": "Objects" + , "aliases": [ + "high_heel" + ] + , "tags": [ + "shoe" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘ก" + , "description": "womanโ€™s sandal" + , "category": "Objects" + , "aliases": [ + "sandal" + ] + , "tags": [ + "shoe" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฉฐ" + , "description": "ballet shoes" + , "category": "Objects" + , "aliases": [ + "ballet_shoes" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿ‘ข" + , "description": "womanโ€™s boot" + , "category": "Objects" + , "aliases": [ + "boot" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘‘" + , "description": "crown" + , "category": "Objects" + , "aliases": [ + "crown" + ] + , "tags": [ + "king" + , "queen" + , "royal" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‘’" + , "description": "womanโ€™s hat" + , "category": "Objects" + , "aliases": [ + "womans_hat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽฉ" + , "description": "top hat" + , "category": "Objects" + , "aliases": [ + "tophat" + ] + , "tags": [ + "hat" + , "classy" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽ“" + , "description": "graduation cap" + , "category": "Objects" + , "aliases": [ + "mortar_board" + ] + , "tags": [ + "education" + , "college" + , "university" + , "graduation" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿงข" + , "description": "billed cap" + , "category": "Objects" + , "aliases": [ + "billed_cap" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿช–" + , "description": "military helmet" + , "category": "Objects" + , "aliases": [ + "military_helmet" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "โ›‘๏ธ" + , "description": "rescue workerโ€™s helmet" + , "category": "Objects" + , "aliases": [ + "rescue_worker_helmet" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ“ฟ" + , "description": "prayer beads" + , "category": "Objects" + , "aliases": [ + "prayer_beads" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ’„" + , "description": "lipstick" + , "category": "Objects" + , "aliases": [ + "lipstick" + ] + , "tags": [ + "makeup" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’" + , "description": "ring" + , "category": "Objects" + , "aliases": [ + "ring" + ] + , "tags": [ + "wedding" + , "marriage" + , "engaged" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’Ž" + , "description": "gem stone" + , "category": "Objects" + , "aliases": [ + "gem" + ] + , "tags": [ + "diamond" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”‡" + , "description": "muted speaker" + , "category": "Objects" + , "aliases": [ + "mute" + ] + , "tags": [ + "sound" + , "volume" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”ˆ" + , "description": "speaker low volume" + , "category": "Objects" + , "aliases": [ + "speaker" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”‰" + , "description": "speaker medium volume" + , "category": "Objects" + , "aliases": [ + "sound" + ] + , "tags": [ + "volume" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”Š" + , "description": "speaker high volume" + , "category": "Objects" + , "aliases": [ + "loud_sound" + ] + , "tags": [ + "volume" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ข" + , "description": "loudspeaker" + , "category": "Objects" + , "aliases": [ + "loudspeaker" + ] + , "tags": [ + "announcement" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ฃ" + , "description": "megaphone" + , "category": "Objects" + , "aliases": [ + "mega" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ฏ" + , "description": "postal horn" + , "category": "Objects" + , "aliases": [ + "postal_horn" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ””" + , "description": "bell" + , "category": "Objects" + , "aliases": [ + "bell" + ] + , "tags": [ + "sound" + , "notification" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”•" + , "description": "bell with slash" + , "category": "Objects" + , "aliases": [ + "no_bell" + ] + , "tags": [ + "volume" + , "off" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽผ" + , "description": "musical score" + , "category": "Objects" + , "aliases": [ + "musical_score" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽต" + , "description": "musical note" + , "category": "Objects" + , "aliases": [ + "musical_note" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽถ" + , "description": "musical notes" + , "category": "Objects" + , "aliases": [ + "notes" + ] + , "tags": [ + "music" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽ™๏ธ" + , "description": "studio microphone" + , "category": "Objects" + , "aliases": [ + "studio_microphone" + ] + , "tags": [ + "podcast" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŽš๏ธ" + , "description": "level slider" + , "category": "Objects" + , "aliases": [ + "level_slider" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŽ›๏ธ" + , "description": "control knobs" + , "category": "Objects" + , "aliases": [ + "control_knobs" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŽค" + , "description": "microphone" + , "category": "Objects" + , "aliases": [ + "microphone" + ] + , "tags": [ + "sing" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽง" + , "description": "headphone" + , "category": "Objects" + , "aliases": [ + "headphones" + ] + , "tags": [ + "music" + , "earphones" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ป" + , "description": "radio" + , "category": "Objects" + , "aliases": [ + "radio" + ] + , "tags": [ + "podcast" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽท" + , "description": "saxophone" + , "category": "Objects" + , "aliases": [ + "saxophone" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿช—" + , "description": "accordion" + , "category": "Objects" + , "aliases": [ + "accordion" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐ŸŽธ" + , "description": "guitar" + , "category": "Objects" + , "aliases": [ + "guitar" + ] + , "tags": [ + "rock" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽน" + , "description": "musical keyboard" + , "category": "Objects" + , "aliases": [ + "musical_keyboard" + ] + , "tags": [ + "piano" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽบ" + , "description": "trumpet" + , "category": "Objects" + , "aliases": [ + "trumpet" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽป" + , "description": "violin" + , "category": "Objects" + , "aliases": [ + "violin" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿช•" + , "description": "banjo" + , "category": "Objects" + , "aliases": [ + "banjo" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿฅ" + , "description": "drum" + , "category": "Objects" + , "aliases": [ + "drum" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿช˜" + , "description": "long drum" + , "category": "Objects" + , "aliases": [ + "long_drum" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿ“ฑ" + , "description": "mobile phone" + , "category": "Objects" + , "aliases": [ + "iphone" + ] + , "tags": [ + "smartphone" + , "mobile" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ฒ" + , "description": "mobile phone with arrow" + , "category": "Objects" + , "aliases": [ + "calling" + ] + , "tags": [ + "call" + , "incoming" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ˜Ž๏ธ" + , "description": "telephone" + , "category": "Objects" + , "aliases": [ + "phone" + , "telephone" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ž" + , "description": "telephone receiver" + , "category": "Objects" + , "aliases": [ + "telephone_receiver" + ] + , "tags": [ + "phone" + , "call" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“Ÿ" + , "description": "pager" + , "category": "Objects" + , "aliases": [ + "pager" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ " + , "description": "fax machine" + , "category": "Objects" + , "aliases": [ + "fax" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”‹" + , "description": "battery" + , "category": "Objects" + , "aliases": [ + "battery" + ] + , "tags": [ + "power" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿชซ" + , "description": "low battery" + , "category": "Objects" + , "aliases": [ + "low_battery" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿ”Œ" + , "description": "electric plug" + , "category": "Objects" + , "aliases": [ + "electric_plug" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ป" + , "description": "laptop" + , "category": "Objects" + , "aliases": [ + "computer" + ] + , "tags": [ + "desktop" + , "screen" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ–ฅ๏ธ" + , "description": "desktop computer" + , "category": "Objects" + , "aliases": [ + "desktop_computer" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ–จ๏ธ" + , "description": "printer" + , "category": "Objects" + , "aliases": [ + "printer" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "โŒจ๏ธ" + , "description": "keyboard" + , "category": "Objects" + , "aliases": [ + "keyboard" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ–ฑ๏ธ" + , "description": "computer mouse" + , "category": "Objects" + , "aliases": [ + "computer_mouse" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ–ฒ๏ธ" + , "description": "trackball" + , "category": "Objects" + , "aliases": [ + "trackball" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ’ฝ" + , "description": "computer disk" + , "category": "Objects" + , "aliases": [ + "minidisc" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’พ" + , "description": "floppy disk" + , "category": "Objects" + , "aliases": [ + "floppy_disk" + ] + , "tags": [ + "save" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ฟ" + , "description": "optical disk" + , "category": "Objects" + , "aliases": [ + "cd" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“€" + , "description": "dvd" + , "category": "Objects" + , "aliases": [ + "dvd" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿงฎ" + , "description": "abacus" + , "category": "Objects" + , "aliases": [ + "abacus" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐ŸŽฅ" + , "description": "movie camera" + , "category": "Objects" + , "aliases": [ + "movie_camera" + ] + , "tags": [ + "film" + , "video" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽž๏ธ" + , "description": "film frames" + , "category": "Objects" + , "aliases": [ + "film_strip" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ“ฝ๏ธ" + , "description": "film projector" + , "category": "Objects" + , "aliases": [ + "film_projector" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐ŸŽฌ" + , "description": "clapper board" + , "category": "Objects" + , "aliases": [ + "clapper" + ] + , "tags": [ + "film" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“บ" + , "description": "television" + , "category": "Objects" + , "aliases": [ + "tv" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ท" + , "description": "camera" + , "category": "Objects" + , "aliases": [ + "camera" + ] + , "tags": [ + "photo" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ธ" + , "description": "camera with flash" + , "category": "Objects" + , "aliases": [ + "camera_flash" + ] + , "tags": [ + "photo" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ“น" + , "description": "video camera" + , "category": "Objects" + , "aliases": [ + "video_camera" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ผ" + , "description": "videocassette" + , "category": "Objects" + , "aliases": [ + "vhs" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”" + , "description": "magnifying glass tilted left" + , "category": "Objects" + , "aliases": [ + "mag" + ] + , "tags": [ + "search" + , "zoom" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”Ž" + , "description": "magnifying glass tilted right" + , "category": "Objects" + , "aliases": [ + "mag_right" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ•ฏ๏ธ" + , "description": "candle" + , "category": "Objects" + , "aliases": [ + "candle" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ’ก" + , "description": "light bulb" + , "category": "Objects" + , "aliases": [ + "bulb" + ] + , "tags": [ + "idea" + , "light" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”ฆ" + , "description": "flashlight" + , "category": "Objects" + , "aliases": [ + "flashlight" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฎ" + , "description": "red paper lantern" + , "category": "Objects" + , "aliases": [ + "izakaya_lantern" + , "lantern" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿช”" + , "description": "diya lamp" + , "category": "Objects" + , "aliases": [ + "diya_lamp" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿ“”" + , "description": "notebook with decorative cover" + , "category": "Objects" + , "aliases": [ + "notebook_with_decorative_cover" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“•" + , "description": "closed book" + , "category": "Objects" + , "aliases": [ + "closed_book" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“–" + , "description": "open book" + , "category": "Objects" + , "aliases": [ + "book" + , "open_book" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“—" + , "description": "green book" + , "category": "Objects" + , "aliases": [ + "green_book" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“˜" + , "description": "blue book" + , "category": "Objects" + , "aliases": [ + "blue_book" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“™" + , "description": "orange book" + , "category": "Objects" + , "aliases": [ + "orange_book" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“š" + , "description": "books" + , "category": "Objects" + , "aliases": [ + "books" + ] + , "tags": [ + "library" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ““" + , "description": "notebook" + , "category": "Objects" + , "aliases": [ + "notebook" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“’" + , "description": "ledger" + , "category": "Objects" + , "aliases": [ + "ledger" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ƒ" + , "description": "page with curl" + , "category": "Objects" + , "aliases": [ + "page_with_curl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“œ" + , "description": "scroll" + , "category": "Objects" + , "aliases": [ + "scroll" + ] + , "tags": [ + "document" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“„" + , "description": "page facing up" + , "category": "Objects" + , "aliases": [ + "page_facing_up" + ] + , "tags": [ + "document" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ฐ" + , "description": "newspaper" + , "category": "Objects" + , "aliases": [ + "newspaper" + ] + , "tags": [ + "press" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ—ž๏ธ" + , "description": "rolled-up newspaper" + , "category": "Objects" + , "aliases": [ + "newspaper_roll" + ] + , "tags": [ + "press" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ“‘" + , "description": "bookmark tabs" + , "category": "Objects" + , "aliases": [ + "bookmark_tabs" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”–" + , "description": "bookmark" + , "category": "Objects" + , "aliases": [ + "bookmark" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿท๏ธ" + , "description": "label" + , "category": "Objects" + , "aliases": [ + "label" + ] + , "tags": [ + "tag" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ’ฐ" + , "description": "money bag" + , "category": "Objects" + , "aliases": [ + "moneybag" + ] + , "tags": [ + "dollar" + , "cream" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿช™" + , "description": "coin" + , "category": "Objects" + , "aliases": [ + "coin" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿ’ด" + , "description": "yen banknote" + , "category": "Objects" + , "aliases": [ + "yen" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ต" + , "description": "dollar banknote" + , "category": "Objects" + , "aliases": [ + "dollar" + ] + , "tags": [ + "money" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ถ" + , "description": "euro banknote" + , "category": "Objects" + , "aliases": [ + "euro" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ท" + , "description": "pound banknote" + , "category": "Objects" + , "aliases": [ + "pound" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ธ" + , "description": "money with wings" + , "category": "Objects" + , "aliases": [ + "money_with_wings" + ] + , "tags": [ + "dollar" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ณ" + , "description": "credit card" + , "category": "Objects" + , "aliases": [ + "credit_card" + ] + , "tags": [ + "subscription" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿงพ" + , "description": "receipt" + , "category": "Objects" + , "aliases": [ + "receipt" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ’น" + , "description": "chart increasing with yen" + , "category": "Objects" + , "aliases": [ + "chart" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โœ‰๏ธ" + , "description": "envelope" + , "category": "Objects" + , "aliases": [ + "envelope" + ] + , "tags": [ + "letter" + , "email" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ง" + , "description": "e-mail" + , "category": "Objects" + , "aliases": [ + "email" + , "e-mail" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“จ" + , "description": "incoming envelope" + , "category": "Objects" + , "aliases": [ + "incoming_envelope" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ฉ" + , "description": "envelope with arrow" + , "category": "Objects" + , "aliases": [ + "envelope_with_arrow" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ค" + , "description": "outbox tray" + , "category": "Objects" + , "aliases": [ + "outbox_tray" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ฅ" + , "description": "inbox tray" + , "category": "Objects" + , "aliases": [ + "inbox_tray" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ฆ" + , "description": "package" + , "category": "Objects" + , "aliases": [ + "package" + ] + , "tags": [ + "shipping" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ซ" + , "description": "closed mailbox with raised flag" + , "category": "Objects" + , "aliases": [ + "mailbox" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ช" + , "description": "closed mailbox with lowered flag" + , "category": "Objects" + , "aliases": [ + "mailbox_closed" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ฌ" + , "description": "open mailbox with raised flag" + , "category": "Objects" + , "aliases": [ + "mailbox_with_mail" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ญ" + , "description": "open mailbox with lowered flag" + , "category": "Objects" + , "aliases": [ + "mailbox_with_no_mail" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ฎ" + , "description": "postbox" + , "category": "Objects" + , "aliases": [ + "postbox" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ—ณ๏ธ" + , "description": "ballot box with ballot" + , "category": "Objects" + , "aliases": [ + "ballot_box" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "โœ๏ธ" + , "description": "pencil" + , "category": "Objects" + , "aliases": [ + "pencil2" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โœ’๏ธ" + , "description": "black nib" + , "category": "Objects" + , "aliases": [ + "black_nib" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ–‹๏ธ" + , "description": "fountain pen" + , "category": "Objects" + , "aliases": [ + "fountain_pen" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ–Š๏ธ" + , "description": "pen" + , "category": "Objects" + , "aliases": [ + "pen" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ–Œ๏ธ" + , "description": "paintbrush" + , "category": "Objects" + , "aliases": [ + "paintbrush" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ–๏ธ" + , "description": "crayon" + , "category": "Objects" + , "aliases": [ + "crayon" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ“" + , "description": "memo" + , "category": "Objects" + , "aliases": [ + "memo" + , "pencil" + ] + , "tags": [ + "document" + , "note" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ผ" + , "description": "briefcase" + , "category": "Objects" + , "aliases": [ + "briefcase" + ] + , "tags": [ + "business" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“" + , "description": "file folder" + , "category": "Objects" + , "aliases": [ + "file_folder" + ] + , "tags": [ + "directory" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“‚" + , "description": "open file folder" + , "category": "Objects" + , "aliases": [ + "open_file_folder" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ—‚๏ธ" + , "description": "card index dividers" + , "category": "Objects" + , "aliases": [ + "card_index_dividers" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ“…" + , "description": "calendar" + , "category": "Objects" + , "aliases": [ + "date" + ] + , "tags": [ + "calendar" + , "schedule" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“†" + , "description": "tear-off calendar" + , "category": "Objects" + , "aliases": [ + "calendar" + ] + , "tags": [ + "schedule" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ—’๏ธ" + , "description": "spiral notepad" + , "category": "Objects" + , "aliases": [ + "spiral_notepad" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ—“๏ธ" + , "description": "spiral calendar" + , "category": "Objects" + , "aliases": [ + "spiral_calendar" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ“‡" + , "description": "card index" + , "category": "Objects" + , "aliases": [ + "card_index" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ˆ" + , "description": "chart increasing" + , "category": "Objects" + , "aliases": [ + "chart_with_upwards_trend" + ] + , "tags": [ + "graph" + , "metrics" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“‰" + , "description": "chart decreasing" + , "category": "Objects" + , "aliases": [ + "chart_with_downwards_trend" + ] + , "tags": [ + "graph" + , "metrics" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“Š" + , "description": "bar chart" + , "category": "Objects" + , "aliases": [ + "bar_chart" + ] + , "tags": [ + "stats" + , "metrics" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“‹" + , "description": "clipboard" + , "category": "Objects" + , "aliases": [ + "clipboard" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“Œ" + , "description": "pushpin" + , "category": "Objects" + , "aliases": [ + "pushpin" + ] + , "tags": [ + "location" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“" + , "description": "round pushpin" + , "category": "Objects" + , "aliases": [ + "round_pushpin" + ] + , "tags": [ + "location" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“Ž" + , "description": "paperclip" + , "category": "Objects" + , "aliases": [ + "paperclip" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ–‡๏ธ" + , "description": "linked paperclips" + , "category": "Objects" + , "aliases": [ + "paperclips" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ“" + , "description": "straight ruler" + , "category": "Objects" + , "aliases": [ + "straight_ruler" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“" + , "description": "triangular ruler" + , "category": "Objects" + , "aliases": [ + "triangular_ruler" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โœ‚๏ธ" + , "description": "scissors" + , "category": "Objects" + , "aliases": [ + "scissors" + ] + , "tags": [ + "cut" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ—ƒ๏ธ" + , "description": "card file box" + , "category": "Objects" + , "aliases": [ + "card_file_box" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ—„๏ธ" + , "description": "file cabinet" + , "category": "Objects" + , "aliases": [ + "file_cabinet" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ—‘๏ธ" + , "description": "wastebasket" + , "category": "Objects" + , "aliases": [ + "wastebasket" + ] + , "tags": [ + "trash" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ”’" + , "description": "locked" + , "category": "Objects" + , "aliases": [ + "lock" + ] + , "tags": [ + "security" + , "private" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”“" + , "description": "unlocked" + , "category": "Objects" + , "aliases": [ + "unlock" + ] + , "tags": [ + "security" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”" + , "description": "locked with pen" + , "category": "Objects" + , "aliases": [ + "lock_with_ink_pen" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”" + , "description": "locked with key" + , "category": "Objects" + , "aliases": [ + "closed_lock_with_key" + ] + , "tags": [ + "security" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”‘" + , "description": "key" + , "category": "Objects" + , "aliases": [ + "key" + ] + , "tags": [ + "lock" + , "password" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ—๏ธ" + , "description": "old key" + , "category": "Objects" + , "aliases": [ + "old_key" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ”จ" + , "description": "hammer" + , "category": "Objects" + , "aliases": [ + "hammer" + ] + , "tags": [ + "tool" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿช“" + , "description": "axe" + , "category": "Objects" + , "aliases": [ + "axe" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "โ›๏ธ" + , "description": "pick" + , "category": "Objects" + , "aliases": [ + "pick" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + } +, { + "emoji": "โš’๏ธ" + , "description": "hammer and pick" + , "category": "Objects" + , "aliases": [ + "hammer_and_pick" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ› ๏ธ" + , "description": "hammer and wrench" + , "category": "Objects" + , "aliases": [ + "hammer_and_wrench" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ—ก๏ธ" + , "description": "dagger" + , "category": "Objects" + , "aliases": [ + "dagger" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "โš”๏ธ" + , "description": "crossed swords" + , "category": "Objects" + , "aliases": [ + "crossed_swords" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ”ซ" + , "description": "water pistol" + , "category": "Objects" + , "aliases": [ + "gun" + ] + , "tags": [ + "shoot" + , "weapon" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿชƒ" + , "description": "boomerang" + , "category": "Objects" + , "aliases": [ + "boomerang" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿน" + , "description": "bow and arrow" + , "category": "Objects" + , "aliases": [ + "bow_and_arrow" + ] + , "tags": [ + "archery" + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ›ก๏ธ" + , "description": "shield" + , "category": "Objects" + , "aliases": [ + "shield" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿชš" + , "description": "carpentry saw" + , "category": "Objects" + , "aliases": [ + "carpentry_saw" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿ”ง" + , "description": "wrench" + , "category": "Objects" + , "aliases": [ + "wrench" + ] + , "tags": [ + "tool" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿช›" + , "description": "screwdriver" + , "category": "Objects" + , "aliases": [ + "screwdriver" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿ”ฉ" + , "description": "nut and bolt" + , "category": "Objects" + , "aliases": [ + "nut_and_bolt" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โš™๏ธ" + , "description": "gear" + , "category": "Objects" + , "aliases": [ + "gear" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ—œ๏ธ" + , "description": "clamp" + , "category": "Objects" + , "aliases": [ + "clamp" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "โš–๏ธ" + , "description": "balance scale" + , "category": "Objects" + , "aliases": [ + "balance_scale" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿฆฏ" + , "description": "white cane" + , "category": "Objects" + , "aliases": [ + "probing_cane" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿ”—" + , "description": "link" + , "category": "Objects" + , "aliases": [ + "link" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ›“๏ธ" + , "description": "chains" + , "category": "Objects" + , "aliases": [ + "chains" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿช" + , "description": "hook" + , "category": "Objects" + , "aliases": [ + "hook" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿงฐ" + , "description": "toolbox" + , "category": "Objects" + , "aliases": [ + "toolbox" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿงฒ" + , "description": "magnet" + , "category": "Objects" + , "aliases": [ + "magnet" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿชœ" + , "description": "ladder" + , "category": "Objects" + , "aliases": [ + "ladder" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "โš—๏ธ" + , "description": "alembic" + , "category": "Objects" + , "aliases": [ + "alembic" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿงช" + , "description": "test tube" + , "category": "Objects" + , "aliases": [ + "test_tube" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿงซ" + , "description": "petri dish" + , "category": "Objects" + , "aliases": [ + "petri_dish" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿงฌ" + , "description": "dna" + , "category": "Objects" + , "aliases": [ + "dna" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ”ฌ" + , "description": "microscope" + , "category": "Objects" + , "aliases": [ + "microscope" + ] + , "tags": [ + "science" + , "laboratory" + , "investigate" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”ญ" + , "description": "telescope" + , "category": "Objects" + , "aliases": [ + "telescope" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ก" + , "description": "satellite antenna" + , "category": "Objects" + , "aliases": [ + "satellite" + ] + , "tags": [ + "signal" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’‰" + , "description": "syringe" + , "category": "Objects" + , "aliases": [ + "syringe" + ] + , "tags": [ + "health" + , "hospital" + , "needle" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฉธ" + , "description": "drop of blood" + , "category": "Objects" + , "aliases": [ + "drop_of_blood" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿ’Š" + , "description": "pill" + , "category": "Objects" + , "aliases": [ + "pill" + ] + , "tags": [ + "health" + , "medicine" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿฉน" + , "description": "adhesive bandage" + , "category": "Objects" + , "aliases": [ + "adhesive_bandage" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿฉผ" + , "description": "crutch" + , "category": "Objects" + , "aliases": [ + "crutch" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿฉบ" + , "description": "stethoscope" + , "category": "Objects" + , "aliases": [ + "stethoscope" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿฉป" + , "description": "x-ray" + , "category": "Objects" + , "aliases": [ + "x_ray" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿšช" + , "description": "door" + , "category": "Objects" + , "aliases": [ + "door" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›—" + , "description": "elevator" + , "category": "Objects" + , "aliases": [ + "elevator" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿชž" + , "description": "mirror" + , "category": "Objects" + , "aliases": [ + "mirror" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐ŸชŸ" + , "description": "window" + , "category": "Objects" + , "aliases": [ + "window" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿ›๏ธ" + , "description": "bed" + , "category": "Objects" + , "aliases": [ + "bed" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ›‹๏ธ" + , "description": "couch and lamp" + , "category": "Objects" + , "aliases": [ + "couch_and_lamp" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿช‘" + , "description": "chair" + , "category": "Objects" + , "aliases": [ + "chair" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿšฝ" + , "description": "toilet" + , "category": "Objects" + , "aliases": [ + "toilet" + ] + , "tags": [ + "wc" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿช " + , "description": "plunger" + , "category": "Objects" + , "aliases": [ + "plunger" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿšฟ" + , "description": "shower" + , "category": "Objects" + , "aliases": [ + "shower" + ] + , "tags": [ + "bath" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›" + , "description": "bathtub" + , "category": "Objects" + , "aliases": [ + "bathtub" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿชค" + , "description": "mouse trap" + , "category": "Objects" + , "aliases": [ + "mouse_trap" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿช’" + , "description": "razor" + , "category": "Objects" + , "aliases": [ + "razor" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿงด" + , "description": "lotion bottle" + , "category": "Objects" + , "aliases": [ + "lotion_bottle" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿงท" + , "description": "safety pin" + , "category": "Objects" + , "aliases": [ + "safety_pin" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿงน" + , "description": "broom" + , "category": "Objects" + , "aliases": [ + "broom" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿงบ" + , "description": "basket" + , "category": "Objects" + , "aliases": [ + "basket" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿงป" + , "description": "roll of paper" + , "category": "Objects" + , "aliases": [ + "roll_of_paper" + ] + , "tags": [ + "toilet" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿชฃ" + , "description": "bucket" + , "category": "Objects" + , "aliases": [ + "bucket" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿงผ" + , "description": "soap" + , "category": "Objects" + , "aliases": [ + "soap" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿซง" + , "description": "bubbles" + , "category": "Objects" + , "aliases": [ + "bubbles" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿชฅ" + , "description": "toothbrush" + , "category": "Objects" + , "aliases": [ + "toothbrush" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿงฝ" + , "description": "sponge" + , "category": "Objects" + , "aliases": [ + "sponge" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿงฏ" + , "description": "fire extinguisher" + , "category": "Objects" + , "aliases": [ + "fire_extinguisher" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ›’" + , "description": "shopping cart" + , "category": "Objects" + , "aliases": [ + "shopping_cart" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "๐Ÿšฌ" + , "description": "cigarette" + , "category": "Objects" + , "aliases": [ + "smoking" + ] + , "tags": [ + "cigarette" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โšฐ๏ธ" + , "description": "coffin" + , "category": "Objects" + , "aliases": [ + "coffin" + ] + , "tags": [ + "funeral" + ] + , "unicode_version": "4.1" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿชฆ" + , "description": "headstone" + , "category": "Objects" + , "aliases": [ + "headstone" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "โšฑ๏ธ" + , "description": "funeral urn" + , "category": "Objects" + , "aliases": [ + "funeral_urn" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ—ฟ" + , "description": "moai" + , "category": "Objects" + , "aliases": [ + "moyai" + ] + , "tags": [ + "stone" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿชง" + , "description": "placard" + , "category": "Objects" + , "aliases": [ + "placard" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿชช" + , "description": "identification card" + , "category": "Objects" + , "aliases": [ + "identification_card" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "๐Ÿง" + , "description": "ATM sign" + , "category": "Symbols" + , "aliases": [ + "atm" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšฎ" + , "description": "litter in bin sign" + , "category": "Symbols" + , "aliases": [ + "put_litter_in_its_place" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšฐ" + , "description": "potable water" + , "category": "Symbols" + , "aliases": [ + "potable_water" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ™ฟ" + , "description": "wheelchair symbol" + , "category": "Symbols" + , "aliases": [ + "wheelchair" + ] + , "tags": [ + "accessibility" + ] + , "unicode_version": "4.1" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšน" + , "description": "menโ€™s room" + , "category": "Symbols" + , "aliases": [ + "mens" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšบ" + , "description": "womenโ€™s room" + , "category": "Symbols" + , "aliases": [ + "womens" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšป" + , "description": "restroom" + , "category": "Symbols" + , "aliases": [ + "restroom" + ] + , "tags": [ + "toilet" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšผ" + , "description": "baby symbol" + , "category": "Symbols" + , "aliases": [ + "baby_symbol" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšพ" + , "description": "water closet" + , "category": "Symbols" + , "aliases": [ + "wc" + ] + , "tags": [ + "toilet" + , "restroom" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›‚" + , "description": "passport control" + , "category": "Symbols" + , "aliases": [ + "passport_control" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›ƒ" + , "description": "customs" + , "category": "Symbols" + , "aliases": [ + "customs" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›„" + , "description": "baggage claim" + , "category": "Symbols" + , "aliases": [ + "baggage_claim" + ] + , "tags": [ + "airport" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›…" + , "description": "left luggage" + , "category": "Symbols" + , "aliases": [ + "left_luggage" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โš ๏ธ" + , "description": "warning" + , "category": "Symbols" + , "aliases": [ + "warning" + ] + , "tags": [ + "wip" + ] + , "unicode_version": "4.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšธ" + , "description": "children crossing" + , "category": "Symbols" + , "aliases": [ + "children_crossing" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ›”" + , "description": "no entry" + , "category": "Symbols" + , "aliases": [ + "no_entry" + ] + , "tags": [ + "limit" + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšซ" + , "description": "prohibited" + , "category": "Symbols" + , "aliases": [ + "no_entry_sign" + ] + , "tags": [ + "block" + , "forbidden" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšณ" + , "description": "no bicycles" + , "category": "Symbols" + , "aliases": [ + "no_bicycles" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšญ" + , "description": "no smoking" + , "category": "Symbols" + , "aliases": [ + "no_smoking" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšฏ" + , "description": "no littering" + , "category": "Symbols" + , "aliases": [ + "do_not_litter" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšฑ" + , "description": "non-potable water" + , "category": "Symbols" + , "aliases": [ + "non-potable_water" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšท" + , "description": "no pedestrians" + , "category": "Symbols" + , "aliases": [ + "no_pedestrians" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ต" + , "description": "no mobile phones" + , "category": "Symbols" + , "aliases": [ + "no_mobile_phones" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”ž" + , "description": "no one under eighteen" + , "category": "Symbols" + , "aliases": [ + "underage" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ˜ข๏ธ" + , "description": "radioactive" + , "category": "Symbols" + , "aliases": [ + "radioactive" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "โ˜ฃ๏ธ" + , "description": "biohazard" + , "category": "Symbols" + , "aliases": [ + "biohazard" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "โฌ†๏ธ" + , "description": "up arrow" + , "category": "Symbols" + , "aliases": [ + "arrow_up" + ] + , "tags": [ + ] + , "unicode_version": "4.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ†—๏ธ" + , "description": "up-right arrow" + , "category": "Symbols" + , "aliases": [ + "arrow_upper_right" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โžก๏ธ" + , "description": "right arrow" + , "category": "Symbols" + , "aliases": [ + "arrow_right" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ†˜๏ธ" + , "description": "down-right arrow" + , "category": "Symbols" + , "aliases": [ + "arrow_lower_right" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โฌ‡๏ธ" + , "description": "down arrow" + , "category": "Symbols" + , "aliases": [ + "arrow_down" + ] + , "tags": [ + ] + , "unicode_version": "4.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ†™๏ธ" + , "description": "down-left arrow" + , "category": "Symbols" + , "aliases": [ + "arrow_lower_left" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โฌ…๏ธ" + , "description": "left arrow" + , "category": "Symbols" + , "aliases": [ + "arrow_left" + ] + , "tags": [ + ] + , "unicode_version": "4.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ†–๏ธ" + , "description": "up-left arrow" + , "category": "Symbols" + , "aliases": [ + "arrow_upper_left" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ†•๏ธ" + , "description": "up-down arrow" + , "category": "Symbols" + , "aliases": [ + "arrow_up_down" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ†”๏ธ" + , "description": "left-right arrow" + , "category": "Symbols" + , "aliases": [ + "left_right_arrow" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ†ฉ๏ธ" + , "description": "right arrow curving left" + , "category": "Symbols" + , "aliases": [ + "leftwards_arrow_with_hook" + ] + , "tags": [ + "return" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ†ช๏ธ" + , "description": "left arrow curving right" + , "category": "Symbols" + , "aliases": [ + "arrow_right_hook" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โคด๏ธ" + , "description": "right arrow curving up" + , "category": "Symbols" + , "aliases": [ + "arrow_heading_up" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โคต๏ธ" + , "description": "right arrow curving down" + , "category": "Symbols" + , "aliases": [ + "arrow_heading_down" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”ƒ" + , "description": "clockwise vertical arrows" + , "category": "Symbols" + , "aliases": [ + "arrows_clockwise" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”„" + , "description": "counterclockwise arrows button" + , "category": "Symbols" + , "aliases": [ + "arrows_counterclockwise" + ] + , "tags": [ + "sync" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”™" + , "description": "BACK arrow" + , "category": "Symbols" + , "aliases": [ + "back" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”š" + , "description": "END arrow" + , "category": "Symbols" + , "aliases": [ + "end" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”›" + , "description": "ON! arrow" + , "category": "Symbols" + , "aliases": [ + "on" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”œ" + , "description": "SOON arrow" + , "category": "Symbols" + , "aliases": [ + "soon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”" + , "description": "TOP arrow" + , "category": "Symbols" + , "aliases": [ + "top" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ›" + , "description": "place of worship" + , "category": "Symbols" + , "aliases": [ + "place_of_worship" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "โš›๏ธ" + , "description": "atom symbol" + , "category": "Symbols" + , "aliases": [ + "atom_symbol" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ•‰๏ธ" + , "description": "om" + , "category": "Symbols" + , "aliases": [ + "om" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "โœก๏ธ" + , "description": "star of David" + , "category": "Symbols" + , "aliases": [ + "star_of_david" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "โ˜ธ๏ธ" + , "description": "wheel of dharma" + , "category": "Symbols" + , "aliases": [ + "wheel_of_dharma" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "โ˜ฏ๏ธ" + , "description": "yin yang" + , "category": "Symbols" + , "aliases": [ + "yin_yang" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "โœ๏ธ" + , "description": "latin cross" + , "category": "Symbols" + , "aliases": [ + "latin_cross" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "โ˜ฆ๏ธ" + , "description": "orthodox cross" + , "category": "Symbols" + , "aliases": [ + "orthodox_cross" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "โ˜ช๏ธ" + , "description": "star and crescent" + , "category": "Symbols" + , "aliases": [ + "star_and_crescent" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "โ˜ฎ๏ธ" + , "description": "peace symbol" + , "category": "Symbols" + , "aliases": [ + "peace_symbol" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ•Ž" + , "description": "menorah" + , "category": "Symbols" + , "aliases": [ + "menorah" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ”ฏ" + , "description": "dotted six-pointed star" + , "category": "Symbols" + , "aliases": [ + "six_pointed_star" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ™ˆ" + , "description": "Aries" + , "category": "Symbols" + , "aliases": [ + "aries" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ™‰" + , "description": "Taurus" + , "category": "Symbols" + , "aliases": [ + "taurus" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ™Š" + , "description": "Gemini" + , "category": "Symbols" + , "aliases": [ + "gemini" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ™‹" + , "description": "Cancer" + , "category": "Symbols" + , "aliases": [ + "cancer" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ™Œ" + , "description": "Leo" + , "category": "Symbols" + , "aliases": [ + "leo" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ™" + , "description": "Virgo" + , "category": "Symbols" + , "aliases": [ + "virgo" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ™Ž" + , "description": "Libra" + , "category": "Symbols" + , "aliases": [ + "libra" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ™" + , "description": "Scorpio" + , "category": "Symbols" + , "aliases": [ + "scorpius" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ™" + , "description": "Sagittarius" + , "category": "Symbols" + , "aliases": [ + "sagittarius" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ™‘" + , "description": "Capricorn" + , "category": "Symbols" + , "aliases": [ + "capricorn" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ™’" + , "description": "Aquarius" + , "category": "Symbols" + , "aliases": [ + "aquarius" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ™“" + , "description": "Pisces" + , "category": "Symbols" + , "aliases": [ + "pisces" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ›Ž" + , "description": "Ophiuchus" + , "category": "Symbols" + , "aliases": [ + "ophiuchus" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”€" + , "description": "shuffle tracks button" + , "category": "Symbols" + , "aliases": [ + "twisted_rightwards_arrows" + ] + , "tags": [ + "shuffle" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”" + , "description": "repeat button" + , "category": "Symbols" + , "aliases": [ + "repeat" + ] + , "tags": [ + "loop" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”‚" + , "description": "repeat single button" + , "category": "Symbols" + , "aliases": [ + "repeat_one" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ–ถ๏ธ" + , "description": "play button" + , "category": "Symbols" + , "aliases": [ + "arrow_forward" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โฉ" + , "description": "fast-forward button" + , "category": "Symbols" + , "aliases": [ + "fast_forward" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โญ๏ธ" + , "description": "next track button" + , "category": "Symbols" + , "aliases": [ + "next_track_button" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.1" + } +, { + "emoji": "โฏ๏ธ" + , "description": "play or pause button" + , "category": "Symbols" + , "aliases": [ + "play_or_pause_button" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.1" + } +, { + "emoji": "โ—€๏ธ" + , "description": "reverse button" + , "category": "Symbols" + , "aliases": [ + "arrow_backward" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โช" + , "description": "fast reverse button" + , "category": "Symbols" + , "aliases": [ + "rewind" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โฎ๏ธ" + , "description": "last track button" + , "category": "Symbols" + , "aliases": [ + "previous_track_button" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ”ผ" + , "description": "upwards button" + , "category": "Symbols" + , "aliases": [ + "arrow_up_small" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โซ" + , "description": "fast up button" + , "category": "Symbols" + , "aliases": [ + "arrow_double_up" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”ฝ" + , "description": "downwards button" + , "category": "Symbols" + , "aliases": [ + "arrow_down_small" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โฌ" + , "description": "fast down button" + , "category": "Symbols" + , "aliases": [ + "arrow_double_down" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โธ๏ธ" + , "description": "pause button" + , "category": "Symbols" + , "aliases": [ + "pause_button" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "โน๏ธ" + , "description": "stop button" + , "category": "Symbols" + , "aliases": [ + "stop_button" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "โบ๏ธ" + , "description": "record button" + , "category": "Symbols" + , "aliases": [ + "record_button" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "โ๏ธ" + , "description": "eject button" + , "category": "Symbols" + , "aliases": [ + "eject_button" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐ŸŽฆ" + , "description": "cinema" + , "category": "Symbols" + , "aliases": [ + "cinema" + ] + , "tags": [ + "film" + , "movie" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”…" + , "description": "dim button" + , "category": "Symbols" + , "aliases": [ + "low_brightness" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”†" + , "description": "bright button" + , "category": "Symbols" + , "aliases": [ + "high_brightness" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ถ" + , "description": "antenna bars" + , "category": "Symbols" + , "aliases": [ + "signal_strength" + ] + , "tags": [ + "wifi" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ณ" + , "description": "vibration mode" + , "category": "Symbols" + , "aliases": [ + "vibration_mode" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“ด" + , "description": "mobile phone off" + , "category": "Symbols" + , "aliases": [ + "mobile_phone_off" + ] + , "tags": [ + "mute" + , "off" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ™€๏ธ" + , "description": "female sign" + , "category": "Symbols" + , "aliases": [ + "female_sign" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "โ™‚๏ธ" + , "description": "male sign" + , "category": "Symbols" + , "aliases": [ + "male_sign" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "โšง๏ธ" + , "description": "transgender symbol" + , "category": "Symbols" + , "aliases": [ + "transgender_symbol" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "โœ–๏ธ" + , "description": "multiply" + , "category": "Symbols" + , "aliases": [ + "heavy_multiplication_x" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โž•" + , "description": "plus" + , "category": "Symbols" + , "aliases": [ + "heavy_plus_sign" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โž–" + , "description": "minus" + , "category": "Symbols" + , "aliases": [ + "heavy_minus_sign" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โž—" + , "description": "divide" + , "category": "Symbols" + , "aliases": [ + "heavy_division_sign" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŸฐ" + , "description": "heavy equals sign" + , "category": "Symbols" + , "aliases": [ + "heavy_equals_sign" + ] + , "tags": [ + ] + , "unicode_version": "14.0" + , "ios_version": "15.4" + } +, { + "emoji": "โ™พ๏ธ" + , "description": "infinity" + , "category": "Symbols" + , "aliases": [ + "infinity" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "โ€ผ๏ธ" + , "description": "double exclamation mark" + , "category": "Symbols" + , "aliases": [ + "bangbang" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ‰๏ธ" + , "description": "exclamation question mark" + , "category": "Symbols" + , "aliases": [ + "interrobang" + ] + , "tags": [ + ] + , "unicode_version": "3.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ“" + , "description": "red question mark" + , "category": "Symbols" + , "aliases": [ + "question" + ] + , "tags": [ + "confused" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ”" + , "description": "white question mark" + , "category": "Symbols" + , "aliases": [ + "grey_question" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ•" + , "description": "white exclamation mark" + , "category": "Symbols" + , "aliases": [ + "grey_exclamation" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ—" + , "description": "red exclamation mark" + , "category": "Symbols" + , "aliases": [ + "exclamation" + , "heavy_exclamation_mark" + ] + , "tags": [ + "bang" + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "ใ€ฐ๏ธ" + , "description": "wavy dash" + , "category": "Symbols" + , "aliases": [ + "wavy_dash" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ฑ" + , "description": "currency exchange" + , "category": "Symbols" + , "aliases": [ + "currency_exchange" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ฒ" + , "description": "heavy dollar sign" + , "category": "Symbols" + , "aliases": [ + "heavy_dollar_sign" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โš•๏ธ" + , "description": "medical symbol" + , "category": "Symbols" + , "aliases": [ + "medical_symbol" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "โ™ป๏ธ" + , "description": "recycling symbol" + , "category": "Symbols" + , "aliases": [ + "recycle" + ] + , "tags": [ + "environment" + , "green" + ] + , "unicode_version": "3.2" + , "ios_version": "6.0" + } +, { + "emoji": "โšœ๏ธ" + , "description": "fleur-de-lis" + , "category": "Symbols" + , "aliases": [ + "fleur_de_lis" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ”ฑ" + , "description": "trident emblem" + , "category": "Symbols" + , "aliases": [ + "trident" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ“›" + , "description": "name badge" + , "category": "Symbols" + , "aliases": [ + "name_badge" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”ฐ" + , "description": "Japanese symbol for beginner" + , "category": "Symbols" + , "aliases": [ + "beginner" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โญ•" + , "description": "hollow red circle" + , "category": "Symbols" + , "aliases": [ + "o" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "โœ…" + , "description": "check mark button" + , "category": "Symbols" + , "aliases": [ + "white_check_mark" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ˜‘๏ธ" + , "description": "check box with check" + , "category": "Symbols" + , "aliases": [ + "ballot_box_with_check" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โœ”๏ธ" + , "description": "check mark" + , "category": "Symbols" + , "aliases": [ + "heavy_check_mark" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โŒ" + , "description": "cross mark" + , "category": "Symbols" + , "aliases": [ + "x" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โŽ" + , "description": "cross mark button" + , "category": "Symbols" + , "aliases": [ + "negative_squared_cross_mark" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โžฐ" + , "description": "curly loop" + , "category": "Symbols" + , "aliases": [ + "curly_loop" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โžฟ" + , "description": "double curly loop" + , "category": "Symbols" + , "aliases": [ + "loop" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "ใ€ฝ๏ธ" + , "description": "part alternation mark" + , "category": "Symbols" + , "aliases": [ + "part_alternation_mark" + ] + , "tags": [ + ] + , "unicode_version": "3.2" + , "ios_version": "6.0" + } +, { + "emoji": "โœณ๏ธ" + , "description": "eight-spoked asterisk" + , "category": "Symbols" + , "aliases": [ + "eight_spoked_asterisk" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โœด๏ธ" + , "description": "eight-pointed star" + , "category": "Symbols" + , "aliases": [ + "eight_pointed_black_star" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ‡๏ธ" + , "description": "sparkle" + , "category": "Symbols" + , "aliases": [ + "sparkle" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "ยฉ๏ธ" + , "description": "copyright" + , "category": "Symbols" + , "aliases": [ + "copyright" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "ยฎ๏ธ" + , "description": "registered" + , "category": "Symbols" + , "aliases": [ + "registered" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ„ข๏ธ" + , "description": "trade mark" + , "category": "Symbols" + , "aliases": [ + "tm" + ] + , "tags": [ + "trademark" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "#๏ธโƒฃ" + , "description": "keycap: #" + , "category": "Symbols" + , "aliases": [ + "hash" + ] + , "tags": [ + "number" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "*๏ธโƒฃ" + , "description": "keycap: *" + , "category": "Symbols" + , "aliases": [ + "asterisk" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "0๏ธโƒฃ" + , "description": "keycap: 0" + , "category": "Symbols" + , "aliases": [ + "zero" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "1๏ธโƒฃ" + , "description": "keycap: 1" + , "category": "Symbols" + , "aliases": [ + "one" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "2๏ธโƒฃ" + , "description": "keycap: 2" + , "category": "Symbols" + , "aliases": [ + "two" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "3๏ธโƒฃ" + , "description": "keycap: 3" + , "category": "Symbols" + , "aliases": [ + "three" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "4๏ธโƒฃ" + , "description": "keycap: 4" + , "category": "Symbols" + , "aliases": [ + "four" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "5๏ธโƒฃ" + , "description": "keycap: 5" + , "category": "Symbols" + , "aliases": [ + "five" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "6๏ธโƒฃ" + , "description": "keycap: 6" + , "category": "Symbols" + , "aliases": [ + "six" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "7๏ธโƒฃ" + , "description": "keycap: 7" + , "category": "Symbols" + , "aliases": [ + "seven" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "8๏ธโƒฃ" + , "description": "keycap: 8" + , "category": "Symbols" + , "aliases": [ + "eight" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "9๏ธโƒฃ" + , "description": "keycap: 9" + , "category": "Symbols" + , "aliases": [ + "nine" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”Ÿ" + , "description": "keycap: 10" + , "category": "Symbols" + , "aliases": [ + "keycap_ten" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ” " + , "description": "input latin uppercase" + , "category": "Symbols" + , "aliases": [ + "capital_abcd" + ] + , "tags": [ + "letters" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”ก" + , "description": "input latin lowercase" + , "category": "Symbols" + , "aliases": [ + "abcd" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”ข" + , "description": "input numbers" + , "category": "Symbols" + , "aliases": [ + "1234" + ] + , "tags": [ + "numbers" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”ฃ" + , "description": "input symbols" + , "category": "Symbols" + , "aliases": [ + "symbols" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”ค" + , "description": "input latin letters" + , "category": "Symbols" + , "aliases": [ + "abc" + ] + , "tags": [ + "alphabet" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ…ฐ๏ธ" + , "description": "A button (blood type)" + , "category": "Symbols" + , "aliases": [ + "a" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ†Ž" + , "description": "AB button (blood type)" + , "category": "Symbols" + , "aliases": [ + "ab" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ…ฑ๏ธ" + , "description": "B button (blood type)" + , "category": "Symbols" + , "aliases": [ + "b" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ†‘" + , "description": "CL button" + , "category": "Symbols" + , "aliases": [ + "cl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ†’" + , "description": "COOL button" + , "category": "Symbols" + , "aliases": [ + "cool" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ†“" + , "description": "FREE button" + , "category": "Symbols" + , "aliases": [ + "free" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ„น๏ธ" + , "description": "information" + , "category": "Symbols" + , "aliases": [ + "information_source" + ] + , "tags": [ + ] + , "unicode_version": "3.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ†”" + , "description": "ID button" + , "category": "Symbols" + , "aliases": [ + "id" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "โ“‚๏ธ" + , "description": "circled M" + , "category": "Symbols" + , "aliases": [ + "m" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ†•" + , "description": "NEW button" + , "category": "Symbols" + , "aliases": [ + "new" + ] + , "tags": [ + "fresh" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ†–" + , "description": "NG button" + , "category": "Symbols" + , "aliases": [ + "ng" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ…พ๏ธ" + , "description": "O button (blood type)" + , "category": "Symbols" + , "aliases": [ + "o2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ†—" + , "description": "OK button" + , "category": "Symbols" + , "aliases": [ + "ok" + ] + , "tags": [ + "yes" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ…ฟ๏ธ" + , "description": "P button" + , "category": "Symbols" + , "aliases": [ + "parking" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ†˜" + , "description": "SOS button" + , "category": "Symbols" + , "aliases": [ + "sos" + ] + , "tags": [ + "help" + , "emergency" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ†™" + , "description": "UP! button" + , "category": "Symbols" + , "aliases": [ + "up" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ†š" + , "description": "VS button" + , "category": "Symbols" + , "aliases": [ + "vs" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿˆ" + , "description": "Japanese โ€œhereโ€ button" + , "category": "Symbols" + , "aliases": [ + "koko" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿˆ‚๏ธ" + , "description": "Japanese โ€œservice chargeโ€ button" + , "category": "Symbols" + , "aliases": [ + "sa" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿˆท๏ธ" + , "description": "Japanese โ€œmonthly amountโ€ button" + , "category": "Symbols" + , "aliases": [ + "u6708" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿˆถ" + , "description": "Japanese โ€œnot free of chargeโ€ button" + , "category": "Symbols" + , "aliases": [ + "u6709" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿˆฏ" + , "description": "Japanese โ€œreservedโ€ button" + , "category": "Symbols" + , "aliases": [ + "u6307" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‰" + , "description": "Japanese โ€œbargainโ€ button" + , "category": "Symbols" + , "aliases": [ + "ideograph_advantage" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿˆน" + , "description": "Japanese โ€œdiscountโ€ button" + , "category": "Symbols" + , "aliases": [ + "u5272" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿˆš" + , "description": "Japanese โ€œfree of chargeโ€ button" + , "category": "Symbols" + , "aliases": [ + "u7121" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿˆฒ" + , "description": "Japanese โ€œprohibitedโ€ button" + , "category": "Symbols" + , "aliases": [ + "u7981" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‰‘" + , "description": "Japanese โ€œacceptableโ€ button" + , "category": "Symbols" + , "aliases": [ + "accept" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿˆธ" + , "description": "Japanese โ€œapplicationโ€ button" + , "category": "Symbols" + , "aliases": [ + "u7533" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿˆด" + , "description": "Japanese โ€œpassing gradeโ€ button" + , "category": "Symbols" + , "aliases": [ + "u5408" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿˆณ" + , "description": "Japanese โ€œvacancyโ€ button" + , "category": "Symbols" + , "aliases": [ + "u7a7a" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "ใŠ—๏ธ" + , "description": "Japanese โ€œcongratulationsโ€ button" + , "category": "Symbols" + , "aliases": [ + "congratulations" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "ใŠ™๏ธ" + , "description": "Japanese โ€œsecretโ€ button" + , "category": "Symbols" + , "aliases": [ + "secret" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿˆบ" + , "description": "Japanese โ€œopen for businessโ€ button" + , "category": "Symbols" + , "aliases": [ + "u55b6" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿˆต" + , "description": "Japanese โ€œno vacancyโ€ button" + , "category": "Symbols" + , "aliases": [ + "u6e80" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”ด" + , "description": "red circle" + , "category": "Symbols" + , "aliases": [ + "red_circle" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŸ " + , "description": "orange circle" + , "category": "Symbols" + , "aliases": [ + "orange_circle" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐ŸŸก" + , "description": "yellow circle" + , "category": "Symbols" + , "aliases": [ + "yellow_circle" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐ŸŸข" + , "description": "green circle" + , "category": "Symbols" + , "aliases": [ + "green_circle" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐Ÿ”ต" + , "description": "blue circle" + , "category": "Symbols" + , "aliases": [ + "large_blue_circle" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŸฃ" + , "description": "purple circle" + , "category": "Symbols" + , "aliases": [ + "purple_circle" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐ŸŸค" + , "description": "brown circle" + , "category": "Symbols" + , "aliases": [ + "brown_circle" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "โšซ" + , "description": "black circle" + , "category": "Symbols" + , "aliases": [ + "black_circle" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "6.0" + } +, { + "emoji": "โšช" + , "description": "white circle" + , "category": "Symbols" + , "aliases": [ + "white_circle" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŸฅ" + , "description": "red square" + , "category": "Symbols" + , "aliases": [ + "red_square" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐ŸŸง" + , "description": "orange square" + , "category": "Symbols" + , "aliases": [ + "orange_square" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐ŸŸจ" + , "description": "yellow square" + , "category": "Symbols" + , "aliases": [ + "yellow_square" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐ŸŸฉ" + , "description": "green square" + , "category": "Symbols" + , "aliases": [ + "green_square" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐ŸŸฆ" + , "description": "blue square" + , "category": "Symbols" + , "aliases": [ + "blue_square" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐ŸŸช" + , "description": "purple square" + , "category": "Symbols" + , "aliases": [ + "purple_square" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "๐ŸŸซ" + , "description": "brown square" + , "category": "Symbols" + , "aliases": [ + "brown_square" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "โฌ›" + , "description": "black large square" + , "category": "Symbols" + , "aliases": [ + "black_large_square" + ] + , "tags": [ + ] + , "unicode_version": "5.1" + , "ios_version": "6.0" + } +, { + "emoji": "โฌœ" + , "description": "white large square" + , "category": "Symbols" + , "aliases": [ + "white_large_square" + ] + , "tags": [ + ] + , "unicode_version": "5.1" + , "ios_version": "6.0" + } +, { + "emoji": "โ—ผ๏ธ" + , "description": "black medium square" + , "category": "Symbols" + , "aliases": [ + "black_medium_square" + ] + , "tags": [ + ] + , "unicode_version": "3.2" + , "ios_version": "6.0" + } +, { + "emoji": "โ—ป๏ธ" + , "description": "white medium square" + , "category": "Symbols" + , "aliases": [ + "white_medium_square" + ] + , "tags": [ + ] + , "unicode_version": "3.2" + , "ios_version": "6.0" + } +, { + "emoji": "โ—พ" + , "description": "black medium-small square" + , "category": "Symbols" + , "aliases": [ + "black_medium_small_square" + ] + , "tags": [ + ] + , "unicode_version": "3.2" + , "ios_version": "6.0" + } +, { + "emoji": "โ—ฝ" + , "description": "white medium-small square" + , "category": "Symbols" + , "aliases": [ + "white_medium_small_square" + ] + , "tags": [ + ] + , "unicode_version": "3.2" + , "ios_version": "6.0" + } +, { + "emoji": "โ–ช๏ธ" + , "description": "black small square" + , "category": "Symbols" + , "aliases": [ + "black_small_square" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "โ–ซ๏ธ" + , "description": "white small square" + , "category": "Symbols" + , "aliases": [ + "white_small_square" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”ถ" + , "description": "large orange diamond" + , "category": "Symbols" + , "aliases": [ + "large_orange_diamond" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”ท" + , "description": "large blue diamond" + , "category": "Symbols" + , "aliases": [ + "large_blue_diamond" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”ธ" + , "description": "small orange diamond" + , "category": "Symbols" + , "aliases": [ + "small_orange_diamond" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”น" + , "description": "small blue diamond" + , "category": "Symbols" + , "aliases": [ + "small_blue_diamond" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”บ" + , "description": "red triangle pointed up" + , "category": "Symbols" + , "aliases": [ + "small_red_triangle" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”ป" + , "description": "red triangle pointed down" + , "category": "Symbols" + , "aliases": [ + "small_red_triangle_down" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ’ " + , "description": "diamond with a dot" + , "category": "Symbols" + , "aliases": [ + "diamond_shape_with_a_dot_inside" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”˜" + , "description": "radio button" + , "category": "Symbols" + , "aliases": [ + "radio_button" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”ณ" + , "description": "white square button" + , "category": "Symbols" + , "aliases": [ + "white_square_button" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ”ฒ" + , "description": "black square button" + , "category": "Symbols" + , "aliases": [ + "black_square_button" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ" + , "description": "chequered flag" + , "category": "Flags" + , "aliases": [ + "checkered_flag" + ] + , "tags": [ + "milestone" + , "finish" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿšฉ" + , "description": "triangular flag" + , "category": "Flags" + , "aliases": [ + "triangular_flag_on_post" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐ŸŽŒ" + , "description": "crossed flags" + , "category": "Flags" + , "aliases": [ + "crossed_flags" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿด" + , "description": "black flag" + , "category": "Flags" + , "aliases": [ + "black_flag" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿณ๏ธ" + , "description": "white flag" + , "category": "Flags" + , "aliases": [ + "white_flag" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿณ๏ธโ€๐ŸŒˆ" + , "description": "rainbow flag" + , "category": "Flags" + , "aliases": [ + "rainbow_flag" + ] + , "tags": [ + "pride" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "๐Ÿณ๏ธโ€โšง๏ธ" + , "description": "transgender flag" + , "category": "Flags" + , "aliases": [ + "transgender_flag" + ] + , "tags": [ + ] + , "unicode_version": "13.0" + , "ios_version": "14.0" + } +, { + "emoji": "๐Ÿดโ€โ˜ ๏ธ" + , "description": "pirate flag" + , "category": "Flags" + , "aliases": [ + "pirate_flag" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ‡ฆ๐Ÿ‡จ" + , "description": "flag: Ascension Island" + , "category": "Flags" + , "aliases": [ + "ascension_island" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ‡ฆ๐Ÿ‡ฉ" + , "description": "flag: Andorra" + , "category": "Flags" + , "aliases": [ + "andorra" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฆ๐Ÿ‡ช" + , "description": "flag: United Arab Emirates" + , "category": "Flags" + , "aliases": [ + "united_arab_emirates" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฆ๐Ÿ‡ซ" + , "description": "flag: Afghanistan" + , "category": "Flags" + , "aliases": [ + "afghanistan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฆ๐Ÿ‡ฌ" + , "description": "flag: Antigua & Barbuda" + , "category": "Flags" + , "aliases": [ + "antigua_barbuda" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฆ๐Ÿ‡ฎ" + , "description": "flag: Anguilla" + , "category": "Flags" + , "aliases": [ + "anguilla" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฆ๐Ÿ‡ฑ" + , "description": "flag: Albania" + , "category": "Flags" + , "aliases": [ + "albania" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฆ๐Ÿ‡ฒ" + , "description": "flag: Armenia" + , "category": "Flags" + , "aliases": [ + "armenia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฆ๐Ÿ‡ด" + , "description": "flag: Angola" + , "category": "Flags" + , "aliases": [ + "angola" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฆ๐Ÿ‡ถ" + , "description": "flag: Antarctica" + , "category": "Flags" + , "aliases": [ + "antarctica" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ฆ๐Ÿ‡ท" + , "description": "flag: Argentina" + , "category": "Flags" + , "aliases": [ + "argentina" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฆ๐Ÿ‡ธ" + , "description": "flag: American Samoa" + , "category": "Flags" + , "aliases": [ + "american_samoa" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฆ๐Ÿ‡น" + , "description": "flag: Austria" + , "category": "Flags" + , "aliases": [ + "austria" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฆ๐Ÿ‡บ" + , "description": "flag: Australia" + , "category": "Flags" + , "aliases": [ + "australia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฆ๐Ÿ‡ผ" + , "description": "flag: Aruba" + , "category": "Flags" + , "aliases": [ + "aruba" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฆ๐Ÿ‡ฝ" + , "description": "flag: ร…land Islands" + , "category": "Flags" + , "aliases": [ + "aland_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ฆ๐Ÿ‡ฟ" + , "description": "flag: Azerbaijan" + , "category": "Flags" + , "aliases": [ + "azerbaijan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡ฆ" + , "description": "flag: Bosnia & Herzegovina" + , "category": "Flags" + , "aliases": [ + "bosnia_herzegovina" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡ง" + , "description": "flag: Barbados" + , "category": "Flags" + , "aliases": [ + "barbados" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡ฉ" + , "description": "flag: Bangladesh" + , "category": "Flags" + , "aliases": [ + "bangladesh" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡ช" + , "description": "flag: Belgium" + , "category": "Flags" + , "aliases": [ + "belgium" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡ซ" + , "description": "flag: Burkina Faso" + , "category": "Flags" + , "aliases": [ + "burkina_faso" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡ฌ" + , "description": "flag: Bulgaria" + , "category": "Flags" + , "aliases": [ + "bulgaria" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡ญ" + , "description": "flag: Bahrain" + , "category": "Flags" + , "aliases": [ + "bahrain" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡ฎ" + , "description": "flag: Burundi" + , "category": "Flags" + , "aliases": [ + "burundi" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡ฏ" + , "description": "flag: Benin" + , "category": "Flags" + , "aliases": [ + "benin" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡ฑ" + , "description": "flag: St. Barthรฉlemy" + , "category": "Flags" + , "aliases": [ + "st_barthelemy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡ฒ" + , "description": "flag: Bermuda" + , "category": "Flags" + , "aliases": [ + "bermuda" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡ณ" + , "description": "flag: Brunei" + , "category": "Flags" + , "aliases": [ + "brunei" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡ด" + , "description": "flag: Bolivia" + , "category": "Flags" + , "aliases": [ + "bolivia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡ถ" + , "description": "flag: Caribbean Netherlands" + , "category": "Flags" + , "aliases": [ + "caribbean_netherlands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡ท" + , "description": "flag: Brazil" + , "category": "Flags" + , "aliases": [ + "brazil" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡ธ" + , "description": "flag: Bahamas" + , "category": "Flags" + , "aliases": [ + "bahamas" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡น" + , "description": "flag: Bhutan" + , "category": "Flags" + , "aliases": [ + "bhutan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡ป" + , "description": "flag: Bouvet Island" + , "category": "Flags" + , "aliases": [ + "bouvet_island" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡ผ" + , "description": "flag: Botswana" + , "category": "Flags" + , "aliases": [ + "botswana" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡พ" + , "description": "flag: Belarus" + , "category": "Flags" + , "aliases": [ + "belarus" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ง๐Ÿ‡ฟ" + , "description": "flag: Belize" + , "category": "Flags" + , "aliases": [ + "belize" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡จ๐Ÿ‡ฆ" + , "description": "flag: Canada" + , "category": "Flags" + , "aliases": [ + "canada" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡จ๐Ÿ‡จ" + , "description": "flag: Cocos (Keeling) Islands" + , "category": "Flags" + , "aliases": [ + "cocos_islands" + ] + , "tags": [ + "keeling" + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡จ๐Ÿ‡ฉ" + , "description": "flag: Congo - Kinshasa" + , "category": "Flags" + , "aliases": [ + "congo_kinshasa" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡จ๐Ÿ‡ซ" + , "description": "flag: Central African Republic" + , "category": "Flags" + , "aliases": [ + "central_african_republic" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡จ๐Ÿ‡ฌ" + , "description": "flag: Congo - Brazzaville" + , "category": "Flags" + , "aliases": [ + "congo_brazzaville" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡จ๐Ÿ‡ญ" + , "description": "flag: Switzerland" + , "category": "Flags" + , "aliases": [ + "switzerland" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡จ๐Ÿ‡ฎ" + , "description": "flag: Cรดte dโ€™Ivoire" + , "category": "Flags" + , "aliases": [ + "cote_divoire" + ] + , "tags": [ + "ivory" + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡จ๐Ÿ‡ฐ" + , "description": "flag: Cook Islands" + , "category": "Flags" + , "aliases": [ + "cook_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡จ๐Ÿ‡ฑ" + , "description": "flag: Chile" + , "category": "Flags" + , "aliases": [ + "chile" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡จ๐Ÿ‡ฒ" + , "description": "flag: Cameroon" + , "category": "Flags" + , "aliases": [ + "cameroon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡จ๐Ÿ‡ณ" + , "description": "flag: China" + , "category": "Flags" + , "aliases": [ + "cn" + ] + , "tags": [ + "china" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‡จ๐Ÿ‡ด" + , "description": "flag: Colombia" + , "category": "Flags" + , "aliases": [ + "colombia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡จ๐Ÿ‡ต" + , "description": "flag: Clipperton Island" + , "category": "Flags" + , "aliases": [ + "clipperton_island" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ‡จ๐Ÿ‡ท" + , "description": "flag: Costa Rica" + , "category": "Flags" + , "aliases": [ + "costa_rica" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡จ๐Ÿ‡บ" + , "description": "flag: Cuba" + , "category": "Flags" + , "aliases": [ + "cuba" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡จ๐Ÿ‡ป" + , "description": "flag: Cape Verde" + , "category": "Flags" + , "aliases": [ + "cape_verde" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡จ๐Ÿ‡ผ" + , "description": "flag: Curaรงao" + , "category": "Flags" + , "aliases": [ + "curacao" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡จ๐Ÿ‡ฝ" + , "description": "flag: Christmas Island" + , "category": "Flags" + , "aliases": [ + "christmas_island" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡จ๐Ÿ‡พ" + , "description": "flag: Cyprus" + , "category": "Flags" + , "aliases": [ + "cyprus" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡จ๐Ÿ‡ฟ" + , "description": "flag: Czechia" + , "category": "Flags" + , "aliases": [ + "czech_republic" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฉ๐Ÿ‡ช" + , "description": "flag: Germany" + , "category": "Flags" + , "aliases": [ + "de" + ] + , "tags": [ + "flag" + , "germany" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‡ฉ๐Ÿ‡ฌ" + , "description": "flag: Diego Garcia" + , "category": "Flags" + , "aliases": [ + "diego_garcia" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ‡ฉ๐Ÿ‡ฏ" + , "description": "flag: Djibouti" + , "category": "Flags" + , "aliases": [ + "djibouti" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฉ๐Ÿ‡ฐ" + , "description": "flag: Denmark" + , "category": "Flags" + , "aliases": [ + "denmark" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฉ๐Ÿ‡ฒ" + , "description": "flag: Dominica" + , "category": "Flags" + , "aliases": [ + "dominica" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฉ๐Ÿ‡ด" + , "description": "flag: Dominican Republic" + , "category": "Flags" + , "aliases": [ + "dominican_republic" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฉ๐Ÿ‡ฟ" + , "description": "flag: Algeria" + , "category": "Flags" + , "aliases": [ + "algeria" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ช๐Ÿ‡ฆ" + , "description": "flag: Ceuta & Melilla" + , "category": "Flags" + , "aliases": [ + "ceuta_melilla" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ‡ช๐Ÿ‡จ" + , "description": "flag: Ecuador" + , "category": "Flags" + , "aliases": [ + "ecuador" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ช๐Ÿ‡ช" + , "description": "flag: Estonia" + , "category": "Flags" + , "aliases": [ + "estonia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ช๐Ÿ‡ฌ" + , "description": "flag: Egypt" + , "category": "Flags" + , "aliases": [ + "egypt" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ช๐Ÿ‡ญ" + , "description": "flag: Western Sahara" + , "category": "Flags" + , "aliases": [ + "western_sahara" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ช๐Ÿ‡ท" + , "description": "flag: Eritrea" + , "category": "Flags" + , "aliases": [ + "eritrea" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ช๐Ÿ‡ธ" + , "description": "flag: Spain" + , "category": "Flags" + , "aliases": [ + "es" + ] + , "tags": [ + "spain" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‡ช๐Ÿ‡น" + , "description": "flag: Ethiopia" + , "category": "Flags" + , "aliases": [ + "ethiopia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ช๐Ÿ‡บ" + , "description": "flag: European Union" + , "category": "Flags" + , "aliases": [ + "eu" + , "european_union" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ซ๐Ÿ‡ฎ" + , "description": "flag: Finland" + , "category": "Flags" + , "aliases": [ + "finland" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ซ๐Ÿ‡ฏ" + , "description": "flag: Fiji" + , "category": "Flags" + , "aliases": [ + "fiji" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ซ๐Ÿ‡ฐ" + , "description": "flag: Falkland Islands" + , "category": "Flags" + , "aliases": [ + "falkland_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ซ๐Ÿ‡ฒ" + , "description": "flag: Micronesia" + , "category": "Flags" + , "aliases": [ + "micronesia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ซ๐Ÿ‡ด" + , "description": "flag: Faroe Islands" + , "category": "Flags" + , "aliases": [ + "faroe_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ซ๐Ÿ‡ท" + , "description": "flag: France" + , "category": "Flags" + , "aliases": [ + "fr" + ] + , "tags": [ + "france" + , "french" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‡ฌ๐Ÿ‡ฆ" + , "description": "flag: Gabon" + , "category": "Flags" + , "aliases": [ + "gabon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฌ๐Ÿ‡ง" + , "description": "flag: United Kingdom" + , "category": "Flags" + , "aliases": [ + "gb" + , "uk" + ] + , "tags": [ + "flag" + , "british" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‡ฌ๐Ÿ‡ฉ" + , "description": "flag: Grenada" + , "category": "Flags" + , "aliases": [ + "grenada" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฌ๐Ÿ‡ช" + , "description": "flag: Georgia" + , "category": "Flags" + , "aliases": [ + "georgia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฌ๐Ÿ‡ซ" + , "description": "flag: French Guiana" + , "category": "Flags" + , "aliases": [ + "french_guiana" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฌ๐Ÿ‡ฌ" + , "description": "flag: Guernsey" + , "category": "Flags" + , "aliases": [ + "guernsey" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ฌ๐Ÿ‡ญ" + , "description": "flag: Ghana" + , "category": "Flags" + , "aliases": [ + "ghana" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฌ๐Ÿ‡ฎ" + , "description": "flag: Gibraltar" + , "category": "Flags" + , "aliases": [ + "gibraltar" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฌ๐Ÿ‡ฑ" + , "description": "flag: Greenland" + , "category": "Flags" + , "aliases": [ + "greenland" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ฌ๐Ÿ‡ฒ" + , "description": "flag: Gambia" + , "category": "Flags" + , "aliases": [ + "gambia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฌ๐Ÿ‡ณ" + , "description": "flag: Guinea" + , "category": "Flags" + , "aliases": [ + "guinea" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฌ๐Ÿ‡ต" + , "description": "flag: Guadeloupe" + , "category": "Flags" + , "aliases": [ + "guadeloupe" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ฌ๐Ÿ‡ถ" + , "description": "flag: Equatorial Guinea" + , "category": "Flags" + , "aliases": [ + "equatorial_guinea" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฌ๐Ÿ‡ท" + , "description": "flag: Greece" + , "category": "Flags" + , "aliases": [ + "greece" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฌ๐Ÿ‡ธ" + , "description": "flag: South Georgia & South Sandwich Islands" + , "category": "Flags" + , "aliases": [ + "south_georgia_south_sandwich_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ฌ๐Ÿ‡น" + , "description": "flag: Guatemala" + , "category": "Flags" + , "aliases": [ + "guatemala" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฌ๐Ÿ‡บ" + , "description": "flag: Guam" + , "category": "Flags" + , "aliases": [ + "guam" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฌ๐Ÿ‡ผ" + , "description": "flag: Guinea-Bissau" + , "category": "Flags" + , "aliases": [ + "guinea_bissau" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฌ๐Ÿ‡พ" + , "description": "flag: Guyana" + , "category": "Flags" + , "aliases": [ + "guyana" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ญ๐Ÿ‡ฐ" + , "description": "flag: Hong Kong SAR China" + , "category": "Flags" + , "aliases": [ + "hong_kong" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ญ๐Ÿ‡ฒ" + , "description": "flag: Heard & McDonald Islands" + , "category": "Flags" + , "aliases": [ + "heard_mcdonald_islands" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ‡ญ๐Ÿ‡ณ" + , "description": "flag: Honduras" + , "category": "Flags" + , "aliases": [ + "honduras" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ญ๐Ÿ‡ท" + , "description": "flag: Croatia" + , "category": "Flags" + , "aliases": [ + "croatia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ญ๐Ÿ‡น" + , "description": "flag: Haiti" + , "category": "Flags" + , "aliases": [ + "haiti" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ญ๐Ÿ‡บ" + , "description": "flag: Hungary" + , "category": "Flags" + , "aliases": [ + "hungary" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฎ๐Ÿ‡จ" + , "description": "flag: Canary Islands" + , "category": "Flags" + , "aliases": [ + "canary_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ฎ๐Ÿ‡ฉ" + , "description": "flag: Indonesia" + , "category": "Flags" + , "aliases": [ + "indonesia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฎ๐Ÿ‡ช" + , "description": "flag: Ireland" + , "category": "Flags" + , "aliases": [ + "ireland" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฎ๐Ÿ‡ฑ" + , "description": "flag: Israel" + , "category": "Flags" + , "aliases": [ + "israel" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฎ๐Ÿ‡ฒ" + , "description": "flag: Isle of Man" + , "category": "Flags" + , "aliases": [ + "isle_of_man" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ฎ๐Ÿ‡ณ" + , "description": "flag: India" + , "category": "Flags" + , "aliases": [ + "india" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฎ๐Ÿ‡ด" + , "description": "flag: British Indian Ocean Territory" + , "category": "Flags" + , "aliases": [ + "british_indian_ocean_territory" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ฎ๐Ÿ‡ถ" + , "description": "flag: Iraq" + , "category": "Flags" + , "aliases": [ + "iraq" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฎ๐Ÿ‡ท" + , "description": "flag: Iran" + , "category": "Flags" + , "aliases": [ + "iran" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฎ๐Ÿ‡ธ" + , "description": "flag: Iceland" + , "category": "Flags" + , "aliases": [ + "iceland" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฎ๐Ÿ‡น" + , "description": "flag: Italy" + , "category": "Flags" + , "aliases": [ + "it" + ] + , "tags": [ + "italy" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‡ฏ๐Ÿ‡ช" + , "description": "flag: Jersey" + , "category": "Flags" + , "aliases": [ + "jersey" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ฏ๐Ÿ‡ฒ" + , "description": "flag: Jamaica" + , "category": "Flags" + , "aliases": [ + "jamaica" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฏ๐Ÿ‡ด" + , "description": "flag: Jordan" + , "category": "Flags" + , "aliases": [ + "jordan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฏ๐Ÿ‡ต" + , "description": "flag: Japan" + , "category": "Flags" + , "aliases": [ + "jp" + ] + , "tags": [ + "japan" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‡ฐ๐Ÿ‡ช" + , "description": "flag: Kenya" + , "category": "Flags" + , "aliases": [ + "kenya" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฐ๐Ÿ‡ฌ" + , "description": "flag: Kyrgyzstan" + , "category": "Flags" + , "aliases": [ + "kyrgyzstan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฐ๐Ÿ‡ญ" + , "description": "flag: Cambodia" + , "category": "Flags" + , "aliases": [ + "cambodia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฐ๐Ÿ‡ฎ" + , "description": "flag: Kiribati" + , "category": "Flags" + , "aliases": [ + "kiribati" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฐ๐Ÿ‡ฒ" + , "description": "flag: Comoros" + , "category": "Flags" + , "aliases": [ + "comoros" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฐ๐Ÿ‡ณ" + , "description": "flag: St. Kitts & Nevis" + , "category": "Flags" + , "aliases": [ + "st_kitts_nevis" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฐ๐Ÿ‡ต" + , "description": "flag: North Korea" + , "category": "Flags" + , "aliases": [ + "north_korea" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฐ๐Ÿ‡ท" + , "description": "flag: South Korea" + , "category": "Flags" + , "aliases": [ + "kr" + ] + , "tags": [ + "korea" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‡ฐ๐Ÿ‡ผ" + , "description": "flag: Kuwait" + , "category": "Flags" + , "aliases": [ + "kuwait" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฐ๐Ÿ‡พ" + , "description": "flag: Cayman Islands" + , "category": "Flags" + , "aliases": [ + "cayman_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฐ๐Ÿ‡ฟ" + , "description": "flag: Kazakhstan" + , "category": "Flags" + , "aliases": [ + "kazakhstan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฑ๐Ÿ‡ฆ" + , "description": "flag: Laos" + , "category": "Flags" + , "aliases": [ + "laos" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฑ๐Ÿ‡ง" + , "description": "flag: Lebanon" + , "category": "Flags" + , "aliases": [ + "lebanon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฑ๐Ÿ‡จ" + , "description": "flag: St. Lucia" + , "category": "Flags" + , "aliases": [ + "st_lucia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฑ๐Ÿ‡ฎ" + , "description": "flag: Liechtenstein" + , "category": "Flags" + , "aliases": [ + "liechtenstein" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฑ๐Ÿ‡ฐ" + , "description": "flag: Sri Lanka" + , "category": "Flags" + , "aliases": [ + "sri_lanka" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฑ๐Ÿ‡ท" + , "description": "flag: Liberia" + , "category": "Flags" + , "aliases": [ + "liberia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฑ๐Ÿ‡ธ" + , "description": "flag: Lesotho" + , "category": "Flags" + , "aliases": [ + "lesotho" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฑ๐Ÿ‡น" + , "description": "flag: Lithuania" + , "category": "Flags" + , "aliases": [ + "lithuania" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฑ๐Ÿ‡บ" + , "description": "flag: Luxembourg" + , "category": "Flags" + , "aliases": [ + "luxembourg" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฑ๐Ÿ‡ป" + , "description": "flag: Latvia" + , "category": "Flags" + , "aliases": [ + "latvia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฑ๐Ÿ‡พ" + , "description": "flag: Libya" + , "category": "Flags" + , "aliases": [ + "libya" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡ฆ" + , "description": "flag: Morocco" + , "category": "Flags" + , "aliases": [ + "morocco" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡จ" + , "description": "flag: Monaco" + , "category": "Flags" + , "aliases": [ + "monaco" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡ฉ" + , "description": "flag: Moldova" + , "category": "Flags" + , "aliases": [ + "moldova" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡ช" + , "description": "flag: Montenegro" + , "category": "Flags" + , "aliases": [ + "montenegro" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡ซ" + , "description": "flag: St. Martin" + , "category": "Flags" + , "aliases": [ + "st_martin" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡ฌ" + , "description": "flag: Madagascar" + , "category": "Flags" + , "aliases": [ + "madagascar" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡ญ" + , "description": "flag: Marshall Islands" + , "category": "Flags" + , "aliases": [ + "marshall_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡ฐ" + , "description": "flag: North Macedonia" + , "category": "Flags" + , "aliases": [ + "macedonia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡ฑ" + , "description": "flag: Mali" + , "category": "Flags" + , "aliases": [ + "mali" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡ฒ" + , "description": "flag: Myanmar (Burma)" + , "category": "Flags" + , "aliases": [ + "myanmar" + ] + , "tags": [ + "burma" + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡ณ" + , "description": "flag: Mongolia" + , "category": "Flags" + , "aliases": [ + "mongolia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡ด" + , "description": "flag: Macao SAR China" + , "category": "Flags" + , "aliases": [ + "macau" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡ต" + , "description": "flag: Northern Mariana Islands" + , "category": "Flags" + , "aliases": [ + "northern_mariana_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡ถ" + , "description": "flag: Martinique" + , "category": "Flags" + , "aliases": [ + "martinique" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡ท" + , "description": "flag: Mauritania" + , "category": "Flags" + , "aliases": [ + "mauritania" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡ธ" + , "description": "flag: Montserrat" + , "category": "Flags" + , "aliases": [ + "montserrat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡น" + , "description": "flag: Malta" + , "category": "Flags" + , "aliases": [ + "malta" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡บ" + , "description": "flag: Mauritius" + , "category": "Flags" + , "aliases": [ + "mauritius" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡ป" + , "description": "flag: Maldives" + , "category": "Flags" + , "aliases": [ + "maldives" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡ผ" + , "description": "flag: Malawi" + , "category": "Flags" + , "aliases": [ + "malawi" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡ฝ" + , "description": "flag: Mexico" + , "category": "Flags" + , "aliases": [ + "mexico" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡พ" + , "description": "flag: Malaysia" + , "category": "Flags" + , "aliases": [ + "malaysia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฒ๐Ÿ‡ฟ" + , "description": "flag: Mozambique" + , "category": "Flags" + , "aliases": [ + "mozambique" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ณ๐Ÿ‡ฆ" + , "description": "flag: Namibia" + , "category": "Flags" + , "aliases": [ + "namibia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ณ๐Ÿ‡จ" + , "description": "flag: New Caledonia" + , "category": "Flags" + , "aliases": [ + "new_caledonia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ณ๐Ÿ‡ช" + , "description": "flag: Niger" + , "category": "Flags" + , "aliases": [ + "niger" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ณ๐Ÿ‡ซ" + , "description": "flag: Norfolk Island" + , "category": "Flags" + , "aliases": [ + "norfolk_island" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ณ๐Ÿ‡ฌ" + , "description": "flag: Nigeria" + , "category": "Flags" + , "aliases": [ + "nigeria" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ณ๐Ÿ‡ฎ" + , "description": "flag: Nicaragua" + , "category": "Flags" + , "aliases": [ + "nicaragua" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ณ๐Ÿ‡ฑ" + , "description": "flag: Netherlands" + , "category": "Flags" + , "aliases": [ + "netherlands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ณ๐Ÿ‡ด" + , "description": "flag: Norway" + , "category": "Flags" + , "aliases": [ + "norway" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ณ๐Ÿ‡ต" + , "description": "flag: Nepal" + , "category": "Flags" + , "aliases": [ + "nepal" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ณ๐Ÿ‡ท" + , "description": "flag: Nauru" + , "category": "Flags" + , "aliases": [ + "nauru" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ณ๐Ÿ‡บ" + , "description": "flag: Niue" + , "category": "Flags" + , "aliases": [ + "niue" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ณ๐Ÿ‡ฟ" + , "description": "flag: New Zealand" + , "category": "Flags" + , "aliases": [ + "new_zealand" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ด๐Ÿ‡ฒ" + , "description": "flag: Oman" + , "category": "Flags" + , "aliases": [ + "oman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ต๐Ÿ‡ฆ" + , "description": "flag: Panama" + , "category": "Flags" + , "aliases": [ + "panama" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ต๐Ÿ‡ช" + , "description": "flag: Peru" + , "category": "Flags" + , "aliases": [ + "peru" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ต๐Ÿ‡ซ" + , "description": "flag: French Polynesia" + , "category": "Flags" + , "aliases": [ + "french_polynesia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ต๐Ÿ‡ฌ" + , "description": "flag: Papua New Guinea" + , "category": "Flags" + , "aliases": [ + "papua_new_guinea" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ต๐Ÿ‡ญ" + , "description": "flag: Philippines" + , "category": "Flags" + , "aliases": [ + "philippines" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ต๐Ÿ‡ฐ" + , "description": "flag: Pakistan" + , "category": "Flags" + , "aliases": [ + "pakistan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ต๐Ÿ‡ฑ" + , "description": "flag: Poland" + , "category": "Flags" + , "aliases": [ + "poland" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ต๐Ÿ‡ฒ" + , "description": "flag: St. Pierre & Miquelon" + , "category": "Flags" + , "aliases": [ + "st_pierre_miquelon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ต๐Ÿ‡ณ" + , "description": "flag: Pitcairn Islands" + , "category": "Flags" + , "aliases": [ + "pitcairn_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ต๐Ÿ‡ท" + , "description": "flag: Puerto Rico" + , "category": "Flags" + , "aliases": [ + "puerto_rico" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ต๐Ÿ‡ธ" + , "description": "flag: Palestinian Territories" + , "category": "Flags" + , "aliases": [ + "palestinian_territories" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ต๐Ÿ‡น" + , "description": "flag: Portugal" + , "category": "Flags" + , "aliases": [ + "portugal" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ต๐Ÿ‡ผ" + , "description": "flag: Palau" + , "category": "Flags" + , "aliases": [ + "palau" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ต๐Ÿ‡พ" + , "description": "flag: Paraguay" + , "category": "Flags" + , "aliases": [ + "paraguay" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ถ๐Ÿ‡ฆ" + , "description": "flag: Qatar" + , "category": "Flags" + , "aliases": [ + "qatar" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ท๐Ÿ‡ช" + , "description": "flag: Rรฉunion" + , "category": "Flags" + , "aliases": [ + "reunion" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ท๐Ÿ‡ด" + , "description": "flag: Romania" + , "category": "Flags" + , "aliases": [ + "romania" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ท๐Ÿ‡ธ" + , "description": "flag: Serbia" + , "category": "Flags" + , "aliases": [ + "serbia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ท๐Ÿ‡บ" + , "description": "flag: Russia" + , "category": "Flags" + , "aliases": [ + "ru" + ] + , "tags": [ + "russia" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‡ท๐Ÿ‡ผ" + , "description": "flag: Rwanda" + , "category": "Flags" + , "aliases": [ + "rwanda" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡ฆ" + , "description": "flag: Saudi Arabia" + , "category": "Flags" + , "aliases": [ + "saudi_arabia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡ง" + , "description": "flag: Solomon Islands" + , "category": "Flags" + , "aliases": [ + "solomon_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡จ" + , "description": "flag: Seychelles" + , "category": "Flags" + , "aliases": [ + "seychelles" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡ฉ" + , "description": "flag: Sudan" + , "category": "Flags" + , "aliases": [ + "sudan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡ช" + , "description": "flag: Sweden" + , "category": "Flags" + , "aliases": [ + "sweden" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡ฌ" + , "description": "flag: Singapore" + , "category": "Flags" + , "aliases": [ + "singapore" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡ญ" + , "description": "flag: St. Helena" + , "category": "Flags" + , "aliases": [ + "st_helena" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡ฎ" + , "description": "flag: Slovenia" + , "category": "Flags" + , "aliases": [ + "slovenia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡ฏ" + , "description": "flag: Svalbard & Jan Mayen" + , "category": "Flags" + , "aliases": [ + "svalbard_jan_mayen" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡ฐ" + , "description": "flag: Slovakia" + , "category": "Flags" + , "aliases": [ + "slovakia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡ฑ" + , "description": "flag: Sierra Leone" + , "category": "Flags" + , "aliases": [ + "sierra_leone" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡ฒ" + , "description": "flag: San Marino" + , "category": "Flags" + , "aliases": [ + "san_marino" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡ณ" + , "description": "flag: Senegal" + , "category": "Flags" + , "aliases": [ + "senegal" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡ด" + , "description": "flag: Somalia" + , "category": "Flags" + , "aliases": [ + "somalia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡ท" + , "description": "flag: Suriname" + , "category": "Flags" + , "aliases": [ + "suriname" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡ธ" + , "description": "flag: South Sudan" + , "category": "Flags" + , "aliases": [ + "south_sudan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡น" + , "description": "flag: Sรฃo Tomรฉ & Prรญncipe" + , "category": "Flags" + , "aliases": [ + "sao_tome_principe" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡ป" + , "description": "flag: El Salvador" + , "category": "Flags" + , "aliases": [ + "el_salvador" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡ฝ" + , "description": "flag: Sint Maarten" + , "category": "Flags" + , "aliases": [ + "sint_maarten" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡พ" + , "description": "flag: Syria" + , "category": "Flags" + , "aliases": [ + "syria" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ธ๐Ÿ‡ฟ" + , "description": "flag: Eswatini" + , "category": "Flags" + , "aliases": [ + "swaziland" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡น๐Ÿ‡ฆ" + , "description": "flag: Tristan da Cunha" + , "category": "Flags" + , "aliases": [ + "tristan_da_cunha" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ‡น๐Ÿ‡จ" + , "description": "flag: Turks & Caicos Islands" + , "category": "Flags" + , "aliases": [ + "turks_caicos_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡น๐Ÿ‡ฉ" + , "description": "flag: Chad" + , "category": "Flags" + , "aliases": [ + "chad" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡น๐Ÿ‡ซ" + , "description": "flag: French Southern Territories" + , "category": "Flags" + , "aliases": [ + "french_southern_territories" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡น๐Ÿ‡ฌ" + , "description": "flag: Togo" + , "category": "Flags" + , "aliases": [ + "togo" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡น๐Ÿ‡ญ" + , "description": "flag: Thailand" + , "category": "Flags" + , "aliases": [ + "thailand" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡น๐Ÿ‡ฏ" + , "description": "flag: Tajikistan" + , "category": "Flags" + , "aliases": [ + "tajikistan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡น๐Ÿ‡ฐ" + , "description": "flag: Tokelau" + , "category": "Flags" + , "aliases": [ + "tokelau" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡น๐Ÿ‡ฑ" + , "description": "flag: Timor-Leste" + , "category": "Flags" + , "aliases": [ + "timor_leste" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡น๐Ÿ‡ฒ" + , "description": "flag: Turkmenistan" + , "category": "Flags" + , "aliases": [ + "turkmenistan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡น๐Ÿ‡ณ" + , "description": "flag: Tunisia" + , "category": "Flags" + , "aliases": [ + "tunisia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡น๐Ÿ‡ด" + , "description": "flag: Tonga" + , "category": "Flags" + , "aliases": [ + "tonga" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡น๐Ÿ‡ท" + , "description": "flag: Turkey" + , "category": "Flags" + , "aliases": [ + "tr" + ] + , "tags": [ + "turkey" + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "๐Ÿ‡น๐Ÿ‡น" + , "description": "flag: Trinidad & Tobago" + , "category": "Flags" + , "aliases": [ + "trinidad_tobago" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡น๐Ÿ‡ป" + , "description": "flag: Tuvalu" + , "category": "Flags" + , "aliases": [ + "tuvalu" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡น๐Ÿ‡ผ" + , "description": "flag: Taiwan" + , "category": "Flags" + , "aliases": [ + "taiwan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡น๐Ÿ‡ฟ" + , "description": "flag: Tanzania" + , "category": "Flags" + , "aliases": [ + "tanzania" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡บ๐Ÿ‡ฆ" + , "description": "flag: Ukraine" + , "category": "Flags" + , "aliases": [ + "ukraine" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡บ๐Ÿ‡ฌ" + , "description": "flag: Uganda" + , "category": "Flags" + , "aliases": [ + "uganda" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡บ๐Ÿ‡ฒ" + , "description": "flag: U.S. Outlying Islands" + , "category": "Flags" + , "aliases": [ + "us_outlying_islands" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ‡บ๐Ÿ‡ณ" + , "description": "flag: United Nations" + , "category": "Flags" + , "aliases": [ + "united_nations" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿ‡บ๐Ÿ‡ธ" + , "description": "flag: United States" + , "category": "Flags" + , "aliases": [ + "us" + ] + , "tags": [ + "flag" + , "united" + , "america" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "๐Ÿ‡บ๐Ÿ‡พ" + , "description": "flag: Uruguay" + , "category": "Flags" + , "aliases": [ + "uruguay" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡บ๐Ÿ‡ฟ" + , "description": "flag: Uzbekistan" + , "category": "Flags" + , "aliases": [ + "uzbekistan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ป๐Ÿ‡ฆ" + , "description": "flag: Vatican City" + , "category": "Flags" + , "aliases": [ + "vatican_city" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ป๐Ÿ‡จ" + , "description": "flag: St. Vincent & Grenadines" + , "category": "Flags" + , "aliases": [ + "st_vincent_grenadines" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ป๐Ÿ‡ช" + , "description": "flag: Venezuela" + , "category": "Flags" + , "aliases": [ + "venezuela" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ป๐Ÿ‡ฌ" + , "description": "flag: British Virgin Islands" + , "category": "Flags" + , "aliases": [ + "british_virgin_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ป๐Ÿ‡ฎ" + , "description": "flag: U.S. Virgin Islands" + , "category": "Flags" + , "aliases": [ + "us_virgin_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ป๐Ÿ‡ณ" + , "description": "flag: Vietnam" + , "category": "Flags" + , "aliases": [ + "vietnam" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ป๐Ÿ‡บ" + , "description": "flag: Vanuatu" + , "category": "Flags" + , "aliases": [ + "vanuatu" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ผ๐Ÿ‡ซ" + , "description": "flag: Wallis & Futuna" + , "category": "Flags" + , "aliases": [ + "wallis_futuna" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ผ๐Ÿ‡ธ" + , "description": "flag: Samoa" + , "category": "Flags" + , "aliases": [ + "samoa" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฝ๐Ÿ‡ฐ" + , "description": "flag: Kosovo" + , "category": "Flags" + , "aliases": [ + "kosovo" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡พ๐Ÿ‡ช" + , "description": "flag: Yemen" + , "category": "Flags" + , "aliases": [ + "yemen" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡พ๐Ÿ‡น" + , "description": "flag: Mayotte" + , "category": "Flags" + , "aliases": [ + "mayotte" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "๐Ÿ‡ฟ๐Ÿ‡ฆ" + , "description": "flag: South Africa" + , "category": "Flags" + , "aliases": [ + "south_africa" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฟ๐Ÿ‡ฒ" + , "description": "flag: Zambia" + , "category": "Flags" + , "aliases": [ + "zambia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿ‡ฟ๐Ÿ‡ผ" + , "description": "flag: Zimbabwe" + , "category": "Flags" + , "aliases": [ + "zimbabwe" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "๐Ÿด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ" + , "description": "flag: England" + , "category": "Flags" + , "aliases": [ + "england" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ" + , "description": "flag: Scotland" + , "category": "Flags" + , "aliases": [ + "scotland" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ" + , "description": "flag: Wales" + , "category": "Flags" + , "aliases": [ + "wales" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +] diff --git a/user_config/usr/share/mouse keyboard/icon.png b/user_config/usr/share/mouse-keyboard/icons/mouse-keyboard.png similarity index 100% rename from user_config/usr/share/mouse keyboard/icon.png rename to user_config/usr/share/mouse-keyboard/icons/mouse-keyboard.png diff --git a/user_config/usr/share/mouse keyboard/stylesheet.css b/user_config/usr/share/mouse-keyboard/stylesheet.css similarity index 100% rename from user_config/usr/share/mouse keyboard/stylesheet.css rename to user_config/usr/share/mouse-keyboard/stylesheet.css