diff options
Diffstat (limited to 'lisp/leim')
-rw-r--r-- | lisp/leim/quail/compose.el | 6 | ||||
-rw-r--r-- | lisp/leim/quail/emoji.el | 2003 | ||||
-rw-r--r-- | lisp/leim/quail/hangul.el | 4 | ||||
-rw-r--r-- | lisp/leim/quail/indian.el | 1639 | ||||
-rw-r--r-- | lisp/leim/quail/indonesian.el | 557 | ||||
-rw-r--r-- | lisp/leim/quail/ipa.el | 10 | ||||
-rw-r--r-- | lisp/leim/quail/latin-post.el | 93 | ||||
-rw-r--r-- | lisp/leim/quail/latin-pre.el | 60 | ||||
-rw-r--r-- | lisp/leim/quail/misc-lang.el | 1184 | ||||
-rw-r--r-- | lisp/leim/quail/philippine.el | 152 | ||||
-rw-r--r-- | lisp/leim/quail/symbol-ksc.el | 4 |
11 files changed, 5611 insertions, 101 deletions
diff --git a/lisp/leim/quail/compose.el b/lisp/leim/quail/compose.el index 2aa8ae78fe7..60c73d7dff8 100644 --- a/lisp/leim/quail/compose.el +++ b/lisp/leim/quail/compose.el @@ -464,9 +464,9 @@ Examples: ("2^" ?²) ("^3" ?³) ("3^" ?³) - ("mu" ?µ) - ("/u" ?µ) - ("u/" ?µ) + ("mu" ?μ) + ("/u" ?μ) + ("u/" ?μ) ("^1" ?¹) ("1^" ?¹) ("^_o" ?º) diff --git a/lisp/leim/quail/emoji.el b/lisp/leim/quail/emoji.el new file mode 100644 index 00000000000..f9d3e170be5 --- /dev/null +++ b/lisp/leim/quail/emoji.el @@ -0,0 +1,2003 @@ +;;; emoji.el --- Quail package for emoji character composition -*- lexical-binding: t -*- + +;; Copyright (C) 2022 Free Software Foundation, Inc. + +;; Author: Juri Linkov <juri@linkov.net> +;; Keywords: multilingual, input method, i18n + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. + +;;; Commentary: + +;; This input method supports the same key sequences as the names +;; defined by the `C-x 8 e s' completions in emoji.el. Also it adds +;; more emoji that enclosed in double colons. + +;; You can enable this input method transiently with `C-u C-x \ emoji RET'. +;; Then typing `C-x \' will enable this input method temporarily, and +;; after typing a key sequence it will be disabled. So typing +;; e.g. `C-x \ : )' will insert the smiling character, and disable +;; this input method automatically afterwards. + +;;; Code: + +(require 'quail) + +(quail-define-package + "emoji" "UTF-8" "🙂" t + "Emoji input method for inserting emoji characters. +Examples: + slightly smiling face -> 🙂 + :slightly_smiling_face: -> 🙂 + :-) -> 🙂" + '(("\t" . quail-completion)) + t nil nil nil nil nil nil nil nil t) + +(eval-when-compile + (require 'emoji) + (emoji--init) + (defmacro emoji--define-rules () + `(quail-define-rules + ,@(let ((rules nil)) + (maphash (lambda (from to) + (push (list from (if (stringp to) + (vector to) + to)) + rules)) + emoji--all-bases) + (append + rules + '((":hash:" ["#️⃣"]) + (":keycap_star:" ["*️⃣"]) + (":zero:" ["0️⃣"]) + (":one:" ["1️⃣"]) + (":two:" ["2️⃣"]) + (":three:" ["3️⃣"]) + (":four:" ["4️⃣"]) + (":five:" ["5️⃣"]) + (":six:" ["6️⃣"]) + (":seven:" ["7️⃣"]) + (":eight:" ["8️⃣"]) + (":nine:" ["9️⃣"]) + (":copyright:" ["©️"]) + (":registered:" ["®️"]) + (":mahjong:" ["🀄"]) + (":black_joker:" ["🃏"]) + (":a:" ["🅰️"]) + (":b:" ["🅱️"]) + (":o2:" ["🅾️"]) + (":parking:" ["🅿️"]) + (":ab:" ["🆎"]) + (":cl:" ["🆑"]) + (":cool:" ["🆒"]) + (":free:" ["🆓"]) + (":id:" ["🆔"]) + (":new:" ["🆕"]) + (":ng:" ["🆖"]) + (":ok:" ["🆗"]) + (":sos:" ["🆘"]) + (":up:" ["🆙"]) + (":vs:" ["🆚"]) + (":flag-ac:" ["🇦🇨"]) + (":flag-ad:" ["🇦🇩"]) + (":flag-ae:" ["🇦🇪"]) + (":flag-af:" ["🇦🇫"]) + (":flag-ag:" ["🇦🇬"]) + (":flag-ai:" ["🇦🇮"]) + (":flag-al:" ["🇦🇱"]) + (":flag-am:" ["🇦🇲"]) + (":flag-ao:" ["🇦🇴"]) + (":flag-aq:" ["🇦🇶"]) + (":flag-ar:" ["🇦🇷"]) + (":flag-as:" ["🇦🇸"]) + (":flag-at:" ["🇦🇹"]) + (":flag-au:" ["🇦🇺"]) + (":flag-aw:" ["🇦🇼"]) + (":flag-ax:" ["🇦🇽"]) + (":flag-az:" ["🇦🇿"]) + (":flag-ba:" ["🇧🇦"]) + (":flag-bb:" ["🇧🇧"]) + (":flag-bd:" ["🇧🇩"]) + (":flag-be:" ["🇧🇪"]) + (":flag-bf:" ["🇧🇫"]) + (":flag-bg:" ["🇧🇬"]) + (":flag-bh:" ["🇧🇭"]) + (":flag-bi:" ["🇧🇮"]) + (":flag-bj:" ["🇧🇯"]) + (":flag-bl:" ["🇧🇱"]) + (":flag-bm:" ["🇧🇲"]) + (":flag-bn:" ["🇧🇳"]) + (":flag-bo:" ["🇧🇴"]) + (":flag-bq:" ["🇧🇶"]) + (":flag-br:" ["🇧🇷"]) + (":flag-bs:" ["🇧🇸"]) + (":flag-bt:" ["🇧🇹"]) + (":flag-bv:" ["🇧🇻"]) + (":flag-bw:" ["🇧🇼"]) + (":flag-by:" ["🇧🇾"]) + (":flag-bz:" ["🇧🇿"]) + (":flag-ca:" ["🇨🇦"]) + (":flag-cc:" ["🇨🇨"]) + (":flag-cd:" ["🇨🇩"]) + (":flag-cf:" ["🇨🇫"]) + (":flag-cg:" ["🇨🇬"]) + (":flag-ch:" ["🇨🇭"]) + (":flag-ci:" ["🇨🇮"]) + (":flag-ck:" ["🇨🇰"]) + (":flag-cl:" ["🇨🇱"]) + (":flag-cm:" ["🇨🇲"]) + (":cn:" ["🇨🇳"]) + (":flag-cn:" ["🇨🇳"]) + (":flag-co:" ["🇨🇴"]) + (":flag-cp:" ["🇨🇵"]) + (":flag-cr:" ["🇨🇷"]) + (":flag-cu:" ["🇨🇺"]) + (":flag-cv:" ["🇨🇻"]) + (":flag-cw:" ["🇨🇼"]) + (":flag-cx:" ["🇨🇽"]) + (":flag-cy:" ["🇨🇾"]) + (":flag-cz:" ["🇨🇿"]) + (":de:" ["🇩🇪"]) + (":flag-de:" ["🇩🇪"]) + (":flag-dg:" ["🇩🇬"]) + (":flag-dj:" ["🇩🇯"]) + (":flag-dk:" ["🇩🇰"]) + (":flag-dm:" ["🇩🇲"]) + (":flag-do:" ["🇩🇴"]) + (":flag-dz:" ["🇩🇿"]) + (":flag-ea:" ["🇪🇦"]) + (":flag-ec:" ["🇪🇨"]) + (":flag-ee:" ["🇪🇪"]) + (":flag-eg:" ["🇪🇬"]) + (":flag-eh:" ["🇪🇭"]) + (":flag-er:" ["🇪🇷"]) + (":es:" ["🇪🇸"]) + (":flag-es:" ["🇪🇸"]) + (":flag-et:" ["🇪🇹"]) + (":flag-eu:" ["🇪🇺"]) + (":flag-fi:" ["🇫🇮"]) + (":flag-fj:" ["🇫🇯"]) + (":flag-fk:" ["🇫🇰"]) + (":flag-fm:" ["🇫🇲"]) + (":flag-fo:" ["🇫🇴"]) + (":fr:" ["🇫🇷"]) + (":flag-fr:" ["🇫🇷"]) + (":flag-ga:" ["🇬🇦"]) + (":gb:" ["🇬🇧"]) + (":uk:" ["🇬🇧"]) + (":flag-gb:" ["🇬🇧"]) + (":flag-gd:" ["🇬🇩"]) + (":flag-ge:" ["🇬🇪"]) + (":flag-gf:" ["🇬🇫"]) + (":flag-gg:" ["🇬🇬"]) + (":flag-gh:" ["🇬🇭"]) + (":flag-gi:" ["🇬🇮"]) + (":flag-gl:" ["🇬🇱"]) + (":flag-gm:" ["🇬🇲"]) + (":flag-gn:" ["🇬🇳"]) + (":flag-gp:" ["🇬🇵"]) + (":flag-gq:" ["🇬🇶"]) + (":flag-gr:" ["🇬🇷"]) + (":flag-gs:" ["🇬🇸"]) + (":flag-gt:" ["🇬🇹"]) + (":flag-gu:" ["🇬🇺"]) + (":flag-gw:" ["🇬🇼"]) + (":flag-gy:" ["🇬🇾"]) + (":flag-hk:" ["🇭🇰"]) + (":flag-hm:" ["🇭🇲"]) + (":flag-hn:" ["🇭🇳"]) + (":flag-hr:" ["🇭🇷"]) + (":flag-ht:" ["🇭🇹"]) + (":flag-hu:" ["🇭🇺"]) + (":flag-ic:" ["🇮🇨"]) + (":flag-id:" ["🇮🇩"]) + (":flag-ie:" ["🇮🇪"]) + (":flag-il:" ["🇮🇱"]) + (":flag-im:" ["🇮🇲"]) + (":flag-in:" ["🇮🇳"]) + (":flag-io:" ["🇮🇴"]) + (":flag-iq:" ["🇮🇶"]) + (":flag-ir:" ["🇮🇷"]) + (":flag-is:" ["🇮🇸"]) + (":it:" ["🇮🇹"]) + (":flag-it:" ["🇮🇹"]) + (":flag-je:" ["🇯🇪"]) + (":flag-jm:" ["🇯🇲"]) + (":flag-jo:" ["🇯🇴"]) + (":jp:" ["🇯🇵"]) + (":flag-jp:" ["🇯🇵"]) + (":flag-ke:" ["🇰🇪"]) + (":flag-kg:" ["🇰🇬"]) + (":flag-kh:" ["🇰🇭"]) + (":flag-ki:" ["🇰🇮"]) + (":flag-km:" ["🇰🇲"]) + (":flag-kn:" ["🇰🇳"]) + (":flag-kp:" ["🇰🇵"]) + (":kr:" ["🇰🇷"]) + (":flag-kr:" ["🇰🇷"]) + (":flag-kw:" ["🇰🇼"]) + (":flag-ky:" ["🇰🇾"]) + (":flag-kz:" ["🇰🇿"]) + (":flag-la:" ["🇱🇦"]) + (":flag-lb:" ["🇱🇧"]) + (":flag-lc:" ["🇱🇨"]) + (":flag-li:" ["🇱🇮"]) + (":flag-lk:" ["🇱🇰"]) + (":flag-lr:" ["🇱🇷"]) + (":flag-ls:" ["🇱🇸"]) + (":flag-lt:" ["🇱🇹"]) + (":flag-lu:" ["🇱🇺"]) + (":flag-lv:" ["🇱🇻"]) + (":flag-ly:" ["🇱🇾"]) + (":flag-ma:" ["🇲🇦"]) + (":flag-mc:" ["🇲🇨"]) + (":flag-md:" ["🇲🇩"]) + (":flag-me:" ["🇲🇪"]) + (":flag-mf:" ["🇲🇫"]) + (":flag-mg:" ["🇲🇬"]) + (":flag-mh:" ["🇲🇭"]) + (":flag-mk:" ["🇲🇰"]) + (":flag-ml:" ["🇲🇱"]) + (":flag-mm:" ["🇲🇲"]) + (":flag-mn:" ["🇲🇳"]) + (":flag-mo:" ["🇲🇴"]) + (":flag-mp:" ["🇲🇵"]) + (":flag-mq:" ["🇲🇶"]) + (":flag-mr:" ["🇲🇷"]) + (":flag-ms:" ["🇲🇸"]) + (":flag-mt:" ["🇲🇹"]) + (":flag-mu:" ["🇲🇺"]) + (":flag-mv:" ["🇲🇻"]) + (":flag-mw:" ["🇲🇼"]) + (":flag-mx:" ["🇲🇽"]) + (":flag-my:" ["🇲🇾"]) + (":flag-mz:" ["🇲🇿"]) + (":flag-na:" ["🇳🇦"]) + (":flag-nc:" ["🇳🇨"]) + (":flag-ne:" ["🇳🇪"]) + (":flag-nf:" ["🇳🇫"]) + (":flag-ng:" ["🇳🇬"]) + (":flag-ni:" ["🇳🇮"]) + (":flag-nl:" ["🇳🇱"]) + (":flag-no:" ["🇳🇴"]) + (":flag-np:" ["🇳🇵"]) + (":flag-nr:" ["🇳🇷"]) + (":flag-nu:" ["🇳🇺"]) + (":flag-nz:" ["🇳🇿"]) + (":flag-om:" ["🇴🇲"]) + (":flag-pa:" ["🇵🇦"]) + (":flag-pe:" ["🇵🇪"]) + (":flag-pf:" ["🇵🇫"]) + (":flag-pg:" ["🇵🇬"]) + (":flag-ph:" ["🇵🇭"]) + (":flag-pk:" ["🇵🇰"]) + (":flag-pl:" ["🇵🇱"]) + (":flag-pm:" ["🇵🇲"]) + (":flag-pn:" ["🇵🇳"]) + (":flag-pr:" ["🇵🇷"]) + (":flag-ps:" ["🇵🇸"]) + (":flag-pt:" ["🇵🇹"]) + (":flag-pw:" ["🇵🇼"]) + (":flag-py:" ["🇵🇾"]) + (":flag-qa:" ["🇶🇦"]) + (":flag-re:" ["🇷🇪"]) + (":flag-ro:" ["🇷🇴"]) + (":flag-rs:" ["🇷🇸"]) + (":ru:" ["🇷🇺"]) + (":flag-ru:" ["🇷🇺"]) + (":flag-rw:" ["🇷🇼"]) + (":flag-sa:" ["🇸🇦"]) + (":flag-sb:" ["🇸🇧"]) + (":flag-sc:" ["🇸🇨"]) + (":flag-sd:" ["🇸🇩"]) + (":flag-se:" ["🇸🇪"]) + (":flag-sg:" ["🇸🇬"]) + (":flag-sh:" ["🇸🇭"]) + (":flag-si:" ["🇸🇮"]) + (":flag-sj:" ["🇸🇯"]) + (":flag-sk:" ["🇸🇰"]) + (":flag-sl:" ["🇸🇱"]) + (":flag-sm:" ["🇸🇲"]) + (":flag-sn:" ["🇸🇳"]) + (":flag-so:" ["🇸🇴"]) + (":flag-sr:" ["🇸🇷"]) + (":flag-ss:" ["🇸🇸"]) + (":flag-st:" ["🇸🇹"]) + (":flag-sv:" ["🇸🇻"]) + (":flag-sx:" ["🇸🇽"]) + (":flag-sy:" ["🇸🇾"]) + (":flag-sz:" ["🇸🇿"]) + (":flag-ta:" ["🇹🇦"]) + (":flag-tc:" ["🇹🇨"]) + (":flag-td:" ["🇹🇩"]) + (":flag-tf:" ["🇹🇫"]) + (":flag-tg:" ["🇹🇬"]) + (":flag-th:" ["🇹🇭"]) + (":flag-tj:" ["🇹🇯"]) + (":flag-tk:" ["🇹🇰"]) + (":flag-tl:" ["🇹🇱"]) + (":flag-tm:" ["🇹🇲"]) + (":flag-tn:" ["🇹🇳"]) + (":flag-to:" ["🇹🇴"]) + (":flag-tr:" ["🇹🇷"]) + (":flag-tt:" ["🇹🇹"]) + (":flag-tv:" ["🇹🇻"]) + (":flag-tw:" ["🇹🇼"]) + (":flag-tz:" ["🇹🇿"]) + (":flag-ua:" ["🇺🇦"]) + (":flag-ug:" ["🇺🇬"]) + (":flag-um:" ["🇺🇲"]) + (":flag-un:" ["🇺🇳"]) + (":us:" ["🇺🇸"]) + (":flag-us:" ["🇺🇸"]) + (":flag-uy:" ["🇺🇾"]) + (":flag-uz:" ["🇺🇿"]) + (":flag-va:" ["🇻🇦"]) + (":flag-vc:" ["🇻🇨"]) + (":flag-ve:" ["🇻🇪"]) + (":flag-vg:" ["🇻🇬"]) + (":flag-vi:" ["🇻🇮"]) + (":flag-vn:" ["🇻🇳"]) + (":flag-vu:" ["🇻🇺"]) + (":flag-wf:" ["🇼🇫"]) + (":flag-ws:" ["🇼🇸"]) + (":flag-xk:" ["🇽🇰"]) + (":flag-ye:" ["🇾🇪"]) + (":flag-yt:" ["🇾🇹"]) + (":flag-za:" ["🇿🇦"]) + (":flag-zm:" ["🇿🇲"]) + (":flag-zw:" ["🇿🇼"]) + (":koko:" ["🈁"]) + (":sa:" ["🈂️"]) + (":u7121:" ["🈚"]) + (":u6307:" ["🈯"]) + (":u7981:" ["🈲"]) + (":u7a7a:" ["🈳"]) + (":u5408:" ["🈴"]) + (":u6e80:" ["🈵"]) + (":u6709:" ["🈶"]) + (":u6708:" ["🈷️"]) + (":u7533:" ["🈸"]) + (":u5272:" ["🈹"]) + (":u55b6:" ["🈺"]) + (":ideograph_advantage:" ["🉐"]) + (":accept:" ["🉑"]) + (":cyclone:" ["🌀"]) + (":foggy:" ["🌁"]) + (":closed_umbrella:" ["🌂"]) + (":night_with_stars:" ["🌃"]) + (":sunrise_over_mountains:" ["🌄"]) + (":sunrise:" ["🌅"]) + (":city_sunset:" ["🌆"]) + (":city_sunrise:" ["🌇"]) + (":rainbow:" ["🌈"]) + (":bridge_at_night:" ["🌉"]) + (":ocean:" ["🌊"]) + (":volcano:" ["🌋"]) + (":milky_way:" ["🌌"]) + (":earth_africa:" ["🌍"]) + (":earth_americas:" ["🌎"]) + (":earth_asia:" ["🌏"]) + (":globe_with_meridians:" ["🌐"]) + (":new_moon:" ["🌑"]) + (":waxing_crescent_moon:" ["🌒"]) + (":first_quarter_moon:" ["🌓"]) + (":moon:" ["🌔"]) + (":waxing_gibbous_moon:" ["🌔"]) + (":full_moon:" ["🌕"]) + (":waning_gibbous_moon:" ["🌖"]) + (":last_quarter_moon:" ["🌗"]) + (":waning_crescent_moon:" ["🌘"]) + (":crescent_moon:" ["🌙"]) + (":new_moon_with_face:" ["🌚"]) + (":first_quarter_moon_with_face:" ["🌛"]) + (":last_quarter_moon_with_face:" ["🌜"]) + (":full_moon_with_face:" ["🌝"]) + (":sun_with_face:" ["🌞"]) + (":star2:" ["🌟"]) + (":stars:" ["🌠"]) + (":thermometer:" ["🌡️"]) + (":mostly_sunny:" ["🌤️"]) + (":sun_small_cloud:" ["🌤️"]) + (":barely_sunny:" ["🌥️"]) + (":sun_behind_cloud:" ["🌥️"]) + (":partly_sunny_rain:" ["🌦️"]) + (":sun_behind_rain_cloud:" ["🌦️"]) + (":rain_cloud:" ["🌧️"]) + (":snow_cloud:" ["🌨️"]) + (":lightning:" ["🌩️"]) + (":lightning_cloud:" ["🌩️"]) + (":tornado:" ["🌪️"]) + (":tornado_cloud:" ["🌪️"]) + (":fog:" ["🌫️"]) + (":wind_blowing_face:" ["🌬️"]) + (":hotdog:" ["🌭"]) + (":taco:" ["🌮"]) + (":burrito:" ["🌯"]) + (":chestnut:" ["🌰"]) + (":seedling:" ["🌱"]) + (":evergreen_tree:" ["🌲"]) + (":deciduous_tree:" ["🌳"]) + (":palm_tree:" ["🌴"]) + (":cactus:" ["🌵"]) + (":hot_pepper:" ["🌶️"]) + (":tulip:" ["🌷"]) + (":cherry_blossom:" ["🌸"]) + (":rose:" ["🌹"]) + (":hibiscus:" ["🌺"]) + (":sunflower:" ["🌻"]) + (":blossom:" ["🌼"]) + (":corn:" ["🌽"]) + (":ear_of_rice:" ["🌾"]) + (":herb:" ["🌿"]) + (":four_leaf_clover:" ["🍀"]) + (":maple_leaf:" ["🍁"]) + (":fallen_leaf:" ["🍂"]) + (":leaves:" ["🍃"]) + (":mushroom:" ["🍄"]) + (":tomato:" ["🍅"]) + (":eggplant:" ["🍆"]) + (":grapes:" ["🍇"]) + (":melon:" ["🍈"]) + (":watermelon:" ["🍉"]) + (":tangerine:" ["🍊"]) + (":lemon:" ["🍋"]) + (":banana:" ["🍌"]) + (":pineapple:" ["🍍"]) + (":apple:" ["🍎"]) + (":green_apple:" ["🍏"]) + (":pear:" ["🍐"]) + (":peach:" ["🍑"]) + (":cherries:" ["🍒"]) + (":strawberry:" ["🍓"]) + (":hamburger:" ["🍔"]) + (":pizza:" ["🍕"]) + (":meat_on_bone:" ["🍖"]) + (":poultry_leg:" ["🍗"]) + (":rice_cracker:" ["🍘"]) + (":rice_ball:" ["🍙"]) + (":rice:" ["🍚"]) + (":curry:" ["🍛"]) + (":ramen:" ["🍜"]) + (":spaghetti:" ["🍝"]) + (":bread:" ["🍞"]) + (":fries:" ["🍟"]) + (":sweet_potato:" ["🍠"]) + (":dango:" ["🍡"]) + (":oden:" ["🍢"]) + (":sushi:" ["🍣"]) + (":fried_shrimp:" ["🍤"]) + (":fish_cake:" ["🍥"]) + (":icecream:" ["🍦"]) + (":shaved_ice:" ["🍧"]) + (":ice_cream:" ["🍨"]) + (":doughnut:" ["🍩"]) + (":cookie:" ["🍪"]) + (":chocolate_bar:" ["🍫"]) + (":candy:" ["🍬"]) + (":lollipop:" ["🍭"]) + (":custard:" ["🍮"]) + (":honey_pot:" ["🍯"]) + (":cake:" ["🍰"]) + (":bento:" ["🍱"]) + (":stew:" ["🍲"]) + (":fried_egg:" ["🍳"]) + (":cooking:" ["🍳"]) + (":fork_and_knife:" ["🍴"]) + (":tea:" ["🍵"]) + (":sake:" ["🍶"]) + (":wine_glass:" ["🍷"]) + (":cocktail:" ["🍸"]) + (":tropical_drink:" ["🍹"]) + (":beer:" ["🍺"]) + (":beers:" ["🍻"]) + (":baby_bottle:" ["🍼"]) + (":knife_fork_plate:" ["🍽️"]) + (":champagne:" ["🍾"]) + (":popcorn:" ["🍿"]) + (":ribbon:" ["🎀"]) + (":gift:" ["🎁"]) + (":birthday:" ["🎂"]) + (":jack_o_lantern:" ["🎃"]) + (":christmas_tree:" ["🎄"]) + (":santa:" ["🎅"]) + (":fireworks:" ["🎆"]) + (":sparkler:" ["🎇"]) + (":balloon:" ["🎈"]) + (":tada:" ["🎉"]) + (":confetti_ball:" ["🎊"]) + (":tanabata_tree:" ["🎋"]) + (":crossed_flags:" ["🎌"]) + (":bamboo:" ["🎍"]) + (":dolls:" ["🎎"]) + (":flags:" ["🎏"]) + (":wind_chime:" ["🎐"]) + (":rice_scene:" ["🎑"]) + (":school_satchel:" ["🎒"]) + (":mortar_board:" ["🎓"]) + (":medal:" ["🎖️"]) + (":reminder_ribbon:" ["🎗️"]) + (":studio_microphone:" ["🎙️"]) + (":level_slider:" ["🎚️"]) + (":control_knobs:" ["🎛️"]) + (":film_frames:" ["🎞️"]) + (":admission_tickets:" ["🎟️"]) + (":carousel_horse:" ["🎠"]) + (":ferris_wheel:" ["🎡"]) + (":roller_coaster:" ["🎢"]) + (":fishing_pole_and_fish:" ["🎣"]) + (":microphone:" ["🎤"]) + (":movie_camera:" ["🎥"]) + (":cinema:" ["🎦"]) + (":headphones:" ["🎧"]) + (":art:" ["🎨"]) + (":tophat:" ["🎩"]) + (":circus_tent:" ["🎪"]) + (":ticket:" ["🎫"]) + (":clapper:" ["🎬"]) + (":performing_arts:" ["🎭"]) + (":video_game:" ["🎮"]) + (":dart:" ["🎯"]) + (":slot_machine:" ["🎰"]) + (":8ball:" ["🎱"]) + (":game_die:" ["🎲"]) + (":bowling:" ["🎳"]) + (":flower_playing_cards:" ["🎴"]) + (":musical_note:" ["🎵"]) + (":notes:" ["🎶"]) + (":saxophone:" ["🎷"]) + (":guitar:" ["🎸"]) + (":musical_keyboard:" ["🎹"]) + (":trumpet:" ["🎺"]) + (":violin:" ["🎻"]) + (":musical_score:" ["🎼"]) + (":running_shirt_with_sash:" ["🎽"]) + (":tennis:" ["🎾"]) + (":ski:" ["🎿"]) + (":basketball:" ["🏀"]) + (":checkered_flag:" ["🏁"]) + (":snowboarder:" ["🏂"]) + (":woman-running:" ["🏃♀️"]) + (":man-running:" ["🏃♂️"]) + (":runner:" ["🏃"]) + (":running:" ["🏃"]) + (":woman-surfing:" ["🏄♀️"]) + (":man-surfing:" ["🏄♂️"]) + (":surfer:" ["🏄"]) + (":sports_medal:" ["🏅"]) + (":trophy:" ["🏆"]) + (":horse_racing:" ["🏇"]) + (":football:" ["🏈"]) + (":rugby_football:" ["🏉"]) + (":woman-swimming:" ["🏊♀️"]) + (":man-swimming:" ["🏊♂️"]) + (":swimmer:" ["🏊"]) + (":woman-lifting-weights:" ["🏋️♀️"]) + (":man-lifting-weights:" ["🏋️♂️"]) + (":weight_lifter:" ["🏋️"]) + (":woman-golfing:" ["🏌️♀️"]) + (":man-golfing:" ["🏌️♂️"]) + (":golfer:" ["🏌️"]) + (":racing_motorcycle:" ["🏍️"]) + (":racing_car:" ["🏎️"]) + (":cricket_bat_and_ball:" ["🏏"]) + (":volleyball:" ["🏐"]) + (":field_hockey_stick_and_ball:" ["🏑"]) + (":ice_hockey_stick_and_puck:" ["🏒"]) + (":table_tennis_paddle_and_ball:" ["🏓"]) + (":snow_capped_mountain:" ["🏔️"]) + (":camping:" ["🏕️"]) + (":beach_with_umbrella:" ["🏖️"]) + (":building_construction:" ["🏗️"]) + (":house_buildings:" ["🏘️"]) + (":cityscape:" ["🏙️"]) + (":derelict_house_building:" ["🏚️"]) + (":classical_building:" ["🏛️"]) + (":desert:" ["🏜️"]) + (":desert_island:" ["🏝️"]) + (":national_park:" ["🏞️"]) + (":stadium:" ["🏟️"]) + (":house:" ["🏠"]) + (":house_with_garden:" ["🏡"]) + (":office:" ["🏢"]) + (":post_office:" ["🏣"]) + (":european_post_office:" ["🏤"]) + (":hospital:" ["🏥"]) + (":bank:" ["🏦"]) + (":atm:" ["🏧"]) + (":hotel:" ["🏨"]) + (":love_hotel:" ["🏩"]) + (":convenience_store:" ["🏪"]) + (":school:" ["🏫"]) + (":department_store:" ["🏬"]) + (":factory:" ["🏭"]) + (":izakaya_lantern:" ["🏮"]) + (":lantern:" ["🏮"]) + (":japanese_castle:" ["🏯"]) + (":european_castle:" ["🏰"]) + (":rainbow-flag:" ["🏳️🌈"]) + (":transgender_flag:" ["🏳️⚧️"]) + (":waving_white_flag:" ["🏳️"]) + (":pirate_flag:" ["🏴☠️"]) + (":flag-england:" ["🏴"]) + (":flag-scotland:" ["🏴"]) + (":flag-wales:" ["🏴"]) + (":waving_black_flag:" ["🏴"]) + (":rosette:" ["🏵️"]) + (":label:" ["🏷️"]) + (":badminton_racquet_and_shuttlecock:" ["🏸"]) + (":bow_and_arrow:" ["🏹"]) + (":amphora:" ["🏺"]) + (":skin-tone-2:" ["🏻"]) + (":skin-tone-3:" ["🏼"]) + (":skin-tone-4:" ["🏽"]) + (":skin-tone-5:" ["🏾"]) + (":skin-tone-6:" ["🏿"]) + (":rat:" ["🐀"]) + (":mouse2:" ["🐁"]) + (":ox:" ["🐂"]) + (":water_buffalo:" ["🐃"]) + (":cow2:" ["🐄"]) + (":tiger2:" ["🐅"]) + (":leopard:" ["🐆"]) + (":rabbit2:" ["🐇"]) + (":black_cat:" ["🐈⬛"]) + (":cat2:" ["🐈"]) + (":dragon:" ["🐉"]) + (":crocodile:" ["🐊"]) + (":whale2:" ["🐋"]) + (":snail:" ["🐌"]) + (":snake:" ["🐍"]) + (":racehorse:" ["🐎"]) + (":ram:" ["🐏"]) + (":goat:" ["🐐"]) + (":sheep:" ["🐑"]) + (":monkey:" ["🐒"]) + (":rooster:" ["🐓"]) + (":chicken:" ["🐔"]) + (":service_dog:" ["🐕🦺"]) + (":dog2:" ["🐕"]) + (":pig2:" ["🐖"]) + (":boar:" ["🐗"]) + (":elephant:" ["🐘"]) + (":octopus:" ["🐙"]) + (":shell:" ["🐚"]) + (":bug:" ["🐛"]) + (":ant:" ["🐜"]) + (":bee:" ["🐝"]) + (":honeybee:" ["🐝"]) + (":ladybug:" ["🐞"]) + (":lady_beetle:" ["🐞"]) + (":fish:" ["🐟"]) + (":tropical_fish:" ["🐠"]) + (":blowfish:" ["🐡"]) + (":turtle:" ["🐢"]) + (":hatching_chick:" ["🐣"]) + (":baby_chick:" ["🐤"]) + (":hatched_chick:" ["🐥"]) + (":bird:" ["🐦"]) + (":penguin:" ["🐧"]) + (":koala:" ["🐨"]) + (":poodle:" ["🐩"]) + (":dromedary_camel:" ["🐪"]) + (":camel:" ["🐫"]) + (":dolphin:" ["🐬"]) + (":flipper:" ["🐬"]) + (":mouse:" ["🐭"]) + (":cow:" ["🐮"]) + (":tiger:" ["🐯"]) + (":rabbit:" ["🐰"]) + (":cat:" ["🐱"]) + (":dragon_face:" ["🐲"]) + (":whale:" ["🐳"]) + (":horse:" ["🐴"]) + (":monkey_face:" ["🐵"]) + (":o)" ["🐵"]) + (":dog:" ["🐶"]) + (":pig:" ["🐷"]) + (":frog:" ["🐸"]) + (":hamster:" ["🐹"]) + (":wolf:" ["🐺"]) + (":polar_bear:" ["🐻❄️"]) + (":bear:" ["🐻"]) + (":panda_face:" ["🐼"]) + (":pig_nose:" ["🐽"]) + (":feet:" ["🐾"]) + (":paw_prints:" ["🐾"]) + (":chipmunk:" ["🐿️"]) + (":eyes:" ["👀"]) + (":eye-in-speech-bubble:" ["👁️🗨️"]) + (":eye:" ["👁️"]) + (":ear:" ["👂"]) + (":nose:" ["👃"]) + (":lips:" ["👄"]) + (":tongue:" ["👅"]) + (":point_up_2:" ["👆"]) + (":point_down:" ["👇"]) + (":point_left:" ["👈"]) + (":point_right:" ["👉"]) + (":facepunch:" ["👊"]) + (":punch:" ["👊"]) + (":wave:" ["👋"]) + (":ok_hand:" ["👌"]) + (":+1:" ["👍"]) + (":thumbsup:" ["👍"]) + (":-1:" ["👎"]) + (":thumbsdown:" ["👎"]) + (":clap:" ["👏"]) + (":open_hands:" ["👐"]) + (":crown:" ["👑"]) + (":womans_hat:" ["👒"]) + (":eyeglasses:" ["👓"]) + (":necktie:" ["👔"]) + (":shirt:" ["👕"]) + (":tshirt:" ["👕"]) + (":jeans:" ["👖"]) + (":dress:" ["👗"]) + (":kimono:" ["👘"]) + (":bikini:" ["👙"]) + (":womans_clothes:" ["👚"]) + (":purse:" ["👛"]) + (":handbag:" ["👜"]) + (":pouch:" ["👝"]) + (":mans_shoe:" ["👞"]) + (":shoe:" ["👞"]) + (":athletic_shoe:" ["👟"]) + (":high_heel:" ["👠"]) + (":sandal:" ["👡"]) + (":boot:" ["👢"]) + (":footprints:" ["👣"]) + (":bust_in_silhouette:" ["👤"]) + (":busts_in_silhouette:" ["👥"]) + (":boy:" ["👦"]) + (":girl:" ["👧"]) + (":male-farmer:" ["👨🌾"]) + (":male-cook:" ["👨🍳"]) + (":man_feeding_baby:" ["👨🍼"]) + (":male-student:" ["👨🎓"]) + (":male-singer:" ["👨🎤"]) + (":male-artist:" ["👨🎨"]) + (":male-teacher:" ["👨🏫"]) + (":male-factory-worker:" ["👨🏭"]) + (":man-boy-boy:" ["👨👦👦"]) + (":man-boy:" ["👨👦"]) + (":man-girl-boy:" ["👨👧👦"]) + (":man-girl-girl:" ["👨👧👧"]) + (":man-girl:" ["👨👧"]) + (":man-man-boy:" ["👨👨👦"]) + (":man-man-boy-boy:" ["👨👨👦👦"]) + (":man-man-girl:" ["👨👨👧"]) + (":man-man-girl-boy:" ["👨👨👧👦"]) + (":man-man-girl-girl:" ["👨👨👧👧"]) + (":man-woman-boy:" ["👨👩👦"]) + (":man-woman-boy-boy:" ["👨👩👦👦"]) + (":man-woman-girl:" ["👨👩👧"]) + (":man-woman-girl-boy:" ["👨👩👧👦"]) + (":man-woman-girl-girl:" ["👨👩👧👧"]) + (":male-technologist:" ["👨💻"]) + (":male-office-worker:" ["👨💼"]) + (":male-mechanic:" ["👨🔧"]) + (":male-scientist:" ["👨🔬"]) + (":male-astronaut:" ["👨🚀"]) + (":male-firefighter:" ["👨🚒"]) + (":man_with_probing_cane:" ["👨🦯"]) + (":red_haired_man:" ["👨🦰"]) + (":curly_haired_man:" ["👨🦱"]) + (":bald_man:" ["👨🦲"]) + (":white_haired_man:" ["👨🦳"]) + (":man_in_motorized_wheelchair:" ["👨🦼"]) + (":man_in_manual_wheelchair:" ["👨🦽"]) + (":male-doctor:" ["👨⚕️"]) + (":male-judge:" ["👨⚖️"]) + (":male-pilot:" ["👨✈️"]) + (":man-heart-man:" ["👨❤️👨"]) + (":man-kiss-man:" ["👨❤️💋👨"]) + (":man:" ["👨"]) + (":female-farmer:" ["👩🌾"]) + (":female-cook:" ["👩🍳"]) + (":woman_feeding_baby:" ["👩🍼"]) + (":female-student:" ["👩🎓"]) + (":female-singer:" ["👩🎤"]) + (":female-artist:" ["👩🎨"]) + (":female-teacher:" ["👩🏫"]) + (":female-factory-worker:" ["👩🏭"]) + (":woman-boy-boy:" ["👩👦👦"]) + (":woman-boy:" ["👩👦"]) + (":woman-girl-boy:" ["👩👧👦"]) + (":woman-girl-girl:" ["👩👧👧"]) + (":woman-girl:" ["👩👧"]) + (":woman-woman-boy:" ["👩👩👦"]) + (":woman-woman-boy-boy:" ["👩👩👦👦"]) + (":woman-woman-girl:" ["👩👩👧"]) + (":woman-woman-girl-boy:" ["👩👩👧👦"]) + (":woman-woman-girl-girl:" ["👩👩👧👧"]) + (":female-technologist:" ["👩💻"]) + (":female-office-worker:" ["👩💼"]) + (":female-mechanic:" ["👩🔧"]) + (":female-scientist:" ["👩🔬"]) + (":female-astronaut:" ["👩🚀"]) + (":female-firefighter:" ["👩🚒"]) + (":woman_with_probing_cane:" ["👩🦯"]) + (":red_haired_woman:" ["👩🦰"]) + (":curly_haired_woman:" ["👩🦱"]) + (":bald_woman:" ["👩🦲"]) + (":white_haired_woman:" ["👩🦳"]) + (":woman_in_motorized_wheelchair:" ["👩🦼"]) + (":woman_in_manual_wheelchair:" ["👩🦽"]) + (":female-doctor:" ["👩⚕️"]) + (":female-judge:" ["👩⚖️"]) + (":female-pilot:" ["👩✈️"]) + (":woman-heart-man:" ["👩❤️👨"]) + (":woman-heart-woman:" ["👩❤️👩"]) + (":woman-kiss-man:" ["👩❤️💋👨"]) + (":woman-kiss-woman:" ["👩❤️💋👩"]) + (":woman:" ["👩"]) + (":family:" ["👪"]) + (":man_and_woman_holding_hands:" ["👫"]) + (":woman_and_man_holding_hands:" ["👫"]) + (":couple:" ["👫"]) + (":two_men_holding_hands:" ["👬"]) + (":men_holding_hands:" ["👬"]) + (":two_women_holding_hands:" ["👭"]) + (":women_holding_hands:" ["👭"]) + (":female-police-officer:" ["👮♀️"]) + (":male-police-officer:" ["👮♂️"]) + (":cop:" ["👮"]) + (":women-with-bunny-ears-partying:" ["👯♀️"]) + (":woman-with-bunny-ears-partying:" ["👯♀️"]) + (":men-with-bunny-ears-partying:" ["👯♂️"]) + (":man-with-bunny-ears-partying:" ["👯♂️"]) + (":dancers:" ["👯"]) + (":woman_with_veil:" ["👰♀️"]) + (":man_with_veil:" ["👰♂️"]) + (":bride_with_veil:" ["👰"]) + (":blond-haired-woman:" ["👱♀️"]) + (":blond-haired-man:" ["👱♂️"]) + (":person_with_blond_hair:" ["👱"]) + (":man_with_gua_pi_mao:" ["👲"]) + (":woman-wearing-turban:" ["👳♀️"]) + (":man-wearing-turban:" ["👳♂️"]) + (":man_with_turban:" ["👳"]) + (":older_man:" ["👴"]) + (":older_woman:" ["👵"]) + (":baby:" ["👶"]) + (":female-construction-worker:" ["👷♀️"]) + (":male-construction-worker:" ["👷♂️"]) + (":construction_worker:" ["👷"]) + (":princess:" ["👸"]) + (":japanese_ogre:" ["👹"]) + (":japanese_goblin:" ["👺"]) + (":ghost:" ["👻"]) + (":angel:" ["👼"]) + (":alien:" ["👽"]) + (":space_invader:" ["👾"]) + (":imp:" ["👿"]) + (":skull:" ["💀"]) + (":woman-tipping-hand:" ["💁♀️"]) + (":man-tipping-hand:" ["💁♂️"]) + (":information_desk_person:" ["💁"]) + (":female-guard:" ["💂♀️"]) + (":male-guard:" ["💂♂️"]) + (":guardsman:" ["💂"]) + (":dancer:" ["💃"]) + (":lipstick:" ["💄"]) + (":nail_care:" ["💅"]) + (":woman-getting-massage:" ["💆♀️"]) + (":man-getting-massage:" ["💆♂️"]) + (":massage:" ["💆"]) + (":woman-getting-haircut:" ["💇♀️"]) + (":man-getting-haircut:" ["💇♂️"]) + (":haircut:" ["💇"]) + (":barber:" ["💈"]) + (":syringe:" ["💉"]) + (":pill:" ["💊"]) + (":kiss:" ["💋"]) + (":love_letter:" ["💌"]) + (":ring:" ["💍"]) + (":gem:" ["💎"]) + (":couplekiss:" ["💏"]) + (":bouquet:" ["💐"]) + (":couple_with_heart:" ["💑"]) + (":wedding:" ["💒"]) + (":heartbeat:" ["💓"]) + (":broken_heart:" ["💔"]) + ("</3" ["💔"]) + (":two_hearts:" ["💕"]) + (":sparkling_heart:" ["💖"]) + (":heartpulse:" ["💗"]) + (":cupid:" ["💘"]) + (":blue_heart:" ["💙"]) + ("<3" ["💙"]) + (":green_heart:" ["💚"]) + ("<3" ["💚"]) + (":yellow_heart:" ["💛"]) + ("<3" ["💛"]) + (":purple_heart:" ["💜"]) + ("<3" ["💜"]) + (":gift_heart:" ["💝"]) + (":revolving_hearts:" ["💞"]) + (":heart_decoration:" ["💟"]) + (":diamond_shape_with_a_dot_inside:" ["💠"]) + (":bulb:" ["💡"]) + (":anger:" ["💢"]) + (":bomb:" ["💣"]) + (":zzz:" ["💤"]) + (":boom:" ["💥"]) + (":collision:" ["💥"]) + (":sweat_drops:" ["💦"]) + (":droplet:" ["💧"]) + (":dash:" ["💨"]) + (":hankey:" ["💩"]) + (":poop:" ["💩"]) + (":shit:" ["💩"]) + (":muscle:" ["💪"]) + (":dizzy:" ["💫"]) + (":speech_balloon:" ["💬"]) + (":thought_balloon:" ["💭"]) + (":white_flower:" ["💮"]) + (":100:" ["💯"]) + (":moneybag:" ["💰"]) + (":currency_exchange:" ["💱"]) + (":heavy_dollar_sign:" ["💲"]) + (":credit_card:" ["💳"]) + (":yen:" ["💴"]) + (":dollar:" ["💵"]) + (":euro:" ["💶"]) + (":pound:" ["💷"]) + (":money_with_wings:" ["💸"]) + (":chart:" ["💹"]) + (":seat:" ["💺"]) + (":computer:" ["💻"]) + (":briefcase:" ["💼"]) + (":minidisc:" ["💽"]) + (":floppy_disk:" ["💾"]) + (":cd:" ["💿"]) + (":dvd:" ["📀"]) + (":file_folder:" ["📁"]) + (":open_file_folder:" ["📂"]) + (":page_with_curl:" ["📃"]) + (":page_facing_up:" ["📄"]) + (":date:" ["📅"]) + (":calendar:" ["📆"]) + (":card_index:" ["📇"]) + (":chart_with_upwards_trend:" ["📈"]) + (":chart_with_downwards_trend:" ["📉"]) + (":bar_chart:" ["📊"]) + (":clipboard:" ["📋"]) + (":pushpin:" ["📌"]) + (":round_pushpin:" ["📍"]) + (":paperclip:" ["📎"]) + (":straight_ruler:" ["📏"]) + (":triangular_ruler:" ["📐"]) + (":bookmark_tabs:" ["📑"]) + (":ledger:" ["📒"]) + (":notebook:" ["📓"]) + (":notebook_with_decorative_cover:" ["📔"]) + (":closed_book:" ["📕"]) + (":book:" ["📖"]) + (":open_book:" ["📖"]) + (":green_book:" ["📗"]) + (":blue_book:" ["📘"]) + (":orange_book:" ["📙"]) + (":books:" ["📚"]) + (":name_badge:" ["📛"]) + (":scroll:" ["📜"]) + (":memo:" ["📝"]) + (":pencil:" ["📝"]) + (":telephone_receiver:" ["📞"]) + (":pager:" ["📟"]) + (":fax:" ["📠"]) + (":satellite_antenna:" ["📡"]) + (":loudspeaker:" ["📢"]) + (":mega:" ["📣"]) + (":outbox_tray:" ["📤"]) + (":inbox_tray:" ["📥"]) + (":package:" ["📦"]) + (":e-mail:" ["📧"]) + (":incoming_envelope:" ["📨"]) + (":envelope_with_arrow:" ["📩"]) + (":mailbox_closed:" ["📪"]) + (":mailbox:" ["📫"]) + (":mailbox_with_mail:" ["📬"]) + (":mailbox_with_no_mail:" ["📭"]) + (":postbox:" ["📮"]) + (":postal_horn:" ["📯"]) + (":newspaper:" ["📰"]) + (":iphone:" ["📱"]) + (":calling:" ["📲"]) + (":vibration_mode:" ["📳"]) + (":mobile_phone_off:" ["📴"]) + (":no_mobile_phones:" ["📵"]) + (":signal_strength:" ["📶"]) + (":camera:" ["📷"]) + (":camera_with_flash:" ["📸"]) + (":video_camera:" ["📹"]) + (":tv:" ["📺"]) + (":radio:" ["📻"]) + (":vhs:" ["📼"]) + (":film_projector:" ["📽️"]) + (":prayer_beads:" ["📿"]) + (":twisted_rightwards_arrows:" ["🔀"]) + (":repeat:" ["🔁"]) + (":repeat_one:" ["🔂"]) + (":arrows_clockwise:" ["🔃"]) + (":arrows_counterclockwise:" ["🔄"]) + (":low_brightness:" ["🔅"]) + (":high_brightness:" ["🔆"]) + (":mute:" ["🔇"]) + (":speaker:" ["🔈"]) + (":sound:" ["🔉"]) + (":loud_sound:" ["🔊"]) + (":battery:" ["🔋"]) + (":electric_plug:" ["🔌"]) + (":mag:" ["🔍"]) + (":mag_right:" ["🔎"]) + (":lock_with_ink_pen:" ["🔏"]) + (":closed_lock_with_key:" ["🔐"]) + (":key:" ["🔑"]) + (":lock:" ["🔒"]) + (":unlock:" ["🔓"]) + (":bell:" ["🔔"]) + (":no_bell:" ["🔕"]) + (":bookmark:" ["🔖"]) + (":link:" ["🔗"]) + (":radio_button:" ["🔘"]) + (":back:" ["🔙"]) + (":end:" ["🔚"]) + (":on:" ["🔛"]) + (":soon:" ["🔜"]) + (":top:" ["🔝"]) + (":underage:" ["🔞"]) + (":keycap_ten:" ["🔟"]) + (":capital_abcd:" ["🔠"]) + (":abcd:" ["🔡"]) + (":1234:" ["🔢"]) + (":symbols:" ["🔣"]) + (":abc:" ["🔤"]) + (":fire:" ["🔥"]) + (":flashlight:" ["🔦"]) + (":wrench:" ["🔧"]) + (":hammer:" ["🔨"]) + (":nut_and_bolt:" ["🔩"]) + (":hocho:" ["🔪"]) + (":knife:" ["🔪"]) + (":gun:" ["🔫"]) + (":microscope:" ["🔬"]) + (":telescope:" ["🔭"]) + (":crystal_ball:" ["🔮"]) + (":six_pointed_star:" ["🔯"]) + (":beginner:" ["🔰"]) + (":trident:" ["🔱"]) + (":black_square_button:" ["🔲"]) + (":white_square_button:" ["🔳"]) + (":red_circle:" ["🔴"]) + (":large_blue_circle:" ["🔵"]) + (":large_orange_diamond:" ["🔶"]) + (":large_blue_diamond:" ["🔷"]) + (":small_orange_diamond:" ["🔸"]) + (":small_blue_diamond:" ["🔹"]) + (":small_red_triangle:" ["🔺"]) + (":small_red_triangle_down:" ["🔻"]) + (":arrow_up_small:" ["🔼"]) + (":arrow_down_small:" ["🔽"]) + (":om_symbol:" ["🕉️"]) + (":dove_of_peace:" ["🕊️"]) + (":kaaba:" ["🕋"]) + (":mosque:" ["🕌"]) + (":synagogue:" ["🕍"]) + (":menorah_with_nine_branches:" ["🕎"]) + (":clock1:" ["🕐"]) + (":clock2:" ["🕑"]) + (":clock3:" ["🕒"]) + (":clock4:" ["🕓"]) + (":clock5:" ["🕔"]) + (":clock6:" ["🕕"]) + (":clock7:" ["🕖"]) + (":clock8:" ["🕗"]) + (":clock9:" ["🕘"]) + (":clock10:" ["🕙"]) + (":clock11:" ["🕚"]) + (":clock12:" ["🕛"]) + (":clock130:" ["🕜"]) + (":clock230:" ["🕝"]) + (":clock330:" ["🕞"]) + (":clock430:" ["🕟"]) + (":clock530:" ["🕠"]) + (":clock630:" ["🕡"]) + (":clock730:" ["🕢"]) + (":clock830:" ["🕣"]) + (":clock930:" ["🕤"]) + (":clock1030:" ["🕥"]) + (":clock1130:" ["🕦"]) + (":clock1230:" ["🕧"]) + (":candle:" ["🕯️"]) + (":mantelpiece_clock:" ["🕰️"]) + (":hole:" ["🕳️"]) + (":man_in_business_suit_levitating:" ["🕴️"]) + (":female-detective:" ["🕵️♀️"]) + (":male-detective:" ["🕵️♂️"]) + (":sleuth_or_spy:" ["🕵️"]) + (":dark_sunglasses:" ["🕶️"]) + (":spider:" ["🕷️"]) + (":spider_web:" ["🕸️"]) + (":joystick:" ["🕹️"]) + (":man_dancing:" ["🕺"]) + (":linked_paperclips:" ["🖇️"]) + (":lower_left_ballpoint_pen:" ["🖊️"]) + (":lower_left_fountain_pen:" ["🖋️"]) + (":lower_left_paintbrush:" ["🖌️"]) + (":lower_left_crayon:" ["🖍️"]) + (":raised_hand_with_fingers_splayed:" ["🖐️"]) + (":middle_finger:" ["🖕"]) + (":reversed_hand_with_middle_finger_extended:" ["🖕"]) + (":spock-hand:" ["🖖"]) + (":black_heart:" ["🖤"]) + (":desktop_computer:" ["🖥️"]) + (":printer:" ["🖨️"]) + (":three_button_mouse:" ["🖱️"]) + (":trackball:" ["🖲️"]) + (":frame_with_picture:" ["🖼️"]) + (":card_index_dividers:" ["🗂️"]) + (":card_file_box:" ["🗃️"]) + (":file_cabinet:" ["🗄️"]) + (":wastebasket:" ["🗑️"]) + (":spiral_note_pad:" ["🗒️"]) + (":spiral_calendar_pad:" ["🗓️"]) + (":compression:" ["🗜️"]) + (":old_key:" ["🗝️"]) + (":rolled_up_newspaper:" ["🗞️"]) + (":dagger_knife:" ["🗡️"]) + (":speaking_head_in_silhouette:" ["🗣️"]) + (":left_speech_bubble:" ["🗨️"]) + (":right_anger_bubble:" ["🗯️"]) + (":ballot_box_with_ballot:" ["🗳️"]) + (":world_map:" ["🗺️"]) + (":mount_fuji:" ["🗻"]) + (":tokyo_tower:" ["🗼"]) + (":statue_of_liberty:" ["🗽"]) + (":japan:" ["🗾"]) + (":moyai:" ["🗿"]) + (":grinning:" ["😀"]) + (":D" ["😀"]) + (":grin:" ["😁"]) + (":joy:" ["😂"]) + (":smiley:" ["😃"]) + (":)" ["😃"]) + ("=)" ["😃"]) + ("=-)" ["😃"]) + (":smile:" ["😄"]) + (":)" ["😄"]) + ("C:" ["😄"]) + ("c:" ["😄"]) + (":D" ["😄"]) + (":-D" ["😄"]) + (":sweat_smile:" ["😅"]) + (":laughing:" ["😆"]) + (":satisfied:" ["😆"]) + (":>" ["😆"]) + (":->" ["😆"]) + (":innocent:" ["😇"]) + (":smiling_imp:" ["😈"]) + (":wink:" ["😉"]) + (";)" ["😉"]) + (";-)" ["😉"]) + (":blush:" ["😊"]) + (":)" ["😊"]) + (":yum:" ["😋"]) + (":relieved:" ["😌"]) + (":heart_eyes:" ["😍"]) + (":sunglasses:" ["😎"]) + ("8)" ["😎"]) + (":smirk:" ["😏"]) + (":neutral_face:" ["😐"]) + (":|" ["😐"]) + (":-|" ["😐"]) + (":expressionless:" ["😑"]) + (":unamused:" ["😒"]) + (":(" ["😒"]) + (":sweat:" ["😓"]) + (":pensive:" ["😔"]) + (":confused:" ["😕"]) + (":\\" ["😕"]) + (":-\\" ["😕"]) + (":/" ["😕"]) + (":-/" ["😕"]) + (":confounded:" ["😖"]) + (":kissing:" ["😗"]) + (":kissing_heart:" ["😘"]) + (":*" ["😘"]) + (":-*" ["😘"]) + (":kissing_smiling_eyes:" ["😙"]) + (":kissing_closed_eyes:" ["😚"]) + (":stuck_out_tongue:" ["😛"]) + (":p" ["😛"]) + (":-p" ["😛"]) + (":P" ["😛"]) + (":-P" ["😛"]) + (":b" ["😛"]) + (":-b" ["😛"]) + (":stuck_out_tongue_winking_eye:" ["😜"]) + (";p" ["😜"]) + (";-p" ["😜"]) + (";b" ["😜"]) + (";-b" ["😜"]) + (";P" ["😜"]) + (";-P" ["😜"]) + (":stuck_out_tongue_closed_eyes:" ["😝"]) + (":disappointed:" ["😞"]) + (":(" ["😞"]) + ("):" ["😞"]) + (":-(" ["😞"]) + (":worried:" ["😟"]) + (":angry:" ["😠"]) + (">:(" ["😠"]) + (">:-(" ["😠"]) + (":rage:" ["😡"]) + (":cry:" ["😢"]) + (":'(" ["😢"]) + (":persevere:" ["😣"]) + (":triumph:" ["😤"]) + (":disappointed_relieved:" ["😥"]) + (":frowning:" ["😦"]) + (":anguished:" ["😧"]) + ("D:" ["😧"]) + (":fearful:" ["😨"]) + (":weary:" ["😩"]) + (":sleepy:" ["😪"]) + (":tired_face:" ["😫"]) + (":grimacing:" ["😬"]) + (":sob:" ["😭"]) + (":'(" ["😭"]) + (":face_exhaling:" ["😮💨"]) + (":open_mouth:" ["😮"]) + (":o" ["😮"]) + (":-o" ["😮"]) + (":O" ["😮"]) + (":-O" ["😮"]) + (":hushed:" ["😯"]) + (":cold_sweat:" ["😰"]) + (":scream:" ["😱"]) + (":astonished:" ["😲"]) + (":flushed:" ["😳"]) + (":sleeping:" ["😴"]) + (":face_with_spiral_eyes:" ["😵💫"]) + (":dizzy_face:" ["😵"]) + (":face_in_clouds:" ["😶🌫️"]) + (":no_mouth:" ["😶"]) + (":mask:" ["😷"]) + (":smile_cat:" ["😸"]) + (":joy_cat:" ["😹"]) + (":smiley_cat:" ["😺"]) + (":heart_eyes_cat:" ["😻"]) + (":smirk_cat:" ["😼"]) + (":kissing_cat:" ["😽"]) + (":pouting_cat:" ["😾"]) + (":crying_cat_face:" ["😿"]) + (":scream_cat:" ["🙀"]) + (":slightly_frowning_face:" ["🙁"]) + (":slightly_smiling_face:" ["🙂"]) + (":)" ["🙂"]) + ("(:" ["🙂"]) + (":-)" ["🙂"]) + (":upside_down_face:" ["🙃"]) + (":face_with_rolling_eyes:" ["🙄"]) + (":woman-gesturing-no:" ["🙅♀️"]) + (":man-gesturing-no:" ["🙅♂️"]) + (":no_good:" ["🙅"]) + (":woman-gesturing-ok:" ["🙆♀️"]) + (":man-gesturing-ok:" ["🙆♂️"]) + (":ok_woman:" ["🙆"]) + (":woman-bowing:" ["🙇♀️"]) + (":man-bowing:" ["🙇♂️"]) + (":bow:" ["🙇"]) + (":see_no_evil:" ["🙈"]) + (":hear_no_evil:" ["🙉"]) + (":speak_no_evil:" ["🙊"]) + (":woman-raising-hand:" ["🙋♀️"]) + (":man-raising-hand:" ["🙋♂️"]) + (":raising_hand:" ["🙋"]) + (":raised_hands:" ["🙌"]) + (":woman-frowning:" ["🙍♀️"]) + (":man-frowning:" ["🙍♂️"]) + (":person_frowning:" ["🙍"]) + (":woman-pouting:" ["🙎♀️"]) + (":man-pouting:" ["🙎♂️"]) + (":person_with_pouting_face:" ["🙎"]) + (":pray:" ["🙏"]) + (":rocket:" ["🚀"]) + (":helicopter:" ["🚁"]) + (":steam_locomotive:" ["🚂"]) + (":railway_car:" ["🚃"]) + (":bullettrain_side:" ["🚄"]) + (":bullettrain_front:" ["🚅"]) + (":train2:" ["🚆"]) + (":metro:" ["🚇"]) + (":light_rail:" ["🚈"]) + (":station:" ["🚉"]) + (":tram:" ["🚊"]) + (":train:" ["🚋"]) + (":bus:" ["🚌"]) + (":oncoming_bus:" ["🚍"]) + (":trolleybus:" ["🚎"]) + (":busstop:" ["🚏"]) + (":minibus:" ["🚐"]) + (":ambulance:" ["🚑"]) + (":fire_engine:" ["🚒"]) + (":police_car:" ["🚓"]) + (":oncoming_police_car:" ["🚔"]) + (":taxi:" ["🚕"]) + (":oncoming_taxi:" ["🚖"]) + (":car:" ["🚗"]) + (":red_car:" ["🚗"]) + (":oncoming_automobile:" ["🚘"]) + (":blue_car:" ["🚙"]) + (":truck:" ["🚚"]) + (":articulated_lorry:" ["🚛"]) + (":tractor:" ["🚜"]) + (":monorail:" ["🚝"]) + (":mountain_railway:" ["🚞"]) + (":suspension_railway:" ["🚟"]) + (":mountain_cableway:" ["🚠"]) + (":aerial_tramway:" ["🚡"]) + (":ship:" ["🚢"]) + (":woman-rowing-boat:" ["🚣♀️"]) + (":man-rowing-boat:" ["🚣♂️"]) + (":rowboat:" ["🚣"]) + (":speedboat:" ["🚤"]) + (":traffic_light:" ["🚥"]) + (":vertical_traffic_light:" ["🚦"]) + (":construction:" ["🚧"]) + (":rotating_light:" ["🚨"]) + (":triangular_flag_on_post:" ["🚩"]) + (":door:" ["🚪"]) + (":no_entry_sign:" ["🚫"]) + (":smoking:" ["🚬"]) + (":no_smoking:" ["🚭"]) + (":put_litter_in_its_place:" ["🚮"]) + (":do_not_litter:" ["🚯"]) + (":potable_water:" ["🚰"]) + (":non-potable_water:" ["🚱"]) + (":bike:" ["🚲"]) + (":no_bicycles:" ["🚳"]) + (":woman-biking:" ["🚴♀️"]) + (":man-biking:" ["🚴♂️"]) + (":bicyclist:" ["🚴"]) + (":woman-mountain-biking:" ["🚵♀️"]) + (":man-mountain-biking:" ["🚵♂️"]) + (":mountain_bicyclist:" ["🚵"]) + (":woman-walking:" ["🚶♀️"]) + (":man-walking:" ["🚶♂️"]) + (":walking:" ["🚶"]) + (":no_pedestrians:" ["🚷"]) + (":children_crossing:" ["🚸"]) + (":mens:" ["🚹"]) + (":womens:" ["🚺"]) + (":restroom:" ["🚻"]) + (":baby_symbol:" ["🚼"]) + (":toilet:" ["🚽"]) + (":wc:" ["🚾"]) + (":shower:" ["🚿"]) + (":bath:" ["🛀"]) + (":bathtub:" ["🛁"]) + (":passport_control:" ["🛂"]) + (":customs:" ["🛃"]) + (":baggage_claim:" ["🛄"]) + (":left_luggage:" ["🛅"]) + (":couch_and_lamp:" ["🛋️"]) + (":sleeping_accommodation:" ["🛌"]) + (":shopping_bags:" ["🛍️"]) + (":bellhop_bell:" ["🛎️"]) + (":bed:" ["🛏️"]) + (":place_of_worship:" ["🛐"]) + (":octagonal_sign:" ["🛑"]) + (":shopping_trolley:" ["🛒"]) + (":hindu_temple:" ["🛕"]) + (":hut:" ["🛖"]) + (":elevator:" ["🛗"]) + (":hammer_and_wrench:" ["🛠️"]) + (":shield:" ["🛡️"]) + (":oil_drum:" ["🛢️"]) + (":motorway:" ["🛣️"]) + (":railway_track:" ["🛤️"]) + (":motor_boat:" ["🛥️"]) + (":small_airplane:" ["🛩️"]) + (":airplane_departure:" ["🛫"]) + (":airplane_arriving:" ["🛬"]) + (":satellite:" ["🛰️"]) + (":passenger_ship:" ["🛳️"]) + (":scooter:" ["🛴"]) + (":motor_scooter:" ["🛵"]) + (":canoe:" ["🛶"]) + (":sled:" ["🛷"]) + (":flying_saucer:" ["🛸"]) + (":skateboard:" ["🛹"]) + (":auto_rickshaw:" ["🛺"]) + (":pickup_truck:" ["🛻"]) + (":roller_skate:" ["🛼"]) + (":large_orange_circle:" ["🟠"]) + (":large_yellow_circle:" ["🟡"]) + (":large_green_circle:" ["🟢"]) + (":large_purple_circle:" ["🟣"]) + (":large_brown_circle:" ["🟤"]) + (":large_red_square:" ["🟥"]) + (":large_blue_square:" ["🟦"]) + (":large_orange_square:" ["🟧"]) + (":large_yellow_square:" ["🟨"]) + (":large_green_square:" ["🟩"]) + (":large_purple_square:" ["🟪"]) + (":large_brown_square:" ["🟫"]) + (":pinched_fingers:" ["🤌"]) + (":white_heart:" ["🤍"]) + (":brown_heart:" ["🤎"]) + (":pinching_hand:" ["🤏"]) + (":zipper_mouth_face:" ["🤐"]) + (":money_mouth_face:" ["🤑"]) + (":face_with_thermometer:" ["🤒"]) + (":nerd_face:" ["🤓"]) + (":thinking_face:" ["🤔"]) + (":face_with_head_bandage:" ["🤕"]) + (":robot_face:" ["🤖"]) + (":hugging_face:" ["🤗"]) + (":the_horns:" ["🤘"]) + (":sign_of_the_horns:" ["🤘"]) + (":call_me_hand:" ["🤙"]) + (":raised_back_of_hand:" ["🤚"]) + (":left-facing_fist:" ["🤛"]) + (":right-facing_fist:" ["🤜"]) + (":handshake:" ["🤝"]) + (":crossed_fingers:" ["🤞"]) + (":hand_with_index_and_middle_fingers_crossed:" ["🤞"]) + (":i_love_you_hand_sign:" ["🤟"]) + (":face_with_cowboy_hat:" ["🤠"]) + (":clown_face:" ["🤡"]) + (":nauseated_face:" ["🤢"]) + (":rolling_on_the_floor_laughing:" ["🤣"]) + (":drooling_face:" ["🤤"]) + (":lying_face:" ["🤥"]) + (":woman-facepalming:" ["🤦♀️"]) + (":man-facepalming:" ["🤦♂️"]) + (":face_palm:" ["🤦"]) + (":sneezing_face:" ["🤧"]) + (":face_with_raised_eyebrow:" ["🤨"]) + (":face_with_one_eyebrow_raised:" ["🤨"]) + (":star-struck:" ["🤩"]) + (":grinning_face_with_star_eyes:" ["🤩"]) + (":zany_face:" ["🤪"]) + (":grinning_face_with_one_large_and_one_small_eye:" ["🤪"]) + (":shushing_face:" ["🤫"]) + (":face_with_finger_covering_closed_lips:" ["🤫"]) + (":face_with_symbols_on_mouth:" ["🤬"]) + (":serious_face_with_symbols_covering_mouth:" ["🤬"]) + (":face_with_hand_over_mouth:" ["🤭"]) + (":smiling_face_with_smiling_eyes_and_hand_covering_mouth:" ["🤭"]) + (":face_vomiting:" ["🤮"]) + (":face_with_open_mouth_vomiting:" ["🤮"]) + (":exploding_head:" ["🤯"]) + (":shocked_face_with_exploding_head:" ["🤯"]) + (":pregnant_woman:" ["🤰"]) + (":breast-feeding:" ["🤱"]) + (":palms_up_together:" ["🤲"]) + (":selfie:" ["🤳"]) + (":prince:" ["🤴"]) + (":woman_in_tuxedo:" ["🤵♀️"]) + (":man_in_tuxedo:" ["🤵♂️"]) + (":person_in_tuxedo:" ["🤵"]) + (":mrs_claus:" ["🤶"]) + (":mother_christmas:" ["🤶"]) + (":woman-shrugging:" ["🤷♀️"]) + (":man-shrugging:" ["🤷♂️"]) + (":shrug:" ["🤷"]) + (":woman-cartwheeling:" ["🤸♀️"]) + (":man-cartwheeling:" ["🤸♂️"]) + (":person_doing_cartwheel:" ["🤸"]) + (":woman-juggling:" ["🤹♀️"]) + (":man-juggling:" ["🤹♂️"]) + (":juggling:" ["🤹"]) + (":fencer:" ["🤺"]) + (":woman-wrestling:" ["🤼♀️"]) + (":man-wrestling:" ["🤼♂️"]) + (":wrestlers:" ["🤼"]) + (":woman-playing-water-polo:" ["🤽♀️"]) + (":man-playing-water-polo:" ["🤽♂️"]) + (":water_polo:" ["🤽"]) + (":woman-playing-handball:" ["🤾♀️"]) + (":man-playing-handball:" ["🤾♂️"]) + (":handball:" ["🤾"]) + (":diving_mask:" ["🤿"]) + (":wilted_flower:" ["🥀"]) + (":drum_with_drumsticks:" ["🥁"]) + (":clinking_glasses:" ["🥂"]) + (":tumbler_glass:" ["🥃"]) + (":spoon:" ["🥄"]) + (":goal_net:" ["🥅"]) + (":first_place_medal:" ["🥇"]) + (":second_place_medal:" ["🥈"]) + (":third_place_medal:" ["🥉"]) + (":boxing_glove:" ["🥊"]) + (":martial_arts_uniform:" ["🥋"]) + (":curling_stone:" ["🥌"]) + (":lacrosse:" ["🥍"]) + (":softball:" ["🥎"]) + (":flying_disc:" ["🥏"]) + (":croissant:" ["🥐"]) + (":avocado:" ["🥑"]) + (":cucumber:" ["🥒"]) + (":bacon:" ["🥓"]) + (":potato:" ["🥔"]) + (":carrot:" ["🥕"]) + (":baguette_bread:" ["🥖"]) + (":green_salad:" ["🥗"]) + (":shallow_pan_of_food:" ["🥘"]) + (":stuffed_flatbread:" ["🥙"]) + (":egg:" ["🥚"]) + (":glass_of_milk:" ["🥛"]) + (":peanuts:" ["🥜"]) + (":kiwifruit:" ["🥝"]) + (":pancakes:" ["🥞"]) + (":dumpling:" ["🥟"]) + (":fortune_cookie:" ["🥠"]) + (":takeout_box:" ["🥡"]) + (":chopsticks:" ["🥢"]) + (":bowl_with_spoon:" ["🥣"]) + (":cup_with_straw:" ["🥤"]) + (":coconut:" ["🥥"]) + (":broccoli:" ["🥦"]) + (":pie:" ["🥧"]) + (":pretzel:" ["🥨"]) + (":cut_of_meat:" ["🥩"]) + (":sandwich:" ["🥪"]) + (":canned_food:" ["🥫"]) + (":leafy_green:" ["🥬"]) + (":mango:" ["🥭"]) + (":moon_cake:" ["🥮"]) + (":bagel:" ["🥯"]) + (":smiling_face_with_3_hearts:" ["🥰"]) + (":yawning_face:" ["🥱"]) + (":smiling_face_with_tear:" ["🥲"]) + (":partying_face:" ["🥳"]) + (":woozy_face:" ["🥴"]) + (":hot_face:" ["🥵"]) + (":cold_face:" ["🥶"]) + (":ninja:" ["🥷"]) + (":disguised_face:" ["🥸"]) + (":pleading_face:" ["🥺"]) + (":sari:" ["🥻"]) + (":lab_coat:" ["🥼"]) + (":goggles:" ["🥽"]) + (":hiking_boot:" ["🥾"]) + (":womans_flat_shoe:" ["🥿"]) + (":crab:" ["🦀"]) + (":lion_face:" ["🦁"]) + (":scorpion:" ["🦂"]) + (":turkey:" ["🦃"]) + (":unicorn_face:" ["🦄"]) + (":eagle:" ["🦅"]) + (":duck:" ["🦆"]) + (":bat:" ["🦇"]) + (":shark:" ["🦈"]) + (":owl:" ["🦉"]) + (":fox_face:" ["🦊"]) + (":butterfly:" ["🦋"]) + (":deer:" ["🦌"]) + (":gorilla:" ["🦍"]) + (":lizard:" ["🦎"]) + (":rhinoceros:" ["🦏"]) + (":shrimp:" ["🦐"]) + (":squid:" ["🦑"]) + (":giraffe_face:" ["🦒"]) + (":zebra_face:" ["🦓"]) + (":hedgehog:" ["🦔"]) + (":sauropod:" ["🦕"]) + (":t-rex:" ["🦖"]) + (":cricket:" ["🦗"]) + (":kangaroo:" ["🦘"]) + (":llama:" ["🦙"]) + (":peacock:" ["🦚"]) + (":hippopotamus:" ["🦛"]) + (":parrot:" ["🦜"]) + (":raccoon:" ["🦝"]) + (":lobster:" ["🦞"]) + (":mosquito:" ["🦟"]) + (":microbe:" ["🦠"]) + (":badger:" ["🦡"]) + (":swan:" ["🦢"]) + (":mammoth:" ["🦣"]) + (":dodo:" ["🦤"]) + (":sloth:" ["🦥"]) + (":otter:" ["🦦"]) + (":orangutan:" ["🦧"]) + (":skunk:" ["🦨"]) + (":flamingo:" ["🦩"]) + (":oyster:" ["🦪"]) + (":beaver:" ["🦫"]) + (":bison:" ["🦬"]) + (":seal:" ["🦭"]) + (":guide_dog:" ["🦮"]) + (":probing_cane:" ["🦯"]) + (":bone:" ["🦴"]) + (":leg:" ["🦵"]) + (":foot:" ["🦶"]) + (":tooth:" ["🦷"]) + (":female_superhero:" ["🦸♀️"]) + (":male_superhero:" ["🦸♂️"]) + (":superhero:" ["🦸"]) + (":female_supervillain:" ["🦹♀️"]) + (":male_supervillain:" ["🦹♂️"]) + (":supervillain:" ["🦹"]) + (":safety_vest:" ["🦺"]) + (":ear_with_hearing_aid:" ["🦻"]) + (":motorized_wheelchair:" ["🦼"]) + (":manual_wheelchair:" ["🦽"]) + (":mechanical_arm:" ["🦾"]) + (":mechanical_leg:" ["🦿"]) + (":cheese_wedge:" ["🧀"]) + (":cupcake:" ["🧁"]) + (":salt:" ["🧂"]) + (":beverage_box:" ["🧃"]) + (":garlic:" ["🧄"]) + (":onion:" ["🧅"]) + (":falafel:" ["🧆"]) + (":waffle:" ["🧇"]) + (":butter:" ["🧈"]) + (":mate_drink:" ["🧉"]) + (":ice_cube:" ["🧊"]) + (":bubble_tea:" ["🧋"]) + (":woman_standing:" ["🧍♀️"]) + (":man_standing:" ["🧍♂️"]) + (":standing_person:" ["🧍"]) + (":woman_kneeling:" ["🧎♀️"]) + (":man_kneeling:" ["🧎♂️"]) + (":kneeling_person:" ["🧎"]) + (":deaf_woman:" ["🧏♀️"]) + (":deaf_man:" ["🧏♂️"]) + (":deaf_person:" ["🧏"]) + (":face_with_monocle:" ["🧐"]) + (":farmer:" ["🧑🌾"]) + (":cook:" ["🧑🍳"]) + (":person_feeding_baby:" ["🧑🍼"]) + (":mx_claus:" ["🧑🎄"]) + (":student:" ["🧑🎓"]) + (":singer:" ["🧑🎤"]) + (":artist:" ["🧑🎨"]) + (":teacher:" ["🧑🏫"]) + (":factory_worker:" ["🧑🏭"]) + (":technologist:" ["🧑💻"]) + (":office_worker:" ["🧑💼"]) + (":mechanic:" ["🧑🔧"]) + (":scientist:" ["🧑🔬"]) + (":astronaut:" ["🧑🚀"]) + (":firefighter:" ["🧑🚒"]) + (":people_holding_hands:" ["🧑🤝🧑"]) + (":person_with_probing_cane:" ["🧑🦯"]) + (":red_haired_person:" ["🧑🦰"]) + (":curly_haired_person:" ["🧑🦱"]) + (":bald_person:" ["🧑🦲"]) + (":white_haired_person:" ["🧑🦳"]) + (":person_in_motorized_wheelchair:" ["🧑🦼"]) + (":person_in_manual_wheelchair:" ["🧑🦽"]) + (":health_worker:" ["🧑⚕️"]) + (":judge:" ["🧑⚖️"]) + (":pilot:" ["🧑✈️"]) + (":adult:" ["🧑"]) + (":child:" ["🧒"]) + (":older_adult:" ["🧓"]) + (":woman_with_beard:" ["🧔♀️"]) + (":man_with_beard:" ["🧔♂️"]) + (":bearded_person:" ["🧔"]) + (":person_with_headscarf:" ["🧕"]) + (":woman_in_steamy_room:" ["🧖♀️"]) + (":man_in_steamy_room:" ["🧖♂️"]) + (":person_in_steamy_room:" ["🧖"]) + (":woman_climbing:" ["🧗♀️"]) + (":man_climbing:" ["🧗♂️"]) + (":person_climbing:" ["🧗"]) + (":woman_in_lotus_position:" ["🧘♀️"]) + (":man_in_lotus_position:" ["🧘♂️"]) + (":person_in_lotus_position:" ["🧘"]) + (":female_mage:" ["🧙♀️"]) + (":male_mage:" ["🧙♂️"]) + (":mage:" ["🧙"]) + (":female_fairy:" ["🧚♀️"]) + (":male_fairy:" ["🧚♂️"]) + (":fairy:" ["🧚"]) + (":female_vampire:" ["🧛♀️"]) + (":male_vampire:" ["🧛♂️"]) + (":vampire:" ["🧛"]) + (":mermaid:" ["🧜♀️"]) + (":merman:" ["🧜♂️"]) + (":merperson:" ["🧜"]) + (":female_elf:" ["🧝♀️"]) + (":male_elf:" ["🧝♂️"]) + (":elf:" ["🧝"]) + (":female_genie:" ["🧞♀️"]) + (":male_genie:" ["🧞♂️"]) + (":genie:" ["🧞"]) + (":female_zombie:" ["🧟♀️"]) + (":male_zombie:" ["🧟♂️"]) + (":zombie:" ["🧟"]) + (":brain:" ["🧠"]) + (":orange_heart:" ["🧡"]) + (":billed_cap:" ["🧢"]) + (":scarf:" ["🧣"]) + (":gloves:" ["🧤"]) + (":coat:" ["🧥"]) + (":socks:" ["🧦"]) + (":red_envelope:" ["🧧"]) + (":firecracker:" ["🧨"]) + (":jigsaw:" ["🧩"]) + (":test_tube:" ["🧪"]) + (":petri_dish:" ["🧫"]) + (":dna:" ["🧬"]) + (":compass:" ["🧭"]) + (":abacus:" ["🧮"]) + (":fire_extinguisher:" ["🧯"]) + (":toolbox:" ["🧰"]) + (":bricks:" ["🧱"]) + (":magnet:" ["🧲"]) + (":luggage:" ["🧳"]) + (":lotion_bottle:" ["🧴"]) + (":thread:" ["🧵"]) + (":yarn:" ["🧶"]) + (":safety_pin:" ["🧷"]) + (":teddy_bear:" ["🧸"]) + (":broom:" ["🧹"]) + (":basket:" ["🧺"]) + (":roll_of_paper:" ["🧻"]) + (":soap:" ["🧼"]) + (":sponge:" ["🧽"]) + (":receipt:" ["🧾"]) + (":nazar_amulet:" ["🧿"]) + (":ballet_shoes:" ["🩰"]) + (":one-piece_swimsuit:" ["🩱"]) + (":briefs:" ["🩲"]) + (":shorts:" ["🩳"]) + (":thong_sandal:" ["🩴"]) + (":drop_of_blood:" ["🩸"]) + (":adhesive_bandage:" ["🩹"]) + (":stethoscope:" ["🩺"]) + (":yo-yo:" ["🪀"]) + (":kite:" ["🪁"]) + (":parachute:" ["🪂"]) + (":boomerang:" ["🪃"]) + (":magic_wand:" ["🪄"]) + (":pinata:" ["🪅"]) + (":nesting_dolls:" ["🪆"]) + (":ringed_planet:" ["🪐"]) + (":chair:" ["🪑"]) + (":razor:" ["🪒"]) + (":axe:" ["🪓"]) + (":diya_lamp:" ["🪔"]) + (":banjo:" ["🪕"]) + (":military_helmet:" ["🪖"]) + (":accordion:" ["🪗"]) + (":long_drum:" ["🪘"]) + (":coin:" ["🪙"]) + (":carpentry_saw:" ["🪚"]) + (":screwdriver:" ["🪛"]) + (":ladder:" ["🪜"]) + (":hook:" ["🪝"]) + (":mirror:" ["🪞"]) + (":window:" ["🪟"]) + (":plunger:" ["🪠"]) + (":sewing_needle:" ["🪡"]) + (":knot:" ["🪢"]) + (":bucket:" ["🪣"]) + (":mouse_trap:" ["🪤"]) + (":toothbrush:" ["🪥"]) + (":headstone:" ["🪦"]) + (":placard:" ["🪧"]) + (":rock:" ["🪨"]) + (":fly:" ["🪰"]) + (":worm:" ["🪱"]) + (":beetle:" ["🪲"]) + (":cockroach:" ["🪳"]) + (":potted_plant:" ["🪴"]) + (":wood:" ["🪵"]) + (":feather:" ["🪶"]) + (":anatomical_heart:" ["🫀"]) + (":lungs:" ["🫁"]) + (":people_hugging:" ["🫂"]) + (":blueberries:" ["🫐"]) + (":bell_pepper:" ["🫑"]) + (":olive:" ["🫒"]) + (":flatbread:" ["🫓"]) + (":tamale:" ["🫔"]) + (":fondue:" ["🫕"]) + (":teapot:" ["🫖"]) + (":bangbang:" ["‼️"]) + (":interrobang:" ["⁉️"]) + (":tm:" ["™️"]) + (":information_source:" ["ℹ️"]) + (":left_right_arrow:" ["↔️"]) + (":arrow_up_down:" ["↕️"]) + (":arrow_upper_left:" ["↖️"]) + (":arrow_upper_right:" ["↗️"]) + (":arrow_lower_right:" ["↘️"]) + (":arrow_lower_left:" ["↙️"]) + (":leftwards_arrow_with_hook:" ["↩️"]) + (":arrow_right_hook:" ["↪️"]) + (":watch:" ["⌚"]) + (":hourglass:" ["⌛"]) + (":keyboard:" ["⌨️"]) + (":eject:" ["⏏️"]) + (":fast_forward:" ["⏩"]) + (":rewind:" ["⏪"]) + (":arrow_double_up:" ["⏫"]) + (":arrow_double_down:" ["⏬"]) + (":black_right_pointing_double_triangle_with_vertical_bar:" ["⏭️"]) + (":black_left_pointing_double_triangle_with_vertical_bar:" ["⏮️"]) + (":black_right_pointing_triangle_with_double_vertical_bar:" ["⏯️"]) + (":alarm_clock:" ["⏰"]) + (":stopwatch:" ["⏱️"]) + (":timer_clock:" ["⏲️"]) + (":hourglass_flowing_sand:" ["⏳"]) + (":double_vertical_bar:" ["⏸️"]) + (":black_square_for_stop:" ["⏹️"]) + (":black_circle_for_record:" ["⏺️"]) + (":m:" ["Ⓜ️"]) + (":black_small_square:" ["▪️"]) + (":white_small_square:" ["▫️"]) + (":arrow_forward:" ["▶️"]) + (":arrow_backward:" ["◀️"]) + (":white_medium_square:" ["◻️"]) + (":black_medium_square:" ["◼️"]) + (":white_medium_small_square:" ["◽"]) + (":black_medium_small_square:" ["◾"]) + (":sunny:" ["☀️"]) + (":cloud:" ["☁️"]) + (":umbrella:" ["☂️"]) + (":snowman:" ["☃️"]) + (":comet:" ["☄️"]) + (":phone:" ["☎️"]) + (":telephone:" ["☎️"]) + (":ballot_box_with_check:" ["☑️"]) + (":umbrella_with_rain_drops:" ["☔"]) + (":coffee:" ["☕"]) + (":shamrock:" ["☘️"]) + (":point_up:" ["☝️"]) + (":skull_and_crossbones:" ["☠️"]) + (":radioactive_sign:" ["☢️"]) + (":biohazard_sign:" ["☣️"]) + (":orthodox_cross:" ["☦️"]) + (":star_and_crescent:" ["☪️"]) + (":peace_symbol:" ["☮️"]) + (":yin_yang:" ["☯️"]) + (":wheel_of_dharma:" ["☸️"]) + (":white_frowning_face:" ["☹️"]) + (":relaxed:" ["☺️"]) + (":female_sign:" ["♀️"]) + (":male_sign:" ["♂️"]) + (":aries:" ["♈"]) + (":taurus:" ["♉"]) + (":gemini:" ["♊"]) + (":cancer:" ["♋"]) + (":leo:" ["♌"]) + (":virgo:" ["♍"]) + (":libra:" ["♎"]) + (":scorpius:" ["♏"]) + (":sagittarius:" ["♐"]) + (":capricorn:" ["♑"]) + (":aquarius:" ["♒"]) + (":pisces:" ["♓"]) + (":chess_pawn:" ["♟️"]) + (":spades:" ["♠️"]) + (":clubs:" ["♣️"]) + (":hearts:" ["♥️"]) + (":diamonds:" ["♦️"]) + (":hotsprings:" ["♨️"]) + (":recycle:" ["♻️"]) + (":infinity:" ["♾️"]) + (":wheelchair:" ["♿"]) + (":hammer_and_pick:" ["⚒️"]) + (":anchor:" ["⚓"]) + (":crossed_swords:" ["⚔️"]) + (":medical_symbol:" ["⚕️"]) + (":staff_of_aesculapius:" ["⚕️"]) + (":scales:" ["⚖️"]) + (":alembic:" ["⚗️"]) + (":gear:" ["⚙️"]) + (":atom_symbol:" ["⚛️"]) + (":fleur_de_lis:" ["⚜️"]) + (":warning:" ["⚠️"]) + (":zap:" ["⚡"]) + (":transgender_symbol:" ["⚧️"]) + (":white_circle:" ["⚪"]) + (":black_circle:" ["⚫"]) + (":coffin:" ["⚰️"]) + (":funeral_urn:" ["⚱️"]) + (":soccer:" ["⚽"]) + (":baseball:" ["⚾"]) + (":snowman_without_snow:" ["⛄"]) + (":partly_sunny:" ["⛅"]) + (":thunder_cloud_and_rain:" ["⛈️"]) + (":ophiuchus:" ["⛎"]) + (":pick:" ["⛏️"]) + (":helmet_with_white_cross:" ["⛑️"]) + (":chains:" ["⛓️"]) + (":no_entry:" ["⛔"]) + (":shinto_shrine:" ["⛩️"]) + (":church:" ["⛪"]) + (":mountain:" ["⛰️"]) + (":umbrella_on_ground:" ["⛱️"]) + (":fountain:" ["⛲"]) + (":golf:" ["⛳"]) + (":ferry:" ["⛴️"]) + (":boat:" ["⛵"]) + (":sailboat:" ["⛵"]) + (":skier:" ["⛷️"]) + (":ice_skate:" ["⛸️"]) + (":woman-bouncing-ball:" ["⛹️♀️"]) + (":man-bouncing-ball:" ["⛹️♂️"]) + (":person_with_ball:" ["⛹️"]) + (":tent:" ["⛺"]) + (":fuelpump:" ["⛽"]) + (":scissors:" ["✂️"]) + (":white_check_mark:" ["✅"]) + (":airplane:" ["✈️"]) + (":email:" ["✉️"]) + (":envelope:" ["✉️"]) + (":fist:" ["✊"]) + (":hand:" ["✋"]) + (":raised_hand:" ["✋"]) + (":v:" ["✌️"]) + (":writing_hand:" ["✍️"]) + (":pencil2:" ["✏️"]) + (":black_nib:" ["✒️"]) + (":heavy_check_mark:" ["✔️"]) + (":heavy_multiplication_x:" ["✖️"]) + (":latin_cross:" ["✝️"]) + (":star_of_david:" ["✡️"]) + (":sparkles:" ["✨"]) + (":eight_spoked_asterisk:" ["✳️"]) + (":eight_pointed_black_star:" ["✴️"]) + (":snowflake:" ["❄️"]) + (":sparkle:" ["❇️"]) + (":x:" ["❌"]) + (":negative_squared_cross_mark:" ["❎"]) + (":question:" ["❓"]) + (":grey_question:" ["❔"]) + (":grey_exclamation:" ["❕"]) + (":exclamation:" ["❗"]) + (":heavy_exclamation_mark:" ["❗"]) + (":heavy_heart_exclamation_mark_ornament:" ["❣️"]) + (":heart_on_fire:" ["❤️🔥"]) + (":mending_heart:" ["❤️🩹"]) + (":heart:" ["❤️"]) + ("<3" ["❤️"]) + (":heavy_plus_sign:" ["➕"]) + (":heavy_minus_sign:" ["➖"]) + (":heavy_division_sign:" ["➗"]) + (":arrow_right:" ["➡️"]) + (":curly_loop:" ["➰"]) + (":loop:" ["➿"]) + (":arrow_heading_up:" ["⤴️"]) + (":arrow_heading_down:" ["⤵️"]) + (":arrow_left:" ["⬅️"]) + (":arrow_up:" ["⬆️"]) + (":arrow_down:" ["⬇️"]) + (":black_large_square:" ["⬛"]) + (":white_large_square:" ["⬜"]) + (":star:" ["⭐"]) + (":o:" ["⭕"]) + (":wavy_dash:" ["〰️"]) + (":part_alternation_mark:" ["〽️"]) + (":congratulations:" ["㊗️"]) + (":secret:" ["㊙️"]))))))) + +(emoji--define-rules) + +(provide 'emoji) +;;; emoji.el ends here diff --git a/lisp/leim/quail/hangul.el b/lisp/leim/quail/hangul.el index 39e83f6c331..0ef5b2d5c72 100644 --- a/lisp/leim/quail/hangul.el +++ b/lisp/leim/quail/hangul.el @@ -429,7 +429,7 @@ When a Korean input method is off, convert the following hangul character." (hangul3-input-method-jong char)) (t (setq hangul-queue (make-vector 6 0)) - (insert (decode-char 'ucs char)) + (insert char) (move-overlay quail-overlay (point) (point)))))) (defun hangul3-input-method (key) @@ -476,7 +476,7 @@ When a Korean input method is off, convert the following hangul character." (hangul3-input-method-jong char)) (t (setq hangul-queue (make-vector 6 0)) - (insert (decode-char 'ucs char)) + (insert char) (move-overlay quail-overlay (point) (point)))))) (defun hangul390-input-method (key) diff --git a/lisp/leim/quail/indian.el b/lisp/leim/quail/indian.el index 23204c0cd3e..e652f108dde 100644 --- a/lisp/leim/quail/indian.el +++ b/lisp/leim/quail/indian.el @@ -127,51 +127,38 @@ indian-mlm-itrans-v5-hash "malayalam-itrans" "Malayalam" "MlmIT" "Malayalam transliteration by ITRANS method.") -(defvar quail-tamil-itrans-syllable-table - (let ((vowels - '(("அ" nil "a") - ("ஆ" "ா" "A") - ("இ" "ி" "i") - ("ஈ" "ீ" "I") - ("உ" "ு" "u") - ("ஊ" "ூ" "U") - ("எ" "ெ" "e") - ("ஏ" "ே" "E") - ("ஐ" "ை" "ai") - ("ஒ" "ொ" "o") - ("ஓ" "ோ" "O") - ("ஔ" "ௌ" "au"))) - (consonants - '(("க" "k") ; U+0B95 - ("ங" "N^") ; U+0B99 - ("ச" "ch") ; U+0B9A - ("ஞ" "JN") ; U+0B9E - ("ட" "T") ; U+0B9F - ("ண" "N") ; U+0BA3 - ("த" "t") ; U+0BA4 - ("ந" "n") ; U+0BA8 - ("ப" "p") ; U+0BAA - ("ம" "m") ; U+0BAE - ("ய" "y") ; U+0BAF - ("ர" "r") ; U+0BB0 - ("ல" "l") ; U+0BB2 - ("வ" "v") ; U+0BB5 - ("ழ" "z") ; U+0BB4 - ("ள" "L") ; U+0BB3 - ("ற" "rh") ; U+0BB1 - ("ன" "nh") ; U+0BA9 - ("ஜ" "j") ; U+0B9C - ("ஶ" nil) ; U+0BB6 - ("ஷ" "Sh") ; U+0BB7 - ("ஸ" "s") ; U+0BB8 - ("ஹ" "h") ; U+0BB9 - ("க்ஷ" "x" ) ; U+0B95 - )) - (virama #x0BCD) +;; This is needed since the Unicode codepoint order does not reflect +;; the actual order in the Tamil language. +(defvar quail-tamil-itrans--consonant-order + '("க" "ங" "ச" "ஞ" "ட" "ண" + "த" "ந" "ப" "ம" "ய" "ர" + "ல" "வ" "ழ" "ள" "ற" "ன" + "ஜ" "ஸ" "ஷ" "ஹ" "க்ஷ" + "க்ஷ" "ஶ")) + +(defun quail-tamil-itrans-compute-syllable-table (vowels consonants) + "Return the syllable table for the input method as a string. +VOWELS is a list of (VOWEL SIGN INPUT-SEQ) where VOWEL is the +Tamil vowel character, SIGN is the vowel sign corresponding to +that vowel character or nil for none, and INPUT-SEQ is the input +sequence to insert VOWEL. + +CONSONANTS is a list of (CONSONANT INPUT-SEQ...) where CONSONANT +is the Tamil consonant character, and INPUT-SEQ is one or more +strings that describe how to insert CONSONANT." + (setq vowels (sort vowels + (lambda (x y) + (string-lessp (car x) (car y))))) + (setq consonants + (sort consonants + (lambda (x y) + (or (seq-position (car x) quail-tamil-itrans--consonant-order) 1000) + (or (seq-position (car y) quail-tamil-itrans--consonant-order) 1000)))) + (let ((virama #x0BCD) clm) (with-temp-buffer (insert "\n") - (insert " +") + (insert "----+") (insert-char ?- 74) (insert "\n |") (setq clm 6) @@ -197,21 +184,45 @@ (insert (propertize "\t" 'display (list 'space :align-to clm)) (car c) (or (nth 1 v) "")) (setq clm (+ clm 6))) - (insert "\n" (or (nth 1 c) "") - (propertize "\t" 'display '(space :align-to 4)) - "|") - (setq clm 6) - - (dolist (v vowels) - (apply #'insert (propertize "\t" 'display (list 'space :align-to clm)) - (if (nth 1 c) (list (nth 1 c) (nth 2 v)) (list ""))) - (setq clm (+ clm 6)))) + (dolist (ct (cdr c)) + (insert "\n" (or ct "") + (propertize "\t" 'display '(space :align-to 4)) + "|") + (setq clm 6) + (dolist (v vowels) + (apply #'insert (propertize "\t" 'display (list 'space :align-to clm)) + (if ct (list ct (nth 2 v)) (list ""))) + (setq clm (+ clm 6))))) (insert "\n") (insert "----+") (insert-char ?- 74) (insert "\n") (buffer-string)))) +(defvar quail-tamil-itrans-syllable-table + (quail-tamil-itrans-compute-syllable-table + (let ((vowels (car indian-tml-base-table)) + trans v ret) + (dotimes (i (length vowels)) + (when (setq v (nth i vowels)) + (when (characterp (car v)) + (setcar v (string (car v)))) + (setq trans (nth i (car indian-itrans-v5-table-for-tamil))) + (push (append v (list (if (listp trans) (car trans) trans))) + ret))) + ret) + (let ((consonants (cadr indian-tml-base-table)) + trans c ret) + (dotimes (i (length consonants)) + (when (setq c (nth i consonants)) + (when (characterp c) + (setq c (string c))) + (setq trans (nth i (cadr indian-itrans-v5-table-for-tamil))) + (push (cons c (if (listp trans) trans (list trans))) + ret))) + (setq ret (nreverse ret)) + ret))) + (defvar quail-tamil-itrans-numerics-and-symbols-table (let ((numerics '((?௰ "பத்து") (?௱ "நூறு") (?௲ "ஆயிரம்"))) (symbols '((?௳ "நாள்") (?௴ "மாதம்") (?௵ "வருடம்") @@ -244,45 +255,70 @@ (insert "\n") (buffer-string)))) -(defvar quail-tamil-itrans-various-signs-and-digits-table - (let ((various '((?ஃ . "H") ("ஸ்ரீ" . "srii") (?ௐ))) - (digits "௦௧௨௩௪௫௬௭௮௯") +(defun quail-tamil-itrans-compute-signs-table (digitp various) + "Compute the signs table for the tamil-itrans input method. +If DIGITP is non-nil, include the digits translation as well. +If VARIOUS is non-nil, then it should a list of (CHAR TRANS) +where CHAR is the character/string to translate and TRANS is +CHAR's translation." + (let ((digits "௦௧௨௩௪௫௬௭௮௯") (width 6) clm) (with-temp-buffer - (insert "\n" (make-string 18 ?-) "+" (make-string 60 ?-) "\n") + (insert "\n" (make-string 18 ?-)) + (when digitp + (insert "+" (make-string 60 ?-))) + (insert "\n") (insert (propertize "\t" 'display '(space :align-to 5)) "various" - (propertize "\t" 'display '(space :align-to 18)) "|" - (propertize "\t" 'display '(space :align-to 45)) "digits") - - (insert "\n" (make-string 18 ?-) "+" (make-string 60 ?-) "\n") - (setq clm 0 ) + (propertize "\t" 'display '(space :align-to 18))) + (when digitp + (insert + "|" (propertize "\t" 'display '(space :align-to 45)) "digits")) + (insert "\n" (make-string 18 ?-)) + (when digitp + (insert "+" (make-string 60 ?-))) + (insert "\n") + (setq clm 0) (dotimes (i (length various)) (insert (propertize "\t" 'display (list 'space :align-to clm)) (car (nth i various))) (setq clm (+ clm width))) - (insert (propertize "\t" 'display '(space :align-to 18)) "|") + (when digitp + (insert (propertize "\t" 'display '(space :align-to 18)) "|")) (setq clm 20) - (dotimes (i 10) - (insert (propertize "\t" 'display (list 'space :align-to clm)) - (aref digits i)) - (setq clm (+ clm width))) + (when digitp + (dotimes (i 10) + (insert (propertize "\t" 'display (list 'space :align-to clm)) + (aref digits i)) + (setq clm (+ clm width)))) (insert "\n") (setq clm 0) (dotimes (i (length various)) (insert (propertize "\t" 'display (list 'space :align-to clm)) - (or (cdr (nth i various)) "")) + (or (cadr (nth i various)) "")) (setq clm (+ clm width))) - (insert (propertize "\t" 'display '(space :align-to 18)) "|") + (when digitp + (insert (propertize "\t" 'display '(space :align-to 18)) "|")) (setq clm 20) - (dotimes (i 10) - (insert (propertize "\t" 'display (list 'space :align-to clm)) - (format "%d" i)) - (setq clm (+ clm width))) - (insert "\n" (make-string 18 ?-) "+" (make-string 60 ?-) "\n") + (when digitp + (dotimes (i 10) + (insert (propertize "\t" 'display (list 'space :align-to clm)) + (format "%d" i)) + (setq clm (+ clm width)))) + (insert "\n" (make-string 18 ?-)) + (when digitp + (insert "+" (make-string 60 ?-) "\n")) (buffer-string)))) +(defvar quail-tamil-itrans-various-signs-and-digits-table + (quail-tamil-itrans-compute-signs-table + t '((?ஃ "H") ("ஸ்ரீ" "srii") (?ௐ "OM")))) + +(defvar quail-tamil-itrans-various-signs-table + (quail-tamil-itrans-compute-signs-table + nil '((?ஃ "H") ("ஸ்ரீ" "srii") (?ௐ "OM")))) + (if nil (quail-define-package "tamil-itrans" "Tamil" "TmlIT" t "Tamil ITRANS")) (quail-define-indian-trans-package @@ -293,20 +329,197 @@ You can input characters using the following mapping tables. Example: To enter வணக்கம், type vaNakkam. ### Basic syllables (consonants + vowels) ### -\\<quail-tamil-itrans-syllable-table> +\\=\\<quail-tamil-itrans-syllable-table> + +### Miscellaneous (various signs) ### +\\=\\<quail-tamil-itrans-various-signs-table> + +### Others (numerics + symbols) ### + +Characters below have no ITRANS method associated with them. +Their descriptions are included for easy reference. +\\=\\<quail-tamil-itrans-numerics-and-symbols-table> + +Full key sequences are listed below:") + +(if nil + (quail-define-package "tamil-itrans-digits" "Tamil" "TmlITD" t "Tamil ITRANS with digits")) +(quail-define-indian-trans-package + indian-tml-itrans-digits-v5-hash "tamil-itrans-digits" "Tamil" "TmlITD" + "Tamil transliteration by ITRANS method with Tamil digits support. + +You can input characters using the following mapping tables. + Example: To enter வணக்கம், type vaNakkam. + +### Basic syllables (consonants + vowels) ### +\\=\\<quail-tamil-itrans-syllable-table> ### Miscellaneous (various signs + digits) ### -\\<quail-tamil-itrans-various-signs-and-digits-table> +\\=\\<quail-tamil-itrans-various-signs-and-digits-table> ### Others (numerics + symbols) ### Characters below have no ITRANS method associated with them. Their descriptions are included for easy reference. -\\<quail-tamil-itrans-numerics-and-symbols-table> +\\=\\<quail-tamil-itrans-numerics-and-symbols-table> Full key sequences are listed below:") ;;; +;;; Tamil phonetic input method +;;; + +;; Define the input method straightaway. +(quail-define-package "tamil-phonetic" "Tamil" "ழ" t + "Customisable Tamil phonetic input method. +To change the translation rules of the input method, customize +`tamil-translation-rules'. + +To use native Tamil digits, customize `tamil-translation-rules' +accordingly. + +To end the current translation process, say \\<quail-translation-keymap>\\[quail-select-current] (defined in +`quail-translation-keymap'). This is useful when there's a +conflict between two possible translation. + +The current input scheme is: + +### Basic syllables (உயிர்மெய் எழுத்துக்கள்) ### +\\=\\<tamil--syllable-table> + +### Miscellaneous #### +\\=\\<tamil--signs-table> + +The following characters have NO input sequence associated with +them by default. Their descriptions are included for easy +reference. +\\=\\<quail-tamil-itrans-numerics-and-symbols-table> + +Full key sequences are listed below:" + nil nil nil nil nil nil t) + +(defvar tamil--syllable-table nil) +(defvar tamil--signs-table nil) +(defvar tamil--hashtables + (cons (make-hash-table :test #'equal) + (make-hash-table :test #'equal))) +(defvar tamil--vowel-signs + '(("அ" . t) ("ஆ" . ?ா) ("இ" . ?ி) ("ஈ" . ?ீ) + ("உ" . ?ு) ("ஊ" . ?ூ) ("எ" . ?ெ) ("ஏ" . ?ே) + ("ஐ" . ?ை) ("ஒ" . ?ொ) ("ஓ" . ?ோ) ("ஔ" . ?ௌ))) + +(defun tamil--setter (sym val) + (set-default sym val) + (tamil--update-quail-rules val)) + +(defun tamil--make-tables (rules) + (let (v v-table v-trans + c-table c-trans + m-table m-trans) + (dolist (ch rules) + (cond + ;; Vowel. + ((setq v (assoc-default (car ch) tamil--vowel-signs)) + (push (list (car ch) (and (characterp v) v)) v-table) + (push (cdr ch) v-trans)) + ;; Consonant. It needs to end with pulli. + ((string-suffix-p "்" (car ch)) + ;; Strip the pulli now. + (push (substring (car ch) 0 -1) c-table) + (push (cdr ch) c-trans)) + ;; If nothing else, then consider it a misc character. + (t (push (car ch) m-table) + (push (cdr ch) m-trans)))) + (list v-table v-trans c-table c-trans m-table m-trans))) + +(defun tamil--update-quail-rules (rules &optional name) + ;; This function does pretty much what `indian-make-hash' does + ;; except that we don't try to copy the structure of + ;; `indian-tml-base-table' which leads to less code hassle. + (let* ((quail-current-package (assoc (or name "tamil-phonetic") quail-package-alist)) + (tables (tamil--make-tables rules)) + (v (nth 0 tables)) + (v-trans (nth 1 tables)) + (c (nth 2 tables)) + (c-trans (nth 3 tables)) + (m (nth 4 tables)) + (m-trans (nth 5 tables)) + (pulli (string #x0BCD))) + (clrhash (car tamil--hashtables)) + (clrhash (cdr tamil--hashtables)) + (indian--puthash-v v v-trans tamil--hashtables) + (indian--puthash-c c c-trans pulli tamil--hashtables) + (indian--puthash-cv c c-trans v v-trans tamil--hashtables) + (indian--puthash-m m m-trans tamil--hashtables) + ;; Now override the current translation rules. + ;; Empty quail map is '(list nil)'. + (setf (nth 2 quail-current-package) '(nil)) + (maphash (lambda (k v) + (quail-defrule k (if (length= v 1) + (string-to-char v) + (vector v)))) + (cdr tamil--hashtables)) + (setq tamil--syllable-table + (quail-tamil-itrans-compute-syllable-table + (mapcar (lambda (ch) (append ch (pop v-trans))) v) + (mapcar (lambda (ch) (cons ch (pop c-trans))) c)) + tamil--signs-table + (quail-tamil-itrans-compute-signs-table + nil + (append (mapcar (lambda (ch) (cons ch (pop m-trans))) m) + (and (gethash "ஸ்" (car tamil--hashtables)) + `(("ஸ்ரீ" ,(concat (gethash "ஸ்" (car tamil--hashtables)) + (gethash "ரீ" (car tamil--hashtables))))))))))) + +(defgroup tamil-input nil + "Translation rules for the Tamil input method." + :prefix "tamil-" + :group 'leim) + +(defcustom tamil-translation-rules + ;; Vowels. + '(("அ" "a") ("ஆ" "aa") ("இ" "i") ("ஈ" "ii") + ("உ" "u") ("ஊ" "uu") ("எ" "e") ("ஏ" "ee") + ("ஐ" "ai") ("ஒ" "o") ("ஓ" "oo") ("ஔ" "au" "ow") + + ;; Consonants. + ("க்" "k" "g") ("ங்" "ng") ("ச்" "ch" "s") ("ஞ்" "nj") ("ட்" "t" "d") + ("ண்" "N") ("த்" "th" "dh") ("ந்" "nh") ("ப்" "p" "b") ("ம்" "m") + ("ய்" "y") ("ர்" "r") ("ல்" "l") ("வ்" "v") ("ழ்" "z" "zh") + ("ள்" "L") ("ற்" "rh") ("ன்" "n") + ;; Sanskrit. + ("ஜ்" "j") ("ஸ்" "S") ("ஷ்" "sh") ("ஹ்" "h") + ("க்ஷ்" "ksh") ("க்ஷ்" "ksH") ("ஶ்" "Z") + + ;; Misc. ஃ is neither a consonant nor a vowel. + ("ஃ" "F" "q") + ("ௐ" "OM")) + "List of input sequences to translate to Tamil characters. +Each element should be (CHARACTER INPUT-SEQUENCES...) where +CHARACTER is the Tamil character, and INPUT-SEQUENCES are one +or more input sequences which produce that character. + +CHARACTER is considered as a consonant (மெய் எழுத்து) if it ends +with a pulli (virama). + +CHARACTER that is neither a vowel nor a consonant is inserted as +is." + :group 'tamil-input + :type '(alist :key-type string :value-type (repeat string)) + :set #'tamil--setter + :version "29.1" + :options + (delq nil + (append (mapcar #'car tamil--vowel-signs) + (mapcar (lambda (x) (if (characterp x) + (string x #x0BCD) + (and x (concat x "்")))) + (nth 1 indian-tml-base-table)) + '("ஃ" "ௐ") + ;; Digits. + (mapcar #'string (nth 3 indian-tml-base-digits-table))))) + +;;; ;;; Input by Inscript ;;; @@ -479,6 +692,13 @@ Full key sequences are listed below:") "tamil-inscript" "Tamil" "TmlIS" "Tamil keyboard Inscript.") +(if nil + (quail-define-package "tamil-inscript-digits" "Tamil" "TmlISD" t "Tamil keyboard Inscript with digits.")) +(quail-define-inscript-package + indian-tml-base-digits-table inscript-tml-keytable + "tamil-inscript-digits" "Tamil" "TmlISD" + "Tamil keyboard Inscript with Tamil digits support.") + ;; Probhat Input Method (quail-define-package "bengali-probhat" "Bengali" "BngPB" t @@ -633,7 +853,7 @@ Full key sequences are listed below:") (quail-define-package "malayalam-mozhi" "Malayalam" "MlmMI" t "Malayalam transliteration by Mozhi method." nil nil t nil nil nil t nil - #'indian-mlm-mozhi-update-translation) + #'indian-mlm-mozhi-update-translation nil t) (maphash (lambda (key val) @@ -648,4 +868,1271 @@ Full key sequences are listed below:") (quail-defrule "|" ?) (quail-defrule "||" ?) +(quail-define-package + "brahmi" "Brahmi" "𑀲" t "Brahmi phonetic input method. + + `\\=`' is used to switch levels instead of Alt-Gr. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("``" ?₹) + ("1" ?𑁧) + ("`1" ?1) + ("`!" ?𑁒) + ("2" ?𑁨) + ("`2" ?2) + ("`@" ?𑁓) + ("3" ?𑁩) + ("`3" ?3) + ("`#" ?𑁔) + ("4" ?𑁪) + ("`4" ?4) + ("`$" ?𑁕) + ("5" ?𑁫) + ("`5" ?5) + ("`%" ?𑁖) + ("6" ?𑁬) + ("`6" ?6) + ("`^" ?𑁗) + ("7" ?𑁭) + ("`7" ?7) + ("`&" ?𑁘) + ("8" ?𑁮) + ("`8" ?8) + ("`*" ?𑁙) + ("9" ?𑁯) + ("`9" ?9) + ("`(" ?𑁚) + ("0" ?𑁦) + ("`0" ?0) + ("`)" ?𑁛) + ("`-" ?𑁜) + ("`_" ?𑁝) + ("`=" ?𑁞) + ("`+" ?𑁟) + ("`\\" ?𑁇) + ("`|" ?𑁈) + ("`" ?𑀝) + ("q" ?𑀝) + ("Q" ?𑀞) + ("`q" ?𑀃) + ("`Q" ?𑁠) + ("w" ?𑀟) + ("W" ?𑀠) + ("`w" ?𑀄) + ("`W" ?𑁡) + ("e" ?𑁂) + ("E" ?𑁃) + ("`e" ?𑀏) + ("`E" ?𑀐) + ("r" ?𑀭) + ("R" ?𑀾) + ("`r" ?𑀋) + ("`R" ?𑀶) + ("t" ?𑀢) + ("T" ?𑀣) + ("`t" ?𑁢) + ("y" ?𑀬) + ("Y" ?𑁣) + ("`y" ?𑁤) + ("`Y" ?𑁥) + ("u" ?𑀼) + ("U" ?𑀽) + ("`u" ?𑀉) + ("`U" ?𑀊) + ("i" ?𑀺) + ("I" ?𑀻) + ("`i" ?𑀇) + ("`I" ?𑀈) + ("o" ?𑁄) + ("O" ?𑁅) + ("`o" ?𑀑) + ("`O" ?𑀒) + ("p" ?𑀧) + ("P" ?𑀨) + ("`p" ?𑁳) + ("`P" ?𑁱) + ("`[" ?𑁴) + ("`{" ?𑁲) + ("a" ?𑀸) + ("A" ?𑀆) + ("`a" ?𑀅) + ("`A" ?𑀹) + ("s" ?𑀲) + ("S" ?𑀰) + ("`s" ?𑀱) + ("d" ?𑀤) + ("D" ?𑀥) + ("`d" ?𑀶) + ("f" ?𑁆) + ("F" ?𑀿) + ("`f" ?𑀌) + ("`F" ?𑁰) + ("g" ?𑀕) + ("G" ?𑀖) + ("h" ?𑀳) + ("H" ?𑀂) + ("j" ?𑀚) + ("J" ?𑀛) + ("k" ?𑀓) + ("K" ?𑀔) + ("l" ?𑀮) + ("L" ?𑀴) + ("`l" ?𑀵) + ("`L" ?𑁵) + ("z" ?𑁀) + ("Z" ?𑀍) + ("`z" ?𑁁) + ("`Z" ?𑀎) + ("x" ?𑁉) + ("X" ?𑁊) + ("`x" ?𑁋) + ("`X" ?𑁌) + ("c" ?𑀘) + ("C" ?𑀙) + ("`c" #x200C) ; ZWNJ + ("`C" #x200D) ; ZWJ + ("v" ?𑀯) + ("V" ?𑀷) + ("b" ?𑀩) + ("B" ?𑀪) + ("n" ?𑀦) + ("N" ?𑀡) + ("`n" ?𑀗) + ("`N" ?𑀜) + ("m" ?𑀫) + ("M" ?𑀁) + ("`m" ?𑀀) + ("<" ?𑁍) + ("`/" ?𑁿) + ) + +(quail-define-package + "kaithi" "Kaithi" "𑂍𑂶" t "Kaithi phonetic input method. + + `\\=`' is used to switch levels instead of Alt-Gr. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules +("``" ?₹) +("1" ?१) +("`1" ?1) +("2" ?२) +("`2" ?2) +("3" ?३) +("`3" ?3) +("4" ?४) +("`4" ?4) +("5" ?५) +("`5" ?5) +("6" ?६) +("`6" ?6) +("7" ?७) +("`7" ?7) +("8" ?८) +("`8" ?8) +("9" ?९) +("`9" ?9) +("0" ?०) +("`0" ?0) +("`)" ?𑂻) +("`\\" ?𑃀) +("`|" ?𑃁) +("`" ?𑂗) +("q" ?𑂗) +("Q" ?𑂘) +("w" ?𑂙) +("W" ?𑂛) +("`w" ?𑂚) +("`W" ?𑂜) +("e" ?𑂵) +("E" ?𑂶) +("`e" ?𑂉) +("`E" ?𑂊) +("r" ?𑂩) +("R" ?𑃂) +("t" ?𑂞) +("T" ?𑂟) +("y" ?𑂨) +("Y" ?⸱) +("u" ?𑂳) +("U" ?𑂴) +("`u" ?𑂇) +("`U" ?𑂈) +("i" ?𑂱) +("I" ?𑂲) +("`i" ?𑂅) +("`I" ?𑂆) +("o" ?𑂷) +("O" ?𑂸) +("`o" ?𑂋) +("`O" ?𑂌) +("p" ?𑂣) +("P" ?𑂤) +("a" ?𑂰) +("A" ?𑂄) +("`a" ?𑂃) +("s" ?𑂮) +("S" ?𑂬) +("d" ?𑂠) +("D" ?𑂡) +("`d" ?𑂼) +("`D" #x110BD) ; Kaithi Number Sign +("f" ?𑂹) +("F" #x110CD) ; Kaithi Number Sign Above +("`f" ?𑂾) +("`F" ?𑂿) +("g" ?𑂏) +("G" ?𑂐) +("h" ?𑂯) +("H" ?𑂂) +("j" ?𑂔) +("J" ?𑂕) +("k" ?𑂍) +("K" ?𑂎) +("l" ?𑂪) +("z" ?𑂖) +("Z" ?𑂑) +("x" ?𑂭) +("X" ?𑂺) +("c" ?𑂒) +("C" ?𑂓) +("`c" #x200C) ; ZWNJ +("`C" #x200D) ; ZWJ +("v" ?𑂫) +("b" ?𑂥) +("B" ?𑂦) +("n" ?𑂢) +("N" ?𑂝) +("m" ?𑂧) +("M" ?𑂁) +("`m" ?𑂀) +) + +(quail-define-package + "tirhuta" "Tirhuta" "𑒞𑒱" t "Tirhuta phonetic input method. + + `\\=`' is used to switch levels instead of Alt-Gr. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules +("``" ?₹) +("1" ?𑓑) +("`1" ?1) +("2" ?𑓒) +("`2" ?2) +("3" ?𑓓) +("`3" ?3) +("4" ?𑓔) +("`4" ?4) +("5" ?𑓕) +("`5" ?5) +("6" ?𑓖) +("`6" ?6) +("7" ?𑓗) +("`7" ?7) +("8" ?𑓘) +("`8" ?8) +("9" ?𑓙) +("`9" ?9) +("0" ?𑓐) +("`0" ?0) +("`)" ?𑓆) +("`\\" ?।) +("`|" ?॥) +("`" ?𑒙) +("q" ?𑒙) +("Q" ?𑒚) +("w" ?𑒛) +("W" ?𑒜) +("e" ?𑒺) +("E" ?𑒹) +("`e" ?𑒋) +("r" ?𑒩) +("R" ?𑒵) +("`r" ?𑒇) +("t" ?𑒞) +("T" ?𑒟) +("y" ?𑒨) +("Y" ?𑒻) +("`y" ?𑒌) +("u" ?𑒳) +("U" ?𑒴) +("`u" ?𑒅) +("`U" ?𑒆) +("i" ?𑒱) +("I" ?𑒲) +("`i" ?𑒃) +("`I" ?𑒄) +("o" ?𑒽) +("O" ?𑒼) +("`o" ?𑒍) +("p" ?𑒣) +("P" ?𑒤) +("a" ?𑒰) +("A" ?𑒂) +("`a" ?𑒁) +("s" ?𑒮) +("S" ?𑒬) +("d" ?𑒠) +("D" ?𑒡) +("f" ?𑓂) +("F" ?𑒶) +("`f" ?𑒈) +("g" ?𑒑) +("G" ?𑒒) +("h" ?𑒯) +("H" ?𑓁) +("j" ?𑒖) +("J" ?𑒗) +("k" ?𑒏) +("K" ?𑒐) +("l" ?𑒪) +("L" ?𑒷) +("`l" ?𑒉) +("z" ?𑒘) +("Z" ?𑒓) +("`z" ?𑒸) +("`Z" ?𑒊) +("x" ?𑒭) +("X" ?𑓃) +("c" ?𑒔) +("C" ?𑒕) +("`c" #x200C) ; ZWNJ +("v" ?𑒫) +("V" ?𑒾) +("`v" ?𑒎) +("b" ?𑒥) +("B" ?𑒦) +("`b" ?𑒀) +("`B" ?𑓄) +("n" ?𑒢) +("N" ?𑒝) +("`n" ?𑓇) +("`N" ?𑓅) +("m" ?𑒧) +("M" ?𑓀) +("`m" ?𑒿) +) + +(quail-define-package + "sharada" "Sharada" "𑆯𑆳" t "Sharada phonetic input method. + + `\\=`' is used to switch levels instead of Alt-Gr. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules +("``" ?₹) +("1" ?𑇑) +("`1" ?1) +("2" ?𑇒) +("`2" ?2) +("3" ?𑇓) +("`3" ?3) +("4" ?𑇔) +("`4" ?4) +("5" ?𑇕) +("`5" ?5) +("6" ?𑇖) +("`6" ?6) +("7" ?𑇗) +("`7" ?7) +("8" ?𑇘) +("`8" ?8) +("9" ?𑇙) +("`9" ?9) +("0" ?𑇐) +("`0" ?0) +("`)" ?𑇇) +("`\\" ?𑇅) +("`|" ?𑇆) +("`" ?𑆛) +("q" ?𑆛) +("Q" ?𑆜) +("`q" ?𑇈) +("`Q" ?𑇉) +("w" ?𑆝) +("W" ?𑆞) +("`w" ?𑇋) +("`W" ?𑇍) +("e" ?𑆼) +("E" ?𑆽) +("`e" ?𑆍) +("`E" ?𑆎) +("r" ?𑆫) +("R" ?𑆸) +("`r" ?𑆉) +("`R" ?𑇎) +("t" ?𑆠) +("T" ?𑆡) +("y" ?𑆪) +("u" ?𑆶) +("U" ?𑆷) +("`u" ?𑆇) +("`U" ?𑆈) +("i" ?𑆴) +("I" ?𑆵) +("`i" ?𑆅) +("`I" ?𑆆) +("o" ?𑆾) +("O" ?𑆿) +("`o" ?𑆏) +("`O" ?𑆐) +("p" ?𑆥) +("P" ?𑆦) +("`p" ?𑇃) +("a" ?𑆳) +("A" ?𑆄) +("`a" ?𑆃) +("s" ?𑆱) +("S" ?𑆯) +("d" ?𑆢) +("D" ?𑆣) +("`d" ?𑇚) +("`D" ?𑇛) +("f" ?𑇀) +("F" ?𑆹) +("`f" ?𑆊) +("`F" ?𑇌) +("g" ?𑆓) +("G" ?𑆔) +("`g" ?𑇜) +("`G" ?𑇝) +("h" ?𑆲) +("H" ?𑆂) +("`h" ?𑇞) +("`H" ?𑇟) +("j" ?𑆘) +("J" ?𑆙) +("`j" ?᳘) +("`J" ?᳕) +("k" ?𑆑) +("K" ?𑆒) +("`k" ?𑇂) +("l" ?𑆬) +("L" ?𑆭) +("`l" ?𑆺) +("`L" ?𑆋) +("z" ?𑆚) +("Z" ?𑆕) +("`z" ?𑆻) +("`Z" ?𑆌) +("x" ?𑆰) +("X" ?𑇊) +("c" ?𑆖) +("C" ?𑆗) +("`c" #x200C) ; ZWNJ +("v" ?𑆮) +("b" ?𑆧) +("B" ?𑆨) +("n" ?𑆤) +("N" ?𑆟) +("`n" ?𑇄) +("`N" ?𑇁) +("m" ?𑆩) +("M" ?𑆁) +("`m" ?𑆀) +("`M" ?𑇏) +) + +(quail-define-package + "siddham" "Sharada" "𑖭𑖰" t "Siddham phonetic input method. + + `\\=`' is used to switch levels instead of Alt-Gr. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules +("``" ?₹) +("`1" ?𑗊) +("`!" ?𑗔) +("`2" ?𑗋) +("`@" ?𑗕) +("`3" ?𑗌) +("`#" ?𑗖) +("`4" ?𑗍) +("`$" ?𑗗) +("`5" ?𑗎) +("`%" ?𑗅) +("`6" ?𑗏) +("`^" ?𑗆) +("`7" ?𑗐) +("`&" ?𑗇) +("`8" ?𑗑) +("`*" ?𑗈) +("`9" ?𑗒) +("`(" ?𑗉) +("`0" ?𑗓) +("`)" ?𑗄) +("`\\" ?𑗂) +("`|" ?𑗃) +("`" ?𑖘) +("q" ?𑖘) +("Q" ?𑖙) +("`q" ?𑗘) +("`Q" ?𑗙) +("w" ?𑖚) +("W" ?𑖛) +("`w" ?𑗚) +("`W" ?𑗛) +("e" ?𑖸) +("E" ?𑖹) +("`e" ?𑖊) +("`E" ?𑖋) +("r" ?𑖨) +("R" ?𑖴) +("`r" ?𑖆) +("t" ?𑖝) +("T" ?𑖞) +("`t" ?𑗜) +("`T" ?𑗝) +("y" ?𑖧) +("u" ?𑖲) +("U" ?𑖳) +("`u" ?𑖄) +("`U" ?𑖅) +("i" ?𑖰) +("I" ?𑖱) +("`i" ?𑖂) +("`I" ?𑖃) +("o" ?𑖺) +("O" ?𑖻) +("`o" ?𑖌) +("`O" ?𑖍) +("p" ?𑖢) +("P" ?𑖣) +("a" ?𑖯) +("A" ?𑖁) +("`a" ?𑖀) +("s" ?𑖭) +("S" ?𑖫) +("d" ?𑖟) +("D" ?𑖠) +("`d" ?𑗁) +("f" ?𑖿) +("F" ?𑖵) +("`f" ?𑖇) +("g" ?𑖐) +("G" ?𑖑) +("h" ?𑖮) +("H" ?𑖾) +("j" ?𑖕) +("J" ?𑖖) +("k" ?𑖎) +("K" ?𑖏) +("l" ?𑖩) +("L" ?𑖈) +("`l" ?𑖉) +("z" ?𑖗) +("Z" ?𑖒) +("x" ?𑖬) +("X" ?𑗀) +("c" ?𑖓) +("C" ?𑖔) +("`c" #x200C) ; ZWNJ +("v" ?𑖪) +("b" ?𑖤) +("B" ?𑖥) +("n" ?𑖡) +("N" ?𑖜) +("m" ?𑖦) +("M" ?𑖽) +("`m" ?𑖼) +) + + +(quail-define-package + "syloti-nagri" "Syloti Nagri" "ꠍꠤ" t "Syloti Nagri phonetic input method. + + `\\=`' is used to switch levels instead of Alt-Gr. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules +("``" ?₹) +("`~" ?৳) +("1" ?১) +("`1" ?1) +("2" ?২) +("`2" ?2) +("3" ?৩) +("`3" ?3) +("4" ?৪) +("`4" ?4) +("5" ?৫) +("`5" ?5) +("6" ?৬) +("`6" ?6) +("7" ?৭) +("`7" ?7) +("8" ?৮) +("`8" ?8) +("9" ?৯) +("`9" ?9) +("0" ?০) +("`0" ?0) +("`\\" ?𑇅) +("`|" ?𑇆) +("`" ?ꠐ) +("q" ?ꠐ) +("Q" ?ꠑ) +("`q" ?꠨) +("`Q" ?꠩) +("w" ?ꠒ) +("W" ?ꠓ) +("`w" ?꠪) +("`W" ?꠫) +("e" ?ꠦ) +("E" ?ꠄ) +("r" ?ꠞ) +("R" ?ꠠ) +("t" ?ꠔ) +("T" ?ꠕ) +("y" ?ꠂ) +("u" ?ꠥ) +("U" ?ꠃ) +("i" ?ꠤ) +("I" ?ꠁ) +("o" ?ꠧ) +("O" ?ꠅ) +("p" ?ꠙ) +("P" ?ꠚ) +("a" ?ꠣ) +("A" ?ꠀ) +("s" ?ꠡ) +("d" ?ꠖ) +("D" ?ꠗ) +("f" ?꠆) +("F" ?꠬) +("g" ?ꠉ) +("G" ?ꠊ) +("h" ?ꠢ) +("j" ?ꠎ) +("J" ?ꠏ) +("k" ?ꠇ) +("K" ?ꠈ) +("l" ?ꠟ) +("c" ?ꠌ) +("C" ?ꠍ) +("`c" #x200C) ; ZWNJ +("b" ?ꠛ) +("B" ?ꠜ) +("n" ?ꠘ) +("m" ?ꠝ) +("M" ?ꠋ) +) + +(quail-define-package + "modi" "Modi" "𑘦𑘻" t "Modi phonetic input method. + + `\\=`' is used to switch levels instead of Alt-Gr. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules +("``" ?₹) +("1" ?𑙑) +("`1" ?1) +("2" ?𑙒) +("`2" ?2) +("3" ?𑙓) +("`3" ?3) +("4" ?𑙔) +("`4" ?4) +("5" ?𑙕) +("`5" ?5) +("6" ?𑙖) +("`6" ?6) +("7" ?𑙗) +("`7" ?7) +("8" ?𑙘) +("`8" ?8) +("9" ?𑙙) +("`9" ?9) +("0" ?𑙐) +("`0" ?0) +("`)" ?𑙃) +("`\\" ?𑙁) +("`|" ?𑙂) +("`" ?𑘘) +("q" ?𑘘) +("Q" ?𑘙) +("`q" ?𑙄) +("w" ?𑘚) +("W" ?𑘛) +("e" ?𑘹) +("E" ?𑘺) +("`e" ?𑘊) +("`E" ?𑘋) +("r" ?𑘨) +("R" ?𑘵) +("`r" ?𑘆) +("t" ?𑘝) +("T" ?𑘞) +("y" ?𑘧) +("u" ?𑘳) +("U" ?𑘴) +("`u" ?𑘄) +("`U" ?𑘅) +("i" ?𑘱) +("I" ?𑘲) +("`i" ?𑘂) +("`I" ?𑘃) +("o" ?𑘻) +("O" ?𑘼) +("`o" ?𑘌) +("`O" ?𑘍) +("p" ?𑘢) +("P" ?𑘣) +("a" ?𑘰) +("A" ?𑘁) +("`a" ?𑘀) +("s" ?𑘭) +("S" ?𑘫) +("d" ?𑘟) +("D" ?𑘠) +("f" ?𑘿) +("F" ?𑘶) +("`f" ?𑘇) +("g" ?𑘐) +("G" ?𑘑) +("h" ?𑘮) +("H" ?𑘾) +("j" ?𑘕) +("J" ?𑘖) +("k" ?𑘎) +("K" ?𑘏) +("l" ?𑘩) +("L" ?𑘯) +("`l" ?𑘷) +("`L" ?𑘈) +("z" ?𑘗) +("Z" ?𑘒) +("`z" ?𑘸) +("`Z" ?𑘉) +("x" ?𑘬) +("X" ?𑙀) +("c" ?𑘓) +("C" ?𑘔) +("`c" #x200C) ; ZWNJ +("v" ?𑘪) +("b" ?𑘤) +("B" ?𑘥) +("n" ?𑘡) +("N" ?𑘜) +("m" ?𑘦) +("M" ?𑘽) +) + +(quail-define-package + "odia" "Odia" "ଓ" t "Odia phonetic input method. + + `\\=`' is used to switch levels instead of Alt-Gr. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules +("``" ?₹) +("1" ?୧) +("`1" ?1) +("`!" ?୲) +("2" ?୨) +("`2" ?2) +("`@" ?୳) +("3" ?୩) +("`3" ?3) +("`#" ?୴) +("4" ?୪) +("`4" ?4) +("`$" ?୵) +("5" ?୫) +("`5" ?5) +("`%" ?୶) +("6" ?୬) +("`6" ?6) +("`^" ?୷) +("7" ?୭) +("`7" ?7) +("8" ?୮) +("`8" ?8) +("9" ?୯) +("`9" ?9) +("0" ?୦) +("`0" ?0) +("`\\" ?।) +("`|" ?॥) +("`" ?ଟ) +("q" ?ଟ) +("Q" ?ଠ) +("`q" ?୰) +("`Q" ?୕) +("w" ?ଡ) +("W" ?ଢ) +("`w" ?ଡ଼) +("`W" ?ଢ଼) +("e" ?େ) +("E" ?ୈ) +("`e" ?ଏ) +("`E" ?ଐ) +("r" ?ର) +("R" ?ୃ) +("`r" ?ଋ) +("t" ?ତ) +("T" ?ଥ) +("`t" ?ୖ) +("`T" ?ୗ) +("y" ?ଯ) +("Y" ?ୟ) +("u" ?ୁ) +("U" ?ୂ) +("`u" ?ଉ) +("`U" ?ଊ) +("i" ?ି) +("I" ?ୀ) +("`i" ?ଇ) +("`I" ?ଈ) +("o" ?ୋ) +("O" ?ୌ) +("`o" ?ଓ) +("`O" ?ଔ) +("p" ?ପ) +("P" ?ଫ) +("a" ?ା) +("A" ?ଆ) +("`a" ?ଅ) +("s" ?ସ) +("S" ?ଶ) +("d" ?ଦ) +("D" ?ଧ) +("f" ?୍) +("F" ?ୄ) +("`f" ?ୠ) +("g" ?ଗ) +("G" ?ଘ) +("h" ?ହ) +("H" ?ଃ) +("j" ?ଜ) +("J" ?ଝ) +("k" ?କ) +("K" ?ଖ) +("l" ?ଲ) +("L" ?ଳ) +("`l" ?ୢ) +("`L" ?ଌ) +("z" ?ଞ) +("Z" ?ଙ) +("`z" ?ୣ) +("`Z" ?ୡ) +("x" ?ଷ) +("X" ?଼) +("c" ?ଚ) +("C" ?ଛ) +("`c" #x200C) ; ZWNJ +("`C" #x200D) ; ZWJ +("v" ?ଵ) +("V" ?ୱ) +("b" ?ବ) +("B" ?ଭ) +("n" ?ନ) +("N" ?ଣ) +("m" ?ମ) +("M" ?ଂ) +("`m" ?ଁ) +("`M" ?ଽ) +) + +(quail-define-package + "limbu" "Limbu" "ᤕ" t "Limbu phonetic input method. + + `\\=`' is used to switch levels instead of Alt-Gr. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules +("``" ?₹) +("1" ?᥇) +("`1" ?1) +("`!" ?᥄) +("2" ?᥈) +("`2" ?2) +("3" ?᥉) +("`3" ?3) +("4" ?᥊) +("`4" ?4) +("5" ?᥋) +("`5" ?5) +("6" ?᥌) +("`6" ?6) +("7" ?᥍) +("`7" ?7) +("8" ?᥎) +("`8" ?8) +("9" ?᥏) +("`9" ?9) +("0" ?᥆) +("`0" ?0) +("`\\" ?।) +("`|" ?॥) +("`" ?ᤘ) +("q" ?ᤧ) +("Q" ?ᤨ) +("`q" ?᥀) +("w" ?ᤘ) +("W" ?ᤫ) +("e" ?ᤣ) +("E" ?ᤤ) +("r" ?ᤖ) +("R" ?ᤷ) +("`r" ?ᤪ) +("t" ?ᤋ) +("T" ?ᤌ) +("`t" ?ᤳ) +("`T" ?ᤞ) +("y" ?ᤕ) +("Y" ?ᤩ) +("u" ?ᤢ) +("i" ?ᤡ) +("o" ?ᤥ) +("O" ?ᤦ) +("p" ?ᤐ) +("P" ?ᤑ) +("`p" ?ᤵ) +("a" ?ᤠ) +("A" ?ᤀ) +("s" ?ᤛ) +("S" ?ᤙ) +("d" ?ᤍ) +("D" ?ᤎ) +("f" ?᤻) +("g" ?ᤃ) +("G" ?ᤄ) +("`g" ?ᤝ) +("h" ?ᤜ) +("j" ?ᤈ) +("J" ?ᤉ) +("k" ?ᤁ) +("K" ?ᤂ) +("`k" ?ᤰ) +("l" ?ᤗ) +("L" ?ᤸ) +("z" ?ᤊ) +("Z" ?ᤅ) +("x" ?ᤚ) +("X" ?᤹) +("c" ?ᤆ) +("C" ?ᤇ) +("`c" #x200C) ; ZWNJ +("v" ?᤺) +("b" ?ᤒ) +("B" ?ᤓ) +("n" ?ᤏ) +("N" ?ᤴ) +("m" ?ᤔ) +("M" ?ᤱ) +("`m" ?ᤲ) +("`?" ?᥅) +) + +(quail-define-package + "grantha" "Grantha" "𑌗𑍍𑌰" t "Grantha phonetic input method. + + `\\=`' is used to switch levels instead of Alt-Gr." + nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("``" ?₹) + ("1" ?௧) + ("`1" ?1) + ("`!" ?𑍧) + ("2" ?௨) + ("`2" ?2) + ("`@" ?𑍨) + ("3" ?௩) + ("`3" ?3) + ("`#" ?𑍩) + ("4" ?௪) + ("`4" ?4) + ("`$" ?𑍪) + ("5" ?௫) + ("`5" ?5) + ("`%" ?𑍫) + ("6" ?௬) + ("`6" ?6) + ("`^" ?𑍬) + ("7" ?௭) + ("`7" ?7) + ("8" ?௮) + ("`8" ?8) + ("9" ?௯) + ("`9" ?9) + ("0" ?௦) + ("`0" ?0) + ("q" ?𑌟) + ("Q" ?𑌠) + ("`q" ?𑍐) + ("`Q" ?𑍝) + ("w" ?𑌡) + ("W" ?𑌢) + ("`w" ?𑍞) + ("`W" ?𑍟) + ("e" ?𑍇) + ("E" ?𑍈) + ("`e" ?𑌏) + ("`E" ?𑌐) + ("r" ?𑌰) + ("R" ?𑍃) + ("`r" ?𑌋) + ("t" ?𑌤) + ("T" ?𑌥) + ("`t" ?𑍗) + ("y" ?𑌯) + ("u" ?𑍁) + ("U" ?𑍂) + ("`u" ?𑌉) + ("`U" ?𑌊) + ("i" ?𑌿) + ("I" ?𑍀) + ("`i" ?𑌇) + ("`I" ?𑌈) + ("o" ?𑍋) + ("O" ?𑍌) + ("`o" ?𑌓) + ("`O" ?𑌔) + ("p" ?𑌪) + ("P" ?𑌫) + ("`p" ?𑍴) + ("a" ?𑌾) + ("A" ?𑌆) + ("`a" ?𑌅) + ("`A" ?𑍰) + ("s" ?𑌸) + ("S" ?𑌶) + ("d" ?𑌦) + ("D" ?𑌧) + ("f" ?𑍍) + ("F" ?𑍄) + ("`f" ?𑍠) + ("g" ?𑌗) + ("G" ?𑌘) + ("h" ?𑌹) + ("H" ?𑌃) + ("j" ?𑌜) + ("J" ?𑌝) + ("k" ?𑌕) + ("K" ?𑌖) + ("`k" ?𑍱) + ("l" ?𑌲) + ("L" ?𑌳) + ("`l" ?𑍢) + ("`L" ?𑌌) + ("z" ?𑌞) + ("Z" ?𑌙) + ("`z" ?𑍣) + ("`Z" ?𑍡) + ("x" ?𑌷) + ("X" ?𑌼) + ("`x" ?𑌻) + ("c" ?𑌚) + ("C" ?𑌛) + ("`c" #x200C) ; ZWNJ + ("v" ?𑌵) + ("V" ?𑌽) + ("`v" ?𑍳) + ("b" ?𑌬) + ("B" ?𑌭) + ("n" ?𑌨) + ("N" ?𑌣) + ("`n" ?𑍲) + ("m" ?𑌮) + ("M" ?𑌂) + ("`m" ?𑌁) + ("`M" ?𑌀)) + +(quail-define-package + "lepcha" "Lepcha" "ᰛᰩᰵ" t "Lepcha phonetic input method. + + `\\=`' is used to switch levels instead of Alt-Gr." + nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("``" ?₹) + ("1" ?᱁) + ("`1" ?1) + ("2" ?᱂) + ("`2" ?2) + ("3" ?᱃) + ("`3" ?3) + ("4" ?᱄) + ("`4" ?4) + ("5" ?᱅) + ("`5" ?5) + ("6" ?᱆) + ("`6" ?6) + ("7" ?᱇) + ("`7" ?7) + ("8" ?᱈) + ("`8" ?8) + ("9" ?᱉) + ("`9" ?9) + ("0" ?᱀) + ("`0" ?0) + ("`\\" ?᰻) + ("`|" ?᰼) + ("`" ?ᱍ) + ("q" ?ᱍ) + ("Q" ?ᱎ) + ("`q" ?᰽) + ("`Q" ?᰾) + ("w" ?ᰢ) + ("W" ?ᱏ) + ("`w" ?᰿) + ("e" ?ᰬ) + ("r" ?ᰛ) + ("R" ?ᰥ) + ("`r" ?ᰲ) + ("t" ?ᰊ) + ("T" ?ᰋ) + ("`t" ?ᰳ) + ("y" ?ᰚ) + ("Y" ?ᰤ) + ("u" ?ᰪ) + ("U" ?ᰫ) + ("i" ?ᰧ) + ("o" ?ᰨ) + ("O" ?ᰩ) + ("p" ?ᰎ) + ("P" ?ᰏ) + ("`p" ?ᰐ) + ("`P" ?ᰱ) + ("a" ?ᰦ) + ("A" ?ᰣ) + ("s" ?ᰠ) + ("S" ?ᰡ) + ("d" ?ᰌ) + ("f" ?ᰑ) + ("F" ?ᰒ) + ("g" ?ᰃ) + ("G" ?ᰄ) + ("h" ?ᰝ) + ("H" ?ᰞ) + ("j" ?ᰈ) + ("k" ?ᰀ) + ("K" ?ᰁ) + ("`k" ?ᰂ) + ("`K" ?ᰭ) + ("l" ?ᰜ) + ("L" ?ᰯ) + ("z" ?ᰉ) + ("Z" ?ᰅ) + ("`z" ?ᰴ) + ("`Z" ?ᰵ) + ("x" ?ᰶ) + ("X" ?᰷) + ("c" ?ᰆ) + ("C" ?ᰇ) + ("`c" #x200C) ; ZWNJ + ("v" ?ᰟ) + ("b" ?ᰓ) + ("B" ?ᰔ) + ("n" ?ᰍ) + ("N" ?ᰰ) + ("m" ?ᰕ) + ("M" ?ᰖ) + ("`m" ?ᰮ)) + +(quail-define-package + "meetei-mayek" "Meetei Mayek" "ꯃꯤ" t "Meetei Mayek phonetic input method. + + `\\=`' is used to switch levels instead of Alt-Gr." + nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("``" ?₹) + ("1" ?꯱) + ("`1" ?1) + ("2" ?꯲) + ("`2" ?2) + ("3" ?꯳) + ("`3" ?3) + ("4" ?꯴) + ("`4" ?4) + ("5" ?꯵) + ("`5" ?5) + ("6" ?꯶) + ("`6" ?6) + ("7" ?꯷) + ("`7" ?7) + ("8" ?꯸) + ("`8" ?8) + ("9" ?꯹) + ("`9" ?9) + ("0" ?꯰) + ("`0" ?0) + ("`\\" ?꫰) + ("`|" ?꯫) + ("`" ?ꫤ) + ("q" ?ꫤ) + ("Q" ?ꫥ) + ("w" ?ꯋ) + ("W" ?ꫦ) + ("`w" ?ꫧ) + ("e" ?ꯦ) + ("E" ?ꯩ) + ("`e" ?ꫠ) + ("r" ?ꯔ) + ("t" ?ꯇ) + ("T" ?ꯊ) + ("`t" ?ꯠ) + ("y" ?ꯌ) + ("u" ?ꯨ) + ("U" ?ꯎ) + ("`u" ?ꫬ) + ("i" ?ꯤ) + ("I" ?ꯏ) + ("`i" ?ꯢ) + ("`I" ?ꫫ) + ("o" ?ꯣ) + ("O" ?ꯧ) + ("`o" ?ꫡ) + ("`O" ?ꫮ) + ("p" ?ꯄ) + ("P" ?ꯐ) + ("`p" ?ꯞ) + ("a" ?ꯥ) + ("A" ?ꯑ) + ("`a" ?ꫭ) + ("`A" ?ꫯ) + ("s" ?ꯁ) + ("S" ?ꫩ) + ("`s" ?ꫪ) + ("d" ?ꯗ) + ("D" ?ꯙ) + ("f" ?꯭) + ("F" ?꫶) + ("g" ?ꯒ) + ("G" ?ꯘ) + ("h" ?ꯍ) + ("H" ?ꫵ) + ("j" ?ꯖ) + ("J" ?ꯓ) + ("k" ?ꯀ) + ("K" ?ꯈ) + ("`k" ?ꯛ) + ("l" ?ꯂ) + ("L" ?ꯜ) + ("z" ?ꯉ) + ("Z" ?ꯡ) + ("`z" ?ꫣ) + ("x" ?ꯪ) + ("c" ?ꯆ) + ("C" ?ꫢ) + ("v" ?꯬) + ("V" ?ꫳ) + ("`v" ?ꫴ) + ("b" ?ꯕ) + ("B" ?ꯚ) + ("n" ?ꯅ) + ("N" ?ꯟ) + ("`n" ?ꫨ) + ("m" ?ꯃ) + ("M" ?ꯝ) + ("`m" ?ꫲ) + ("`?" ?꫱)) + +(provide 'indian) ;;; indian.el ends here diff --git a/lisp/leim/quail/indonesian.el b/lisp/leim/quail/indonesian.el new file mode 100644 index 00000000000..8d0d158076a --- /dev/null +++ b/lisp/leim/quail/indonesian.el @@ -0,0 +1,557 @@ +;;; indonesian.el --- Quail package for inputting Indonesian characters -*- lexical-binding: t; -*- + +;; Copyright (C) 2022 Free Software Foundation, Inc. + +;; Author: समीर सिंह Sameer Singh <lumarzeli30@gmail.com> +;; Keywords: multilingual, input method, i18n, Indonesia + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. + +;;; Commentary: + +;; Input methods for Indonesian languages. + +;;; Code: + +(require 'quail) + +;; This input method supports languages like Buginese, Balinese, Sundanese and +;; Javanese. + +(quail-define-package + "balinese" "Balinese" "ᬩ" t "Balinese phonetic input method. + + `\\=`' is used to switch levels instead of Alt-Gr. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("1" ?᭑) + ("`1" ?1) + ("`!" ?᭫) + ("2" ?᭒) + ("`2" ?2) + ("`@" ?᭬) + ("3" ?᭓) + ("`3" ?3) + ("`#" ?᭭) + ("4" ?᭔) + ("`4" ?4) + ("`$" ?᭮) + ("5" ?᭕) + ("`5" ?5) + ("`%" ?᭯) + ("6" ?᭖) + ("`6" ?6) + ("`^" ?᭰) + ("7" ?᭗) + ("`7" ?7) + ("`&" ?᭱) + ("8" ?᭘) + ("`8" ?8) + ("`*" ?᭲) + ("9" ?᭙) + ("`9" ?9) + ("`(" ?᭳) + ("0" ?᭐) + ("`0" ?0) + ("`)" ?᭼) + ("`\\" ?᭞) + ("`|" ?᭟) + ("`" ?ᬝ) + ("q" ?ᬝ) + ("Q" ?ᬞ) + ("`q" ?᭚) + ("`Q" ?᭽) + ("w" ?ᬟ) + ("W" ?ᬠ) + ("`w" ?᭛) + ("`W" ?᭾) + ("e" ?ᬾ) + ("E" ?ᬿ) + ("`e" ?ᬏ) + ("`E" ?ᬐ) + ("r" ?ᬭ) + ("R" ?ᬃ) + ("`r" ?ᬺ) + ("`R" ?ᬋ) + ("t" ?ᬢ) + ("T" ?ᬣ) + ("`t" ?᭜) + ("`T" ?᭝) + ("y" ?ᬬ) + ("Y" ?ᭂ) + ("`y" ?ᭃ) + ("`Y" ?᭴) + ("u" ?ᬸ) + ("U" ?ᬹ) + ("`u" ?ᬉ) + ("`U" ?ᬊ) + ("i" ?ᬶ) + ("I" ?ᬷ) + ("`i" ?ᬇ) + ("`I" ?ᬈ) + ("o" ?ᭀ) + ("O" ?ᭁ) + ("`o" ?ᬑ) + ("`O" ?ᬒ) + ("p" ?ᬧ) + ("P" ?ᬨ) + ("`p" ?ᭈ) + ("`P" ?᭠) + ("a" ?ᬵ) + ("A" ?ᬆ) + ("`a" ?ᬅ) + ("`A" ?᭵) + ("s" ?ᬲ) + ("S" ?ᬰ) + ("`s" ?᭡) + ("`S" ?᭢) + ("d" ?ᬤ) + ("D" ?ᬥ) + ("`d" ?᭣) + ("`D" ?᭤) + ("f" ?᭄) + ("F" ?ᬻ) + ("`f" ?ᬌ) + ("`F" ?᭶) + ("g" ?ᬕ) + ("G" ?ᬖ) + ("`g" ?᭥) + ("`G" ?᭦) + ("h" ?ᬳ) + ("H" ?ᬄ) + ("`h" ?᭧) + ("`H" ?᭨) + ("j" ?ᬚ) + ("J" ?ᬛ) + ("`j" ?ᭌ) + ("`J" ?᭩) + ("k" ?ᬓ) + ("K" ?ᬔ) + ("`k" ?ᭅ) + ("`K" ?ᭆ) + ("l" ?ᬮ) + ("L" ?ᬼ) + ("`l" ?ᬍ) + ("`L" ?᭪) + ("z" ?ᭊ) + ("Z" ?ᬽ) + ("`z" ?ᬎ) + ("`Z" ?᭷) + ("x" ?ᬱ) + ("X" ?᬴) + ("`x" ?᭸) + ("c" ?ᬘ) + ("C" ?ᬙ) + ("`c" #x200C) ; ZWNJ + ("v" ?ᬯ) + ("V" ?ᭉ) + ("`v" ?᭹) + ("`V" ?᭺) + ("b" ?ᬩ) + ("B" ?ᬪ) + ("`b" ?᭻) + ("n" ?ᬦ) + ("N" ?ᬡ) + ("`n" ?ᬗ) + ("`N" ?ᬜ) + ("m" ?ᬫ) + ("M" ?ᬂ) + ("`m" ?ᬁ) + ("`M" ?ᬀ)) + +(quail-define-package + "javanese" "Javanese" "ꦗ" t "Javanese phonetic input method. + + `\\=`' is used to switch levels instead of Alt-Gr. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("1" ?꧑) + ("`1" ?1) + ("`!" ?꧁) + ("2" ?꧒) + ("`2" ?2) + ("`@" ?꧂) + ("3" ?꧓) + ("`3" ?3) + ("`#" ?꧃) + ("4" ?꧔) + ("`4" ?4) + ("`$" ?꧄) + ("5" ?꧕) + ("`5" ?5) + ("`%" ?꧅) + ("6" ?꧖) + ("`6" ?6) + ("`^" ?꧆) + ("7" ?꧗) + ("`7" ?7) + ("`&" ?꧇) + ("8" ?꧘) + ("`8" ?8) + ("`*" ?꧈) + ("9" ?꧙) + ("`9" ?9) + ("`(" ?꧉) + ("0" ?꧐) + ("`0" ?0) + ("`)" ?꧞) + ("`\\" ?꧊) + ("`|" ?꧋) + ("`" ?ꦛ) + ("q" ?ꦛ) + ("Q" ?ꦜ) + ("`q" ?꧟) + ("`Q" ?ꧏ) + ("w" ?ꦝ) + ("W" ?ꦞ) + ("`w" ?꧌) + ("`W" ?꧍) + ("e" ?ꦺ) + ("E" ?ꦻ) + ("`e" ?ꦌ) + ("`E" ?ꦍ) + ("r" ?ꦫ) + ("R" ?ꦬ) + ("`r" ?ꦿ) + ("`R" ?ꦂ) + ("t" ?ꦠ) + ("T" ?ꦡ) + ("`t" ?ꦼ) + ("y" ?ꦪ) + ("Y" ?ꦾ) + ("u" ?ꦸ) + ("U" ?ꦹ) + ("`u" ?ꦈ) + ("`U" ?ꦅ) + ("i" ?ꦶ) + ("I" ?ꦷ) + ("`i" ?ꦆ) + ("`I" ?ꦇ) + ("o" ?ꦎ) + ("p" ?ꦥ) + ("P" ?ꦦ) + ("`p" ?ꦉ) + ("a" ?ꦴ) + ("A" ?ꦄ) + ("`a" ?ꦵ) + ("s" ?ꦱ) + ("S" ?ꦯ) + ("d" ?ꦢ) + ("D" ?ꦣ) + ("f" ?꧀) + ("F" ?ꦽ) + ("`f" ?ꦉ) + ("g" ?ꦒ) + ("G" ?ꦓ) + ("h" ?ꦲ) + ("H" ?ꦃ) + ("j" ?ꦗ) + ("J" ?ꦙ) + ("`j" ?ꦘ) + ("k" ?ꦏ) + ("K" ?ꦑ) + ("`k" ?ꦐ) + ("l" ?ꦭ) + ("L" ?ꦊ) + ("`l" ?ꦋ) + ("z" ?ꦚ) + ("Z" ?ꦔ) + ("x" ?ꦰ) + ("X" ?꦳) + ("c" ?ꦕ) + ("C" ?ꦖ) + ("`c" #x200C) ; ZWNJ + ("v" ?ꦮ) + ("V" ?ᭉ) + ("b" ?ꦧ) + ("B" ?ꦨ) + ("n" ?ꦤ) + ("N" ?ꦟ) + ("m" ?ꦩ) + ("M" ?ꦁ) + ("`m" ?ꦀ)) + +(quail-define-package + "sundanese" "Sundanese" "ᮞᮥ" t "Sundanese phonetic input method. + + `\\=`' is used to switch levels instead of Alt-Gr. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("1" ?᮱) + ("`1" ?1) + ("`!" ?᳀) + ("2" ?᮲) + ("`2" ?2) + ("`@" ?᳁) + ("3" ?᮳) + ("`3" ?3) + ("`#" ?᳂) + ("4" ?᮴) + ("`4" ?4) + ("`$" ?᳃) + ("5" ?᮵) + ("`5" ?5) + ("6" ?᮶) + ("`6" ?6) + ("7" ?᮷) + ("`7" ?7) + ("8" ?᮸) + ("`8" ?8) + ("9" ?᮹) + ("`9" ?9) + ("0" ?᮰) + ("`0" ?0) + ("`" ?ᮒ) + ("q" ?ᮋ) + ("w" ?ᮝ) + ("W" ?ᮭ) + ("e" ?ᮨ) + ("E" ?ᮩ) + ("`e" ?ᮈ) + ("`E" ?ᮉ) + ("r" ?ᮛ) + ("R" ?ᮢ) + ("`r" ?ᮁ) + ("`R" ?ᮻ) + ("t" ?ᮒ) + ("y" ?ᮚ) + ("Y" ?ᮡ) + ("u" ?ᮥ) + ("U" ?ᮅ) + ("i" ?ᮤ) + ("I" ?ᮄ) + ("o" ?ᮧ) + ("O" ?ᮇ) + ("p" ?ᮕ) + ("P" ?ᮖ) + ("a" ?ᮃ) + ("A" ?ᮦ) + ("`a" ?ᮆ) + ("s" ?ᮞ) + ("S" ?ᮯ) + ("d" ?ᮓ) + ("D" ?᳆) + ("f" ?᮪) + ("F" ?᮫) + ("g" ?ᮌ) + ("h" ?ᮠ) + ("H" ?ᮂ) + ("j" ?ᮏ) + ("k" ?ᮊ) + ("K" ?ᮮ) + ("`k" ?ᮾ) + ("`K" ?᳅) + ("l" ?ᮜ) + ("L" ?ᮣ) + ("`l" ?ᮼ) + ("`L" ?᳄) + ("z" ?ᮐ) + ("x" ?ᮟ) + ("c" ?ᮎ) + ("`c" #x200C) ; ZWNJ + ("b" ?ᮘ) + ("B" ?ᮽ) + ("`b" ?ᮺ) + ("`B" ?᳇) + ("n" ?ᮔ) + ("N" ?ᮍ) + ("`n" ?ᮑ) + ("m" ?ᮙ) + ("M" ?ᮀ) + ("`m" ?ᮿ) + ("`M" ?ᮬ)) + +(quail-define-package + "batak" "Batak" "ᯅ" t "Batak phonetic input method, + used by languages such as Karo, Toba, Pakpak, Mandailing + and Simalungun. + + `\\=`' is used to switch levels instead of Alt-Gr. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("q" ?᯼) + ("Q" ?᯽) + ("w" ?ᯋ) + ("W" ?ᯌ) + ("`w" ?ᯍ) + ("e" ?ᯧ) + ("E" ?ᯨ) + ("`e" ?ᯩ) + ("r" ?ᯒ) + ("R" ?ᯓ) + ("t" ?ᯖ) + ("T" ?ᯗ) + ("y" ?ᯛ) + ("Y" ?ᯜ) + ("u" ?ᯮ) + ("U" ?ᯥ) + ("`u" ?ᯯ) + ("i" ?ᯪ) + ("I" ?ᯫ) + ("`i" ?ᯤ) + ("o" ?ᯬ) + ("O" ?ᯭ) + ("p" ?ᯇ) + ("P" ?ᯈ) + ("a" ?ᯀ) + ("A" ?ᯁ) + ("s" ?ᯘ) + ("S" ?ᯙ) + ("`s" ?ᯚ) + ("d" ?ᯑ) + ("f" ?᯲) + ("F" ?᯳) + ("g" ?ᯎ) + ("G" ?ᯏ) + ("h" ?ᯂ) + ("H" ?ᯃ) + ("`h" ?ᯄ) + ("`H" ?ᯱ) + ("j" ?ᯐ) + ("k" ?᯦) + ("l" ?ᯞ) + ("L" ?ᯟ) + ("z" ?ᯝ) + ("Z" ?ᯰ) + ("x" ?ᯠ) + ("c" ?ᯡ) + ("v" ?᯾) + ("V" ?᯿) + ("b" ?ᯅ) + ("B" ?ᯆ) + ("n" ?ᯉ) + ("N" ?ᯊ) + ("`n" ?ᯢ) + ("m" ?ᯔ) + ("M" ?ᯕ) + ("`m" ?ᯣ)) + +(quail-define-package + "rejang" "Rejang" "ꤽꥍ" nil "Rejang phonetic input method." + nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("q" ?꥟) + ("w" ?ꥀ) + ("e" ?ꥉ) + ("E" ?ꥊ) + ("r" ?ꤽ) + ("R" ?ꥑ) + ("t" ?ꤳ) + ("y" ?ꤿ) + ("u" ?ꥈ) + ("U" ?ꥍ) + ("i" ?ꥇ) + ("o" ?ꥋ) + ("O" ?ꥌ) + ("p" ?ꤶ) + ("a" ?ꥆ) + ("A" ?ꥎ) + ("s" ?ꤼ) + ("d" ?ꤴ) + ("D" ?ꥄ) + ("f" ?꥓) + ("F" ?ꥃ) + ("g" ?ꤱ) + ("h" ?ꥁ) + ("H" ?ꥒ) + ("j" ?ꤺ) + ("k" ?ꤰ) + ("l" ?ꤾ) + ("z" ?ꤲ) + ("Z" ?ꥏ) + ("x" ?ꤻ) + ("X" ?ꥅ) + ("c" ?ꤹ) + ("b" ?ꤷ) + ("n" ?ꤵ) + ("N" ?ꥐ) + ("m" ?ꤸ) + ("M" ?ꥂ)) + +(quail-define-package + "makasar" "Makasar" "𑻪" nil "Makasar phonetic input method." + nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("q" ?𑻷) + ("Q" ?𑻸) + ("e" ?𑻵) + ("r" ?𑻭) + ("t" ?𑻦) + ("y" ?𑻬) + ("u" ?𑻴) + ("i" ?𑻳) + ("o" ?𑻶) + ("p" ?𑻣) + ("a" ?𑻱) + ("s" ?𑻰) + ("d" ?𑻧) + ("g" ?𑻡) + ("j" ?𑻪) + ("k" ?𑻠) + ("l" ?𑻮) + ("z" ?𑻢) + ("Z" ?𑻲) + ("x" ?𑻫) + ("c" ?𑻩) + ("v" ?𑻯) + ("b" ?𑻤) + ("n" ?𑻨) + ("m" ?𑻥)) + +(quail-define-package + "lontara" "Lontara" "ᨒ" nil "Lontara phonetic input method." + nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("q" ?᨞) + ("Q" ?᨟) + ("e" ?ᨙ) + ("E" ?ᨛ) + ("r" ?ᨑ) + ("t" ?ᨈ) + ("y" ?ᨐ) + ("u" ?ᨘ) + ("i" ?ᨗ) + ("o" ?ᨚ) + ("p" ?ᨄ) + ("a" ?ᨕ) + ("s" ?ᨔ) + ("d" ?ᨉ) + ("g" ?ᨁ) + ("h" ?ᨖ) + ("j" ?ᨍ) + ("k" ?ᨀ) + ("l" ?ᨒ) + ("z" ?ᨂ) + ("Z" ?ᨃ) + ("x" ?ᨎ) + ("X" ?ᨏ) + ("c" ?ᨌ) + ("v" ?ᨓ) + ("b" ?ᨅ) + ("n" ?ᨊ) + ("N" ?ᨋ) + ("m" ?ᨆ) + ("M" ?ᨇ)) + +(provide 'indonesian) +;;; indonesian.el ends here diff --git a/lisp/leim/quail/ipa.el b/lisp/leim/quail/ipa.el index 0ef6e383bd1..773dc31f9b7 100644 --- a/lisp/leim/quail/ipa.el +++ b/lisp/leim/quail/ipa.el @@ -269,7 +269,7 @@ QUAIL-KEYMAP is a cons that satisfies `quail-map-p'; TO-PREPEND is a string." (when (consp quail-keymap) (setq quail-keymap (cdr quail-keymap))) (if (or (integerp quail-keymap) - (and (fboundp 'characterp) (characterp quail-keymap))) + (characterp quail-keymap)) (setq quail-keymap (list (string quail-keymap))) (if (stringp quail-keymap) (setq quail-keymap (list quail-keymap)) @@ -278,10 +278,10 @@ string." (list (apply #'vector (mapcar - #'(lambda (entry) - (cl-assert (char-or-string-p entry) t) - (format "%s%s" to-prepend - (if (integerp entry) (string entry) entry))) + (lambda (entry) + (cl-assert (char-or-string-p entry) t) + (format "%s%s" to-prepend + (if (integerp entry) (string entry) entry))) quail-keymap)))) (defun ipa-x-sampa-underscore-implosive (input-string length) diff --git a/lisp/leim/quail/latin-post.el b/lisp/leim/quail/latin-post.el index c18ed862d4e..76ddf3c2746 100644 --- a/lisp/leim/quail/latin-post.el +++ b/lisp/leim/quail/latin-post.el @@ -215,7 +215,15 @@ Doubling the postfix separates the letter and postfix: e.g. a\\='\\=' -> a\\=' others | / | s/ -> ß Doubling the postfix separates the letter and postfix: e.g. a\\='\\=' -> a\\=' -" nil t nil nil nil nil nil nil nil nil t) +" + '(("\C-?" . quail-delete-last-char) + (">" . quail-next-translation) + ("\C-f" . quail-next-translation) + ([right] . quail-next-translation) + ("<" . quail-prev-translation) + ("\C-b" . quail-prev-translation) + ([left] . quail-prev-translation)) + t nil nil nil nil nil nil nil nil t) (quail-define-rules ("A'" ?Á) @@ -246,9 +254,9 @@ Doubling the postfix separates the letter and postfix: e.g. a\\='\\=' -> a\\=' ("R'" ?Ŕ) ("R~" ?Ř) ("S'" ?Ś) - ("S," ?Ş) + ("S," "ŞȘ") ; the second variant is for Romanian ("S~" ?Š) - ("T," ?Ţ) + ("T," "ŢȚ") ; the second variant is for Romanian ("T~" ?Ť) ("U'" ?Ú) ("U:" ?Ű) @@ -286,10 +294,10 @@ Doubling the postfix separates the letter and postfix: e.g. a\\='\\=' -> a\\=' ("r'" ?ŕ) ("r~" ?ř) ("s'" ?ś) - ("s," ?ş) + ("s," "şș") ; the second variant is for Romanian ("s/" ?ß) ("s~" ?š) - ("t," ?ţ) + ("t," "ţț") ; the second variant is for Romanian ("t~" ?ť) ("u'" ?ú) ("u:" ?ű) @@ -2231,6 +2239,7 @@ of characters from a single Latin-N charset. tilde | ~ | a~ -> ã cedilla | , | c, -> ç ogonek | , | a, -> ą + macron | - | a- -> ā g- -> ḡ e/- -> ǣ -- -> ¯ breve | ~ | a~ -> ă caron | ~ | c~ -> č dbl. acute | : | o: -> ő @@ -2238,14 +2247,45 @@ of characters from a single Latin-N charset. dot | . | z. -> ż stroke | / | d/ -> đ nordic | / | d/ -> ð t/ -> þ a/ -> å e/ -> æ o/ -> ø + symbols | ^ | r^ -> ® t^ -> ™ + super | ^ | 0^ -> ⁰ 1^ -> ¹ +^ -> ⁺ -^ -> ⁻ + subscript | _ | 0_ -> ₀ 1_ -> ₁ +_ -> ₊ -_ -> ₋ others | / | s/ -> ß ?/ -> ¿ !/ -> ¡ // -> ° o/ -> œ + | / | 2/ -> ½ 3/ -> ¾ 4/ -> ?¼ | various | << -> « >> -> » o_ -> º a_ -> ª Doubling the postfix separates the letter and postfix: e.g. a\\='\\=' -> a\\=' " nil t nil nil nil nil nil nil nil nil t) -;; Fixme: ¦ § ¨ © ¬ ® ¯ ± ² ³ ´ µ ¶ · ¸ ¹ ¼ ½ ¾ × ÷ +;; Fixme: ¦ § ¨ © ¬ ± ´ µ ¶ · ¸ × ÷ (quail-define-rules + ("2/" ?½) + ("3/" ?¾) + ("4/" ?¼) + ("0^" ?⁰) + ("1^" ?¹) + ("2^" ?²) + ("3^" ?³) + ("4^" ?⁴) + ("5^" ?⁵) + ("6^" ?⁶) + ("7^" ?⁷) + ("8^" ?⁸) + ("9^" ?⁹) + ("+^" ?⁺) + ("-^" ?⁻) + ("0_" ?₀) + ("1_" ?₁) + ("2_" ?₂) + ("3_" ?₃) + ("4_" ?₄) + ("5_" ?₅) + ("6_" ?₆) + ("7_" ?₇) + ("8_" ?₈) + ("9_" ?₉) + ("+_" ?₊) + ("-_" ?₋) (" _" ? ) ("!/" ?¡) ("//" ?°) @@ -2276,11 +2316,13 @@ Doubling the postfix separates the letter and postfix: e.g. a\\='\\=' -> a\\=' ("E-" ?Ē) ("E." ?Ė) ("E/" ?Æ) + ("E/-" ?Ǣ) ("E\"" ?Ë) ("E^" ?Ê) ("E`" ?È) ("E~" ?Ě) ("G," ?Ģ) + ("G-" ?Ḡ) ("G." ?Ġ) ("G^" ?Ĝ) ("G~" ?Ğ) @@ -2366,12 +2408,14 @@ Doubling the postfix separates the letter and postfix: e.g. a\\='\\=' -> a\\=' ("e-" ?ē) ("e." ?ė) ("e/" ?æ) + ("e/-" ?ǣ) ("e\"" ?ë) ("e^" ?ê) ("e`" ?è) ("e~" ?ě) ("e=" ?€) ("g," ?ģ) + ("g-" ?ḡ) ("g." ?ġ) ("g^" ?ĝ) ("g~" ?ğ) @@ -2409,6 +2453,7 @@ Doubling the postfix separates the letter and postfix: e.g. a\\='\\=' -> a\\=' ("o~" ?õ) ("r'" ?ŕ) ("r," ?ŗ) + ("r^" ?®) ("r~" ?ř) ("s'" ?ś) ("s," ?ş) @@ -2418,6 +2463,7 @@ Doubling the postfix separates the letter and postfix: e.g. a\\='\\=' -> a\\=' ("t," ?ţ) ("t/" ?þ) ("t/" ?ŧ) + ("t^" ?™) ("t~" ?ť) ("u'" ?ú) ("u," ?ų) @@ -2434,7 +2480,35 @@ Doubling the postfix separates the letter and postfix: e.g. a\\='\\=' -> a\\=' ("z'" ?ź) ("z." ?ż) ("z~" ?ž) - + ("--" ?¯) + + ("2//" ["2/"]) + ("3//" ["3/"]) + ("4//" ["4/"]) + ("0^^" ["0^"]) + ("1^^" ["1^"]) + ("2^^" ["2^"]) + ("3^^" ["3^"]) + ("4^^" ["4^"]) + ("5^^" ["5^"]) + ("6^^" ["6^"]) + ("7^^" ["7^"]) + ("8^^" ["8^"]) + ("9^^" ["9^"]) + ("+^^" ["+^"]) + ("-^^" ["-^"]) + ("0__" ["0_"]) + ("1__" ["1_"]) + ("2__" ["2_"]) + ("3__" ["3_"]) + ("4__" ["4_"]) + ("5__" ["5_"]) + ("6__" ["6_"]) + ("7__" ["7_"]) + ("8__" ["8_"]) + ("9__" ["9_"]) + ("+__" ["+_"]) + ("-__" ["-_"]) (" __" [" _"]) ("!//" ["!/"]) ("///" ["//"]) @@ -2462,11 +2536,13 @@ Doubling the postfix separates the letter and postfix: e.g. a\\='\\=' -> a\\=' ("E--" ["E-"]) ("E.." ["E."]) ("E//" ["E/"]) + ("E/--" ["E/-"]) ("E\"\"" ["E\""]) ("E^^" ["E^"]) ("E``" ["E`"]) ("E~~" ["E~"]) ("G,," ["G,"]) + ("G--" ["G-"]) ("G.." ["G."]) ("G^^" ["G^"]) ("G~~" ["G~"]) @@ -2545,12 +2621,14 @@ Doubling the postfix separates the letter and postfix: e.g. a\\='\\=' -> a\\=' ("e--" ["e-"]) ("e.." ["e."]) ("e//" ["e/"]) + ("e/--" ["e/-"]) ("e\"\"" ["e\""]) ("e^^" ["e^"]) ("e``" ["e`"]) ("e==" ["e="]) ("e~~" ["e~"]) ("g,," ["g,"]) + ("g--" ["g-"]) ("g.." ["g."]) ("g^^" ["g^"]) ("g~~" ["g~"]) @@ -2609,6 +2687,7 @@ Doubling the postfix separates the letter and postfix: e.g. a\\='\\=' -> a\\=' ("z''" ["z'"]) ("z.." ["z."]) ("z~~" ["z~"]) + ("---" ["--"]) ) ;; Derived from Slovenian.kmap from Yudit diff --git a/lisp/leim/quail/latin-pre.el b/lisp/leim/quail/latin-pre.el index f6c63cb0552..48e0ce9efc9 100644 --- a/lisp/leim/quail/latin-pre.el +++ b/lisp/leim/quail/latin-pre.el @@ -497,7 +497,15 @@ Key translation rules are: cedilla | \\=` | \\=`c -> ç \\=`e -> ?ę misc | \\=' \\=` ~ | \\='d -> đ \\=`l -> ł \\=`z -> ż ~o -> ő ~u -> ű symbol | ~ | \\=`. -> ˙ ~~ -> ˘ ~. -> ?¸ -" nil t nil nil nil nil nil nil nil nil t) +" + '(("\C-?" . quail-delete-last-char) + (">" . quail-next-translation) + ("\C-f" . quail-next-translation) + ([right] . quail-next-translation) + ("<" . quail-prev-translation) + ("\C-b" . quail-prev-translation) + ([left] . quail-prev-translation)) + t nil nil nil nil nil nil nil nil t) (quail-define-rules ("'A" ?Á) @@ -532,15 +540,15 @@ Key translation rules are: ("`C" ?Ç) ("`E" ?Ę) ("`L" ?Ł) - ("`S" ?Ş) - ("`T" ?Ţ) + ("`S" "ŞȘ") + ("`T" "ŢȚ") ; the second variant is for Romanian ("`Z" ?Ż) ("`a" ?ą) ("`l" ?ł) ("`c" ?ç) ("`e" ?ę) - ("`s" ?ş) - ("`t" ?ţ) + ("`s" "şș") + ("`t" "ţț") ; the second variant is for Romanian ("`z" ?ż) ("``" ?Ş) ("`." ?˙) @@ -1096,14 +1104,32 @@ of characters from a single Latin-N charset. cedilla | , ~ | ,c -> ç ~c -> ç caron | ~ | ~c -> č ~g -> ğ breve | ~ | ~a -> ă + macron | - | -a -> ā -/e -> ǣ -- -> ¯ dot above | / . | /g -> ġ .g -> ġ misc | \" ~ / | \"s -> ß ~d -> ð ~t -> þ /a -> å /e -> æ /o -> ø symbol | ~ | ~> -> » ~< -> « ~! -> ¡ ~? -> ¿ ~~ -> ¸ symbol | _ / | _o -> º _a -> ª // -> ° /\\ -> × _y -> ¥ - symbol | ^ | ^r -> ® ^c -> © ^1 -> ¹ ^2 -> ² ^3 -> ³ + symbol | ^ | ^r -> ® ^t -> ™ ^c -> © ^1 -> ¹ ^2 -> ² ^3 -> ³ " nil t nil nil nil nil nil nil nil nil t) (quail-define-rules + ("--" ?¯) + ("-A" ?Ā) + ("-a" ?ā) + ("-E" ?Ē) + ("-e" ?ē) + ("-/E" ?Ǣ) + ("-/e" ?ǣ) + ("-G" ?Ḡ) + ("-g" ?ḡ) + ("-I" ?Ī) + ("-i" ?ī) + ("-O" ?Ō) + ("-o" ?ō) + ("-U" ?Ū) + ("-u" ?ū) + ("-Y" ?Ȳ) + ("-y" ?ȳ) ("' " ?') ("''" ?´) ("'A" ?Á) @@ -1189,9 +1215,16 @@ of characters from a single Latin-N charset. ("\"w" ?ẅ) ("\"y" ?ÿ) ("^ " ?^) + ("^0" ?⁰) ("^1" ?¹) ("^2" ?²) ("^3" ?³) + ("^4" ?⁴) + ("^5" ?⁵) + ("^6" ?⁶) + ("^7" ?⁷) + ("^8" ?⁸) + ("^9" ?⁹) ("^A" ?Â) ("^C" ?Ĉ) ("^E" ?Ê) @@ -1216,9 +1249,24 @@ of characters from a single Latin-N charset. ("^o" ?ô) ("^r" ?®) ("^s" ?ŝ) + ("^t" ?™) ("^u" ?û) ("^w" ?ŵ) ("^y" ?ŷ) + ("^+" ?⁺) + ("^-" ?⁻) + ("_0" ?₀) + ("_1" ?₁) + ("_2" ?₂) + ("_3" ?₃) + ("_4" ?₄) + ("_5" ?₅) + ("_6" ?₆) + ("_7" ?₇) + ("_8" ?₈) + ("_9" ?₉) + ("_++" ?₊) + ("_-" ?₋) ("_+" ?±) ("_:" ?÷) ("_a" ?ª) diff --git a/lisp/leim/quail/misc-lang.el b/lisp/leim/quail/misc-lang.el new file mode 100644 index 00000000000..0c4a0d4ce40 --- /dev/null +++ b/lisp/leim/quail/misc-lang.el @@ -0,0 +1,1184 @@ +;;; misc-lang.el --- Quail package for inputting Miscellaneous characters -*- lexical-binding: t; -*- + +;; Copyright (C) 2022 Free Software Foundation, Inc. + +;; Author: समीर सिंह Sameer Singh <lumarzeli30@gmail.com> +;; Keywords: multilingual, input method, i18n, Miscellaneous + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. + +;;; Commentary: + +;; Input methods for Miscellaneous languages. + +;;; Code: + +(require 'quail) + +(quail-define-package + "hanifi-rohingya" "Hanifi Rohingya" "𐴌𐴟" t "Hanifi Rohingya phonetic input method. + + `\\=`' is used to switch levels instead of Alt-Gr. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("1" ?𐴱) + ("`1" ?1) + ("2" ?𐴲) + ("`2" ?2) + ("3" ?𐴳) + ("`3" ?3) + ("4" ?𐴴) + ("`4" ?4) + ("5" ?𐴵) + ("`5" ?5) + ("6" ?𐴶) + ("`6" ?6) + ("7" ?𐴷) + ("`7" ?7) + ("8" ?𐴸) + ("`8" ?8) + ("9" ?𐴹) + ("`9" ?9) + ("0" ?𐴰) + ("`0" ?0) + ("q" ?𐴄) + ("w" ?𐴋) + ("W" ?𐴍) + ("e" ?𐴠) + ("E" ?𐴤) + ("r" ?𐴌) + ("R" ?𐴥) + ("t" ?𐴃) + ("T" ?𐴦) + ("y" ?𐴘) + ("Y" ?𐴙) + ("u" ?𐴟) + ("U" ?𐴧) + ("i" ?𐴞) + ("o" ?𐴡) + ("p" ?𐴂) + ("a" ?𐴀) + ("A" ?𐴝) + ("s" ?𐴏) + ("S" ?𐴐) + ("d" ?𐴊) + ("f" ?𐴉) + ("F" ?𐴢) + ("g" ?𐴒) + ("h" ?𐴇) + ("j" ?𐴅) + ("k" ?𐴑) + ("K" ?𐴈) + ("l" ?𐴓) + ("z" ?𐴎) + ("c" ?𐴆) + ("C" #x200C) ; ZWNJ + ("v" ?𐴖) + ("V" ?𐴗) + ("`v" ?𐴜) + ("b" ?𐴁) + ("n" ?𐴕) + ("N" ?𐴚) + ("`n" ?𐴛) + ("`N" ?𐴣) + ("m" ?𐴔)) + +;; The Kharoṣṭhī input method is based on the Kyoto-Harvard input +;; conventions for Sanskrit, extended for Kharoṣṭhī special characters. +;; Author: Stefan Baums <baums@gandhari.org>. +(quail-define-package + "kharoshthi" "Kharoshthi" "𐨑" nil + "Kharoṣṭhī input method." nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("a" ["𐨀"]) + ("i" ["𐨀𐨁"]) + ("u" ["𐨀𐨂"]) + ("R" ["𐨀𐨃"]) + ("e" ["𐨀𐨅"]) + ("o" ["𐨀𐨆"]) + + ("k" ["𐨐𐨿"]) + ("ka" ["𐨐"]) + ("ki" ["𐨐𐨁"]) + ("ku" ["𐨐𐨂"]) + ("kR" ["𐨐𐨃"]) + ("ke" ["𐨐𐨅"]) + ("ko" ["𐨐𐨆"]) + ("k_" ["𐨐𐨹𐨿"]) + ("k_a" ["𐨐𐨹"]) + ("k_i" ["𐨐𐨹𐨁"]) + ("k_u" ["𐨐𐨹𐨂"]) + ("k_R" ["𐨐𐨹𐨃"]) + ("k_e" ["𐨐𐨹𐨅"]) + ("k_o" ["𐨐𐨹𐨆"]) + ("k=" ["𐨐𐨿𐨸"]) + ("k=a" ["𐨐𐨸"]) + ("k=i" ["𐨐𐨸𐨁"]) + ("k=u" ["𐨐𐨸𐨂"]) + ("k=R" ["𐨐𐨸𐨃"]) + ("k=e" ["𐨐𐨸𐨅"]) + ("k=o" ["𐨐𐨸𐨆"]) + ("k_=" ["𐨐𐨹𐨿𐨸"]) + ("k_=a" ["𐨐𐨹𐨸"]) + ("k_=i" ["𐨐𐨹𐨸𐨁"]) + ("k_=u" ["𐨐𐨹𐨸𐨂"]) + ("k_=R" ["𐨐𐨹𐨸𐨃"]) + ("k_=e" ["𐨐𐨹𐨸𐨅"]) + ("k_=o" ["𐨐𐨹𐨸𐨆"]) + + ("kh" ["𐨑𐨿"]) + ("kha" ["𐨑"]) + ("khi" ["𐨑𐨁"]) + ("khu" ["𐨑𐨂"]) + ("khR" ["𐨑𐨃"]) + ("khe" ["𐨑𐨅"]) + ("kho" ["𐨑𐨆"]) + ("kh_" ["𐨑𐨹𐨿"]) + ("kh_a" ["𐨑𐨹"]) + ("kh_i" ["𐨑𐨹𐨁"]) + ("kh_u" ["𐨑𐨹𐨂"]) + ("kh_R" ["𐨑𐨹𐨃"]) + ("kh_e" ["𐨑𐨹𐨅"]) + ("kh_o" ["𐨑𐨹𐨆"]) + ("kh=" ["𐨑𐨿𐨸"]) + ("kh=a" ["𐨑𐨸"]) + ("kh=i" ["𐨑𐨸𐨁"]) + ("kh=u" ["𐨑𐨸𐨂"]) + ("kh=R" ["𐨑𐨸𐨃"]) + ("kh=e" ["𐨑𐨸𐨅"]) + ("kh=o" ["𐨑𐨸𐨆"]) + ("kh_=" ["𐨑𐨹𐨿𐨸"]) + ("kh_=a" ["𐨑𐨹𐨸"]) + ("kh_=i" ["𐨑𐨹𐨸𐨁"]) + ("kh_=u" ["𐨑𐨹𐨸𐨂"]) + ("kh_=R" ["𐨑𐨹𐨸𐨃"]) + ("kh_=e" ["𐨑𐨹𐨸𐨅"]) + ("kh_=o" ["𐨑𐨹𐨸𐨆"]) + + ("g" ["𐨒𐨿"]) + ("ga" ["𐨒"]) + ("gi" ["𐨒𐨁"]) + ("gu" ["𐨒𐨂"]) + ("gR" ["𐨒𐨃"]) + ("ge" ["𐨒𐨅"]) + ("go" ["𐨒𐨆"]) + ("g_" ["𐨒𐨹𐨿"]) + ("g_a" ["𐨒𐨹"]) + ("g_i" ["𐨒𐨹𐨁"]) + ("g_u" ["𐨒𐨹𐨂"]) + ("g_R" ["𐨒𐨹𐨃"]) + ("g_e" ["𐨒𐨹𐨅"]) + ("g_o" ["𐨒𐨹𐨆"]) + ("g=" ["𐨒𐨿𐨸"]) + ("g=a" ["𐨒𐨸"]) + ("g=i" ["𐨒𐨸𐨁"]) + ("g=u" ["𐨒𐨸𐨂"]) + ("g=R" ["𐨒𐨸𐨃"]) + ("g=e" ["𐨒𐨸𐨅"]) + ("g=o" ["𐨒𐨸𐨆"]) + ("g_=" ["𐨒𐨹𐨿𐨸"]) + ("g_=a" ["𐨒𐨹𐨸"]) + ("g_=i" ["𐨒𐨹𐨸𐨁"]) + ("g_=u" ["𐨒𐨹𐨸𐨂"]) + ("g_=R" ["𐨒𐨹𐨸𐨃"]) + ("g_=e" ["𐨒𐨹𐨸𐨅"]) + ("g_=o" ["𐨒𐨹𐨸𐨆"]) + + ("gh" ["𐨓𐨿"]) + ("gha" ["𐨓"]) + ("ghi" ["𐨓𐨁"]) + ("ghu" ["𐨓𐨂"]) + ("ghR" ["𐨓𐨃"]) + ("ghe" ["𐨓𐨅"]) + ("gho" ["𐨓𐨆"]) + ("gh_" ["𐨓𐨹𐨿"]) + ("gh_a" ["𐨓𐨹"]) + ("gh_i" ["𐨓𐨹𐨁"]) + ("gh_u" ["𐨓𐨹𐨂"]) + ("gh_R" ["𐨓𐨹𐨃"]) + ("gh_e" ["𐨓𐨹𐨅"]) + ("gh_o" ["𐨓𐨹𐨆"]) + ("gh=" ["𐨓𐨿𐨸"]) + ("gh=a" ["𐨓𐨸"]) + ("gh=i" ["𐨓𐨸𐨁"]) + ("gh=u" ["𐨓𐨸𐨂"]) + ("gh=R" ["𐨓𐨸𐨃"]) + ("gh=e" ["𐨓𐨸𐨅"]) + ("gh=o" ["𐨓𐨸𐨆"]) + ("gh_=" ["𐨓𐨹𐨿𐨸"]) + ("gh_=a" ["𐨓𐨹𐨸"]) + ("gh_=i" ["𐨓𐨹𐨸𐨁"]) + ("gh_=u" ["𐨓𐨹𐨸𐨂"]) + ("gh_=R" ["𐨓𐨹𐨸𐨃"]) + ("gh_=e" ["𐨓𐨹𐨸𐨅"]) + ("gh_=o" ["𐨓𐨹𐨸𐨆"]) + + ("c" ["𐨕𐨿"]) + ("ca" ["𐨕"]) + ("ci" ["𐨕𐨁"]) + ("cu" ["𐨕𐨂"]) + ("cR" ["𐨕𐨃"]) + ("ce" ["𐨕𐨅"]) + ("co" ["𐨕𐨆"]) + ("c_" ["𐨕𐨹𐨿"]) + ("c_a" ["𐨕𐨹"]) + ("c_i" ["𐨕𐨹𐨁"]) + ("c_u" ["𐨕𐨹𐨂"]) + ("c_R" ["𐨕𐨹𐨃"]) + ("c_e" ["𐨕𐨹𐨅"]) + ("c_o" ["𐨕𐨹𐨆"]) + ("c=" ["𐨕𐨿𐨸"]) + ("c=a" ["𐨕𐨸"]) + ("c=i" ["𐨕𐨸𐨁"]) + ("c=u" ["𐨕𐨸𐨂"]) + ("c=R" ["𐨕𐨸𐨃"]) + ("c=e" ["𐨕𐨸𐨅"]) + ("c=o" ["𐨕𐨸𐨆"]) + ("c_=" ["𐨕𐨹𐨿𐨸"]) + ("c_=a" ["𐨕𐨹𐨸"]) + ("c_=i" ["𐨕𐨹𐨸𐨁"]) + ("c_=u" ["𐨕𐨹𐨸𐨂"]) + ("c_=R" ["𐨕𐨹𐨸𐨃"]) + ("c_=e" ["𐨕𐨹𐨸𐨅"]) + ("c_=o" ["𐨕𐨹𐨸𐨆"]) + + ("ch" ["𐨖𐨿"]) + ("cha" ["𐨖"]) + ("chi" ["𐨖𐨁"]) + ("chu" ["𐨖𐨂"]) + ("chR" ["𐨖𐨃"]) + ("che" ["𐨖𐨅"]) + ("cho" ["𐨖𐨆"]) + ("ch_" ["𐨖𐨹𐨿"]) + ("ch_a" ["𐨖𐨹"]) + ("ch_i" ["𐨖𐨹𐨁"]) + ("ch_u" ["𐨖𐨹𐨂"]) + ("ch_R" ["𐨖𐨹𐨃"]) + ("ch_e" ["𐨖𐨹𐨅"]) + ("ch_o" ["𐨖𐨹𐨆"]) + ("ch=" ["𐨖𐨿𐨸"]) + ("ch=a" ["𐨖𐨸"]) + ("ch=i" ["𐨖𐨸𐨁"]) + ("ch=u" ["𐨖𐨸𐨂"]) + ("ch=R" ["𐨖𐨸𐨃"]) + ("ch=e" ["𐨖𐨸𐨅"]) + ("ch=o" ["𐨖𐨸𐨆"]) + ("ch_=" ["𐨖𐨹𐨿𐨸"]) + ("ch_=a" ["𐨖𐨹𐨸"]) + ("ch_=i" ["𐨖𐨹𐨸𐨁"]) + ("ch_=u" ["𐨖𐨹𐨸𐨂"]) + ("ch_=R" ["𐨖𐨹𐨸𐨃"]) + ("ch_=e" ["𐨖𐨹𐨸𐨅"]) + ("ch_=o" ["𐨖𐨹𐨸𐨆"]) + + ("j" ["𐨗𐨿"]) + ("ja" ["𐨗"]) + ("ji" ["𐨗𐨁"]) + ("ju" ["𐨗𐨂"]) + ("jR" ["𐨗𐨃"]) + ("je" ["𐨗𐨅"]) + ("jo" ["𐨗𐨆"]) + ("j_" ["𐨗𐨹𐨿"]) + ("j_a" ["𐨗𐨹"]) + ("j_i" ["𐨗𐨹𐨁"]) + ("j_u" ["𐨗𐨹𐨂"]) + ("j_R" ["𐨗𐨹𐨃"]) + ("j_e" ["𐨗𐨹𐨅"]) + ("j_o" ["𐨗𐨹𐨆"]) + ("j=" ["𐨗𐨿𐨸"]) + ("j=a" ["𐨗𐨸"]) + ("j=i" ["𐨗𐨸𐨁"]) + ("j=u" ["𐨗𐨸𐨂"]) + ("j=R" ["𐨗𐨸𐨃"]) + ("j=e" ["𐨗𐨸𐨅"]) + ("j=o" ["𐨗𐨸𐨆"]) + ("j_=" ["𐨗𐨹𐨿𐨸"]) + ("j_=a" ["𐨗𐨹𐨸"]) + ("j_=i" ["𐨗𐨹𐨸𐨁"]) + ("j_=u" ["𐨗𐨹𐨸𐨂"]) + ("j_=R" ["𐨗𐨹𐨸𐨃"]) + ("j_=e" ["𐨗𐨹𐨸𐨅"]) + ("j_=o" ["𐨗𐨹𐨸𐨆"]) + + ("jh" ["𐨰𐨿"]) + ("jha" ["𐨰"]) + ("jhi" ["𐨰𐨁"]) + ("jhu" ["𐨰𐨂"]) + ("jhR" ["𐨰𐨃"]) + ("jhe" ["𐨰𐨅"]) + ("jho" ["𐨰𐨆"]) + ("jh_" ["𐨰𐨹𐨿"]) + ("jh_a" ["𐨰𐨹"]) + ("jh_i" ["𐨰𐨹𐨁"]) + ("jh_u" ["𐨰𐨹𐨂"]) + ("jh_R" ["𐨰𐨹𐨃"]) + ("jh_e" ["𐨰𐨹𐨅"]) + ("jh_o" ["𐨰𐨹𐨆"]) + ("jh=" ["𐨰𐨿𐨸"]) + ("jh=a" ["𐨰𐨸"]) + ("jh=i" ["𐨰𐨸𐨁"]) + ("jh=u" ["𐨰𐨸𐨂"]) + ("jh=R" ["𐨰𐨸𐨃"]) + ("jh=e" ["𐨰𐨸𐨅"]) + ("jh=o" ["𐨰𐨸𐨆"]) + ("jh_=" ["𐨰𐨹𐨿𐨸"]) + ("jh_=a" ["𐨰𐨹𐨸"]) + ("jh_=i" ["𐨰𐨹𐨸𐨁"]) + ("jh_=u" ["𐨰𐨹𐨸𐨂"]) + ("jh_=R" ["𐨰𐨹𐨸𐨃"]) + ("jh_=e" ["𐨰𐨹𐨸𐨅"]) + ("jh_=o" ["𐨰𐨹𐨸𐨆"]) + + ("J" ["𐨙𐨿"]) + ("Ja" ["𐨙"]) + ("Ji" ["𐨙𐨁"]) + ("Ju" ["𐨙𐨂"]) + ("JR" ["𐨙𐨃"]) + ("Je" ["𐨙𐨅"]) + ("Jo" ["𐨙𐨆"]) + ("J_" ["𐨙𐨹𐨿"]) + ("J_a" ["𐨙𐨹"]) + ("J_i" ["𐨙𐨹𐨁"]) + ("J_u" ["𐨙𐨹𐨂"]) + ("J_R" ["𐨙𐨹𐨃"]) + ("J_e" ["𐨙𐨹𐨅"]) + ("J_o" ["𐨙𐨹𐨆"]) + ("J=" ["𐨙𐨿𐨸"]) + ("J=a" ["𐨙𐨸"]) + ("J=i" ["𐨙𐨸𐨁"]) + ("J=u" ["𐨙𐨸𐨂"]) + ("J=R" ["𐨙𐨸𐨃"]) + ("J=e" ["𐨙𐨸𐨅"]) + ("J=o" ["𐨙𐨸𐨆"]) + ("J_=" ["𐨙𐨹𐨿𐨸"]) + ("J_=a" ["𐨙𐨹𐨸"]) + ("J_=i" ["𐨙𐨹𐨸𐨁"]) + ("J_=u" ["𐨙𐨹𐨸𐨂"]) + ("J_=R" ["𐨙𐨹𐨸𐨃"]) + ("J_=e" ["𐨙𐨹𐨸𐨅"]) + ("J_=o" ["𐨙𐨹𐨸𐨆"]) + + ("T" ["𐨚𐨿"]) + ("Ta" ["𐨚"]) + ("Ti" ["𐨚𐨁"]) + ("Tu" ["𐨚𐨂"]) + ("TR" ["𐨚𐨃"]) + ("Te" ["𐨚𐨅"]) + ("To" ["𐨚𐨆"]) + ("T_" ["𐨚𐨹𐨿"]) + ("T_a" ["𐨚𐨹"]) + ("T_i" ["𐨚𐨹𐨁"]) + ("T_u" ["𐨚𐨹𐨂"]) + ("T_R" ["𐨚𐨹𐨃"]) + ("T_e" ["𐨚𐨹𐨅"]) + ("T_o" ["𐨚𐨹𐨆"]) + ("T=" ["𐨚𐨿𐨸"]) + ("T=a" ["𐨚𐨸"]) + ("T=i" ["𐨚𐨸𐨁"]) + ("T=u" ["𐨚𐨸𐨂"]) + ("T=R" ["𐨚𐨸𐨃"]) + ("T=e" ["𐨚𐨸𐨅"]) + ("T=o" ["𐨚𐨸𐨆"]) + ("T_=" ["𐨚𐨹𐨿𐨸"]) + ("T_=a" ["𐨚𐨹𐨸"]) + ("T_=i" ["𐨚𐨹𐨸𐨁"]) + ("T_=u" ["𐨚𐨹𐨸𐨂"]) + ("T_=R" ["𐨚𐨹𐨸𐨃"]) + ("T_=e" ["𐨚𐨹𐨸𐨅"]) + ("T_=o" ["𐨚𐨹𐨸𐨆"]) + + ("Th" ["𐨛𐨿"]) + ("Tha" ["𐨛"]) + ("Thi" ["𐨛𐨁"]) + ("Thu" ["𐨛𐨂"]) + ("ThR" ["𐨛𐨃"]) + ("The" ["𐨛𐨅"]) + ("Tho" ["𐨛𐨆"]) + ("Th_" ["𐨛𐨹𐨿"]) + ("Th_a" ["𐨛𐨹"]) + ("Th_i" ["𐨛𐨹𐨁"]) + ("Th_u" ["𐨛𐨹𐨂"]) + ("Th_R" ["𐨛𐨹𐨃"]) + ("Th_e" ["𐨛𐨹𐨅"]) + ("Th_o" ["𐨛𐨹𐨆"]) + ("Th=" ["𐨛𐨿𐨸"]) + ("Th=a" ["𐨛𐨸"]) + ("Th=i" ["𐨛𐨸𐨁"]) + ("Th=u" ["𐨛𐨸𐨂"]) + ("Th=R" ["𐨛𐨸𐨃"]) + ("Th=e" ["𐨛𐨸𐨅"]) + ("Th=o" ["𐨛𐨸𐨆"]) + ("Th_=" ["𐨛𐨹𐨿𐨸"]) + ("Th_=a" ["𐨛𐨹𐨸"]) + ("Th_=i" ["𐨛𐨹𐨸𐨁"]) + ("Th_=u" ["𐨛𐨹𐨸𐨂"]) + ("Th_=R" ["𐨛𐨹𐨸𐨃"]) + ("Th_=e" ["𐨛𐨹𐨸𐨅"]) + ("Th_=o" ["𐨛𐨹𐨸𐨆"]) + + ("D" ["𐨜𐨿"]) + ("Da" ["𐨜"]) + ("Di" ["𐨜𐨁"]) + ("Du" ["𐨜𐨂"]) + ("DR" ["𐨜𐨃"]) + ("De" ["𐨜𐨅"]) + ("Do" ["𐨜𐨆"]) + ("D_" ["𐨜𐨹𐨿"]) + ("D_a" ["𐨜𐨹"]) + ("D_i" ["𐨜𐨹𐨁"]) + ("D_u" ["𐨜𐨹𐨂"]) + ("D_R" ["𐨜𐨹𐨃"]) + ("D_e" ["𐨜𐨹𐨅"]) + ("D_o" ["𐨜𐨹𐨆"]) + ("D=" ["𐨜𐨿𐨸"]) + ("D=a" ["𐨜𐨸"]) + ("D=i" ["𐨜𐨸𐨁"]) + ("D=u" ["𐨜𐨸𐨂"]) + ("D=R" ["𐨜𐨸𐨃"]) + ("D=e" ["𐨜𐨸𐨅"]) + ("D=o" ["𐨜𐨸𐨆"]) + ("D_=" ["𐨜𐨹𐨿𐨸"]) + ("D_=a" ["𐨜𐨹𐨸"]) + ("D_=i" ["𐨜𐨹𐨸𐨁"]) + ("D_=u" ["𐨜𐨹𐨸𐨂"]) + ("D_=R" ["𐨜𐨹𐨸𐨃"]) + ("D_=e" ["𐨜𐨹𐨸𐨅"]) + ("D_=o" ["𐨜𐨹𐨸𐨆"]) + + ("Dh" ["𐨝𐨿"]) + ("Dha" ["𐨝"]) + ("Dhi" ["𐨝𐨁"]) + ("Dhu" ["𐨝𐨂"]) + ("DhR" ["𐨝𐨃"]) + ("Dhe" ["𐨝𐨅"]) + ("Dho" ["𐨝𐨆"]) + ("Dh_" ["𐨝𐨹𐨿"]) + ("Dh_a" ["𐨝𐨹"]) + ("Dh_i" ["𐨝𐨹𐨁"]) + ("Dh_u" ["𐨝𐨹𐨂"]) + ("Dh_R" ["𐨝𐨹𐨃"]) + ("Dh_e" ["𐨝𐨹𐨅"]) + ("Dh_o" ["𐨝𐨹𐨆"]) + ("Dh=" ["𐨝𐨿𐨸"]) + ("Dh=a" ["𐨝𐨸"]) + ("Dh=i" ["𐨝𐨸𐨁"]) + ("Dh=u" ["𐨝𐨸𐨂"]) + ("Dh=R" ["𐨝𐨸𐨃"]) + ("Dh=e" ["𐨝𐨸𐨅"]) + ("Dh=o" ["𐨝𐨸𐨆"]) + ("Dh_=" ["𐨝𐨹𐨿𐨸"]) + ("Dh_=a" ["𐨝𐨹𐨸"]) + ("Dh_=i" ["𐨝𐨹𐨸𐨁"]) + ("Dh_=u" ["𐨝𐨹𐨸𐨂"]) + ("Dh_=R" ["𐨝𐨹𐨸𐨃"]) + ("Dh_=e" ["𐨝𐨹𐨸𐨅"]) + ("Dh_=o" ["𐨝𐨹𐨸𐨆"]) + + ("N" ["𐨞𐨿"]) + ("Na" ["𐨞"]) + ("Ni" ["𐨞𐨁"]) + ("Nu" ["𐨞𐨂"]) + ("NR" ["𐨞𐨃"]) + ("Ne" ["𐨞𐨅"]) + ("No" ["𐨞𐨆"]) + ("N_" ["𐨞𐨹𐨿"]) + ("N_a" ["𐨞𐨹"]) + ("N_i" ["𐨞𐨹𐨁"]) + ("N_u" ["𐨞𐨹𐨂"]) + ("N_R" ["𐨞𐨹𐨃"]) + ("N_e" ["𐨞𐨹𐨅"]) + ("N_o" ["𐨞𐨹𐨆"]) + ("N=" ["𐨞𐨿𐨸"]) + ("N=a" ["𐨞𐨸"]) + ("N=i" ["𐨞𐨸𐨁"]) + ("N=u" ["𐨞𐨸𐨂"]) + ("N=R" ["𐨞𐨸𐨃"]) + ("N=e" ["𐨞𐨸𐨅"]) + ("N=o" ["𐨞𐨸𐨆"]) + ("N_=" ["𐨞𐨹𐨿𐨸"]) + ("N_=a" ["𐨞𐨹𐨸"]) + ("N_=i" ["𐨞𐨹𐨸𐨁"]) + ("N_=u" ["𐨞𐨹𐨸𐨂"]) + ("N_=R" ["𐨞𐨹𐨸𐨃"]) + ("N_=e" ["𐨞𐨹𐨸𐨅"]) + ("N_=o" ["𐨞𐨹𐨸𐨆"]) + + ("t" ["𐨟𐨿"]) + ("ta" ["𐨟"]) + ("ti" ["𐨟𐨁"]) + ("tu" ["𐨟𐨂"]) + ("tR" ["𐨟𐨃"]) + ("te" ["𐨟𐨅"]) + ("to" ["𐨟𐨆"]) + ("t_" ["𐨟𐨹𐨿"]) + ("t_a" ["𐨟𐨹"]) + ("t_i" ["𐨟𐨹𐨁"]) + ("t_u" ["𐨟𐨹𐨂"]) + ("t_R" ["𐨟𐨹𐨃"]) + ("t_e" ["𐨟𐨹𐨅"]) + ("t_o" ["𐨟𐨹𐨆"]) + ("t=" ["𐨟𐨿𐨸"]) + ("t=a" ["𐨟𐨸"]) + ("t=i" ["𐨟𐨸𐨁"]) + ("t=u" ["𐨟𐨸𐨂"]) + ("t=R" ["𐨟𐨸𐨃"]) + ("t=e" ["𐨟𐨸𐨅"]) + ("t=o" ["𐨟𐨸𐨆"]) + ("t_=" ["𐨟𐨹𐨿𐨸"]) + ("t_=a" ["𐨟𐨹𐨸"]) + ("t_=i" ["𐨟𐨹𐨸𐨁"]) + ("t_=u" ["𐨟𐨹𐨸𐨂"]) + ("t_=R" ["𐨟𐨹𐨸𐨃"]) + ("t_=e" ["𐨟𐨹𐨸𐨅"]) + ("t_=o" ["𐨟𐨹𐨸𐨆"]) + + ("th" ["𐨠𐨿"]) + ("tha" ["𐨠"]) + ("thi" ["𐨠𐨁"]) + ("thu" ["𐨠𐨂"]) + ("thR" ["𐨠𐨃"]) + ("the" ["𐨠𐨅"]) + ("tho" ["𐨠𐨆"]) + ("th_" ["𐨠𐨹𐨿"]) + ("th_a" ["𐨠𐨹"]) + ("th_i" ["𐨠𐨹𐨁"]) + ("th_u" ["𐨠𐨹𐨂"]) + ("th_R" ["𐨠𐨹𐨃"]) + ("th_e" ["𐨠𐨹𐨅"]) + ("th_o" ["𐨠𐨹𐨆"]) + ("th=" ["𐨠𐨿𐨸"]) + ("th=a" ["𐨠𐨸"]) + ("th=i" ["𐨠𐨸𐨁"]) + ("th=u" ["𐨠𐨸𐨂"]) + ("th=R" ["𐨠𐨸𐨃"]) + ("th=e" ["𐨠𐨸𐨅"]) + ("th=o" ["𐨠𐨸𐨆"]) + ("th_=" ["𐨠𐨹𐨿𐨸"]) + ("th_=a" ["𐨠𐨹𐨸"]) + ("th_=i" ["𐨠𐨹𐨸𐨁"]) + ("th_=u" ["𐨠𐨹𐨸𐨂"]) + ("th_=R" ["𐨠𐨹𐨸𐨃"]) + ("th_=e" ["𐨠𐨹𐨸𐨅"]) + ("th_=o" ["𐨠𐨹𐨸𐨆"]) + + ("d" ["𐨡𐨿"]) + ("da" ["𐨡"]) + ("di" ["𐨡𐨁"]) + ("du" ["𐨡𐨂"]) + ("dR" ["𐨡𐨃"]) + ("de" ["𐨡𐨅"]) + ("do" ["𐨡𐨆"]) + ("d_" ["𐨡𐨹𐨿"]) + ("d_a" ["𐨡𐨹"]) + ("d_i" ["𐨡𐨹𐨁"]) + ("d_u" ["𐨡𐨹𐨂"]) + ("d_R" ["𐨡𐨹𐨃"]) + ("d_e" ["𐨡𐨹𐨅"]) + ("d_o" ["𐨡𐨹𐨆"]) + ("d=" ["𐨡𐨿𐨸"]) + ("d=a" ["𐨡𐨸"]) + ("d=i" ["𐨡𐨸𐨁"]) + ("d=u" ["𐨡𐨸𐨂"]) + ("d=R" ["𐨡𐨸𐨃"]) + ("d=e" ["𐨡𐨸𐨅"]) + ("d=o" ["𐨡𐨸𐨆"]) + ("d_=" ["𐨡𐨹𐨿𐨸"]) + ("d_=a" ["𐨡𐨹𐨸"]) + ("d_=i" ["𐨡𐨹𐨸𐨁"]) + ("d_=u" ["𐨡𐨹𐨸𐨂"]) + ("d_=R" ["𐨡𐨹𐨸𐨃"]) + ("d_=e" ["𐨡𐨹𐨸𐨅"]) + ("d_=o" ["𐨡𐨹𐨸𐨆"]) + + ("dh" ["𐨢𐨿"]) + ("dha" ["𐨢"]) + ("dhi" ["𐨢𐨁"]) + ("dhu" ["𐨢𐨂"]) + ("dhR" ["𐨢𐨃"]) + ("dhe" ["𐨢𐨅"]) + ("dho" ["𐨢𐨆"]) + ("dh_" ["𐨢𐨹𐨿"]) + ("dh_a" ["𐨢𐨹"]) + ("dh_i" ["𐨢𐨹𐨁"]) + ("dh_u" ["𐨢𐨹𐨂"]) + ("dh_R" ["𐨢𐨹𐨃"]) + ("dh_e" ["𐨢𐨹𐨅"]) + ("dh_o" ["𐨢𐨹𐨆"]) + ("dh=" ["𐨢𐨿𐨸"]) + ("dh=a" ["𐨢𐨸"]) + ("dh=i" ["𐨢𐨸𐨁"]) + ("dh=u" ["𐨢𐨸𐨂"]) + ("dh=R" ["𐨢𐨸𐨃"]) + ("dh=e" ["𐨢𐨸𐨅"]) + ("dh=o" ["𐨢𐨸𐨆"]) + ("dh_=" ["𐨢𐨹𐨿𐨸"]) + ("dh_=a" ["𐨢𐨹𐨸"]) + ("dh_=i" ["𐨢𐨹𐨸𐨁"]) + ("dh_=u" ["𐨢𐨹𐨸𐨂"]) + ("dh_=R" ["𐨢𐨹𐨸𐨃"]) + ("dh_=e" ["𐨢𐨹𐨸𐨅"]) + ("dh_=o" ["𐨢𐨹𐨸𐨆"]) + + ("n" ["𐨣𐨿"]) + ("na" ["𐨣"]) + ("ni" ["𐨣𐨁"]) + ("nu" ["𐨣𐨂"]) + ("nR" ["𐨣𐨃"]) + ("ne" ["𐨣𐨅"]) + ("no" ["𐨣𐨆"]) + ("n_" ["𐨣𐨹𐨿"]) + ("n_a" ["𐨣𐨹"]) + ("n_i" ["𐨣𐨹𐨁"]) + ("n_u" ["𐨣𐨹𐨂"]) + ("n_R" ["𐨣𐨹𐨃"]) + ("n_e" ["𐨣𐨹𐨅"]) + ("n_o" ["𐨣𐨹𐨆"]) + ("n=" ["𐨣𐨿𐨸"]) + ("n=a" ["𐨣𐨸"]) + ("n=i" ["𐨣𐨸𐨁"]) + ("n=u" ["𐨣𐨸𐨂"]) + ("n=R" ["𐨣𐨸𐨃"]) + ("n=e" ["𐨣𐨸𐨅"]) + ("n=o" ["𐨣𐨸𐨆"]) + ("n_=" ["𐨣𐨹𐨿𐨸"]) + ("n_=a" ["𐨣𐨹𐨸"]) + ("n_=i" ["𐨣𐨹𐨸𐨁"]) + ("n_=u" ["𐨣𐨹𐨸𐨂"]) + ("n_=R" ["𐨣𐨹𐨸𐨃"]) + ("n_=e" ["𐨣𐨹𐨸𐨅"]) + ("n_=o" ["𐨣𐨹𐨸𐨆"]) + + ("p" ["𐨤𐨿"]) + ("pa" ["𐨤"]) + ("pi" ["𐨤𐨁"]) + ("pu" ["𐨤𐨂"]) + ("pR" ["𐨤𐨃"]) + ("pe" ["𐨤𐨅"]) + ("po" ["𐨤𐨆"]) + ("p_" ["𐨤𐨹𐨿"]) + ("p_a" ["𐨤𐨹"]) + ("p_i" ["𐨤𐨹𐨁"]) + ("p_u" ["𐨤𐨹𐨂"]) + ("p_R" ["𐨤𐨹𐨃"]) + ("p_e" ["𐨤𐨹𐨅"]) + ("p_o" ["𐨤𐨹𐨆"]) + ("p=" ["𐨤𐨿𐨸"]) + ("p=a" ["𐨤𐨸"]) + ("p=i" ["𐨤𐨸𐨁"]) + ("p=u" ["𐨤𐨸𐨂"]) + ("p=R" ["𐨤𐨸𐨃"]) + ("p=e" ["𐨤𐨸𐨅"]) + ("p=o" ["𐨤𐨸𐨆"]) + ("p_=" ["𐨤𐨹𐨿𐨸"]) + ("p_=a" ["𐨤𐨹𐨸"]) + ("p_=i" ["𐨤𐨹𐨸𐨁"]) + ("p_=u" ["𐨤𐨹𐨸𐨂"]) + ("p_=R" ["𐨤𐨹𐨸𐨃"]) + ("p_=e" ["𐨤𐨹𐨸𐨅"]) + ("p_=o" ["𐨤𐨹𐨸𐨆"]) + + ("ph" ["𐨥𐨿"]) + ("pha" ["𐨥"]) + ("phi" ["𐨥𐨁"]) + ("phu" ["𐨥𐨂"]) + ("phR" ["𐨥𐨃"]) + ("phe" ["𐨥𐨅"]) + ("pho" ["𐨥𐨆"]) + ("ph_" ["𐨥𐨹𐨿"]) + ("ph_a" ["𐨥𐨹"]) + ("ph_i" ["𐨥𐨹𐨁"]) + ("ph_u" ["𐨥𐨹𐨂"]) + ("ph_R" ["𐨥𐨹𐨃"]) + ("ph_e" ["𐨥𐨹𐨅"]) + ("ph_o" ["𐨥𐨹𐨆"]) + ("ph=" ["𐨥𐨿𐨸"]) + ("ph=a" ["𐨥𐨸"]) + ("ph=i" ["𐨥𐨸𐨁"]) + ("ph=u" ["𐨥𐨸𐨂"]) + ("ph=R" ["𐨥𐨸𐨃"]) + ("ph=e" ["𐨥𐨸𐨅"]) + ("ph=o" ["𐨥𐨸𐨆"]) + ("ph_=" ["𐨥𐨹𐨿𐨸"]) + ("ph_=a" ["𐨥𐨹𐨸"]) + ("ph_=i" ["𐨥𐨹𐨸𐨁"]) + ("ph_=u" ["𐨥𐨹𐨸𐨂"]) + ("ph_=R" ["𐨥𐨹𐨸𐨃"]) + ("ph_=e" ["𐨥𐨹𐨸𐨅"]) + ("ph_=o" ["𐨥𐨹𐨸𐨆"]) + + ("b" ["𐨦𐨿"]) + ("ba" ["𐨦"]) + ("bi" ["𐨦𐨁"]) + ("bu" ["𐨦𐨂"]) + ("bR" ["𐨦𐨃"]) + ("be" ["𐨦𐨅"]) + ("bo" ["𐨦𐨆"]) + ("b_" ["𐨦𐨹𐨿"]) + ("b_a" ["𐨦𐨹"]) + ("b_i" ["𐨦𐨹𐨁"]) + ("b_u" ["𐨦𐨹𐨂"]) + ("b_R" ["𐨦𐨹𐨃"]) + ("b_e" ["𐨦𐨹𐨅"]) + ("b_o" ["𐨦𐨹𐨆"]) + ("b=" ["𐨦𐨿𐨸"]) + ("b=a" ["𐨦𐨸"]) + ("b=i" ["𐨦𐨸𐨁"]) + ("b=u" ["𐨦𐨸𐨂"]) + ("b=R" ["𐨦𐨸𐨃"]) + ("b=e" ["𐨦𐨸𐨅"]) + ("b=o" ["𐨦𐨸𐨆"]) + ("b_=" ["𐨦𐨹𐨿𐨸"]) + ("b_=a" ["𐨦𐨹𐨸"]) + ("b_=i" ["𐨦𐨹𐨸𐨁"]) + ("b_=u" ["𐨦𐨹𐨸𐨂"]) + ("b_=R" ["𐨦𐨹𐨸𐨃"]) + ("b_=e" ["𐨦𐨹𐨸𐨅"]) + ("b_=o" ["𐨦𐨹𐨸𐨆"]) + + ("bh" ["𐨧𐨿"]) + ("bha" ["𐨧"]) + ("bhi" ["𐨧𐨁"]) + ("bhu" ["𐨧𐨂"]) + ("bhR" ["𐨧𐨃"]) + ("bhe" ["𐨧𐨅"]) + ("bho" ["𐨧𐨆"]) + ("bh_" ["𐨧𐨹𐨿"]) + ("bh_a" ["𐨧𐨹"]) + ("bh_i" ["𐨧𐨹𐨁"]) + ("bh_u" ["𐨧𐨹𐨂"]) + ("bh_R" ["𐨧𐨹𐨃"]) + ("bh_e" ["𐨧𐨹𐨅"]) + ("bh_o" ["𐨧𐨹𐨆"]) + ("bh=" ["𐨧𐨿𐨸"]) + ("bh=a" ["𐨧𐨸"]) + ("bh=i" ["𐨧𐨸𐨁"]) + ("bh=u" ["𐨧𐨸𐨂"]) + ("bh=R" ["𐨧𐨸𐨃"]) + ("bh=e" ["𐨧𐨸𐨅"]) + ("bh=o" ["𐨧𐨸𐨆"]) + ("bh_=" ["𐨧𐨹𐨿𐨸"]) + ("bh_=a" ["𐨧𐨹𐨸"]) + ("bh_=i" ["𐨧𐨹𐨸𐨁"]) + ("bh_=u" ["𐨧𐨹𐨸𐨂"]) + ("bh_=R" ["𐨧𐨹𐨸𐨃"]) + ("bh_=e" ["𐨧𐨹𐨸𐨅"]) + ("bh_=o" ["𐨧𐨹𐨸𐨆"]) + + ("m" ["𐨨𐨿"]) + ("ma" ["𐨨"]) + ("mi" ["𐨨𐨁"]) + ("mu" ["𐨨𐨂"]) + ("mR" ["𐨨𐨃"]) + ("me" ["𐨨𐨅"]) + ("mo" ["𐨨𐨆"]) + ("m_" ["𐨨𐨹𐨿"]) + ("m_a" ["𐨨𐨹"]) + ("m_i" ["𐨨𐨹𐨁"]) + ("m_u" ["𐨨𐨹𐨂"]) + ("m_R" ["𐨨𐨹𐨃"]) + ("m_e" ["𐨨𐨹𐨅"]) + ("m_o" ["𐨨𐨹𐨆"]) + ("m=" ["𐨨𐨿𐨸"]) + ("m=a" ["𐨨𐨸"]) + ("m=i" ["𐨨𐨸𐨁"]) + ("m=u" ["𐨨𐨸𐨂"]) + ("m=R" ["𐨨𐨸𐨃"]) + ("m=e" ["𐨨𐨸𐨅"]) + ("m=o" ["𐨨𐨸𐨆"]) + ("m_=" ["𐨨𐨹𐨿𐨸"]) + ("m_=a" ["𐨨𐨹𐨸"]) + ("m_=i" ["𐨨𐨹𐨸𐨁"]) + ("m_=u" ["𐨨𐨹𐨸𐨂"]) + ("m_=R" ["𐨨𐨹𐨸𐨃"]) + ("m_=e" ["𐨨𐨹𐨸𐨅"]) + ("m_=o" ["𐨨𐨹𐨸𐨆"]) + + ("y" ["𐨩𐨿"]) + ("ya" ["𐨩"]) + ("yi" ["𐨩𐨁"]) + ("yu" ["𐨩𐨂"]) + ("yR" ["𐨩𐨃"]) + ("ye" ["𐨩𐨅"]) + ("yo" ["𐨩𐨆"]) + ("y_" ["𐨩𐨹𐨿"]) + ("y_a" ["𐨩𐨹"]) + ("y_i" ["𐨩𐨹𐨁"]) + ("y_u" ["𐨩𐨹𐨂"]) + ("y_R" ["𐨩𐨹𐨃"]) + ("y_e" ["𐨩𐨹𐨅"]) + ("y_o" ["𐨩𐨹𐨆"]) + ("y=" ["𐨩𐨿𐨸"]) + ("y=a" ["𐨩𐨸"]) + ("y=i" ["𐨩𐨸𐨁"]) + ("y=u" ["𐨩𐨸𐨂"]) + ("y=R" ["𐨩𐨸𐨃"]) + ("y=e" ["𐨩𐨸𐨅"]) + ("y=o" ["𐨩𐨸𐨆"]) + ("y_=" ["𐨩𐨹𐨿𐨸"]) + ("y_=a" ["𐨩𐨹𐨸"]) + ("y_=i" ["𐨩𐨹𐨸𐨁"]) + ("y_=u" ["𐨩𐨹𐨸𐨂"]) + ("y_=R" ["𐨩𐨹𐨸𐨃"]) + ("y_=e" ["𐨩𐨹𐨸𐨅"]) + ("y_=o" ["𐨩𐨹𐨸𐨆"]) + + ("r" ["𐨪𐨿"]) + ("ra" ["𐨪"]) + ("ri" ["𐨪𐨁"]) + ("ru" ["𐨪𐨂"]) + ("rR" ["𐨪𐨃"]) + ("re" ["𐨪𐨅"]) + ("ro" ["𐨪𐨆"]) + ("r_" ["𐨪𐨹𐨿"]) + ("r_a" ["𐨪𐨹"]) + ("r_i" ["𐨪𐨹𐨁"]) + ("r_u" ["𐨪𐨹𐨂"]) + ("r_R" ["𐨪𐨹𐨃"]) + ("r_e" ["𐨪𐨹𐨅"]) + ("r_o" ["𐨪𐨹𐨆"]) + ("r=" ["𐨪𐨿𐨸"]) + ("r=a" ["𐨪𐨸"]) + ("r=i" ["𐨪𐨸𐨁"]) + ("r=u" ["𐨪𐨸𐨂"]) + ("r=R" ["𐨪𐨸𐨃"]) + ("r=e" ["𐨪𐨸𐨅"]) + ("r=o" ["𐨪𐨸𐨆"]) + ("r_=" ["𐨪𐨹𐨿𐨸"]) + ("r_=a" ["𐨪𐨹𐨸"]) + ("r_=i" ["𐨪𐨹𐨸𐨁"]) + ("r_=u" ["𐨪𐨹𐨸𐨂"]) + ("r_=R" ["𐨪𐨹𐨸𐨃"]) + ("r_=e" ["𐨪𐨹𐨸𐨅"]) + ("r_=o" ["𐨪𐨹𐨸𐨆"]) + + ("l" ["𐨫𐨿"]) + ("la" ["𐨫"]) + ("li" ["𐨫𐨁"]) + ("lu" ["𐨫𐨂"]) + ("lR" ["𐨫𐨃"]) + ("le" ["𐨫𐨅"]) + ("lo" ["𐨫𐨆"]) + ("l_" ["𐨫𐨹𐨿"]) + ("l_a" ["𐨫𐨹"]) + ("l_i" ["𐨫𐨹𐨁"]) + ("l_u" ["𐨫𐨹𐨂"]) + ("l_R" ["𐨫𐨹𐨃"]) + ("l_e" ["𐨫𐨹𐨅"]) + ("l_o" ["𐨫𐨹𐨆"]) + ("l=" ["𐨫𐨿𐨸"]) + ("l=a" ["𐨫𐨸"]) + ("l=i" ["𐨫𐨸𐨁"]) + ("l=u" ["𐨫𐨸𐨂"]) + ("l=R" ["𐨫𐨸𐨃"]) + ("l=e" ["𐨫𐨸𐨅"]) + ("l=o" ["𐨫𐨸𐨆"]) + ("l_=" ["𐨫𐨹𐨿𐨸"]) + ("l_=a" ["𐨫𐨹𐨸"]) + ("l_=i" ["𐨫𐨹𐨸𐨁"]) + ("l_=u" ["𐨫𐨹𐨸𐨂"]) + ("l_=R" ["𐨫𐨹𐨸𐨃"]) + ("l_=e" ["𐨫𐨹𐨸𐨅"]) + ("l_=o" ["𐨫𐨹𐨸𐨆"]) + + ("v" ["𐨬𐨿"]) + ("va" ["𐨬"]) + ("vi" ["𐨬𐨁"]) + ("vu" ["𐨬𐨂"]) + ("vR" ["𐨬𐨃"]) + ("ve" ["𐨬𐨅"]) + ("vo" ["𐨬𐨆"]) + ("v_" ["𐨬𐨹𐨿"]) + ("v_a" ["𐨬𐨹"]) + ("v_i" ["𐨬𐨹𐨁"]) + ("v_u" ["𐨬𐨹𐨂"]) + ("v_R" ["𐨬𐨹𐨃"]) + ("v_e" ["𐨬𐨹𐨅"]) + ("v_o" ["𐨬𐨹𐨆"]) + ("v=" ["𐨬𐨿𐨸"]) + ("v=a" ["𐨬𐨸"]) + ("v=i" ["𐨬𐨸𐨁"]) + ("v=u" ["𐨬𐨸𐨂"]) + ("v=R" ["𐨬𐨸𐨃"]) + ("v=e" ["𐨬𐨸𐨅"]) + ("v=o" ["𐨬𐨸𐨆"]) + ("v_=" ["𐨬𐨹𐨿𐨸"]) + ("v_=a" ["𐨬𐨹𐨸"]) + ("v_=i" ["𐨬𐨹𐨸𐨁"]) + ("v_=u" ["𐨬𐨹𐨸𐨂"]) + ("v_=R" ["𐨬𐨹𐨸𐨃"]) + ("v_=e" ["𐨬𐨹𐨸𐨅"]) + ("v_=o" ["𐨬𐨹𐨸𐨆"]) + + ("z" ["𐨭𐨿"]) + ("za" ["𐨭"]) + ("zi" ["𐨭𐨁"]) + ("zu" ["𐨭𐨂"]) + ("z" ["𐨭𐨃"]) + ("ze" ["𐨭𐨅"]) + ("zo" ["𐨭𐨆"]) + ("z_" ["𐨭𐨹𐨿"]) + ("z_a" ["𐨭𐨹"]) + ("z_i" ["𐨭𐨹𐨁"]) + ("z_u" ["𐨭𐨹𐨂"]) + ("z_R" ["𐨭𐨹𐨃"]) + ("z_e" ["𐨭𐨹𐨅"]) + ("z_o" ["𐨭𐨹𐨆"]) + ("z=" ["𐨭𐨿𐨸"]) + ("z=a" ["𐨭𐨸"]) + ("z=i" ["𐨭𐨸𐨁"]) + ("z=u" ["𐨭𐨸𐨂"]) + ("z=R" ["𐨭𐨸𐨃"]) + ("z=e" ["𐨭𐨸𐨅"]) + ("z=o" ["𐨭𐨸𐨆"]) + ("z_=" ["𐨭𐨹𐨿𐨸"]) + ("z_=a" ["𐨭𐨹𐨸"]) + ("z_=i" ["𐨭𐨹𐨸𐨁"]) + ("z_=u" ["𐨭𐨹𐨸𐨂"]) + ("z_=R" ["𐨭𐨹𐨸𐨃"]) + ("z_=e" ["𐨭𐨹𐨸𐨅"]) + ("z_=o" ["𐨭𐨹𐨸𐨆"]) + + ("S" ["𐨮𐨿"]) + ("Sa" ["𐨮"]) + ("Si" ["𐨮𐨁"]) + ("Su" ["𐨮𐨂"]) + ("SR" ["𐨮𐨃"]) + ("Se" ["𐨮𐨅"]) + ("So" ["𐨮𐨆"]) + ("S_" ["𐨮𐨹𐨿"]) + ("S_a" ["𐨮𐨹"]) + ("S_i" ["𐨮𐨹𐨁"]) + ("S_u" ["𐨮𐨹𐨂"]) + ("S_R" ["𐨮𐨹𐨃"]) + ("S_e" ["𐨮𐨹𐨅"]) + ("S_o" ["𐨮𐨹𐨆"]) + ("S=" ["𐨮𐨿𐨸"]) + ("S=a" ["𐨮𐨸"]) + ("S=i" ["𐨮𐨸𐨁"]) + ("S=u" ["𐨮𐨸𐨂"]) + ("S=R" ["𐨮𐨸𐨃"]) + ("S=e" ["𐨮𐨸𐨅"]) + ("S=o" ["𐨮𐨸𐨆"]) + ("S_=" ["𐨮𐨹𐨿𐨸"]) + ("S_=a" ["𐨮𐨹𐨸"]) + ("S_=i" ["𐨮𐨹𐨸𐨁"]) + ("S_=u" ["𐨮𐨹𐨸𐨂"]) + ("S_=R" ["𐨮𐨹𐨸𐨃"]) + ("S_=e" ["𐨮𐨹𐨸𐨅"]) + ("S_=o" ["𐨮𐨹𐨸𐨆"]) + + ("s" ["𐨯𐨿"]) + ("sa" ["𐨯"]) + ("si" ["𐨯𐨁"]) + ("su" ["𐨯𐨂"]) + ("sR" ["𐨯𐨃"]) + ("se" ["𐨯𐨅"]) + ("so" ["𐨯𐨆"]) + ("s_" ["𐨯𐨹𐨿"]) + ("s_a" ["𐨯𐨹"]) + ("s_i" ["𐨯𐨹𐨁"]) + ("s_u" ["𐨯𐨹𐨂"]) + ("s_R" ["𐨯𐨹𐨃"]) + ("s_e" ["𐨯𐨹𐨅"]) + ("s_o" ["𐨯𐨹𐨆"]) + ("s=" ["𐨯𐨿𐨸"]) + ("s=a" ["𐨯𐨸"]) + ("s=i" ["𐨯𐨸𐨁"]) + ("s=u" ["𐨯𐨸𐨂"]) + ("s=R" ["𐨯𐨸𐨃"]) + ("s=e" ["𐨯𐨸𐨅"]) + ("s=o" ["𐨯𐨸𐨆"]) + ("s_=" ["𐨯𐨹𐨿𐨸"]) + ("s_=a" ["𐨯𐨹𐨸"]) + ("s_=i" ["𐨯𐨹𐨸𐨁"]) + ("s_=u" ["𐨯𐨹𐨸𐨂"]) + ("s_=R" ["𐨯𐨹𐨸𐨃"]) + ("s_=e" ["𐨯𐨹𐨸𐨅"]) + ("s_=o" ["𐨯𐨹𐨸𐨆"]) + + ("h" ["𐨱𐨿"]) + ("ha" ["𐨱"]) + ("hi" ["𐨱𐨁"]) + ("hu" ["𐨱𐨂"]) + ("hR" ["𐨱𐨃"]) + ("he" ["𐨱𐨅"]) + ("ho" ["𐨱𐨆"]) + ("h_" ["𐨱𐨹𐨿"]) + ("h_a" ["𐨱𐨹"]) + ("h_i" ["𐨱𐨹𐨁"]) + ("h_u" ["𐨱𐨹𐨂"]) + ("h_R" ["𐨱𐨹𐨃"]) + ("h_e" ["𐨱𐨹𐨅"]) + ("h_o" ["𐨱𐨹𐨆"]) + ("h=" ["𐨱𐨿𐨸"]) + ("h=a" ["𐨱𐨸"]) + ("h=i" ["𐨱𐨸𐨁"]) + ("h=u" ["𐨱𐨸𐨂"]) + ("h=R" ["𐨱𐨸𐨃"]) + ("h=e" ["𐨱𐨸𐨅"]) + ("h=o" ["𐨱𐨸𐨆"]) + ("h_=" ["𐨱𐨹𐨿𐨸"]) + ("h_=a" ["𐨱𐨹𐨸"]) + ("h_=i" ["𐨱𐨹𐨸𐨁"]) + ("h_=u" ["𐨱𐨹𐨸𐨂"]) + ("h_=R" ["𐨱𐨹𐨸𐨃"]) + ("h_=e" ["𐨱𐨹𐨸𐨅"]) + ("h_=o" ["𐨱𐨹𐨸𐨆"]) + + ("k'" ["𐨲𐨿"]) + ("k'a" ["𐨲"]) + ("k'i" ["𐨲𐨁"]) + ("k'u" ["𐨲𐨂"]) + ("k'R" ["𐨲𐨃"]) + ("k'e" ["𐨲𐨅"]) + ("k'o" ["𐨲𐨆"]) + ("k'_" ["𐨲𐨹𐨿"]) + ("k'_a" ["𐨲𐨹"]) + ("k'_i" ["𐨲𐨹𐨁"]) + ("k'_u" ["𐨲𐨹𐨂"]) + ("k'_R" ["𐨲𐨹𐨃"]) + ("k'_e" ["𐨲𐨹𐨅"]) + ("k'_o" ["𐨲𐨹𐨆"]) + ("k'=" ["𐨲𐨿𐨸"]) + ("k'=a" ["𐨲𐨸"]) + ("k'=i" ["𐨲𐨸𐨁"]) + ("k'=u" ["𐨲𐨸𐨂"]) + ("k'=R" ["𐨲𐨸𐨃"]) + ("k'=e" ["𐨲𐨸𐨅"]) + ("k'=o" ["𐨲𐨸𐨆"]) + ("k'_=" ["𐨲𐨹𐨿𐨸"]) + ("k'_=a" ["𐨲𐨹𐨸"]) + ("k'_=i" ["𐨲𐨹𐨸𐨁"]) + ("k'_=u" ["𐨲𐨹𐨸𐨂"]) + ("k'_=R" ["𐨲𐨹𐨸𐨃"]) + ("k'_=e" ["𐨲𐨹𐨸𐨅"]) + ("k'_=o" ["𐨲𐨹𐨸𐨆"]) + + ("T'" ["𐨴𐨿"]) + ("T'a" ["𐨴"]) + ("T'i" ["𐨴𐨁"]) + ("T'u" ["𐨴𐨂"]) + ("T'R" ["𐨴𐨃"]) + ("T'e" ["𐨴𐨅"]) + ("T'o" ["𐨴𐨆"]) + ("T'_" ["𐨴𐨹𐨿"]) + ("T'_a" ["𐨴𐨹"]) + ("T'_i" ["𐨴𐨹𐨁"]) + ("T'_u" ["𐨴𐨹𐨂"]) + ("T'_R" ["𐨴𐨹𐨃"]) + ("T'_e" ["𐨴𐨹𐨅"]) + ("T'_o" ["𐨴𐨹𐨆"]) + ("T'=" ["𐨴𐨿𐨸"]) + ("T'=a" ["𐨴𐨸"]) + ("T'=i" ["𐨴𐨸𐨁"]) + ("T'=u" ["𐨴𐨸𐨂"]) + ("T'=R" ["𐨴𐨸𐨃"]) + ("T'=e" ["𐨴𐨸𐨅"]) + ("T'=o" ["𐨴𐨸𐨆"]) + ("T'_=" ["𐨴𐨹𐨿𐨸"]) + ("T'_=a" ["𐨴𐨹𐨸"]) + ("T'_=i" ["𐨴𐨹𐨸𐨁"]) + ("T'_=u" ["𐨴𐨹𐨸𐨂"]) + ("T'_=R" ["𐨴𐨹𐨸𐨃"]) + ("T'_=e" ["𐨴𐨹𐨸𐨅"]) + ("T'_=o" ["𐨴𐨹𐨸𐨆"]) + + ("Th'" ["𐨳𐨿"]) + ("Th'a" ["𐨳"]) + ("Th'i" ["𐨳𐨁"]) + ("Th'u" ["𐨳𐨂"]) + ("Th'R" ["𐨳𐨃"]) + ("Th'e" ["𐨳𐨅"]) + ("Th'o" ["𐨳𐨆"]) + ("Th'_" ["𐨳𐨹𐨿"]) + ("Th'_a" ["𐨳𐨹"]) + ("Th'_i" ["𐨳𐨹𐨁"]) + ("Th'_u" ["𐨳𐨹𐨂"]) + ("Th'_R" ["𐨳𐨹𐨃"]) + ("Th'_e" ["𐨳𐨹𐨅"]) + ("Th'_o" ["𐨳𐨹𐨆"]) + ("Th'=" ["𐨳𐨿𐨸"]) + ("Th'=a" ["𐨳𐨸"]) + ("Th'=i" ["𐨳𐨸𐨁"]) + ("Th'=u" ["𐨳𐨸𐨂"]) + ("Th'=R" ["𐨳𐨸𐨃"]) + ("Th'=e" ["𐨳𐨸𐨅"]) + ("Th'=o" ["𐨳𐨸𐨆"]) + ("Th'_=" ["𐨳𐨹𐨿𐨸"]) + ("Th'_=a" ["𐨳𐨹𐨸"]) + ("Th'_=i" ["𐨳𐨹𐨸𐨁"]) + ("Th'_=u" ["𐨳𐨹𐨸𐨂"]) + ("Th'_=R" ["𐨳𐨹𐨸𐨃"]) + ("Th'_=e" ["𐨳𐨹𐨸𐨅"]) + ("Th'_=o" ["𐨳𐨹𐨸𐨆"]) + + ("vh" ["𐨵𐨿"]) + ("vha" ["𐨵"]) + ("vhi" ["𐨵𐨁"]) + ("vhu" ["𐨵𐨂"]) + ("vhR" ["𐨵𐨃"]) + ("vhe" ["𐨵𐨅"]) + ("vho" ["𐨵𐨆"]) + ("vh_" ["𐨵𐨹𐨿"]) + ("vh_a" ["𐨵𐨹"]) + ("vh_i" ["𐨵𐨹𐨁"]) + ("vh_u" ["𐨵𐨹𐨂"]) + ("vh_R" ["𐨵𐨹𐨃"]) + ("vh_e" ["𐨵𐨹𐨅"]) + ("vh_o" ["𐨵𐨹𐨆"]) + ("vh=" ["𐨵𐨿𐨸"]) + ("vh=a" ["𐨵𐨸"]) + ("vh=i" ["𐨵𐨸𐨁"]) + ("vh=u" ["𐨵𐨸𐨂"]) + ("vh=R" ["𐨵𐨸𐨃"]) + ("vh=e" ["𐨵𐨸𐨅"]) + ("vh=o" ["𐨵𐨸𐨆"]) + ("vh_=" ["𐨵𐨹𐨿𐨸"]) + ("vh_=a" ["𐨵𐨹𐨸"]) + ("vh_=i" ["𐨵𐨹𐨸𐨁"]) + ("vh_=u" ["𐨵𐨹𐨸𐨂"]) + ("vh_=R" ["𐨵𐨹𐨸𐨃"]) + ("vh_=e" ["𐨵𐨹𐨸𐨅"]) + ("vh_=o" ["𐨵𐨹𐨸𐨆"]) + + ("M" ?𐨎) + ("H" ?𐨏) + ("\\" ?𐨌) + (";;" ?𐨍) + + ("1" ?𐩀) + ("2" ?𐩁) + ("3" ?𐩂) + ("4" ?𐩃) + ("10" ?𐩄) + ("20" ?𐩅) + ("100" ?𐩆) + ("1000" ?𐩇) + + (".." ?𐩐) + (".o" ?𐩑) + (".O" ?𐩒) + (".E" ?𐩓) + (".X" ?𐩔) + (".L" ?𐩕) + (".|" ?𐩖) + (".||" ?𐩗) + (".=" ?𐩘)) + +(provide 'misc-lang) +;;; misc-lang.el ends here diff --git a/lisp/leim/quail/philippine.el b/lisp/leim/quail/philippine.el new file mode 100644 index 00000000000..9afbdc354e3 --- /dev/null +++ b/lisp/leim/quail/philippine.el @@ -0,0 +1,152 @@ +;;; philippine.el --- Quail package for inputting Philippine characters -*- lexical-binding: t; -*- + +;; Copyright (C) 2022 Free Software Foundation, Inc. + +;; Author: समीर सिंह Sameer Singh <lumarzeli30@gmail.com> +;; Keywords: multilingual, input method, i18n, Philippines + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. + +;;; Commentary: + +;; Input methods for Philippine languages. + +;;; Code: + +(require 'quail) + +;; This input method supports languages like Tagalog, Hanunoo, Buhid and +;; Tagbanwa, using the Baybayin script. +(quail-define-package + "tagalog" "Tagalog" "ᜊ" nil "Tagalog phonetic input method." + nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("q" ?₱) + ("w" ?ᜏ) + ("r" ?ᜍ) + ("R" ?ᜟ) + ("t" ?ᜆ) + ("y" ?ᜌ) + ("u" ?ᜓ) + ("U" ?ᜂ) + ("i" ?ᜒ) + ("I" ?ᜁ) + ("p" ?ᜉ) + ("a" ?ᜀ) + ("s" ?ᜐ) + ("d" ?ᜇ) + ("f" ?᜔) + ("g" ?ᜄ) + ("h" ?ᜑ) + ("j" ?᜵) + ("J" ?᜶) + ("k" ?ᜃ) + ("l" ?ᜎ) + ("v" ?᜕) + ("b" ?ᜊ) + ("n" ?ᜈ) + ("N" ?ᜅ) + ("m" ?ᜋ)) + +(quail-define-package + "hanunoo" "Hanunoo" "ᜱ" nil "Hanunoo phonetic input method." + nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("q" ?₱) + ("w" ?ᜯ) + ("r" ?ᜭ) + ("t" ?ᜦ) + ("y" ?ᜬ) + ("u" ?ᜳ) + ("U" ?ᜢ) + ("i" ?ᜲ) + ("I" ?ᜡ) + ("p" ?ᜩ) + ("a" ?ᜠ) + ("s" ?ᜰ) + ("d" ?ᜧ) + ("f" ?᜴) + ("g" ?ᜤ) + ("h" ?ᜱ) + ("j" ?᜵) + ("J" ?᜶) + ("k" ?ᜣ) + ("l" ?ᜮ) + ("b" ?ᜪ) + ("n" ?ᜨ) + ("N" ?ᜥ) + ("m" ?ᜫ)) + +(quail-define-package + "buhid" "Buhid" "ᝊᝓ" nil "Buhid phonetic input method." + nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("q" ?₱) + ("w" ?ᝏ) + ("r" ?ᝍ) + ("t" ?ᝆ) + ("y" ?ᝌ) + ("u" ?ᝓ) + ("U" ?ᝂ) + ("i" ?ᝒ) + ("I" ?ᝁ) + ("p" ?ᝉ) + ("a" ?ᝀ) + ("s" ?ᝐ) + ("d" ?ᝇ) + ("g" ?ᝄ) + ("h" ?ᝑ) + ("j" ?᜵) + ("J" ?᜶) + ("k" ?ᝃ) + ("l" ?ᝎ) + ("b" ?ᝊ) + ("n" ?ᝈ) + ("N" ?ᝅ) + ("m" ?ᝋ)) + +(quail-define-package + "tagbanwa" "Tagbanwa" "ᝦ" nil "Tagbanwa phonetic input method." + nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("q" ?₱) + ("w" ?ᝯ) + ("t" ?ᝦ) + ("y" ?ᝬ) + ("u" ?ᝳ) + ("U" ?ᝢ) + ("i" ?ᝲ) + ("I" ?ᝡ) + ("p" ?ᝩ) + ("a" ?ᝠ) + ("s" ?ᝰ) + ("d" ?ᝧ) + ("g" ?ᝤ) + ("j" ?᜵) + ("J" ?᜶) + ("k" ?ᝣ) + ("l" ?ᝮ) + ("b" ?ᝪ) + ("n" ?ᝨ) + ("N" ?ᝥ) + ("m" ?ᝫ)) + +(provide 'philippine) +;;; philippine.el ends here diff --git a/lisp/leim/quail/symbol-ksc.el b/lisp/leim/quail/symbol-ksc.el index 042465697a1..d440058902a 100644 --- a/lisp/leim/quail/symbol-ksc.el +++ b/lisp/leim/quail/symbol-ksc.el @@ -39,7 +39,7 @@ "한글심벌입력표: 【(】괄호열기【arrow】화살【sex】♂♀【index】첨자 【accent】악센트 【)】괄호닫기【music】음악【dot】점 【quote】따옴표【xtext】§※¶¡¿ - 【Unit】℃Å¢℉【math】수학기호【pic】상형문자【line】선문자 + 【Unit】℃Å¢℉【math】수학기호【pic】상형문자【line】선문자 【unit】단위 【frac】분수 【textline】―∥\∼ 【wn】㈜【ks】㉿【No】№【㏇】㏇ 【dag】† 【ddag】‡【percent】‰ 【am】㏂【pm】㏘【™】™【Tel】℡【won】₩ 【yen】¥ 【pound】£ @@ -65,7 +65,7 @@ ("dot" "·‥…¨ː") ("quote" "、。〃‘’“”°′″´˝") ("textline" "―∥\∼") - ("Unit" "℃Å¢℉") + ("Unit" "℃Å¢℉") ("sex" "♂♀") ("accent" "~ˇ˘˚˙¸˛") ("percent" "‰") |