diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..17e32163fd --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +max_line_length = 140 +tab_width = 4 +trim_trailing_whitespace = true + +[{*.markdown,*.md}] +trim_trailing_whitespace = false +indent_size = 2 diff --git a/.github/DISCUSSION_TEMPLATE/custom-colors.yml b/.github/DISCUSSION_TEMPLATE/custom-colors.yml new file mode 100644 index 0000000000..68d57be2a3 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/custom-colors.yml @@ -0,0 +1,18 @@ +body: +- type: input + - type: textarea + id: description + attributes: + label: Description + placeholder: | + "You can add some description and screenshots here if you want." + validations: + required: false + - type: textarea + id: colors + attributes: + label: Colors + placeholder: | + "Please paste the colors (obtained via the _copy_ button) here, and surround the text with ``` to make sure it's displayed in a way that can be copied easily." + validations: + required: true diff --git a/.github/DISCUSSION_TEMPLATE/custom-layout.yml b/.github/DISCUSSION_TEMPLATE/custom-layout.yml new file mode 100644 index 0000000000..03f8832ab7 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/custom-layout.yml @@ -0,0 +1,18 @@ +body: +- type: input + - type: textarea + id: description + attributes: + label: Description + placeholder: | + "You can add some description and screenshots here if you want." + validations: + required: false + - type: textarea + id: layout + attributes: + label: Layout + placeholder: | + "Please paste the layout here, and surround it with ``` to make sure it's displayed in a way that can be copied easily." + validations: + required: true diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000000..4dc2c8057b --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,2 @@ + +liberapay: Helium314 diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 5c3c12385c..f7191c8b0e 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,31 +1,36 @@ --- name: Bug report about: Create a report to help us improve -title: '' labels: bug -assignees: '' - --- +Please see the appropriate readme section for issue reporting guidelines: https://github.com/Helium314/HeliBoard?tab=readme-ov-file#reporting-issues +tl;dr: +* search for duplicates, also in closed issues +* a single issue per topic +* reduce screenshot size + + + **Describe the bug** -A clear and concise description of what the bug is. **To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error +If possible, provide all the necessary steps to reproduce your problem, including the involved apps or settings if relevant. +In case you cannot reproduce the bug, say so and provide information about when the bug may occur for you. Settings and the app you're writing in are usually important, please don't omit them. **Expected behavior** -A clear and concise description of what you expected to happen. +If it's not obvious (e.g. not crash), describe how you think the app should behave. **Screenshots** -If applicable, add screenshots to help explain your problem. +ONLY add screenshots when they add real value. +If you add screenshots, reduce the size or use thumbnails to keep the issue nicely readable. -**Smartphone (please complete the following information):** - - Device: [e.g. Samsung Galaxy S9] - - OS: [e.g. Android 10] +**App version** +Please provide the explicit version (not just "latest"), or if you build the app yourself specify the latest commit. -**Additional context** -Add any other context about the problem here. +**Device:** + - Model: [e.g. Samsung Galaxy S9] + - OS: [e.g. Android 10] (please also mention whether you are using the manufacturer's OS or a custom ROM) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000000..80a8e648d2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,11 @@ +blank_issues_enabled: false +contact_links: + - name: Dictionary request + url: https://codeberg.org/Helium314/aosp-dictionaries + about: Requests for dictionaries (used for suggestions / autocompletion) will be handled in the linked dictionary repository. You can check whether a dictionary for the language you want already exists there. + - name: Discussion + url: https://github.com/Helium314/HeliBoard/discussions + about: For discussions and feedback about this app, asking questions or talking about ideas which are not yet actionable (i.e. not suitable for an issue). + - name: Question + url: https://github.com/Helium314/HeliBoard/discussions/new?category=q-a + about: For questions please use the discussions section. You may also want to search your question in the FAQ (see readme). diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 11fc491ef1..eb9f3ae62b 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,20 +1,32 @@ --- name: Feature request about: Suggest an idea for this project -title: '' labels: enhancement -assignees: '' - --- +Please see the appropriate readme section for issue reporting guidelines: https://github.com/Helium314/HeliBoard?tab=readme-ov-file#reporting-issues +tl;dr: +* search for duplicates, also in closed issues +* check FAQ / hidden features +* a single issue per topic +* ONLY add screenshots when necessary, and reduce their size + + + + + **Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] **Describe the solution you'd like** -A clear and concise description of what you want to happen. +Please provide a description of what you would like to have. The clearer it is described, the better it can be implemented the way you want it. + +**Use case** +Provide a clear and concise description of *your use case* and what you thus think is missing, and why. -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. +**Describe alternatives you've considered (if any)** -**Additional context** -Add any other context or screenshots about the feature request here. +**App version** +Please provide the explicit version, you're using. diff --git a/.github/ISSUE_TEMPLATE/new-keyboard-layout-request.md b/.github/ISSUE_TEMPLATE/new-keyboard-layout-request.md deleted file mode 100644 index 3e6bd59183..0000000000 --- a/.github/ISSUE_TEMPLATE/new-keyboard-layout-request.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: New keyboard layout request -about: Use this to propose a new layout -title: "*insert here layout name* layout" -labels: layout -assignees: '' - ---- - -Add here references to the layout (links or screenshots). diff --git a/.github/ISSUE_TEMPLATE/new-language-request.md b/.github/ISSUE_TEMPLATE/new-language-request.md deleted file mode 100644 index 145375bea0..0000000000 --- a/.github/ISSUE_TEMPLATE/new-language-request.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: New language request -about: Use this to request autocompletion support for a missing language -title: "*insert here language name* language" -labels: dictionaries -assignees: '' - ---- - - diff --git a/.github/ISSUE_TEMPLATE/other.md b/.github/ISSUE_TEMPLATE/other.md new file mode 100644 index 0000000000..b3fb0668a4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/other.md @@ -0,0 +1,12 @@ +--- +name: Other +about: Anything that does not fit into the other categories. Please don't use this for questions, discussions, or anything that fits into one of the other issue categories. +--- + +Please see the appropriate readme section for issue reporting guidelines: https://github.com/Helium314/HeliBoard?tab=readme-ov-file#reporting-issues +tl;dr: +* search for duplicates, also in closed issues +* a single issue per topic +* ONLY add screenshots when necessary, and reduce their size + + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000000..31f81344f8 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,3 @@ +Please make sure you are at least reasonably close to the contribution guidelines: https://github.com/Helium314/HeliBoard/blob/main/CONTRIBUTING.md#guidelines +Due to maintainer availability, your PR may take quite some time to be addressed + diff --git a/.github/workflows/android-build.yml b/.github/workflows/android-build.yml deleted file mode 100644 index 60c3a5ab3d..0000000000 --- a/.github/workflows/android-build.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: Build - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - - name: Set up JDK - uses: actions/setup-java@v2 - with: - java-version: '11' - distribution: 'temurin' - cache: gradle - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - name: Build with Gradle - run: ./gradlew assembleDebug - - - name: Upload APK - uses: actions/upload-artifact@v2.2.0 - with: - name: APK - path: app/build/outputs/apk/debug/app-debug.apk - - - name: Upload lint report - uses: actions/upload-artifact@v2.2.0 - with: - name: Lint report - path: app/build/reports/lint-results-debug.html diff --git a/.github/workflows/build-debug-apk.yml b/.github/workflows/build-debug-apk.yml new file mode 100644 index 0000000000..5ae9394457 --- /dev/null +++ b/.github/workflows/build-debug-apk.yml @@ -0,0 +1,39 @@ +name: Build debug APK + +on: + workflow_dispatch: + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + + - uses: gradle/actions/setup-gradle@v3 + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build with Gradle + run: ./gradlew assembleDebug + + - name: Upload APK + uses: actions/upload-artifact@v4 + with: + name: HeliBoard-debug + path: app/build/outputs/apk/debug/*-debug*.apk + + - name: Archive reports for failed job + uses: actions/upload-artifact@v4 + with: + name: reports + path: '*/build/reports' + if: ${{ failure() }} diff --git a/.github/workflows/build-test-auto.yml b/.github/workflows/build-test-auto.yml new file mode 100644 index 0000000000..a887aa5f8f --- /dev/null +++ b/.github/workflows/build-test-auto.yml @@ -0,0 +1,43 @@ +name: Test build +# builds only for a single abi and does not produce an APK + +on: +# disabled on push: when I push to non-main, I do a PR anyway +# push: + # don't run on main. I noticed I often don't push commits to avoid unnecessary workflow runs +# branches-ignore: [ main ] +# paths: +# - 'app/**' + pull_request: + paths: + - 'app/src/main/java**' + workflow_dispatch: + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + + - uses: gradle/actions/setup-gradle@v3 + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build with Gradle + run: ./gradlew testRunTestsUnitTest + + - name: Archive reports for failed job + uses: actions/upload-artifact@v4 + with: + name: reports + path: '*/build/reports' + if: ${{ failure() }} diff --git a/.gitignore b/.gitignore index 99f9ce5b7e..955e1c4887 100755 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ *.iml .idea .gradle +.kotlin local.properties .DS_Store Gemfile @@ -8,4 +9,6 @@ build app/build app/release app/.cxx +app/.attach_* fastlane/Appfile +tools/*.txt diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..60c26f2689 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,78 @@ +# Getting Started + +HeliBoard project is based on Gradle and Android Gradle Plugin. To get started, you can install [Android Studio](https://developer.android.com/studio), and import project 'from Version Control / Git / Github' by providing this git repository [URL](https://github.com/Helium314/HeliBoard) (or git SSH [URL](git@github.com:Helium314/heliboard.git)). +Of course you can also use any other compatible IDE, or work with text editor and command line. +Once everything is up correctly, you're ready to go! + +If you have difficulties implementing some functionality, you're welcome to ask for help. No one will write the code for you, but often other contributors can give you very useful hints. + +# About the Code + +HeliBoard is based on AOSP keyboard, and in many places still contains mostly the original code. There are some extensions, and some parts have been replaced completely. +When working on this app, you will likely notice its rather large size, and quite different code styles and often ancient comments and _TODO_s, where the latter are typically untouched since AOSP times. +Unfortunately a lot of the old code is hard to read or to fully understand with all of its intended (and unintended) consequences. + +Some hints for finding what you're looking for: +* Layouts: stored in `layouts` folder in assets, interpreted by `KeyboardParser` and `TextKeyData` + * Popups: either on layouts, or in `locale_key_texts` (mostly letter variations for specific languages that are not dependent on layout) +* Touch and swipe input handling: `PointerTracker` +* Handling of key inputs: `InputLogic` +* Suggestions: `DictionaryFacilitatorImpl`, `Suggest`, `InputLogic`, and `SuggestionStripView` (in order from creation to display) +* Forwarding entered text / keys to the app / text field: `RichInputConnection` +* Receiving events and information from the app / text field: `LatinIME` +* Settings are in `SettingsValues`, with some functionality in `Settings` and the default values in `Default` + +# Guidelines + +## Recommended + +If you want to contribute, it's a good idea to make sure your idea is actually wanted in HeliBoard. +Best check related issues before you start working on a PR. If the issue has the [labels](https://github.com/Helium314/HeliBoard/labels) [_PR_](https://github.com/Helium314/HeliBoard/labels/PR) or [_contributor needed_](https://github.com/Helium314/HeliBoard/issues?q=label%3A%22contributor%20needed%22) (even closed ones), contributions are wanted. If you don't find a related issue, it's recommended to open one, but ultimately it's your choice. +Asking before starting a PR may help you for getting pointers to potentially relevant code, and deciding how to implement your desired changes. + +HeliBoard is a complex application and used by users with a large variety of opinions on how things should be. +When contributing to the app, please: +* Be careful when modifying core components, as it's easy to trigger unintended consequences +* When introducing a feature or change that might not be wanted by everyone, make it optional +* Keep code simple where possible. Complex code is harder to review and to maintain, so the complexity should also add a clear benefit +* Avoid noticeable performance impact. Some parts of the code are executed very frequently, and the keyboard should stay responsive even on older devices. +* Try making use of in-place mechanisms instead of re-inventing the wheel. Your contribution should only add as much complexity as necessary, the code is overly complicated already 😶. +* Keep your changes to few places, as opposed to sprinkling them over many parts of the code. This helps with keeping down complexity during review, and with maintainability of the app. +* Make a draft PR when you intend to still work on it. Submitting an unfinished PR can be a good idea when you're not sure how to best continue and would like some comments. + +Further things to consider (though irrelevant for most PRs): +* APK size: + * Large increases should be discussed first, and will only be added when it's considered worth the increase for a majority of users. It might be possible to avoid size increase by importing optional parts, like it's done for dictionaries. + * Small increases like when adding code or layouts are never an issue +* Do not add proprietary code or binary blobs. If it turns out to be necessary for a feature you want to add, it might be acceptable when the user opts in and imports those parts, like it's done for glide typing. +* Privacy: Only relevant when adding some form of communication with other apps. Internet permission will not be added. +* If your contribution contains code that is not your own, provide a link to the source + * This is especially relevant to be sure the code's license is compatible to HeliBoard's GPL3 + +## Necessary + +Some parts of the guidelines are necessary to fulfill for facilitating code review. It doesn't need to be perfect from the start, but consider it for your future PRs when you're reminded of these guidelines. Note that the larger / more complex your PR is, the more relevant these guidelines are. +Your PR should: +- **Be only about a single thing**. Mixing unrelated or semi-related contributions into a single PR is hard to review and can get messy. As a general rule: if one part doesn't need the other one(s), it should be separate PRs. If one feature builds on top of another one, but the base is usable on its own, do a PR for the base and then a follow-up once it's merged. +- **Have a proper description**. A good description helps _a lot_ for understanding what you intend to achieve with the changes, and for understanding the code. This is relevant for separating wanted from unintended changes in behavior during review. +- **No translations**. Translations should be done using [Weblate](https://translate.codeberg.org/projects/heliboard/). Exception is when you add new resource strings, those can be added right away. + +Please leave dependency upgrades to the maintainers, unless you state a good reason why they should be done now. + +# Adding / Adjusting Layouts + +See [layouts.md](layouts.md#adding-new-layouts--languages) for how to add new layouts to the app. Please stay in line with other layouts regarding the popup keys. + +When editing existing layouts, please consider that people should should still get what they're used to. In case of doubt it might be better to add a new layout instead of overhauling existing layouts. +`locale_key_texts` files should only contain letters that are actually part of the language, with exception of the optional `more_popups_<...>.txt` files. + +# Update Emojis + +See make-emoji-keys tool [README](tools/make-emoji-keys/README.md). + +# Translations +Translations can be added using [Weblate](https://translate.codeberg.org/projects/heliboard/). You will need an account to update translations and add languages. Add the language you want to translate to in Languages -> Manage translated languages in the top menu bar. +Updating translations in a PR will not be accepted, as it may cause conflicts with Weblate translations. + +# Dictionaries +No new dictionaries will be added to this app. Please submit dictionaries and the wordlist to the [dictionaries repository](https://codeberg.org/Helium314/aosp-dictionaries) diff --git a/LICENSE-Apache-2.0 b/LICENSE-Apache-2.0 new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/LICENSE-Apache-2.0 @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/LICENSE-CC-BY-SA-4.0 b/LICENSE-CC-BY-SA-4.0 new file mode 100644 index 0000000000..2d58298e6e --- /dev/null +++ b/LICENSE-CC-BY-SA-4.0 @@ -0,0 +1,428 @@ +Attribution-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-ShareAlike 4.0 International Public +License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-ShareAlike 4.0 International Public License ("Public +License"). To the extent this Public License may be interpreted as a +contract, You are granted the Licensed Rights in consideration of Your +acceptance of these terms and conditions, and the Licensor grants You +such rights in consideration of benefits the Licensor receives from +making the Licensed Material available under these terms and +conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. BY-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + k. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + l. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + m. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + + 1. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + including for purposes of Section 3(b); and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. + diff --git a/README.md b/README.md index 9d737dd831..74a8a21a91 100644 --- a/README.md +++ b/README.md @@ -1,79 +1,110 @@ -# OpenBoard - -[![Build](https://github.com/openboard-team/openboard/actions/workflows/android-build.yml/badge.svg)](https://github.com/openboard-team/openboard/actions/workflows/android-build.yml) -[![GitHub release (latest by date)](https://img.shields.io/github/v/release/openboard-team/openboard)](https://github.com/openboard-team/openboard/releases) -[![GitHub commits since latest release (by date)](https://img.shields.io/github/commits-since/openboard-team/openboard/latest)](https://github.com/openboard-team/openboard/commits/master) -[![Translation status](https://hosted.weblate.org/widgets/openboard/-/openboard/svg-badge.svg)](https://hosted.weblate.org/engage/openboard/) - -Get it on F-Droid -Get it on Google Play - -![](images/feature.png) - -100% FOSS keyboard, based on AOSP. - -## Community [matrix] channel -![](images/matrix_qr.png) - -Join [here](https://matrix.to/#/#openboard:matrix.org?via=matrix.org) - -## Common issues -- Cannot open settings in MIUI: See [issue #46](https://github.com/dslul/openboard/issues/46). - -## Contribute - -### Translation -You can help in translating OpenBoard in your language through our [Weblate project](https://hosted.weblate.org/engage/openboard/). -[![Translation status](https://hosted.weblate.org/widgets/openboard/-/openboard/horizontal-blue.svg)](https://hosted.weblate.org/engage/openboard/) - -### How to create a dictionary -You can use [this tool](https://github.com/remi0s/aosp-dictionary-tools) to create a dictionary. You need a wordlist, as described [here](dictionaries/sample.combined). The output .dict file must be put in [res/raw](app/src/main/res/raw). - -### How to edit keyboard texts -Make your modifications in [tools/make-keyboard-text/src/main/resources](tools/make-keyboard-text/src/main/resources)/values-YOUR LOCALE. - -Generate the new version of [KeyboardTextsTable.java](app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardTextsTable.java): -```sh -./gradlew tools:make-keyboard-text:makeText -``` - - - -### APK Development - -#### Linux - -Install java: -```sh -sudo pacman -S jdk11-openjdk jre11-openjdk jre11-openjdk-headless -``` - -Install Android SDK: -```sh -sudo pacman -S snapd -sudo snap install androidsdk -``` - -Configure your SDK location in your `~/.bash_profile` or `~/.bashrc`: -```bash -export ANDROID_SDK_ROOT=~/snap/androidsdk/current/AndroidSDK/ -``` - -Compile the project. This will install all dependencies, make sure to accept -licenses when prompted. - -```sh -./gradlew assembleDebug -``` - -Connect your phone and install the debug APK -```sh -adb install ./app/build/outputs/apk/debug/app-debug.apk -``` -## Credits -- icon by [Marco TLS](https://www.marcotls.eu) - +# HeliBoard +HeliBoard is a privacy-conscious and customizable open-source keyboard, based on AOSP / OpenBoard. +Does not use internet permission, and thus is 100% offline. + +[Get it on F-Droid](https://f-droid.org/packages/helium314.keyboard/) +[Get APK from GitHub](https://github.com/Helium314/HeliBoard/releases/latest) +[Get it on IzzyOnDroid](https://apt.izzysoft.de/fdroid/index/apk/helium314.keyboard) + +## Table of Contents + +- [Features](#features) +- [Contributing](#contributing-) + * [Reporting Issues](#reporting-issues) + * [Translations](#translations) + * [To Community Creation](#to-community) + * [Code Contribution](CONTRIBUTING.md) +- [License](#license) +- [Credits](#credits) + +# Features + + +For [FAQ](https://github.com/Helium314/HeliBoard/wiki/FAQ), [hidden features](https://github.com/Helium314/HeliBoard/wiki/9.-Hidden-features) and more information about the app and features, please visit the [wiki](https://github.com/Helium314/HeliBoard/wiki) + +# Contributing ❤ + +## Reporting Issues + +Whether you encountered a bug, or want to see a new feature in HeliBoard, you can contribute to the project by opening a new issue [here](https://github.com/Helium314/HeliBoard/issues). Your help is always welcome! + +Before opening a new issue, be sure to check the following: + - **Does the issue already exist?** Make sure a similar issue has not been reported by browsing [existing issues](https://github.com/Helium314/HeliBoard/issues?q=). Please search open and closed issues. In case of feature requests you could also check the [FAQ](https://github.com/Helium314/HeliBoard/wiki/FAQ) and [hidden features](https://github.com/Helium314/HeliBoard/wiki/9.-Hidden-features). + - **Is the issue still relevant?** Make sure your issue is not already fixed in the latest version of HeliBoard. + - **Is it a single topic?** If you want to suggest multiple things, open multiple issues. + - **Did you use the issue template?** It is important to make life of our kind contributors easier by avoiding issues that miss key information to their resolution. +Note that issues that that ignore part of the issue template will likely get treated with very low priority, as often they are needlessly hard to read or understand (e.g. huge screenshots, not providing a proper description, or addressing multiple topics). Blatant violation of the guidelines may result in the issue getting closed. + +If you're interested, you can read the following useful text about effective bug reporting (a bit longer read): https://www.chiark.greenend.org.uk/~sgtatham/bugs.html + +## Translations +Translations can be added using [Weblate](https://translate.codeberg.org/projects/heliboard/). You will need an account to update translations and add languages. Add the language you want to translate to in Languages -> Manage translated languages in the top menu bar. +Updating translations in a PR will not be accepted, as it may cause conflicts with Weblate translations. + +Some notes on translations +* when translating metadata, translating the changelogs is rather useless. It's available as it was requested by translators. +* the `hidden_features_message` is horrible to translate with Weblate, and serves little benefit as it's just a copy of what's already in the wiki: https://github.com/Helium314/HeliBoard/wiki/9.-Hidden-features. It's been made available in the app on user request/contribution. + +## To Community +There is the [discussions on GitHub](https://github.com/Helium314/HeliBoard/discussions), or if you prefer a more open network there is [Lemmy](https://lemmy.world/c/Heliboard). +You can share your themes, layouts and dictionaries with other people: +* Themes can be saved and loaded using the menu on top-right in the _adjust colors_ screen + * You can share custom colors in a separate [discussion section](https://github.com/Helium314/HeliBoard/discussions/categories/custom-colors) +* Custom keyboard layouts are text files whose content you can edit, copy and share + * this applies to main keyboard layouts and to special layouts adjustable in advanced settings + * see [layouts.md](layouts.md) for details + * You can share custom layouts in a separate [discussion section](https://github.com/Helium314/HeliBoard/discussions/categories/custom-layout) +* Creating dictionaries is a little more work + * first you will need a wordlist, as described [here](https://codeberg.org/Helium314/aosp-dictionaries/src/branch/main/wordlists/sample.combined) and in the repository readme + * the you need to compile the dictionary using [external tools](https://github.com/remi0s/aosp-dictionary-tools) + * the resulting file (and ideally the wordlist too) can be shared with other users + * note that there will not be any further dictionaries added to this app, but you can add dictionaries to the [dictionaries repository](https://codeberg.org/Helium314/aosp-dictionaries) + +## Code Contribution +See [Contribution Guidelines](CONTRIBUTING.md) + +# License + +HeliBoard (as a fork of OpenBoard) is licensed under GNU General Public License v3.0. + + > Permissions of this strong copyleft license are conditioned on making available complete source code of licensed works and modifications, which include larger works using a licensed work, under the same license. Copyright and license notices must be preserved. Contributors provide an express grant of patent rights. + +See repo's [LICENSE](/LICENSE) file. + +Since the app is based on Apache 2.0 licensed AOSP Keyboard, an [Apache 2.0](LICENSE-Apache-2.0) license file is provided. +The icon is licensed under [Creative Commons BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/). A [license file](LICENSE-CC-BY-SA-4.0) is also included. + +# Credits +- Icon by [Fabian OvrWrt](https://github.com/FabianOvrWrt) with contributions from [The Eclectic Dyslexic](https://github.com/the-eclectic-dyslexic) +- [OpenBoard](https://github.com/openboard-team/openboard) - [AOSP Keyboard](https://android.googlesource.com/platform/packages/inputmethods/LatinIME/) - [LineageOS](https://review.lineageos.org/admin/repos/LineageOS/android_packages_inputmethods_LatinIME) - [Simple Keyboard](https://github.com/rkkr/simple-keyboard) - [Indic Keyboard](https://gitlab.com/indicproject/indic-keyboard) +- [FlorisBoard](https://github.com/florisboard/florisboard/) +- Our [contributors](https://github.com/Helium314/HeliBoard/graphs/contributors) diff --git a/app/build.gradle b/app/build.gradle deleted file mode 100755 index b9ca2978de..0000000000 --- a/app/build.gradle +++ /dev/null @@ -1,53 +0,0 @@ -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' - -android { - compileSdkVersion 31 - - defaultConfig { - applicationId "org.dslul.openboard.inputmethod.latin" - minSdkVersion 19 - targetSdkVersion 31 - versionCode 18 - versionName '1.4.4' - } - - buildTypes { - release { - minifyEnabled false - debuggable false - jniDebuggable false - renderscriptDebuggable false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } - - - externalNativeBuild { - ndkBuild { - path 'src/main/jni/Android.mk' - } - } - - lintOptions { - abortOnError false - } - - ndkVersion '21.3.6528147' - androidResources { - noCompress 'dict' - } -} - -dependencies { - implementation 'com.google.code.findbugs:jsr305:3.0.2' - implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'androidx.recyclerview:recyclerview:1.2.1' // Replaces recyclerview:1.0.0 included by above dependency - implementation 'androidx.core:core-ktx:1.7.0' - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.viewpager2:viewpager2:1.0.0' -} -repositories { - mavenCentral() -} diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100755 index 0000000000..40740ab888 --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,146 @@ +import com.android.build.api.variant.ApplicationVariant + +plugins { + id("com.android.application") + kotlin("android") + kotlin("plugin.serialization") version "2.2.21" + kotlin("plugin.compose") version "2.2.21" +} + +android { + compileSdk = 35 + + defaultConfig { + applicationId = "helium314.keyboard" + minSdk = 21 + targetSdk = 35 + versionCode = 3603 + versionName = "3.6" + ndk { + abiFilters.clear() + abiFilters.addAll(listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")) + } + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + } + + buildTypes { + release { + isMinifyEnabled = true + isShrinkResources = false + isDebuggable = false + isJniDebuggable = false + } + create("nouserlib") { // same as release, but does not allow the user to provide a library + isMinifyEnabled = true + isShrinkResources = false + isDebuggable = false + isJniDebuggable = false + } + debug { + // "normal" debug has minify for smaller APK to fit the GitHub 25 MB limit when zipped + // and for better performance in case users want to install a debug APK + isMinifyEnabled = true + isJniDebuggable = false + applicationIdSuffix = ".debug" + } + create("runTests") { // build variant for running tests on CI that skips tests known to fail + isMinifyEnabled = false + isJniDebuggable = false + } + create("debugNoMinify") { // for faster builds in IDE + isDebuggable = true + isMinifyEnabled = false + isJniDebuggable = false + signingConfig = signingConfigs.getByName("debug") + applicationIdSuffix = ".debug" + } + base.archivesBaseName = "HeliBoard_" + defaultConfig.versionName + // got a little too big for GitHub after some dependency upgrades, so we remove the largest dictionary + androidComponents.onVariants { variant: ApplicationVariant -> + if (variant.buildType == "debug") { + variant.androidResources.ignoreAssetsPatterns = listOf("main_ro.dict") + variant.proguardFiles = emptyList() + //noinspection ProguardAndroidTxtUsage we intentionally use the "normal" file here + variant.proguardFiles.add(project.layout.buildDirectory.file(getDefaultProguardFile("proguard-android.txt").absolutePath)) + variant.proguardFiles.add(project.layout.buildDirectory.file(project.buildFile.parent + "/proguard-rules.pro")) + } + } + } + + buildFeatures { + viewBinding = true + buildConfig = true + compose = true + } + + externalNativeBuild { + cmake { + path = File("src/main/jni/CMakeLists.txt") + } + } + ndkVersion = "28.0.13004108" + + packaging { + jniLibs { + // shrinks APK by 3 MB, zipped size unchanged + useLegacyPackaging = true + } + } + + testOptions { + unitTests { + isIncludeAndroidResources = true + } + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_17.toString() + } + + // see https://github.com/Helium314/HeliBoard/issues/477 + dependenciesInfo { + includeInApk = false + includeInBundle = false + } + + namespace = "helium314.keyboard.latin" + lint { + abortOnError = true + } +} + +dependencies { + // androidx + implementation("androidx.core:core-ktx:1.16.0") // 1.17 requires SDK 36 + implementation("androidx.recyclerview:recyclerview:1.4.0") + implementation("androidx.autofill:autofill:1.3.0") + implementation("androidx.viewpager2:viewpager2:1.1.0") + + // kotlin + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0") + + // compose + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5") + // newer than 2025.11.01 contains androidx.compose.material:material-android:1.10.0, which requires minSdk 23 + // maybe it's possible to use tools:overrideLibrary="androidx.compose.material" as it's not used explicitly, but probably this is just going to crash + implementation(platform("androidx.compose:compose-bom:2025.11.01")) + implementation("androidx.compose.material3:material3") + implementation("androidx.compose.ui:ui-tooling-preview") + debugImplementation("androidx.compose.ui:ui-tooling") + implementation("androidx.navigation:navigation-compose:2.9.6") + implementation("sh.calvin.reorderable:reorderable:2.4.3") // for easier re-ordering, todo: check 3.0.0 + implementation("com.github.skydoves:colorpicker-compose:1.1.3") // for user-defined colors + + // test + testImplementation(kotlin("test")) + testImplementation("junit:junit:4.13.2") + testImplementation("org.mockito:mockito-core:5.17.0") + testImplementation("org.robolectric:robolectric:4.14.1") + testImplementation("androidx.test:runner:1.6.2") + testImplementation("androidx.test:core:1.6.1") +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index f7bfc889b6..5af7eb4706 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -1,17 +1,14 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in /home/iwo/android-sdk/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the proguardFiles -# directive in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html +# Keep native methods +-keepclassmembers class * { + native ; +} -# Add any project specific keep options here: +# Keep classes that are used as a parameter type of methods that are also marked as keep +# to preserve changing those methods' signature. +-keep class helium314.keyboard.latin.dictionary.Dictionary +-keep class helium314.keyboard.latin.NgramContext +-keep class helium314.keyboard.latin.makedict.ProbabilityInfo -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} +# after upgrading to gradle 8, stack traces contain "unknown source" +-keepattributes SourceFile,LineNumberTable +-dontobfuscate diff --git a/app/src/debug/res/values/strings.xml b/app/src/debug/res/values/strings.xml new file mode 100644 index 0000000000..e8755c20a2 --- /dev/null +++ b/app/src/debug/res/values/strings.xml @@ -0,0 +1,10 @@ + + + + HeliBoard debug + HeliBoard debug Spell Checker + HeliBoard debug Settings + + diff --git a/app/src/debugNoMinify/res/values/strings.xml b/app/src/debugNoMinify/res/values/strings.xml new file mode 100644 index 0000000000..73f1a95de9 --- /dev/null +++ b/app/src/debugNoMinify/res/values/strings.xml @@ -0,0 +1,9 @@ + + + + HeliBoard debug + HeliBoard debug Spell Checker + HeliBoard debug Settings + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 654bb78f26..5d9b3eb13c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,52 +1,29 @@ - + xmlns:tools="http://schemas.android.com/tools"> - - - + + tools:remove="android:appComponentFactory" + tools:targetApi="p"> - + - @@ -85,46 +60,30 @@ - - - - - - - - - - + + + - + + + + - - - @@ -138,17 +97,24 @@ - + - - - + + + + + + + + + + + + + + + diff --git a/app/src/main/assets/dictionaries_in_dict_repo.csv b/app/src/main/assets/dictionaries_in_dict_repo.csv new file mode 100644 index 0000000000..18a6ae7e2a --- /dev/null +++ b/app/src/main/assets/dictionaries_in_dict_repo.csv @@ -0,0 +1,267 @@ +emoji,af,cldr +main,af,exp +emoji,ak,cldr +emoji,sq,cldr +emoji,am,cldr +emoji,blo,cldr +emoji,ar,cldr +main,ar, +main,ar,exp +emoji,hy,cldr +main,hy, +main,hy_EAST,exp +emoji,as,cldr +main,as, +emoji,ast,cldr +emoji,az,cldr +main,bn_BD,exp +emoji,bn,cldr +main,bn, +main,bn,exp +emoji,eu,cldr +main,eu, +emoji,be,cldr +main,be, +emoji,bew,cldr +emoji,bs,cldr +main,bs, +emoji,br,cldr +emoji,bg,cldr +main,bg, +main,bg,exp +emoji,my,cldr +emoji,yue,cldr +emoji,ca,cldr +main,ca, +main,ca,exp +emoji,ceb,cldr +main,ceb,exp +emoji,ccp,cldr +emoji,chr,cldr +emoji,zh_HANT,cldr +emoji,zh,cldr +emoji,cv,cldr +emoji,hr,cldr +main,hr, +main,hr,exp +emoji,cs,cldr +main,cs, +main,cs,exp +emoji,da,cldr +main,da, +main,da,exp +emoji,nl,cldr +main,nl, +main,nl,exp +emoji,en_AU,cldr +main,en_AU, +emoji,en_CA,cldr +main,en_CA,exp +emoji,en_GB,cldr +main,en_GB, +main,en_GB,exp +main,en_US, +main,en_US,exp +symbols,en,exp +emoji,en, +emoji,en,cldr +emoji,eo,cldr +main,eo, +main,eo,exp +emoji,et,cldr +main,et,exp +emoji,fo,cldr +emoji,fil,cldr +emoji,tl,cldr +main,tl,exp +emoji,fi,cldr +main,fi, +main,fi,exp +emoji,fr_CA,cldr +emoji,fr, +symbols,fr,exp +emoji,fr,cldr +main,fr, +main,fr,exp +emoji,gl,cldr +main,gl, +main,gl,exp +emoji,ka,cldr +main,ka, +main,de_AT,exp +emoji,de_CH,cldr +main,de_CH, +emoji,de,cldr +main,de, +main,de,exp +main,gom, +emoji,el,cldr +main,el, +emoji,gu,cldr +main,gu, +emoji,ha,cldr +emoji,he,cldr +main,he, +main,iw, +main,he,exp +emoji,hi_ZZ,cldr +emoji,hi,cldr +main,hi, +main,hi_ZZ, +emoji,hu,cldr +main,hu, +main,hu,exp +emoji,is,cldr +main,is,exp +emoji,ig,cldr +emoji,id,cldr +main,id,exp +emoji,ia,cldr +emoji,ga,cldr +emoji,it,cldr +main,it, +main,it,exp +emoji,ja,cldr +emoji,jv,cldr +emoji,kab,cldr +main,kab,exp +emoji,kl,cldr +emoji,kn,cldr +main,kn, +main,ks, +emoji,kk,cldr +main,kk,exp +emoji,km,cldr +main,km, +emoji,rw,cldr +emoji,kok,cldr +emoji,ko,cldr +emoji,ku,cldr +emoji,ky,cldr +emoji,quc,cldr +emoji,lo,cldr +main,la, +emoji,lv,cldr +main,lv, +main,lv,exp +emoji,lij,cldr +emoji,lt,cldr +main,lt, +main,lt,exp +emoji,dsb,cldr +emoji,lb,cldr +main,lb, +emoji,mk,cldr +main,mai, +emoji,ms,cldr +addon,ml_ZZ,exp +emoji,ml,cldr +main,ml, +emoji,mt,cldr +emoji,mni,cldr +emoji,mr,cldr +main,mr, +main,mwl, +emoji,mn,cldr +emoji,mi,cldr +emoji,ne,cldr +main,ne,exp +emoji,pcm,cldr +emoji,frr,cldr +emoji,nso,cldr +emoji,nb,cldr +main,nb, +main,nb,exp +emoji,nn,cldr +emoji,no,cldr +emoji,oc,cldr +emoji,or,cldr +main,or, +emoji,om,cldr +emoji,pap,cldr +emoji,ps,cldr +main,fa_IR,exp +emoji,fa,cldr +main,pms,exp +emoji,pl,cldr +main,pl, +main,pl,exp +main,pt_BR, +emoji,pt_PT,cldr +main,pt_PT, +main,pt_PT,exp +emoji,pt,cldr +emoji,pa,cldr +main,pa, +emoji,qu,cldr +emoji,rhg,cldr +emoji,ro,cldr +main,ro, +main,ro,exp +emoji,rm,cldr +emoji,ru, +emoji,ru,cldr +main,ru, +main,ru,exp +main,sa, +emoji,sat,cldr +main,sat, +emoji,sc,cldr +emoji,gd,cldr +main,sr_ZZ, +emoji,sr,cldr +main,sr, +emoji,sd,cldr +main,sd, +emoji,si,cldr +emoji,sk,cldr +main,sk,exp +emoji,sl,cldr +main,sl, +main,sl,exp +emoji,so,cldr +emoji,es_419,cldr +emoji,es_MX,cldr +emoji,es,cldr +main,es, +main,es,exp +main,zgh_ZZ, +main,zgh, +emoji,sw,cldr +emoji,sv,cldr +main,sv, +main,sv,exp +emoji,tg,cldr +emoji,ta,cldr +main,ta, +emoji,te,cldr +main,te, +emoji,th,cldr +emoji,ti,cldr +main,tok, +emoji,to,cldr +emoji,tn,cldr +main,tcy, +emoji,tr,cldr +main,tr, +main,tr,exp +emoji,tk,cldr +emoji,uk, +emoji,uk,cldr +main,uk, +main,uk,exp +emoji,hsb,cldr +emoji,ur,cldr +main,ur, +emoji,ug,cldr +emoji,uz,cldr +emoji,vec,cldr +emoji,vi,cldr +main,vi,exp +emoji,cy,cldr +emoji,bgn,cldr +emoji,fy,cldr +emoji,wo,cldr +emoji,xh,cldr +emoji,yo,cldr +emoji,zu,cldr diff --git a/app/src/main/res/raw/main_bg.dict b/app/src/main/assets/dicts/main_bg.dict similarity index 100% rename from app/src/main/res/raw/main_bg.dict rename to app/src/main/assets/dicts/main_bg.dict diff --git a/app/src/main/res/raw/main_bn.dict b/app/src/main/assets/dicts/main_bn.dict similarity index 100% rename from app/src/main/res/raw/main_bn.dict rename to app/src/main/assets/dicts/main_bn.dict diff --git a/app/src/main/res/raw/main_de.dict b/app/src/main/assets/dicts/main_de.dict similarity index 100% rename from app/src/main/res/raw/main_de.dict rename to app/src/main/assets/dicts/main_de.dict diff --git a/app/src/main/res/raw/main_el.dict b/app/src/main/assets/dicts/main_el.dict similarity index 100% rename from app/src/main/res/raw/main_el.dict rename to app/src/main/assets/dicts/main_el.dict diff --git a/app/src/main/assets/dicts/main_en-GB.dict b/app/src/main/assets/dicts/main_en-GB.dict new file mode 100644 index 0000000000..77145c7d45 Binary files /dev/null and b/app/src/main/assets/dicts/main_en-GB.dict differ diff --git a/app/src/main/res/raw/main_en.dict b/app/src/main/assets/dicts/main_en-US.dict similarity index 100% rename from app/src/main/res/raw/main_en.dict rename to app/src/main/assets/dicts/main_en-US.dict diff --git a/app/src/main/res/raw/main_es.dict b/app/src/main/assets/dicts/main_es.dict similarity index 100% rename from app/src/main/res/raw/main_es.dict rename to app/src/main/assets/dicts/main_es.dict diff --git a/app/src/main/res/raw/main_fr.dict b/app/src/main/assets/dicts/main_fr.dict similarity index 100% rename from app/src/main/res/raw/main_fr.dict rename to app/src/main/assets/dicts/main_fr.dict diff --git a/app/src/main/res/raw/main_hu.dict b/app/src/main/assets/dicts/main_hu.dict similarity index 100% rename from app/src/main/res/raw/main_hu.dict rename to app/src/main/assets/dicts/main_hu.dict diff --git a/app/src/main/res/raw/main_it.dict b/app/src/main/assets/dicts/main_it.dict similarity index 100% rename from app/src/main/res/raw/main_it.dict rename to app/src/main/assets/dicts/main_it.dict diff --git a/app/src/main/res/raw/main_nl.dict b/app/src/main/assets/dicts/main_nl.dict similarity index 100% rename from app/src/main/res/raw/main_nl.dict rename to app/src/main/assets/dicts/main_nl.dict diff --git a/app/src/main/res/raw/main_pl.dict b/app/src/main/assets/dicts/main_pl.dict similarity index 100% rename from app/src/main/res/raw/main_pl.dict rename to app/src/main/assets/dicts/main_pl.dict diff --git a/app/src/main/res/raw/main_pt_br.dict b/app/src/main/assets/dicts/main_pt-BR.dict similarity index 100% rename from app/src/main/res/raw/main_pt_br.dict rename to app/src/main/assets/dicts/main_pt-BR.dict diff --git a/app/src/main/res/raw/main_pt_pt.dict b/app/src/main/assets/dicts/main_pt-PT.dict similarity index 100% rename from app/src/main/res/raw/main_pt_pt.dict rename to app/src/main/assets/dicts/main_pt-PT.dict diff --git a/app/src/main/res/raw/main_ro.dict b/app/src/main/assets/dicts/main_ro.dict similarity index 100% rename from app/src/main/res/raw/main_ro.dict rename to app/src/main/assets/dicts/main_ro.dict diff --git a/app/src/main/res/raw/main_ru.dict b/app/src/main/assets/dicts/main_ru.dict similarity index 100% rename from app/src/main/res/raw/main_ru.dict rename to app/src/main/assets/dicts/main_ru.dict diff --git a/app/src/main/res/raw/main_sv.dict b/app/src/main/assets/dicts/main_sv.dict similarity index 100% rename from app/src/main/res/raw/main_sv.dict rename to app/src/main/assets/dicts/main_sv.dict diff --git a/app/src/main/res/raw/main_tr.dict b/app/src/main/assets/dicts/main_tr.dict similarity index 100% rename from app/src/main/res/raw/main_tr.dict rename to app/src/main/assets/dicts/main_tr.dict diff --git a/app/src/main/assets/emoji/ACTIVITIES.txt b/app/src/main/assets/emoji/ACTIVITIES.txt new file mode 100644 index 0000000000..416ac152ea --- /dev/null +++ b/app/src/main/assets/emoji/ACTIVITIES.txt @@ -0,0 +1,85 @@ +🎃 +🎄 +🎆 +🎇 +🧨 +✨ +🎈 +🎉 +🎊 +🎋 +🎍 +🎎 +🎏 +🎐 +🎑 +🧧 +🎀 +🎁 +🎗️ +🎟️ +🎫 +🎖️ +🏆 +🏅 +🥇 +🥈 +🥉 +⚽ +⚾ +🥎 +🏀 +🏐 +🏈 +🏉 +🎾 +🥏 +🎳 +🏏 +🏑 +🏒 +🥍 +🏓 +🏸 +🥊 +🥋 +🥅 +⛳ +⛸️ +🎣 +🤿 +🎽 +🎿 +🛷 +🥌 +🎯 +🪀 +🪁 +🔫 +🎱 +🔮 +🪄 +🎮 +🕹️ +🎰 +🎲 +🧩 +🧸 +🪅 +🪩 +🪆 +♠️ +♥️ +♦️ +♣️ +♟️ +🃏 +🀄 +🎴 +🎭 +🖼️ +🎨 +🧵 +🪡 +🧶 +🪢 \ No newline at end of file diff --git a/app/src/main/assets/emoji/ANIMALS_AND_NATURE.txt b/app/src/main/assets/emoji/ANIMALS_AND_NATURE.txt new file mode 100644 index 0000000000..04b7145207 --- /dev/null +++ b/app/src/main/assets/emoji/ANIMALS_AND_NATURE.txt @@ -0,0 +1,159 @@ +🐵 +🐒 +🦍 +🦧 +🐶 +🐕 +🦮 +🐕‍🦺 +🐩 +🐺 +🦊 +🦝 +🐱 +🐈 +🐈‍⬛ +🦁 +🐯 +🐅 +🐆 +🐴 +🫎 +🫏 +🐎 +🦄 +🦓 +🦌 +🦬 +🐮 +🐂 +🐃 +🐄 +🐷 +🐖 +🐗 +🐽 +🐏 +🐑 +🐐 +🐪 +🐫 +🦙 +🦒 +🐘 +🦣 +🦏 +🦛 +🐭 +🐁 +🐀 +🐹 +🐰 +🐇 +🐿️ +🦫 +🦔 +🦇 +🐻 +🐻‍❄️ +🐨 +🐼 +🦥 +🦦 +🦨 +🦘 +🦡 +🐾 +🦃 +🐔 +🐓 +🐣 +🐤 +🐥 +🐦 +🐧 +🕊️ +🦅 +🦆 +🦢 +🦉 +🦤 +🪶 +🦩 +🦚 +🦜 +🪽 +🐦‍⬛ +🪿 +🐦‍🔥 +🐸 +🐊 +🐢 +🦎 +🐍 +🐲 +🐉 +🦕 +🦖 +🐳 +🐋 +🐬 +🦭 +🐟 +🐠 +🐡 +🦈 +🐙 +🐚 +🪸 +🪼 +🦀 +🦞 +🦐 +🦑 +🦪 +🐌 +🦋 +🐛 +🐜 +🐝 +🪲 +🐞 +🦗 +🪳 +🕷️ +🕸️ +🦂 +🦟 +🪰 +🪱 +🦠 +💐 +🌸 +💮 +🪷 +🏵️ +🌹 +🥀 +🌺 +🌻 +🌼 +🌷 +🪻 +🌱 +🪴 +🌲 +🌳 +🌴 +🌵 +🌾 +🌿 +☘️ +🍀 +🍁 +🍂 +🍃 +🪹 +🪺 +🍄 +🪾 \ No newline at end of file diff --git a/app/src/main/assets/emoji/EMOTICONS.txt b/app/src/main/assets/emoji/EMOTICONS.txt new file mode 100644 index 0000000000..c2b3d9ddd9 --- /dev/null +++ b/app/src/main/assets/emoji/EMOTICONS.txt @@ -0,0 +1,25 @@ +:-) +;-) +:-( +:-! +:-$ +B-) +=-O +:-P +:O +:-* +:-D +:\'( +:-\\ +O:-) +:-[ +(╯° +□°) +╯︵ +┻━┻ +¯\\_ +(ツ) +_/¯ +┬─┬ +︵ /( +.□.\\ \ No newline at end of file diff --git a/app/src/main/assets/emoji/FLAGS.txt b/app/src/main/assets/emoji/FLAGS.txt new file mode 100644 index 0000000000..c4bd834609 --- /dev/null +++ b/app/src/main/assets/emoji/FLAGS.txt @@ -0,0 +1,270 @@ +🏁 +🚩 +🎌 +🏴 +🏳️ +🏳️‍🌈 +🏳️‍⚧️ +🏴‍☠️ +🇦🇨 +🇦🇩 +🇦🇪 +🇦🇫 +🇦🇬 +🇦🇮 +🇦🇱 +🇦🇲 +🇦🇴 +🇦🇶 +🇦🇷 +🇦🇸 +🇦🇹 +🇦🇺 +🇦🇼 +🇦🇽 +🇦🇿 +🇧🇦 +🇧🇧 +🇧🇩 +🇧🇪 +🇧🇫 +🇧🇬 +🇧🇭 +🇧🇮 +🇧🇯 +🇧🇱 +🇧🇲 +🇧🇳 +🇧🇴 +🇧🇶 +🇧🇷 +🇧🇸 +🇧🇹 +🇧🇻 +🇧🇼 +🇧🇾 +🇧🇿 +🇨🇦 +🇨🇨 +🇨🇩 +🇨🇫 +🇨🇬 +🇨🇭 +🇨🇮 +🇨🇰 +🇨🇱 +🇨🇲 +🇨🇳 +🇨🇴 +🇨🇵 +🇨🇶 +🇨🇷 +🇨🇺 +🇨🇻 +🇨🇼 +🇨🇽 +🇨🇾 +🇨🇿 +🇩🇪 +🇩🇬 +🇩🇯 +🇩🇰 +🇩🇲 +🇩🇴 +🇩🇿 +🇪🇦 +🇪🇨 +🇪🇪 +🇪🇬 +🇪🇭 +🇪🇷 +🇪🇸 +🇪🇹 +🇪🇺 +🇫🇮 +🇫🇯 +🇫🇰 +🇫🇲 +🇫🇴 +🇫🇷 +🇬🇦 +🇬🇧 +🇬🇩 +🇬🇪 +🇬🇫 +🇬🇬 +🇬🇭 +🇬🇮 +🇬🇱 +🇬🇲 +🇬🇳 +🇬🇵 +🇬🇶 +🇬🇷 +🇬🇸 +🇬🇹 +🇬🇺 +🇬🇼 +🇬🇾 +🇭🇰 +🇭🇲 +🇭🇳 +🇭🇷 +🇭🇹 +🇭🇺 +🇮🇨 +🇮🇩 +🇮🇪 +🇮🇱 +🇮🇲 +🇮🇳 +🇮🇴 +🇮🇶 +🇮🇷 +🇮🇸 +🇮🇹 +🇯🇪 +🇯🇲 +🇯🇴 +🇯🇵 +🇰🇪 +🇰🇬 +🇰🇭 +🇰🇮 +🇰🇲 +🇰🇳 +🇰🇵 +🇰🇷 +🇰🇼 +🇰🇾 +🇰🇿 +🇱🇦 +🇱🇧 +🇱🇨 +🇱🇮 +🇱🇰 +🇱🇷 +🇱🇸 +🇱🇹 +🇱🇺 +🇱🇻 +🇱🇾 +🇲🇦 +🇲🇨 +🇲🇩 +🇲🇪 +🇲🇫 +🇲🇬 +🇲🇭 +🇲🇰 +🇲🇱 +🇲🇲 +🇲🇳 +🇲🇴 +🇲🇵 +🇲🇶 +🇲🇷 +🇲🇸 +🇲🇹 +🇲🇺 +🇲🇻 +🇲🇼 +🇲🇽 +🇲🇾 +🇲🇿 +🇳🇦 +🇳🇨 +🇳🇪 +🇳🇫 +🇳🇬 +🇳🇮 +🇳🇱 +🇳🇴 +🇳🇵 +🇳🇷 +🇳🇺 +🇳🇿 +🇴🇲 +🇵🇦 +🇵🇪 +🇵🇫 +🇵🇬 +🇵🇭 +🇵🇰 +🇵🇱 +🇵🇲 +🇵🇳 +🇵🇷 +🇵🇸 +🇵🇹 +🇵🇼 +🇵🇾 +🇶🇦 +🇷🇪 +🇷🇴 +🇷🇸 +🇷🇺 +🇷🇼 +🇸🇦 +🇸🇧 +🇸🇨 +🇸🇩 +🇸🇪 +🇸🇬 +🇸🇭 +🇸🇮 +🇸🇯 +🇸🇰 +🇸🇱 +🇸🇲 +🇸🇳 +🇸🇴 +🇸🇷 +🇸🇸 +🇸🇹 +🇸🇻 +🇸🇽 +🇸🇾 +🇸🇿 +🇹🇦 +🇹🇨 +🇹🇩 +🇹🇫 +🇹🇬 +🇹🇭 +🇹🇯 +🇹🇰 +🇹🇱 +🇹🇲 +🇹🇳 +🇹🇴 +🇹🇷 +🇹🇹 +🇹🇻 +🇹🇼 +🇹🇿 +🇺🇦 +🇺🇬 +🇺🇲 +🇺🇳 +🇺🇸 +🇺🇾 +🇺🇿 +🇻🇦 +🇻🇨 +🇻🇪 +🇻🇬 +🇻🇮 +🇻🇳 +🇻🇺 +🇼🇫 +🇼🇸 +🇽🇰 +🇾🇪 +🇾🇹 +🇿🇦 +🇿🇲 +🇿🇼 +🏴󠁧󠁢󠁥󠁮󠁧󠁿 +🏴󠁧󠁢󠁳󠁣󠁴󠁿 +🏴󠁧󠁢󠁷󠁬󠁳󠁿 \ No newline at end of file diff --git a/app/src/main/assets/emoji/FOOD_AND_DRINK.txt b/app/src/main/assets/emoji/FOOD_AND_DRINK.txt new file mode 100644 index 0000000000..cb9b5dd54d --- /dev/null +++ b/app/src/main/assets/emoji/FOOD_AND_DRINK.txt @@ -0,0 +1,131 @@ +🍇 +🍈 +🍉 +🍊 +🍋 +🍋‍🟩 +🍌 +🍍 +🥭 +🍎 +🍏 +🍐 +🍑 +🍒 +🍓 +🫐 +🥝 +🍅 +🫒 +🥥 +🥑 +🍆 +🥔 +🥕 +🌽 +🌶️ +🫑 +🥒 +🥬 +🥦 +🧄 +🧅 +🥜 +🫘 +🌰 +🫚 +🫛 +🍄‍🟫 +🫜 +🍞 +🥐 +🥖 +🫓 +🥨 +🥯 +🥞 +🧇 +🧀 +🍖 +🍗 +🥩 +🥓 +🍔 +🍟 +🍕 +🌭 +🥪 +🌮 +🌯 +🫔 +🥙 +🧆 +🥚 +🍳 +🥘 +🍲 +🫕 +🥣 +🥗 +🍿 +🧈 +🧂 +🥫 +🍱 +🍘 +🍙 +🍚 +🍛 +🍜 +🍝 +🍠 +🍢 +🍣 +🍤 +🍥 +🥮 +🍡 +🥟 +🥠 +🥡 +🍦 +🍧 +🍨 +🍩 +🍪 +🎂 +🍰 +🧁 +🥧 +🍫 +🍬 +🍭 +🍮 +🍯 +🍼 +🥛 +☕ +🫖 +🍵 +🍶 +🍾 +🍷 +🍸 +🍹 +🍺 +🍻 +🥂 +🥃 +🫗 +🥤 +🧋 +🧃 +🧉 +🧊 +🥢 +🍽️ +🍴 +🥄 +🔪 +🫙 +🏺 \ No newline at end of file diff --git a/app/src/main/assets/emoji/OBJECTS.txt b/app/src/main/assets/emoji/OBJECTS.txt new file mode 100644 index 0000000000..38b94b0b7b --- /dev/null +++ b/app/src/main/assets/emoji/OBJECTS.txt @@ -0,0 +1,264 @@ +👓 +🕶️ +🥽 +🥼 +🦺 +👔 +👕 +👖 +🧣 +🧤 +🧥 +🧦 +👗 +👘 +🥻 +🩱 +🩲 +🩳 +👙 +👚 +🪭 +👛 +👜 +👝 +🛍️ +🎒 +🩴 +👞 +👟 +🥾 +🥿 +👠 +👡 +🩰 +👢 +🪮 +👑 +👒 +🎩 +🎓 +🧢 +🪖 +⛑️ +📿 +💄 +💍 +💎 +🔇 +🔈 +🔉 +🔊 +📢 +📣 +📯 +🔔 +🔕 +🎼 +🎵 +🎶 +🎙️ +🎚️ +🎛️ +🎤 +🎧 +📻 +🎷 +🪗 +🎸 +🎹 +🎺 +🎻 +🪕 +🥁 +🪘 +🪇 +🪈 +🪉 +📱 +📲 +☎️ +📞 +📟 +📠 +🔋 +🪫 +🔌 +💻 +🖥️ +🖨️ +⌨️ +🖱️ +🖲️ +💽 +💾 +💿 +📀 +🧮 +🎥 +🎞️ +📽️ +🎬 +📺 +📷 +📸 +📹 +📼 +🔍 +🔎 +🕯️ +💡 +🔦 +🏮 +🪔 +📔 +📕 +📖 +📗 +📘 +📙 +📚 +📓 +📒 +📃 +📜 +📄 +📰 +🗞️ +📑 +🔖 +🏷️ +💰 +🪙 +💴 +💵 +💶 +💷 +💸 +💳 +🧾 +💹 +✉️ +📧 +📨 +📩 +📤 +📥 +📦 +📫 +📪 +📬 +📭 +📮 +🗳️ +✏️ +✒️ +🖋️ +🖊️ +🖌️ +🖍️ +📝 +💼 +📁 +📂 +🗂️ +📅 +📆 +🗒️ +🗓️ +📇 +📈 +📉 +📊 +📋 +📌 +📍 +📎 +🖇️ +📏 +📐 +✂️ +🗃️ +🗄️ +🗑️ +🔒 +🔓 +🔏 +🔐 +🔑 +🗝️ +🔨 +🪓 +⛏️ +⚒️ +🛠️ +🗡️ +⚔️ +💣 +🪃 +🏹 +🛡️ +🪚 +🔧 +🪛 +🔩 +⚙️ +🗜️ +⚖️ +🦯 +🔗 +⛓️‍💥 +⛓️ +🪝 +🧰 +🧲 +🪜 +🪏 +⚗️ +🧪 +🧫 +🧬 +🔬 +🔭 +📡 +💉 +🩸 +💊 +🩹 +🩼 +🩺 +🩻 +🚪 +🛗 +🪞 +🪟 +🛏️ +🛋️ +🪑 +🚽 +🪠 +🚿 +🛁 +🪤 +🪒 +🧴 +🧷 +🧹 +🧺 +🧻 +🪣 +🧼 +🫧 +🪥 +🧽 +🧯 +🛒 +🚬 +⚰️ +🪦 +⚱️ +🧿 +🪬 +🗿 +🪧 +🪪 \ No newline at end of file diff --git a/app/src/main/assets/emoji/PEOPLE_AND_BODY.txt b/app/src/main/assets/emoji/PEOPLE_AND_BODY.txt new file mode 100644 index 0000000000..d7ceb5bb8e --- /dev/null +++ b/app/src/main/assets/emoji/PEOPLE_AND_BODY.txt @@ -0,0 +1,386 @@ +👋 👋🏻 👋🏼 👋🏽 👋🏾 👋🏿 +🤚 🤚🏻 🤚🏼 🤚🏽 🤚🏾 🤚🏿 +🖐️ 🖐🏻 🖐🏼 🖐🏽 🖐🏾 🖐🏿 +✋ ✋🏻 ✋🏼 ✋🏽 ✋🏾 ✋🏿 +🖖 🖖🏻 🖖🏼 🖖🏽 🖖🏾 🖖🏿 +🫱 🫱🏻 🫱🏼 🫱🏽 🫱🏾 🫱🏿 +🫲 🫲🏻 🫲🏼 🫲🏽 🫲🏾 🫲🏿 +🫳 🫳🏻 🫳🏼 🫳🏽 🫳🏾 🫳🏿 +🫴 🫴🏻 🫴🏼 🫴🏽 🫴🏾 🫴🏿 +🫷 🫷🏻 🫷🏼 🫷🏽 🫷🏾 🫷🏿 +🫸 🫸🏻 🫸🏼 🫸🏽 🫸🏾 🫸🏿 +👌 👌🏻 👌🏼 👌🏽 👌🏾 👌🏿 +🤌 🤌🏻 🤌🏼 🤌🏽 🤌🏾 🤌🏿 +🤏 🤏🏻 🤏🏼 🤏🏽 🤏🏾 🤏🏿 +✌️ ✌🏻 ✌🏼 ✌🏽 ✌🏾 ✌🏿 +🤞 🤞🏻 🤞🏼 🤞🏽 🤞🏾 🤞🏿 +🫰 🫰🏻 🫰🏼 🫰🏽 🫰🏾 🫰🏿 +🤟 🤟🏻 🤟🏼 🤟🏽 🤟🏾 🤟🏿 +🤘 🤘🏻 🤘🏼 🤘🏽 🤘🏾 🤘🏿 +🤙 🤙🏻 🤙🏼 🤙🏽 🤙🏾 🤙🏿 +👈 👈🏻 👈🏼 👈🏽 👈🏾 👈🏿 +👉 👉🏻 👉🏼 👉🏽 👉🏾 👉🏿 +👆 👆🏻 👆🏼 👆🏽 👆🏾 👆🏿 +🖕 🖕🏻 🖕🏼 🖕🏽 🖕🏾 🖕🏿 +👇 👇🏻 👇🏼 👇🏽 👇🏾 👇🏿 +☝️ ☝🏻 ☝🏼 ☝🏽 ☝🏾 ☝🏿 +🫵 🫵🏻 🫵🏼 🫵🏽 🫵🏾 🫵🏿 +👍 👍🏻 👍🏼 👍🏽 👍🏾 👍🏿 +👎 👎🏻 👎🏼 👎🏽 👎🏾 👎🏿 +✊ ✊🏻 ✊🏼 ✊🏽 ✊🏾 ✊🏿 +👊 👊🏻 👊🏼 👊🏽 👊🏾 👊🏿 +🤛 🤛🏻 🤛🏼 🤛🏽 🤛🏾 🤛🏿 +🤜 🤜🏻 🤜🏼 🤜🏽 🤜🏾 🤜🏿 +👏 👏🏻 👏🏼 👏🏽 👏🏾 👏🏿 +🙌 🙌🏻 🙌🏼 🙌🏽 🙌🏾 🙌🏿 +🫶 🫶🏻 🫶🏼 🫶🏽 🫶🏾 🫶🏿 +👐 👐🏻 👐🏼 👐🏽 👐🏾 👐🏿 +🤲 🤲🏻 🤲🏼 🤲🏽 🤲🏾 🤲🏿 +🤝 🤝🏻 🤝🏼 🤝🏽 🤝🏾 🤝🏿 +🙏 🙏🏻 🙏🏼 🙏🏽 🙏🏾 🙏🏿 +✍️ ✍🏻 ✍🏼 ✍🏽 ✍🏾 ✍🏿 +💅 💅🏻 💅🏼 💅🏽 💅🏾 💅🏿 +🤳 🤳🏻 🤳🏼 🤳🏽 🤳🏾 🤳🏿 +💪 💪🏻 💪🏼 💪🏽 💪🏾 💪🏿 +🦾 +🦿 +🦵 🦵🏻 🦵🏼 🦵🏽 🦵🏾 🦵🏿 +🦶 🦶🏻 🦶🏼 🦶🏽 🦶🏾 🦶🏿 +👂 👂🏻 👂🏼 👂🏽 👂🏾 👂🏿 +🦻 🦻🏻 🦻🏼 🦻🏽 🦻🏾 🦻🏿 +👃 👃🏻 👃🏼 👃🏽 👃🏾 👃🏿 +🧠 +🫀 +🫁 +🦷 +🦴 +👀 +👁️ +👅 +👄 +🫦 +👶 👶🏻 👶🏼 👶🏽 👶🏾 👶🏿 +🧒 🧒🏻 🧒🏼 🧒🏽 🧒🏾 🧒🏿 +👦 👦🏻 👦🏼 👦🏽 👦🏾 👦🏿 +👧 👧🏻 👧🏼 👧🏽 👧🏾 👧🏿 +🧑 🧑🏻 🧑🏼 🧑🏽 🧑🏾 🧑🏿 +👱 👱🏻 👱🏼 👱🏽 👱🏾 👱🏿 +👨 👨🏻 👨🏼 👨🏽 👨🏾 👨🏿 +🧔 🧔🏻 🧔🏼 🧔🏽 🧔🏾 🧔🏿 +🧔‍♂️ 🧔🏻‍♂️ 🧔🏼‍♂️ 🧔🏽‍♂️ 🧔🏾‍♂️ 🧔🏿‍♂️ +🧔‍♀️ 🧔🏻‍♀️ 🧔🏼‍♀️ 🧔🏽‍♀️ 🧔🏾‍♀️ 🧔🏿‍♀️ +👨‍🦰 👨🏻‍🦰 👨🏼‍🦰 👨🏽‍🦰 👨🏾‍🦰 👨🏿‍🦰 +👨‍🦱 👨🏻‍🦱 👨🏼‍🦱 👨🏽‍🦱 👨🏾‍🦱 👨🏿‍🦱 +👨‍🦳 👨🏻‍🦳 👨🏼‍🦳 👨🏽‍🦳 👨🏾‍🦳 👨🏿‍🦳 +👨‍🦲 👨🏻‍🦲 👨🏼‍🦲 👨🏽‍🦲 👨🏾‍🦲 👨🏿‍🦲 +👩 👩🏻 👩🏼 👩🏽 👩🏾 👩🏿 +👩‍🦰 👩🏻‍🦰 👩🏼‍🦰 👩🏽‍🦰 👩🏾‍🦰 👩🏿‍🦰 +🧑‍🦰 🧑🏻‍🦰 🧑🏼‍🦰 🧑🏽‍🦰 🧑🏾‍🦰 🧑🏿‍🦰 +👩‍🦱 👩🏻‍🦱 👩🏼‍🦱 👩🏽‍🦱 👩🏾‍🦱 👩🏿‍🦱 +🧑‍🦱 🧑🏻‍🦱 🧑🏼‍🦱 🧑🏽‍🦱 🧑🏾‍🦱 🧑🏿‍🦱 +👩‍🦳 👩🏻‍🦳 👩🏼‍🦳 👩🏽‍🦳 👩🏾‍🦳 👩🏿‍🦳 +🧑‍🦳 🧑🏻‍🦳 🧑🏼‍🦳 🧑🏽‍🦳 🧑🏾‍🦳 🧑🏿‍🦳 +👩‍🦲 👩🏻‍🦲 👩🏼‍🦲 👩🏽‍🦲 👩🏾‍🦲 👩🏿‍🦲 +🧑‍🦲 🧑🏻‍🦲 🧑🏼‍🦲 🧑🏽‍🦲 🧑🏾‍🦲 🧑🏿‍🦲 +👱‍♀️ 👱🏻‍♀️ 👱🏼‍♀️ 👱🏽‍♀️ 👱🏾‍♀️ 👱🏿‍♀️ +👱‍♂️ 👱🏻‍♂️ 👱🏼‍♂️ 👱🏽‍♂️ 👱🏾‍♂️ 👱🏿‍♂️ +🧓 🧓🏻 🧓🏼 🧓🏽 🧓🏾 🧓🏿 +👴 👴🏻 👴🏼 👴🏽 👴🏾 👴🏿 +👵 👵🏻 👵🏼 👵🏽 👵🏾 👵🏿 +🙍 🙍🏻 🙍🏼 🙍🏽 🙍🏾 🙍🏿 +🙍‍♂️ 🙍🏻‍♂️ 🙍🏼‍♂️ 🙍🏽‍♂️ 🙍🏾‍♂️ 🙍🏿‍♂️ +🙍‍♀️ 🙍🏻‍♀️ 🙍🏼‍♀️ 🙍🏽‍♀️ 🙍🏾‍♀️ 🙍🏿‍♀️ +🙎 🙎🏻 🙎🏼 🙎🏽 🙎🏾 🙎🏿 +🙎‍♂️ 🙎🏻‍♂️ 🙎🏼‍♂️ 🙎🏽‍♂️ 🙎🏾‍♂️ 🙎🏿‍♂️ +🙎‍♀️ 🙎🏻‍♀️ 🙎🏼‍♀️ 🙎🏽‍♀️ 🙎🏾‍♀️ 🙎🏿‍♀️ +🙅 🙅🏻 🙅🏼 🙅🏽 🙅🏾 🙅🏿 +🙅‍♂️ 🙅🏻‍♂️ 🙅🏼‍♂️ 🙅🏽‍♂️ 🙅🏾‍♂️ 🙅🏿‍♂️ +🙅‍♀️ 🙅🏻‍♀️ 🙅🏼‍♀️ 🙅🏽‍♀️ 🙅🏾‍♀️ 🙅🏿‍♀️ +🙆 🙆🏻 🙆🏼 🙆🏽 🙆🏾 🙆🏿 +🙆‍♂️ 🙆🏻‍♂️ 🙆🏼‍♂️ 🙆🏽‍♂️ 🙆🏾‍♂️ 🙆🏿‍♂️ +🙆‍♀️ 🙆🏻‍♀️ 🙆🏼‍♀️ 🙆🏽‍♀️ 🙆🏾‍♀️ 🙆🏿‍♀️ +💁 💁🏻 💁🏼 💁🏽 💁🏾 💁🏿 +💁‍♂️ 💁🏻‍♂️ 💁🏼‍♂️ 💁🏽‍♂️ 💁🏾‍♂️ 💁🏿‍♂️ +💁‍♀️ 💁🏻‍♀️ 💁🏼‍♀️ 💁🏽‍♀️ 💁🏾‍♀️ 💁🏿‍♀️ +🙋 🙋🏻 🙋🏼 🙋🏽 🙋🏾 🙋🏿 +🙋‍♂️ 🙋🏻‍♂️ 🙋🏼‍♂️ 🙋🏽‍♂️ 🙋🏾‍♂️ 🙋🏿‍♂️ +🙋‍♀️ 🙋🏻‍♀️ 🙋🏼‍♀️ 🙋🏽‍♀️ 🙋🏾‍♀️ 🙋🏿‍♀️ +🧏 🧏🏻 🧏🏼 🧏🏽 🧏🏾 🧏🏿 +🧏‍♂️ 🧏🏻‍♂️ 🧏🏼‍♂️ 🧏🏽‍♂️ 🧏🏾‍♂️ 🧏🏿‍♂️ +🧏‍♀️ 🧏🏻‍♀️ 🧏🏼‍♀️ 🧏🏽‍♀️ 🧏🏾‍♀️ 🧏🏿‍♀️ +🙇 🙇🏻 🙇🏼 🙇🏽 🙇🏾 🙇🏿 +🙇‍♂️ 🙇🏻‍♂️ 🙇🏼‍♂️ 🙇🏽‍♂️ 🙇🏾‍♂️ 🙇🏿‍♂️ +🙇‍♀️ 🙇🏻‍♀️ 🙇🏼‍♀️ 🙇🏽‍♀️ 🙇🏾‍♀️ 🙇🏿‍♀️ +🤦 🤦🏻 🤦🏼 🤦🏽 🤦🏾 🤦🏿 +🤦‍♂️ 🤦🏻‍♂️ 🤦🏼‍♂️ 🤦🏽‍♂️ 🤦🏾‍♂️ 🤦🏿‍♂️ +🤦‍♀️ 🤦🏻‍♀️ 🤦🏼‍♀️ 🤦🏽‍♀️ 🤦🏾‍♀️ 🤦🏿‍♀️ +🤷 🤷🏻 🤷🏼 🤷🏽 🤷🏾 🤷🏿 +🤷‍♂️ 🤷🏻‍♂️ 🤷🏼‍♂️ 🤷🏽‍♂️ 🤷🏾‍♂️ 🤷🏿‍♂️ +🤷‍♀️ 🤷🏻‍♀️ 🤷🏼‍♀️ 🤷🏽‍♀️ 🤷🏾‍♀️ 🤷🏿‍♀️ +🧑‍⚕️ 🧑🏻‍⚕️ 🧑🏼‍⚕️ 🧑🏽‍⚕️ 🧑🏾‍⚕️ 🧑🏿‍⚕️ +👨‍⚕️ 👨🏻‍⚕️ 👨🏼‍⚕️ 👨🏽‍⚕️ 👨🏾‍⚕️ 👨🏿‍⚕️ +👩‍⚕️ 👩🏻‍⚕️ 👩🏼‍⚕️ 👩🏽‍⚕️ 👩🏾‍⚕️ 👩🏿‍⚕️ +🧑‍🎓 🧑🏻‍🎓 🧑🏼‍🎓 🧑🏽‍🎓 🧑🏾‍🎓 🧑🏿‍🎓 +👨‍🎓 👨🏻‍🎓 👨🏼‍🎓 👨🏽‍🎓 👨🏾‍🎓 👨🏿‍🎓 +👩‍🎓 👩🏻‍🎓 👩🏼‍🎓 👩🏽‍🎓 👩🏾‍🎓 👩🏿‍🎓 +🧑‍🏫 🧑🏻‍🏫 🧑🏼‍🏫 🧑🏽‍🏫 🧑🏾‍🏫 🧑🏿‍🏫 +👨‍🏫 👨🏻‍🏫 👨🏼‍🏫 👨🏽‍🏫 👨🏾‍🏫 👨🏿‍🏫 +👩‍🏫 👩🏻‍🏫 👩🏼‍🏫 👩🏽‍🏫 👩🏾‍🏫 👩🏿‍🏫 +🧑‍⚖️ 🧑🏻‍⚖️ 🧑🏼‍⚖️ 🧑🏽‍⚖️ 🧑🏾‍⚖️ 🧑🏿‍⚖️ +👨‍⚖️ 👨🏻‍⚖️ 👨🏼‍⚖️ 👨🏽‍⚖️ 👨🏾‍⚖️ 👨🏿‍⚖️ +👩‍⚖️ 👩🏻‍⚖️ 👩🏼‍⚖️ 👩🏽‍⚖️ 👩🏾‍⚖️ 👩🏿‍⚖️ +🧑‍🌾 🧑🏻‍🌾 🧑🏼‍🌾 🧑🏽‍🌾 🧑🏾‍🌾 🧑🏿‍🌾 +👨‍🌾 👨🏻‍🌾 👨🏼‍🌾 👨🏽‍🌾 👨🏾‍🌾 👨🏿‍🌾 +👩‍🌾 👩🏻‍🌾 👩🏼‍🌾 👩🏽‍🌾 👩🏾‍🌾 👩🏿‍🌾 +🧑‍🍳 🧑🏻‍🍳 🧑🏼‍🍳 🧑🏽‍🍳 🧑🏾‍🍳 🧑🏿‍🍳 +👨‍🍳 👨🏻‍🍳 👨🏼‍🍳 👨🏽‍🍳 👨🏾‍🍳 👨🏿‍🍳 +👩‍🍳 👩🏻‍🍳 👩🏼‍🍳 👩🏽‍🍳 👩🏾‍🍳 👩🏿‍🍳 +🧑‍🔧 🧑🏻‍🔧 🧑🏼‍🔧 🧑🏽‍🔧 🧑🏾‍🔧 🧑🏿‍🔧 +👨‍🔧 👨🏻‍🔧 👨🏼‍🔧 👨🏽‍🔧 👨🏾‍🔧 👨🏿‍🔧 +👩‍🔧 👩🏻‍🔧 👩🏼‍🔧 👩🏽‍🔧 👩🏾‍🔧 👩🏿‍🔧 +🧑‍🏭 🧑🏻‍🏭 🧑🏼‍🏭 🧑🏽‍🏭 🧑🏾‍🏭 🧑🏿‍🏭 +👨‍🏭 👨🏻‍🏭 👨🏼‍🏭 👨🏽‍🏭 👨🏾‍🏭 👨🏿‍🏭 +👩‍🏭 👩🏻‍🏭 👩🏼‍🏭 👩🏽‍🏭 👩🏾‍🏭 👩🏿‍🏭 +🧑‍💼 🧑🏻‍💼 🧑🏼‍💼 🧑🏽‍💼 🧑🏾‍💼 🧑🏿‍💼 +👨‍💼 👨🏻‍💼 👨🏼‍💼 👨🏽‍💼 👨🏾‍💼 👨🏿‍💼 +👩‍💼 👩🏻‍💼 👩🏼‍💼 👩🏽‍💼 👩🏾‍💼 👩🏿‍💼 +🧑‍🔬 🧑🏻‍🔬 🧑🏼‍🔬 🧑🏽‍🔬 🧑🏾‍🔬 🧑🏿‍🔬 +👨‍🔬 👨🏻‍🔬 👨🏼‍🔬 👨🏽‍🔬 👨🏾‍🔬 👨🏿‍🔬 +👩‍🔬 👩🏻‍🔬 👩🏼‍🔬 👩🏽‍🔬 👩🏾‍🔬 👩🏿‍🔬 +🧑‍💻 🧑🏻‍💻 🧑🏼‍💻 🧑🏽‍💻 🧑🏾‍💻 🧑🏿‍💻 +👨‍💻 👨🏻‍💻 👨🏼‍💻 👨🏽‍💻 👨🏾‍💻 👨🏿‍💻 +👩‍💻 👩🏻‍💻 👩🏼‍💻 👩🏽‍💻 👩🏾‍💻 👩🏿‍💻 +🧑‍🎤 🧑🏻‍🎤 🧑🏼‍🎤 🧑🏽‍🎤 🧑🏾‍🎤 🧑🏿‍🎤 +👨‍🎤 👨🏻‍🎤 👨🏼‍🎤 👨🏽‍🎤 👨🏾‍🎤 👨🏿‍🎤 +👩‍🎤 👩🏻‍🎤 👩🏼‍🎤 👩🏽‍🎤 👩🏾‍🎤 👩🏿‍🎤 +🧑‍🎨 🧑🏻‍🎨 🧑🏼‍🎨 🧑🏽‍🎨 🧑🏾‍🎨 🧑🏿‍🎨 +👨‍🎨 👨🏻‍🎨 👨🏼‍🎨 👨🏽‍🎨 👨🏾‍🎨 👨🏿‍🎨 +👩‍🎨 👩🏻‍🎨 👩🏼‍🎨 👩🏽‍🎨 👩🏾‍🎨 👩🏿‍🎨 +🧑‍✈️ 🧑🏻‍✈️ 🧑🏼‍✈️ 🧑🏽‍✈️ 🧑🏾‍✈️ 🧑🏿‍✈️ +👨‍✈️ 👨🏻‍✈️ 👨🏼‍✈️ 👨🏽‍✈️ 👨🏾‍✈️ 👨🏿‍✈️ +👩‍✈️ 👩🏻‍✈️ 👩🏼‍✈️ 👩🏽‍✈️ 👩🏾‍✈️ 👩🏿‍✈️ +🧑‍🚀 🧑🏻‍🚀 🧑🏼‍🚀 🧑🏽‍🚀 🧑🏾‍🚀 🧑🏿‍🚀 +👨‍🚀 👨🏻‍🚀 👨🏼‍🚀 👨🏽‍🚀 👨🏾‍🚀 👨🏿‍🚀 +👩‍🚀 👩🏻‍🚀 👩🏼‍🚀 👩🏽‍🚀 👩🏾‍🚀 👩🏿‍🚀 +🧑‍🚒 🧑🏻‍🚒 🧑🏼‍🚒 🧑🏽‍🚒 🧑🏾‍🚒 🧑🏿‍🚒 +👨‍🚒 👨🏻‍🚒 👨🏼‍🚒 👨🏽‍🚒 👨🏾‍🚒 👨🏿‍🚒 +👩‍🚒 👩🏻‍🚒 👩🏼‍🚒 👩🏽‍🚒 👩🏾‍🚒 👩🏿‍🚒 +👮 👮🏻 👮🏼 👮🏽 👮🏾 👮🏿 +👮‍♂️ 👮🏻‍♂️ 👮🏼‍♂️ 👮🏽‍♂️ 👮🏾‍♂️ 👮🏿‍♂️ +👮‍♀️ 👮🏻‍♀️ 👮🏼‍♀️ 👮🏽‍♀️ 👮🏾‍♀️ 👮🏿‍♀️ +🕵️ 🕵🏻 🕵🏼 🕵🏽 🕵🏾 🕵🏿 +🕵️‍♂️ 🕵🏻‍♂️ 🕵🏼‍♂️ 🕵🏽‍♂️ 🕵🏾‍♂️ 🕵🏿‍♂️ +🕵️‍♀️ 🕵🏻‍♀️ 🕵🏼‍♀️ 🕵🏽‍♀️ 🕵🏾‍♀️ 🕵🏿‍♀️ +💂 💂🏻 💂🏼 💂🏽 💂🏾 💂🏿 +💂‍♂️ 💂🏻‍♂️ 💂🏼‍♂️ 💂🏽‍♂️ 💂🏾‍♂️ 💂🏿‍♂️ +💂‍♀️ 💂🏻‍♀️ 💂🏼‍♀️ 💂🏽‍♀️ 💂🏾‍♀️ 💂🏿‍♀️ +🥷 🥷🏻 🥷🏼 🥷🏽 🥷🏾 🥷🏿 +👷 👷🏻 👷🏼 👷🏽 👷🏾 👷🏿 +👷‍♂️ 👷🏻‍♂️ 👷🏼‍♂️ 👷🏽‍♂️ 👷🏾‍♂️ 👷🏿‍♂️ +👷‍♀️ 👷🏻‍♀️ 👷🏼‍♀️ 👷🏽‍♀️ 👷🏾‍♀️ 👷🏿‍♀️ +🫅 🫅🏻 🫅🏼 🫅🏽 🫅🏾 🫅🏿 +🤴 🤴🏻 🤴🏼 🤴🏽 🤴🏾 🤴🏿 +👸 👸🏻 👸🏼 👸🏽 👸🏾 👸🏿 +👳 👳🏻 👳🏼 👳🏽 👳🏾 👳🏿 +👳‍♂️ 👳🏻‍♂️ 👳🏼‍♂️ 👳🏽‍♂️ 👳🏾‍♂️ 👳🏿‍♂️ +👳‍♀️ 👳🏻‍♀️ 👳🏼‍♀️ 👳🏽‍♀️ 👳🏾‍♀️ 👳🏿‍♀️ +👲 👲🏻 👲🏼 👲🏽 👲🏾 👲🏿 +🧕 🧕🏻 🧕🏼 🧕🏽 🧕🏾 🧕🏿 +🤵 🤵🏻 🤵🏼 🤵🏽 🤵🏾 🤵🏿 +🤵‍♂️ 🤵🏻‍♂️ 🤵🏼‍♂️ 🤵🏽‍♂️ 🤵🏾‍♂️ 🤵🏿‍♂️ +🤵‍♀️ 🤵🏻‍♀️ 🤵🏼‍♀️ 🤵🏽‍♀️ 🤵🏾‍♀️ 🤵🏿‍♀️ +👰 👰🏻 👰🏼 👰🏽 👰🏾 👰🏿 +👰‍♂️ 👰🏻‍♂️ 👰🏼‍♂️ 👰🏽‍♂️ 👰🏾‍♂️ 👰🏿‍♂️ +👰‍♀️ 👰🏻‍♀️ 👰🏼‍♀️ 👰🏽‍♀️ 👰🏾‍♀️ 👰🏿‍♀️ +🤰 🤰🏻 🤰🏼 🤰🏽 🤰🏾 🤰🏿 +🫃 🫃🏻 🫃🏼 🫃🏽 🫃🏾 🫃🏿 +🫄 🫄🏻 🫄🏼 🫄🏽 🫄🏾 🫄🏿 +🤱 🤱🏻 🤱🏼 🤱🏽 🤱🏾 🤱🏿 +👩‍🍼 👩🏻‍🍼 👩🏼‍🍼 👩🏽‍🍼 👩🏾‍🍼 👩🏿‍🍼 +👨‍🍼 👨🏻‍🍼 👨🏼‍🍼 👨🏽‍🍼 👨🏾‍🍼 👨🏿‍🍼 +🧑‍🍼 🧑🏻‍🍼 🧑🏼‍🍼 🧑🏽‍🍼 🧑🏾‍🍼 🧑🏿‍🍼 +👼 👼🏻 👼🏼 👼🏽 👼🏾 👼🏿 +🎅 🎅🏻 🎅🏼 🎅🏽 🎅🏾 🎅🏿 +🤶 🤶🏻 🤶🏼 🤶🏽 🤶🏾 🤶🏿 +🧑‍🎄 🧑🏻‍🎄 🧑🏼‍🎄 🧑🏽‍🎄 🧑🏾‍🎄 🧑🏿‍🎄 +🦸 🦸🏻 🦸🏼 🦸🏽 🦸🏾 🦸🏿 +🦸‍♂️ 🦸🏻‍♂️ 🦸🏼‍♂️ 🦸🏽‍♂️ 🦸🏾‍♂️ 🦸🏿‍♂️ +🦸‍♀️ 🦸🏻‍♀️ 🦸🏼‍♀️ 🦸🏽‍♀️ 🦸🏾‍♀️ 🦸🏿‍♀️ +🦹 🦹🏻 🦹🏼 🦹🏽 🦹🏾 🦹🏿 +🦹‍♂️ 🦹🏻‍♂️ 🦹🏼‍♂️ 🦹🏽‍♂️ 🦹🏾‍♂️ 🦹🏿‍♂️ +🦹‍♀️ 🦹🏻‍♀️ 🦹🏼‍♀️ 🦹🏽‍♀️ 🦹🏾‍♀️ 🦹🏿‍♀️ +🧙 🧙🏻 🧙🏼 🧙🏽 🧙🏾 🧙🏿 +🧙‍♂️ 🧙🏻‍♂️ 🧙🏼‍♂️ 🧙🏽‍♂️ 🧙🏾‍♂️ 🧙🏿‍♂️ +🧙‍♀️ 🧙🏻‍♀️ 🧙🏼‍♀️ 🧙🏽‍♀️ 🧙🏾‍♀️ 🧙🏿‍♀️ +🧚 🧚🏻 🧚🏼 🧚🏽 🧚🏾 🧚🏿 +🧚‍♂️ 🧚🏻‍♂️ 🧚🏼‍♂️ 🧚🏽‍♂️ 🧚🏾‍♂️ 🧚🏿‍♂️ +🧚‍♀️ 🧚🏻‍♀️ 🧚🏼‍♀️ 🧚🏽‍♀️ 🧚🏾‍♀️ 🧚🏿‍♀️ +🧛 🧛🏻 🧛🏼 🧛🏽 🧛🏾 🧛🏿 +🧛‍♂️ 🧛🏻‍♂️ 🧛🏼‍♂️ 🧛🏽‍♂️ 🧛🏾‍♂️ 🧛🏿‍♂️ +🧛‍♀️ 🧛🏻‍♀️ 🧛🏼‍♀️ 🧛🏽‍♀️ 🧛🏾‍♀️ 🧛🏿‍♀️ +🧜 🧜🏻 🧜🏼 🧜🏽 🧜🏾 🧜🏿 +🧜‍♂️ 🧜🏻‍♂️ 🧜🏼‍♂️ 🧜🏽‍♂️ 🧜🏾‍♂️ 🧜🏿‍♂️ +🧜‍♀️ 🧜🏻‍♀️ 🧜🏼‍♀️ 🧜🏽‍♀️ 🧜🏾‍♀️ 🧜🏿‍♀️ +🧝 🧝🏻 🧝🏼 🧝🏽 🧝🏾 🧝🏿 +🧝‍♂️ 🧝🏻‍♂️ 🧝🏼‍♂️ 🧝🏽‍♂️ 🧝🏾‍♂️ 🧝🏿‍♂️ +🧝‍♀️ 🧝🏻‍♀️ 🧝🏼‍♀️ 🧝🏽‍♀️ 🧝🏾‍♀️ 🧝🏿‍♀️ +🧞 +🧞‍♂️ +🧞‍♀️ +🧟 +🧟‍♂️ +🧟‍♀️ +🧌 +💆 💆🏻 💆🏼 💆🏽 💆🏾 💆🏿 +💆‍♂️ 💆🏻‍♂️ 💆🏼‍♂️ 💆🏽‍♂️ 💆🏾‍♂️ 💆🏿‍♂️ +💆‍♀️ 💆🏻‍♀️ 💆🏼‍♀️ 💆🏽‍♀️ 💆🏾‍♀️ 💆🏿‍♀️ +💇 💇🏻 💇🏼 💇🏽 💇🏾 💇🏿 +💇‍♂️ 💇🏻‍♂️ 💇🏼‍♂️ 💇🏽‍♂️ 💇🏾‍♂️ 💇🏿‍♂️ +💇‍♀️ 💇🏻‍♀️ 💇🏼‍♀️ 💇🏽‍♀️ 💇🏾‍♀️ 💇🏿‍♀️ +🚶 🚶🏻 🚶🏼 🚶🏽 🚶🏾 🚶🏿 +🚶‍♂️ 🚶🏻‍♂️ 🚶🏼‍♂️ 🚶🏽‍♂️ 🚶🏾‍♂️ 🚶🏿‍♂️ +🚶‍♀️ 🚶🏻‍♀️ 🚶🏼‍♀️ 🚶🏽‍♀️ 🚶🏾‍♀️ 🚶🏿‍♀️ +🚶‍➡️ 🚶🏻‍➡️ 🚶🏼‍➡️ 🚶🏽‍➡️ 🚶🏾‍➡️ 🚶🏿‍➡️ +🚶‍♀️‍➡️ 🚶🏻‍♀️‍➡️ 🚶🏼‍♀️‍➡️ 🚶🏽‍♀️‍➡️ 🚶🏾‍♀️‍➡️ 🚶🏿‍♀️‍➡️ +🚶‍♂️‍➡️ 🚶🏻‍♂️‍➡️ 🚶🏼‍♂️‍➡️ 🚶🏽‍♂️‍➡️ 🚶🏾‍♂️‍➡️ 🚶🏿‍♂️‍➡️ +🧍 🧍🏻 🧍🏼 🧍🏽 🧍🏾 🧍🏿 +🧍‍♂️ 🧍🏻‍♂️ 🧍🏼‍♂️ 🧍🏽‍♂️ 🧍🏾‍♂️ 🧍🏿‍♂️ +🧍‍♀️ 🧍🏻‍♀️ 🧍🏼‍♀️ 🧍🏽‍♀️ 🧍🏾‍♀️ 🧍🏿‍♀️ +🧎 🧎🏻 🧎🏼 🧎🏽 🧎🏾 🧎🏿 +🧎‍♂️ 🧎🏻‍♂️ 🧎🏼‍♂️ 🧎🏽‍♂️ 🧎🏾‍♂️ 🧎🏿‍♂️ +🧎‍♀️ 🧎🏻‍♀️ 🧎🏼‍♀️ 🧎🏽‍♀️ 🧎🏾‍♀️ 🧎🏿‍♀️ +🧎‍➡️ 🧎🏻‍➡️ 🧎🏼‍➡️ 🧎🏽‍➡️ 🧎🏾‍➡️ 🧎🏿‍➡️ +🧎‍♀️‍➡️ 🧎🏻‍♀️‍➡️ 🧎🏼‍♀️‍➡️ 🧎🏽‍♀️‍➡️ 🧎🏾‍♀️‍➡️ 🧎🏿‍♀️‍➡️ +🧎‍♂️‍➡️ 🧎🏻‍♂️‍➡️ 🧎🏼‍♂️‍➡️ 🧎🏽‍♂️‍➡️ 🧎🏾‍♂️‍➡️ 🧎🏿‍♂️‍➡️ +🧑‍🦯 🧑🏻‍🦯 🧑🏼‍🦯 🧑🏽‍🦯 🧑🏾‍🦯 🧑🏿‍🦯 +🧑‍🦯‍➡️ 🧑🏻‍🦯‍➡️ 🧑🏼‍🦯‍➡️ 🧑🏽‍🦯‍➡️ 🧑🏾‍🦯‍➡️ 🧑🏿‍🦯‍➡️ +👨‍🦯 👨🏻‍🦯 👨🏼‍🦯 👨🏽‍🦯 👨🏾‍🦯 👨🏿‍🦯 +👨‍🦯‍➡️ 👨🏻‍🦯‍➡️ 👨🏼‍🦯‍➡️ 👨🏽‍🦯‍➡️ 👨🏾‍🦯‍➡️ 👨🏿‍🦯‍➡️ +👩‍🦯 👩🏻‍🦯 👩🏼‍🦯 👩🏽‍🦯 👩🏾‍🦯 👩🏿‍🦯 +👩‍🦯‍➡️ 👩🏻‍🦯‍➡️ 👩🏼‍🦯‍➡️ 👩🏽‍🦯‍➡️ 👩🏾‍🦯‍➡️ 👩🏿‍🦯‍➡️ +🧑‍🦼 🧑🏻‍🦼 🧑🏼‍🦼 🧑🏽‍🦼 🧑🏾‍🦼 🧑🏿‍🦼 +🧑‍🦼‍➡️ 🧑🏻‍🦼‍➡️ 🧑🏼‍🦼‍➡️ 🧑🏽‍🦼‍➡️ 🧑🏾‍🦼‍➡️ 🧑🏿‍🦼‍➡️ +👨‍🦼 👨🏻‍🦼 👨🏼‍🦼 👨🏽‍🦼 👨🏾‍🦼 👨🏿‍🦼 +👨‍🦼‍➡️ 👨🏻‍🦼‍➡️ 👨🏼‍🦼‍➡️ 👨🏽‍🦼‍➡️ 👨🏾‍🦼‍➡️ 👨🏿‍🦼‍➡️ +👩‍🦼 👩🏻‍🦼 👩🏼‍🦼 👩🏽‍🦼 👩🏾‍🦼 👩🏿‍🦼 +👩‍🦼‍➡️ 👩🏻‍🦼‍➡️ 👩🏼‍🦼‍➡️ 👩🏽‍🦼‍➡️ 👩🏾‍🦼‍➡️ 👩🏿‍🦼‍➡️ +🧑‍🦽 🧑🏻‍🦽 🧑🏼‍🦽 🧑🏽‍🦽 🧑🏾‍🦽 🧑🏿‍🦽 +🧑‍🦽‍➡️ 🧑🏻‍🦽‍➡️ 🧑🏼‍🦽‍➡️ 🧑🏽‍🦽‍➡️ 🧑🏾‍🦽‍➡️ 🧑🏿‍🦽‍➡️ +👨‍🦽 👨🏻‍🦽 👨🏼‍🦽 👨🏽‍🦽 👨🏾‍🦽 👨🏿‍🦽 +👨‍🦽‍➡️ 👨🏻‍🦽‍➡️ 👨🏼‍🦽‍➡️ 👨🏽‍🦽‍➡️ 👨🏾‍🦽‍➡️ 👨🏿‍🦽‍➡️ +👩‍🦽 👩🏻‍🦽 👩🏼‍🦽 👩🏽‍🦽 👩🏾‍🦽 👩🏿‍🦽 +👩‍🦽‍➡️ 👩🏻‍🦽‍➡️ 👩🏼‍🦽‍➡️ 👩🏽‍🦽‍➡️ 👩🏾‍🦽‍➡️ 👩🏿‍🦽‍➡️ +🏃 🏃🏻 🏃🏼 🏃🏽 🏃🏾 🏃🏿 +🏃‍♂️ 🏃🏻‍♂️ 🏃🏼‍♂️ 🏃🏽‍♂️ 🏃🏾‍♂️ 🏃🏿‍♂️ +🏃‍♀️ 🏃🏻‍♀️ 🏃🏼‍♀️ 🏃🏽‍♀️ 🏃🏾‍♀️ 🏃🏿‍♀️ +🏃‍➡️ 🏃🏻‍➡️ 🏃🏼‍➡️ 🏃🏽‍➡️ 🏃🏾‍➡️ 🏃🏿‍➡️ +🏃‍♀️‍➡️ 🏃🏻‍♀️‍➡️ 🏃🏼‍♀️‍➡️ 🏃🏽‍♀️‍➡️ 🏃🏾‍♀️‍➡️ 🏃🏿‍♀️‍➡️ +🏃‍♂️‍➡️ 🏃🏻‍♂️‍➡️ 🏃🏼‍♂️‍➡️ 🏃🏽‍♂️‍➡️ 🏃🏾‍♂️‍➡️ 🏃🏿‍♂️‍➡️ +💃 💃🏻 💃🏼 💃🏽 💃🏾 💃🏿 +🕺 🕺🏻 🕺🏼 🕺🏽 🕺🏾 🕺🏿 +🕴️ 🕴🏻 🕴🏼 🕴🏽 🕴🏾 🕴🏿 +👯 +👯‍♂️ +👯‍♀️ +🧖 🧖🏻 🧖🏼 🧖🏽 🧖🏾 🧖🏿 +🧖‍♂️ 🧖🏻‍♂️ 🧖🏼‍♂️ 🧖🏽‍♂️ 🧖🏾‍♂️ 🧖🏿‍♂️ +🧖‍♀️ 🧖🏻‍♀️ 🧖🏼‍♀️ 🧖🏽‍♀️ 🧖🏾‍♀️ 🧖🏿‍♀️ +🧗 🧗🏻 🧗🏼 🧗🏽 🧗🏾 🧗🏿 +🧗‍♂️ 🧗🏻‍♂️ 🧗🏼‍♂️ 🧗🏽‍♂️ 🧗🏾‍♂️ 🧗🏿‍♂️ +🧗‍♀️ 🧗🏻‍♀️ 🧗🏼‍♀️ 🧗🏽‍♀️ 🧗🏾‍♀️ 🧗🏿‍♀️ +🤺 +🏇 🏇🏻 🏇🏼 🏇🏽 🏇🏾 🏇🏿 +⛷️ +🏂 🏂🏻 🏂🏼 🏂🏽 🏂🏾 🏂🏿 +🏌️ 🏌🏻 🏌🏼 🏌🏽 🏌🏾 🏌🏿 +🏌️‍♂️ 🏌🏻‍♂️ 🏌🏼‍♂️ 🏌🏽‍♂️ 🏌🏾‍♂️ 🏌🏿‍♂️ +🏌️‍♀️ 🏌🏻‍♀️ 🏌🏼‍♀️ 🏌🏽‍♀️ 🏌🏾‍♀️ 🏌🏿‍♀️ +🏄 🏄🏻 🏄🏼 🏄🏽 🏄🏾 🏄🏿 +🏄‍♂️ 🏄🏻‍♂️ 🏄🏼‍♂️ 🏄🏽‍♂️ 🏄🏾‍♂️ 🏄🏿‍♂️ +🏄‍♀️ 🏄🏻‍♀️ 🏄🏼‍♀️ 🏄🏽‍♀️ 🏄🏾‍♀️ 🏄🏿‍♀️ +🚣 🚣🏻 🚣🏼 🚣🏽 🚣🏾 🚣🏿 +🚣‍♂️ 🚣🏻‍♂️ 🚣🏼‍♂️ 🚣🏽‍♂️ 🚣🏾‍♂️ 🚣🏿‍♂️ +🚣‍♀️ 🚣🏻‍♀️ 🚣🏼‍♀️ 🚣🏽‍♀️ 🚣🏾‍♀️ 🚣🏿‍♀️ +🏊 🏊🏻 🏊🏼 🏊🏽 🏊🏾 🏊🏿 +🏊‍♂️ 🏊🏻‍♂️ 🏊🏼‍♂️ 🏊🏽‍♂️ 🏊🏾‍♂️ 🏊🏿‍♂️ +🏊‍♀️ 🏊🏻‍♀️ 🏊🏼‍♀️ 🏊🏽‍♀️ 🏊🏾‍♀️ 🏊🏿‍♀️ +⛹️ ⛹🏻 ⛹🏼 ⛹🏽 ⛹🏾 ⛹🏿 +⛹️‍♂️ ⛹🏻‍♂️ ⛹🏼‍♂️ ⛹🏽‍♂️ ⛹🏾‍♂️ ⛹🏿‍♂️ +⛹️‍♀️ ⛹🏻‍♀️ ⛹🏼‍♀️ ⛹🏽‍♀️ ⛹🏾‍♀️ ⛹🏿‍♀️ +🏋️ 🏋🏻 🏋🏼 🏋🏽 🏋🏾 🏋🏿 +🏋️‍♂️ 🏋🏻‍♂️ 🏋🏼‍♂️ 🏋🏽‍♂️ 🏋🏾‍♂️ 🏋🏿‍♂️ +🏋️‍♀️ 🏋🏻‍♀️ 🏋🏼‍♀️ 🏋🏽‍♀️ 🏋🏾‍♀️ 🏋🏿‍♀️ +🚴 🚴🏻 🚴🏼 🚴🏽 🚴🏾 🚴🏿 +🚴‍♂️ 🚴🏻‍♂️ 🚴🏼‍♂️ 🚴🏽‍♂️ 🚴🏾‍♂️ 🚴🏿‍♂️ +🚴‍♀️ 🚴🏻‍♀️ 🚴🏼‍♀️ 🚴🏽‍♀️ 🚴🏾‍♀️ 🚴🏿‍♀️ +🚵 🚵🏻 🚵🏼 🚵🏽 🚵🏾 🚵🏿 +🚵‍♂️ 🚵🏻‍♂️ 🚵🏼‍♂️ 🚵🏽‍♂️ 🚵🏾‍♂️ 🚵🏿‍♂️ +🚵‍♀️ 🚵🏻‍♀️ 🚵🏼‍♀️ 🚵🏽‍♀️ 🚵🏾‍♀️ 🚵🏿‍♀️ +🤸 🤸🏻 🤸🏼 🤸🏽 🤸🏾 🤸🏿 +🤸‍♂️ 🤸🏻‍♂️ 🤸🏼‍♂️ 🤸🏽‍♂️ 🤸🏾‍♂️ 🤸🏿‍♂️ +🤸‍♀️ 🤸🏻‍♀️ 🤸🏼‍♀️ 🤸🏽‍♀️ 🤸🏾‍♀️ 🤸🏿‍♀️ +🤼 +🤼‍♂️ +🤼‍♀️ +🤽 🤽🏻 🤽🏼 🤽🏽 🤽🏾 🤽🏿 +🤽‍♂️ 🤽🏻‍♂️ 🤽🏼‍♂️ 🤽🏽‍♂️ 🤽🏾‍♂️ 🤽🏿‍♂️ +🤽‍♀️ 🤽🏻‍♀️ 🤽🏼‍♀️ 🤽🏽‍♀️ 🤽🏾‍♀️ 🤽🏿‍♀️ +🤾 🤾🏻 🤾🏼 🤾🏽 🤾🏾 🤾🏿 +🤾‍♂️ 🤾🏻‍♂️ 🤾🏼‍♂️ 🤾🏽‍♂️ 🤾🏾‍♂️ 🤾🏿‍♂️ +🤾‍♀️ 🤾🏻‍♀️ 🤾🏼‍♀️ 🤾🏽‍♀️ 🤾🏾‍♀️ 🤾🏿‍♀️ +🤹 🤹🏻 🤹🏼 🤹🏽 🤹🏾 🤹🏿 +🤹‍♂️ 🤹🏻‍♂️ 🤹🏼‍♂️ 🤹🏽‍♂️ 🤹🏾‍♂️ 🤹🏿‍♂️ +🤹‍♀️ 🤹🏻‍♀️ 🤹🏼‍♀️ 🤹🏽‍♀️ 🤹🏾‍♀️ 🤹🏿‍♀️ +🧘 🧘🏻 🧘🏼 🧘🏽 🧘🏾 🧘🏿 +🧘‍♂️ 🧘🏻‍♂️ 🧘🏼‍♂️ 🧘🏽‍♂️ 🧘🏾‍♂️ 🧘🏿‍♂️ +🧘‍♀️ 🧘🏻‍♀️ 🧘🏼‍♀️ 🧘🏽‍♀️ 🧘🏾‍♀️ 🧘🏿‍♀️ +🛀 🛀🏻 🛀🏼 🛀🏽 🛀🏾 🛀🏿 +🛌 🛌🏻 🛌🏼 🛌🏽 🛌🏾 🛌🏿 +🧑‍🤝‍🧑 🧑🏻‍🤝‍🧑🏻 🧑🏻‍🤝‍🧑🏼 🧑🏻‍🤝‍🧑🏽 🧑🏻‍🤝‍🧑🏾 🧑🏻‍🤝‍🧑🏿 🧑🏼‍🤝‍🧑🏻 🧑🏼‍🤝‍🧑🏼 🧑🏼‍🤝‍🧑🏽 🧑🏼‍🤝‍🧑🏾 🧑🏼‍🤝‍🧑🏿 🧑🏽‍🤝‍🧑🏻 🧑🏽‍🤝‍🧑🏼 🧑🏽‍🤝‍🧑🏽 🧑🏽‍🤝‍🧑🏾 🧑🏽‍🤝‍🧑🏿 🧑🏾‍🤝‍🧑🏻 🧑🏾‍🤝‍🧑🏼 🧑🏾‍🤝‍🧑🏽 🧑🏾‍🤝‍🧑🏾 🧑🏾‍🤝‍🧑🏿 🧑🏿‍🤝‍🧑🏻 🧑🏿‍🤝‍🧑🏼 🧑🏿‍🤝‍🧑🏽 🧑🏿‍🤝‍🧑🏾 🧑🏿‍🤝‍🧑🏿 +👭 👭🏻 👭🏼 👭🏽 👭🏾 👭🏿 +👫 👫🏻 👫🏼 👫🏽 👫🏾 👫🏿 +👬 👬🏻 👬🏼 👬🏽 👬🏾 👬🏿 +💏 💏🏻 💏🏼 💏🏽 💏🏾 💏🏿 +👩‍❤️‍💋‍👨 👩🏻‍❤️‍💋‍👨🏻 👩🏻‍❤️‍💋‍👨🏼 👩🏻‍❤️‍💋‍👨🏽 👩🏻‍❤️‍💋‍👨🏾 👩🏻‍❤️‍💋‍👨🏿 👩🏼‍❤️‍💋‍👨🏻 👩🏼‍❤️‍💋‍👨🏼 👩🏼‍❤️‍💋‍👨🏽 👩🏼‍❤️‍💋‍👨🏾 👩🏼‍❤️‍💋‍👨🏿 👩🏽‍❤️‍💋‍👨🏻 👩🏽‍❤️‍💋‍👨🏼 👩🏽‍❤️‍💋‍👨🏽 👩🏽‍❤️‍💋‍👨🏾 👩🏽‍❤️‍💋‍👨🏿 👩🏾‍❤️‍💋‍👨🏻 👩🏾‍❤️‍💋‍👨🏼 👩🏾‍❤️‍💋‍👨🏽 👩🏾‍❤️‍💋‍👨🏾 👩🏾‍❤️‍💋‍👨🏿 👩🏿‍❤️‍💋‍👨🏻 👩🏿‍❤️‍💋‍👨🏼 👩🏿‍❤️‍💋‍👨🏽 👩🏿‍❤️‍💋‍👨🏾 👩🏿‍❤️‍💋‍👨🏿 +👨‍❤️‍💋‍👨 👨🏻‍❤️‍💋‍👨🏻 👨🏻‍❤️‍💋‍👨🏼 👨🏻‍❤️‍💋‍👨🏽 👨🏻‍❤️‍💋‍👨🏾 👨🏻‍❤️‍💋‍👨🏿 👨🏼‍❤️‍💋‍👨🏻 👨🏼‍❤️‍💋‍👨🏼 👨🏼‍❤️‍💋‍👨🏽 👨🏼‍❤️‍💋‍👨🏾 👨🏼‍❤️‍💋‍👨🏿 👨🏽‍❤️‍💋‍👨🏻 👨🏽‍❤️‍💋‍👨🏼 👨🏽‍❤️‍💋‍👨🏽 👨🏽‍❤️‍💋‍👨🏾 👨🏽‍❤️‍💋‍👨🏿 👨🏾‍❤️‍💋‍👨🏻 👨🏾‍❤️‍💋‍👨🏼 👨🏾‍❤️‍💋‍👨🏽 👨🏾‍❤️‍💋‍👨🏾 👨🏾‍❤️‍💋‍👨🏿 👨🏿‍❤️‍💋‍👨🏻 👨🏿‍❤️‍💋‍👨🏼 👨🏿‍❤️‍💋‍👨🏽 👨🏿‍❤️‍💋‍👨🏾 👨🏿‍❤️‍💋‍👨🏿 +👩‍❤️‍💋‍👩 👩🏻‍❤️‍💋‍👩🏻 👩🏻‍❤️‍💋‍👩🏼 👩🏻‍❤️‍💋‍👩🏽 👩🏻‍❤️‍💋‍👩🏾 👩🏻‍❤️‍💋‍👩🏿 👩🏼‍❤️‍💋‍👩🏻 👩🏼‍❤️‍💋‍👩🏼 👩🏼‍❤️‍💋‍👩🏽 👩🏼‍❤️‍💋‍👩🏾 👩🏼‍❤️‍💋‍👩🏿 👩🏽‍❤️‍💋‍👩🏻 👩🏽‍❤️‍💋‍👩🏼 👩🏽‍❤️‍💋‍👩🏽 👩🏽‍❤️‍💋‍👩🏾 👩🏽‍❤️‍💋‍👩🏿 👩🏾‍❤️‍💋‍👩🏻 👩🏾‍❤️‍💋‍👩🏼 👩🏾‍❤️‍💋‍👩🏽 👩🏾‍❤️‍💋‍👩🏾 👩🏾‍❤️‍💋‍👩🏿 👩🏿‍❤️‍💋‍👩🏻 👩🏿‍❤️‍💋‍👩🏼 👩🏿‍❤️‍💋‍👩🏽 👩🏿‍❤️‍💋‍👩🏾 👩🏿‍❤️‍💋‍👩🏿 +💑 💑🏻 💑🏼 💑🏽 💑🏾 💑🏿 +👩‍❤️‍👨 👩🏻‍❤️‍👨🏻 👩🏻‍❤️‍👨🏼 👩🏻‍❤️‍👨🏽 👩🏻‍❤️‍👨🏾 👩🏻‍❤️‍👨🏿 👩🏼‍❤️‍👨🏻 👩🏼‍❤️‍👨🏼 👩🏼‍❤️‍👨🏽 👩🏼‍❤️‍👨🏾 👩🏼‍❤️‍👨🏿 👩🏽‍❤️‍👨🏻 👩🏽‍❤️‍👨🏼 👩🏽‍❤️‍👨🏽 👩🏽‍❤️‍👨🏾 👩🏽‍❤️‍👨🏿 👩🏾‍❤️‍👨🏻 👩🏾‍❤️‍👨🏼 👩🏾‍❤️‍👨🏽 👩🏾‍❤️‍👨🏾 👩🏾‍❤️‍👨🏿 👩🏿‍❤️‍👨🏻 👩🏿‍❤️‍👨🏼 👩🏿‍❤️‍👨🏽 👩🏿‍❤️‍👨🏾 👩🏿‍❤️‍👨🏿 +👨‍❤️‍👨 👨🏻‍❤️‍👨🏻 👨🏻‍❤️‍👨🏼 👨🏻‍❤️‍👨🏽 👨🏻‍❤️‍👨🏾 👨🏻‍❤️‍👨🏿 👨🏼‍❤️‍👨🏻 👨🏼‍❤️‍👨🏼 👨🏼‍❤️‍👨🏽 👨🏼‍❤️‍👨🏾 👨🏼‍❤️‍👨🏿 👨🏽‍❤️‍👨🏻 👨🏽‍❤️‍👨🏼 👨🏽‍❤️‍👨🏽 👨🏽‍❤️‍👨🏾 👨🏽‍❤️‍👨🏿 👨🏾‍❤️‍👨🏻 👨🏾‍❤️‍👨🏼 👨🏾‍❤️‍👨🏽 👨🏾‍❤️‍👨🏾 👨🏾‍❤️‍👨🏿 👨🏿‍❤️‍👨🏻 👨🏿‍❤️‍👨🏼 👨🏿‍❤️‍👨🏽 👨🏿‍❤️‍👨🏾 👨🏿‍❤️‍👨🏿 +👩‍❤️‍👩 👩🏻‍❤️‍👩🏻 👩🏻‍❤️‍👩🏼 👩🏻‍❤️‍👩🏽 👩🏻‍❤️‍👩🏾 👩🏻‍❤️‍👩🏿 👩🏼‍❤️‍👩🏻 👩🏼‍❤️‍👩🏼 👩🏼‍❤️‍👩🏽 👩🏼‍❤️‍👩🏾 👩🏼‍❤️‍👩🏿 👩🏽‍❤️‍👩🏻 👩🏽‍❤️‍👩🏼 👩🏽‍❤️‍👩🏽 👩🏽‍❤️‍👩🏾 👩🏽‍❤️‍👩🏿 👩🏾‍❤️‍👩🏻 👩🏾‍❤️‍👩🏼 👩🏾‍❤️‍👩🏽 👩🏾‍❤️‍👩🏾 👩🏾‍❤️‍👩🏿 👩🏿‍❤️‍👩🏻 👩🏿‍❤️‍👩🏼 👩🏿‍❤️‍👩🏽 👩🏿‍❤️‍👩🏾 👩🏿‍❤️‍👩🏿 +👨‍👩‍👦 +👨‍👩‍👧 +👨‍👩‍👧‍👦 +👨‍👩‍👦‍👦 +👨‍👩‍👧‍👧 +👨‍👨‍👦 +👨‍👨‍👧 +👨‍👨‍👧‍👦 +👨‍👨‍👦‍👦 +👨‍👨‍👧‍👧 +👩‍👩‍👦 +👩‍👩‍👧 +👩‍👩‍👧‍👦 +👩‍👩‍👦‍👦 +👩‍👩‍👧‍👧 +👨‍👦 +👨‍👦‍👦 +👨‍👧 +👨‍👧‍👦 +👨‍👧‍👧 +👩‍👦 +👩‍👦‍👦 +👩‍👧 +👩‍👧‍👦 +👩‍👧‍👧 +🗣️ +👤 +👥 +🫂 +👪 +🧑‍🧑‍🧒 +🧑‍🧑‍🧒‍🧒 +🧑‍🧒 +🧑‍🧒‍🧒 +👣 +🫆 \ No newline at end of file diff --git a/app/src/main/assets/emoji/SMILEYS_AND_EMOTION.txt b/app/src/main/assets/emoji/SMILEYS_AND_EMOTION.txt new file mode 100644 index 0000000000..73218d6fea --- /dev/null +++ b/app/src/main/assets/emoji/SMILEYS_AND_EMOTION.txt @@ -0,0 +1,169 @@ +😀 +😃 +😄 +😁 +😆 +😅 +🤣 +😂 +🙂 +🙃 +🫠 +😉 +😊 +😇 +🥰 +😍 +🤩 +😘 +😗 +☺️ +😚 +😙 +🥲 +😋 +😛 +😜 +🤪 +😝 +🤑 +🤗 +🤭 +🫢 +🫣 +🤫 +🤔 +🫡 +🤐 +🤨 +😐 +😑 +😶 +🫥 +😶‍🌫️ +😏 +😒 +🙄 +😬 +😮‍💨 +🤥 +🫨 +🙂‍↔️ +🙂‍↕️ +😌 +😔 +😪 +🤤 +😴 +🫩 +😷 +🤒 +🤕 +🤢 +🤮 +🤧 +🥵 +🥶 +🥴 +😵 +😵‍💫 +🤯 +🤠 +🥳 +🥸 +😎 +🤓 +🧐 +😕 +🫤 +😟 +🙁 +☹️ +😮 +😯 +😲 +😳 +🥺 +🥹 +😦 +😧 +😨 +😰 +😥 +😢 +😭 +😱 +😖 +😣 +😞 +😓 +😩 +😫 +🥱 +😤 +😡 +😠 +🤬 +😈 +👿 +💀 +☠️ +💩 +🤡 +👹 +👺 +👻 +👽 +👾 +🤖 +😺 +😸 +😹 +😻 +😼 +😽 +🙀 +😿 +😾 +🙈 +🙉 +🙊 +💌 +💘 +💝 +💖 +💗 +💓 +💞 +💕 +💟 +❣️ +💔 +❤️‍🔥 +❤️‍🩹 +❤️ +🩷 +🧡 +💛 +💚 +💙 +🩵 +💜 +🤎 +🖤 +🩶 +🤍 +💋 +💯 +💢 +💥 +💫 +💦 +💨 +🕳️ +💬 +👁️‍🗨️ +🗨️ +🗯️ +💭 +💤 \ No newline at end of file diff --git a/app/src/main/assets/emoji/SYMBOLS.txt b/app/src/main/assets/emoji/SYMBOLS.txt new file mode 100644 index 0000000000..02effebc72 --- /dev/null +++ b/app/src/main/assets/emoji/SYMBOLS.txt @@ -0,0 +1,224 @@ +🏧 +🚮 +🚰 +♿ +🚹 +🚺 +🚻 +🚼 +🚾 +🛂 +🛃 +🛄 +🛅 +⚠️ +🚸 +⛔ +🚫 +🚳 +🚭 +🚯 +🚱 +🚷 +📵 +🔞 +☢️ +☣️ +⬆️ +↗️ +➡️ +↘️ +⬇️ +↙️ +⬅️ +↖️ +↕️ +↔️ +↩️ +↪️ +⤴️ +⤵️ +🔃 +🔄 +🔙 +🔚 +🔛 +🔜 +🔝 +🛐 +⚛️ +🕉️ +✡️ +☸️ +☯️ +✝️ +☦️ +☪️ +☮️ +🕎 +🔯 +🪯 +♈ +♉ +♊ +♋ +♌ +♍ +♎ +♏ +♐ +♑ +♒ +♓ +⛎ +🔀 +🔁 +🔂 +▶️ +⏩ +⏭️ +⏯️ +◀️ +⏪ +⏮️ +🔼 +⏫ +🔽 +⏬ +⏸️ +⏹️ +⏺️ +⏏️ +🎦 +🔅 +🔆 +📶 +🛜 +📳 +📴 +♀️ +♂️ +⚧️ +✖️ +➕ +➖ +➗ +🟰 +♾️ +‼️ +⁉️ +❓ +❔ +❕ +❗ +〰️ +💱 +💲 +⚕️ +♻️ +⚜️ +🔱 +📛 +🔰 +⭕ +✅ +☑️ +✔️ +❌ +❎ +➰ +➿ +〽️ +✳️ +✴️ +❇️ +©️ +®️ +™️ +🫟 +#️⃣ +*️⃣ +0️⃣ +1️⃣ +2️⃣ +3️⃣ +4️⃣ +5️⃣ +6️⃣ +7️⃣ +8️⃣ +9️⃣ +🔟 +🔠 +🔡 +🔢 +🔣 +🔤 +🅰️ +🆎 +🅱️ +🆑 +🆒 +🆓 +ℹ️ +🆔 +Ⓜ️ +🆕 +🆖 +🅾️ +🆗 +🅿️ +🆘 +🆙 +🆚 +🈁 +🈂️ +🈷️ +🈶 +🈯 +🉐 +🈹 +🈚 +🈲 +🉑 +🈸 +🈴 +🈳 +㊗️ +㊙️ +🈺 +🈵 +🔴 +🟠 +🟡 +🟢 +🔵 +🟣 +🟤 +⚫ +⚪ +🟥 +🟧 +🟨 +🟩 +🟦 +🟪 +🟫 +⬛ +⬜ +◼️ +◻️ +◾ +◽ +▪️ +▫️ +🔶 +🔷 +🔸 +🔹 +🔺 +🔻 +💠 +🔘 +🔳 +🔲 diff --git a/app/src/main/assets/emoji/TRAVEL_AND_PLACES.txt b/app/src/main/assets/emoji/TRAVEL_AND_PLACES.txt new file mode 100644 index 0000000000..ff1f0ad4a4 --- /dev/null +++ b/app/src/main/assets/emoji/TRAVEL_AND_PLACES.txt @@ -0,0 +1,218 @@ +🌍 +🌎 +🌏 +🌐 +🗺️ +🗾 +🧭 +🏔️ +⛰️ +🌋 +🗻 +🏕️ +🏖️ +🏜️ +🏝️ +🏞️ +🏟️ +🏛️ +🏗️ +🧱 +🪨 +🪵 +🛖 +🏘️ +🏚️ +🏠 +🏡 +🏢 +🏣 +🏤 +🏥 +🏦 +🏨 +🏩 +🏪 +🏫 +🏬 +🏭 +🏯 +🏰 +💒 +🗼 +🗽 +⛪ +🕌 +🛕 +🕍 +⛩️ +🕋 +⛲ +⛺ +🌁 +🌃 +🏙️ +🌄 +🌅 +🌆 +🌇 +🌉 +♨️ +🎠 +🛝 +🎡 +🎢 +💈 +🎪 +🚂 +🚃 +🚄 +🚅 +🚆 +🚇 +🚈 +🚉 +🚊 +🚝 +🚞 +🚋 +🚌 +🚍 +🚎 +🚐 +🚑 +🚒 +🚓 +🚔 +🚕 +🚖 +🚗 +🚘 +🚙 +🛻 +🚚 +🚛 +🚜 +🏎️ +🏍️ +🛵 +🦽 +🦼 +🛺 +🚲 +🛴 +🛹 +🛼 +🚏 +🛣️ +🛤️ +🛢️ +⛽ +🛞 +🚨 +🚥 +🚦 +🛑 +🚧 +⚓ +🛟 +⛵ +🛶 +🚤 +🛳️ +⛴️ +🛥️ +🚢 +✈️ +🛩️ +🛫 +🛬 +🪂 +💺 +🚁 +🚟 +🚠 +🚡 +🛰️ +🚀 +🛸 +🛎️ +🧳 +⌛ +⏳ +⌚ +⏰ +⏱️ +⏲️ +🕰️ +🕛 +🕧 +🕐 +🕜 +🕑 +🕝 +🕒 +🕞 +🕓 +🕟 +🕔 +🕠 +🕕 +🕡 +🕖 +🕢 +🕗 +🕣 +🕘 +🕤 +🕙 +🕥 +🕚 +🕦 +🌑 +🌒 +🌓 +🌔 +🌕 +🌖 +🌗 +🌘 +🌙 +🌚 +🌛 +🌜 +🌡️ +☀️ +🌝 +🌞 +🪐 +⭐ +🌟 +🌠 +🌌 +☁️ +⛅ +⛈️ +🌤️ +🌥️ +🌦️ +🌧️ +🌨️ +🌩️ +🌪️ +🌫️ +🌬️ +🌀 +🌈 +🌂 +☂️ +☔ +⛱️ +⚡ +❄️ +☃️ +⛄ +☄️ +🔥 +💧 +🌊 \ No newline at end of file diff --git a/app/src/main/assets/emoji/minApi.txt b/app/src/main/assets/emoji/minApi.txt new file mode 100644 index 0000000000..842da2d6be --- /dev/null +++ b/app/src/main/assets/emoji/minApi.txt @@ -0,0 +1,12 @@ +23 🙂 🙃 🤑 🤗 🤔 🤐 🙄 🤒 🤕 🤓 🙁 ☹️ ☠️ 🤖 ❣️ 🕳️ 👁️‍🗨️ 🗨️ 🗯️ 🖐️ 🖖 🤘 🖕 ✍️ 👁️ 🕵️ 🕴️ ⛷️ 🏌️ ⛹️ 🏋️ 🛌 👨‍❤️‍💋‍👨 👩‍❤️‍💋‍👩 👨‍❤️‍👨 👩‍❤️‍👩 👨‍👩‍👧 👨‍👩‍👧‍👦 👨‍👩‍👦‍👦 👨‍👩‍👧‍👧 👨‍👨‍👦 👨‍👨‍👧 👨‍👨‍👧‍👦 👨‍👨‍👦‍👦 👨‍👨‍👧‍👧 👩‍👩‍👦 👩‍👩‍👧 👩‍👩‍👧‍👦 👩‍👩‍👦‍👦 👩‍👩‍👧‍👧 🗣️ 🦁 🦄 🐿️ 🦃 🕊️ 🦀 🕷️ 🕸️ 🦂 🏵️ ☘️ 🌶️ 🧀 🌭 🌮 🌯 🍿 🍾 🍽️ 🏺 🗺️ 🏔️ ⛰️ 🏕️ 🏖️ 🏜️ 🏝️ 🏞️ 🏟️ 🏛️ 🏗️ 🏘️ 🏚️ 🕌 🕍 ⛩️ 🕋 🏙️ 🏎️ 🏍️ 🛣️ 🛤️ 🛢️ 🛳️ ⛴️ 🛥️ 🛩️ 🛫 🛬 🛰️ 🛎️ ⏱️ ⏲️ 🕰️ 🌡️ ⛈️ 🌤️ 🌥️ 🌦️ 🌧️ 🌨️ 🌩️ 🌪️ 🌫️ 🌬️ ☂️ ⛱️ ☃️ ☄️ 🎗️ 🎟️ 🎖️ 🏅 🏐 🏏 🏑 🏒 🏓 🏸 ⛸️ 🕹️ 🖼️ 🕶️ 🛍️ ⛑️ 📿 🎙️ 🎚️ 🎛️ 🖥️ 🖨️ ⌨️ 🖱️ 🖲️ 🎞️ 📽️ 📸 🕯️ 🗞️ 🏷️ 🗳️ 🖋️ 🖊️ 🖌️ 🖍️ 🗂️ 🗒️ 🗓️ 🖇️ 🗃️ 🗄️ 🗑️ 🗝️ ⛏️ ⚒️ 🛠️ 🗡️ ⚔️ 🏹 🛡️ ⚙️ 🗜️ ⚖️ ⛓️ ⚗️ 🛏️ 🛋️ ⚰️ ⚱️ ☢️ ☣️ 🛐 ⚛️ 🕉️ ✡️ ☸️ ☯️ ✝️ ☦️ ☪️ ☮️ 🕎 ⏭️ ⏯️ ⏮️ ⏸️ ⏹️ ⏺️ ⏏️ ⚜️ *️⃣ 🏴 🏳️ +24 🤣 🤥 🤤 🤢 🤧 🤠 🤡 🖤 👋🏻 👋🏼 👋🏽 👋🏾 👋🏿 🤚 🤚🏻 🤚🏼 🤚🏽 🤚🏾 🤚🏿 🖐🏻 🖐🏼 🖐🏽 🖐🏾 🖐🏿 ✋🏻 ✋🏼 ✋🏽 ✋🏾 ✋🏿 🖖🏻 🖖🏼 🖖🏽 🖖🏾 🖖🏿 👌🏻 👌🏼 👌🏽 👌🏾 👌🏿 ✌🏻 ✌🏼 ✌🏽 ✌🏾 ✌🏿 🤞 🤞🏻 🤞🏼 🤞🏽 🤞🏾 🤞🏿 🤘🏻 🤘🏼 🤘🏽 🤘🏾 🤘🏿 🤙 🤙🏻 🤙🏼 🤙🏽 🤙🏾 🤙🏿 👈🏻 👈🏼 👈🏽 👈🏾 👈🏿 👉🏻 👉🏼 👉🏽 👉🏾 👉🏿 👆🏻 👆🏼 👆🏽 👆🏾 👆🏿 🖕🏻 🖕🏼 🖕🏽 🖕🏾 🖕🏿 👇🏻 👇🏼 👇🏽 👇🏾 👇🏿 ☝🏻 ☝🏼 ☝🏽 ☝🏾 ☝🏿 👍🏻 👍🏼 👍🏽 👍🏾 👍🏿 👎🏻 👎🏼 👎🏽 👎🏾 👎🏿 ✊🏻 ✊🏼 ✊🏽 ✊🏾 ✊🏿 👊🏻 👊🏼 👊🏽 👊🏾 👊🏿 🤛 🤛🏻 🤛🏼 🤛🏽 🤛🏾 🤛🏿 🤜 🤜🏻 🤜🏼 🤜🏽 🤜🏾 🤜🏿 👏🏻 👏🏼 👏🏽 👏🏾 👏🏿 🙌🏻 🙌🏼 🙌🏽 🙌🏾 🙌🏿 👐🏻 👐🏼 👐🏽 👐🏾 👐🏿 🤝 🙏🏻 🙏🏼 🙏🏽 🙏🏾 🙏🏿 ✍🏻 ✍🏼 ✍🏽 ✍🏾 ✍🏿 💅🏻 💅🏼 💅🏽 💅🏾 💅🏿 🤳 🤳🏻 🤳🏼 🤳🏽 🤳🏾 🤳🏿 💪🏻 💪🏼 💪🏽 💪🏾 💪🏿 👂🏻 👂🏼 👂🏽 👂🏾 👂🏿 👃🏻 👃🏼 👃🏽 👃🏾 👃🏿 👶🏻 👶🏼 👶🏽 👶🏾 👶🏿 👦🏻 👦🏼 👦🏽 👦🏾 👦🏿 👧🏻 👧🏼 👧🏽 👧🏾 👧🏿 👱🏻 👱🏼 👱🏽 👱🏾 👱🏿 👨🏻 👨🏼 👨🏽 👨🏾 👨🏿 👩🏻 👩🏼 👩🏽 👩🏾 👩🏿 👴🏻 👴🏼 👴🏽 👴🏾 👴🏿 👵🏻 👵🏼 👵🏽 👵🏾 👵🏿 🙍🏻 🙍🏼 🙍🏽 🙍🏾 🙍🏿 🙎🏻 🙎🏼 🙎🏽 🙎🏾 🙎🏿 🙅🏻 🙅🏼 🙅🏽 🙅🏾 🙅🏿 🙆🏻 🙆🏼 🙆🏽 🙆🏾 🙆🏿 💁🏻 💁🏼 💁🏽 💁🏾 💁🏿 🙋🏻 🙋🏼 🙋🏽 🙋🏾 🙋🏿 🙇🏻 🙇🏼 🙇🏽 🙇🏾 🙇🏿 🤦 🤦🏻 🤦🏼 🤦🏽 🤦🏾 🤦🏿 🤷 🤷🏻 🤷🏼 🤷🏽 🤷🏾 🤷🏿 👮🏻 👮🏼 👮🏽 👮🏾 👮🏿 🕵🏻 🕵🏼 🕵🏽 🕵🏾 🕵🏿 💂🏻 💂🏼 💂🏽 💂🏾 💂🏿 👷🏻 👷🏼 👷🏽 👷🏾 👷🏿 🤴 🤴🏻 🤴🏼 🤴🏽 🤴🏾 🤴🏿 👸🏻 👸🏼 👸🏽 👸🏾 👸🏿 👳🏻 👳🏼 👳🏽 👳🏾 👳🏿 👲🏻 👲🏼 👲🏽 👲🏾 👲🏿 🤵 🤵🏻 🤵🏼 🤵🏽 🤵🏾 🤵🏿 👰🏻 👰🏼 👰🏽 👰🏾 👰🏿 🤰 🤰🏻 🤰🏼 🤰🏽 🤰🏾 🤰🏿 👼🏻 👼🏼 👼🏽 👼🏾 👼🏿 🎅🏻 🎅🏼 🎅🏽 🎅🏾 🎅🏿 🤶 🤶🏻 🤶🏼 🤶🏽 🤶🏾 🤶🏿 💆🏻 💆🏼 💆🏽 💆🏾 💆🏿 💇🏻 💇🏼 💇🏽 💇🏾 💇🏿 🚶🏻 🚶🏼 🚶🏽 🚶🏾 🚶🏿 🏃🏻 🏃🏼 🏃🏽 🏃🏾 🏃🏿 💃🏻 💃🏼 💃🏽 💃🏾 💃🏿 🕺 🕺🏻 🕺🏼 🕺🏽 🕺🏾 🕺🏿 🤺 🏄🏻 🏄🏼 🏄🏽 🏄🏾 🏄🏿 🚣🏻 🚣🏼 🚣🏽 🚣🏾 🚣🏿 🏊🏻 🏊🏼 🏊🏽 🏊🏾 🏊🏿 ⛹🏻 ⛹🏼 ⛹🏽 ⛹🏾 ⛹🏿 🏋🏻 🏋🏼 🏋🏽 🏋🏾 🏋🏿 🚴🏻 🚴🏼 🚴🏽 🚴🏾 🚴🏿 🚵🏻 🚵🏼 🚵🏽 🚵🏾 🚵🏿 🤸 🤸🏻 🤸🏼 🤸🏽 🤸🏾 🤸🏿 🤼 🤽 🤽🏻 🤽🏼 🤽🏽 🤽🏾 🤽🏿 🤾 🤾🏻 🤾🏼 🤾🏽 🤾🏾 🤾🏿 🤹 🤹🏻 🤹🏼 🤹🏽 🤹🏾 🤹🏿 🛀🏻 🛀🏼 🛀🏽 🛀🏾 🛀🏿 🦍 🦊 🦌 🦏 🦇 🦅 🦆 🦉 🦎 🦈 🦐 🦑 🦋 🥀 🥝 🥑 🥔 🥕 🥒 🥜 🥐 🥖 🥞 🥓 🥙 🥚 🥘 🥗 🥛 🥂 🥃 🥄 🛵 🛴 🛑 🛶 🥇 🥈 🥉 🥊 🥋 🥅 🥁 🛒 🇦🇨 🇦🇶 🇧🇻 🇨🇵 🇭🇲 🇮🇨 🇸🇭 🇸🇯 🇹🇦 🇺🇲 +25 🤝🏻 🤝🏼 🤝🏽 🤝🏾 🤝🏿 👱‍♀️ 👱🏻‍♀️ 👱🏼‍♀️ 👱🏽‍♀️ 👱🏾‍♀️ 👱🏿‍♀️ 👱‍♂️ 👱🏻‍♂️ 👱🏼‍♂️ 👱🏽‍♂️ 👱🏾‍♂️ 👱🏿‍♂️ 🙍‍♂️ 🙍🏻‍♂️ 🙍🏼‍♂️ 🙍🏽‍♂️ 🙍🏾‍♂️ 🙍🏿‍♂️ 🙍‍♀️ 🙍🏻‍♀️ 🙍🏼‍♀️ 🙍🏽‍♀️ 🙍🏾‍♀️ 🙍🏿‍♀️ 🙎‍♂️ 🙎🏻‍♂️ 🙎🏼‍♂️ 🙎🏽‍♂️ 🙎🏾‍♂️ 🙎🏿‍♂️ 🙎‍♀️ 🙎🏻‍♀️ 🙎🏼‍♀️ 🙎🏽‍♀️ 🙎🏾‍♀️ 🙎🏿‍♀️ 🙅‍♂️ 🙅🏻‍♂️ 🙅🏼‍♂️ 🙅🏽‍♂️ 🙅🏾‍♂️ 🙅🏿‍♂️ 🙅‍♀️ 🙅🏻‍♀️ 🙅🏼‍♀️ 🙅🏽‍♀️ 🙅🏾‍♀️ 🙅🏿‍♀️ 🙆‍♂️ 🙆🏻‍♂️ 🙆🏼‍♂️ 🙆🏽‍♂️ 🙆🏾‍♂️ 🙆🏿‍♂️ 🙆‍♀️ 🙆🏻‍♀️ 🙆🏼‍♀️ 🙆🏽‍♀️ 🙆🏾‍♀️ 🙆🏿‍♀️ 💁‍♂️ 💁🏻‍♂️ 💁🏼‍♂️ 💁🏽‍♂️ 💁🏾‍♂️ 💁🏿‍♂️ 💁‍♀️ 💁🏻‍♀️ 💁🏼‍♀️ 💁🏽‍♀️ 💁🏾‍♀️ 💁🏿‍♀️ 🙋‍♂️ 🙋🏻‍♂️ 🙋🏼‍♂️ 🙋🏽‍♂️ 🙋🏾‍♂️ 🙋🏿‍♂️ 🙋‍♀️ 🙋🏻‍♀️ 🙋🏼‍♀️ 🙋🏽‍♀️ 🙋🏾‍♀️ 🙋🏿‍♀️ 🙇‍♂️ 🙇🏻‍♂️ 🙇🏼‍♂️ 🙇🏽‍♂️ 🙇🏾‍♂️ 🙇🏿‍♂️ 🙇‍♀️ 🙇🏻‍♀️ 🙇🏼‍♀️ 🙇🏽‍♀️ 🙇🏾‍♀️ 🙇🏿‍♀️ 🤦‍♂️ 🤦🏻‍♂️ 🤦🏼‍♂️ 🤦🏽‍♂️ 🤦🏾‍♂️ 🤦🏿‍♂️ 🤦‍♀️ 🤦🏻‍♀️ 🤦🏼‍♀️ 🤦🏽‍♀️ 🤦🏾‍♀️ 🤦🏿‍♀️ 🤷‍♂️ 🤷🏻‍♂️ 🤷🏼‍♂️ 🤷🏽‍♂️ 🤷🏾‍♂️ 🤷🏿‍♂️ 🤷‍♀️ 🤷🏻‍♀️ 🤷🏼‍♀️ 🤷🏽‍♀️ 🤷🏾‍♀️ 🤷🏿‍♀️ 👨‍⚕️ 👨🏻‍⚕️ 👨🏼‍⚕️ 👨🏽‍⚕️ 👨🏾‍⚕️ 👨🏿‍⚕️ 👩‍⚕️ 👩🏻‍⚕️ 👩🏼‍⚕️ 👩🏽‍⚕️ 👩🏾‍⚕️ 👩🏿‍⚕️ 👨‍🎓 👨🏻‍🎓 👨🏼‍🎓 👨🏽‍🎓 👨🏾‍🎓 👨🏿‍🎓 👩‍🎓 👩🏻‍🎓 👩🏼‍🎓 👩🏽‍🎓 👩🏾‍🎓 👩🏿‍🎓 👨‍🏫 👨🏻‍🏫 👨🏼‍🏫 👨🏽‍🏫 👨🏾‍🏫 👨🏿‍🏫 👩‍🏫 👩🏻‍🏫 👩🏼‍🏫 👩🏽‍🏫 👩🏾‍🏫 👩🏿‍🏫 👨‍⚖️ 👨🏻‍⚖️ 👨🏼‍⚖️ 👨🏽‍⚖️ 👨🏾‍⚖️ 👨🏿‍⚖️ 👩‍⚖️ 👩🏻‍⚖️ 👩🏼‍⚖️ 👩🏽‍⚖️ 👩🏾‍⚖️ 👩🏿‍⚖️ 👨‍🌾 👨🏻‍🌾 👨🏼‍🌾 👨🏽‍🌾 👨🏾‍🌾 👨🏿‍🌾 👩‍🌾 👩🏻‍🌾 👩🏼‍🌾 👩🏽‍🌾 👩🏾‍🌾 👩🏿‍🌾 👨‍🍳 👨🏻‍🍳 👨🏼‍🍳 👨🏽‍🍳 👨🏾‍🍳 👨🏿‍🍳 👩‍🍳 👩🏻‍🍳 👩🏼‍🍳 👩🏽‍🍳 👩🏾‍🍳 👩🏿‍🍳 👨‍🔧 👨🏻‍🔧 👨🏼‍🔧 👨🏽‍🔧 👨🏾‍🔧 👨🏿‍🔧 👩‍🔧 👩🏻‍🔧 👩🏼‍🔧 👩🏽‍🔧 👩🏾‍🔧 👩🏿‍🔧 👨‍🏭 👨🏻‍🏭 👨🏼‍🏭 👨🏽‍🏭 👨🏾‍🏭 👨🏿‍🏭 👩‍🏭 👩🏻‍🏭 👩🏼‍🏭 👩🏽‍🏭 👩🏾‍🏭 👩🏿‍🏭 👨‍💼 👨🏻‍💼 👨🏼‍💼 👨🏽‍💼 👨🏾‍💼 👨🏿‍💼 👩‍💼 👩🏻‍💼 👩🏼‍💼 👩🏽‍💼 👩🏾‍💼 👩🏿‍💼 👨‍🔬 👨🏻‍🔬 👨🏼‍🔬 👨🏽‍🔬 👨🏾‍🔬 👨🏿‍🔬 👩‍🔬 👩🏻‍🔬 👩🏼‍🔬 👩🏽‍🔬 👩🏾‍🔬 👩🏿‍🔬 👨‍💻 👨🏻‍💻 👨🏼‍💻 👨🏽‍💻 👨🏾‍💻 👨🏿‍💻 👩‍💻 👩🏻‍💻 👩🏼‍💻 👩🏽‍💻 👩🏾‍💻 👩🏿‍💻 👨‍🎤 👨🏻‍🎤 👨🏼‍🎤 👨🏽‍🎤 👨🏾‍🎤 👨🏿‍🎤 👩‍🎤 👩🏻‍🎤 👩🏼‍🎤 👩🏽‍🎤 👩🏾‍🎤 👩🏿‍🎤 👨‍🎨 👨🏻‍🎨 👨🏼‍🎨 👨🏽‍🎨 👨🏾‍🎨 👨🏿‍🎨 👩‍🎨 👩🏻‍🎨 👩🏼‍🎨 👩🏽‍🎨 👩🏾‍🎨 👩🏿‍🎨 👨‍✈️ 👨🏻‍✈️ 👨🏼‍✈️ 👨🏽‍✈️ 👨🏾‍✈️ 👨🏿‍✈️ 👩‍✈️ 👩🏻‍✈️ 👩🏼‍✈️ 👩🏽‍✈️ 👩🏾‍✈️ 👩🏿‍✈️ 👨‍🚀 👨🏻‍🚀 👨🏼‍🚀 👨🏽‍🚀 👨🏾‍🚀 👨🏿‍🚀 👩‍🚀 👩🏻‍🚀 👩🏼‍🚀 👩🏽‍🚀 👩🏾‍🚀 👩🏿‍🚀 👨‍🚒 👨🏻‍🚒 👨🏼‍🚒 👨🏽‍🚒 👨🏾‍🚒 👨🏿‍🚒 👩‍🚒 👩🏻‍🚒 👩🏼‍🚒 👩🏽‍🚒 👩🏾‍🚒 👩🏿‍🚒 👮‍♂️ 👮🏻‍♂️ 👮🏼‍♂️ 👮🏽‍♂️ 👮🏾‍♂️ 👮🏿‍♂️ 👮‍♀️ 👮🏻‍♀️ 👮🏼‍♀️ 👮🏽‍♀️ 👮🏾‍♀️ 👮🏿‍♀️ 🕵️‍♂️ 🕵🏻‍♂️ 🕵🏼‍♂️ 🕵🏽‍♂️ 🕵🏾‍♂️ 🕵🏿‍♂️ 🕵️‍♀️ 🕵🏻‍♀️ 🕵🏼‍♀️ 🕵🏽‍♀️ 🕵🏾‍♀️ 🕵🏿‍♀️ 💂‍♂️ 💂🏻‍♂️ 💂🏼‍♂️ 💂🏽‍♂️ 💂🏾‍♂️ 💂🏿‍♂️ 💂‍♀️ 💂🏻‍♀️ 💂🏼‍♀️ 💂🏽‍♀️ 💂🏾‍♀️ 💂🏿‍♀️ 👷‍♂️ 👷🏻‍♂️ 👷🏼‍♂️ 👷🏽‍♂️ 👷🏾‍♂️ 👷🏿‍♂️ 👷‍♀️ 👷🏻‍♀️ 👷🏼‍♀️ 👷🏽‍♀️ 👷🏾‍♀️ 👷🏿‍♀️ 👳‍♂️ 👳🏻‍♂️ 👳🏼‍♂️ 👳🏽‍♂️ 👳🏾‍♂️ 👳🏿‍♂️ 👳‍♀️ 👳🏻‍♀️ 👳🏼‍♀️ 👳🏽‍♀️ 👳🏾‍♀️ 👳🏿‍♀️ 💆‍♂️ 💆🏻‍♂️ 💆🏼‍♂️ 💆🏽‍♂️ 💆🏾‍♂️ 💆🏿‍♂️ 💆‍♀️ 💆🏻‍♀️ 💆🏼‍♀️ 💆🏽‍♀️ 💆🏾‍♀️ 💆🏿‍♀️ 💇‍♂️ 💇🏻‍♂️ 💇🏼‍♂️ 💇🏽‍♂️ 💇🏾‍♂️ 💇🏿‍♂️ 💇‍♀️ 💇🏻‍♀️ 💇🏼‍♀️ 💇🏽‍♀️ 💇🏾‍♀️ 💇🏿‍♀️ 🚶‍♂️ 🚶🏻‍♂️ 🚶🏼‍♂️ 🚶🏽‍♂️ 🚶🏾‍♂️ 🚶🏿‍♂️ 🚶‍♀️ 🚶🏻‍♀️ 🚶🏼‍♀️ 🚶🏽‍♀️ 🚶🏾‍♀️ 🚶🏿‍♀️ 🏃‍♂️ 🏃🏻‍♂️ 🏃🏼‍♂️ 🏃🏽‍♂️ 🏃🏾‍♂️ 🏃🏿‍♂️ 🏃‍♀️ 🏃🏻‍♀️ 🏃🏼‍♀️ 🏃🏽‍♀️ 🏃🏾‍♀️ 🏃🏿‍♀️ 👯‍♂️ 👯‍♀️ 🏌️‍♂️ 🏌️‍♀️ 🏄‍♂️ 🏄🏻‍♂️ 🏄🏼‍♂️ 🏄🏽‍♂️ 🏄🏾‍♂️ 🏄🏿‍♂️ 🏄‍♀️ 🏄🏻‍♀️ 🏄🏼‍♀️ 🏄🏽‍♀️ 🏄🏾‍♀️ 🏄🏿‍♀️ 🚣‍♂️ 🚣🏻‍♂️ 🚣🏼‍♂️ 🚣🏽‍♂️ 🚣🏾‍♂️ 🚣🏿‍♂️ 🚣‍♀️ 🚣🏻‍♀️ 🚣🏼‍♀️ 🚣🏽‍♀️ 🚣🏾‍♀️ 🚣🏿‍♀️ 🏊‍♂️ 🏊🏻‍♂️ 🏊🏼‍♂️ 🏊🏽‍♂️ 🏊🏾‍♂️ 🏊🏿‍♂️ 🏊‍♀️ 🏊🏻‍♀️ 🏊🏼‍♀️ 🏊🏽‍♀️ 🏊🏾‍♀️ 🏊🏿‍♀️ ⛹️‍♂️ ⛹🏻‍♂️ ⛹🏼‍♂️ ⛹🏽‍♂️ ⛹🏾‍♂️ ⛹🏿‍♂️ ⛹️‍♀️ ⛹🏻‍♀️ ⛹🏼‍♀️ ⛹🏽‍♀️ ⛹🏾‍♀️ ⛹🏿‍♀️ 🏋️‍♂️ 🏋🏻‍♂️ 🏋🏼‍♂️ 🏋🏽‍♂️ 🏋🏾‍♂️ 🏋🏿‍♂️ 🏋️‍♀️ 🏋🏻‍♀️ 🏋🏼‍♀️ 🏋🏽‍♀️ 🏋🏾‍♀️ 🏋🏿‍♀️ 🚴‍♂️ 🚴🏻‍♂️ 🚴🏼‍♂️ 🚴🏽‍♂️ 🚴🏾‍♂️ 🚴🏿‍♂️ 🚴‍♀️ 🚴🏻‍♀️ 🚴🏼‍♀️ 🚴🏽‍♀️ 🚴🏾‍♀️ 🚴🏿‍♀️ 🚵‍♂️ 🚵🏻‍♂️ 🚵🏼‍♂️ 🚵🏽‍♂️ 🚵🏾‍♂️ 🚵🏿‍♂️ 🚵‍♀️ 🚵🏻‍♀️ 🚵🏼‍♀️ 🚵🏽‍♀️ 🚵🏾‍♀️ 🚵🏿‍♀️ 🤸‍♂️ 🤸🏻‍♂️ 🤸🏼‍♂️ 🤸🏽‍♂️ 🤸🏾‍♂️ 🤸🏿‍♂️ 🤸‍♀️ 🤸🏻‍♀️ 🤸🏼‍♀️ 🤸🏽‍♀️ 🤸🏾‍♀️ 🤸🏿‍♀️ 🤼‍♂️ 🤼‍♀️ 🤽‍♂️ 🤽🏻‍♂️ 🤽🏼‍♂️ 🤽🏽‍♂️ 🤽🏾‍♂️ 🤽🏿‍♂️ 🤽‍♀️ 🤽🏻‍♀️ 🤽🏼‍♀️ 🤽🏽‍♀️ 🤽🏾‍♀️ 🤽🏿‍♀️ 🤾‍♂️ 🤾🏻‍♂️ 🤾🏼‍♂️ 🤾🏽‍♂️ 🤾🏾‍♂️ 🤾🏿‍♂️ 🤾‍♀️ 🤾🏻‍♀️ 🤾🏼‍♀️ 🤾🏽‍♀️ 🤾🏾‍♀️ 🤾🏿‍♀️ 🤹‍♂️ 🤹🏻‍♂️ 🤹🏼‍♂️ 🤹🏽‍♂️ 🤹🏾‍♂️ 🤹🏿‍♂️ 🤹‍♀️ 🤹🏻‍♀️ 🤹🏼‍♀️ 🤹🏽‍♀️ 🤹🏾‍♀️ 🤹🏿‍♀️ 👨‍👩‍👦 👨‍👦 👨‍👦‍👦 👨‍👧 👨‍👧‍👦 👨‍👧‍👧 👩‍👦 👩‍👦‍👦 👩‍👧 👩‍👧‍👦 👩‍👧‍👧 ♀️ ♂️ ⚕️ 🏳️‍🌈 +26 🤩 🤪 🤭 🤫 🤨 🤮 🤯 🧐 🤬 🧡 🤟 🤟🏻 🤟🏼 🤟🏽 🤟🏾 🤟🏿 🤲 🤲🏻 🤲🏼 🤲🏽 🤲🏾 🤲🏿 🧠 🧒 🧒🏻 🧒🏼 🧒🏽 🧒🏾 🧒🏿 🧑 🧑🏻 🧑🏼 🧑🏽 🧑🏾 🧑🏿 🧔 🧔🏻 🧔🏼 🧔🏽 🧔🏾 🧔🏿 🧓 🧓🏻 🧓🏼 🧓🏽 🧓🏾 🧓🏿 🧕 🧕🏻 🧕🏼 🧕🏽 🧕🏾 🧕🏿 🤱 🤱🏻 🤱🏼 🤱🏽 🤱🏾 🤱🏿 🧙 🧙🏻 🧙🏼 🧙🏽 🧙🏾 🧙🏿 🧙‍♂️ 🧙🏻‍♂️ 🧙🏼‍♂️ 🧙🏽‍♂️ 🧙🏾‍♂️ 🧙🏿‍♂️ 🧙‍♀️ 🧙🏻‍♀️ 🧙🏼‍♀️ 🧙🏽‍♀️ 🧙🏾‍♀️ 🧙🏿‍♀️ 🧚 🧚🏻 🧚🏼 🧚🏽 🧚🏾 🧚🏿 🧚‍♂️ 🧚🏻‍♂️ 🧚🏼‍♂️ 🧚🏽‍♂️ 🧚🏾‍♂️ 🧚🏿‍♂️ 🧚‍♀️ 🧚🏻‍♀️ 🧚🏼‍♀️ 🧚🏽‍♀️ 🧚🏾‍♀️ 🧚🏿‍♀️ 🧛 🧛🏻 🧛🏼 🧛🏽 🧛🏾 🧛🏿 🧛‍♂️ 🧛🏻‍♂️ 🧛🏼‍♂️ 🧛🏽‍♂️ 🧛🏾‍♂️ 🧛🏿‍♂️ 🧛‍♀️ 🧛🏻‍♀️ 🧛🏼‍♀️ 🧛🏽‍♀️ 🧛🏾‍♀️ 🧛🏿‍♀️ 🧜 🧜🏻 🧜🏼 🧜🏽 🧜🏾 🧜🏿 🧜‍♂️ 🧜🏻‍♂️ 🧜🏼‍♂️ 🧜🏽‍♂️ 🧜🏾‍♂️ 🧜🏿‍♂️ 🧜‍♀️ 🧜🏻‍♀️ 🧜🏼‍♀️ 🧜🏽‍♀️ 🧜🏾‍♀️ 🧜🏿‍♀️ 🧝 🧝🏻 🧝🏼 🧝🏽 🧝🏾 🧝🏿 🧝‍♂️ 🧝🏻‍♂️ 🧝🏼‍♂️ 🧝🏽‍♂️ 🧝🏾‍♂️ 🧝🏿‍♂️ 🧝‍♀️ 🧝🏻‍♀️ 🧝🏼‍♀️ 🧝🏽‍♀️ 🧝🏾‍♀️ 🧝🏿‍♀️ 🧞 🧞‍♂️ 🧞‍♀️ 🧟 🧟‍♂️ 🧟‍♀️ 🕴🏻 🕴🏼 🕴🏽 🕴🏾 🕴🏿 🧖 🧖🏻 🧖🏼 🧖🏽 🧖🏾 🧖🏿 🧖‍♂️ 🧖🏻‍♂️ 🧖🏼‍♂️ 🧖🏽‍♂️ 🧖🏾‍♂️ 🧖🏿‍♂️ 🧖‍♀️ 🧖🏻‍♀️ 🧖🏼‍♀️ 🧖🏽‍♀️ 🧖🏾‍♀️ 🧖🏿‍♀️ 🧗 🧗🏻 🧗🏼 🧗🏽 🧗🏾 🧗🏿 🧗‍♂️ 🧗🏻‍♂️ 🧗🏼‍♂️ 🧗🏽‍♂️ 🧗🏾‍♂️ 🧗🏿‍♂️ 🧗‍♀️ 🧗🏻‍♀️ 🧗🏼‍♀️ 🧗🏽‍♀️ 🧗🏾‍♀️ 🧗🏿‍♀️ 🏇🏻 🏇🏼 🏇🏽 🏇🏾 🏇🏿 🏂🏻 🏂🏼 🏂🏽 🏂🏾 🏂🏿 🏌🏻 🏌🏼 🏌🏽 🏌🏾 🏌🏿 🏌🏻‍♂️ 🏌🏼‍♂️ 🏌🏽‍♂️ 🏌🏾‍♂️ 🏌🏿‍♂️ 🏌🏻‍♀️ 🏌🏼‍♀️ 🏌🏽‍♀️ 🏌🏾‍♀️ 🏌🏿‍♀️ 🧘 🧘🏻 🧘🏼 🧘🏽 🧘🏾 🧘🏿 🧘‍♂️ 🧘🏻‍♂️ 🧘🏼‍♂️ 🧘🏽‍♂️ 🧘🏾‍♂️ 🧘🏿‍♂️ 🧘‍♀️ 🧘🏻‍♀️ 🧘🏼‍♀️ 🧘🏽‍♀️ 🧘🏾‍♀️ 🧘🏿‍♀️ 🛌🏻 🛌🏼 🛌🏽 🛌🏾 🛌🏿 👩‍❤️‍💋‍👨 👩‍❤️‍👨 🦓 🦒 🦔 🦕 🦖 🦗 🥥 🥦 🥨 🥩 🥪 🥣 🥫 🥟 🥠 🥡 🥧 🥤 🥢 🛸 🛷 🥌 🧣 🧤 🧥 🧦 🧢 🇺🇳 🏴󠁧󠁢󠁥󠁮󠁧󠁿 🏴󠁧󠁢󠁳󠁣󠁴󠁿 🏴󠁧󠁢󠁷󠁬󠁳󠁿 +28 🥰 🥵 🥶 🥴 🥳 🥺 🦵 🦵🏻 🦵🏼 🦵🏽 🦵🏾 🦵🏿 🦶 🦶🏻 🦶🏼 🦶🏽 🦶🏾 🦶🏿 🦷 🦴 👨‍🦰 👨🏻‍🦰 👨🏼‍🦰 👨🏽‍🦰 👨🏾‍🦰 👨🏿‍🦰 👨‍🦱 👨🏻‍🦱 👨🏼‍🦱 👨🏽‍🦱 👨🏾‍🦱 👨🏿‍🦱 👨‍🦳 👨🏻‍🦳 👨🏼‍🦳 👨🏽‍🦳 👨🏾‍🦳 👨🏿‍🦳 👨‍🦲 👨🏻‍🦲 👨🏼‍🦲 👨🏽‍🦲 👨🏾‍🦲 👨🏿‍🦲 👩‍🦰 👩🏻‍🦰 👩🏼‍🦰 👩🏽‍🦰 👩🏾‍🦰 👩🏿‍🦰 👩‍🦱 👩🏻‍🦱 👩🏼‍🦱 👩🏽‍🦱 👩🏾‍🦱 👩🏿‍🦱 👩‍🦳 👩🏻‍🦳 👩🏼‍🦳 👩🏽‍🦳 👩🏾‍🦳 👩🏿‍🦳 👩‍🦲 👩🏻‍🦲 👩🏼‍🦲 👩🏽‍🦲 👩🏾‍🦲 👩🏿‍🦲 🦸 🦸🏻 🦸🏼 🦸🏽 🦸🏾 🦸🏿 🦸‍♂️ 🦸🏻‍♂️ 🦸🏼‍♂️ 🦸🏽‍♂️ 🦸🏾‍♂️ 🦸🏿‍♂️ 🦸‍♀️ 🦸🏻‍♀️ 🦸🏼‍♀️ 🦸🏽‍♀️ 🦸🏾‍♀️ 🦸🏿‍♀️ 🦹 🦹🏻 🦹🏼 🦹🏽 🦹🏾 🦹🏿 🦹‍♂️ 🦹🏻‍♂️ 🦹🏼‍♂️ 🦹🏽‍♂️ 🦹🏾‍♂️ 🦹🏿‍♂️ 🦹‍♀️ 🦹🏻‍♀️ 🦹🏼‍♀️ 🦹🏽‍♀️ 🦹🏾‍♀️ 🦹🏿‍♀️ 🦝 🦙 🦛 🦘 🦡 🦢 🦚 🦜 🦞 🦟 🦠 🥭 🥬 🥯 🧂 🥮 🧁 🧭 🧱 🛹 🧳 🧨 🧧 🥎 🥏 🥍 🧩 🧸 ♟️ 🧵 🧶 🥽 🥼 🥾 🥿 🧮 🧾 🧰 🧲 🧪 🧫 🧬 🧴 🧷 🧹 🧺 🧻 🧼 🧽 🧯 🧿 ♾️ 🏴‍☠️ +29 🥱 🤎 🤍 🤏 🤏🏻 🤏🏼 🤏🏽 🤏🏾 🤏🏿 🦾 🦿 🦻 🦻🏻 🦻🏼 🦻🏽 🦻🏾 🦻🏿 🧏 🧏🏻 🧏🏼 🧏🏽 🧏🏾 🧏🏿 🧏‍♂️ 🧏🏻‍♂️ 🧏🏼‍♂️ 🧏🏽‍♂️ 🧏🏾‍♂️ 🧏🏿‍♂️ 🧏‍♀️ 🧏🏻‍♀️ 🧏🏼‍♀️ 🧏🏽‍♀️ 🧏🏾‍♀️ 🧏🏿‍♀️ 🧍 🧍🏻 🧍🏼 🧍🏽 🧍🏾 🧍🏿 🧍‍♂️ 🧍🏻‍♂️ 🧍🏼‍♂️ 🧍🏽‍♂️ 🧍🏾‍♂️ 🧍🏿‍♂️ 🧍‍♀️ 🧍🏻‍♀️ 🧍🏼‍♀️ 🧍🏽‍♀️ 🧍🏾‍♀️ 🧍🏿‍♀️ 🧎 🧎🏻 🧎🏼 🧎🏽 🧎🏾 🧎🏿 🧎‍♂️ 🧎🏻‍♂️ 🧎🏼‍♂️ 🧎🏽‍♂️ 🧎🏾‍♂️ 🧎🏿‍♂️ 🧎‍♀️ 🧎🏻‍♀️ 🧎🏼‍♀️ 🧎🏽‍♀️ 🧎🏾‍♀️ 🧎🏿‍♀️ 👨‍🦯 👨🏻‍🦯 👨🏼‍🦯 👨🏽‍🦯 👨🏾‍🦯 👨🏿‍🦯 👩‍🦯 👩🏻‍🦯 👩🏼‍🦯 👩🏽‍🦯 👩🏾‍🦯 👩🏿‍🦯 👨‍🦼 👨🏻‍🦼 👨🏼‍🦼 👨🏽‍🦼 👨🏾‍🦼 👨🏿‍🦼 👩‍🦼 👩🏻‍🦼 👩🏼‍🦼 👩🏽‍🦼 👩🏾‍🦼 👩🏿‍🦼 👨‍🦽 👨🏻‍🦽 👨🏼‍🦽 👨🏽‍🦽 👨🏾‍🦽 👨🏿‍🦽 👩‍🦽 👩🏻‍🦽 👩🏼‍🦽 👩🏽‍🦽 👩🏾‍🦽 👩🏿‍🦽 🧑‍🤝‍🧑 🧑🏻‍🤝‍🧑🏻 🧑🏼‍🤝‍🧑🏻 🧑🏼‍🤝‍🧑🏼 🧑🏽‍🤝‍🧑🏻 🧑🏽‍🤝‍🧑🏼 🧑🏽‍🤝‍🧑🏽 🧑🏾‍🤝‍🧑🏻 🧑🏾‍🤝‍🧑🏼 🧑🏾‍🤝‍🧑🏽 🧑🏾‍🤝‍🧑🏾 🧑🏿‍🤝‍🧑🏻 🧑🏿‍🤝‍🧑🏼 🧑🏿‍🤝‍🧑🏽 🧑🏿‍🤝‍🧑🏾 🧑🏿‍🤝‍🧑🏿 👭🏻 👭🏼 👭🏽 👭🏾 👭🏿 👫🏻 👫🏼 👫🏽 👫🏾 👫🏿 👬🏻 👬🏼 👬🏽 👬🏾 👬🏿 🦧 🦮 🐕‍🦺 🦥 🦦 🦨 🦩 🦪 🧄 🧅 🧇 🧆 🧈 🧃 🧉 🧊 🛕 🦽 🦼 🛺 🪂 🪐 🤿 🪀 🪁 🦺 🥻 🩱 🩲 🩳 🩰 🪕 🪔 🪓 🦯 🩸 🩹 🩺 🪑 🪒 🟠 🟡 🟢 🟣 🟤 🟥 🟧 🟨 🟩 🟦 🟪 🟫 🇧🇱 🇧🇶 🇲🇶 🇷🇪 🇹🇫 🇽🇰 +30 🥲 🥸 🤌 🤌🏻 🤌🏼 🤌🏽 🤌🏾 🤌🏿 🫀 🫁 🧑‍🦰 🧑🏻‍🦰 🧑🏼‍🦰 🧑🏽‍🦰 🧑🏾‍🦰 🧑🏿‍🦰 🧑‍🦱 🧑🏻‍🦱 🧑🏼‍🦱 🧑🏽‍🦱 🧑🏾‍🦱 🧑🏿‍🦱 🧑‍🦳 🧑🏻‍🦳 🧑🏼‍🦳 🧑🏽‍🦳 🧑🏾‍🦳 🧑🏿‍🦳 🧑‍🦲 🧑🏻‍🦲 🧑🏼‍🦲 🧑🏽‍🦲 🧑🏾‍🦲 🧑🏿‍🦲 🧑‍⚕️ 🧑🏻‍⚕️ 🧑🏼‍⚕️ 🧑🏽‍⚕️ 🧑🏾‍⚕️ 🧑🏿‍⚕️ 🧑‍🎓 🧑🏻‍🎓 🧑🏼‍🎓 🧑🏽‍🎓 🧑🏾‍🎓 🧑🏿‍🎓 🧑‍🏫 🧑🏻‍🏫 🧑🏼‍🏫 🧑🏽‍🏫 🧑🏾‍🏫 🧑🏿‍🏫 🧑‍⚖️ 🧑🏻‍⚖️ 🧑🏼‍⚖️ 🧑🏽‍⚖️ 🧑🏾‍⚖️ 🧑🏿‍⚖️ 🧑‍🌾 🧑🏻‍🌾 🧑🏼‍🌾 🧑🏽‍🌾 🧑🏾‍🌾 🧑🏿‍🌾 🧑‍🍳 🧑🏻‍🍳 🧑🏼‍🍳 🧑🏽‍🍳 🧑🏾‍🍳 🧑🏿‍🍳 🧑‍🔧 🧑🏻‍🔧 🧑🏼‍🔧 🧑🏽‍🔧 🧑🏾‍🔧 🧑🏿‍🔧 🧑‍🏭 🧑🏻‍🏭 🧑🏼‍🏭 🧑🏽‍🏭 🧑🏾‍🏭 🧑🏿‍🏭 🧑‍💼 🧑🏻‍💼 🧑🏼‍💼 🧑🏽‍💼 🧑🏾‍💼 🧑🏿‍💼 🧑‍🔬 🧑🏻‍🔬 🧑🏼‍🔬 🧑🏽‍🔬 🧑🏾‍🔬 🧑🏿‍🔬 🧑‍💻 🧑🏻‍💻 🧑🏼‍💻 🧑🏽‍💻 🧑🏾‍💻 🧑🏿‍💻 🧑‍🎤 🧑🏻‍🎤 🧑🏼‍🎤 🧑🏽‍🎤 🧑🏾‍🎤 🧑🏿‍🎤 🧑‍🎨 🧑🏻‍🎨 🧑🏼‍🎨 🧑🏽‍🎨 🧑🏾‍🎨 🧑🏿‍🎨 🧑‍✈️ 🧑🏻‍✈️ 🧑🏼‍✈️ 🧑🏽‍✈️ 🧑🏾‍✈️ 🧑🏿‍✈️ 🧑‍🚀 🧑🏻‍🚀 🧑🏼‍🚀 🧑🏽‍🚀 🧑🏾‍🚀 🧑🏿‍🚀 🧑‍🚒 🧑🏻‍🚒 🧑🏼‍🚒 🧑🏽‍🚒 🧑🏾‍🚒 🧑🏿‍🚒 🥷 🥷🏻 🥷🏼 🥷🏽 🥷🏾 🥷🏿 🤵‍♂️ 🤵🏻‍♂️ 🤵🏼‍♂️ 🤵🏽‍♂️ 🤵🏾‍♂️ 🤵🏿‍♂️ 🤵‍♀️ 🤵🏻‍♀️ 🤵🏼‍♀️ 🤵🏽‍♀️ 🤵🏾‍♀️ 🤵🏿‍♀️ 👰‍♂️ 👰🏻‍♂️ 👰🏼‍♂️ 👰🏽‍♂️ 👰🏾‍♂️ 👰🏿‍♂️ 👰‍♀️ 👰🏻‍♀️ 👰🏼‍♀️ 👰🏽‍♀️ 👰🏾‍♀️ 👰🏿‍♀️ 👩‍🍼 👩🏻‍🍼 👩🏼‍🍼 👩🏽‍🍼 👩🏾‍🍼 👩🏿‍🍼 👨‍🍼 👨🏻‍🍼 👨🏼‍🍼 👨🏽‍🍼 👨🏾‍🍼 👨🏿‍🍼 🧑‍🍼 🧑🏻‍🍼 🧑🏼‍🍼 🧑🏽‍🍼 🧑🏾‍🍼 🧑🏿‍🍼 🧑‍🎄 🧑🏻‍🎄 🧑🏼‍🎄 🧑🏽‍🎄 🧑🏾‍🎄 🧑🏿‍🎄 🧑‍🦯 🧑🏻‍🦯 🧑🏼‍🦯 🧑🏽‍🦯 🧑🏾‍🦯 🧑🏿‍🦯 🧑‍🦼 🧑🏻‍🦼 🧑🏼‍🦼 🧑🏽‍🦼 🧑🏾‍🦼 🧑🏿‍🦼 🧑‍🦽 🧑🏻‍🦽 🧑🏼‍🦽 🧑🏽‍🦽 🧑🏾‍🦽 🧑🏿‍🦽 🧑🏻‍🤝‍🧑🏼 🧑🏻‍🤝‍🧑🏽 🧑🏻‍🤝‍🧑🏾 🧑🏻‍🤝‍🧑🏿 🧑🏼‍🤝‍🧑🏽 🧑🏼‍🤝‍🧑🏾 🧑🏼‍🤝‍🧑🏿 🧑🏽‍🤝‍🧑🏾 🧑🏽‍🤝‍🧑🏿 🧑🏾‍🤝‍🧑🏿 🫂 🐈‍⬛ 🦬 🦣 🦫 🐻‍❄️ 🦤 🪶 🦭 🪲 🪳 🪰 🪱 🪴 🫐 🫒 🫑 🫓 🫔 🫕 🫖 🧋 🪨 🪵 🛖 🛻 🛼 🪄 🪅 🪆 🪡 🪢 🩴 🪖 🪗 🪘 🪙 🪃 🪚 🪛 🪝 🪜 🛗 🪞 🪟 🪠 🪤 🪣 🪥 🪦 🪧 ⚧️ 🏳️‍⚧️ 🇩🇬 🇪🇦 🇪🇭 🇫🇰 🇬🇫 🇬🇵 🇬🇸 🇲🇫 🇳🇨 🇵🇲 🇼🇫 🇾🇹 +31 😶‍🌫️ 😮‍💨 😵‍💫 ❤️‍🔥 ❤️‍🩹 🧔‍♂️ 🧔🏻‍♂️ 🧔🏼‍♂️ 🧔🏽‍♂️ 🧔🏾‍♂️ 🧔🏿‍♂️ 🧔‍♀️ 🧔🏻‍♀️ 🧔🏼‍♀️ 🧔🏽‍♀️ 🧔🏾‍♀️ 🧔🏿‍♀️ 💏🏻 💏🏼 💏🏽 💏🏾 💏🏿 👩🏻‍❤️‍💋‍👨🏻 👩🏻‍❤️‍💋‍👨🏼 👩🏻‍❤️‍💋‍👨🏽 👩🏻‍❤️‍💋‍👨🏾 👩🏻‍❤️‍💋‍👨🏿 👩🏼‍❤️‍💋‍👨🏻 👩🏼‍❤️‍💋‍👨🏼 👩🏼‍❤️‍💋‍👨🏽 👩🏼‍❤️‍💋‍👨🏾 👩🏼‍❤️‍💋‍👨🏿 👩🏽‍❤️‍💋‍👨🏻 👩🏽‍❤️‍💋‍👨🏼 👩🏽‍❤️‍💋‍👨🏽 👩🏽‍❤️‍💋‍👨🏾 👩🏽‍❤️‍💋‍👨🏿 👩🏾‍❤️‍💋‍👨🏻 👩🏾‍❤️‍💋‍👨🏼 👩🏾‍❤️‍💋‍👨🏽 👩🏾‍❤️‍💋‍👨🏾 👩🏾‍❤️‍💋‍👨🏿 👩🏿‍❤️‍💋‍👨🏻 👩🏿‍❤️‍💋‍👨🏼 👩🏿‍❤️‍💋‍👨🏽 👩🏿‍❤️‍💋‍👨🏾 👩🏿‍❤️‍💋‍👨🏿 👨🏻‍❤️‍💋‍👨🏻 👨🏻‍❤️‍💋‍👨🏼 👨🏻‍❤️‍💋‍👨🏽 👨🏻‍❤️‍💋‍👨🏾 👨🏻‍❤️‍💋‍👨🏿 👨🏼‍❤️‍💋‍👨🏻 👨🏼‍❤️‍💋‍👨🏼 👨🏼‍❤️‍💋‍👨🏽 👨🏼‍❤️‍💋‍👨🏾 👨🏼‍❤️‍💋‍👨🏿 👨🏽‍❤️‍💋‍👨🏻 👨🏽‍❤️‍💋‍👨🏼 👨🏽‍❤️‍💋‍👨🏽 👨🏽‍❤️‍💋‍👨🏾 👨🏽‍❤️‍💋‍👨🏿 👨🏾‍❤️‍💋‍👨🏻 👨🏾‍❤️‍💋‍👨🏼 👨🏾‍❤️‍💋‍👨🏽 👨🏾‍❤️‍💋‍👨🏾 👨🏾‍❤️‍💋‍👨🏿 👨🏿‍❤️‍💋‍👨🏻 👨🏿‍❤️‍💋‍👨🏼 👨🏿‍❤️‍💋‍👨🏽 👨🏿‍❤️‍💋‍👨🏾 👨🏿‍❤️‍💋‍👨🏿 👩🏻‍❤️‍💋‍👩🏻 👩🏻‍❤️‍💋‍👩🏼 👩🏻‍❤️‍💋‍👩🏽 👩🏻‍❤️‍💋‍👩🏾 👩🏻‍❤️‍💋‍👩🏿 👩🏼‍❤️‍💋‍👩🏻 👩🏼‍❤️‍💋‍👩🏼 👩🏼‍❤️‍💋‍👩🏽 👩🏼‍❤️‍💋‍👩🏾 👩🏼‍❤️‍💋‍👩🏿 👩🏽‍❤️‍💋‍👩🏻 👩🏽‍❤️‍💋‍👩🏼 👩🏽‍❤️‍💋‍👩🏽 👩🏽‍❤️‍💋‍👩🏾 👩🏽‍❤️‍💋‍👩🏿 👩🏾‍❤️‍💋‍👩🏻 👩🏾‍❤️‍💋‍👩🏼 👩🏾‍❤️‍💋‍👩🏽 👩🏾‍❤️‍💋‍👩🏾 👩🏾‍❤️‍💋‍👩🏿 👩🏿‍❤️‍💋‍👩🏻 👩🏿‍❤️‍💋‍👩🏼 👩🏿‍❤️‍💋‍👩🏽 👩🏿‍❤️‍💋‍👩🏾 👩🏿‍❤️‍💋‍👩🏿 💑🏻 💑🏼 💑🏽 💑🏾 💑🏿 👩🏻‍❤️‍👨🏻 👩🏻‍❤️‍👨🏼 👩🏻‍❤️‍👨🏽 👩🏻‍❤️‍👨🏾 👩🏻‍❤️‍👨🏿 👩🏼‍❤️‍👨🏻 👩🏼‍❤️‍👨🏼 👩🏼‍❤️‍👨🏽 👩🏼‍❤️‍👨🏾 👩🏼‍❤️‍👨🏿 👩🏽‍❤️‍👨🏻 👩🏽‍❤️‍👨🏼 👩🏽‍❤️‍👨🏽 👩🏽‍❤️‍👨🏾 👩🏽‍❤️‍👨🏿 👩🏾‍❤️‍👨🏻 👩🏾‍❤️‍👨🏼 👩🏾‍❤️‍👨🏽 👩🏾‍❤️‍👨🏾 👩🏾‍❤️‍👨🏿 👩🏿‍❤️‍👨🏻 👩🏿‍❤️‍👨🏼 👩🏿‍❤️‍👨🏽 👩🏿‍❤️‍👨🏾 👩🏿‍❤️‍👨🏿 👨🏻‍❤️‍👨🏻 👨🏻‍❤️‍👨🏼 👨🏻‍❤️‍👨🏽 👨🏻‍❤️‍👨🏾 👨🏻‍❤️‍👨🏿 👨🏼‍❤️‍👨🏻 👨🏼‍❤️‍👨🏼 👨🏼‍❤️‍👨🏽 👨🏼‍❤️‍👨🏾 👨🏼‍❤️‍👨🏿 👨🏽‍❤️‍👨🏻 👨🏽‍❤️‍👨🏼 👨🏽‍❤️‍👨🏽 👨🏽‍❤️‍👨🏾 👨🏽‍❤️‍👨🏿 👨🏾‍❤️‍👨🏻 👨🏾‍❤️‍👨🏼 👨🏾‍❤️‍👨🏽 👨🏾‍❤️‍👨🏾 👨🏾‍❤️‍👨🏿 👨🏿‍❤️‍👨🏻 👨🏿‍❤️‍👨🏼 👨🏿‍❤️‍👨🏽 👨🏿‍❤️‍👨🏾 👨🏿‍❤️‍👨🏿 👩🏻‍❤️‍👩🏻 👩🏻‍❤️‍👩🏼 👩🏻‍❤️‍👩🏽 👩🏻‍❤️‍👩🏾 👩🏻‍❤️‍👩🏿 👩🏼‍❤️‍👩🏻 👩🏼‍❤️‍👩🏼 👩🏼‍❤️‍👩🏽 👩🏼‍❤️‍👩🏾 👩🏼‍❤️‍👩🏿 👩🏽‍❤️‍👩🏻 👩🏽‍❤️‍👩🏼 👩🏽‍❤️‍👩🏽 👩🏽‍❤️‍👩🏾 👩🏽‍❤️‍👩🏿 👩🏾‍❤️‍👩🏻 👩🏾‍❤️‍👩🏼 👩🏾‍❤️‍👩🏽 👩🏾‍❤️‍👩🏾 👩🏾‍❤️‍👩🏿 👩🏿‍❤️‍👩🏻 👩🏿‍❤️‍👩🏼 👩🏿‍❤️‍👩🏽 👩🏿‍❤️‍👩🏾 👩🏿‍❤️‍👩🏿 +32 🫠 🫢 🫣 🫡 🫥 🫤 🥹 🫱 🫱🏻 🫱🏼 🫱🏽 🫱🏾 🫱🏿 🫲 🫲🏻 🫲🏼 🫲🏽 🫲🏾 🫲🏿 🫳 🫳🏻 🫳🏼 🫳🏽 🫳🏾 🫳🏿 🫴 🫴🏻 🫴🏼 🫴🏽 🫴🏾 🫴🏿 🫰 🫰🏻 🫰🏼 🫰🏽 🫰🏾 🫰🏿 🫵 🫵🏻 🫵🏼 🫵🏽 🫵🏾 🫵🏿 🫶 🫶🏻 🫶🏼 🫶🏽 🫶🏾 🫶🏿 🫦 🫅 🫅🏻 🫅🏼 🫅🏽 🫅🏾 🫅🏿 🫃 🫃🏻 🫃🏼 🫃🏽 🫃🏾 🫃🏿 🫄 🫄🏻 🫄🏼 🫄🏽 🫄🏾 🫄🏿 🧌 🪸 🪷 🪹 🪺 🫘 🫗 🫙 🛝 🛞 🛟 🪩 🪫 🩼 🩻 🫧 🪬 🪪 🟰 +33 🫨 🩷 🩵 🩶 🫷 🫷🏻 🫷🏼 🫷🏽 🫷🏾 🫷🏿 🫸 🫸🏻 🫸🏼 🫸🏽 🫸🏾 🫸🏿 🫎 🫏 🪽 🐦‍⬛ 🪿 🪼 🪻 🫚 🫛 🪭 🪮 🪇 🪈 🪯 🛜 +34 🙂‍↔️ 🙂‍↕️ 🚶‍➡️ 🚶🏻‍➡️ 🚶🏼‍➡️ 🚶🏽‍➡️ 🚶🏾‍➡️ 🚶🏿‍➡️ 🚶‍♀️‍➡️ 🚶🏻‍♀️‍➡️ 🚶🏼‍♀️‍➡️ 🚶🏽‍♀️‍➡️ 🚶🏾‍♀️‍➡️ 🚶🏿‍♀️‍➡️ 🚶‍♂️‍➡️ 🚶🏻‍♂️‍➡️ 🚶🏼‍♂️‍➡️ 🚶🏽‍♂️‍➡️ 🚶🏾‍♂️‍➡️ 🚶🏿‍♂️‍➡️ 🧎‍➡️ 🧎🏻‍➡️ 🧎🏼‍➡️ 🧎🏽‍➡️ 🧎🏾‍➡️ 🧎🏿‍➡️ 🧎‍♀️‍➡️ 🧎🏻‍♀️‍➡️ 🧎🏼‍♀️‍➡️ 🧎🏽‍♀️‍➡️ 🧎🏾‍♀️‍➡️ 🧎🏿‍♀️‍➡️ 🧎‍♂️‍➡️ 🧎🏻‍♂️‍➡️ 🧎🏼‍♂️‍➡️ 🧎🏽‍♂️‍➡️ 🧎🏾‍♂️‍➡️ 🧎🏿‍♂️‍➡️ 🧑‍🦯‍➡️ 🧑🏻‍🦯‍➡️ 🧑🏼‍🦯‍➡️ 🧑🏽‍🦯‍➡️ 🧑🏾‍🦯‍➡️ 🧑🏿‍🦯‍➡️ 👨‍🦯‍➡️ 👨🏻‍🦯‍➡️ 👨🏼‍🦯‍➡️ 👨🏽‍🦯‍➡️ 👨🏾‍🦯‍➡️ 👨🏿‍🦯‍➡️ 👩‍🦯‍➡️ 👩🏻‍🦯‍➡️ 👩🏼‍🦯‍➡️ 👩🏽‍🦯‍➡️ 👩🏾‍🦯‍➡️ 👩🏿‍🦯‍➡️ 🧑‍🦼‍➡️ 🧑🏻‍🦼‍➡️ 🧑🏼‍🦼‍➡️ 🧑🏽‍🦼‍➡️ 🧑🏾‍🦼‍➡️ 🧑🏿‍🦼‍➡️ 👨‍🦼‍➡️ 👨🏻‍🦼‍➡️ 👨🏼‍🦼‍➡️ 👨🏽‍🦼‍➡️ 👨🏾‍🦼‍➡️ 👨🏿‍🦼‍➡️ 👩‍🦼‍➡️ 👩🏻‍🦼‍➡️ 👩🏼‍🦼‍➡️ 👩🏽‍🦼‍➡️ 👩🏾‍🦼‍➡️ 👩🏿‍🦼‍➡️ 🧑‍🦽‍➡️ 🧑🏻‍🦽‍➡️ 🧑🏼‍🦽‍➡️ 🧑🏽‍🦽‍➡️ 🧑🏾‍🦽‍➡️ 🧑🏿‍🦽‍➡️ 👨‍🦽‍➡️ 👨🏻‍🦽‍➡️ 👨🏼‍🦽‍➡️ 👨🏽‍🦽‍➡️ 👨🏾‍🦽‍➡️ 👨🏿‍🦽‍➡️ 👩‍🦽‍➡️ 👩🏻‍🦽‍➡️ 👩🏼‍🦽‍➡️ 👩🏽‍🦽‍➡️ 👩🏾‍🦽‍➡️ 👩🏿‍🦽‍➡️ 🏃‍➡️ 🏃🏻‍➡️ 🏃🏼‍➡️ 🏃🏽‍➡️ 🏃🏾‍➡️ 🏃🏿‍➡️ 🏃‍♀️‍➡️ 🏃🏻‍♀️‍➡️ 🏃🏼‍♀️‍➡️ 🏃🏽‍♀️‍➡️ 🏃🏾‍♀️‍➡️ 🏃🏿‍♀️‍➡️ 🏃‍♂️‍➡️ 🏃🏻‍♂️‍➡️ 🏃🏼‍♂️‍➡️ 🏃🏽‍♂️‍➡️ 🏃🏾‍♂️‍➡️ 🏃🏿‍♂️‍➡️ 🧑‍🧑‍🧒 🧑‍🧑‍🧒‍🧒 🧑‍🧒 🧑‍🧒‍🧒 🐦‍🔥 🍋‍🟩 🍄‍🟫 ⛓️‍💥 +35 🫩 🫆 🪾 🫜 🪉 🪏 🫟 🇨🇶 \ No newline at end of file diff --git a/app/src/main/assets/layouts/clipboard_bottom/clip_bottom_row.json b/app/src/main/assets/layouts/clipboard_bottom/clip_bottom_row.json new file mode 100644 index 0000000000..2a7c8f6b17 --- /dev/null +++ b/app/src/main/assets/layouts/clipboard_bottom/clip_bottom_row.json @@ -0,0 +1,7 @@ +[ + [ + { "label": "alpha", "width": 0.15 }, + { "label": "space", "width": -1 }, + { "label": "delete", "width": 0.15 } + ] +] diff --git a/app/src/main/assets/layouts/clipboard_bottom/clip_bottom_row_with_action.json b/app/src/main/assets/layouts/clipboard_bottom/clip_bottom_row_with_action.json new file mode 100644 index 0000000000..4827b365d4 --- /dev/null +++ b/app/src/main/assets/layouts/clipboard_bottom/clip_bottom_row_with_action.json @@ -0,0 +1,8 @@ +[ + [ + { "label": "alpha", "width": 0.15 }, + { "label": "space", "width": -1 }, + { "label": "delete", "width": 0.15 }, + { "label": "action", "width": 0.15 } + ] +] diff --git a/app/src/main/assets/layouts/emoji_bottom/emoji_bottom_row.json b/app/src/main/assets/layouts/emoji_bottom/emoji_bottom_row.json new file mode 100644 index 0000000000..2a7c8f6b17 --- /dev/null +++ b/app/src/main/assets/layouts/emoji_bottom/emoji_bottom_row.json @@ -0,0 +1,7 @@ +[ + [ + { "label": "alpha", "width": 0.15 }, + { "label": "space", "width": -1 }, + { "label": "delete", "width": 0.15 } + ] +] diff --git a/app/src/main/assets/layouts/emoji_bottom/emoji_bottom_row_with_action.json b/app/src/main/assets/layouts/emoji_bottom/emoji_bottom_row_with_action.json new file mode 100644 index 0000000000..4827b365d4 --- /dev/null +++ b/app/src/main/assets/layouts/emoji_bottom/emoji_bottom_row_with_action.json @@ -0,0 +1,8 @@ +[ + [ + { "label": "alpha", "width": 0.15 }, + { "label": "space", "width": -1 }, + { "label": "delete", "width": 0.15 }, + { "label": "action", "width": 0.15 } + ] +] diff --git a/app/src/main/assets/layouts/functional/functional_keys.json b/app/src/main/assets/layouts/functional/functional_keys.json new file mode 100644 index 0000000000..6d28dd24fc --- /dev/null +++ b/app/src/main/assets/layouts/functional/functional_keys.json @@ -0,0 +1,21 @@ +[ + [ + { "label": "shift", "width": 0.15 }, + { "type": "placeholder" }, + { "label": "delete", "width": 0.15 } + ], + [ + { "label": "symbol_alpha", "width": 0.15 }, + { "$": "variation_selector", + "default": { "label": "comma" }, + "email": { "label": "@", "groupId": 1, "type": "function" }, + "uri": { "label": "/", "groupId": 1, "type": "function" } + }, + { "$": "keyboard_state_selector", "languageKeyEnabled": { "$": "keyboard_state_selector", "alphabet": { "label": "language_switch" }}}, + { "$": "keyboard_state_selector", "emojiKeyEnabled": { "$": "keyboard_state_selector", "alphabet": { "label": "emoji" }}}, + { "$": "keyboard_state_selector", "symbols": { "label": "numpad" }}, + { "label": "space" }, + { "label": "period", "labelFlags": 1073741824 }, + { "label": "action", "width": 0.15 } + ] +] diff --git a/app/src/main/assets/layouts/functional/functional_keys_tablet.json b/app/src/main/assets/layouts/functional/functional_keys_tablet.json new file mode 100644 index 0000000000..606f64eaeb --- /dev/null +++ b/app/src/main/assets/layouts/functional/functional_keys_tablet.json @@ -0,0 +1,35 @@ +[ + [ + { "type": "placeholder" }, + { "label": "delete", "width": 0.1 } + ], + [ + { "type": "placeholder" } + ], + [ + { "type": "placeholder" }, + { "label": "action", "width": 0.1 } + ], + [ + { "label": "shift", "width": 0.1 }, + { "type": "placeholder" }, + { "label": "shift" } + ], + [ + { "label": "symbol_alpha" }, + { "$": "variation_selector", + "default": { "label": "comma" }, + "email": { "label": "@", "groupId": 1, "type": "function" }, + "uri": { "label": "/", "groupId": 1, "type": "function" } + }, + { "$": "keyboard_state_selector", "languageKeyEnabled": { "$": "keyboard_state_selector", "alphabet": { "label": "language_switch" }}}, + { "$": "keyboard_state_selector", "symbols": { "label": "numpad" }}, + { "label": "space" }, + { "label": "period" }, + { "$": "variation_selector", + "default": { "label": "emoji" }, + "email": { "label": "com" }, + "uri": { "label": "com" } + } + ] +] diff --git a/app/src/main/assets/layouts/main/akan.txt b/app/src/main/assets/layouts/main/akan.txt new file mode 100644 index 0000000000..1f139b582f --- /dev/null +++ b/app/src/main/assets/layouts/main/akan.txt @@ -0,0 +1,28 @@ +ɛ q +w +e +r +t +y +u +i +o +p + +a +s +d +f +g +h +j +k +l + +z +ɔ x +c ¢ +v +b +n +m diff --git a/app/src/main/assets/layouts/main/arabic.txt b/app/src/main/assets/layouts/main/arabic.txt new file mode 100644 index 0000000000..0bbfbb1170 --- /dev/null +++ b/app/src/main/assets/layouts/main/arabic.txt @@ -0,0 +1,34 @@ +ض +ص +ث +ق +ف +غ +ع +ه +خ +ح +ج + +ش +س +ي +ب +ل +ا +ت +ن +م +ك +ط + +ذ +ء +ؤ +ر +ى +ة +و +ز +ظ +د diff --git a/app/src/main/assets/layouts/main/arabic_hijai.txt b/app/src/main/assets/layouts/main/arabic_hijai.txt new file mode 100644 index 0000000000..acc3a007d8 --- /dev/null +++ b/app/src/main/assets/layouts/main/arabic_hijai.txt @@ -0,0 +1,34 @@ +ز +ر +ذ +د +خ +ح +ج +ث +ت +ب +ا + +ك +ق +ف +غ +ع +ظ +ط +ض +ص +ش +س + +ء +ى +ي +ؤ +و +ة +ﻩ +ن +م +ل diff --git a/app/src/main/assets/layouts/main/arabic_pc.txt b/app/src/main/assets/layouts/main/arabic_pc.txt new file mode 100644 index 0000000000..c2d9f9d25c --- /dev/null +++ b/app/src/main/assets/layouts/main/arabic_pc.txt @@ -0,0 +1,31 @@ +ض +ص +ق +ف +غ +ع +ه +خ +ح +ج + +ش +س +ي +ب +ل +ا +ت +ن +م +ك + +ظ +ط +ذ +د +ز +ر +و +ة +ث diff --git a/app/src/main/assets/layouts/main/armenian_phonetic.txt b/app/src/main/assets/layouts/main/armenian_phonetic.txt new file mode 100644 index 0000000000..d59ce9d4d5 --- /dev/null +++ b/app/src/main/assets/layouts/main/armenian_phonetic.txt @@ -0,0 +1,41 @@ +է +թ +փ +ձ +ջ +ր +չ +ճ +ժ +ծ + +ք +ո +ե և +ռ +տ +ը +ւ +ի +օ +պ + +ա +ս +դ $$$ +ֆ +գ +հ +յ +կ +լ +խ + +զ +ղ +ց +վ +բ +ն +մ +շ diff --git a/app/src/main/assets/layouts/main/azerty.json b/app/src/main/assets/layouts/main/azerty.json new file mode 100644 index 0000000000..92b5a95b23 --- /dev/null +++ b/app/src/main/assets/layouts/main/azerty.json @@ -0,0 +1,38 @@ +[ + [ + { "label": "a" }, + { "label": "z" }, + { "label": "e" }, + { "label": "r" }, + { "label": "t" }, + { "label": "y" }, + { "label": "u" }, + { "label": "i" }, + { "label": "o" }, + { "label": "p" } + ], + [ + { "label": "q" }, + { "label": "s" }, + { "label": "d" }, + { "label": "f" }, + { "label": "g" }, + { "label": "h" }, + { "label": "j" }, + { "label": "k" }, + { "label": "l" }, + { "label": "m" } + ], + [ + { "label": "w" }, + { "label": "x" }, + { "label": "c" }, + { "label": "v" }, + { "label": "b" }, + { "label": "n" }, + { "$": "shift_state_selector", + "shiftedManual": { "label": "?" }, + "default": { "label": "'" } + } + ] +] diff --git a/app/src/main/assets/layouts/main/belarusian.txt b/app/src/main/assets/layouts/main/belarusian.txt new file mode 100644 index 0000000000..44408c5605 --- /dev/null +++ b/app/src/main/assets/layouts/main/belarusian.txt @@ -0,0 +1,33 @@ +й +ц +у +к +е +н +г +ш +ў +з +х + +ф +ы +в +а +п +р +о +л +д +ж +э + +я +ч +с +м +і +т +ь +б < +ю > diff --git a/app/src/main/assets/layouts/main/bemba.txt b/app/src/main/assets/layouts/main/bemba.txt new file mode 100644 index 0000000000..5253b2885a --- /dev/null +++ b/app/src/main/assets/layouts/main/bemba.txt @@ -0,0 +1,29 @@ +q +w +e +r +t +y +u +i +o +p +ŋ + +a +s +d +f +g +h +j +k +l + +z +x +c +v +b +n +m diff --git a/app/src/main/assets/layouts/main/bengali_akkhor.json b/app/src/main/assets/layouts/main/bengali_akkhor.json new file mode 100644 index 0000000000..4b6a6f07d9 --- /dev/null +++ b/app/src/main/assets/layouts/main/bengali_akkhor.json @@ -0,0 +1,132 @@ +[ + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঢ" }, + "default": { "label": "ধ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঠ" }, + "default": { "label": "থ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ৈ" }, + "default": { "label": "ে" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ড়" }, + "default": { "label": "র" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ট" }, + "default": { "label": "ত" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঞ" }, + "default": { "label": "য়" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ূ" }, + "default": { "label": "ু" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ী" }, + "default": { "label": "ি" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ৌ" }, + "default": { "label": "ো" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ফ" }, + "default": { "label": "প" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঋ" }, + "default": { "label": "আ" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "অ" }, + "default": { "label": "া" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "শ" }, + "default": { "label": "স" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ড" }, + "default": { "label": "দ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঢ়" }, + "default": { "label": "ৃ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঘ" }, + "default": { "label": "গ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "হ" }, + "default": { "label": "্" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঝ" }, + "default": { "label": "জ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "খ" }, + "default": { "label": "ক" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ৎ" }, + "default": { "label": "ল" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঈ" }, + "default": { "label": "ই" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঊ" }, + "default": { "label": "উ" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "।", "popup": { "main": { "label": "॥" } }, "labelFlags": 1073741824 }, + "default": { "label": "য" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঙ" }, + "default": { "label": "ষ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ছ" }, + "default": { "label": "চ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঃ" }, + "default": { "label": "ভ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঁ" }, + "default": { "label": "ব" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ণ" }, + "default": { "label": "ন" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ং" }, + "default": { "label": "ম" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঐ" }, + "default": { "label": "এ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঔ" }, + "default": { "label": "ও" } + } + ] +] diff --git a/app/src/main/assets/layouts/main/bengali_baishakhi.json b/app/src/main/assets/layouts/main/bengali_baishakhi.json new file mode 100644 index 0000000000..6b6ee44872 --- /dev/null +++ b/app/src/main/assets/layouts/main/bengali_baishakhi.json @@ -0,0 +1,127 @@ +[ + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঢ", "labelFlags": 1073741824 }, + "default": { "label": "ড", "popup": { "relevant": [{ "label": "ঢ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ূ", "labelFlags": 1073741824 }, + "default": { "label": "ী", "popup": { "relevant": [{ "label": "ূ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "এ", "labelFlags": 1073741824 }, + "default": { "label": "ে", "popup": { "relevant": [{ "label": "ঐ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ৃ", "labelFlags": 1073741824 }, + "default": { "label": "র", "popup": { "main": { "label": "ঋ" }, "relevant": [{ "label": "র‍্য" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঠ", "labelFlags": 1073741824 }, + "default": { "label": "ট", "popup": { "relevant": [{ "label": "ঠ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "য়", "labelFlags": 1073741824 }, + "default": { "label": "য", "popup": { "relevant": [{ "label": "য়" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "উ", "labelFlags": 1073741824 }, + "default": { "label": "ু", "popup": { "relevant": [{ "label": "ঊ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ই", "labelFlags": 1073741824 }, + "default": { "label": "ি", "popup": { "relevant": [{ "label": "ঈ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ও", "labelFlags": 1073741824 }, + "default": { "label": "ো", "popup": { "relevant": [{ "label": "ঔ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ফ", "labelFlags": 1073741824 }, + "default": { "label": "প", "popup": { "relevant": [{ "label": "ফ" }]}} + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "অ", "labelFlags": 1073741824 }, + "default": { "label": "া", "popup": { "relevant": [{ "label": "আ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "শ", "labelFlags": 1073741824 }, + "default": { "label": "স", "popup": { "relevant": [{ "label": "ষ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ধ", "labelFlags": 1073741824 }, + "default": { "label": "দ", "popup": { "relevant": [{ "label": "ধ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "থ", "labelFlags": 1073741824 }, + "default": { "label": "ত", "popup": { "main": { "label": "থ" }, "relevant": [{ "label": "ৎ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঘ", "labelFlags": 1073741824 }, + "default": { "label": "গ", "popup": { "relevant": [{ "label": "ঘ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "হ", "labelFlags": 1073741824 }, + "default": { "label": "্", "popup": { "relevant": [{ "label": "ঃ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঝ", "labelFlags": 1073741824 }, + "default": { "label": "জ", "popup": { "relevant": [{ "label": "ঝ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "খ", "labelFlags": 1073741824 }, + "default": { "label": "ক", "popup": { "relevant": [{ "label": "খ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ং", "labelFlags": 1073741824 }, + "default": { "label": "ল", "popup": { "relevant": [{ "label": "ং" }]}} + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ৌ", "labelFlags": 1073741824 }, + "default": { "label": "ৈ", "popup": { "relevant": [{ "label": "ৌ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঢ়", "labelFlags": 1073741824 }, + "default": { "label": "ড়", "popup": { "relevant": [{ "label": "ঢ়" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ছ", "labelFlags": 1073741824 }, + "default": { "label": "চ", "popup": { "relevant": [{ "label": "ছ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঁ", "labelFlags": 1073741824, "popup": { "relevant": [ + { "label": "!autoColumnOrder!6" }, + { "label": "়" }, + { "label": "ৄ" }, + { "label": "ঽ" }, + { "label": "ৢ" }, + { "label": "ৱ" }, + { "label": "ৣ" }, + { "label": "ৗ" }, + { "label": "ৠ" }, + { "label": "৺" }, + { "label": "ঌ" }, + { "label": "ৰ" }, + { "label": "ৡ"} + ]}}, + "default": { "label": "ঞ", "popup": { "relevant": [{ "label": "ঁ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ভ", "labelFlags": 1073741824 }, + "default": { "label": "ব", "popup": { "relevant": [{ "label": "ভ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ণ", "labelFlags": 1073741824 }, + "default": { "label": "ন", "popup": { "relevant": [{ "label": "ণ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঙ", "labelFlags": 1073741824 }, + "default": { "label": "ম", "popup": { "relevant": [{ "label": "ঁ" }]}} + } + ] + ] + \ No newline at end of file diff --git a/app/src/main/assets/layouts/main/bengali_inscript.json b/app/src/main/assets/layouts/main/bengali_inscript.json new file mode 100644 index 0000000000..3e03525e80 --- /dev/null +++ b/app/src/main/assets/layouts/main/bengali_inscript.json @@ -0,0 +1,142 @@ +[ + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঔ", "labelFlags": 1073741824 }, + "default": { "label": "ৌ", "popup": { "relevant": [{"label": "ঔ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঐ", "labelFlags": 1073741824 }, + "default": { "label": "ৈ", "popup": { "relevant": [{"label": "ঐ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "আ", "labelFlags": 1073741824 }, + "default": { "label": "া", "popup": { "relevant": [{"label": "আ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঈ", "labelFlags": 1073741824 }, + "default": { "label": "ী", "popup": { "relevant": [{"label": "ঈ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঊ", "labelFlags": 1073741824 }, + "default": { "label": "ূ", "popup": { "relevant": [{"label": "ঊ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ভ", "labelFlags": 1073741824 }, + "default": { "label": "ব", "popup": { "relevant": [{"label": "ভ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঙ", "labelFlags": 1073741824 }, + "default": { "label": "হ", "popup": { "relevant": [{"label": "ঙ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঘ", "labelFlags": 1073741824 }, + "default": { "label": "গ", "popup": { "relevant": [{"label": "ঘ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ধ", "labelFlags": 1073741824 }, + "default": { "label": "দ", "popup": { "relevant": [{"label": "ধ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঝ", "labelFlags": 1073741824 }, + "default": { "label": "জ", "popup": { "relevant": [{"label": "ঝ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঢ", "labelFlags": 1073741824 }, + "default": { "label": "ড", "popup": { "relevant": [{"label": "ঢ" }]}} + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ও", "labelFlags": 1073741824 }, + "default": { "label": "ো", "popup": { "relevant": [{"label": "ও" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "এ", "labelFlags": 1073741824 }, + "default": { "label": "ে", "popup": { "relevant": [{"label": "এ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "অ", "labelFlags": 1073741824 }, + "default": { "label": "্", "popup": { "relevant": [{"label": "অ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ই", "labelFlags": 1073741824 }, + "default": { "label": "ি", "popup": { "relevant": [{"label": "ই" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "উ", "labelFlags": 1073741824 }, + "default": { "label": "ু", "popup": { "relevant": [{"label": "উ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ফ", "labelFlags": 1073741824 }, + "default": { "label": "প", "popup": { "relevant": [{"label": "ফ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ড়", "labelFlags": 1073741824 }, + "default": { "label": "র", "popup": { "main": { "label": "ড়" }, "relevant": [{ "label": "র‍্য" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "খ", "labelFlags": 1073741824 }, + "default": { "label": "ক", "popup": { "relevant": [{"label": "খ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "থ", "labelFlags": 1073741824 }, + "default": { "label": "ত", "popup": { "main": { "label": "থ" }, "relevant": [{ "label": "ৎ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ছ", "labelFlags": 1073741824 }, + "default": { "label": "চ", "popup": { "relevant": [{"label": "ছ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঠ", "labelFlags": 1073741824 }, + "default": { "label": "ট", "popup": { "relevant": [{"label": "ঠ" }]}} + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঋ", "labelFlags": 1073741824 }, + "default": { "label": "ৃ", "popup": { "relevant": [{"label": "ঋ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঁ", "labelFlags": 1073741824, "popup": { "relevant": [ + {"label": "!autoColumnOrder!6" }, + { "label": "়" }, + { "label": "ৄ" }, + { "label": "ঽ" }, + { "label": "ৢ" }, + { "label": "ৱ" }, + { "label": "ৣ" }, + { "label": "ৗ" }, + { "label": "ৠ" }, + { "label": "৺" }, + { "label": "ঌ" }, + { "label": "ৰ" }, + { "label": "ৡ" } + ]}}, + "default": { "label": "ং", "popup": { "main": { "label": "ঁ" }, "relevant": [{ "label": "ঃ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ণ", "labelFlags": 1073741824 }, + "default": { "label": "ম", "popup": { "relevant": [{"label": "ণ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঞ", "labelFlags": 1073741824 }, + "default": { "label": "ন", "popup": { "relevant": [{"label": "ঞ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঢ়", "labelFlags": 1073741824 }, + "default": { "label": "ব", "popup": { "relevant": [{"label": "ঢ়" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ষ", "labelFlags": 1073741824 }, + "default": { "label": "ল", "popup": { "relevant": [{"label": "ষ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "শ", "labelFlags": 1073741824 }, + "default": { "label": "স", "popup": { "relevant": [{"label": "শ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "য", "labelFlags": 1073741824 }, + "default": { "label": "য়", "popup": { "relevant": [{"label": "য" }]}} + } + ] +] \ No newline at end of file diff --git a/app/src/main/assets/layouts/main/bengali_probhat.json b/app/src/main/assets/layouts/main/bengali_probhat.json new file mode 100644 index 0000000000..fc147f0e68 --- /dev/null +++ b/app/src/main/assets/layouts/main/bengali_probhat.json @@ -0,0 +1,141 @@ +[ + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ধ", "labelFlags": 1073741824 }, + "default": { "label": "দ", "popup": { "relevant": [{ "label": "ধ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঊ", "labelFlags": 1073741824 }, + "default": { "label": "ূ", "popup": { "relevant": [{ "label": "ঊ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঈ", "labelFlags": 1073741824 }, + "default": { "label": "ী", "popup": { "relevant": [{ "label": "ঈ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ড়", "labelFlags": 1073741824 }, + "default": { "label": "র", "popup": { "main": { "label": "ড়" }, "relevant": [{ "label": "র‍্য" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঠ", "labelFlags": 1073741824 }, + "default": { "label": "ট", "popup": { "relevant": [{ "label": "ঠ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঐ", "labelFlags": 1073741824 }, + "default": { "label": "এ", "popup": { "relevant": [{ "label": "ঐ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "উ", "labelFlags": 1073741824 }, + "default": { "label": "ু", "popup": { "relevant": [{ "label": "উ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ই", "labelFlags": 1073741824 }, + "default": { "label": "ি", "popup": { "relevant": [{ "label": "ই" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঔ", "labelFlags": 1073741824 }, + "default": { "label": "ও", "popup": { "relevant": [{ "label": "ঔ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ফ", "labelFlags": 1073741824 }, + "default": { "label": "প", "popup": { "relevant": [{ "label": "ফ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ৈ", "labelFlags": 1073741824 }, + "default": { "label": "ে", "popup": { "relevant": [{ "label": "ৈ" }]}} + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "অ", "labelFlags": 1073741824 }, + "default": { "label": "া", "popup": { "relevant": [{ "label": "অ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ষ", "labelFlags": 1073741824 }, + "default": { "label": "স", "popup": { "relevant": [{ "label": "ষ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঢ", "labelFlags": 1073741824 }, + "default": { "label": "ড", "popup": { "relevant": [{ "label": "ঢ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "থ", "labelFlags": 1073741824 }, + "default": { "label": "ত", "popup": { "main": { "label": "থ" }, "relevant": [{ "label": "ৎ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঘ", "labelFlags": 1073741824 }, + "default": { "label": "গ", "popup": { "relevant": [{ "label": "ঘ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঃ", "labelFlags": 1073741824 }, + "default": { "label": "হ", "popup": { "relevant": [{ "label": "ঃ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঝ", "labelFlags": 1073741824 }, + "default": { "label": "জ", "popup": { "relevant": [{ "label": "ঝ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "খ", "labelFlags": 1073741824 }, + "default": { "label": "ক", "popup": { "relevant": [{ "label": "খ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ং", "labelFlags": 1073741824 }, + "default": { "label": "ল", "popup": { "relevant": [{ "label": "ং" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ৌ", "labelFlags": 1073741824 }, + "default": { "label": "ো", "popup": { "relevant": [{ "label": "ৌ" }]}} + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "য", "labelFlags": 1073741824 }, + "default": { "label": "য়", "popup": { "main": { "label": "য" }, "relevant": [{ "label": "্য" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঢ়", "labelFlags": 1073741824 }, + "default": { "label": "শ", "popup": { "relevant": [{ "label": "ঢ়" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ছ", "labelFlags": 1073741824 }, + "default": { "label": "চ", "popup": { "relevant": [{ "label": "ছ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঋ", "labelFlags": 1073741824 }, + "default": { "label": "আ", "popup": { "relevant": [{ "label": "ঋ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ভ", "labelFlags": 1073741824 }, + "default": { "label": "ব", "popup": { "relevant": [{ "label": "ভ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ণ", "labelFlags": 1073741824 }, + "default": { "label": "ন", "popup": { "relevant": [{ "label": "ণ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঙ", "labelFlags": 1073741824 }, + "default": { "label": "ম", "popup": { "relevant": [{ "label": "ঙ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ৃ", "labelFlags": 1073741824 }, + "default": { "label": "ঞ", "popup": { "relevant": [{ "label": "ৃ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঁ", "popup": { "relevant": [ + { "label": "!autoColumnOrder!6"}, + { "label": "়" }, + { "label": "ৄ"}, + { "label": "ঽ"}, + { "label": "ৢ"}, + { "label": "ৱ"}, + { "label": "ৣ"}, + { "label": "ৗ"}, + { "label": "ৠ"}, + { "label": "৺"}, + { "label": "ঌ"}, + { "label": "ৰ"}, + { "label": "ৡ" }]}}, + "default": { "label": "্", "popup": { "relevant": [{ "label": "ঁ" }]}} + } + ] +] \ No newline at end of file diff --git a/app/src/main/assets/layouts/main/bengali_unijoy.json b/app/src/main/assets/layouts/main/bengali_unijoy.json new file mode 100644 index 0000000000..929f5d93e3 --- /dev/null +++ b/app/src/main/assets/layouts/main/bengali_unijoy.json @@ -0,0 +1,126 @@ +[ + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ং", "labelFlags": 1073741824 }, + "default": { "label": "ঙ", "popup": { "relevant": [{ "label": "ং" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "য়", "labelFlags": 1073741824 }, + "default": { "label": "য", "popup": { "relevant": [{ "label": "য়" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঢ", "labelFlags": 1073741824 }, + "default": { "label": "ড", "popup": { "relevant": [{ "label": "ঢ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ফ", "labelFlags": 1073741824 }, + "default": { "label": "প", "popup": { "relevant": [{ "label": "ফ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঠ", "labelFlags": 1073741824 }, + "default": { "label": "ট", "popup": { "relevant": [{ "label": "ঠ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ছ", "labelFlags": 1073741824 }, + "default": { "label": "চ", "popup": { "relevant": [{ "label": "ছ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঝ", "labelFlags": 1073741824 }, + "default": { "label": "জ", "popup": { "relevant": [{ "label": "ঝ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঞ", "labelFlags": 1073741824 }, + "default": { "label": "হ", "popup": { "relevant": [{ "label": "ঞ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঘ", "labelFlags": 1073741824 }, + "default": { "label": "গ", "popup": { "relevant": [{ "label": "ঘ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঢ়", "labelFlags": 1073741824 }, + "default": { "label": "ড়", "popup": { "relevant": [{ "label": "ঢ়" }]}} + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঃ", "labelFlags": 1073741824 }, + "default": { "label": "ৃ", "popup": { "relevant": [{ "label": "ঋ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ূ", "popup": { "relevant": [{ "label": "ঊ" }]}}, + "default": { "label": "ু", "popup": { "relevant": [{ "label": "উ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ী", "popup": { "relevant": [{ "label": "ঈ"}]}}, + "default": { "label": "ি", "popup": { "relevant": [{ "label": "ই" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "অ", "labelFlags": 1073741824 }, + "default": { "label": "া", "popup": { "main": { "label": "আ" }, "relevant": [{ "label": "অ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ঁ", "labelFlags": 1073741824, "popup": { "relevant": [ + { "label": "!autoColumnOrder!6" }, + { "label": "়" }, + { "label": "ৄ" }, + { "label": "ঽ" }, + { "label": "ৢ" }, + { "label": "ৱ" }, + { "label": "ৣ" }, + { "label": "ৗ" }, + { "label": "ৠ" }, + { "label": "৺" }, + { "label": "ঌ" }, + { "label": "ৰ" }, + { "label": "ৡ"} + ]}}, + "default": { "label": "্", "popup": { "relevant": [{ "label": "ঁ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ভ", "labelFlags": 1073741824 }, + "default": { "label": "ব", "popup": { "relevant": [{ "label": "ভ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "খ", "labelFlags": 1073741824 }, + "default": { "label": "ক", "popup": { "relevant": [{ "label": "খ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "থ", "labelFlags": 1073741824 }, + "default": { "label": "ত", "popup": { "main": { "label": "থ" }, "relevant": [{ "label": "ৎ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ধ", "labelFlags": 1073741824 }, + "default": { "label": "দ", "popup": { "relevant": [{ "label": "ধ" }]}} + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "্য", "labelFlags": 1073741824 }, + "default": { "label": "্র", "popup": { "relevant": [{ "label": "্য" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ৌ", "popup": { "relevant": [{ "label": "ঔ" }]}}, + "default": { "label": "ো", "popup": { "relevant": [{ "label": "ও" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ৈ", "popup": { "relevant": [{ "label": "ঐ" }]}}, + "default": { "label": "ে", "popup": { "relevant": [{ "label": "এ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ল", "labelFlags": 1073741824 }, + "default": { "label": "র", "popup": { "main": { "label": "ল" }, "relevant": [{ "label": "র‍্য" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ণ", "labelFlags": 1073741824 }, + "default": { "label": "ন", "popup": { "relevant": [{ "label": "ণ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ষ", "labelFlags": 1073741824 }, + "default": { "label": "স", "popup": { "relevant": [{ "label": "ষ" }]}} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "শ", "labelFlags": 1073741824 }, + "default": { "label": "ম", "popup": { "relevant": [{ "label": "শ" }]}} + } + ] +] \ No newline at end of file diff --git a/app/src/main/assets/layouts/main/bepo.txt b/app/src/main/assets/layouts/main/bepo.txt new file mode 100644 index 0000000000..de5b027f59 --- /dev/null +++ b/app/src/main/assets/layouts/main/bepo.txt @@ -0,0 +1,29 @@ +b +é è +p +o +v +d +l +j +z +w + +a +u +i +e +c +t +s +r +n +m + +y +x +k +q +g +h +f diff --git a/app/src/main/assets/layouts/main/bulgarian.txt b/app/src/main/assets/layouts/main/bulgarian.txt new file mode 100644 index 0000000000..b7486cd852 --- /dev/null +++ b/app/src/main/assets/layouts/main/bulgarian.txt @@ -0,0 +1,32 @@ +я +в +е +р +т +ъ +у +и ѝ +о +п +ч + +а +с +д +ф +г +х +й +к +л +ш +щ + +з +ь +ц +ж +б +н +м +ю diff --git a/app/src/main/assets/layouts/main/bulgarian_bds.txt b/app/src/main/assets/layouts/main/bulgarian_bds.txt new file mode 100644 index 0000000000..88af6f47ce --- /dev/null +++ b/app/src/main/assets/layouts/main/bulgarian_bds.txt @@ -0,0 +1,33 @@ +у +е +и ѝ +ш +щ +к +с +д +з +ц +б + +ь +я +а +о +ж +г +т +н +в +м +ч + +ю +й +ъ +э +ф +х +п +р +л diff --git a/app/src/main/assets/layouts/main/bulgarian_bekl.txt b/app/src/main/assets/layouts/main/bulgarian_bekl.txt new file mode 100644 index 0000000000..885fc533fd --- /dev/null +++ b/app/src/main/assets/layouts/main/bulgarian_bekl.txt @@ -0,0 +1,33 @@ +у +е +и ѝ +ш +щ +к +с +д +з +ц +б + +ь +я +а +о +ж +г +т +н +в +м +ч + +ю +й ѭ +ъ ѫ +ѣ +ф +х +п +р +л diff --git a/app/src/main/assets/layouts/main/central_kurdish.txt b/app/src/main/assets/layouts/main/central_kurdish.txt new file mode 100644 index 0000000000..eec1593e8d --- /dev/null +++ b/app/src/main/assets/layouts/main/central_kurdish.txt @@ -0,0 +1,31 @@ +ق +و +ە +ر +ت +ی +ێ +ئ +ۆ +پ + +ا +س +ش +د +ف +ھ|ه +ژ +ل +ک +گ + +ز +ع +ح +ج +چ +خ +ب +ن +م diff --git a/app/src/main/assets/layouts/main/chuvash.txt b/app/src/main/assets/layouts/main/chuvash.txt new file mode 100644 index 0000000000..c94eef9c2f --- /dev/null +++ b/app/src/main/assets/layouts/main/chuvash.txt @@ -0,0 +1,44 @@ +ё +ӑ +ӗ +ҫ +ӳ +ъ +- +! +? +" + +й +ц +у +к +е +н +г +ш +щ +з +х + +ф +ы +в +а +п +р +о +л +д +ж +э + +я +ч +с +м +и +т +ь +б +ю \ No newline at end of file diff --git a/app/src/main/assets/layouts/main/colemak.json b/app/src/main/assets/layouts/main/colemak.json new file mode 100644 index 0000000000..46c8f2f59e --- /dev/null +++ b/app/src/main/assets/layouts/main/colemak.json @@ -0,0 +1,38 @@ +[ + [ + { "label": "q" }, + { "label": "w" }, + { "label": "f" }, + { "label": "p" }, + { "label": "g" }, + { "label": "j" }, + { "label": "l" }, + { "label": "u" }, + { "label": "y" }, + { "$": "shift_state_selector", + "shiftedManual": { "label": ":" }, + "default": { "label": ";", "popup": { "main": { "label": ":" } } } + } + ], + [ + { "label": "a" }, + { "label": "r" }, + { "label": "s" }, + { "label": "t" }, + { "label": "d" }, + { "label": "h" }, + { "label": "n" }, + { "label": "e" }, + { "label": "i" }, + { "label": "o", "popup": { "main": { "label": "…" } } } + ], + [ + { "label": "z" }, + { "label": "x" }, + { "label": "c" }, + { "label": "v" }, + { "label": "b" }, + { "label": "k" }, + { "label": "m" } + ] +] diff --git a/app/src/main/assets/layouts/main/colemak_dh.json b/app/src/main/assets/layouts/main/colemak_dh.json new file mode 100644 index 0000000000..7579a5d602 --- /dev/null +++ b/app/src/main/assets/layouts/main/colemak_dh.json @@ -0,0 +1,38 @@ +[ + [ + { "label": "q" }, + { "label": "w" }, + { "label": "f" }, + { "label": "p" }, + { "label": "b" }, + { "label": "j" }, + { "label": "l" }, + { "label": "u" }, + { "label": "y" }, + { "$": "shift_state_selector", + "shiftedManual": { "label": ":" }, + "default": { "label": ";", "popup": { "main": { "label": ":" } } } + } + ], + [ + { "label": "a" }, + { "label": "r" }, + { "label": "s" }, + { "label": "t" }, + { "label": "g" }, + { "label": "m" }, + { "label": "n" }, + { "label": "e" }, + { "label": "i" }, + { "label": "o", "popup": { "main": { "label": "…" } } } + ], + [ + { "label": "z" }, + { "label": "x" }, + { "label": "c" }, + { "label": "d" }, + { "label": "v" }, + { "label": "k" }, + { "label": "h" } + ] +] diff --git a/app/src/main/assets/layouts/main/dagbani.txt b/app/src/main/assets/layouts/main/dagbani.txt new file mode 100644 index 0000000000..588ff05132 --- /dev/null +++ b/app/src/main/assets/layouts/main/dagbani.txt @@ -0,0 +1,28 @@ +q +w +ɛ e +r ¢ +t +y +u +i +ɔ o +p + +a +s +d +f +ɣ g +h +j +k +l + +ʒ z +x x +c +v +b +ŋ n +m diff --git a/app/src/main/assets/layouts/main/dargwa_urakhi.txt b/app/src/main/assets/layouts/main/dargwa_urakhi.txt new file mode 100644 index 0000000000..44da4e9101 --- /dev/null +++ b/app/src/main/assets/layouts/main/dargwa_urakhi.txt @@ -0,0 +1,35 @@ +й +ц +у ӯ ӱ ý ӱ́ +к ҟ ҝ ҡ +е ē ë е́ ë́ +н +г ґ ғ ꚕ +ш +щ +з ҙ +х ҳ ẋ +ъ + +ф +ы +в w +а ā ӓ á ӓ́ +п ԥ +р ҏ +о о̄ ӧ ó ӧ́ +л +д +ж җ +э э̄ э́ +Ӏ + +я я̄ я́ ǽ æ ǣ +ч ҹ +с +м +и ӣ и́ +т ԏ +ь +б ҕ +ю ю́ \ No newline at end of file diff --git a/app/src/main/assets/layouts/main/dvorak.json b/app/src/main/assets/layouts/main/dvorak.json new file mode 100644 index 0000000000..b4b318a717 --- /dev/null +++ b/app/src/main/assets/layouts/main/dvorak.json @@ -0,0 +1,55 @@ +[ + [ + { "$": "shift_state_selector", + "shifted": { "label": "\"" }, + "default": { "$": "variation_selector", + "uri": { "label": "/" }, + "email": { "label": "@" }, + "default": { "label": "'", "popup": { "relevant": [ + { "label": "!" }, + { "label": "\"" } + ] } } + } + }, + { "$": "shift_state_selector", + "shifted": { "label": "<" }, + "default": { "label": "," } + }, + { "$": "shift_state_selector", + "shifted": { "label": ">" }, + "default": { "label": "." } + }, + { "label": "p" }, + { "label": "y" }, + { "label": "f" }, + { "label": "g" }, + { "label": "c" }, + { "label": "r" }, + { "label": "l" } + ], + [ + { "label": "a" }, + { "label": "o" }, + { "label": "e" }, + { "label": "u" }, + { "label": "i" }, + { "label": "d" }, + { "label": "h" }, + { "label": "t" }, + { "label": "n" }, + { "label": "s" } + ], + [ + { "label": "j" }, + { "label": "k" }, + { "label": "x" }, + { "label": "b" }, + { "label": "m" }, + { "label": "w" }, + { "label": "v" } + ], + [ + { "label": "q" }, + { "label": "z" } + ] +] diff --git a/app/src/main/assets/layouts/main/esperanto.txt b/app/src/main/assets/layouts/main/esperanto.txt new file mode 100644 index 0000000000..a725a22bbf --- /dev/null +++ b/app/src/main/assets/layouts/main/esperanto.txt @@ -0,0 +1,29 @@ +ŝ q +ĝ w +e +r +t +ŭ y +u +i +o +p + +a +s +d +f +g +h +j +k +l +ĵ + +z +ĉ x +c +v w +b +n +m diff --git a/app/src/main/assets/layouts/main/ewe.txt b/app/src/main/assets/layouts/main/ewe.txt new file mode 100644 index 0000000000..bb307f1a3c --- /dev/null +++ b/app/src/main/assets/layouts/main/ewe.txt @@ -0,0 +1,28 @@ +ɛ q +w +e +r +t +ɣ y +u +i +o +p + +a +s +d +f +g +h +j +k +l + +z +ɔ x +c ¢ +v +b +n +m diff --git a/app/src/main/assets/layouts/main/farsi.txt b/app/src/main/assets/layouts/main/farsi.txt new file mode 100644 index 0000000000..2bb3154098 --- /dev/null +++ b/app/src/main/assets/layouts/main/farsi.txt @@ -0,0 +1,34 @@ +ض +ص +ث +ق +ف +غ +ع +ه +خ +ح +ج + +ش +س +ی +ب +ل +ا +ت +ن +م +ک +گ + +ظ +ط +ژ +ز +ر +ذ +د +پ +و +چ diff --git a/app/src/main/assets/layouts/main/ga.txt b/app/src/main/assets/layouts/main/ga.txt new file mode 100644 index 0000000000..03d1fe66e0 --- /dev/null +++ b/app/src/main/assets/layouts/main/ga.txt @@ -0,0 +1,28 @@ +ɛ q +w +e +r +t +y +u +i +o +p + +a +s +d +f +g +h +j +k +l + +z +ɔ x +ŋ c ¢ +v +b +n +m diff --git a/app/src/main/assets/layouts/main/georgian.json b/app/src/main/assets/layouts/main/georgian.json new file mode 100644 index 0000000000..e04af6b698 --- /dev/null +++ b/app/src/main/assets/layouts/main/georgian.json @@ -0,0 +1,112 @@ +[ + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "Q" }, + "default": { "label": "ქ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ჭ" }, + "default": { "label": "წ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "E" }, + "default": { "label": "ე" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ღ" }, + "default": { "label": "რ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "თ" }, + "default": { "label": "ტ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "Y" }, + "default": { "label": "ყ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "U" }, + "default": { "label": "უ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "I" }, + "default": { "label": "ი" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "O" }, + "default": { "label": "ო" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "P" }, + "default": { "label": "პ" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "A" }, + "default": { "label": "ა" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "შ" }, + "default": { "label": "ს" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "D" }, + "default": { "label": "დ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "F" }, + "default": { "label": "ფ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "G" }, + "default": { "label": "გ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "H" }, + "default": { "label": "ჰ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ჟ" }, + "default": { "label": "ჯ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "K" }, + "default": { "label": "კ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "L" }, + "default": { "label": "ლ" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ძ" }, + "default": { "label": "ზ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "X" }, + "default": { "label": "ხ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ჩ" }, + "default": { "label": "ც" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "V" }, + "default": { "label": "ვ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "B" }, + "default": { "label": "ბ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "N" }, + "default": { "label": "ნ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "M" }, + "default": { "label": "მ" } + } + ] +] diff --git a/app/src/main/assets/layouts/main/greek.json b/app/src/main/assets/layouts/main/greek.json new file mode 100644 index 0000000000..2510bc5343 --- /dev/null +++ b/app/src/main/assets/layouts/main/greek.json @@ -0,0 +1,41 @@ +[ + [ + { "$": "shift_state_selector", + "shiftedManual": { "label": ":", "popup": { "main": { "label": ";" } } }, + "default": { "label": ";", "popup": { "main": { "label": ":" } } } + }, + { "label": "ς", "labelFlags": 65536 }, + { "label": "ε" }, + { "label": "ρ" }, + { "label": "τ" }, + { "label": "υ" }, + { "label": "θ" }, + { "label": "ι" }, + { "label": "ο" }, + { "label": "π" } + ], + [ + { "label": "α" }, + { "label": "σ" }, + { "label": "δ" }, + { "label": "φ" }, + { "label": "γ" }, + { "label": "η" }, + { "label": "ξ" }, + { "label": "κ" }, + { "label": "λ" }, + { "$": "shift_state_selector", + "shiftedManual": { "code": 776, "label": "¨" }, + "default": { "code": 769, "label": "´" } + } + ], + [ + { "label": "ζ" }, + { "label": "χ" }, + { "label": "ψ" }, + { "label": "ω" }, + { "label": "β" }, + { "label": "ν" }, + { "label": "μ" } + ] +] diff --git a/app/src/main/assets/layouts/main/gujarati.json b/app/src/main/assets/layouts/main/gujarati.json new file mode 100644 index 0000000000..119854dd98 --- /dev/null +++ b/app/src/main/assets/layouts/main/gujarati.json @@ -0,0 +1,129 @@ +[ + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ધ" }, + "default": { "label": "અ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ન" }, + "default": { "label": "ા" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "પ" }, + "default": { "label": "િ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ફ" }, + "default": { "label": "ી" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "બ" }, + "default": { "label": "ુ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ભ" }, + "default": { "label": "ૂ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "મ" }, + "default": { "label": "ે" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ય" }, + "default": { "label": "ૈ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ર" }, + "default": { "label": "ો" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "લ" }, + "default": { "label": "ૌ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "વ" }, + "default": { "label": "ં" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "શ" }, + "default": { "label": "ઃ", "popup": { "main": { "label": "ઍ" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ષ" }, + "default": { "label": "ક", "popup": { "main": { "label": "ઑ" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "સ" }, + "default": { "label": "ખ", "popup": { "main": { "label": "ૅ" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "હ" }, + "default": { "label": "ગ", "popup": { "main": { "label": "ૉ" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ળ" }, + "default": { "label": "ઘ", "popup": { "main": { "label": "ૃ" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ક્ષ", "labelFlags": 128 }, + "default": { "label": "ઙ", "popup": { "main": { "label": "ઋ" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "જ્ઞ", "labelFlags": 128 }, + "default": { "label": "ચ", "popup": { "main": { "label": "ત્ર" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "આ" }, + "default": { "label": "છ", "popup": { "main": { "label": "ત્ત" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ઇ" }, + "default": { "label": "જ", "popup": { "main": { "label": "દ્વ" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ઈ" }, + "default": { "label": "ઝ", "popup": { "main": { "label": "દ્ધ" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ઉ" }, + "default": { "label": "ઞ", "popup": { "main": { "label": "દ્ર" } } } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ઊ" }, + "default": { "label": "ટ"} + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "એ" }, + "default": { "label": "ઠ", "popup": { "main": { "label": "શ્ર" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ઐ" }, + "default": { "label": "ડ", "popup": { "main": { "label": "શ્વ" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ઓ" }, + "default": { "label": "ઢ", "popup": { "main": { "label": "દ્દ" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ઔ" }, + "default": { "label": "ણ", "popup": { "main": { "label": "હ્ય" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "અં", "labelFlags": 128 }, + "default": { "label": "ત", "popup": { "main": { "label": "꠰" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "અઃ", "labelFlags": 128 }, + "default": { "label": "થ", "popup": { "main": { "label": "꠱" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ૐ" }, + "default": { "label": "દ", "popup": { "main": { "label": "꠲" } } } + }, + { "label": "્", "popup": { "main": { "label": "૱" } } } + ] +] diff --git a/app/src/main/assets/layouts/main/halmak.txt b/app/src/main/assets/layouts/main/halmak.txt new file mode 100644 index 0000000000..2b1d7007b1 --- /dev/null +++ b/app/src/main/assets/layouts/main/halmak.txt @@ -0,0 +1,32 @@ +w +l +r +b +z +; +q +u +d +j + +s +h +n +t +, +. +a +e +o +i + +m +v +c +g +p +x +k + +f +y diff --git a/app/src/main/assets/layouts/main/hausa.txt b/app/src/main/assets/layouts/main/hausa.txt new file mode 100644 index 0000000000..3138eb9910 --- /dev/null +++ b/app/src/main/assets/layouts/main/hausa.txt @@ -0,0 +1,28 @@ +ẹ q +w +e +r +t +y +u +i +o +p + +a +s +d +f +g +h +j +k +l + +z +ọ x +c +v +b +n ₦ +m diff --git a/app/src/main/assets/layouts/main/hebrew.json b/app/src/main/assets/layouts/main/hebrew.json new file mode 100644 index 0000000000..99cdaa34b3 --- /dev/null +++ b/app/src/main/assets/layouts/main/hebrew.json @@ -0,0 +1,89 @@ +[ + [ + { "$": "variation_selector", + "email": { "label": "-" }, + "uri": { "label": "-" }, + "default": { "label": "'", "popup": { "relevant": [{ "label": "׳" }, { "label": "״" }, { "label": "\"" }] } } + }, + { "$": "variation_selector", + "email": { "label": "_" }, + "uri": { "label": "_" }, + "default": { "label": "-", "popup": { "relevant": [{ "label": "־" }, { "label": "_" }] } } + }, + { "label": "ק", "popup": { + "relevant": [ + { "label": "\u05b8" }, + { "label": "\u05b3" }, + { "label": "\u05bb" } + ] + } }, + { "label": "ר", "popup": { + "relevant": [ + { "label": "\u05bf" } + ] + } }, + { "label": "א" }, + { "label": "ט" }, + { "label": "ו", "popup": { + "relevant": [ + { "label": "ו\u05b9" }, + { "label": "ו\u05bc" } + ] + } }, + { "label": "ן" }, + { "label": "ם" }, + { "label": "פ", "popup": { + "relevant": [ + { "label": "\u05b7" }, + { "label": "\u05b2" } + ] + } } + ], + [ + { "label": "ש", "popup": { + "relevant": [ + { "label": "\u05b0" }, + { "label": "ש\u05c2" }, + { "label": "ש\u05c1" } + ] + } }, + { "label": "ד", "popup": { + "relevant": [ + { "label": "\u05bc" } + ] + } }, + { "label": "ג" }, + { "label": "כ" }, + { "label": "ע" }, + { "label": "י" }, + { "label": "ח", "popup": { + "relevant": [ + { "label": "\u05b4" }, + { "label": "\u05b9" } + ] + } }, + { "label": "ל" }, + { "label": "ך" }, + { "label": "ף" } + ], + [ + { "label": "ז" }, + { "label": "ס", "popup": { + "relevant": [ + { "label": "\u05b6" }, + { "label": "\u05b1" } + ] + } }, + { "label": "ב" }, + { "label": "ה" }, + { "label": "נ" }, + { "label": "מ" }, + { "label": "צ", "popup": { + "relevant": [ + { "label": "\u05b5" } + ] + } }, + { "label": "ת" }, + { "label": "ץ" } + ] +] diff --git a/app/src/main/assets/layouts/main/hebrew_1452_2.json b/app/src/main/assets/layouts/main/hebrew_1452_2.json new file mode 100644 index 0000000000..137a5d5107 --- /dev/null +++ b/app/src/main/assets/layouts/main/hebrew_1452_2.json @@ -0,0 +1,85 @@ +[ + [ + { "label": "ץ", "popup": { + "relevant": [ + { "label": "ש\u05c2" } + ] + } }, + { "label": "ן", "popup": { + "relevant": [ + { "label": "ש\u05c1" } + ] + } }, + { "label": "ק", "popup": { + "relevant": [ + { "label": "\u05b8" }, + { "label": "\u05bb" } + ] + } }, + { "label": "ר", "popup": { + "relevant": [ + { "label": "\u05b3" } + ] + } }, + { "label": "א" }, + { "label": "ט" }, + { "label": "ו", "popup": { + "relevant": [ + { "label": "\u05b9" } + ] + } }, + { "label": "ת" }, + { "label": "ם" }, + { "label": "פ", "popup": { + "relevant": [ + { "label": "\u05b2" }, + { "label": "\u05b7" } + ] + } } + ], + [ + { "label": "ש", "popup": { + "relevant": [ + { "label": "\u05b0" } + ] + } }, + { "label": "ד", "popup": { + "relevant": [ + { "label": "\u05bc" } + ] + } }, + { "label": "ג" }, + { "label": "כ" }, + { "label": "ע" }, + { "label": "י" }, + { "label": "ח", "popup": { + "relevant": [ + { "label": "\u05b4" } + ] + } }, + { "label": "ל" }, + { "label": "ך" }, + { "label": "ף" } + ], + [ + { "label": "ז" }, + { "label": "ס", "popup": { + "relevant": [ + { "label": "\u05b6" } + ] + } }, + { "label": "ב", "popup": { + "relevant": [ + { "label": "\u05b1" } + ] + } }, + { "label": "ה" }, + { "label": "נ" }, + { "label": "מ" }, + { "label": "צ", "popup": { + "relevant": [ + { "label": "\u05b5" } + ] + } } + ] +] diff --git a/app/src/main/assets/layouts/main/hindi.json b/app/src/main/assets/layouts/main/hindi.json new file mode 100644 index 0000000000..6cbf926538 --- /dev/null +++ b/app/src/main/assets/layouts/main/hindi.json @@ -0,0 +1,132 @@ +[ + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "औ" }, + "default": { "label": "ौ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ऐ" }, + "default": { "label": "ै" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "आ" }, + "default": { "label": "ा" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ई" }, + "default": { "label": "ी" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ऊ" }, + "default": { "label": "ू" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "भ" }, + "default": { "label": "ब" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ः" }, + "default": { "label": "ह" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "घ" }, + "default": { "label": "ग" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ध" }, + "default": { "label": "द" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "झ" }, + "default": { "label": "ज" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ढ" }, + "default": { "label": "ड" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ओ" }, + "default": { "label": "ो" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ए" }, + "default": { "label": "े" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "अ" }, + "default": { "label": "्" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "इ" }, + "default": { "label": "ि" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "उ" }, + "default": { "label": "ु" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "फ" }, + "default": { "label": "प" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ऱ" }, + "default": { "label": "र" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ख" }, + "default": { "label": "क" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "थ" }, + "default": { "label": "त" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "छ" }, + "default": { "label": "च" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ठ" }, + "default": { "label": "ट" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ऑ" }, + "default": { "label": "ॉ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ँ" }, + "default": { "label": "ं" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ण" }, + "default": { "label": "म" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ऩ" }, + "default": { "label": "न" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ळ" }, + "default": { "label": "व" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "श" }, + "default": { "label": "ल" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ष" }, + "default": { "label": "स" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ृ" }, + "default": { "label": "य" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ञ" }, + "default": { "label": "़" } + } + ] +] diff --git a/app/src/main/assets/layouts/main/hindi_compact.json b/app/src/main/assets/layouts/main/hindi_compact.json new file mode 100644 index 0000000000..bb659ab7b1 --- /dev/null +++ b/app/src/main/assets/layouts/main/hindi_compact.json @@ -0,0 +1,40 @@ +[ + [ + { "label": "औ" }, + { "label": "ऐ" }, + { "label": "आ" }, + { "label": "ई" }, + { "label": "ऊ" }, + { "label": "ब" }, + { "label": "ह" }, + { "label": "ग" }, + { "label": "द" }, + { "label": "ज" }, + { "label": "ड" } + ], + [ + { "label": "ओ" }, + { "label": "ए" }, + { "label": "अ" }, + { "label": "इ" }, + { "label": "उ" }, + { "label": "प" }, + { "label": "र" }, + { "label": "क" }, + { "label": "त" }, + { "label": "च" }, + { "label": "ट" } + ], + [ + { "label": "ऑ" }, + { "label": "्" }, + { "label": "ं" }, + { "label": "म" }, + { "label": "न" }, + { "label": "व" }, + { "label": "ल" }, + { "label": "स" }, + { "label": "य" }, + { "label": "क्ष", "labelFlags": 128 } + ] +] diff --git a/app/src/main/assets/layouts/main/hindi_phonetic.json b/app/src/main/assets/layouts/main/hindi_phonetic.json new file mode 100644 index 0000000000..0a9193299d --- /dev/null +++ b/app/src/main/assets/layouts/main/hindi_phonetic.json @@ -0,0 +1,554 @@ +[ + [ + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "ठ" + }, + "default": { + "label": "ट" + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "ढ" + }, + "default": { + "label": "ड", + "popup": { + "main": { + "label": "ड़" + }, + "relevant": [ + { + "label": "ढ़" + } + ] + } + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "ै" + }, + "default": { + "label": "े", + "popup": { + "main": { + "label": "ए" + }, + "relevant": [ + { + "label": "ऍ" + }, + { + "label": "ऐ" + }, + { + "code": 2374, + "label": " ॆ" + }, + { + "code": 2389, + "label": " ॕ" + }, + { + "code": 2382, + "label": " ॎ" + }, + { + "label": "ऎ" + } + ] + } + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "ृ" + }, + "default": { + "label": "र", + "popup": { + "main": { + "label": "ऋ" + }, + "relevant": [ + { + "label": "ॠ" + }, + { + "label": "ॄ" + }, + { + "label": "ऱ" + } + ] + } + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "थ" + }, + "default": { + "label": "त", + "popup": { + "main": { + "label": "त्र" + } + } + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "य़" + }, + "default": { + "label": "य", + "popup": { + "main": { + "label": "ॺ" + } + } + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "ू" + }, + "default": { + "label": "ु", + "popup": { + "main": { + "label": "उ" + }, + "relevant": [ + { + "label": "ऊ" + }, + { + "label": "ॷ" + }, + { + "code": 2390, + "label": " ॖ" + }, + { + "label": "ॶ" + }, + { + "code": 2391, + "label": " ॗ" + } + ] + } + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "ी" + }, + "default": { + "label": "ि", + "popup": { + "main": { + "label": "इ" + }, + "relevant": [ + { + "label": "ई" + } + ] + } + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "ौ" + }, + "default": { + "label": "ो", + "popup": { + "main": { + "label": "ओ" + }, + "relevant": [ + { + "label": "औ" + }, + { + "label": "ऑ" + }, + { + "code": 2383, + "label": " ॏ" + }, + { + "label": "ॵ" + }, + { + "label": "ॐ" + }, + { + "label": "ॉ" + }, + { + "label": "ॳ" + }, + { + "label": "ॴ" + }, + { + "code": 2362, + "label": " ऺ" + }, + { + "code": 2363, + "label": " ऻ" + }, + { + "label": "ऒ" + }, + { + "code": 2378, + "label": " ॊ" + } + ] + } + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "फ़" + }, + "default": { + "label": "प" + } + } + ], + [ + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "अ" + }, + "default": { + "label": "ा", + "popup": { + "main": { + "label": "आ" + }, + "relevant": [ + { + "label": "ॅ" + }, + { + "label": "ॲ" + }, + { + "label": "ऄ" + } + ] + } + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "श" + }, + "default": { + "label": "स", + "popup": { + "main": { + "label": "श्र" + }, + "relevant": [ + { + "label": "ष" + } + ] + } + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "ध" + }, + "default": { + "label": "द", + "popup": { + "main": { + "label": "ड़" + }, + "relevant": [ + { + "label": "ॾ" + }, + { + "label": "ढ़" + }, + { + "label": "ॸ" + } + ] + } + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "code": 2364, + "label": " ़" + }, + "default": { + "label": "फ", + "popup": { + "main": { + "label": "फ़" + } + } + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "घ" + }, + "default": { + "label": "ग", + "popup": { + "main": { + "label": "ग़" + }, + "relevant": [ + { + "label": "ॻ" + } + ] + } + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "ः" + }, + "default": { + "label": "ह" + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "झ" + }, + "default": { + "label": "ज", + "popup": { + "main": { + "label": "ज़" + }, + "relevant": [ + { + "label": "ॼ" + }, + { + "label": "ॹ" + } + ] + } + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "ख" + }, + "default": { + "label": "क", + "popup": { + "main": { + "label": "क़" + }, + "relevant": [ + { + "label": "ख़" + } + ] + } + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "ळ" + }, + "default": { + "label": "ल", + "popup": { + "relevant": [ + { + "label": "ऴ" + }, + { + "label": "ॣ" + }, + { + "label": "ऌ" + }, + { + "label": "ॡ" + }, + { + "label": "ॢ" + } + ] + } + } + } + ], + [ + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "ज़", + "labelFlags": 128 + }, + "default": { + "label": "ज्ञ", + "labelFlags": 128 + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "ष" + }, + "default": { + "label": "क्ष", + "labelFlags": 128 + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "छ" + }, + "default": { + "label": "च", + "popup": { + "relevant": [ + { + "$": "auto_text_key", + "code": 2385, + "label": " ॑" + }, + { + "$": "auto_text_key", + "code": 2386, + "label": " ॒" + } + ] + } + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "्" + }, + "default": { + "label": "व", + "popup": { + "relevant": [ + { + "$": "auto_text_key", + "code": 2387, + "label": " ॓" + }, + { + "$": "auto_text_key", + "code": 2388, + "label": " ॔" + } + ] + } + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "भ" + }, + "default": { + "label": "ब", + "popup": { + "relevant": [ + { + "label": "ॿ" + }, + { + "label": "ऽ" + }, + { + "label": "॰" + } + ] + } + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "ण" + }, + "default": { + "label": "न", + "popup": { + "main": { + "label": "ङ" + }, + "relevant": [ + { + "label": "ऩ" + }, + { + "label": "ञ" + } + ] + } + } + }, + { + "$": "shift_state_selector", + "manualOrLocked": { + "label": "ं" + }, + "default": { + "label": "म", + "popup": { + "main": { + "label": "ँ" + }, + "relevant": [ + { + "label": "ऀ" + } + ] + } + } + } + ] +] diff --git a/app/src/main/assets/layouts/main/hungarian_extended_qwertz.txt b/app/src/main/assets/layouts/main/hungarian_extended_qwertz.txt new file mode 100644 index 0000000000..d38e22ef87 --- /dev/null +++ b/app/src/main/assets/layouts/main/hungarian_extended_qwertz.txt @@ -0,0 +1,39 @@ +á +é +í +ó +ö +ő +ú +ü +ű +' + +q +w +e +r +t +z +u +i +o +p + +a +s +d +f +g +h +j +k +l + +y +x +c +v +b +n +m \ No newline at end of file diff --git a/app/src/main/assets/layouts/main/igbo.txt b/app/src/main/assets/layouts/main/igbo.txt new file mode 100644 index 0000000000..9cf50d7802 --- /dev/null +++ b/app/src/main/assets/layouts/main/igbo.txt @@ -0,0 +1,28 @@ +ṅ q +w +e +r +t +y +u +i +o +p + +a +s +d +f +g +h +j +k +l + +z +ọ x +c +ụ v +b +n ₦ +m diff --git a/app/src/main/assets/layouts/main/kabyle.json b/app/src/main/assets/layouts/main/kabyle.json new file mode 100644 index 0000000000..ccaa5a0b26 --- /dev/null +++ b/app/src/main/assets/layouts/main/kabyle.json @@ -0,0 +1,38 @@ +[ + [ + { "label": "a" }, + { "label": "z" }, + { "label": "e" }, + { "label": "r" }, + { "label": "t" }, + { "label": "y" }, + { "label": "u" }, + { "label": "i" }, + { "label": "ɛ" }, + { "label": "ɣ" } + ], + [ + { "label": "q" }, + { "label": "s" }, + { "label": "d" }, + { "label": "f" }, + { "label": "g" }, + { "label": "h" }, + { "label": "j" }, + { "label": "k" }, + { "label": "l" }, + { "label": "m" } + ], + [ + { "label": "w" }, + { "label": "x" }, + { "label": "c" }, + { "label": "v" }, + { "label": "b" }, + { "label": "n" }, + { "$": "shift_state_selector", + "shiftedManual": { "label": "?" }, + "default": { "label": "'" } + } + ] +] diff --git a/app/src/main/assets/layouts/main/kaitag.txt b/app/src/main/assets/layouts/main/kaitag.txt new file mode 100644 index 0000000000..a79cd8c598 --- /dev/null +++ b/app/src/main/assets/layouts/main/kaitag.txt @@ -0,0 +1,32 @@ +й +ц +у +к +е +н +г +ш +ҡ +з +х № + +ҳ +ғ +в +а +п +р +о +л +д +ж +ъ ~ + +я +ч +с +м +и +т +ь +б < > diff --git a/app/src/main/assets/layouts/main/kannada.txt b/app/src/main/assets/layouts/main/kannada.txt new file mode 100644 index 0000000000..4df75750c3 --- /dev/null +++ b/app/src/main/assets/layouts/main/kannada.txt @@ -0,0 +1,34 @@ +ೌ ಔ % +ೈ ಐ % +ಾ ಆ % +ೀ ಈ % +ೂ ಊ % +ಬ ಭ % +ಹ ಙ % +ಗ ಘ % +ದ ಧ % +ಜ ಝ % +ಡ ಢ + +ೋ ಓ +ೇ ಏ +್ ಅ +ಿ ಇ +ು ಉ +ಪ ಫ +ರ ಱ ೃ +ಕ ಖ +ತ ಥ +ಚ ಛ +ಟ ಠ + +ೆ ಒ +ಂ ಎ +ಮ +ನ ಣ +ವ +ಲ ಳ +ಸ ಶ +ಋ ್ರ +ಷ ಕ್ಷ +ಯ ಜ್ಞ diff --git a/app/src/main/assets/layouts/main/kannada_extended.txt b/app/src/main/assets/layouts/main/kannada_extended.txt new file mode 100644 index 0000000000..c094afa842 --- /dev/null +++ b/app/src/main/assets/layouts/main/kannada_extended.txt @@ -0,0 +1,53 @@ +ಅ +ಆ +ಇ +ಈ +ಉ +ಊ +ಋ +ಎ +ಏ +ಐ + +ಒ +ಓ +ಔ +ಂ +ಕ +ಖ +ಗ +ಘ +ಙ +ಚ + +ಛ +ಜ +ಝ +ಞ +ಟ +ಠ +ಡ +ಢ +ಣ +ತ + +ಥ +ದ +ಧ +ನ +ಪ +ಫ +ಬ +ಭ +ಮ +ಯ + +್ +ರ +ಲ +ವ +ಶ +ಷ +ಸ +ಹ +ಳ diff --git a/app/src/main/assets/layouts/main/khmer.json b/app/src/main/assets/layouts/main/khmer.json new file mode 100644 index 0000000000..ad1c9642b8 --- /dev/null +++ b/app/src/main/assets/layouts/main/khmer.json @@ -0,0 +1,194 @@ +[ + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "!", "labelFlags": 48 }, + "default": { "label": "១" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ៗ" }, + "default": { "label": "២" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\"", "labelFlags": 48 }, + "default": { "label": "៣" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "៛" }, + "default": { "label": "៤" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "%", "labelFlags": 48 }, + "default": { "label": "៥" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "៍" }, + "default": { "label": "៦" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "័" }, + "default": { "label": "៧" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "៏" }, + "default": { "label": "៨" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "(", "labelFlags": 48 }, + "default": { "label": "៩" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": ")", "labelFlags": 48 }, + "default": { "label": "០" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "៌" }, + "default": { "label": "ឥ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "៎" }, + "default": { "label": "ឲ" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ឈ" }, + "default": { "label": "ឆ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ឺ" }, + "default": { "label": "ឹ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ែ" }, + "default": { "label": "េ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ឬ" }, + "default": { "label": "រ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ទ" }, + "default": { "label": "ត" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ួ" }, + "default": { "label": "យ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ូ" }, + "default": { "label": "ុ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ី" }, + "default": { "label": "ិ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ៅ" }, + "default": { "label": "ោ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ភ" }, + "default": { "label": "ផ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ឿ" }, + "default": { "label": "ៀ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ឰ" }, + "default": { "label": "ឪ" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ាំ", "labelFlags": 128 }, + "default": { "label": "ា" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ៃ" }, + "default": { "label": "ស" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ឌ" }, + "default": { "label": "ដ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ធ" }, + "default": { "label": "ថ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "អ" }, + "default": { "label": "ង" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ះ" }, + "default": { "label": "ហ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ញ" }, + "default": { "label": "្" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "គ" }, + "default": { "label": "ក" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ឡ" }, + "default": { "label": "ល" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ោះ", "labelFlags": 49280 }, + "default": { "label": "ើ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "៉" }, + "default": { "label": "់" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ឯ" }, + "default": { "label": "ឮ" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ឍ" }, + "default": { "label": "ឋ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ឃ" }, + "default": { "label": "ខ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ជ" }, + "default": { "label": "ច" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "េះ", "labelFlags": 128 }, + "default": { "label": "វ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ព" }, + "default": { "label": "ប" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ណ" }, + "default": { "label": "ន" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ំ" }, + "default": { "label": "ម" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ុះ", "labelFlags": 128 }, + "default": { "label": "ុំ", "labelFlags": 128 } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "៕" }, + "default": { "label": "។" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\\?", "labelFlags": 48 }, + "default": { "label": "៊" } + } + ] +] diff --git a/app/src/main/assets/layouts/main/kikuyu.txt b/app/src/main/assets/layouts/main/kikuyu.txt new file mode 100644 index 0000000000..0fdbdd8d21 --- /dev/null +++ b/app/src/main/assets/layouts/main/kikuyu.txt @@ -0,0 +1,28 @@ +ĩ q +w +e +r +t +y +u +i +o +p + +a +s +d +f +g +h +j +k +l + +z +ũ x +c +v +b +n +m diff --git a/app/src/main/assets/layouts/main/korean.json b/app/src/main/assets/layouts/main/korean.json new file mode 100644 index 0000000000..f843fe0441 --- /dev/null +++ b/app/src/main/assets/layouts/main/korean.json @@ -0,0 +1,55 @@ +[ + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u3143" }, + "default": { "label": "\u3142", "popup": { "main": { "label": "\u3143" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u3149" }, + "default": { "label": "\u3148", "popup": { "main": { "label": "\u3149" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u3138" }, + "default": { "label": "\u3137", "popup": { "main": { "label": "\u3138" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u3132" }, + "default": { "label": "\u3131", "popup": { "main": { "label": "\u3132" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u3146" }, + "default": { "label": "\u3145", "popup": { "main": { "label": "\u3146" } } } + }, + { "label": "\u315b" }, + { "label": "\u3155" }, + { "label": "\u3151" }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u3152" }, + "default": { "label": "\u3150", "popup": { "main": { "label": "\u3152" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u3156" }, + "default": { "label": "\u3154", "popup": { "main": { "label": "\u3156" } } } + } + ], + [ + { "label": "\u3141" }, + { "label": "\u3134" }, + { "label": "\u3147" }, + { "label": "\u3139" }, + { "label": "\u314e" }, + { "label": "\u3157" }, + { "label": "\u3153" }, + { "label": "\u314f" }, + { "label": "\u3163" } + ], + [ + { "label": "\u314b" }, + { "label": "\u314c" }, + { "label": "\u314a" }, + { "label": "\u314d" }, + { "label": "\u3160" }, + { "label": "\u315c" }, + { "label": "\u3161" } + ] +] diff --git a/app/src/main/assets/layouts/main/korean_phonetic.json b/app/src/main/assets/layouts/main/korean_phonetic.json new file mode 100644 index 0000000000..b2c2a6bb25 --- /dev/null +++ b/app/src/main/assets/layouts/main/korean_phonetic.json @@ -0,0 +1,55 @@ +[ + [ + { "label": "\u3147" }, + { "label": "\u3161" }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u3156" }, + "default": { "label": "\u3154", "popup": { "main": { "label": "\u3156" } } } + }, + { "label": "\u3139" }, + { "label": "\u314c" }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u3152" }, + "default": { "label": "\u3150", "popup": { "main": { "label": "\u3152" } } } + }, + { "label": "\u315c" }, + { "label": "\u3163" }, + { "label": "\u3157" }, + { "label": "\u314d" } + ], + [ + { "label": "\u314f" }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u3146" }, + "default": { "label": "\u3145", "popup": { "main": { "label": "\u3146" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u3138" }, + "default": { "label": "\u3137", "popup": { "main": { "label": "\u3138" } } } + }, + { "label": "\u3151" }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u3132" }, + "default": { "label": "\u3131", "popup": { "main": { "label": "\u3132" } } } + }, + { "label": "\u314e" }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u3149" }, + "default": { "label": "\u3148", "popup": { "main": { "label": "\u3149" } } } + }, + { "label": "\u314b" }, + { "label": "\u315b" } + ], + [ + { "label": "\u3155" }, + { "label": "\u3160" }, + { "label": "\u314a" }, + { "label": "\u3153" }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u3143" }, + "default": { "label": "\u3142", "popup": { "main": { "label": "\u3143" } } } + }, + { "label": "\u3134" }, + { "label": "\u3141" } + ] +] diff --git a/app/src/main/assets/layouts/main/korean_sebeolsik_390.json b/app/src/main/assets/layouts/main/korean_sebeolsik_390.json new file mode 100644 index 0000000000..1bf28269f9 --- /dev/null +++ b/app/src/main/assets/layouts/main/korean_sebeolsik_390.json @@ -0,0 +1,162 @@ +[ + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11bd" }, + "default": { "label": "\u11c2", "popup": { "main": { "label": "\u11bd" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0040" }, + "default": { "label": "\u11bb", "popup": { "main": { "label": "\u0040" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0023" }, + "default": { "label": "\u11b8", "popup": { "main": { "label": "\u0023" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0024" }, + "default": { "label": "\u116d", "popup": { "main": { "label": "\u0024" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0025" }, + "default": { "label": "\u1172", "popup": { "main": { "label": "\u0025" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u005e" }, + "default": { "label": "\u1163", "popup": { "main": { "label": "\u005e" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0026" }, + "default": { "label": "\u1168", "popup": { "main": { "label": "\u0026" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u002a" }, + "default": { "label": "\u1174", "popup": { "main": { "label": "\u002a" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0028" }, + "default": { "label": "\u116e", "popup": { "main": { "label": "\u0028" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0029" }, + "default": { "label": "\u110f", "popup": { "main": { "label": "\u0029" } } } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11c1" }, + "default": { "label": "\u11ba", "popup": { "main": { "label": "\u11c1" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11c0" }, + "default": { "label": "\u11af", "popup": { "main": { "label": "\u11c0" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11ac" }, + "default": { "label": "\u1167", "popup": { "main": { "label": "\u11ac" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11b6" }, + "default": { "label": "\u1162", "popup": { "main": { "label": "\u11b6" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11b3" }, + "default": { "label": "\u1165", "popup": { "main": { "label": "\u11b3" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u003c" }, + "default": { "label": "\u1105", "popup": { "main": { "label": "\u003c" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0037" }, + "default": { "label": "\u1103", "popup": { "main": { "label": "\u0037" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0038" }, + "default": { "label": "\u1106", "popup": { "main": { "label": "\u0038" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0039" }, + "default": { "label": "\u110e", "popup": { "main": { "label": "\u0039" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u003e" }, + "default": { "label": "\u1111", "popup": { "main": { "label": "\u003e" } } } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11ae" }, + "default": { "label": "\u11bc", "popup": { "main": { "label": "\u11ae" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11ad" }, + "default": { "label": "\u11ab", "popup": { "main": { "label": "\u11ad" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11b0" }, + "default": { "label": "\u1175", "popup": { "main": { "label": "\u11b0" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11a9" }, + "default": { "label": "\u1161", "popup": { "main": { "label": "\u11a9" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u002f" }, + "default": { "label": "\u1173", "popup": { "main": { "label": "\u002f" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0027" }, + "default": { "label": "\u1102", "popup": { "main": { "label": "\u0027" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0034" }, + "default": { "label": "\u110b", "popup": { "main": { "label": "\u0034" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0035" }, + "default": { "label": "\u1100", "popup": { "main": { "label": "\u0035" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0036" }, + "default": { "label": "\u110c", "popup": { "main": { "label": "\u0036" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u003a" }, + "default": { "label": "\u1107", "popup": { "main": { "label": "\u003a" } } } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11be" }, + "default": { "label": "\u11b7", "popup": { "main": { "label": "\u11be" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11b9" }, + "default": { "label": "\u11a8", "popup": { "main": { "label": "\u11b9" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11b1" }, + "default": { "label": "\u1166", "popup": { "main": { "label": "\u11b1" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11b6" }, + "default": { "label": "\u1169", "popup": { "main": { "label": "\u11b6" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0030", "popup": { "main": { "label": "\u0021" } } }, + "default": { "label": "\u116e", "popup": { "relevant": [{ "label": "\u0030" }, { "label": "\u0021" }] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0031" }, + "default": { "label": "\u1109", "popup": { "main": { "label": "\u0031" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0032" }, + "default": { "label": "\u1112", "popup": { "main": { "label": "\u0032" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0033", "popup": { "main": { "label": "\u0022" } } }, + "default": { "label": "\u1110", "popup": { "relevant": [{ "label": "\u0033" }, { "label": "\u0022" }] } } + } + ] +] diff --git a/app/src/main/assets/layouts/main/korean_sebeolsik_final.json b/app/src/main/assets/layouts/main/korean_sebeolsik_final.json new file mode 100644 index 0000000000..f6a5e1747f --- /dev/null +++ b/app/src/main/assets/layouts/main/korean_sebeolsik_final.json @@ -0,0 +1,162 @@ +[ + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11a9" }, + "default": { "label": "\u11c2", "popup": { "main": { "label": "\u11a9" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11b0" }, + "default": { "label": "\u11bb", "popup": { "main": { "label": "\u11b0" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11bd" }, + "default": { "label": "\u11b8", "popup": { "main": { "label": "\u11bd" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11b5" }, + "default": { "label": "\u116d", "popup": { "main": { "label": "\u11b5" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11b4" }, + "default": { "label": "\u1172", "popup": { "main": { "label": "\u11b4" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u003d" }, + "default": { "label": "\u1163", "popup": { "main": { "label": "\u003d" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u201c" }, + "default": { "label": "\u1168", "popup": { "main": { "label": "\u201c" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u201d" }, + "default": { "label": "\u1174", "popup": { "main": { "label": "\u201d" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0027" }, + "default": { "label": "\u116e", "popup": { "main": { "label": "\u0027" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u007e" }, + "default": { "label": "\u110f", "popup": { "main": { "label": "\u007e" } } } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11c1" }, + "default": { "label": "\u11ba", "popup": { "main": { "label": "\u11c1" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11c0" }, + "default": { "label": "\u11af", "popup": { "main": { "label": "\u11c0" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11ac" }, + "default": { "label": "\u1167", "popup": { "main": { "label": "\u11ac" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11b6" }, + "default": { "label": "\u1162", "popup": { "main": { "label": "\u11b6" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11b3" }, + "default": { "label": "\u1165", "popup": { "main": { "label": "\u11b3" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0035" }, + "default": { "label": "\u1105", "popup": { "main": { "label": "\u0035" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0036" }, + "default": { "label": "\u1103", "popup": { "main": { "label": "\u0036" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0037" }, + "default": { "label": "\u1106", "popup": { "main": { "label": "\u0037" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0038" }, + "default": { "label": "\u110e", "popup": { "main": { "label": "\u0038" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0039" }, + "default": { "label": "\u1111", "popup": { "main": { "label": "\u0039" } } } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11ae" }, + "default": { "label": "\u11bc", "popup": { "main": { "label": "\u11ae" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11ad" }, + "default": { "label": "\u11ab", "popup": { "main": { "label": "\u11ad" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11b2" }, + "default": { "label": "\u1175", "popup": { "main": { "label": "\u11b2" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11b1" }, + "default": { "label": "\u1161", "popup": { "main": { "label": "\u11b1" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u1164" }, + "default": { "label": "\u1173", "popup": { "main": { "label": "\u1164" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0030" }, + "default": { "label": "\u1102", "popup": { "main": { "label": "\u0030" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0031" }, + "default": { "label": "\u110b", "popup": { "main": { "label": "\u0031" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0032" }, + "default": { "label": "\u1100", "popup": { "main": { "label": "\u0032" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0033" }, + "default": { "label": "\u110c", "popup": { "main": { "label": "\u0033" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0034" }, + "default": { "label": "\u1107", "popup": { "main": { "label": "\u0034" } } } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11be" }, + "default": { "label": "\u11b7", "popup": { "main": { "label": "\u11be" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11b9" }, + "default": { "label": "\u11a8", "popup": { "main": { "label": "\u11b9" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11bf" }, + "default": { "label": "\u1166", "popup": { "main": { "label": "\u11bf" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u11aa" }, + "default": { "label": "\u1169", "popup": { "main": { "label": "\u11aa" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u003f" }, + "default": { "label": "\u116e", "popup": { "main": { "label": "\u003f" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u002d" }, + "default": { "label": "\u1109", "popup": { "main": { "label": "\u002d" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u0022" }, + "default": { "label": "\u1112", "popup": { "main": { "label": "\u0022" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\u00b7" }, + "default": { "label": "\u1110", "popup": { "main": { "label": "\u00b7" } } } + } + ] +] diff --git a/app/src/main/assets/layouts/main/lao.json b/app/src/main/assets/layouts/main/lao.json new file mode 100644 index 0000000000..6af00883f1 --- /dev/null +++ b/app/src/main/assets/layouts/main/lao.json @@ -0,0 +1,194 @@ +[ + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "໑" }, + "default": { "label": "ຢ", "popup": { "relevant": [ { "label": "1" }, { "label": "໑" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "໒" }, + "default": { "label": "ຟ", "popup": { "relevant": [ { "label": "2" }, { "label": "໒" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "໓" }, + "default": { "label": "ໂ", "popup": { "relevant": [ { "label": "3" }, { "label": "໓" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "໔" }, + "default": { "label": "ຖ", "popup": { "relevant": [ { "label": "4" }, { "label": "໔" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "໌" }, + "default": { "label": "ຸ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ຼ" }, + "default": { "label": "ູ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "໕" }, + "default": { "label": "ຄ", "popup": { "relevant": [ { "label": "5" }, { "label": "໕" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "໖" }, + "default": { "label": "ຕ", "popup": { "relevant": [ { "label": "6" }, { "label": "໖" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "໗" }, + "default": { "label": "ຈ", "popup": { "relevant": [ { "label": "7" }, { "label": "໗" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "໘" }, + "default": { "label": "ຂ", "popup": { "relevant": [ { "label": "8" }, { "label": "໘" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "໙" }, + "default": { "label": "ຊ", "popup": { "relevant": [ { "label": "9" }, { "label": "໙" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ໍ່", "labelFlags": 128 }, + "default": { "label": "ໍ" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ົ້", "labelFlags": 128 }, + "default": { "label": "ົ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "໐" }, + "default": { "label": "ໄ", "popup": { "relevant": [ { "label": "0" }, { "label": "໐" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ຳ້", "labelFlags": 128 }, + "default": { "label": "ຳ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "_", "labelFlags": 48 }, + "default": { "label": "ພ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "+", "labelFlags": 48 }, + "default": { "label": "ະ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ິ້", "labelFlags": 128 }, + "default": { "label": "ິ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ີ້", "labelFlags": 128 }, + "default": { "label": "ີ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ຣ" }, + "default": { "label": "ຮ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ໜ" }, + "default": { "label": "ນ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ຽ" }, + "default": { "label": "ຍ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ຫຼ", "labelFlags": 128 }, + "default": { "label": "ບ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "”", "labelFlags": 48 }, + "default": { "label": "ລ" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ັ້", "labelFlags": 128 }, + "default": { "label": "ັ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": ";", "labelFlags": 48 }, + "default": { "label": "ຫ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": ".", "labelFlags": 48 }, + "default": { "label": "ກ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": ",", "labelFlags": 48 }, + "default": { "label": "ດ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": ":", "labelFlags": 48 }, + "default": { "label": "ເ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "໊" }, + "default": { "label": "້" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "໋" }, + "default": { "label": "່" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "!", "labelFlags": 48 }, + "default": { "label": "າ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\\?", "labelFlags": 48 }, + "default": { "label": "ສ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "%", "labelFlags": 48 }, + "default": { "label": "ວ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "=", "labelFlags": 48 }, + "default": { "label": "ງ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "“", "labelFlags": 48 }, + "default": { "label": "“", "labelFlags": 48 } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "₭", "labelFlags": 48 }, + "default": { "label": "ຜ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "(", "labelFlags": 48 }, + "default": { "label": "ປ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ຯ" }, + "default": { "label": "ແ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\\@", "labelFlags": 48 }, + "default": { "label": "ອ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ຶ້", "labelFlags": 128 }, + "default": { "label": "ຶ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ື້", "labelFlags": 128 }, + "default": { "label": "ື" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ໆ" }, + "default": { "label": "ທ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ໝ" }, + "default": { "label": "ມ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "$", "labelFlags": 48 }, + "default": { "label": "ໃ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": ")", "labelFlags": 48 }, + "default": { "label": "ຝ" } + } + ] +] diff --git a/app/src/main/assets/layouts/main/lingala.txt b/app/src/main/assets/layouts/main/lingala.txt new file mode 100644 index 0000000000..830109805e --- /dev/null +++ b/app/src/main/assets/layouts/main/lingala.txt @@ -0,0 +1,28 @@ +q +w +ɛ e +r +t +y +u +i +ɔ o +p + +a +s +d +f +g +h +j +k +l + +z +x +c +̌ v +b +n +m diff --git a/app/src/main/assets/layouts/main/luganda.txt b/app/src/main/assets/layouts/main/luganda.txt new file mode 100644 index 0000000000..5253b2885a --- /dev/null +++ b/app/src/main/assets/layouts/main/luganda.txt @@ -0,0 +1,29 @@ +q +w +e +r +t +y +u +i +o +p +ŋ + +a +s +d +f +g +h +j +k +l + +z +x +c +v +b +n +m diff --git a/app/src/main/assets/layouts/main/macedonian.txt b/app/src/main/assets/layouts/main/macedonian.txt new file mode 100644 index 0000000000..1979065e64 --- /dev/null +++ b/app/src/main/assets/layouts/main/macedonian.txt @@ -0,0 +1,33 @@ +љ +њ +е +р +т +ѕ +у +и +о +п +ш + +а +с +д +ф +г +х +ј +к +л +ч +ќ + +з +џ +ц +в +б +н +м +ѓ +ж diff --git a/app/src/main/assets/layouts/main/malayalam.txt b/app/src/main/assets/layouts/main/malayalam.txt new file mode 100644 index 0000000000..3e967057f5 --- /dev/null +++ b/app/src/main/assets/layouts/main/malayalam.txt @@ -0,0 +1,34 @@ +് +ാ +ി +ീ +ു +ൂ +ൃ +െ +േ +ൊ +ോ + +ക +ഗ +ങ +ച +ജ +ട +ഡ +ണ +ത +ദ +ന + +പ +ബ +മ +യ +ര +ല +വ +ശ +ഹ +ള diff --git a/app/src/main/assets/layouts/main/mansi_north.txt b/app/src/main/assets/layouts/main/mansi_north.txt new file mode 100644 index 0000000000..efdbd965e0 --- /dev/null +++ b/app/src/main/assets/layouts/main/mansi_north.txt @@ -0,0 +1,47 @@ +ё +ы̄ +ӯ +а̄ +е̄ +ӈ +о̄ +я̄ +ю̄ +ӣ +э̄ +ё̄ + +й +ц +у +к +е +н +г +ш +щ +з +х +ъ + +ф +ы +в +а +п +р +о +л +д +ж +э + +я +ч +с +м +и +т +ь +б +ю \ No newline at end of file diff --git a/app/src/main/assets/layouts/main/marathi.json b/app/src/main/assets/layouts/main/marathi.json new file mode 100644 index 0000000000..e8c8c18acd --- /dev/null +++ b/app/src/main/assets/layouts/main/marathi.json @@ -0,0 +1,40 @@ +[ + [ + { "label": "ौ" }, + { "label": "ै" }, + { "label": "ा" }, + { "label": "ी" }, + { "label": "ू" }, + { "label": "ब" }, + { "label": "ह" }, + { "label": "ग" }, + { "label": "द" }, + { "label": "ज" }, + { "label": "ड" } + ], + [ + { "label": "ो" }, + { "label": "े" }, + { "label": "्" }, + { "label": "ि" }, + { "label": "ु" }, + { "label": "प" }, + { "label": "र" }, + { "label": "क" }, + { "label": "त" }, + { "label": "च" }, + { "label": "ट" } + ], + [ + { "label": "ॉ" }, + { "label": "ॅ" }, + { "label": "ं" }, + { "label": "म" }, + { "label": "न" }, + { "label": "व" }, + { "label": "ल" }, + { "label": "स" }, + { "label": "य" }, + { "label": "क्ष", "labelFlags": 128 } + ] +] diff --git a/app/src/main/assets/layouts/main/mari.txt b/app/src/main/assets/layouts/main/mari.txt new file mode 100644 index 0000000000..528cd828bc --- /dev/null +++ b/app/src/main/assets/layouts/main/mari.txt @@ -0,0 +1,44 @@ +ё +ҥ +ӧ +ӱ +ъ +- +! +? +" +/ + +й +ц +у +к +е +н +г +ш +щ +з +х + +ф +ы +в +а +п +р +о +л +д +ж +э + +я +ч +с +м +и +т +ь +б +ю diff --git a/app/src/main/assets/layouts/main/mongolian.txt b/app/src/main/assets/layouts/main/mongolian.txt new file mode 100644 index 0000000000..6614f82e54 --- /dev/null +++ b/app/src/main/assets/layouts/main/mongolian.txt @@ -0,0 +1,33 @@ +ф +ц +у +ж +э +н +г +ш +ү +з +к + +й +ы +б +ө +а +х +р +о +л +д +п + +я +ч +ё +с +м +и +т +ь +в diff --git a/app/src/main/assets/layouts/main/nepali_romanized.json b/app/src/main/assets/layouts/main/nepali_romanized.json new file mode 100644 index 0000000000..955b7d30a5 --- /dev/null +++ b/app/src/main/assets/layouts/main/nepali_romanized.json @@ -0,0 +1,128 @@ +[ + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ठ" }, + "default": { "label": "ट" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "औ" }, + "default": { "label": "ौ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ै" }, + "default": { "label": "े" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ृ" }, + "default": { "label": "र" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "थ" }, + "default": { "label": "त" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ञ" }, + "default": { "label": "य" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ू" }, + "default": { "label": "ु" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ी" }, + "default": { "label": "ि" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ओ" }, + "default": { "label": "ो" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "फ" }, + "default": { "label": "प" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ई" }, + "default": { "label": "इ" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "आ" }, + "default": { "label": "ा" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "श" }, + "default": { "label": "स" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ध" }, + "default": { "label": "द" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ऊ" }, + "default": { "label": "उ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "घ" }, + "default": { "label": "ग" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "अ" }, + "default": { "label": "ह" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "झ" }, + "default": { "label": "ज" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ख" }, + "default": { "label": "क" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "॥" }, + "default": { "label": "ल" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ऐ" }, + "default": { "label": "ए" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ः" }, + "default": { "label": "ॐ" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ऋ" }, + "default": { "label": "ष" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ढ" }, + "default": { "label": "ड" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "छ" }, + "default": { "label": "च" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ँ" }, + "default": { "label": "व" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "भ" }, + "default": { "label": "ब" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ण" }, + "default": { "label": "न" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ं" }, + "default": { "label": "म" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ङ" }, + "default": { "label": "्" } + } + ] +] diff --git a/app/src/main/assets/layouts/main/nepali_traditional.json b/app/src/main/assets/layouts/main/nepali_traditional.json new file mode 100644 index 0000000000..5ba62ef194 --- /dev/null +++ b/app/src/main/assets/layouts/main/nepali_traditional.json @@ -0,0 +1,132 @@ +[ + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "त्त", "labelFlags": 128 }, + "default": { "label": "ट" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ड्ढ", "labelFlags": 128 }, + "default": { "label": "ध" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ऐ" }, + "default": { "label": "भ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "द्व", "labelFlags": 128 }, + "default": { "label": "च" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ट्ट", "labelFlags": 128 }, + "default": { "label": "त" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ठ्ठ", "labelFlags": 128 }, + "default": { "label": "थ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ऊ" }, + "default": { "label": "ग" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "क्ष", "labelFlags": 128 }, + "default": { "label": "ष" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "इ" }, + "default": { "label": "य" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ए" }, + "default": { "label": "उ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ृ" }, + "default": { "label": "इ" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "आ" }, + "default": { "label": "ब" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ङ्", "labelFlags": 128 }, + "default": { "label": "क" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ड्ड", "labelFlags": 128 }, + "default": { "label": "म" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ँ" }, + "default": { "label": "ा" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "द्द", "labelFlags": 128 }, + "default": { "label": "न" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "झ" }, + "default": { "label": "ज" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ो" }, + "default": { "label": "व" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "फ" }, + "default": { "label": "प" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ी" }, + "default": { "label": "ि" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ट्ठ", "labelFlags": 128 }, + "default": { "label": "स" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ू" }, + "default": { "label": "ु" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "क्", "labelFlags": 128 }, + "default": { "label": "श" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ह्म", "labelFlags": 128 }, + "default": { "label": "ह" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ऋ" }, + "default": { "label": "अ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ॐ" }, + "default": { "label": "ख" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ौ" }, + "default": { "label": "द" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "द्य", "labelFlags": 128 }, + "default": { "label": "ल" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ं" }, + "default": { "label": "े" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ङ" }, + "default": { "label": "्" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ै" }, + "default": { "label": "र" } + } + ] +] diff --git a/app/src/main/assets/layouts/main/pcqwerty.json b/app/src/main/assets/layouts/main/pcqwerty.json new file mode 100644 index 0000000000..b9d6a17b57 --- /dev/null +++ b/app/src/main/assets/layouts/main/pcqwerty.json @@ -0,0 +1,120 @@ +[ + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "~" }, + "default": { "label": "`", "popup": { "main": { "label": "~" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "!" }, + "default": { "label": "1", "popup": { "relevant": [ { "label": "!" }, { "label": "¡" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\\@" }, + "default": { "label": "2", "popup": { "main": { "label": "\\@" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\\#" }, + "default": { "label": "3", "popup": { "main": { "label": "\\#" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "$" }, + "default": { "label": "4", "popup": { "main": { "label": "$" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\\%" }, + "default": { "label": "5", "popup": { "main": { "label": "\\%" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "^" }, + "default": { "label": "6", "popup": { "main": { "label": "^" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "&" }, + "default": { "label": "7", "popup": { "main": { "label": "&" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "*" }, + "default": { "label": "8", "popup": { "main": { "label": "*" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "(" }, + "default": { "label": "9", "popup": { "main": { "label": "(" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": ")" }, + "default": { "label": "0", "popup": { "main": { "label": ")" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "_" }, + "default": { "label": "-", "popup": { "relevant": [ { "label": "_" }, { "label": "–" }, { "label": "—" }, { "label": "·" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "+", "popup": { "relevant": [ { "label": "×" }, { "label": "÷" }, { "label": "√" } ] } }, + "default": { "label": "=", "popup": { "relevant": [ { "label": "+" }, { "label": "∞" }, { "label": "≠" }, { "label": "≈" } ] } } + } + ], + [ + { "label": "q", "popup": { "main": { "label": "%" } } }, + { "label": "w", "popup": { "main": { "label": "\\" } } }, + { "label": "e", "popup": { "main": { "label": "|" } } }, + { "label": "r", "popup": { "main": { "label": "=" } } }, + { "label": "t", "popup": { "main": { "label": "[" } } }, + { "label": "y", "popup": { "main": { "label": "]" } } }, + { "label": "u", "popup": { "main": { "label": "<" } } }, + { "label": "i", "popup": { "main": { "label": ">" } } }, + { "label": "o", "popup": { "main": { "label": "{" } } }, + { "label": "p", "popup": { "main": { "label": "}" } } }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "{" }, + "default": { "label": "[", "popup": { "main": { "label": "{" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "}" }, + "default": { "label": "]", "popup": { "main": { "label": "}" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "|" }, + "default": { "label": "\\", "popup": { "main": { "label": "\\|" } } } + } + ], + [ + { "label": "a", "popup": { "main": { "label": "@" } } }, + { "label": "s", "popup": { "main": { "label": "#" } } }, + { "label": "d", "popup": { "main": { "label": "$$$" } } }, + { "label": "f", "popup": { "main": { "label": "_" } } }, + { "label": "g", "popup": { "main": { "label": "&" } } }, + { "label": "h", "popup": { "main": { "label": "-" } } }, + { "label": "j", "popup": { "main": { "label": "+" } } }, + { "label": "k", "popup": { "main": { "label": "(" } } }, + { "label": "l", "popup": { "main": { "label": ")" } } }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": ":" }, + "default": { "label": ";", "popup": { "main": { "label": ":" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\"" }, + "default": { "label": "'", "popup": { "main": { "label": "\"" } } } + } + ], + [ + { "label": "z", "popup": { "main": { "label": "*" } } }, + { "label": "x", "popup": { "main": { "label": "\"" } } }, + { "label": "c", "popup": { "main": { "label": "'" } } }, + { "label": "v", "popup": { "main": { "label": ":" } } }, + { "label": "b", "popup": { "main": { "label": ";" } } }, + { "label": "n", "popup": { "main": { "label": "!" } } }, + { "label": "m", "popup": { "main": { "label": "?" } } }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "<", "popup": { "relevant": [ { "label": "‹" }, { "label": "≤" }, { "label": "«" } ] } }, + "default": { "label": ",", "popup": { "main": { "label": "<" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": ">", "popup": { "relevant": [ { "label": "›" }, { "label": "›" }, { "label": "»" } ] } }, + "default": { "label": ".", "popup": { "main": { "label": ">" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\\?" }, + "default": { "label": "/", "popup": { "main": { "label": "\\?" }, "relevant": [ { "label": "¿" } ] } } + } + ] +] diff --git a/app/src/main/assets/layouts/main/qwerty.txt b/app/src/main/assets/layouts/main/qwerty.txt new file mode 100644 index 0000000000..0ff6ed76f0 --- /dev/null +++ b/app/src/main/assets/layouts/main/qwerty.txt @@ -0,0 +1,28 @@ +q +w +e +r +t +y +u +i +o +p + +a +s +d +f +g +h +j +k +l + +z +x +c +v +b +n +m diff --git a/app/src/main/assets/layouts/main/qwertz.txt b/app/src/main/assets/layouts/main/qwertz.txt new file mode 100644 index 0000000000..c0296e173d --- /dev/null +++ b/app/src/main/assets/layouts/main/qwertz.txt @@ -0,0 +1,28 @@ +q +w +e +r +t +z +u +i +o +p + +a +s +d +f +g +h +j +k +l + +y +x +c +v +b +n +m diff --git a/app/src/main/assets/layouts/main/russian.txt b/app/src/main/assets/layouts/main/russian.txt new file mode 100644 index 0000000000..7da99f64e6 --- /dev/null +++ b/app/src/main/assets/layouts/main/russian.txt @@ -0,0 +1,33 @@ +й +ц +у +к +е +н +г +ш +щ +з +х ъ [ { + +ф +ы +в +а +п +р +о +л +д +ж +э э́ ] } + +я +ч +с +м +и +т +ь +б < +ю > diff --git a/app/src/main/assets/layouts/main/russian_extended.txt b/app/src/main/assets/layouts/main/russian_extended.txt new file mode 100644 index 0000000000..8b3249fee4 --- /dev/null +++ b/app/src/main/assets/layouts/main/russian_extended.txt @@ -0,0 +1,34 @@ +й +ц +у +к +е +н +г +ш +щ +з +х [ { +ъ ] } + +ф +ы +в +а +п +р +о +л +д +ж +э э́ + +я +ч +с +м +и +т +ь +б < +ю > diff --git a/app/src/main/assets/layouts/main/russian_student.txt b/app/src/main/assets/layouts/main/russian_student.txt new file mode 100644 index 0000000000..d4049968ca --- /dev/null +++ b/app/src/main/assets/layouts/main/russian_student.txt @@ -0,0 +1,33 @@ +я +ш +е +р +т +ы +у +и +о +п +э + +а +с +д +ф +г +ч +й +к +л +ж +щ + +з +х +ц +в +б +н +м +ь +ю diff --git a/app/src/main/assets/layouts/main/serbian.txt b/app/src/main/assets/layouts/main/serbian.txt new file mode 100644 index 0000000000..9e0b71efa0 --- /dev/null +++ b/app/src/main/assets/layouts/main/serbian.txt @@ -0,0 +1,32 @@ +љ +њ +е +р +т +з ѕ +у +и +о +п +ш + +а +с +д +ф +г +х +ј +к +л +ч +ћ + +џ +ц +в +б +н +м +ђ +ж diff --git a/app/src/main/assets/layouts/main/sesotho.txt b/app/src/main/assets/layouts/main/sesotho.txt new file mode 100644 index 0000000000..b0796b3b5c --- /dev/null +++ b/app/src/main/assets/layouts/main/sesotho.txt @@ -0,0 +1,28 @@ +q +w +e +r +t +y +u +i +o +p + +a +š s +d +f +g +h +j +k +l + +z +x +c +v +b +n +m diff --git a/app/src/main/assets/layouts/main/sinhala.json b/app/src/main/assets/layouts/main/sinhala.json new file mode 100644 index 0000000000..83a16b4a8c --- /dev/null +++ b/app/src/main/assets/layouts/main/sinhala.json @@ -0,0 +1,132 @@ +[ + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ූ" }, + "default": { "label": "ු" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "උ" }, + "default": { "label": "අ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ෑ" }, + "default": { "label": "ැ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ඍ" }, + "default": { "label": "ර" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ඔ" }, + "default": { "label": "එ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ශ" }, + "default": { "label": "හ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ඹ" }, + "default": { "label": "ම" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ෂ" }, + "default": { "label": "ස" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ධ" }, + "default": { "label": "ද" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ඡ" }, + "default": { "label": "ච" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ඥ" }, + "default": { "label": "ඤ" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ෟ" }, + "default": { "label": "්" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ී" }, + "default": { "label": "ි" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ෘ" }, + "default": { "label": "ා" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ෆ" }, + "default": { "label": "ෙ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ඨ" }, + "default": { "label": "ට" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "්‍ය" }, + "default": { "label": "ය" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ළු" }, + "default": { "label": "ව" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ණ" }, + "default": { "label": "න" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ඛ" }, + "default": { "label": "ක" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ථ" }, + "default": { "label": "ත" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "්‍ර" }, + "default": { "label": "ඏ" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ඞ" }, + "default": { "label": "ං" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ඣ" }, + "default": { "label": "ජ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ඪ" }, + "default": { "label": "ඩ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ඊ" }, + "default": { "label": "ඉ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "භ" }, + "default": { "label": "බ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ඵ" }, + "default": { "label": "ප" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ළ" }, + "default": { "label": "ල" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ඝ" }, + "default": { "label": "ග" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ර්‍" }, + "default": { "label": "ෳ" } + } + ] +] diff --git a/app/src/main/assets/layouts/main/tamil.txt b/app/src/main/assets/layouts/main/tamil.txt new file mode 100644 index 0000000000..4020384f72 --- /dev/null +++ b/app/src/main/assets/layouts/main/tamil.txt @@ -0,0 +1,34 @@ +ஔ +ஐ +ஆ +ஈ +ஊ +ம +ன +ந +ங +ண +ஞ + +ஓ +ஏ +அ +இ +உ +ற +ப +க +த +ச +ட + +ஒ +எ +் +ர +வ +ழ +ல +ள +ய +ஷ diff --git a/app/src/main/assets/layouts/main/telugu.txt b/app/src/main/assets/layouts/main/telugu.txt new file mode 100644 index 0000000000..64523060b1 --- /dev/null +++ b/app/src/main/assets/layouts/main/telugu.txt @@ -0,0 +1,34 @@ +ౌ +ై +ా +ీ +ూ +బ +హ +గ +ద +జ +డ + +ో +ే +్ +ి +ు +ప +ర +క +త +చ +ట + +ొ +ె +మ +న +వ +ల +స +ఋ +ష +య diff --git a/app/src/main/assets/layouts/main/thai.json b/app/src/main/assets/layouts/main/thai.json new file mode 100644 index 0000000000..eba1a89e3b --- /dev/null +++ b/app/src/main/assets/layouts/main/thai.json @@ -0,0 +1,194 @@ +[ + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "+", "labelFlags": 48 }, + "default": { "label": "ๅ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "๑" }, + "default": { "label": "/", "labelFlags": 48, "popup": { "relevant": [ { "label": "1" }, { "label": "๑" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "๒" }, + "default": { "label": "_", "labelFlags": 48, "popup": { "relevant": [ { "label": "2" }, {"label": "๒" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "๓" }, + "default": { "label": "ภ", "popup": { "relevant": [ { "label": "3" }, { "label": "๓" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "๔" }, + "default": { "label": "ถ", "popup": { "relevant": [ { "label": "4" }, { "label": "๔" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": " ู|ู", "labelFlags": 128 }, + "default": { "label": " ุ|ุ", "labelFlags": 128 } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "฿" }, + "default": { "label": " ึ|ึ", "labelFlags": 128 } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "๕" }, + "default": { "label": "ค", "popup": { "relevant": [ { "label": "5" }, { "label": "๕" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "๖" }, + "default": { "label": "ต", "popup": { "relevant": [ { "label": "6" }, { "label": "๖" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "๗" }, + "default": { "label": "จ", "popup": { "relevant": [ { "label": "7" }, { "label": "๗" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "๘" }, + "default": { "label": "ข", "popup": { "relevant": [ { "label": "8" }, { "label": "๘" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "๙" }, + "default": { "label": "ช", "popup": { "relevant": [ { "label": "9" }, { "label": "๙" } ] } } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "๐" }, + "default": { "label": "ๆ", "popup": { "relevant": [ { "label": "0" }, { "label": "๐" } ] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\"", "labelFlags": 48 }, + "default": { "label": "ไ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ฎ" }, + "default": { "label": "ำ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ฑ" }, + "default": { "label": "พ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ธ" }, + "default": { "label": "ะ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": " ํ|ํ", "labelFlags": 128 }, + "default": { "label": " ั|ั", "labelFlags": 128 } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": " ๊|๊", "labelFlags": 128 }, + "default": { "label": " ี|ี", "labelFlags": 128 } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ณ" }, + "default": { "label": "ร" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ฯ" }, + "default": { "label": "น" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ญ" }, + "default": { "label": "ย" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ฐ" }, + "default": { "label": "บ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": ",", "labelFlags": 48 }, + "default": { "label": "ล" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ฤ" }, + "default": { "label": "ฟ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ฆ" }, + "default": { "label": "ห" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ฏ" }, + "default": { "label": "ก" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "โ" }, + "default": { "label": "ด" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ฌ" }, + "default": { "label": "เ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": " ็|็", "labelFlags": 128 }, + "default": { "label": " ้|้", "labelFlags": 128 } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": " ๋|๋", "labelFlags": 128 }, + "default": { "label": " ่|่", "labelFlags": 128 } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ษ" }, + "default": { "label": "า" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ศ" }, + "default": { "label": "ส" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ซ" }, + "default": { "label": "ว" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": ".", "labelFlags": 48 }, + "default": { "label": "ง" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ฅ" }, + "default": { "label": "ฃ" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "(", "labelFlags": 48 }, + "default": { "label": "ผ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": ")", "labelFlags": 48 }, + "default": { "label": "ป" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ฉ" }, + "default": { "label": "แ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ฮ" }, + "default": { "label": "อ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": " ฺ|ฺ", "labelFlags": 128 }, + "default": { "label": " ิ|ิ", "labelFlags": 128 } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": " ์|์", "labelFlags": 128 }, + "default": { "label": " ื|ื", "labelFlags": 128 } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "\\?", "labelFlags": 48 }, + "default": { "label": "ท" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ฒ" }, + "default": { "label": "ม" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ฬ" }, + "default": { "label": "ใ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ฦ" }, + "default": { "label": "ฝ" } + } + ] +] diff --git a/app/src/main/assets/layouts/main/turkish.txt b/app/src/main/assets/layouts/main/turkish.txt new file mode 100644 index 0000000000..2da3d0d482 --- /dev/null +++ b/app/src/main/assets/layouts/main/turkish.txt @@ -0,0 +1,34 @@ +q +w +e +r +t +y +u +ı +o +p +ğ +ü + +a +s +d +f +g +h +j +k +l +ş +i + +z +x +c +v +b +n +m +ö +ç diff --git a/app/src/main/assets/layouts/main/ukrainian.txt b/app/src/main/assets/layouts/main/ukrainian.txt new file mode 100644 index 0000000000..ff1ed643ab --- /dev/null +++ b/app/src/main/assets/layouts/main/ukrainian.txt @@ -0,0 +1,34 @@ +й +ц +у +к +е +н +г +ш +щ +з +х [ { +ї ] } + +ф +і +в +а +п +р +о +л +д +ж +є ' " + +я +ч +с +м +и +т +ь +б < +ю > ґ diff --git a/app/src/main/assets/layouts/main/ukrainian_extended.txt b/app/src/main/assets/layouts/main/ukrainian_extended.txt new file mode 100644 index 0000000000..7e37e93cc4 --- /dev/null +++ b/app/src/main/assets/layouts/main/ukrainian_extended.txt @@ -0,0 +1,35 @@ +й +ц +у +к +е +н +г +ш +щ +з +х [ { +ї ] } + +ф +і +в +а +п +р +о +л +д +ж +є ' " +' " + +я +ч +с +м +и +т +ь +б < +ю > ґ diff --git a/app/src/main/assets/layouts/main/urdu.json b/app/src/main/assets/layouts/main/urdu.json new file mode 100644 index 0000000000..7bacf7d21b --- /dev/null +++ b/app/src/main/assets/layouts/main/urdu.json @@ -0,0 +1,116 @@ +[ + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ٔ" }, + "default": { "label": "ق" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ْ" }, + "default": { "label": "و" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ّ" }, + "default": { "label": "ع" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ً" }, + "default": { "label": "ر" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ٗ" }, + "default": { "label": "ت" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ٖ" }, + "default": { "label": "ے" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ٰ" }, + "default": { "label": "ء" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ُ" }, + "default": { "label": "ی" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ِ" }, + "default": { "label": "ہ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "َ" }, + "default": { "label": "پ" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "؏" }, + "default": { "label": "ا" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "؎" }, + "default": { "label": "س" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ؔ" }, + "default": { "label": "د" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ؒ" }, + "default": { "label": "ف" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ؓ" }, + "default": { "label": "گ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ؑ" }, + "default": { "label": "ح" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ؐ" }, + "default": { "label": "ج" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ﷺ" }, + "default": { "label": "ک" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ﷻ" }, + "default": { "label": "ل" } + } + ], + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "ﷲ" }, + "default": { "label": "َ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "؀" }, + "default": { "label": "ز" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "؂" }, + "default": { "label": "ش" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "؃" }, + "default": { "label": "چ" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "؍" }, + "default": { "label": "ط" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "٘" }, + "default": { "label": "ب", "popup": { "main": { "label": "(" } } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "؟" }, + "default": { "label": "ن" } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "٫" }, + "default": { "label": "م", "popup": { "main": { "label": ")" } } } + } + ] +] diff --git a/app/src/main/assets/layouts/main/uzbek.json b/app/src/main/assets/layouts/main/uzbek.json new file mode 100644 index 0000000000..a7bff22767 --- /dev/null +++ b/app/src/main/assets/layouts/main/uzbek.json @@ -0,0 +1,37 @@ +[ + [ + { "label": "q" }, + { "label": "w" }, + { "label": "e" }, + { "label": "r" }, + { "label": "t" }, + { "label": "y" }, + { "label": "u" }, + { "label": "i" }, + { "label": "o" }, + { "label": "p" }, + { "label": "oʻ", "labelFlags": 128 } + ], + [ + { "label": "a" }, + { "label": "s" }, + { "label": "d" }, + { "label": "f" }, + { "label": "g" }, + { "label": "h" }, + { "label": "j" }, + { "label": "k" }, + { "label": "l" }, + { "label": "gʻ", "labelFlags": 128 }, + { "label": "ʼ" } + ], + [ + { "label": "z" }, + { "label": "x" }, + { "label": "c" }, + { "label": "v" }, + { "label": "b" }, + { "label": "n" }, + { "label": "m" } + ] +] diff --git a/app/src/main/assets/layouts/main/workman.txt b/app/src/main/assets/layouts/main/workman.txt new file mode 100644 index 0000000000..be1d1d8e66 --- /dev/null +++ b/app/src/main/assets/layouts/main/workman.txt @@ -0,0 +1,29 @@ +q +d +r +w +b +j +f +u +p +; + +a +s +h +t +g +y +n +e +o +i + +z +x +m +c +v +k +l diff --git a/app/src/main/assets/layouts/main/yoruba.txt b/app/src/main/assets/layouts/main/yoruba.txt new file mode 100644 index 0000000000..3ee1696ddc --- /dev/null +++ b/app/src/main/assets/layouts/main/yoruba.txt @@ -0,0 +1,28 @@ +ẹ q +w +e +r +t +y +u +i +o +p + +a +s +d +f +g +h +j +k +l + +z +ọ x +c +ṣ v +b +n ₦ +m diff --git a/app/src/main/assets/layouts/more_symbols/symbols_shifted.txt b/app/src/main/assets/layouts/more_symbols/symbols_shifted.txt new file mode 100644 index 0000000000..c707680a80 --- /dev/null +++ b/app/src/main/assets/layouts/more_symbols/symbols_shifted.txt @@ -0,0 +1,31 @@ +~ +` +| +• ♪ ♥ ♠ ♦ ♣ +√ +π Π +÷ +× +¶ § +∆ + +$$$1 +$$$2 +$$$3 +$$$4 +^ ↑ ↓ ← → +° ′ ″ += ≠ ⁼ ≈ ∞ +{ +} + +\ +© +® +™ +% ℅ +[ +] + +< !fixedColumnOrder!3 ‹ ≤ « +> !fixedColumnOrder!3 › ≥ » diff --git a/app/src/main/assets/layouts/number/number.json b/app/src/main/assets/layouts/number/number.json new file mode 100644 index 0000000000..5ee29fcada --- /dev/null +++ b/app/src/main/assets/layouts/number/number.json @@ -0,0 +1,49 @@ +[ + [ + { "label": "1", "type": "numeric" }, + { "label": "2", "type": "numeric" }, + { "label": "3", "type": "numeric" }, + { "label": "-", "type": "function", "popup": { "main": { "label": "+" } }, "labelFlags": 64 } + ], + [ + { "label": "4", "type": "numeric" }, + { "label": "5", "type": "numeric" }, + { "label": "6", "type": "numeric" }, + { "label": "space", "type": "function" } + ], + [ + { "label": "7", "type": "numeric" }, + { "label": "8", "type": "numeric" }, + { "label": "9", "type": "numeric" }, + { "label": "delete" } + ], + [ + { "$": "variation_selector", + "default": { "label": ",", "type": "numeric", "groupId": 1 }, + "date": { "label": ".", "type": "numeric", "groupId": 1 }, + "time": { "label": ".", "type": "numeric", "groupId": 1, "popup": { "relevant": [ + { "label": "!fixedColumnOrder!2" }, + { "label": "!hasLabels!" }, + { "label": "AM" }, + { "label": "PM" } + ] } }, + "datetime": { "label": ".", "type": "numeric", "groupId": 1, "popup": { "relevant": [ + { "label": "!fixedColumnOrder!2" }, + { "label": "!hasLabels!" }, + { "label": "AM" }, + { "label": "PM" } + ] } } + }, + { "label": "0", "type": "numeric" }, + { "$": "variation_selector", + "default": { "label": ".", "type": "numeric" }, + "date": { "label": "/", "type": "numeric" }, + "time": { "label": ":", "type": "numeric" }, + "datetime": { "label": "/ :|/", "type": "numeric", "popup": { "relevant": [ + { "label": "!noPanelAutoPopupKey!" }, + { "label": "," } + ] } } + }, + { "label": "enter"} + ] +] diff --git a/app/src/main/assets/layouts/number_row/number_row.json b/app/src/main/assets/layouts/number_row/number_row.json new file mode 100644 index 0000000000..3ad11861a3 --- /dev/null +++ b/app/src/main/assets/layouts/number_row/number_row.json @@ -0,0 +1,44 @@ +[ + [ + { "$": "shift_state_selector", + "manualOrLocked": { "label": "!" }, + "default": { "label": "1", "popup": { "relevant": [{ "label": "¹" }, { "label": "½" }, { "label": "⅓" }, { "label": "¼" }, { "label": "⅛" }] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "@" }, + "default": { "label": "2", "popup": { "relevant": [{ "label": "²" }, { "label": "⅔" }] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "#" }, + "default": { "label": "3", "popup": { "relevant": [{ "label": "³" }, { "label": "¾" }, { "label": "⅜" }] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "$" }, + "default": { "label": "4", "popup": { "relevant": [{ "label": "⁴" }] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "%" }, + "default": { "label": "5", "popup": { "relevant": [{ "label": "⁵" }, { "label": "⅝" }] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "^" }, + "default": { "label": "6", "popup": { "relevant": [{ "label": "⁶" }] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "&" }, + "default": { "label": "7", "popup": { "relevant": [{ "label": "⁷" }, { "label": "⅞" }] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "*" }, + "default": { "label": "8", "popup": { "relevant": [{ "label": "⁸" }] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": "(" }, + "default": { "label": "9", "popup": { "relevant": [{ "label": "⁹" }] } } + }, + { "$": "shift_state_selector", + "manualOrLocked": { "label": ")" }, + "default": { "label": "0", "popup": { "relevant": [{ "label": "⁰" }, { "label": "ⁿ" }, { "label": "∅" }] } } + } + ] + ] \ No newline at end of file diff --git a/app/src/main/assets/layouts/number_row/number_row_basic.txt b/app/src/main/assets/layouts/number_row/number_row_basic.txt new file mode 100644 index 0000000000..709c30a8bb --- /dev/null +++ b/app/src/main/assets/layouts/number_row/number_row_basic.txt @@ -0,0 +1,10 @@ +1 ¹ ½ ⅓ ¼ ⅛ +2 ² ⅔ +3 ³ ¾ ⅜ +4 ⁴ +5 ⁵ ⅝ +6 ⁶ +7 ⁷ ⅞ +8 ⁸ +9 ⁹ +0 ⁰ ⁿ ∅ \ No newline at end of file diff --git a/app/src/main/assets/layouts/numpad/numpad.json b/app/src/main/assets/layouts/numpad/numpad.json new file mode 100644 index 0000000000..d557932338 --- /dev/null +++ b/app/src/main/assets/layouts/numpad/numpad.json @@ -0,0 +1,50 @@ +[ + [ + { "label": "+", "type": "function", "popup": { + "relevant": [ + { "label": "(" }, + { "label": "<" }, + { "label": "±" } + ] + }, "labelFlags": 512 }, + { "label": "1", "type": "numeric" }, + { "label": "2", "type": "numeric" }, + { "label": "3", "type": "numeric" }, + { "label": "%", "type": "function", "popup": { "main": { "label": "$$$"} }, "labelFlags": 512 } + ], + [ + { "label": "-", "type": "function", "popup": { + "relevant": [ + { "label": ")" }, + { "label": ">" }, + { "label": "~" } + ] + }, "labelFlags": 512 }, + { "label": "4", "type": "numeric" }, + { "label": "5", "type": "numeric" }, + { "label": "6", "type": "numeric" }, + { "label": "space", "type": "function" } + ], + [ + { "label": "*", "type": "function", "popup": { + "relevant": [ + { "label": "/" }, + { "label": "×" }, + { "label": "÷" } + ] + }, "labelFlags": 512 }, + { "label": "7", "type": "numeric" }, + { "label": "8", "type": "numeric" }, + { "label": "9", "type": "numeric" }, + { "label": "delete" } + ], + [ + { "label": "alpha" }, + { "label": "comma", "width": 0.1 }, + { "label": "symbol", "width": 0.12 }, + { "label": "0", "type": "numeric" }, + { "label": "=", "type": "function", "width": 0.12, "popup": { "relevant": [ { "label": "≠"}, { "label": "≈"} ] } }, + { "label": "period", "width": 0.1 }, + { "label": "action" } + ] +] diff --git a/app/src/main/assets/layouts/numpad_landscape/numpad_landscape.json b/app/src/main/assets/layouts/numpad_landscape/numpad_landscape.json new file mode 100644 index 0000000000..19f3cff024 --- /dev/null +++ b/app/src/main/assets/layouts/numpad_landscape/numpad_landscape.json @@ -0,0 +1,46 @@ +[ + [ + { "label": "(", "type": "function", "popup": { "relevant": [ { "label": "[" }, { "label": "{" } ] } }, + { "label": ")", "type": "function", "popup": { "relevant": [ { "label": "]" }, { "label": "}" } ] } }, + { "label": ":", "type": "function" }, + { "label": "1", "type": "numeric", "width": 0.3 }, + { "label": "2", "type": "numeric", "width": 0.3 }, + { "label": "3", "type": "numeric", "width": 0.3 }, + { "label": "+", "type": "function", "popup": { "main": { "label": "±" } } }, + { "label": "-", "type": "function", "popup": { "main": { "label": "~" } } }, + { "label": "space", "type": "function" } + ], + [ + { "label": "!", "type": "function" }, + { "label": "?", "type": "function" }, + { "label": ";", "type": "function" }, + { "label": "4", "type": "numeric", "width": 0.3 }, + { "label": "5", "type": "numeric", "width": 0.3 }, + { "label": "6", "type": "numeric", "width": 0.3 }, + { "label": "*", "type": "function", "popup": { "main": { "label": "×" } } }, + { "label": "/", "type": "function", "popup": { "main": { "label": "÷" } } }, + { "label": "delete" } + ], + [ + { "label": "|", "type": "function" }, + { "label": "$$$", "type": "function" }, + { "label": "&", "type": "function" }, + { "label": "7", "type": "numeric", "width": 0.3 }, + { "label": "8", "type": "numeric", "width": 0.3 }, + { "label": "9", "type": "numeric", "width": 0.3 }, + { "label": "#", "type": "function" }, + { "label": "%", "type": "function", "popup": { "main": { "label": "‰" } } }, + { "label": "action" } + ], + [ + { "label": "alpha" }, + { "label": "<", "type": "function", "popup": { "main": { "label": "≤" } } }, + { "label": ">", "type": "function", "popup": { "main": { "label": "≥" } } }, + { "label": "comma", "type": "numeric", "width": 0.3 }, + { "label": "0", "type": "numeric", "width": 0.3 }, + { "label": "period", "type": "numeric", "width": 0.3 }, + { "label": "=", "type": "function", "popup": { "relevant": [ { "label": "≠"}, { "label": "≈"} ] } }, + { "label": "=", "type": "function", "popup": { "relevant": [ { "label": "≠"}, { "label": "≈"} ] } }, + { "label": "symbol" } + ] +] diff --git a/app/src/main/assets/layouts/phone/phone.json b/app/src/main/assets/layouts/phone/phone.json new file mode 100644 index 0000000000..b7a87cc439 --- /dev/null +++ b/app/src/main/assets/layouts/phone/phone.json @@ -0,0 +1,26 @@ +[ + [ + { "label": "1", "type": "numeric" }, + { "label": "2", "type": "numeric", "popup": { "main": { "label": "ABC" } } }, + { "label": "3", "type": "numeric", "popup": { "main": { "label": "DEF" } } }, + { "label": "-", "type": "function", "labelFlags": 1073742400, "popup": { "main": { "label": "+" } } } + ], + [ + { "label": "4", "type": "numeric", "popup": { "main": { "label": "GHI" } } }, + { "label": "5", "type": "numeric", "popup": { "main": { "label": "JKL" } } }, + { "label": "6", "type": "numeric", "popup": { "main": { "label": "MNO" } } }, + { "label": "space", "type": "function" } + ], + [ + { "label": "7", "type": "numeric", "popup": { "main": { "label": "PQRS" } } }, + { "label": "8", "type": "numeric", "popup": { "main": { "label": "TUV" } } }, + { "label": "9", "type": "numeric", "popup": { "main": { "label": "WXYZ" } } }, + { "label": "delete" } + ], + [ + { "label": "*#|!code/key_switch_alpha_symbol", "type": "numeric", "labelFlags": 524432 }, + { "label": "0 +|0", "type": "numeric", "popup": { "relevant": [ { "label": "!noPanelAutoPopupKey!" }, { "label": "+" } ] } }, + { "label": ".", "type": "numeric", "labelFlags": 64, "groupId": 1 }, + { "label": "action" } + ] +] diff --git a/app/src/main/assets/layouts/phone_symbols/phone_symbols.json b/app/src/main/assets/layouts/phone_symbols/phone_symbols.json new file mode 100644 index 0000000000..03ed559627 --- /dev/null +++ b/app/src/main/assets/layouts/phone_symbols/phone_symbols.json @@ -0,0 +1,26 @@ +[ + [ + { "label": "(", "type": "numeric" }, + { "label": "/", "type": "numeric" }, + { "label": ")", "type": "numeric" }, + { "label": "-", "type": "function", "labelFlags": 1073742400, "popup": { "main": { "label": "+" } } } + ], + [ + { "label": "N", "type": "numeric" }, + { "label": "!string/label_pause_key", "code": 44, "type": "numeric" }, + { "label": ",", "type": "numeric" }, + { "label": "space", "type": "function" } + ], + [ + { "label": "*|*", "type": "numeric" }, + { "label": "!string/label_wait_key", "code": 59, "type": "numeric" }, + { "label": "\\#", "type": "numeric" }, + { "label": "delete" } + ], + [ + { "label": "123|!code/key_switch_alpha_symbol", "type": "numeric", "labelFlags": 524432 }, + { "label": "+", "type": "numeric" }, + { "label": ".", "type": "numeric", "groupId": 1 }, + { "label": "action" } + ] +] diff --git a/app/src/main/assets/layouts/symbols/symbols.txt b/app/src/main/assets/layouts/symbols/symbols.txt new file mode 100644 index 0000000000..58f665b4e3 --- /dev/null +++ b/app/src/main/assets/layouts/symbols/symbols.txt @@ -0,0 +1,29 @@ +% ‰ +\ +| += +[ +] +< +> +{ +} + +@ +# +$$$ +_ % ‰ +& +- – ⁻ — · ++ ± ⁺ +( ⁽ < { [ +) ⁾ > } ] +/ + +* † ‡ ★ +" +' +: +; +! +? diff --git a/app/src/main/assets/layouts/symbols/symbols_arabic.txt b/app/src/main/assets/layouts/symbols/symbols_arabic.txt new file mode 100644 index 0000000000..43e40d2bd9 --- /dev/null +++ b/app/src/main/assets/layouts/symbols/symbols_arabic.txt @@ -0,0 +1,28 @@ +٪ % ‰ +\ +| += +[ +] +< +> +﴾ { +﴿ { + +٬ @ +٫ # +$$$ +_ ٪ % ‰ +& +- – — · ++ ± +( ﴾ < { [ +) ﴿ > } ] + +* ٭ ★ † ‡ +« +» +: +؛ ; +! +؟ diff --git a/app/src/main/assets/locale_key_texts/af.txt b/app/src/main/assets/locale_key_texts/af.txt new file mode 100644 index 0000000000..556e2290be --- /dev/null +++ b/app/src/main/assets/locale_key_texts/af.txt @@ -0,0 +1,11 @@ +[popup_keys] +a á â ä à æ ã å ā +e é è ê ë ę ė ē +i í ì ï î į ī ij +o ó ô ö ò õ œ ø ō +u ú û ü ù ū +n ñ ń +y ý ij + +[tlds] +za diff --git a/app/src/main/assets/locale_key_texts/ar.txt b/app/src/main/assets/locale_key_texts/ar.txt new file mode 100644 index 0000000000..5c4b3c0073 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/ar.txt @@ -0,0 +1,29 @@ +[popup_keys] +ق ڨ +ف ڤ ڢ ڥ +ه ﻫ|ه‍ +ج چ +ش ڜ +ي ئ ى +ب پ +ل ﻻ|لا ﻷ|لأ ﻹ|لإ ﻵ|لآ +ا !fixedColumnOrder!5 آ ء أ إ ٱ +ك گ ک +ى ئ +ز ژ +و ؤ +punctuation !fixedColumnOrder!7 ٕ|ٕ ٔ|ٔ ْ|ْ ٍ|ٍ ٌ|ٌ ً|ً ّ|ّ ٖ|ٖ ٰ|ٰ ٓ|ٓ ِ|ِ ُ|ُ َ|َ ـــ|ـ +« „ “ ” +» ‚ ‘ ’ ‹ › + +[labels] +alphabet: أ‌ب‌ج +symbol: ٣٢١؟ +comma: ، +question: ؟ + +[number_row] +١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩ ٠ + +[tlds] +sa diff --git a/app/src/main/assets/locale_key_texts/az.txt b/app/src/main/assets/locale_key_texts/az.txt new file mode 100644 index 0000000000..d5ca568a61 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/az.txt @@ -0,0 +1,9 @@ +[popup_keys] +e ə +i ı +ı i +o ö +u ü +s ş +g ğ +c ç diff --git a/app/src/main/assets/locale_key_texts/be.txt b/app/src/main/assets/locale_key_texts/be.txt new file mode 100644 index 0000000000..7c8edcf877 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/be.txt @@ -0,0 +1,8 @@ +[popup_keys] +е ё +ь ъ +' ’ ‚ ‘ +" ” „ “ + +[labels] +alphabet: АБВ diff --git a/app/src/main/assets/locale_key_texts/bg.txt b/app/src/main/assets/locale_key_texts/bg.txt new file mode 100644 index 0000000000..40924464ce --- /dev/null +++ b/app/src/main/assets/locale_key_texts/bg.txt @@ -0,0 +1,8 @@ +[popup_keys] +и ѝ + +[labels] +alphabet: АБВ + +[tlds] +bg diff --git a/app/src/main/assets/locale_key_texts/bn-BD.txt b/app/src/main/assets/locale_key_texts/bn-BD.txt new file mode 100644 index 0000000000..fe5d56d4de --- /dev/null +++ b/app/src/main/assets/locale_key_texts/bn-BD.txt @@ -0,0 +1,41 @@ +[popup_keys] +ঙ ং +য য় +ড ঢ +প ফ +ট ঠ +চ ছ +জ ঝ +হ ঞ +গ ঘ +ড় ঢ় +ৃ ঋ +ু উ +ূ ঊ +ি ই +ী ঈ +া আ অ +্ ঁ +ঁ !autoColumnOrder!6 ় ৄ ঽ ৢ ৱ ৣ ৗ ৠ ৺ ঌ ৰ ৡ +ব ভ +ক খ +ত থ ৎ +দ ধ +্র ্য +ো ও +ৌ ঔ +ে এ +ৈ ঐ +র ল র‍্য +ন ণ +স ষ +ম শ +punctuation !autoColumnOrder!8 \, ॥ ? ! !icon/zwnj_key|‌ !icon/zwj_key|‍ # @ ( ) / ; : - + \% + +[labels] +alphabet: কখগ +symbol: ?১২৩ +period: । + +[number_row] +১ ২ ৩ ৪ ৫ ৬ ৭ ৮ ৯ ০ diff --git a/app/src/main/assets/locale_key_texts/bn-IN.txt b/app/src/main/assets/locale_key_texts/bn-IN.txt new file mode 100644 index 0000000000..f32ed305ff --- /dev/null +++ b/app/src/main/assets/locale_key_texts/bn-IN.txt @@ -0,0 +1,41 @@ +[popup_keys] +ৌ ঔ +ৈ ঐ +া আ +ী ঈ +ূ ঊ +ব ভ +হ ঙ +গ ঘ +দ ধ +জ ঝ +ড ঢ +ো ও +ে এ +্ অ +ি ই +ু উ +প ফ +র ড় র‍্য +ক খ +ত থ ৎ +চ ছ +ট ঠ +ৃ ঋ +ং ঁ ঃ +ঁ !autoColumnOrder!6 ় ৄ ঽ ৢ ৱ ৣ ৗ ৠ ৺ ঌ ৰ ৡ +ম ণ +ন ঞ +ব ঢ় +ল ষ +স শ +য় য +punctuation !autoColumnOrder!8 \, ॥ ? ! !icon/zwnj_key|‌ !icon/zwj_key|‍ # @ ( ) / ; : - + \% + +[labels] +alphabet: কখগ +symbol: ?১২৩ +period: । + +[number_row] +১ ২ ৩ ৪ ৫ ৬ ৭ ৮ ৯ ০ diff --git a/app/src/main/assets/locale_key_texts/ca.txt b/app/src/main/assets/locale_key_texts/ca.txt new file mode 100644 index 0000000000..619481bcd8 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/ca.txt @@ -0,0 +1,15 @@ +[popup_keys] +a à +e è é +i í ï +o ò ó +u ú ü +c ç +l l·l +punctuation !autoColumnOrder!9 \, ? ! · # ) ( / ; ' @ : - " + \% & + +[extra_keys] +2: ç + +[tlds] +cat es diff --git a/app/src/main/assets/locale_key_texts/ckb.txt b/app/src/main/assets/locale_key_texts/ckb.txt new file mode 100644 index 0000000000..5e13897b85 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/ckb.txt @@ -0,0 +1,39 @@ +[popup_keys] +ق ٯ +و وو +ە ة ﻪ ـہ +ر ڕ ڒ ࢪ +ت ط +ی ي ې ۍ +ێ ؽ +ئ ء ﺋ +ۆ ؤ ۏ ۊ ۋ ۉ ۇ +پ ث +ا أ إ آ ٱ +س ص +ش ض +د ۮ ڌ ﮆ +ف ڤ ڡ +ھ ھ +ژ ━|ـ +ل ڵ +ک ك ڪ +گ غ +ز ظ +ع ؏ +ب ى +punctuation !autoColumnOrder!8 \؟ ! ، ٫ ؍ : ؛ ; : | - @ _ # * ٪ & ^ +« „ “ ” +» ‚ ‘ ’ ‹ › + +[labels] +alphabet: ئ‌پ‌گ +symbol: ٣٢١؟ +comma: ، +question: ؟ + +[number_row] +١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩ ٠ + +[tlds] +iq krd diff --git a/app/src/main/assets/locale_key_texts/cs.txt b/app/src/main/assets/locale_key_texts/cs.txt new file mode 100644 index 0000000000..a34abb4176 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/cs.txt @@ -0,0 +1,19 @@ +[popup_keys] +a á +c č +d ď +e é ě +i í +n ň +o ó +r ř +s š +t ť +u ú ů +y ý +z ž +' ’ ‚ ‘ › ‹ +" ” „ “ » « + +[tlds] +cz diff --git a/app/src/main/assets/locale_key_texts/cv.txt b/app/src/main/assets/locale_key_texts/cv.txt new file mode 100644 index 0000000000..53fa6e14cb --- /dev/null +++ b/app/src/main/assets/locale_key_texts/cv.txt @@ -0,0 +1,20 @@ +[popup_keys] +" « » „ “ ” +у у́ ү ӯ +к қ +е е́ ә +н ң +г ғ +х ҳ +ы ы́ +а а́ +о о́ ө +ж җ +э э́ є +я я́ +ч ҷ +и и́ і ӣ +ю ю́ + +[labels] +alphabet: АБВ \ No newline at end of file diff --git a/app/src/main/assets/locale_key_texts/da.txt b/app/src/main/assets/locale_key_texts/da.txt new file mode 100644 index 0000000000..17094de22a --- /dev/null +++ b/app/src/main/assets/locale_key_texts/da.txt @@ -0,0 +1,14 @@ +[popup_keys] +a å æ +e é +o ø +' ’ ‚ ‘ › ‹ +" ” „ “ » « + +[extra_keys] +1: å +2: æ ä +2: ø ö + +[tlds] +dk diff --git a/app/src/main/assets/locale_key_texts/de-CH.txt b/app/src/main/assets/locale_key_texts/de-CH.txt new file mode 100644 index 0000000000..6e452594d5 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/de-CH.txt @@ -0,0 +1,11 @@ +[popup_keys] +a ä +o ö +u ü +' ’ ‚ ‘ › ‹ +" ” „ “ » « + +[extra_keys] +1: ü è +2: ö é +2: ä à diff --git a/app/src/main/assets/locale_key_texts/de-DE.txt b/app/src/main/assets/locale_key_texts/de-DE.txt new file mode 100644 index 0000000000..c81f96333b --- /dev/null +++ b/app/src/main/assets/locale_key_texts/de-DE.txt @@ -0,0 +1,13 @@ +[popup_keys] +a ä +o ö +u ü +s ß +' ’ ‚ ‘ › ‹ +" ” „ “ » « + +[extra_keys] +1: ü +2: ö +2: ä +3: ß diff --git a/app/src/main/assets/locale_key_texts/de.txt b/app/src/main/assets/locale_key_texts/de.txt new file mode 100644 index 0000000000..0cc11904f1 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/de.txt @@ -0,0 +1,10 @@ +[popup_keys] +a ä +o ö +u ü +s ß +' ’ ‚ ‘ › ‹ +" ” „ “ » « + +[tlds] +de at ch diff --git a/app/src/main/assets/locale_key_texts/el.txt b/app/src/main/assets/locale_key_texts/el.txt new file mode 100644 index 0000000000..0dd59534e2 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/el.txt @@ -0,0 +1,14 @@ +[popup_keys] +ε έ +υ ύ ϋ ΰ +ι ί ϊ ΐ +ο ό +α ά +η ή +ω ώ + +[labels] +alphabet: ΑΒΓ + +[tlds] +gr diff --git a/app/src/main/assets/locale_key_texts/eo.txt b/app/src/main/assets/locale_key_texts/eo.txt new file mode 100644 index 0000000000..f2fda7e40f --- /dev/null +++ b/app/src/main/assets/locale_key_texts/eo.txt @@ -0,0 +1,7 @@ +[popup_keys] +j ĵ +u ŭ +s ŝ +c ĉ +g ĝ +h ĥ diff --git a/app/src/main/assets/locale_key_texts/es.txt b/app/src/main/assets/locale_key_texts/es.txt new file mode 100644 index 0000000000..bfaa35a947 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/es.txt @@ -0,0 +1,15 @@ +[popup_keys] +a á ª +e é +i í +o ó º +u ú ü +n ñ +y ý +punctuation !autoColumnOrder!9 \, ? ! # ) ( / ; ¡ ' @ : - " + \% & ¿ + +[extra_keys] +2: ñ + +[tlds] +es com.es diff --git a/app/src/main/assets/locale_key_texts/et.txt b/app/src/main/assets/locale_key_texts/et.txt new file mode 100644 index 0000000000..2ee735f5ac --- /dev/null +++ b/app/src/main/assets/locale_key_texts/et.txt @@ -0,0 +1,17 @@ +[popup_keys] +a ä +o ö õ +u ü +s š +z ž +' ’ ‚ ‘ +" ” „ “ + +[extra_keys] +1: ü +2: ö õ +2: ä +3: õ + +[tlds] +ee diff --git a/app/src/main/assets/locale_key_texts/eu.txt b/app/src/main/assets/locale_key_texts/eu.txt new file mode 100644 index 0000000000..4cf01613c5 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/eu.txt @@ -0,0 +1,11 @@ +[popup_keys] +a á ª +e é +i í +o ó º +u ú ü û +n ñ +c ç + +[extra_keys] +2: ñ diff --git a/app/src/main/assets/locale_key_texts/fa.txt b/app/src/main/assets/locale_key_texts/fa.txt new file mode 100644 index 0000000000..3ce747ec4b --- /dev/null +++ b/app/src/main/assets/locale_key_texts/fa.txt @@ -0,0 +1,22 @@ +[popup_keys] +ه ﻫ|ه‍ هٔ ة +ی ئ ي ﯨ|ى +ا !fixedColumnOrder!5 ٱ ء آ أ إ +ت ة +ک ك +و ؤ +punctuation !fixedColumnOrder!7 ٕ|ٕ ْ|ْ ّ|ّ ٌ|ٌ ٍ|ٍ ً|ً ٔ|ٔ ٖ|ٖ ٰ|ٰ ٓ|ٓ ُ|ُ ِ|ِ َ|َ ـــ|ـ +« „ “ ” +» ‚ ‘ ’ ‹ › + +[labels] +alphabet: ا‌ب‌پ +symbol: ۳۲۱؟ +comma: ، +question: ؟ + +[number_row] +۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۰ + +[tlds] +ir diff --git a/app/src/main/assets/locale_key_texts/fi.txt b/app/src/main/assets/locale_key_texts/fi.txt new file mode 100644 index 0000000000..287d329f89 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/fi.txt @@ -0,0 +1,13 @@ +[popup_keys] +a ä å +o ö +s š +z ž + +[extra_keys] +1: å +2: ö ø +2: ä æ + +[tlds] +fi diff --git a/app/src/main/assets/locale_key_texts/fr.txt b/app/src/main/assets/locale_key_texts/fr.txt new file mode 100644 index 0000000000..02772665f9 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/fr.txt @@ -0,0 +1,16 @@ +[popup_keys] +a à â æ +e é è ê ë +i î ï +o ô œ +u ù û ü +c ç +y ÿ + +[extra_keys] +1: è ü +2: é ö +2: à ä + +[tlds] +fr diff --git a/app/src/main/assets/locale_key_texts/gl.txt b/app/src/main/assets/locale_key_texts/gl.txt new file mode 100644 index 0000000000..421b3f706c --- /dev/null +++ b/app/src/main/assets/locale_key_texts/gl.txt @@ -0,0 +1,10 @@ +[popup_keys] +a á ª +e é +i í +o ó º +u ú ü +n ñ + +[extra_keys] +2: ñ diff --git a/app/src/main/assets/locale_key_texts/gu.txt b/app/src/main/assets/locale_key_texts/gu.txt new file mode 100644 index 0000000000..9100cab2f1 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/gu.txt @@ -0,0 +1,6 @@ +[number_row] +૧ ૨ ૩ ૪ ૫ ૬ ૭ ૮ ૯ ૦ + +[labels] +symbol: ?૧૨૩ +alphabet: કખગ diff --git a/app/src/main/assets/locale_key_texts/hi-Latn.txt b/app/src/main/assets/locale_key_texts/hi-Latn.txt new file mode 100644 index 0000000000..b77e1c8726 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/hi-Latn.txt @@ -0,0 +1,2 @@ +[tlds] +in diff --git a/app/src/main/assets/locale_key_texts/hi.txt b/app/src/main/assets/locale_key_texts/hi.txt new file mode 100644 index 0000000000..c30631dca3 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/hi.txt @@ -0,0 +1,78 @@ +[popup_keys] +औ ऒं +ऐ ऐं +आ आं आँ +ई ईं +ऊ ऊं ऊँ +ध क्ष श्र +ौ ौं +ै ैं +ा ां ाँ +ी ीं +ू ूं ूँ +ब ब॒ +ग ज्ञ ग़ ग॒ +ज ज॒ ज्ञ ज़ +ड ड॒ ड़ +ओ ओं ऑ ऒ +ए एं एँ ऍ ऎ +अ अं अँ +इ इं इँ +उ उं उँ +फ फ़ +ऱ ्र र् +ख ख़ +ो ों ॉ ॊ +े ें +ि िं +ु ुं ुँ +र ऋ ऱ ॠ +क क़ +त त्र +ँ ॅ +ळ ऴ +ृ ॄ +म ॐ +न ञ ङ ऩ +ल ऌ ॡ +य य़ +़ ॽ ॰ ऽ +punctuation !autoColumnOrder!9 \, . ॥ ? ! !icon/zwnj_key|‌ !icon/zwj_key|‍ # @ ( ) / ; : - + \% +औ ौ +ऐ ै +आ ा +ई ी +ऊ ू +ब भ +ग घ +द ध +ज झ ज्ञ +ड ढ +ओ ो +ए े +अ ् +इ ि +उ ु +प फ +र ऋ ृ +क ख +त थ त्र +च छ +ट ठ +् ॅ ऍ +ं ः ँ ़ +म ॐ +न ण ञ ङ +स श ष श्र +ऑ ॉ + +[labels] +alphabet: कखग +symbol: ?१२३ +period: । + +[number_row] +१ २ ३ ४ ५ ६ ७ ८ ९ ० + +[tlds] +in diff --git a/app/src/main/assets/locale_key_texts/hr.txt b/app/src/main/assets/locale_key_texts/hr.txt new file mode 100644 index 0000000000..dbe04049c0 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/hr.txt @@ -0,0 +1,10 @@ +[popup_keys] +s š +z ž +c č ć +d đ +' ‘ ‚ ’ › ‹ +" “ „ ” » « + +[tlds] +hr diff --git a/app/src/main/assets/locale_key_texts/hu.txt b/app/src/main/assets/locale_key_texts/hu.txt new file mode 100644 index 0000000000..423b451493 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/hu.txt @@ -0,0 +1,11 @@ +[popup_keys] +a á +e é +i í +o ó ö ő +u ú ü ű +' ‘ ‚ ’ › ‹ +" “ „ ” » « + +[tlds] +hu gov.hu diff --git a/app/src/main/assets/locale_key_texts/hy.txt b/app/src/main/assets/locale_key_texts/hy.txt new file mode 100644 index 0000000000..66b3f3443e --- /dev/null +++ b/app/src/main/assets/locale_key_texts/hy.txt @@ -0,0 +1,11 @@ +[popup_keys] +punctuation !autoColumnOrder!8 \, ՞ ՜ ․ … ' = / ՝ ՛ ֊ » « ― ) ( +? ՞ ¿ +! ՜ ¡ + +[labels] +alphabet: ԱԲԳ +period: ։ + +[tlds] +am diff --git a/app/src/main/assets/locale_key_texts/is.txt b/app/src/main/assets/locale_key_texts/is.txt new file mode 100644 index 0000000000..4474bc1669 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/is.txt @@ -0,0 +1,14 @@ +[popup_keys] +a á æ +d ð +e é +i í +o ó ö +u ú +y ý +t þ +' ’ ‚ ‘ +" ” „ “ + +[tlds] +is diff --git a/app/src/main/assets/locale_key_texts/it.txt b/app/src/main/assets/locale_key_texts/it.txt new file mode 100644 index 0000000000..522981b9e7 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/it.txt @@ -0,0 +1,9 @@ +[popup_keys] +a à ª +e è é ə ɜ +i ì +o ò ó º +u ù + +[tlds] +it gov.it edu.it diff --git a/app/src/main/assets/locale_key_texts/iw.txt b/app/src/main/assets/locale_key_texts/iw.txt new file mode 100644 index 0000000000..781fe76b4c --- /dev/null +++ b/app/src/main/assets/locale_key_texts/iw.txt @@ -0,0 +1,15 @@ +[popup_keys] ++ ﬩ +ג ג׳ +י ײַ +ח ח׳ +ז ז׳ +צ צ׳ +ת ת׳ +ץ ץ׳ + +[labels] +alphabet: אבג + +[tlds] +il co.il gov.il diff --git a/app/src/main/assets/locale_key_texts/ka.txt b/app/src/main/assets/locale_key_texts/ka.txt new file mode 100644 index 0000000000..5503b53fab --- /dev/null +++ b/app/src/main/assets/locale_key_texts/ka.txt @@ -0,0 +1,17 @@ +[popup_keys] +ე ჱ +ყ ჸ +ი ჲ +ა ჺ +ფ ჶ +გ ჹ +ჰ ჵ +ჯ ჷ +ხ ჴ +ვ ჳ +ნ ჼ +' ’ ‚ ‘ +" ” „ “ + +[labels] +alphabet: აბგ diff --git a/app/src/main/assets/locale_key_texts/kab.txt b/app/src/main/assets/locale_key_texts/kab.txt new file mode 100644 index 0000000000..34df721241 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/kab.txt @@ -0,0 +1,18 @@ +[popup_keys] +a ɛ +z ẓ +r ṛ +t ṭ +u o +s ṣ +d ḍ +g ǧ +h ḥ +c č +b p + +[labels] +alphabet: AƐΓ + +[tlds] +dz fr diff --git a/app/src/main/assets/locale_key_texts/kk.txt b/app/src/main/assets/locale_key_texts/kk.txt new file mode 100644 index 0000000000..3a002d98e9 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/kk.txt @@ -0,0 +1,14 @@ +[popup_keys] +у ү ұ +к қ +е ё +н ң +г ғ +а ә +о ө +ь ъ +ы і +э һ + +[labels] +alphabet: АБВ diff --git a/app/src/main/assets/locale_key_texts/km.txt b/app/src/main/assets/locale_key_texts/km.txt new file mode 100644 index 0000000000..6ebd1f31c4 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/km.txt @@ -0,0 +1,38 @@ +[popup_keys] +! !icon/zwj_key|‍ +ៗ !icon/zwnj_key|‌ +" ៑ +៛ $ € +% ៖ +៍ ៙ +័ ៚ +៏ * +( { « +) } » +៌ × +១ ៱ +២ ៲ +៣ ៳ +៤ ៴ +៥ ៵ +៦ ៶ +៧ ៷ +៨ ៸ +៩ ៹ +០ ៰ +ឥ ឦ +ឲ ឱ +ឈ ៜ +ឺ ៝ +ឬ ឫ +ឪ ឧ ឱ ឳ ឩ ឨ +ះ ៈ +គ ឝ +ឮ ឭ ឰ +ព ឞ + +Process finished with exit code 0 + + +[labels] +alphabet: កខគ diff --git a/app/src/main/assets/locale_key_texts/kn.txt b/app/src/main/assets/locale_key_texts/kn.txt new file mode 100644 index 0000000000..237a2c4ad1 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/kn.txt @@ -0,0 +1,59 @@ +[popup_keys] +ಅ +ಆ ಾ +ಇ ಿ +ಈ ೀ +ಉ ು +ಊ ೂ +ಋ ೄ ೃ ೠ +ಎ ೆ +ಏ ೇ +ಐ ೖ ೈ +ಒ ೊ +ಓ ೋ +ಔ ೌ +ಂ ಽ ಼ ಃ ೕ +ಕ ಕ್ಮ ಕ್ಗ ಕ್ಬ ಕ್ಟ್ರ ಕ್ಷ್ಯ ಕ್ಸ ಕ್ನ ಕ್ವ ಕ್ಲ ಕ್ಯ ಕ್ಷ್ಮ ಕ್ಟ ಕ್ತ ಕ್ಕ ಕ್ಷ ಕ್ರ +ಖ ಖ್ಹ ಖ್ಖ ಖ್ಗಖ್ಯ ಖ್ವ ಖ್ತ +ಗ ಗ್ಳ ಗ್ಲ್ಯ ಗ್ಸ ಗ್ರ್ಯ ಗ್ಬ ಗ್ಡ ಗ್ದ ಗ್ತ ಗ್ಧ ಗ್ವ ಗ್ನ ಗ್ಯ ಗ್ಗ ಗ್ರ ಗ್ಲ +ಘ ಘ್ರ ಘ್ನ +ಙ ಙ್ಮ +ಚ ಚ್ಕ ಚ್ಮಚ್ಸ ಚ್ಗ ಚ್ಪ ಚ್ಛ್ರ ಚ್ಹ ಚ್ನ ಚ್ತ ಚ್ಡ ಚ್ಯ ಚ್ಛ ಚ್ಚ + +ಛ ಛ್ಘ +ಜ ಜ್ಪ ಜ್ಗ ಜ್ಬ ಜ್ರ ಜ್ಕ ಜ್ಮ ಜ್ನ ಜ್ಯ ಜ್ಞ ಜ್ಜ ಜ್ವ +ಝ ಝ್ಕ ಝ್ಡ +ಞ ಞ್ಞ +ಟ ಟ್ಜ ಟ್ದ ಟ್ಪ ಟ್ಮ ಟ್ರ್ಯ ಟ್ಸ್ಪ ಟ್ಸ್ಮ ಟ್ಬ ಟ್ಸ ಟ್ಲ ಟ್ರ ಟ್ಗ ಟ್ನ ಟ್ವ ಟ್ಟ ಟ್ರ ಟ್ಯ +ಠ ಠ್ಮ ಠ್ಯ ಠ್ಠ +ಡ ಡ್ರ್ಯ ಡ್ಶ ಡ್ಸ ಡ್ಳ ಡ್ಬ ಡ್ವ ಡ್ಮ ಡ್ದ ಡ್ಲ ಡ್ಕ ಡ್ನ ಡ್ಗ ಡ್ತ ಡ್ಡ ಡ್ರ ಡ್ಯ +ಢ ಢ್ಯ +ಣ ಣ್ಬ ಣ್ಕ ಣ್ನ ಣ್ಗ ಣ್ರ ಣ್ವ ಣ್ತ ಣ್ಮ ಣ್ಯ ಣ್ಣ +ತ ತ್ಬ ತ್ಚ ತ್ದ ತ್ಗ ತ್ನ ತ್ವ ತ್ಕ ತ್ಲ ತ್ಪ್ರ ತ್ತ್ವ ತ್ರ್ಯ ತ್ಮ ತ್ಸ ತ್ಪ ತ್ಯ ತ್ರ ತ್ತ + +ಥ ಥ್ಯ ಥ್ರ ಥ್ಲ ಥ್ವ ಥ್ರ್ಯ +ದ ದ್ರ್ಯ ದ್ಳ ದ್ನ ದ್ಮ ದ್ದ ದ್ರ ದ್ಗ ದ್ತ ದ್ಕ ದ್ಲ ದ್ಯ ದ್ಧ ದ್ಷ ದ್ಸ ದ್ಹ ದ್ಬ ದ್ವ +ಧ ಧ್ಬ ಧ್ಪ ಧ್ಗ ಧ್ಭ‌ ಧ್ಧ ಧ್ವ ಧ್ಯ ಧ್ರ +ನ ನ್ದ ನ್ಪ ನ್ಡ ನ್ಶ ನ್ಫ ನ್ರ ನ್ಕ ನ್ಸ್ಟ ನ್ಗ ನ್ಲ ನ್ಟ ನ್ಸ್ಪ ನ್ಸ ನ್ಮ ನ್ನ ನ್ಯ ನ್ವ +ಪ ಪ್ಣ ಪ್ಕ ಪ್ಮ ಪ್ಟ್ನ ಪ್ಗ ಪ್ವ ಪ್ಸ್ಟ ಪ್ಡ ಪ್ಸ ಪ್ಟ ಪ್ನ ಪ್ಲ್ಯ ಪ್ಯ ಪ್ತ ಪ್ರ ಪ್ಪ ಪ್ಲ +ಫ ೞ ಫ್ಬ ಫ್ನ ಫ್ಸ ಫ್ಲ್ಯ ಫ್ಟ ಫ್ಘ ಫ್ಜ ಫ್ಲ ಫ್ಯ ಫ್ರ ಫ್ತ ಫ್ಟ್ವ +ಬ ಬ್ತ ಬ್ರ್ಯ ಬ್ಗ ಬ್ಭ ಬ್ಜ ಬ್ನ ಬ್ವ ಬ್ಳ ಬ್ಲ್ಯ ಬ್ಲ ಬ್ಸ ಬ್ಧ ಬ್ಯ ಬ್ಬ ಬ್ರ ಬ್ದ +ಭ ಭ್ಯ ಭ್ರ +ಮ ಮ್ವ ಮ್ಡ ಮ್ಸ ಮ್ನ ಮ್ಮ ಮ್ಯ ಮ್ಗ ಮ್ಚ್ಯ ಮ್ತ ಮ್ಕ ಮ್ರ ಮ್ಹ ಮ್ಜ ಮ್ದ ಮ್ಚ ಮ್ಥ ಮ್ಲ +ಯ ಯ್ಶ ಯ್ಲ್ಯ ಯ್ಜ ಯ್ಪ ಯ್ಬ ಯ್ಗ ಯ್ರ ಯ್ನ ಯ್ವ ಯ್ಡ ಯ್ಸ ಯ್ಲ ಯ್ತ ಯ್ದ ಯ್ಕ ಯ್ಯ + +ರ ರ್ಟ ರ್ಧ ರ್ಚ ರ್ಪ ಱ ರ್ಣ ರ್ದ ರ್ಗ ರ್ಭ ರ್ಜ ‌ರ್ಷ ರ್ತ ರ್ಕ ರ್ನ ರ್ಶ ರ್ ರ್ಯ ರ್ಮ ರ್ಥ ರ್ವ +ಲ ಲ್ಶ ಲ್ರ ಲ್ಜ ಲ್ಡ ಲ್ಫ ಲ್ಯ ಲ್ಲ ಲ್ಮ ಲ್ತ ಲ್ಬ ಲ್ಗ ಲ್ಪ ಲ್ಟ ಲ್ದ ಲ್ಕ ಲ್ಸ ಲ್ನ ಲ್ವ +ವ ವ್ಮ ವ್ಡ ವ್ಶ ವ್ಚ ವ್ಕ ವ್ತ ವ್ಪ ವ್ಟ ವ್ಲ ವ್ಗ ವ್ಳ ವ್ದ ವ್ಹ ವ್ವ ವ್ಯ ವ್ರ ವ್ನ +ಶ ಶ್ಶ ಶ್ಕ ಶ್ಚ ಶ್ನ ಶ್ಟ ಶ್ಬ ಶ್ಲ ಶ್ರ ಶ್ವ ಶ್ಮ ಶ್ಣ ಶ್ಟ್ರ ಶ್ಗ ಶ್ಯ +ಷ ಷ್ರ ಷ್ಗ ಷ್ವ ಷ್ಬ ಷ್ಕ್ರ ಷ್ಟ್ಯ ಷ್ನ ಷ್ಪ್ರ ಷ್ಮ ಷ್ಠ ಷ್ಕ ಷ್ಪ ಷ್ಯ ಷ್ಟ ಷ್ಟ್ರ ಷ್ಣ +ಸ ಸ್ಖ ಸ್ಗ ಸ್ಡ ಸ್ತ್ರ ಸ್ಟ್ರ ಸ್ಮ ಸ್ಲ ಸ್ರ ಸ್ನ ಸ್ಕ ಸ್ಪ ಸ್ಟ ಸ್ತ್ರ ಸ್ಸ ಸ್ವ ಸ್ಥ ಸ್ತ ಸ್ಯ +ಹ ಹ್ಸ ಹ್ಞ ಹ್ರ ಹ್ಹ ಹ್ಲ ಹ್ತ ಹ್ಳ ಹ್ವ ಹ್ನ ಹ್ಮ ಹ್ಯ +ಳ ಳ್ರ ಳ್ಲ ಳ್ಳ್ಯ ಳ್ನ ಳ್ದ ಳ್ಗ ಳ್ಕ ಳ್ಬ ಳ್ಮ ಳ್ಯ ಳ್ವ ಳ್ತ ಳ್ಳ + +[labels] +alphabet: ಅಆಇ +symbol: ?೧೨೩ + +[number_row] +೧ ೨ ೩ ೪ ೫ ೬ ೭ ೮ ೯ ೦ diff --git a/app/src/main/assets/locale_key_texts/ko.txt b/app/src/main/assets/locale_key_texts/ko.txt new file mode 100644 index 0000000000..9f7c4e37b9 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/ko.txt @@ -0,0 +1,5 @@ +[labels] +alphabet: ㄱㄴㄷ + +[tlds] +kr diff --git a/app/src/main/assets/locale_key_texts/ky.txt b/app/src/main/assets/locale_key_texts/ky.txt new file mode 100644 index 0000000000..a16a4c6128 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/ky.txt @@ -0,0 +1,9 @@ +[popup_keys] +у ү +е ё +н ң +о ө +ь ъ + +[labels] +alphabet: АБВ diff --git a/app/src/main/assets/locale_key_texts/lo.txt b/app/src/main/assets/locale_key_texts/lo.txt new file mode 100644 index 0000000000..c0b4f3ffce --- /dev/null +++ b/app/src/main/assets/locale_key_texts/lo.txt @@ -0,0 +1,2 @@ +[labels] +alphabet: ກຂຄ diff --git a/app/src/main/assets/locale_key_texts/lt.txt b/app/src/main/assets/locale_key_texts/lt.txt new file mode 100644 index 0000000000..d017e38127 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/lt.txt @@ -0,0 +1,13 @@ +[popup_keys] +a ą +c č +e ė ę +i į +s š +u ū ų +z ž +' ’ ‚ ‘ +" ” „ “ + +[tlds] +lt diff --git a/app/src/main/assets/locale_key_texts/lv.txt b/app/src/main/assets/locale_key_texts/lv.txt new file mode 100644 index 0000000000..de243b16f8 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/lv.txt @@ -0,0 +1,18 @@ +[popup_keys] +a ā +c č +e ē +g ģ +i ī +k ķ +l ļ +n ņ +o ō +s š +u ū +z ž +' ’ ‚ ‘ +" ” „ “ + +[tlds] +lv diff --git a/app/src/main/assets/locale_key_texts/mhr.txt b/app/src/main/assets/locale_key_texts/mhr.txt new file mode 100644 index 0000000000..287860cb1f --- /dev/null +++ b/app/src/main/assets/locale_key_texts/mhr.txt @@ -0,0 +1,8 @@ +[popup_keys] +" « » „ “ ” +н ҥ +о ӧ +у ӱ + +[labels] +alphabet: АБВ diff --git a/app/src/main/assets/locale_key_texts/mk.txt b/app/src/main/assets/locale_key_texts/mk.txt new file mode 100644 index 0000000000..ef34576464 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/mk.txt @@ -0,0 +1,8 @@ +[popup_keys] +е ѐ +и ѝ +' ’ ‚ ‘ +" ” „ “ + +[labels] +alphabet: АБВ diff --git a/app/src/main/assets/locale_key_texts/ml.txt b/app/src/main/assets/locale_key_texts/ml.txt new file mode 100644 index 0000000000..a227c63a4f --- /dev/null +++ b/app/src/main/assets/locale_key_texts/ml.txt @@ -0,0 +1,36 @@ +[popup_keys] +് അ +ാ ആ +ി ഇ +ീ ഈ +ു ഉ +ൂ ഊ +ൃ ഋ +െ എ ഐ ൈ +േ ഏ +ൊ ഒ +ോ ഓ ഔ ൗ +ക ഖ +ഗ ഘ +ങ ഞ +ച ഛ +ജ ഝ +ട ഠ +ഡ ഢ +ണ ൺ +ത ഥ +ദ ധ +ന ൻ +പ ഫ +ബ ഭ +മ ം +യ ്യ +ര ്ര ർ റ +ല ൽ +വ ്വ +ശ ഷ സ +ഹ ഃ +ള ൾ ഴ + +[labels] +alphabet: അ diff --git a/app/src/main/assets/locale_key_texts/mn.txt b/app/src/main/assets/locale_key_texts/mn.txt new file mode 100644 index 0000000000..90ef4f9caa --- /dev/null +++ b/app/src/main/assets/locale_key_texts/mn.txt @@ -0,0 +1,8 @@ +[popup_keys] +ш щ +ё е +ь ъ +в ю + +[labels] +alphabet: АБВ diff --git a/app/src/main/assets/locale_key_texts/mns.txt b/app/src/main/assets/locale_key_texts/mns.txt new file mode 100644 index 0000000000..9c36d5faae --- /dev/null +++ b/app/src/main/assets/locale_key_texts/mns.txt @@ -0,0 +1,20 @@ +[popup_keys] +ё ё̄ +у ӯ ӱ +к қ +е е̄ +н ӈ +г ғ +х ҳ +ы ы̄ +а а̄ ӓ +о о̄ ӧ +ж җ +э э̄ +я я̄ +ч ҷ +и ӣ +ю ю̄ + +[labels] +alphabet: АБВ diff --git a/app/src/main/assets/locale_key_texts/more_popups_all.txt b/app/src/main/assets/locale_key_texts/more_popups_all.txt new file mode 100644 index 0000000000..a66fe37fdb --- /dev/null +++ b/app/src/main/assets/locale_key_texts/more_popups_all.txt @@ -0,0 +1,26 @@ +[popup_keys] +a á â ä à ã æ å ā ą ª ă ả ạ ằ ắ ẳ ẵ ặ ầ ấ ẩ ẫ ậ +e é è ê ë ē ė ę ě ə ẻ ẽ ẹ ề ế ể ễ ệ ĕ +i í ì ï î ī į ı ij ĩ ỉ ị ĭ +o ó ô ö ò õ œ ø ō º ő ỏ ọ ồ ố ổ ỗ ộ ơ ờ ớ ở ỡ ợ ŏ +u ú ü ù ū û ů ű ų ũ µ ủ ụ ư ừ ứ ử ữ ự ŭ +n ñ ń ň ņ ʼn ŋ +y ý ÿ ij ŷ y þ ỳ ỷ ỹ ỵ +s ß š ś ş ș ŝ ſ +g ğ ģ ġ g\' ĝ +c ç ć č ċ ĉ +z ž ź ż +l ł ĺ ļ ľ ŀ l·l +punctuation !autoColumnOrder!10 \, ? ! # ) ( / ; ' @ : - " + \% & · ¡ ¿ +d ď đ ð +r ř ŕ ŗ +t ť ţ þ ț ŧ +' ’ ‚ ‘ › ‹ +" ” „ “ » « +k ķ ĸ +v w ŵ +h ĥ ħ +w ŵ w +q q +x x +j ĵ diff --git a/app/src/main/assets/locale_key_texts/more_popups_main.txt b/app/src/main/assets/locale_key_texts/more_popups_main.txt new file mode 100644 index 0000000000..a091434a5a --- /dev/null +++ b/app/src/main/assets/locale_key_texts/more_popups_main.txt @@ -0,0 +1,9 @@ +[popup_keys] +a à á â ä æ ã å ā +e é è ê ë ē +i í î ï ī ì +o ó ô ö ò œ ø ō õ +u ú û ü ù ū +s ß +n ñ +c ç diff --git a/app/src/main/assets/locale_key_texts/more_popups_more.txt b/app/src/main/assets/locale_key_texts/more_popups_more.txt new file mode 100644 index 0000000000..c48b21ad4c --- /dev/null +++ b/app/src/main/assets/locale_key_texts/more_popups_more.txt @@ -0,0 +1,22 @@ +[popup_keys] +a á â ä à ã æ å ā ą ª ă +e é è ê ë ē ė ę ě ə +i í ì ï î ī į ı ij ĩ +o ó ô ö ò õ œ ø ō º ő +u ú ü ù ū û ů ű ų ũ +n ñ ń ň ņ ʼn ŋ +y ý ÿ ij ŷ +s ß š ś ş ș +g ğ ģ ġ +c ç ć č ċ +z ž ź ż +l ł ĺ ļ ľ ŀ +punctuation !autoColumnOrder!9 \, ? ! # ) ( / ; ' @ : - " + \% & ¡ ¿ +d ď đ ð +r ř ŕ ŗ +t ť ţ þ ț ŧ +' ’ ‚ ‘ › ‹ +" ” „ “ » « +k ķ ĸ +h ĥ +w ŵ diff --git a/app/src/main/assets/locale_key_texts/mr.txt b/app/src/main/assets/locale_key_texts/mr.txt new file mode 100644 index 0000000000..db6c8b72af --- /dev/null +++ b/app/src/main/assets/locale_key_texts/mr.txt @@ -0,0 +1,35 @@ +[popup_keys] +ौ औ +ै ऐ +ा आ +ी ई +ू ऊ +ब भ +ग घ +द ध +ज झ ज्ञ +ड ढ +ो ओ +े ए +् अ +ि इ +ु उ +प फ +र ऱ ऋ ृ +क ख +त थ त्र +च छ +ट ठ +ॉ ऑ +ॅ ऍ +ं ः ँ +न ण ञ ङ +ल ळ +स श ष श्र + +[labels] +alphabet: कखग +symbol: ?१२३ + +[number_row] +१ २ ३ ४ ५ ६ ७ ८ ९ ० diff --git a/app/src/main/assets/locale_key_texts/mwl.txt b/app/src/main/assets/locale_key_texts/mwl.txt new file mode 100644 index 0000000000..d7dbc881b9 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/mwl.txt @@ -0,0 +1,7 @@ +[popup_keys] +a á ª +e é +i í +o ó º +u ú ũ +c ç diff --git a/app/src/main/assets/locale_key_texts/my.txt b/app/src/main/assets/locale_key_texts/my.txt new file mode 100644 index 0000000000..f670e805b4 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/my.txt @@ -0,0 +1,6 @@ +[popup_keys] +punctuation !autoColumnOrder!9 ၊ . ? ! # ) ( / ; ... ' @ : - " + \% & + +[labels] +alphabet: ကခဂ +period: ။ diff --git a/app/src/main/assets/locale_key_texts/nb.txt b/app/src/main/assets/locale_key_texts/nb.txt new file mode 100644 index 0000000000..5b75b95c25 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/nb.txt @@ -0,0 +1,14 @@ +[popup_keys] +a å æ +e é +o ø +' ‘ ‚ ’ +" ” „ “ « » + +[extra_keys] +1: å +2: ø ö +2: æ ä + +[tlds] +no diff --git a/app/src/main/assets/locale_key_texts/ne.txt b/app/src/main/assets/locale_key_texts/ne.txt new file mode 100644 index 0000000000..e89e7d14fd --- /dev/null +++ b/app/src/main/assets/locale_key_texts/ne.txt @@ -0,0 +1,27 @@ +[popup_keys] +ट ़ +् ऽ +punctuation !autoColumnOrder!9 . \, ? ! # ) ( / ; ' @ : - " + \% & +त्त ञ ज्ञ ॥ +ड्ढ ई +ऐ घ +द्व द्ध +ट्ट छ +ठ्ठ ट +ऊ ठ +क्ष ड +इ ढ +ए ण +ृ ओ +इ औ +ै श्र +े ः ऽ +र रु + +[labels] +alphabet: कखग +symbol: ?१२३ +period: । + +[number_row] +१ २ ३ ४ ५ ६ ७ ८ ९ ० diff --git a/app/src/main/assets/locale_key_texts/nl.txt b/app/src/main/assets/locale_key_texts/nl.txt new file mode 100644 index 0000000000..aa4f1a968e --- /dev/null +++ b/app/src/main/assets/locale_key_texts/nl.txt @@ -0,0 +1,9 @@ +[popup_keys] +a á ä â à +e é ë ê è +i í ï ì î ij +o ó ö ô ò +u ú ü û ù +y ý ÿ +' ‘ ‚ ’ +" “ „ ” diff --git a/app/src/main/assets/locale_key_texts/pl.txt b/app/src/main/assets/locale_key_texts/pl.txt new file mode 100644 index 0000000000..91baf0d310 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/pl.txt @@ -0,0 +1,14 @@ +[popup_keys] +a ą +e ę +o ó +s ś +n ń +c ć +z ż ź +l ł +' ‘ ‚ ’ +" “ „ ” + +[tlds] +pl diff --git a/app/src/main/assets/locale_key_texts/pms.txt b/app/src/main/assets/locale_key_texts/pms.txt new file mode 100644 index 0000000000..2fa1e4a7a3 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/pms.txt @@ -0,0 +1,6 @@ +[popup_keys] +a à +e é ë è +i ì +o ö ò +u ü ù diff --git a/app/src/main/assets/locale_key_texts/pt.txt b/app/src/main/assets/locale_key_texts/pt.txt new file mode 100644 index 0000000000..ff73ef434a --- /dev/null +++ b/app/src/main/assets/locale_key_texts/pt.txt @@ -0,0 +1,7 @@ +[popup_keys] +a á ã à â ª +e é ê +i í +o ó õ ô º +u ú ü +c ç diff --git a/app/src/main/assets/locale_key_texts/ro.txt b/app/src/main/assets/locale_key_texts/ro.txt new file mode 100644 index 0000000000..988644ef5f --- /dev/null +++ b/app/src/main/assets/locale_key_texts/ro.txt @@ -0,0 +1,10 @@ +[popup_keys] +a ă â +i î +s ș +t ț +' ‘ ‚ ’ +" “ „ ” + +[tlds] +ro diff --git a/app/src/main/assets/locale_key_texts/ru.txt b/app/src/main/assets/locale_key_texts/ru.txt new file mode 100644 index 0000000000..59583da42e --- /dev/null +++ b/app/src/main/assets/locale_key_texts/ru.txt @@ -0,0 +1,21 @@ +[popup_keys] +е ё е́ ѣ +ф ѳ +ы ы́ +а а́ +о о́ +я я́ +и и́ +ь ъ ы +ю ю́ +' ’ ‚ ‘ › ‹ +" ” „ “ » « + +і ы +є э э́ + +[labels] +alphabet: АБВ + +[tlds] +ru diff --git a/app/src/main/assets/locale_key_texts/si.txt b/app/src/main/assets/locale_key_texts/si.txt new file mode 100644 index 0000000000..a9f3d36098 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/si.txt @@ -0,0 +1,11 @@ +[popup_keys] +ඥ ෴ +ද ඳ +ඤ ෴ +ං ඃ +ජ ඦ +ඩ ඬ +ග ඟ + +[labels] +alphabet: අ ආ diff --git a/app/src/main/assets/locale_key_texts/sk.txt b/app/src/main/assets/locale_key_texts/sk.txt new file mode 100644 index 0000000000..b699ff6b11 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/sk.txt @@ -0,0 +1,20 @@ +[popup_keys] +a á ä +e é +i í +o ô ó +u ú +s š +n ň +c č +y ý +d ď +r ŕ +t ť +z ž +l ľ ĺ +' ’ ‚ ‘ › ‹ +" ” „ “ » « + +[tlds] +sk diff --git a/app/src/main/assets/locale_key_texts/sl.txt b/app/src/main/assets/locale_key_texts/sl.txt new file mode 100644 index 0000000000..beb8414337 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/sl.txt @@ -0,0 +1,9 @@ +[popup_keys] +s š +c č ć +z ž +' ’ ‚ ‘ › ‹ +" ” „ “ » « + +[tlds] +si diff --git a/app/src/main/assets/locale_key_texts/sr-Latn.txt b/app/src/main/assets/locale_key_texts/sr-Latn.txt new file mode 100644 index 0000000000..7f0b254da4 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/sr-Latn.txt @@ -0,0 +1,15 @@ +[popup_keys] +s š +z ž +c č ć +d đ + +[extra_keys] +1: š +2: č +2: ć +3: đ +3: ž + +[tlds] +rs diff --git a/app/src/main/assets/locale_key_texts/sr.txt b/app/src/main/assets/locale_key_texts/sr.txt new file mode 100644 index 0000000000..039e1f4812 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/sr.txt @@ -0,0 +1,11 @@ +[popup_keys] +е ѐ +и ѝ +' ’ ‚ ‘ › ‹ +" ” „ “ » « + +[labels] +alphabet: АБВ + +[tlds] +rs diff --git a/app/src/main/assets/locale_key_texts/sv.txt b/app/src/main/assets/locale_key_texts/sv.txt new file mode 100644 index 0000000000..233e02c3bd --- /dev/null +++ b/app/src/main/assets/locale_key_texts/sv.txt @@ -0,0 +1,13 @@ +[popup_keys] +a ä å +o ö +' › ‹ +" » « + +[extra_keys] +1: å +2: ö +2: ä + +[tlds] +sv diff --git a/app/src/main/assets/locale_key_texts/sw.txt b/app/src/main/assets/locale_key_texts/sw.txt new file mode 100644 index 0000000000..d36014bf76 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/sw.txt @@ -0,0 +1,2 @@ +[popup_keys] +g g\' diff --git a/app/src/main/assets/locale_key_texts/ta.txt b/app/src/main/assets/locale_key_texts/ta.txt new file mode 100644 index 0000000000..5c2d9ecb24 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/ta.txt @@ -0,0 +1,19 @@ +[popup_keys] +ஔ ௌ +ஐ ை +ஆ ா +ஈ ீ +ஊ ூ +ஓ ோ ௐ +ஏ ே +அ ஃ +இ ி +உ ு +க ஹ க்ஷ +ச ஸ ஶ்ரீ +ஒ ொ +எ ெ +ஷ ஜ + +[labels] +alphabet: தமிழ் diff --git a/app/src/main/assets/locale_key_texts/te.txt b/app/src/main/assets/locale_key_texts/te.txt new file mode 100644 index 0000000000..baf480a39a --- /dev/null +++ b/app/src/main/assets/locale_key_texts/te.txt @@ -0,0 +1,35 @@ +[popup_keys] +ౌ ఔ +ై ఐ +ా ఆ +ీ ఈ +ూ ఊ +బ భ +హ ః +గ ఘ +ద ధ +జ ఝ +డ ఢ +ో ఓ +ే ఏ +్ అ +ి ఇ +ు ఉ +ప ఫ +ర ఱ ్ర +క ఖ +త థ +చ ఛ +ట ఠ +ొ ఒ +ె ఎ +మ ం ఁ +న ణ ఙ ఞ +ల ళ +స శ +ఋ ృ +ష క్ష +య జ్ఞ + +[labels] +alphabet: అఆఇ diff --git a/app/src/main/assets/locale_key_texts/th.txt b/app/src/main/assets/locale_key_texts/th.txt new file mode 100644 index 0000000000..676dc6aba0 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/th.txt @@ -0,0 +1,5 @@ +[labels] +alphabet: กขค + +[number_row] +๑ ๒ ๓ ๔ ๕ ๖ ๗ ๘ ๙ ๐ diff --git a/app/src/main/assets/locale_key_texts/tl.txt b/app/src/main/assets/locale_key_texts/tl.txt new file mode 100644 index 0000000000..f111e26227 --- /dev/null +++ b/app/src/main/assets/locale_key_texts/tl.txt @@ -0,0 +1,5 @@ +[popup_keys] +n ñ + +[extra_keys] +2: ñ diff --git a/app/src/main/assets/locale_key_texts/tr.txt b/app/src/main/assets/locale_key_texts/tr.txt new file mode 100644 index 0000000000..e2f1771b1e --- /dev/null +++ b/app/src/main/assets/locale_key_texts/tr.txt @@ -0,0 +1,12 @@ +[popup_keys] +a â +ı i î +i ı î +o ö +u ü û +s ş +g ğ +c ç + +[tlds] +tr gov.tr edu.tr com.tr diff --git a/app/src/main/assets/locale_key_texts/uk.txt b/app/src/main/assets/locale_key_texts/uk.txt new file mode 100644 index 0000000000..cbd8986b7f --- /dev/null +++ b/app/src/main/assets/locale_key_texts/uk.txt @@ -0,0 +1,25 @@ +[popup_keys] +у у́ +е е́ +г ґ +ф ѳ +ї ї́ +і і́ +а а́ +о о́ +є є́ +я я́ +и и́ і ї +ю ю́ +' ’ ‚ ‘ › ‹ +" ” „ “ » « + +ы і ї +э є +ј й + +[labels] +alphabet: АБВ + +[tlds] +ua diff --git a/app/src/main/assets/locale_key_texts/ur.txt b/app/src/main/assets/locale_key_texts/ur.txt new file mode 100644 index 0000000000..6a8019d05d --- /dev/null +++ b/app/src/main/assets/locale_key_texts/ur.txt @@ -0,0 +1,33 @@ +[popup_keys] +و ؤ +ر ڑ +ت ٹ +ے ۓ +ی ئ +ہ ۂ ۃ +ا آ أ ٰ ٖ +س ص +د ڈ +گ غ +ح ھ +ج ض +ک خ +َ ُ ِ ٗ ْ ً ٌ ٍ ّ +ز ذ +ش ژ +چ ث +ط ظ +ن ں +punctuation ؟ ، ! . - +« „ “ ” +» ‚ ‘ ’ ‹ › + +[labels] +alphabet: اب‌پ +comma: ، +symbol: ۳۲۱؟ +period: ۔ +question: ؟ + +[number_row] +۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۰ diff --git a/app/src/main/assets/locale_key_texts/uz.txt b/app/src/main/assets/locale_key_texts/uz.txt new file mode 100644 index 0000000000..6a3e684ddd --- /dev/null +++ b/app/src/main/assets/locale_key_texts/uz.txt @@ -0,0 +1,12 @@ +[popup_keys] +a â ä á +e ə é +i ı î ï ì í į ī +o ö ô œ ò ó õ ø ō +u ü û ù ú ū +s ş ß ś š +g ğ +n ň ñ +c ç ć č +y ý +z ž diff --git a/app/src/main/assets/locale_key_texts/vi.txt b/app/src/main/assets/locale_key_texts/vi.txt new file mode 100644 index 0000000000..83db93bb6e --- /dev/null +++ b/app/src/main/assets/locale_key_texts/vi.txt @@ -0,0 +1,11 @@ +[popup_keys] +a à á ả ã ạ ă ằ ắ ẳ ẵ ặ â ầ ấ ẩ ẫ ậ +e è é ẻ ẽ ẹ ê ề ế ể ễ ệ +i ì í ỉ ĩ ị +o ò ó ỏ õ ọ ô ồ ố ổ ỗ ộ ơ ờ ớ ở ỡ ợ +u ù ú ủ ũ ụ ư ừ ứ ử ữ ự +y ỳ ý ỷ ỹ ỵ +d đ + +[tlds] +vn diff --git a/app/src/main/assets/locale_key_texts/xdq.txt b/app/src/main/assets/locale_key_texts/xdq.txt new file mode 100644 index 0000000000..697b2f937b --- /dev/null +++ b/app/src/main/assets/locale_key_texts/xdq.txt @@ -0,0 +1,16 @@ +[popup_keys] +у у́ ю +е е́ э ё +ш щ +а а́ +п ф +о о́ +и и́ ы +ъ ӏ +я я́ +ь ӏ +' ’ ‚ ‘ +" ” „ “ + +[labels] +alphabet: АБВ diff --git a/app/src/main/assets/locale_key_texts/zu.txt b/app/src/main/assets/locale_key_texts/zu.txt new file mode 100644 index 0000000000..ccc06327dc --- /dev/null +++ b/app/src/main/assets/locale_key_texts/zu.txt @@ -0,0 +1,2 @@ +[popup_keys] +b ɓ diff --git a/app/src/main/assets/locale_key_texts/zz.txt b/app/src/main/assets/locale_key_texts/zz.txt new file mode 100644 index 0000000000..c95406a98a --- /dev/null +++ b/app/src/main/assets/locale_key_texts/zz.txt @@ -0,0 +1,20 @@ +[popup_keys] +a à á â ã ä å æ ā ă ą ª +e è é ê ë ē ĕ ė ę ě +i ì í î ï ĩ ī ĭ į ı ij +o ò ó ô õ ö ø ō ŏ ő œ º +u ù ú û ü ũ ū ŭ ů ű ų +s ß ś ŝ ş š ſ +n ñ ń ņ ň ʼn ŋ +c ç ć ĉ ċ č +y ý ŷ ÿ ij +d ď đ ð +r ŕ ŗ ř +t þ ţ ť ŧ +z ź ż ž +k ķ ĸ +l ĺ ļ ľ ŀ ł +g ĝ ğ ġ ģ +h ĥ +j ĵ +w ŵ diff --git a/app/src/main/java/helium314/keyboard/accessibility/AccessibilityLongPressTimer.kt b/app/src/main/java/helium314/keyboard/accessibility/AccessibilityLongPressTimer.kt new file mode 100644 index 0000000000..37077b574a --- /dev/null +++ b/app/src/main/java/helium314/keyboard/accessibility/AccessibilityLongPressTimer.kt @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.accessibility + +import android.content.Context +import android.os.Handler +import android.os.Message +import helium314.keyboard.keyboard.Key +import helium314.keyboard.latin.R + +// Handling long press timer to show a popup keys keyboard. +internal class AccessibilityLongPressTimer( + private val mCallback: LongPressTimerCallback, + context: Context +) : Handler(context.mainLooper) { + interface LongPressTimerCallback { + fun performLongClickOn(key: Key) + } + + private val mConfigAccessibilityLongPressTimeout = context.resources.getInteger(R.integer.config_accessibility_long_press_key_timeout).toLong() + override fun handleMessage(msg: Message) { + when (msg.what) { + MSG_LONG_PRESS -> { + cancelLongPress() + mCallback.performLongClickOn(msg.obj as Key) + return + } + else -> { + super.handleMessage(msg) + return + } + } + } + + fun startLongPress(key: Key?) { + cancelLongPress() + val longPressMessage = obtainMessage(MSG_LONG_PRESS, key) + sendMessageDelayed(longPressMessage, mConfigAccessibilityLongPressTimeout) + } + + fun cancelLongPress() { + removeMessages(MSG_LONG_PRESS) + } + + companion object { + private const val MSG_LONG_PRESS = 1 + } +} diff --git a/app/src/main/java/helium314/keyboard/accessibility/AccessibilityUtils.kt b/app/src/main/java/helium314/keyboard/accessibility/AccessibilityUtils.kt new file mode 100644 index 0000000000..dafbfb2bf8 --- /dev/null +++ b/app/src/main/java/helium314/keyboard/accessibility/AccessibilityUtils.kt @@ -0,0 +1,243 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.accessibility + +import android.content.Context +import android.media.AudioDeviceInfo.* +import android.media.AudioManager +import android.os.Build +import android.os.SystemClock +import android.provider.Settings +import android.text.TextUtils +import helium314.keyboard.latin.utils.Log +import android.view.MotionEvent +import android.view.View +import android.view.ViewGroup +import android.view.accessibility.AccessibilityEvent +import android.view.accessibility.AccessibilityManager +import android.view.inputmethod.EditorInfo +import helium314.keyboard.latin.R +import helium314.keyboard.latin.SuggestedWords +import helium314.keyboard.latin.utils.InputTypeUtils + +class AccessibilityUtils private constructor() { + private lateinit var mContext: Context + private lateinit var mAccessibilityManager: AccessibilityManager + private lateinit var mAudioManager: AudioManager + /** The most recent auto-correction. */ + private var mAutoCorrectionWord: String? = null + /** The most recent typed word for auto-correction. */ + private var mTypedWord: String? = null + + private fun initInternal(context: Context) { + mContext = context + mAccessibilityManager = context.getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager + mAudioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager + } + + /** + * Returns `true` if accessibility is enabled. Currently, this means + * that the kill switch is off and system accessibility is turned on. + * + * @return `true` if accessibility is enabled. + */ + val isAccessibilityEnabled: Boolean + get() = ENABLE_ACCESSIBILITY && mAccessibilityManager.isEnabled + + /** + * Returns `true` if touch exploration is enabled. Currently, this + * means that the kill switch is off, the device supports touch exploration, + * and system accessibility is turned on. + * + * @return `true` if touch exploration is enabled. + */ + val isTouchExplorationEnabled: Boolean + get() = isAccessibilityEnabled && mAccessibilityManager.isTouchExplorationEnabled + + /** + * Returns whether the device should obscure typed password characters. + * Typically this means speaking "dot" in place of non-control characters. + * + * @return `true` if the device should obscure password characters. + */ + fun shouldObscureInput(editorInfo: EditorInfo?): Boolean { + if (editorInfo == null) return false + // The user can optionally force speaking passwords. + if (Settings.Secure.ACCESSIBILITY_SPEAK_PASSWORD != null) { + val speakPassword = Settings.Secure.getInt(mContext.contentResolver, + Settings.Secure.ACCESSIBILITY_SPEAK_PASSWORD, 0) != 0 + if (speakPassword) return false + } + // Always speak if the user is listening through headphones. + val listeningThroughHeadphones = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { + @Suppress("deprecation") // no replacement available + mAudioManager.isWiredHeadsetOn || mAudioManager.isBluetoothA2dpOn + } else { + // try the same as the deprecated thing above, for what we can assume to be headphones + mAudioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS).any { + when (it.type) { + TYPE_WIRED_HEADSET, TYPE_WIRED_HEADPHONES, TYPE_BLUETOOTH_SCO, TYPE_BLUETOOTH_A2DP, TYPE_USB_HEADSET, TYPE_HEARING_AID, TYPE_BLE_HEADSET -> true + else -> false + } + } + } + return if (listeningThroughHeadphones) { + false + } else InputTypeUtils.isPasswordInputType(editorInfo.inputType) + // Don't speak if the IME is connected to a password field. + } + + /** + * Sets the current auto-correction word and typed word. These may be used + * to provide the user with a spoken description of what auto-correction + * will occur when a key is typed. + * + * @param suggestedWords the list of suggested auto-correction words + */ + fun setAutoCorrection(suggestedWords: SuggestedWords) { + if (suggestedWords.mWillAutoCorrect) { + mAutoCorrectionWord = suggestedWords.getWord(SuggestedWords.INDEX_OF_AUTO_CORRECTION) + val typedWordInfo = suggestedWords.mTypedWordInfo + mTypedWord = typedWordInfo?.mWord + } else { + mAutoCorrectionWord = null + mTypedWord = null + } + } + + /** + * Obtains a description for an auto-correction key, taking into account the + * currently typed word and auto-correction. + * + * @param keyCodeDescription spoken description of the key that will insert + * an auto-correction + * @param shouldObscure whether the key should be obscured + * @return a description including a description of the auto-correction, if + * needed + */ + fun getAutoCorrectionDescription( + keyCodeDescription: String?, shouldObscure: Boolean): String? { + if (!TextUtils.isEmpty(mAutoCorrectionWord)) { + if (!TextUtils.equals(mAutoCorrectionWord, mTypedWord)) { + return if (shouldObscure) { // This should never happen, but just in case... + mContext.getString(R.string.spoken_auto_correct_obscured, + keyCodeDescription) + } else mContext.getString(R.string.spoken_auto_correct, keyCodeDescription, + mTypedWord, mAutoCorrectionWord) + } + } + return keyCodeDescription + } + + /** + * Sends the specified text to the [AccessibilityManager] to be + * spoken. + * + * @param view The source view. + * @param text The text to speak. + */ + fun announceForAccessibility(view: View, text: CharSequence?) { + if (!mAccessibilityManager.isEnabled) { + Log.e(TAG, "Attempted to speak when accessibility was disabled!") + return + } + // The following is a hack to avoid using the heavy-weight TextToSpeech + // class. Instead, we're just forcing a fake AccessibilityEvent into + // the screen reader to make it speak. + val event = obtainEvent() + event.packageName = PACKAGE + event.className = CLASS + event.eventTime = SystemClock.uptimeMillis() + event.isEnabled = true + event.text.add(text) + // Platforms starting at SDK version 16 (Build.VERSION_CODES.JELLY_BEAN) should use + // announce events. + event.eventType = AccessibilityEvent.TYPE_ANNOUNCEMENT + val viewParent = view.parent + if (viewParent == null || viewParent !is ViewGroup) { + Log.e(TAG, "Failed to obtain ViewParent in announceForAccessibility") + return + } + viewParent.requestSendAccessibilityEvent(view, event) + } + + /** + * Handles speaking the "connect a headset to hear passwords" notification + * when connecting to a password field. + * + * @param view The source view. + * @param editorInfo The input connection's editor info attribute. + * @param restarting Whether the connection is being restarted. + */ + fun onStartInputViewInternal(view: View, editorInfo: EditorInfo?, restarting: Boolean) { + if (shouldObscureInput(editorInfo)) { + val text = mContext.getText(R.string.spoken_use_headphones) + announceForAccessibility(view, text) + } + } + + /** + * Sends the specified [AccessibilityEvent] if accessibility is + * enabled. No operation if accessibility is disabled. + * + * @param event The event to send. + */ + fun requestSendAccessibilityEvent(event: AccessibilityEvent?) { + if (mAccessibilityManager.isEnabled) { + mAccessibilityManager.sendAccessibilityEvent(event) + } + } + + companion object { + private val TAG = AccessibilityUtils::class.java.simpleName + private val CLASS = AccessibilityUtils::class.java.name + private val PACKAGE = AccessibilityUtils::class.java.getPackage()!!.name + val instance = AccessibilityUtils() + /* + * Setting this constant to {@code false} will disable all keyboard + * accessibility code, regardless of whether Accessibility is turned on in + * the system settings. It should ONLY be used in the event of an emergency. + */ + private const val ENABLE_ACCESSIBILITY = true + + @JvmStatic + fun init(context: Context) { + if (!ENABLE_ACCESSIBILITY) return + // These only need to be initialized if the kill switch is off. + instance.initInternal(context) + } + + /** + * Returns {@true} if the provided event is a touch exploration (e.g. hover) + * event. This is used to determine whether the event should be processed by + * the touch exploration code within the keyboard. + * + * @param event The event to check. + * @return {@true} is the event is a touch exploration event + */ + fun isTouchExplorationEvent(event: MotionEvent): Boolean { + val action = event.action + return action == MotionEvent.ACTION_HOVER_ENTER || action == MotionEvent.ACTION_HOVER_EXIT || action == MotionEvent.ACTION_HOVER_MOVE + } + + fun obtainEvent(eventType: Int): AccessibilityEvent = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + AccessibilityEvent(eventType) + } else { + @Suppress("deprecation") + AccessibilityEvent.obtain(eventType) + } + + fun obtainEvent(): AccessibilityEvent = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + AccessibilityEvent() + } else { + @Suppress("deprecation") + AccessibilityEvent.obtain() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/helium314/keyboard/accessibility/KeyCodeDescriptionMapper.kt b/app/src/main/java/helium314/keyboard/accessibility/KeyCodeDescriptionMapper.kt new file mode 100644 index 0000000000..cd1841ce67 --- /dev/null +++ b/app/src/main/java/helium314/keyboard/accessibility/KeyCodeDescriptionMapper.kt @@ -0,0 +1,189 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.accessibility + +import android.content.Context +import android.text.TextUtils +import helium314.keyboard.latin.utils.Log +import android.util.SparseIntArray +import android.view.inputmethod.EditorInfo +import helium314.keyboard.keyboard.Key +import helium314.keyboard.keyboard.Keyboard +import helium314.keyboard.keyboard.KeyboardId +import helium314.keyboard.keyboard.internal.keyboard_parser.floris.KeyCode +import helium314.keyboard.latin.R +import helium314.keyboard.latin.common.Constants +import helium314.keyboard.latin.common.StringUtils + +internal class KeyCodeDescriptionMapper private constructor() { + // Sparse array of spoken description resource IDs indexed by key codes + private val mKeyCodeMap = SparseIntArray().apply { + // Special non-character codes defined in Keyboard + put(Constants.CODE_SPACE, R.string.spoken_description_space) + put(KeyCode.DELETE, R.string.spoken_description_delete) + put(Constants.CODE_ENTER, R.string.spoken_description_return) + put(KeyCode.SETTINGS, R.string.spoken_description_settings) + put(KeyCode.SHIFT, R.string.spoken_description_shift) + put(KeyCode.VOICE_INPUT, R.string.spoken_description_mic) + put(KeyCode.SYMBOL_ALPHA, R.string.spoken_description_to_symbol) + put(Constants.CODE_TAB, R.string.spoken_description_tab) + put(KeyCode.LANGUAGE_SWITCH, R.string.spoken_description_language_switch) + put(KeyCode.ACTION_NEXT, R.string.spoken_description_action_next) + put(KeyCode.ACTION_PREVIOUS, R.string.spoken_description_action_previous) + put(KeyCode.EMOJI, R.string.spoken_description_emoji) + // Because the upper-case and lower-case mappings of the following letters is depending on + // the locale, the upper case descriptions should be defined here. The lower case + // descriptions are handled in {@link #getSpokenLetterDescriptionId(Context,int)}. + // U+0049: "I" LATIN CAPITAL LETTER I + // U+0069: "i" LATIN SMALL LETTER I + // U+0130: "İ" LATIN CAPITAL LETTER I WITH DOT ABOVE + // U+0131: "ı" LATIN SMALL LETTER DOTLESS I + put(0x0049, R.string.spoken_letter_0049) + put(0x0130, R.string.spoken_letter_0130) + } + + /** + * Returns the localized description of the action performed by a specified + * key based on the current keyboard state. + * + * @param context The package's context. + * @param keyboard The keyboard on which the key resides. + * @param key The key from which to obtain a description. + * @param shouldObscure {@true} if text (e.g. non-control) characters should be obscured. + * @return a character sequence describing the action performed by pressing the key + */ + fun getDescriptionForKey(context: Context, keyboard: Keyboard?, key: Key, shouldObscure: Boolean): String? { + val code = key.code + if (code == KeyCode.SYMBOL_ALPHA || code == KeyCode.SYMBOL || code == KeyCode.ALPHA) { + val description = getDescriptionForSwitchAlphaSymbol(context, keyboard) + if (description != null) { + return description + } + } + if (code == KeyCode.SHIFT) { + return getDescriptionForShiftKey(context, keyboard) + } + if (code == Constants.CODE_ENTER) { + // The following function returns the correct description in all action and + // regular enter cases, taking care of all modes. + return getDescriptionForActionKey(context, keyboard, key) + } + if (code == KeyCode.MULTIPLE_CODE_POINTS) { + return key.outputText ?: context.getString(R.string.spoken_description_unknown) + } + // Just attempt to speak the description. + if (code != KeyCode.NOT_SPECIFIED) { + // If the key description should be obscured, now is the time to do it. + val isDefinedNonCtrl = (Character.isDefined(code) + && !Character.isISOControl(code)) + if (shouldObscure && isDefinedNonCtrl) { + return context.getString(OBSCURED_KEY_RES_ID) + } + val description = getDescriptionForCodePoint(context, code) + if (description != null) { + return description + } + return if (!TextUtils.isEmpty(key.label)) { + key.label + } else context.getString(R.string.spoken_description_unknown) + } + return null + } + + /** + * Returns a localized character sequence describing what will happen when + * the specified key is pressed based on its key code point. + * + * @param context The package's context. + * @param codePoint The code point from which to obtain a description. + * @return a character sequence describing the code point. + */ + fun getDescriptionForCodePoint(context: Context, codePoint: Int): String? { + // If the key description should be obscured, now is the time to do it. + val index = mKeyCodeMap.indexOfKey(codePoint) + if (index >= 0) { + return context.getString(mKeyCodeMap.valueAt(index)) + } + return if (Character.isDefined(codePoint) && !Character.isISOControl(codePoint)) { + StringUtils.newSingleCodePointString(codePoint) + } else null + } + + companion object { + private val TAG = KeyCodeDescriptionMapper::class.java.simpleName + // The resource ID of the string spoken for obscured keys + private val OBSCURED_KEY_RES_ID = R.string.spoken_description_dot + val instance = KeyCodeDescriptionMapper() + + /** + * Returns a context-specific description for the CODE_SWITCH_ALPHA_SYMBOL + * key or `null` if there is not a description provided for the + * current keyboard context. + * + * @param context The package's context. + * @param keyboard The keyboard on which the key resides. + * @return a character sequence describing the action performed by pressing the key + */ + private fun getDescriptionForSwitchAlphaSymbol(context: Context, keyboard: Keyboard?): String? { + val resId = when (val elementId = keyboard?.mId?.mElementId) { + KeyboardId.ELEMENT_ALPHABET, KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED, KeyboardId.ELEMENT_ALPHABET_MANUAL_SHIFTED, KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED, KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED -> R.string.spoken_description_to_symbol + KeyboardId.ELEMENT_SYMBOLS, KeyboardId.ELEMENT_SYMBOLS_SHIFTED -> R.string.spoken_description_to_alpha + KeyboardId.ELEMENT_PHONE -> R.string.spoken_description_to_symbol + KeyboardId.ELEMENT_PHONE_SYMBOLS -> R.string.spoken_description_to_numeric + else -> { + Log.e(TAG, "Missing description for keyboard element ID:$elementId") + return null + } + } + return context.getString(resId) + } + + /** + * Returns a context-sensitive description of the "Shift" key. + * + * @param context The package's context. + * @param keyboard The keyboard on which the key resides. + * @return A context-sensitive description of the "Shift" key. + */ + private fun getDescriptionForShiftKey(context: Context, keyboard: Keyboard?): String { + val resId: Int = when (keyboard?.mId?.mElementId) { + KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED, KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED -> R.string.spoken_description_caps_lock + KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED, KeyboardId.ELEMENT_ALPHABET_MANUAL_SHIFTED -> R.string.spoken_description_shift_shifted + KeyboardId.ELEMENT_SYMBOLS -> R.string.spoken_description_symbols_shift + KeyboardId.ELEMENT_SYMBOLS_SHIFTED -> R.string.spoken_description_symbols_shift_shifted + else -> R.string.spoken_description_shift + } + return context.getString(resId) + } + + /** + * Returns a context-sensitive description of the "Enter" action key. + * + * @param context The package's context. + * @param keyboard The keyboard on which the key resides. + * @param key The key to describe. + * @return Returns a context-sensitive description of the "Enter" action key. + */ + private fun getDescriptionForActionKey(context: Context, keyboard: Keyboard?, key: Key): String { + // Always use the label, if available. + if (!TextUtils.isEmpty(key.label)) { + return key.label!!.trim { it <= ' ' } + } + val resId = when (keyboard?.mId?.imeAction()) { + EditorInfo.IME_ACTION_SEARCH -> R.string.label_search_key + EditorInfo.IME_ACTION_GO -> R.string.label_go_key + EditorInfo.IME_ACTION_SEND -> R.string.label_send_key + EditorInfo.IME_ACTION_NEXT -> R.string.label_next_key + EditorInfo.IME_ACTION_DONE -> R.string.label_done_key + EditorInfo.IME_ACTION_PREVIOUS -> R.string.label_previous_key + else -> R.string.spoken_description_return + } + return context.getString(resId) + } + } + +} diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/accessibility/KeyboardAccessibilityDelegate.kt b/app/src/main/java/helium314/keyboard/accessibility/KeyboardAccessibilityDelegate.kt similarity index 77% rename from app/src/main/java/org/dslul/openboard/inputmethod/accessibility/KeyboardAccessibilityDelegate.kt rename to app/src/main/java/helium314/keyboard/accessibility/KeyboardAccessibilityDelegate.kt index abf9338a9d..17edf65d1e 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/accessibility/KeyboardAccessibilityDelegate.kt +++ b/app/src/main/java/helium314/keyboard/accessibility/KeyboardAccessibilityDelegate.kt @@ -1,17 +1,23 @@ -package org.dslul.openboard.inputmethod.accessibility +/* + * Copyright (C) 2011 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.accessibility import android.os.SystemClock -import android.util.Log +import helium314.keyboard.latin.utils.Log import android.view.MotionEvent import android.view.View import android.view.accessibility.AccessibilityEvent import androidx.core.view.AccessibilityDelegateCompat import androidx.core.view.ViewCompat import androidx.core.view.accessibility.AccessibilityNodeInfoCompat -import org.dslul.openboard.inputmethod.keyboard.Key -import org.dslul.openboard.inputmethod.keyboard.KeyDetector -import org.dslul.openboard.inputmethod.keyboard.Keyboard -import org.dslul.openboard.inputmethod.keyboard.KeyboardView +import helium314.keyboard.keyboard.Key +import helium314.keyboard.keyboard.KeyDetector +import helium314.keyboard.keyboard.Keyboard +import helium314.keyboard.keyboard.KeyboardView /** * This class represents a delegate that can be registered in a class that extends @@ -25,12 +31,14 @@ import org.dslul.openboard.inputmethod.keyboard.KeyboardView * * @param The keyboard view class type. */ -open class KeyboardAccessibilityDelegate(protected val mKeyboardView: KV, protected val mKeyDetector: KeyDetector) : AccessibilityDelegateCompat() { +open class KeyboardAccessibilityDelegate( + protected val mKeyboardView: KV, + protected val mKeyDetector: KeyDetector + ) : AccessibilityDelegateCompat() { private var mKeyboard: Keyboard? = null private var mAccessibilityNodeProvider: KeyboardAccessibilityNodeProvider? = null private var mLastHoverKey: Key? = null - protected open var lastHoverKey: Key? get() = mLastHoverKey set(key) { @@ -39,20 +47,19 @@ open class KeyboardAccessibilityDelegate(protected val mKeyb /** * Called when the keyboard layout changes. * - * * **Note:** This method will be called even if accessibility is not * enabled. - * @param keyboard The keyboard that is being set to the wrapping view. + * [keyboard]: The keyboard that is being set to the wrapping view. */ open var keyboard: Keyboard? - get() = mKeyboard - set(keyboard) { - if (keyboard == null) { - return + get() = mKeyboard + set(keyboard) { + if (keyboard == null) { + return + } + mAccessibilityNodeProvider?.setKeyboard(keyboard) + mKeyboard = keyboard } - mAccessibilityNodeProvider?.setKeyboard(keyboard) - mKeyboard = keyboard - } /** * Sends a window state change event with the specified string resource id. @@ -63,7 +70,7 @@ open class KeyboardAccessibilityDelegate(protected val mKeyb if (resId == 0) { return } - val context = mKeyboardView!!.context + val context = mKeyboardView.context sendWindowStateChanged(context.getString(resId)) } @@ -73,9 +80,8 @@ open class KeyboardAccessibilityDelegate(protected val mKeyb * @param text The text to send with the event. */ protected fun sendWindowStateChanged(text: String?) { - val stateChange = AccessibilityEvent.obtain( - AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) - mKeyboardView!!.onInitializeAccessibilityEvent(stateChange) + val stateChange = AccessibilityUtils.obtainEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) + mKeyboardView.onInitializeAccessibilityEvent(stateChange) stateChange.text.add(text) stateChange.contentDescription = null val parent = mKeyboardView.parent @@ -92,19 +98,21 @@ open class KeyboardAccessibilityDelegate(protected val mKeyb */ override fun getAccessibilityNodeProvider(host: View): KeyboardAccessibilityNodeProvider { return accessibilityNodeProvider - }// Instantiate the provide only when requested. Since the system -// will call this method multiple times it is a good practice to -// cache the provider instance. + } + // Instantiate the provide only when requested. Since the system + // will call this method multiple times it is a good practice to + // cache the provider instance. /** * @return A lazily-instantiated node provider for this view delegate. */ protected val accessibilityNodeProvider: KeyboardAccessibilityNodeProvider - get() { // Instantiate the provide only when requested. Since the system -// will call this method multiple times it is a good practice to -// cache the provider instance. - return mAccessibilityNodeProvider ?: KeyboardAccessibilityNodeProvider(mKeyboardView, this) - } + get() { + // Instantiate the provide only when requested. Since the system + // will call this method multiple times it is a good practice to + // cache the provider instance. + return mAccessibilityNodeProvider ?: KeyboardAccessibilityNodeProvider(mKeyboardView, this) + } /** * Get a key that a hover event is on. @@ -178,7 +186,7 @@ open class KeyboardAccessibilityDelegate(protected val mKeyb lastKey?.let { onHoverExitFrom(it) } val key = getHoverKeyOf(event) // Make sure we're not getting an EXIT event because the user slid -// off the keyboard area, then force a key press. + // off the keyboard area, then force a key press. key?.let { performClickOn(it) onHoverExitFrom(it) } mLastHoverKey = null @@ -209,7 +217,7 @@ open class KeyboardAccessibilityDelegate(protected val mKeyb val eventTime = SystemClock.uptimeMillis() val touchEvent = MotionEvent.obtain( eventTime, eventTime, touchAction, x.toFloat(), y.toFloat(), 0 /* metaState */) - mKeyboardView!!.onTouchEvent(touchEvent) + mKeyboardView.onTouchEvent(touchEvent) touchEvent.recycle() } @@ -223,7 +231,7 @@ open class KeyboardAccessibilityDelegate(protected val mKeyb Log.d(TAG, "onHoverEnterTo: key=$key") } key.onPressed() - mKeyboardView!!.invalidateKey(key) + mKeyboardView.invalidateKey(key) val provider = accessibilityNodeProvider provider.onHoverEnterTo(key) provider.performActionForKey(key, AccessibilityNodeInfoCompat.ACTION_ACCESSIBILITY_FOCUS) @@ -246,7 +254,7 @@ open class KeyboardAccessibilityDelegate(protected val mKeyb Log.d(TAG, "onHoverExitFrom: key=$key") } key.onReleased() - mKeyboardView!!.invalidateKey(key) + mKeyboardView.invalidateKey(key) val provider = accessibilityNodeProvider provider.onHoverExitFrom(key) } @@ -256,17 +264,18 @@ open class KeyboardAccessibilityDelegate(protected val mKeyb * * @param key A key to be long pressed on. */ - open fun performLongClickOn(key: Key) { // A extended class should override this method to implement long press. + open fun performLongClickOn(key: Key) { + // A extended class should override this method to implement long press. } companion object { - private val TAG = KeyboardAccessibilityDelegate::class.java.simpleName - const val DEBUG_HOVER = false - const val HOVER_EVENT_POINTER_ID = 0 + private val TAG = KeyboardAccessibilityDelegate::class.java.simpleName + const val DEBUG_HOVER = false + const val HOVER_EVENT_POINTER_ID = 0 } init { // Ensure that the view has an accessibility delegate. - ViewCompat.setAccessibilityDelegate(mKeyboardView!!, this) + ViewCompat.setAccessibilityDelegate(mKeyboardView, this) // todo: see the warning, this may be bad } } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.kt b/app/src/main/java/helium314/keyboard/accessibility/KeyboardAccessibilityNodeProvider.kt similarity index 75% rename from app/src/main/java/org/dslul/openboard/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.kt rename to app/src/main/java/helium314/keyboard/accessibility/KeyboardAccessibilityNodeProvider.kt index 9154e3d3ca..15dcbb97b0 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.kt +++ b/app/src/main/java/helium314/keyboard/accessibility/KeyboardAccessibilityNodeProvider.kt @@ -1,19 +1,26 @@ -package org.dslul.openboard.inputmethod.accessibility +/* + * Copyright (C) 2012 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.accessibility import android.graphics.Rect import android.os.Bundle -import android.util.Log +import helium314.keyboard.latin.utils.Log import android.view.View import android.view.accessibility.AccessibilityEvent +import android.view.accessibility.AccessibilityRecord import androidx.core.view.ViewCompat import androidx.core.view.accessibility.AccessibilityEventCompat import androidx.core.view.accessibility.AccessibilityNodeInfoCompat import androidx.core.view.accessibility.AccessibilityNodeProviderCompat -import org.dslul.openboard.inputmethod.keyboard.Key -import org.dslul.openboard.inputmethod.keyboard.Keyboard -import org.dslul.openboard.inputmethod.keyboard.KeyboardView -import org.dslul.openboard.inputmethod.latin.common.CoordinateUtils -import org.dslul.openboard.inputmethod.latin.settings.Settings +import helium314.keyboard.keyboard.Key +import helium314.keyboard.keyboard.Keyboard +import helium314.keyboard.keyboard.KeyboardView +import helium314.keyboard.latin.common.CoordinateUtils +import helium314.keyboard.latin.settings.Settings /** * Exposes a virtual view sub-tree for [KeyboardView] and generates @@ -26,10 +33,14 @@ import org.dslul.openboard.inputmethod.latin.settings.Settings * virtual views, thus conveying their logical structure. * */ -class KeyboardAccessibilityNodeProvider(keyboardView: KV, - delegate: KeyboardAccessibilityDelegate) : AccessibilityNodeProviderCompat() { - private val mKeyCodeDescriptionMapper: KeyCodeDescriptionMapper - private val mAccessibilityUtils: AccessibilityUtils +class KeyboardAccessibilityNodeProvider( + /** The keyboard view to provide an accessibility node info. */ + private val mKeyboardView: KV, + /** The accessibility delegate. */ + private val mDelegate: KeyboardAccessibilityDelegate +) : AccessibilityNodeProviderCompat() { + private val mKeyCodeDescriptionMapper: KeyCodeDescriptionMapper = KeyCodeDescriptionMapper.instance + private val mAccessibilityUtils: AccessibilityUtils = AccessibilityUtils.instance /** Temporary rect used to calculate in-screen bounds. */ private val mTempBoundsInScreen = Rect() /** The parent view's cached on-screen location. */ @@ -38,12 +49,8 @@ class KeyboardAccessibilityNodeProvider(keyboardView: KV, private var mAccessibilityFocusedView = UNDEFINED /** The virtual view identifier for the hovering node. */ private var mHoveringNodeId = UNDEFINED - /** The keyboard view to provide an accessibility node info. */ - private val mKeyboardView: KV - /** The accessibility delegate. */ - private val mDelegate: KeyboardAccessibilityDelegate /** The current keyboard. */ - private var mKeyboard: Keyboard? = null + private var mKeyboard: Keyboard? = mKeyboardView.keyboard /** * Sets the keyboard represented by this node provider. @@ -55,10 +62,8 @@ class KeyboardAccessibilityNodeProvider(keyboardView: KV, } private fun getKeyOf(virtualViewId: Int): Key? { - if (mKeyboard == null) { - return null - } - val sortedKeys = mKeyboard!!.sortedKeys + val keyboard = mKeyboard ?: return null + val sortedKeys = keyboard.sortedKeys // Use a virtual view id as an index of the sorted keys list. return if (virtualViewId >= 0 && virtualViewId < sortedKeys.size) { sortedKeys[virtualViewId] @@ -66,10 +71,8 @@ class KeyboardAccessibilityNodeProvider(keyboardView: KV, } private fun getVirtualViewIdOf(key: Key): Int { - if (mKeyboard == null) { - return View.NO_ID - } - val sortedKeys = mKeyboard!!.sortedKeys + val keyboard = mKeyboard ?: return View.NO_ID + val sortedKeys = keyboard.sortedKeys val size = sortedKeys.size for (index in 0 until size) { if (sortedKeys[index] === key) { // Use an index of the sorted keys list as a virtual view id. @@ -91,12 +94,12 @@ class KeyboardAccessibilityNodeProvider(keyboardView: KV, fun createAccessibilityEvent(key: Key, eventType: Int): AccessibilityEvent { val virtualViewId = getVirtualViewIdOf(key) val keyDescription = getKeyDescription(key) - val event = AccessibilityEvent.obtain(eventType) - event.packageName = mKeyboardView!!.context.packageName + val event = AccessibilityUtils.obtainEvent(eventType) + event.packageName = mKeyboardView.context.packageName event.className = key.javaClass.name event.contentDescription = keyDescription event.isEnabled = true - val record = AccessibilityEventCompat.asRecord(event) + val record: AccessibilityRecord = event record.setSource(mKeyboardView, virtualViewId) return event } @@ -107,20 +110,20 @@ class KeyboardAccessibilityNodeProvider(keyboardView: KV, return } // Start hovering on the key. Because our accessibility model is lift-to-type, we should -// report the node info without click and long click actions to avoid unnecessary -// announcements. + // report the node info without click and long click actions to avoid unnecessary + // announcements. mHoveringNodeId = id // Invalidate the node info of the key. - sendAccessibilityEventForKey(key, AccessibilityEventCompat.TYPE_WINDOW_CONTENT_CHANGED) - sendAccessibilityEventForKey(key, AccessibilityEventCompat.TYPE_VIEW_HOVER_ENTER) + sendAccessibilityEventForKey(key, AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED) + sendAccessibilityEventForKey(key, AccessibilityEvent.TYPE_VIEW_HOVER_ENTER) } fun onHoverExitFrom(key: Key) { mHoveringNodeId = UNDEFINED // Invalidate the node info of the key to be able to revert the change we have done -// in {@link #onHoverEnterTo(Key)}. - sendAccessibilityEventForKey(key, AccessibilityEventCompat.TYPE_WINDOW_CONTENT_CHANGED) - sendAccessibilityEventForKey(key, AccessibilityEventCompat.TYPE_VIEW_HOVER_EXIT) + // in {@link #onHoverEnterTo(Key)}. + sendAccessibilityEventForKey(key, AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED) + sendAccessibilityEventForKey(key, AccessibilityEvent.TYPE_VIEW_HOVER_EXIT) } /** @@ -150,13 +153,15 @@ class KeyboardAccessibilityNodeProvider(keyboardView: KV, if (virtualViewId == UNDEFINED) { return null } - if (virtualViewId == View.NO_ID) { // We are requested to create an AccessibilityNodeInfo describing -// this View, i.e. the root of the virtual sub-tree. + val keyboard = mKeyboard ?: return null + if (virtualViewId == View.NO_ID) { + // We are requested to create an AccessibilityNodeInfo describing + // this View, i.e. the root of the virtual sub-tree. val rootInfo = AccessibilityNodeInfoCompat.obtain(mKeyboardView) - ViewCompat.onInitializeAccessibilityNodeInfo(mKeyboardView!!, rootInfo) + ViewCompat.onInitializeAccessibilityNodeInfo(mKeyboardView, rootInfo) updateParentLocation() // Add the virtual children of the root View. - val sortedKeys = mKeyboard!!.sortedKeys + val sortedKeys = keyboard.sortedKeys val size = sortedKeys.size for (index in 0 until size) { val key = sortedKeys[index] @@ -178,12 +183,11 @@ class KeyboardAccessibilityNodeProvider(keyboardView: KV, val boundsInParent = key.hitBox // Calculate the key's in-screen bounds. mTempBoundsInScreen.set(boundsInParent) - mTempBoundsInScreen.offset( - CoordinateUtils.x(mParentLocation), CoordinateUtils.y(mParentLocation)) + mTempBoundsInScreen.offset(CoordinateUtils.x(mParentLocation), CoordinateUtils.y(mParentLocation)) val boundsInScreen = mTempBoundsInScreen // Obtain and initialize an AccessibilityNodeInfo with information about the virtual view. val info = AccessibilityNodeInfoCompat.obtain() - info.packageName = mKeyboardView!!.context.packageName + info.packageName = mKeyboardView.context.packageName info.className = key.javaClass.name info.contentDescription = keyDescription info.setBoundsInParent(boundsInParent) @@ -193,7 +197,7 @@ class KeyboardAccessibilityNodeProvider(keyboardView: KV, info.isEnabled = key.isEnabled info.isVisibleToUser = true // Don't add ACTION_CLICK and ACTION_LONG_CLOCK actions while hovering on the key. -// See {@link #onHoverEnterTo(Key)} and {@link #onHoverExitFrom(Key)}. + // See {@link #onHoverEnterTo(Key)} and {@link #onHoverExitFrom(Key)}. if (virtualViewId != mHoveringNodeId) { info.addAction(AccessibilityNodeInfoCompat.ACTION_CLICK) if (key.isLongPressEnabled) { @@ -225,14 +229,12 @@ class KeyboardAccessibilityNodeProvider(keyboardView: KV, return when (action) { AccessibilityNodeInfoCompat.ACTION_ACCESSIBILITY_FOCUS -> { mAccessibilityFocusedView = getVirtualViewIdOf(key) - sendAccessibilityEventForKey( - key, AccessibilityEventCompat.TYPE_VIEW_ACCESSIBILITY_FOCUSED) + sendAccessibilityEventForKey(key, AccessibilityEventCompat.TYPE_VIEW_ACCESSIBILITY_FOCUSED) true } AccessibilityNodeInfoCompat.ACTION_CLEAR_ACCESSIBILITY_FOCUS -> { mAccessibilityFocusedView = UNDEFINED - sendAccessibilityEventForKey( - key, AccessibilityEventCompat.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED) + sendAccessibilityEventForKey(key, AccessibilityEventCompat.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED) true } AccessibilityNodeInfoCompat.ACTION_CLICK -> { @@ -267,14 +269,13 @@ class KeyboardAccessibilityNodeProvider(keyboardView: KV, * @return The context-specific description of the key. */ private fun getKeyDescription(key: Key): String? { - val editorInfo = mKeyboard!!.mId.mEditorInfo + val editorInfo = mKeyboard?.mId?.mEditorInfo val shouldObscure = mAccessibilityUtils.shouldObscureInput(editorInfo) - val currentSettings = Settings.getInstance().current + val currentSettings = Settings.getValues() val keyCodeDescription = mKeyCodeDescriptionMapper.getDescriptionForKey( - mKeyboardView!!.context, mKeyboard, key, shouldObscure) + mKeyboardView.context, mKeyboard, key, shouldObscure) return if (currentSettings.isWordSeparator(key.code)) { - mAccessibilityUtils.getAutoCorrectionDescription( - keyCodeDescription, shouldObscure) + mAccessibilityUtils.getAutoCorrectionDescription(keyCodeDescription, shouldObscure) } else keyCodeDescription } @@ -282,7 +283,7 @@ class KeyboardAccessibilityNodeProvider(keyboardView: KV, * Updates the parent's on-screen location. */ private fun updateParentLocation() { - mKeyboardView!!.getLocationOnScreen(mParentLocation) + mKeyboardView.getLocationOnScreen(mParentLocation) } companion object { @@ -291,13 +292,4 @@ class KeyboardAccessibilityNodeProvider(keyboardView: KV, private const val UNDEFINED = Int.MAX_VALUE } - init { - mKeyCodeDescriptionMapper = KeyCodeDescriptionMapper.Companion.instance - mAccessibilityUtils = AccessibilityUtils.Companion.instance - mKeyboardView = keyboardView - mDelegate = delegate - // Since this class is constructed lazily, we might not get a subsequent -// call to setKeyboard() and therefore need to call it now. - setKeyboard(keyboardView!!.keyboard) - } } diff --git a/app/src/main/java/helium314/keyboard/accessibility/MainKeyboardAccessibilityDelegate.kt b/app/src/main/java/helium314/keyboard/accessibility/MainKeyboardAccessibilityDelegate.kt new file mode 100644 index 0000000000..6a4283494e --- /dev/null +++ b/app/src/main/java/helium314/keyboard/accessibility/MainKeyboardAccessibilityDelegate.kt @@ -0,0 +1,260 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.accessibility + +import android.graphics.Rect +import android.os.SystemClock +import helium314.keyboard.latin.utils.Log +import android.util.SparseIntArray +import android.view.MotionEvent +import helium314.keyboard.accessibility.AccessibilityLongPressTimer.LongPressTimerCallback +import helium314.keyboard.keyboard.* +import helium314.keyboard.latin.R +import helium314.keyboard.latin.utils.SubtypeLocaleUtils.displayName + +/** + * This class represents a delegate that can be registered in [MainKeyboardView] to enhance + * accessibility support via composition rather via inheritance. + */ +class MainKeyboardAccessibilityDelegate( + mainKeyboardView: MainKeyboardView, + keyDetector: KeyDetector +) : KeyboardAccessibilityDelegate(mainKeyboardView, keyDetector), LongPressTimerCallback { + /** The most recently set keyboard mode. */ + private var mLastKeyboardMode = KEYBOARD_IS_HIDDEN + // The rectangle region to ignore hover events. + private val mBoundsToIgnoreHoverEvent = Rect() + private val mAccessibilityLongPressTimer = AccessibilityLongPressTimer(this /* callback */, mainKeyboardView.context) + + // Since this method is called even when accessibility is off, make sure + // to check the state before announcing anything. + // Announce the language name only when the language is changed. + // Announce the mode only when the mode is changed. + // Announce the keyboard type only when the type is changed. + /** + * {@inheritDoc} + */ + override var keyboard: Keyboard? + get() = super.keyboard + set(keyboard) { + if (keyboard == null) { + return + } + val lastKeyboard = super.keyboard + super.keyboard = keyboard + val lastKeyboardMode = mLastKeyboardMode + mLastKeyboardMode = keyboard.mId.mMode + // Since this method is called even when accessibility is off, make sure + // to check the state before announcing anything. + if (!AccessibilityUtils.instance.isAccessibilityEnabled) { + return + } + // Announce the language name only when the language is changed. + if (lastKeyboard == null || keyboard.mId.mSubtype != lastKeyboard.mId.mSubtype) { + announceKeyboardLanguage(keyboard) + return + } + // Announce the mode only when the mode is changed. + if (keyboard.mId.mMode != lastKeyboardMode) { + announceKeyboardMode(keyboard) + return + } + // Announce the keyboard type only when the type is changed. + if (keyboard.mId.mElementId != lastKeyboard.mId.mElementId) { + announceKeyboardType(keyboard, lastKeyboard) + return + } + } + + /** + * Called when the keyboard is hidden and accessibility is enabled. + */ + fun onHideWindow() { + if (mLastKeyboardMode != KEYBOARD_IS_HIDDEN) { + announceKeyboardHidden() + } + mLastKeyboardMode = KEYBOARD_IS_HIDDEN + } + + /** + * Announces which language of keyboard is being displayed. + * + * @param keyboard The new keyboard. + */ + private fun announceKeyboardLanguage(keyboard: Keyboard) { + sendWindowStateChanged(keyboard.mId.mSubtype.rawSubtype.displayName()) + } + + /** + * Announces which type of keyboard is being displayed. + * If the keyboard type is unknown, no announcement is made. + * + * @param keyboard The new keyboard. + */ + private fun announceKeyboardMode(keyboard: Keyboard) { + val context = mKeyboardView.context + val modeTextResId = KEYBOARD_MODE_RES_IDS[keyboard.mId.mMode] + if (modeTextResId == 0) { + return + } + val modeText = context.getString(modeTextResId) + val text = context.getString(R.string.announce_keyboard_mode, modeText) + sendWindowStateChanged(text) + } + + /** + * Announces which type of keyboard is being displayed. + * + * @param keyboard The new keyboard. + * @param lastKeyboard The last keyboard. + */ + private fun announceKeyboardType(keyboard: Keyboard, lastKeyboard: Keyboard) { + val lastElementId = lastKeyboard.mId.mElementId + val resId = when (keyboard.mId.mElementId) { + KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED, KeyboardId.ELEMENT_ALPHABET -> { + if (lastElementId == KeyboardId.ELEMENT_ALPHABET + || lastElementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) { + // Transition between alphabet mode and automatic shifted mode should be silently + // ignored because it can be determined by each key's talk back announce. + return + } + R.string.spoken_description_mode_alpha + } + KeyboardId.ELEMENT_ALPHABET_MANUAL_SHIFTED -> { + if (lastElementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) { + // Resetting automatic shifted mode by pressing the shift key causes the transition + // from automatic shifted to manual shifted that should be silently ignored. + return + } + R.string.spoken_description_shiftmode_on + } + KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED -> { + if (lastElementId == KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED) { + // Resetting caps locked mode by pressing the shift key causes the transition + // from shift locked to shift lock shifted that should be silently ignored. + return + } + R.string.spoken_description_shiftmode_locked + } + KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED -> R.string.spoken_description_shiftmode_locked + KeyboardId.ELEMENT_SYMBOLS -> R.string.spoken_description_mode_symbol + KeyboardId.ELEMENT_SYMBOLS_SHIFTED -> R.string.spoken_description_mode_symbol_shift + KeyboardId.ELEMENT_PHONE -> R.string.spoken_description_mode_phone + KeyboardId.ELEMENT_PHONE_SYMBOLS -> R.string.spoken_description_mode_phone_shift + else -> return + } + sendWindowStateChanged(resId) + } + + /** + * Announces that the keyboard has been hidden. + */ + private fun announceKeyboardHidden() { + sendWindowStateChanged(R.string.announce_keyboard_hidden) + } + + override fun performClickOn(key: Key) { + val x = key.hitBox.centerX() + val y = key.hitBox.centerY() + if (DEBUG_HOVER) { + Log.d(TAG, "performClickOn: key=" + key + + " inIgnoreBounds=" + mBoundsToIgnoreHoverEvent.contains(x, y)) + } + if (mBoundsToIgnoreHoverEvent.contains(x, y)) { + // This hover exit event points to the key that should be ignored. + // Clear the ignoring region to handle further hover events. + mBoundsToIgnoreHoverEvent.setEmpty() + return + } + super.performClickOn(key) + } + + override fun onHoverEnterTo(key: Key) { + val x = key.hitBox.centerX() + val y = key.hitBox.centerY() + if (DEBUG_HOVER) { + Log.d(TAG, "onHoverEnterTo: key=" + key + + " inIgnoreBounds=" + mBoundsToIgnoreHoverEvent.contains(x, y)) + } + mAccessibilityLongPressTimer.cancelLongPress() + if (mBoundsToIgnoreHoverEvent.contains(x, y)) { + return + } + // This hover enter event points to the key that isn't in the ignoring region. + // Further hover events should be handled. + mBoundsToIgnoreHoverEvent.setEmpty() + super.onHoverEnterTo(key) + if (key.isLongPressEnabled) { + mAccessibilityLongPressTimer.startLongPress(key) + } + } + + override fun onHoverExitFrom(key: Key) { + val x = key.hitBox.centerX() + val y = key.hitBox.centerY() + if (DEBUG_HOVER) { + Log.d(TAG, "onHoverExitFrom: key=" + key + + " inIgnoreBounds=" + mBoundsToIgnoreHoverEvent.contains(x, y)) + } + mAccessibilityLongPressTimer.cancelLongPress() + super.onHoverExitFrom(key) + } + + override fun performLongClickOn(key: Key) { + if (DEBUG_HOVER) { + Log.d(TAG, "performLongClickOn: key=$key") + } + val tracker = PointerTracker.getPointerTracker(HOVER_EVENT_POINTER_ID) + val eventTime = SystemClock.uptimeMillis() + val x = key.hitBox.centerX() + val y = key.hitBox.centerY() + val downEvent = MotionEvent.obtain(eventTime, eventTime, MotionEvent.ACTION_DOWN, x.toFloat(), y.toFloat(), 0) + // Inject a fake down event to {@link PointerTracker} to handle a long press correctly. + tracker.processMotionEvent(downEvent, mKeyDetector) + downEvent.recycle() + // Invoke {@link PointerTracker#onLongPressed()} as if a long press timeout has passed. + tracker.onLongPressed() + // If {@link Key#hasNoPanelAutoPopupKeys()} is true (such as "0 +" key on the phone layout) + // or a key invokes IME switcher dialog, we should just ignore the next + // {@link #onRegisterHoverKey(Key,MotionEvent)}. It can be determined by whether + // {@link PointerTracker} is in operation or not. + if (tracker.isInOperation) { + // This long press shows a popup keys keyboard and further hover events should be + // handled. + mBoundsToIgnoreHoverEvent.setEmpty() + return + } + // This long press has handled at {@link MainKeyboardView#onLongPress(PointerTracker)}. + // We should ignore further hover events on this key. + mBoundsToIgnoreHoverEvent.set(key.hitBox) + if (key.hasNoPanelAutoPopupKey()) { + // This long press has registered a code point without showing a popup keys keyboard. + // We should talk back the code point if possible. + val codePointOfNoPanelAutoPopupKey = key.popupKeys?.get(0)?.mCode ?: return + val text: String = KeyCodeDescriptionMapper.instance.getDescriptionForCodePoint( + mKeyboardView.context, codePointOfNoPanelAutoPopupKey) ?: return + sendWindowStateChanged(text) + } + } + + companion object { + private val TAG = MainKeyboardAccessibilityDelegate::class.java.simpleName + /** Map of keyboard modes to resource IDs. */ + private val KEYBOARD_MODE_RES_IDS = SparseIntArray().apply { + put(KeyboardId.MODE_DATE, R.string.keyboard_mode_date) + put(KeyboardId.MODE_DATETIME, R.string.keyboard_mode_date_time) + put(KeyboardId.MODE_EMAIL, R.string.keyboard_mode_email) + put(KeyboardId.MODE_IM, R.string.keyboard_mode_im) + put(KeyboardId.MODE_NUMBER, R.string.keyboard_mode_number) + put(KeyboardId.MODE_PHONE, R.string.keyboard_mode_phone) + put(KeyboardId.MODE_TEXT, R.string.keyboard_mode_text) + put(KeyboardId.MODE_TIME, R.string.keyboard_mode_time) + put(KeyboardId.MODE_URL, R.string.keyboard_mode_url) + } + private const val KEYBOARD_IS_HIDDEN = -1 + } +} \ No newline at end of file diff --git a/app/src/main/java/helium314/keyboard/accessibility/PopupKeysKeyboardAccessibilityDelegate.kt b/app/src/main/java/helium314/keyboard/accessibility/PopupKeysKeyboardAccessibilityDelegate.kt new file mode 100644 index 0000000000..a35133395a --- /dev/null +++ b/app/src/main/java/helium314/keyboard/accessibility/PopupKeysKeyboardAccessibilityDelegate.kt @@ -0,0 +1,103 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.accessibility + +import android.graphics.Rect +import helium314.keyboard.latin.utils.Log +import android.view.MotionEvent +import helium314.keyboard.keyboard.KeyDetector +import helium314.keyboard.keyboard.PopupKeysKeyboardView +import helium314.keyboard.keyboard.PointerTracker + +/** + * This class represents a delegate that can be registered in [PopupKeysKeyboardView] to + * enhance accessibility support via composition rather via inheritance. + */ +class PopupKeysKeyboardAccessibilityDelegate( + popupKeysKeyboardView: PopupKeysKeyboardView, + keyDetector: KeyDetector +) : KeyboardAccessibilityDelegate(popupKeysKeyboardView, keyDetector) { + private val mPopupKeysKeyboardValidBounds = Rect() + private var mOpenAnnounceResId = 0 + private var mCloseAnnounceResId = 0 + fun setOpenAnnounce(resId: Int) { + mOpenAnnounceResId = resId + } + + fun setCloseAnnounce(resId: Int) { + mCloseAnnounceResId = resId + } + + fun onShowPopupKeysKeyboard() { + sendWindowStateChanged(mOpenAnnounceResId) + } + + fun onDismissPopupKeysKeyboard() { + sendWindowStateChanged(mCloseAnnounceResId) + } + + override fun onHoverEnter(event: MotionEvent) { + if (DEBUG_HOVER) { + Log.d(TAG, "onHoverEnter: key=" + getHoverKeyOf(event)) + } + super.onHoverEnter(event) + val actionIndex = event.actionIndex + val x = event.getX(actionIndex).toInt() + val y = event.getY(actionIndex).toInt() + val pointerId = event.getPointerId(actionIndex) + val eventTime = event.eventTime + mKeyboardView.onDownEvent(x, y, pointerId, eventTime) + } + + override fun onHoverMove(event: MotionEvent) { + super.onHoverMove(event) + val actionIndex = event.actionIndex + val x = event.getX(actionIndex).toInt() + val y = event.getY(actionIndex).toInt() + val pointerId = event.getPointerId(actionIndex) + val eventTime = event.eventTime + mKeyboardView.onMoveEvent(x, y, pointerId, eventTime) + } + + override fun onHoverExit(event: MotionEvent) { + val lastKey = lastHoverKey + if (DEBUG_HOVER) { + Log.d(TAG, "onHoverExit: key=" + getHoverKeyOf(event) + " last=" + lastKey) + } + if (lastKey != null) { + super.onHoverExitFrom(lastKey) + } + lastHoverKey = null + val actionIndex = event.actionIndex + val x = event.getX(actionIndex).toInt() + val y = event.getY(actionIndex).toInt() + val pointerId = event.getPointerId(actionIndex) + val eventTime = event.eventTime + // A hover exit event at one pixel width or height area on the edges of popup keys keyboard + // are treated as closing. + mPopupKeysKeyboardValidBounds[0, 0, mKeyboardView.width] = mKeyboardView.height + mPopupKeysKeyboardValidBounds.inset(CLOSING_INSET_IN_PIXEL, CLOSING_INSET_IN_PIXEL) + if (mPopupKeysKeyboardValidBounds.contains(x, y)) { + // Invoke {@link PopupKeysKeyboardView#onUpEvent(int,int,int,long)} as if this hover + // exit event selects a key. + mKeyboardView.onUpEvent(x, y, pointerId, eventTime) + // TODO: Should fix this reference. This is a hack to clear the state of + // {@link PointerTracker}. + PointerTracker.dismissAllPopupKeysPanels() + return + } + // Close the popup keys keyboard. + // TODO: Should fix this reference. This is a hack to clear the state of + // {@link PointerTracker}. + PointerTracker.dismissAllPopupKeysPanels() + } + + companion object { + private val TAG = PopupKeysKeyboardAccessibilityDelegate::class.java.simpleName + private const val CLOSING_INSET_IN_PIXEL = 1 + } +} diff --git a/app/src/main/java/helium314/keyboard/compat/AppWorkarounds.kt b/app/src/main/java/helium314/keyboard/compat/AppWorkarounds.kt new file mode 100644 index 0000000000..aa00c05cf1 --- /dev/null +++ b/app/src/main/java/helium314/keyboard/compat/AppWorkarounds.kt @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: GPL-3.0-only +package helium314.keyboard.compat + +import android.text.InputType +import android.view.inputmethod.EditorInfo +import helium314.keyboard.latin.utils.InputTypeUtils + +object AppWorkarounds { + fun adjustInputType(inputType: Int, packageName: String?): Int { + return when (packageName) { + "org.mozilla.fennec_fdroid", "org.mozilla.fenix", "org.mozilla.firefox_beta", "org.mozilla.focus", + "org.mozilla.klar", "org.mozilla.firefox", "org.ironfoxoss.ironfox", "net.waterfox.android.release", + "io.github.forkmaintainers.iceraven", "com.zen.web.tools.browser" -> { + // Firefox and forks (assuming all of them) don't set these flags, so we want to force them for most text fields on websites + // missing TYPE_TEXT_VARIATION_WEB_EDIT_TEXT is strange, considering all text fields on web pages should set it + // missing TYPE_TEXT_FLAG_NO_SUGGESTIONS is horrible, because JS does not interact properly with composing region + if (inputType and InputType.TYPE_MASK_CLASS != InputType.TYPE_CLASS_TEXT) return inputType + if (inputType and InputType.TYPE_MASK_VARIATION != 0) return inputType // if any variation is specified we leave it (URL, email, password, ...) + // looks like most (all?) non-password text fields on websites are either IME_MULTI_LINE or IME_MULTI_LINE + AUTO_CORRECT + CAP_SENTENCES + if (inputType and InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE == 0) return inputType + // for the AUTO_CORRECT flag we assume suggestions are safe and only add WEB_EDIT_TEXT + if (inputType and InputType.TYPE_TEXT_FLAG_AUTO_CORRECT == 0) return inputType or InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT + // for all others we also add NO_SUGGESTIONS to avoid JS messing with the composing text + inputType or InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS or InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT + } + else -> inputType + } + } + + fun adjustImeOptions(imeOptions: Int, packageName: String?): Int { + return when (packageName) { + // Looks like Google decided to set inputType multiline and imeOptions no_enter_action + // on their search bar in Pixel launcher, and all keyboards ignore the flags because otherwise + // they would actually not perform the search action on action key. See https://github.com/Helium314/HeliBoard/issues/1989 + "com.google.android.apps.nexuslauncher" -> if (imeOptions and EditorInfo.IME_FLAG_NO_ENTER_ACTION != 0) imeOptions - EditorInfo.IME_FLAG_NO_ENTER_ACTION else imeOptions + else -> imeOptions + } + } +} diff --git a/app/src/main/java/helium314/keyboard/compat/ClipboardManagerCompat.java b/app/src/main/java/helium314/keyboard/compat/ClipboardManagerCompat.java new file mode 100644 index 0000000000..325bfd73d5 --- /dev/null +++ b/app/src/main/java/helium314/keyboard/compat/ClipboardManagerCompat.java @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: GPL-3.0-only + +package helium314.keyboard.compat; + +import android.content.ClipData; +import android.content.ClipDescription; +import android.content.ClipboardManager; +import android.os.Build; + +public class ClipboardManagerCompat { + + public static void clearPrimaryClip(ClipboardManager cm) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + try { + cm.clearPrimaryClip(); + } catch (Exception e) { + // workaround for system-caused crash in https://github.com/Helium314/HeliBoard/issues/203 + cm.setPrimaryClip(ClipData.newPlainText("", "")); + } + } else { + cm.setPrimaryClip(ClipData.newPlainText("", "")); + } + } + + public static Long getClipTimestamp(ClipData cd) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + final long timestamp = cd.getDescription().getTimestamp(); + if (timestamp > 0) // timestamp is 0 if not set + return timestamp; + } + return System.currentTimeMillis(); + } + + public static Boolean getClipSensitivity(final ClipDescription cd) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + return cd != null && cd.getExtras() != null && cd.getExtras().getBoolean("android.content.extra.IS_SENSITIVE"); + } + return null; // can't determine + } +} diff --git a/app/src/main/java/helium314/keyboard/compat/ConfigurationCompat.kt b/app/src/main/java/helium314/keyboard/compat/ConfigurationCompat.kt new file mode 100644 index 0000000000..e8cc6fb7c9 --- /dev/null +++ b/app/src/main/java/helium314/keyboard/compat/ConfigurationCompat.kt @@ -0,0 +1,12 @@ +package helium314.keyboard.compat + +import android.content.res.Configuration +import android.os.Build +import java.util.Locale + +fun Configuration.locale(): Locale = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + locales[0] + } else { + @Suppress("Deprecation") locale + } diff --git a/app/src/main/java/helium314/keyboard/compat/EditorInfoCompatUtils.kt b/app/src/main/java/helium314/keyboard/compat/EditorInfoCompatUtils.kt new file mode 100644 index 0000000000..7fa04b94e3 --- /dev/null +++ b/app/src/main/java/helium314/keyboard/compat/EditorInfoCompatUtils.kt @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.compat + +import android.os.Build +import android.text.InputType +import android.view.inputmethod.EditorInfo +import helium314.keyboard.latin.utils.Log +import java.util.* + +object EditorInfoCompatUtils { + + @JvmStatic + fun imeActionName(imeOptions: Int): String { + return when (val actionId = imeOptions and EditorInfo.IME_MASK_ACTION) { + EditorInfo.IME_ACTION_UNSPECIFIED -> "actionUnspecified" + EditorInfo.IME_ACTION_NONE -> "actionNone" + EditorInfo.IME_ACTION_GO -> "actionGo" + EditorInfo.IME_ACTION_SEARCH -> "actionSearch" + EditorInfo.IME_ACTION_SEND -> "actionSend" + EditorInfo.IME_ACTION_NEXT -> "actionNext" + EditorInfo.IME_ACTION_DONE -> "actionDone" + EditorInfo.IME_ACTION_PREVIOUS -> "actionPrevious" + else -> "actionUnknown($actionId)" + } + } + + fun debugLog(editorInfo: EditorInfo, tag: String) { + val format = HexFormat { + upperCase = true + number { + prefix = "0x" + minLength = 8 + } + } + Log.d(tag, "editorInfo: inputType: ${editorInfo.inputType.toHexString(format)}, imeOptions: ${editorInfo.imeOptions.toHexString(format)}") + val allCaps = (editorInfo.inputType and InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS) != 0 + val sentenceCaps = (editorInfo.inputType and InputType.TYPE_TEXT_FLAG_CAP_SENTENCES) != 0 + val wordCaps = (editorInfo.inputType and InputType.TYPE_TEXT_FLAG_CAP_WORDS) != 0 + Log.d(tag, ("All caps: $allCaps, sentence caps: $sentenceCaps, word caps: $wordCaps")) + } + + @JvmStatic + fun getHintLocales(editorInfo: EditorInfo?): List { + if (editorInfo == null || Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { + return listOf() + } + val localeList = editorInfo.hintLocales ?: return listOf() + val locales = ArrayList(localeList.size()) + for (i in 0 until localeList.size()) { + locales.add(localeList.get(i)) + } + return locales + } +} diff --git a/app/src/main/java/helium314/keyboard/compat/ImeCompat.kt b/app/src/main/java/helium314/keyboard/compat/ImeCompat.kt new file mode 100644 index 0000000000..8dc5421f71 --- /dev/null +++ b/app/src/main/java/helium314/keyboard/compat/ImeCompat.kt @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: GPL-3.0-only +@file:Suppress("DEPRECATION") + +package helium314.keyboard.compat + +import android.inputmethodservice.InputMethodService +import android.os.Build +import android.view.inputmethod.InputMethodInfo +import android.view.inputmethod.InputMethodSubtype +import helium314.keyboard.latin.RichInputMethodManager +import helium314.keyboard.latin.settings.Settings + +object ImeCompat { + fun InputMethodService.switchInputMethod(): Boolean { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) return switchToNextInputMethod(false) + val window = window.window ?: return false + val token = window.attributes.token + return RichInputMethodManager.getInstance().inputMethodManager.switchToNextInputMethod(token, false) + } + + fun InputMethodService.shouldSwitchToOtherInputMethods(): Boolean { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) return shouldOfferSwitchingToNextInputMethod() + val settingsValues = Settings.getValues() + val window = window.window ?: return settingsValues.mLanguageSwitchKeyToOtherImes + val token = window.attributes.token ?: return settingsValues.mLanguageSwitchKeyToOtherImes + return RichInputMethodManager.getInstance().inputMethodManager.shouldOfferSwitchingToNextInputMethod(token) + } + + fun InputMethodService.switchInputMethodAndSubtype(imi: InputMethodInfo, subtype: InputMethodSubtype) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + switchInputMethod(imi.id, subtype) + } else { + val window = window.window ?: return + val token = window.attributes.token + RichInputMethodManager.getInstance().inputMethodManager.setInputMethodAndSubtype(token, imi.id, subtype) + } + } +} diff --git a/app/src/main/java/helium314/keyboard/compat/IsLockedCompat.kt b/app/src/main/java/helium314/keyboard/compat/IsLockedCompat.kt new file mode 100644 index 0000000000..e7c6117695 --- /dev/null +++ b/app/src/main/java/helium314/keyboard/compat/IsLockedCompat.kt @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-3.0-only +package helium314.keyboard.compat + +import android.app.KeyguardManager +import android.content.Context +import android.os.Build +import android.os.UserManager + +fun isDeviceLocked(context: Context): Boolean { + val keyguardManager = context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) + keyguardManager.isDeviceLocked + else + keyguardManager.isKeyguardLocked +} + +fun isUserLocked(context: Context): Boolean { + val userManager = context.getSystemService(Context.USER_SERVICE) as UserManager + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) + !userManager.isUserUnlocked + else + false +} diff --git a/app/src/main/java/helium314/keyboard/dictionarypack/DictionaryPackConstants.kt b/app/src/main/java/helium314/keyboard/dictionarypack/DictionaryPackConstants.kt new file mode 100644 index 0000000000..2cdffa337c --- /dev/null +++ b/app/src/main/java/helium314/keyboard/dictionarypack/DictionaryPackConstants.kt @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.dictionarypack + +/** + * A class to group constants for dictionary pack usage. + * + * This class only defines constants. It should not make any references to outside code as far as + * possible, as it's used to separate cleanly the keyboard code from the dictionary pack code; this + * is needed in particular to cleanly compile regression tests. + */ +object DictionaryPackConstants { + /** + * The root domain for the dictionary pack, upon which authorities and actions will append + * their own distinctive strings. + */ + private const val DICTIONARY_DOMAIN = "helium314.keyboard.dictionarypack.aosp" + /** + * Authority for the ContentProvider protocol. + */ + // TODO: find some way to factorize this string with the one in the resources + const val AUTHORITY = DICTIONARY_DOMAIN + /** + * The action of the intent for publishing that new dictionary data is available. + */ + // TODO: make this different across different packages. A suggested course of action is + // to use the package name inside this string. + // NOTE: The appended string should be uppercase like all other actions, but it's not for + // historical reasons. + const val NEW_DICTIONARY_INTENT_ACTION = "$DICTIONARY_DOMAIN.newdict" +} diff --git a/app/src/main/java/helium314/keyboard/event/BnKhiproCombiner.kt b/app/src/main/java/helium314/keyboard/event/BnKhiproCombiner.kt new file mode 100644 index 0000000000..18b054a95d --- /dev/null +++ b/app/src/main/java/helium314/keyboard/event/BnKhiproCombiner.kt @@ -0,0 +1,329 @@ +// SPDX-License-Identifier: GPL-3.0-only + +package helium314.keyboard.event + +import helium314.keyboard.keyboard.internal.keyboard_parser.floris.KeyCode +import java.util.ArrayList + +/** + * Bengali combiner implementing the Khipro state machine. + * Converts Latin input sequences to Bengali text using greedy longest-match algorithm. + * + * This implementation matches the m17n khipro layout with: + * - All core vowels (shor), consonants (byanjon), and conjuncts (juktoborno) + * - Minimal punctuation (।ff → ৺) + * + * Intentionally excluded: + * - Number mappings (ongko group) + * - ZWJ/ZWNJ support + * - Extended punctuation (currency symbols, math operators) + */ +class BnKhiproCombiner : Combiner { + + private val composingText = StringBuilder() + + enum class State { + INIT, + SHOR_STATE, + REPH_STATE, + BYANJON_STATE + } + + companion object { + // Group mappings + private val SHOR = mapOf( + "o" to "অ", "oo" to "ঽ", + "fuf" to "‌ু", "fuuf" to "‌ূ", "fqf" to "‌ৃ", + "fa" to "া", "a" to "আ", + "fi" to "ি", "i" to "ই", + "fii" to "ী", "ii" to "ঈ", + "fu" to "ু", "u" to "উ", + "fuu" to "ূ", "uu" to "ঊ", + "fq" to "ৃ", "q" to "ঋ", + "fe" to "ে", "e" to "এ", + "foi" to "ৈ", "oi" to "ঐ", + "fw" to "ো", "w" to "ও", + "fou" to "ৌ", "ou" to "ঔ", + "fae" to "্যা", "ae" to "অ্যা", + "wa" to "ওয়া", "fwa" to "োয়া", + "wae" to "ওয়্যা", + "we" to "ওয়ে", "fwe" to "োয়ে", + "ngo" to "ঙ", "nga" to "ঙা", "ngi" to "ঙি", "ngii" to "ঙী", "ngu" to "ঙু", + "nguff" to "ঙু", "nguu" to "ঙূ", "nguuff" to "ঙূ", "ngq" to "ঙৃ", "nge" to "ঙে", + "ngoi" to "ঙৈ", "ngw" to "ঙো", "ngou" to "ঙৌ", "ngae" to "ঙ্যা" + ) + + private val BYANJON = mapOf( + "k" to "ক", "kh" to "খ", "g" to "গ", "gh" to "ঘ", "ngf" to "ঙ", + "c" to "চ", "ch" to "ছ", "j" to "জ", "jh" to "ঝ", "nff" to "ঞ", + "tf" to "ট", "tff" to "ঠ", "tfh" to "ঠ", "df" to "ড", "dff" to "ঢ", "dfh" to "ঢ", "nf" to "ণ", + "t" to "ত", "th" to "থ", "d" to "দ", "dh" to "ধ", "n" to "ন", + "p" to "প", "ph" to "ফ", "b" to "ব", "v" to "ভ", "m" to "ম", + "z" to "য", "l" to "ল", "sh" to "শ", "sf" to "ষ", "s" to "স", "h" to "হ", + "y" to "য়", "rf" to "ড়", "rff" to "ঢ়", + ",," to "়" + ) + + private val JUKTOBORNO = mapOf( + "rz" to "র‍্য", + "kk" to "ক্ক", "ktf" to "ক্ট", "ktfr" to "ক্ট্র", "kt" to "ক্ত", "ktr" to "ক্ত্র", "kb" to "ক্ব", "km" to "ক্ম", "kz" to "ক্য", "kr" to "ক্র", "kl" to "ক্ল", + "kf" to "ক্ষ", "ksf" to "ক্ষ", "kkh" to "ক্ষ", "kfnf" to "ক্ষ্ণ", "kfn" to "ক্ষ্ণ", "ksfnf" to "ক্ষ্ণ", "ksfn" to "ক্ষ্ণ", "kkhn" to "ক্ষ্ণ", "kkhnf" to "ক্ষ্ণ", + "kfb" to "ক্ষ্ব", "ksfb" to "ক্ষ্ব", "kkhb" to "ক্ষ্ব", "kfm" to "ক্ষ্ম", "kkhm" to "ক্ষ্ম", "ksfm" to "ক্ষ্ম", "kfz" to "ক্ষ্য", "ksfz" to "ক্ষ্য", "kkhz" to "ক্ষ্য", + "ks" to "ক্স", + "khz" to "খ্য", "khr" to "খ্র", + "ggg" to "গ্গ", "gnf" to "গ্‌ণ", "gdh" to "গ্ধ", "gdhz" to "গ্ধ্য", "gdhr" to "গ্ধ্র", "gn" to "গ্ন", "gnz" to "গ্ন্য", "gb" to "গ্ব", "gm" to "গ্ম", "gz" to "গ্য", "gr" to "গ্র", "grz" to "গ্র্য", "gl" to "গ্ল", + "ghn" to "ঘ্ন", "ghr" to "ঘ্র", + "ngk" to "ঙ্ক", "ngkt" to "ঙ্‌ক্ত", "ngkz" to "ঙ্ক্য", "ngkr" to "ঙ্ক্র", "ngkf" to "ঙ্ক্ষ", "ngkkh" to "ঙ্ক্ষ", "ngksf" to "ঙ্ক্ষ", "ngkh" to "ঙ্খ", "ngg" to "ঙ্গ", "nggz" to "ঙ্গ্য", "nggh" to "ঙ্ঘ", "ngghz" to "ঙ্ঘ্য", "ngghr" to "ঙ্ঘ্র", "ngm" to "ঙ্ম", + "ngfk" to "ঙ্ক", "ngfkt" to "ঙ্‌ক্ত", "ngfkz" to "ঙ্ক্য", "ngfkr" to "ঙ্ক্র", "ngfkf" to "ঙ্ক্ষ", "ngfkkh" to "ঙ্ক্ষ", "ngfksf" to "ঙ্ক্ষ", "ngfkh" to "ঙ্খ", "ngfg" to "ঙ্গ", "ngfgz" to "ঙ্গ্য", "ngfgh" to "ঙ্ঘ", "ngfghz" to "ঙ্ঘ্য", "ngfghr" to "ঙ্ঘ্র", "ngfm" to "ঙ্ম", + "cc" to "চ্চ", "cch" to "চ্ছ", "cchb" to "চ্ছ্ব", "cchr" to "চ্ছ্র", "cnff" to "চ্ঞ", "cb" to "চ্ব", "cz" to "চ্য", + "jj" to "জ্জ", "jjb" to "জ্জ্ব", "jjh" to "জ্ঝ", "jnff" to "জ্ঞ", "gg" to "জ্ঞ", "jb" to "জ্ব", "jz" to "জ্য", "jr" to "জ্র", + "nc" to "ঞ্চ", "nffc" to "ঞ্চ", "nj" to "ঞ্জ", "nffj" to "ঞ্জ", "njh" to "ঞ্ঝ", "nffjh" to "ঞ্ঝ", "nch" to "ঞ্ছ", "nffch" to "ঞ্ছ", + "ttf" to "ট্ট", "tftf" to "ট্ট", "tfb" to "ট্ব", "tfm" to "ট্ম", "tfz" to "ট্য", "tfr" to "ট্র", + "ddf" to "ড্ড", "dfdf" to "ড্ড", "dfb" to "ড্ব", "dfz" to "ড্য", "dfr" to "ড্র", "rfg" to "ড়্‌গ", + "dffz" to "ঢ্য", "dfhz" to "ঢ্য", "dffr" to "ঢ্র", "dfhr" to "ঢ্র", + "nftf" to "ণ্ট", "nftff" to "ণ্ঠ", "nftfh" to "ণ্ঠ", "nftffz" to "ণ্ঠ্য", "nftfhz" to "ণ্ঠ্য", "nfdf" to "ণ্ড", "nfdfz" to "ণ্ড্য", "nfdfr" to "ণ্ড্র", "nfdff" to "ণ্ঢ", "nfdfh" to "ণ্ঢ", "nfnf" to "ণ্ণ", "nfn" to "ণ্ণ", "nfb" to "ণ্ব", "nfm" to "ণ্ম", "nfz" to "ণ্য", + "tt" to "ত্ত", "ttb" to "ত্ত্ব", "ttz" to "ত্ত্য", "tth" to "ত্থ", "tn" to "ত্ন", "tb" to "ত্ব", "tm" to "ত্ম", "tmz" to "ত্ম্য", "tz" to "ত্য", "tr" to "ত্র", "trz" to "ত্র্য", + "thb" to "থ্ব", "thz" to "থ্য", "thr" to "থ্র", + "dg" to "দ্‌গ", "dgh" to "দ্‌ঘ", "dd" to "দ্দ", "ddb" to "দ্দ্ব", "ddh" to "দ্ধ", "db" to "দ্ব", "dv" to "দ্ভ", "dvr" to "দ্ভ্র", "dm" to "দ্ম", "dz" to "দ্য", "dr" to "দ্র", "drz" to "দ্র্য", + "dhn" to "ধ্ন", "dhb" to "ধ্ব", "dhm" to "ধ্ম", "dhz" to "ধ্য", "dhr" to "ধ্র", + "ntf" to "ন্ট", "ntfr" to "ন্ট্র", "ntff" to "ন্ঠ", "ntfh" to "ন্ঠ", "ndf" to "ন্ড", "ndfr" to "ন্ড্র", "nt" to "ন্ত", "ntb" to "ন্ত্ব", "ntr" to "ন্ত্র", "ntrz" to "ন্ত্র্য", "nth" to "ন্থ", "nthr" to "ন্থ্র", "nd" to "ন্দ", "ndb" to "ন্দ্ব", "ndz" to "ন্দ্য", + "ndr" to "ন্দ্র", "ndh" to "ন্ধ", "ndhz" to "ন্ধ্য", "ndhr" to "ন্ধ্র", "nn" to "ন্ন", "nb" to "ন্ব", "nm" to "ন্ম", "nz" to "ন্য", "ns" to "ন্স", + "ptf" to "প্ট", "pt" to "প্ত", "pn" to "প্ন", "pp" to "প্প", "pz" to "প্য", "pr" to "প্র", "pl" to "প্ল", "ps" to "প্স", + "phr" to "ফ্র", "phl" to "ফ্ল", + "bj" to "ব্জ", "bd" to "ব্দ", "bdh" to "ব্ধ", "bb" to "ব্ব", "bz" to "ব্য", "br" to "ব্র", "bl" to "ব্ল", "vb" to "ভ্ব", "vz" to "ভ্য", "vr" to "ভ্র", "vl" to "ভ্ল", + "mn" to "ম্ন", "mp" to "ম্প", "mpr" to "ম্প্র", "mph" to "ম্ফ", "mb" to "ম্ব", "mbr" to "ম্ব্র", "mv" to "ম্ভ", "mvr" to "ম্ভ্র", "mm" to "ম্ম", "mz" to "ম্য", "mr" to "ম্র", "ml" to "ম্ল", + "zz" to "য্য", + "lk" to "ল্ক", "lkz" to "ল্ক্য", "lg" to "ল্গ", "ltf" to "ল্ট", "ldf" to "ল্ড", "lp" to "ল্প", "lph" to "ল্ফ", "lb" to "ল্ব", "lv" to "ল্‌ভ", "lm" to "ল্ম", "lz" to "ল্য", "ll" to "ল্ল", + "shc" to "শ্চ", "shch" to "শ্ছ", "shn" to "শ্ন", "shb" to "শ্ব", "shm" to "শ্ম", "shz" to "শ্য", "shr" to "শ্র", "shl" to "শ্ল", + "sfk" to "ষ্ক", "sfkr" to "ষ্ক্র", "sftf" to "ষ্ট", "sftfz" to "ষ্ট্য", "sftfr" to "ষ্ট্র", "sftff" to "ষ্ঠ", "sftfh" to "ষ্ঠ", "sftffz" to "ষ্ঠ্য", "sftfhz" to "ষ্ঠ্য", "sfnf" to "ষ্ণ", "sfn" to "ষ্ণ", + "sfp" to "ষ্প", "sfpr" to "ষ্প্র", "sfph" to "ষ্ফ", "sfb" to "ষ্ব", "sfm" to "ষ্ম", "sfz" to "ষ্য", + "sk" to "স্ক", "skr" to "স্ক্র", "skh" to "স্খ", "stf" to "স্ট", "stfr" to "স্ট্র", "st" to "স্ত", "stb" to "স্ত্ব", "stz" to "স্ত্য", "str" to "স্ত্র", "sth" to "স্থ", "sthz" to "স্থ্য", "sn" to "স্ন", + "sp" to "স্প", "spr" to "স্প্র", "spl" to "স্প্ল", "sph" to "স্ফ", "sb" to "স্ব", "sm" to "স্ম", "sz" to "স্য", "sr" to "স্র", "sl" to "স্ল", + "hn" to "হ্ন", "hnf" to "হ্ণ", "hb" to "হ্ব", "hm" to "হ্ম", "hz" to "হ্য", "hr" to "হ্র", "hl" to "হ্ল", + // oshomvob juktoborno + "ksh" to "কশ", "nsh" to "নশ", "psh" to "পশ", "ld" to "লদ", "gd" to "গদ", "ngkk" to "ঙ্কক", "ngks" to "ঙ্কস", "cn" to "চন", "cnf" to "চণ", "jn" to "জন", "jnf" to "জণ", "tft" to "টত", "dfd" to "ডদ", + "nft" to "ণত", "nfd" to "ণদ", "lt" to "লত", "sft" to "ষত", "nfth" to "ণথ", "nfdh" to "ণধ", "sfth" to "ষথ", + "ktff" to "কঠ", "ktfh" to "কঠ", "ptff" to "পঠ", "ptfh" to "পঠ", "ltff" to "লঠ", "ltfh" to "লঠ", "stff" to "সঠ", "stfh" to "সঠ", "dfdff" to "ডঢ", "dfdfh" to "ডঢ", "ndff" to "নঢ", "ndfh" to "নঢ", + "ktfrf" to "ক্টড়", "ktfrff" to "ক্টঢ়", "kth" to "কথ", "ktrf" to "ক্তড়", "ktrff" to "ক্তঢ়", "krf" to "কড়", "krff" to "কঢ়", "khrf" to "খড়", "khrff" to "খঢ়", "gggh" to "জ্ঞঘ", "gdff" to "গঢ", "gdfh" to "গঢ", "gdhrf" to "গ্ধড়", + "gdhrff" to "গ্ধঢ়", "grf" to "গড়", "grff" to "গঢ়", "ghrf" to "ঘড়", "ghrff" to "ঘঢ়", "ngkth" to "ঙ্কথ", "ngkrf" to "ঙ্কড়", "ngkrff" to "ঙ্কঢ়", "ngghrf" to "ঙ্ঘড়", "ngghrff" to "ঙ্ঘঢ়", "cchrf" to "চ্ছড়", "cchrff" to "চ্ছঢ়", + "tfrf" to "টড়", "tfrff" to "টঢ়", "dfrf" to "ডড়", "dfrff" to "ডঢ়", "rfgh" to "ড়ঘ", "dffrf" to "ঢড়", "dfhrf" to "ঢড়", "dffrff" to "ঢঢ়", "dfhrff" to "ঢঢ়", "nfdfrf" to "ণ্ডড়", "nfdfrff" to "ণ্ডঢ়", "trf" to "তড়", "trff" to "তঢ়", "thrf" to "থড়", "thrff" to "থঢ়", + "dvrf" to "দ্ভড়", "dvrff" to "দ্ভঢ়", "drf" to "দড়", "drff" to "দঢ়", "dhrf" to "ধড়", "dhrff" to "ধঢ়", "ntfrf" to "ন্টড়", "ntfrff" to "ন্টঢ়", "ndfrf" to "ন্ডড়", "ndfrff" to "ন্ডঢ়", "ntrf" to "ন্তড়", "ntrff" to "ন্তঢ়", "nthrf" to "ন্থড়", + "nthrff" to "ন্থঢ়", "ndrf" to "ন্দড়", "ndrff" to "ন্দঢ়", "ndhrf" to "ন্ধড়", "ndhrff" to "ন্ধঢ়", "pth" to "পথ", "pph" to "পফ", "prf" to "পড়", "prff" to "পঢ়", "phrf" to "ফড়", "phrff" to "ফঢ়", "bjh" to "বঝ", "brf" to "বড়", "brff" to "বঢ়", + "vrf" to "ভড়", "vrff" to "ভঢ়", "mprf" to "ম্পড়", "mprff" to "ম্পঢ়", "mbrf" to "ম্বড়", "mbrff" to "ম্বঢ়", "mvrf" to "ম্ভড়", "mvrff" to "ম্ভঢ়", "mrf" to "মড়", "mrff" to "মঢ়", "lkh" to "লখ", "lgh" to "লঘ", "shrf" to "শড়", "shrff" to "শঢ়", "sfkh" to "ষখ", + "sfkrf" to "ষ্কড়", "sfkrff" to "ষ্কঢ়", "sftfrf" to "ষ্টড়", "sftfrff" to "ষ্টঢ়", "sfprf" to "ষ্পড়", "sfprff" to "ষ্পঢ়", "skrf" to "স্কড়", "skrff" to "স্কঢ়", "stfrf" to "স্টড়", "stfrff" to "স্টঢ়", "strf" to "স্তড়", "strff" to "স্তঢ়", "sprf" to "স্পড়", "sprff" to "স্পঢ়", + "srf" to "সড়", "srff" to "সঢ়", "hrf" to "হড়", "hrff" to "হঢ়", "ldh" to "লধ", "ngksh" to "ঙ্কশ", "tfth" to "টথ", "dfdh" to "ডধ", "lth" to "লথ", + "ngfkk" to "ঙ্কক", "ngfks" to "ঙ্কস", "ngfkth" to "ঙ্কথ", "ngfkrf" to "ঙ্কড়", "ngfkrff" to "ঙ্কঢ়", "ngfghrf" to "ঙ্ঘড়", "ngfghrff" to "ঙ্ঘঢ়", "ngfksh" to "ঙ্কশ", + "kkf" to "কক্ষ", "lkf" to "লক্ষ", "sfkf" to "ষক্ষ", "skf" to "সক্ষ", "kkkh" to "কক্ষ", "lkkh" to "লক্ষ", "sfkkh" to "ষক্ষ", "skkh" to "সক্ষ", "kksf" to "কক্ষ", "lksf" to "লক্ষ", "sfksf" to "ষক্ষ", "sksf" to "সক্ষ", + "yr" to "য়র" + ) + + private val REPH = mapOf( + "rr" to "র্", + "r" to "র" + ) + + private val PHOLA = mapOf( + "r" to "র", + "z" to "য" + ) + + private val KAR = mapOf( + "o" to "", "of" to "অ", + "a" to "া", "af" to "আ", + "i" to "ি", "if" to "ই", + "ii" to "ী", "iif" to "ঈ", + "u" to "ু", "uf" to "উ", + "uu" to "ূ", "uuf" to "ঊ", + "q" to "ৃ", "qf" to "ঋ", + "e" to "ে", "ef" to "এ", + "oi" to "ৈ", "oif" to "ই", + "w" to "ো", "wf" to "ও", + "ou" to "ৌ", "ouf" to "উ", + "ae" to "্যা", "aef" to "অ্যা", + "uff" to "‌ু", "uuff" to "‌ূ", "qff" to "‌ৃ", + "we" to "োয়ে", "wef" to "ওয়ে", + "waf" to "ওয়া", "wa" to "োয়া", + "wae" to "ওয়্যা" + ) + + private val DIACRITIC = mapOf( + "qq" to "্", "xx" to "্‌", "t/" to "ৎ", "x" to "ঃ", "ng" to "ং", "/" to "ঁ", "//" to "/" + ) + + private val BIRAM = mapOf( + "।ff" to "৺" + ) + + private val PRITHAYOK = mapOf( + ";" to "", ";;" to ";" + ) + + private val AE = mapOf( + "ae" to "‍্যা" + ) + + // Group maps + private val GROUP_MAPS = mapOf( + "shor" to SHOR, + "byanjon" to BYANJON, + "juktoborno" to JUKTOBORNO, + "reph" to REPH, + "phola" to PHOLA, + "kar" to KAR, + "diacritic" to DIACRITIC, + "biram" to BIRAM, + "prithayok" to PRITHAYOK, + "ae" to AE + ) + + // Group order per state (priority used when same-length matches) + private val STATE_GROUP_ORDER = mapOf( + State.INIT to listOf("diacritic", "shor", "prithayok", "biram", "reph", "byanjon", "juktoborno"), + State.SHOR_STATE to listOf("diacritic", "shor", "biram", "prithayok", "reph", "byanjon", "juktoborno"), + State.REPH_STATE to listOf("prithayok", "ae", "byanjon", "juktoborno", "kar"), + State.BYANJON_STATE to listOf("diacritic", "prithayok", "biram", "kar", "phola", "byanjon", "juktoborno") + ) + + // Precompute max key length per group for greedy matching + private val MAXLEN_PER_GROUP = GROUP_MAPS.mapValues { (_, map) -> + map.keys.maxOfOrNull { it.length } ?: 0 + } + + private fun findLongest(state: State, text: String, i: Int): Triple { + val allowed = STATE_GROUP_ORDER[state] ?: return Triple("", "", "") + + // Determine the max lookahead we need + val maxlen = allowed.maxOfOrNull { MAXLEN_PER_GROUP[it] ?: 0 } ?: 0 + val end = minOf(text.length, i + maxlen) + + // Try lengths from longest to shortest to implement greedy matching + for (l in (end - i) downTo 1) { + val chunk = text.substring(i, i + l) + // Check groups by priority + for (g in allowed) { + val map = GROUP_MAPS[g] + if (map?.containsKey(chunk) == true) { + // First match at this length wins due to priority order + return Triple(g, chunk, map[chunk]!!) + } + } + } + return Triple("", "", "") + } + + private fun applyTransition(state: State, group: String): State { + return when (state) { + State.INIT -> when (group) { + "diacritic", "shor" -> State.SHOR_STATE + "prithayok", "biram" -> State.INIT + "reph" -> State.REPH_STATE + "byanjon" -> State.BYANJON_STATE + "juktoborno" -> State.BYANJON_STATE + else -> state + } + State.SHOR_STATE -> when (group) { + "diacritic", "shor" -> State.SHOR_STATE + "biram", "prithayok" -> State.INIT + "reph" -> State.REPH_STATE + "byanjon" -> State.BYANJON_STATE + "juktoborno" -> State.BYANJON_STATE + else -> state + } + State.REPH_STATE -> when (group) { + "prithayok" -> State.INIT + "ae" -> State.SHOR_STATE + "byanjon" -> State.BYANJON_STATE + "juktoborno" -> State.BYANJON_STATE + "kar" -> State.SHOR_STATE + else -> state + } + State.BYANJON_STATE -> when (group) { + "diacritic", "kar" -> State.SHOR_STATE + "prithayok", "biram" -> State.INIT + "byanjon" -> State.BYANJON_STATE + "juktoborno" -> State.BYANJON_STATE + else -> state + } + } + } + + /** + * Convert an ASCII input string to Bengali output using the bn-khipro state machine. + */ + fun convert(text: String): String { + var i = 0 + val n = text.length + var state = State.INIT + val out = mutableListOf() + + while (i < n) { + val (group, key, value) = findLongest(state, text, i) + if (group.isEmpty()) { + // No mapping: pass through this char and reset to INIT + out.add(text[i].toString()) + i += 1 + state = State.INIT + continue + } + + // Special handling: PHOLA in BYANJON_STATE inserts virama before mapped char + if (state == State.BYANJON_STATE && group == "phola") { + out.add("্") + out.add(value) + } else { + out.add(value) + } + + i += key.length + state = applyTransition(state, group) + } + + return out.joinToString("") + } + } + + override fun processEvent(previousEvents: ArrayList?, event: Event): Event { + if (event.keyCode == KeyCode.SHIFT) return event + + if (Character.isWhitespace(event.codePoint)) { + val text = combiningStateFeedback + reset() + return createEventChainFromSequence(text, event) + } else if (event.isFunctionalKeyEvent) { + if (event.keyCode == KeyCode.DELETE) { + // Always reset composing state and let keyboard handle delete natively + val text = combiningStateFeedback + reset() + return createEventChainFromSequence(text, event) + } + val text = combiningStateFeedback + reset() + return createEventChainFromSequence(text, event) + } else { + // Add the character to composing text + // Use Character.toChars() to properly handle supplementary characters (emojis) + composingText.append(Character.toChars(event.codePoint)) + + // Check if we just completed a biram sequence + val text = composingText.toString() + if (text.endsWith(".ff")) { + val result = combiningStateFeedback + reset() + return createEventChainFromSequence(result, event) + } + + return Event.createConsumedEvent(event) + } + } + + override val combiningStateFeedback: CharSequence + get() = convert(composingText.toString()) + + override fun reset() { + composingText.setLength(0) + } + + private fun createEventChainFromSequence(text: CharSequence, originalEvent: Event): Event { + return Event.createSoftwareTextEvent(text, KeyCode.MULTIPLE_CODE_POINTS, originalEvent) + } +} diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/event/Combiner.kt b/app/src/main/java/helium314/keyboard/event/Combiner.kt similarity index 86% rename from app/src/main/java/org/dslul/openboard/inputmethod/event/Combiner.kt rename to app/src/main/java/helium314/keyboard/event/Combiner.kt index c1290dfe0f..4ea4c9ab4d 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/event/Combiner.kt +++ b/app/src/main/java/helium314/keyboard/event/Combiner.kt @@ -1,4 +1,10 @@ -package org.dslul.openboard.inputmethod.event +/* + * Copyright (C) 2013 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.event import java.util.* @@ -17,7 +23,7 @@ interface Combiner { * @param event the event to combine with the existing state. * @return the resulting event. */ - fun processEvent(previousEvents: ArrayList?, event: Event?): Event? + fun processEvent(previousEvents: ArrayList?, event: Event): Event /** * Get the feedback that should be shown to the user for the current state of this combiner. diff --git a/app/src/main/java/helium314/keyboard/event/CombinerChain.kt b/app/src/main/java/helium314/keyboard/event/CombinerChain.kt new file mode 100644 index 0000000000..e24b035bd5 --- /dev/null +++ b/app/src/main/java/helium314/keyboard/event/CombinerChain.kt @@ -0,0 +1,119 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.event + +import android.text.SpannableStringBuilder +import android.text.TextUtils +import helium314.keyboard.keyboard.internal.keyboard_parser.floris.KeyCode +import java.util.* + +/** + * This class implements the logic chain between receiving events and generating code points. + * + * Event sources are multiple. It may be a hardware keyboard, a D-PAD, a software keyboard, + * or any exotic input source. + * This class will orchestrate the composing chain that starts with an event as its input. Each + * composer will be given turns one after the other. + * The output is composed of two sequences of code points: the first, representing the already + * finished combining part, will be shown normally as the composing string, while the second is + * feedback on the composing state and will typically be shown with different styling such as + * a colored background. + * + * The combiner chain takes events as inputs and outputs code points and combining state. + * For example, if the input language is Japanese, the combining chain will typically perform + * kana conversion. This takes a string for initial text, taken to be present before the + * cursor: we'll start after this. + * @param initialText The text that has already been combined so far. + */ +class CombinerChain(initialText: String, combiningSpec: String) { + // The already combined text, as described above + private val mCombinedText = StringBuilder(initialText) + // The feedback on the composing state, as described above + private val mStateFeedback = SpannableStringBuilder() + private val mCombiners = ArrayList() + + init { + // The dead key combiner is always active, and always first + mCombiners.add(DeadKeyCombiner()) + if (combiningSpec == "hangul") + mCombiners.add(HangulCombiner()) + else if (combiningSpec == "bn_khipro") + mCombiners.add(BnKhiproCombiner()) + } + + fun reset() { + mCombinedText.setLength(0) + mStateFeedback.clear() + for (c in mCombiners) { + c.reset() + } + } + + private fun updateStateFeedback() { + mStateFeedback.clear() + for (i in mCombiners.indices.reversed()) { + mStateFeedback.append(mCombiners[i].combiningStateFeedback) + } + } + + /** + * Process an event through the combining chain, and return a processed event to apply. + * @param previousEvents the list of previous events in this composition + * @param newEvent the new event to process + * @return the processed event. It may be the same event, or a consumed event, or a completely + * new event. However it may never be null. + */ + fun processEvent(previousEvents: ArrayList?, newEvent: Event): Event { + val modifiablePreviousEvents = ArrayList(previousEvents!!) + var event = newEvent + for (combiner in mCombiners) { + // A combiner can never return more than one event; it can return several + // code points, but they should be encapsulated within one event. + event = combiner.processEvent(modifiablePreviousEvents, event) + if (event.isConsumed) { + // If the event is consumed, then we don't pass it to subsequent combiners: + // they should not see it at all. + break + } + } + updateStateFeedback() + return event + } + + /** + * Apply a processed event. + * @param event the event to be applied + */ + fun applyProcessedEvent(event: Event?) { + if (null != event) { // TODO: figure out the generic way of doing this + if (KeyCode.DELETE == event.keyCode) { + val length = mCombinedText.length + if (length > 0) { + val lastCodePoint = mCombinedText.codePointBefore(length) + mCombinedText.delete(length - Character.charCount(lastCodePoint), length) + } + } else { + val textToCommit = event.textToCommit + if (!TextUtils.isEmpty(textToCommit)) { + mCombinedText.append(textToCommit) + } + } + } + updateStateFeedback() + } + + /** + * Get the char sequence that should be displayed as the composing word. It may include + * styling spans. + */ + val composingWordWithCombiningFeedback: CharSequence + get() { + val s = SpannableStringBuilder(mCombinedText) + return s.append(mStateFeedback) + } + +} diff --git a/app/src/main/java/helium314/keyboard/event/DeadKeyCombiner.kt b/app/src/main/java/helium314/keyboard/event/DeadKeyCombiner.kt new file mode 100644 index 0000000000..2c3d04dd9a --- /dev/null +++ b/app/src/main/java/helium314/keyboard/event/DeadKeyCombiner.kt @@ -0,0 +1,271 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.event + +import android.text.TextUtils +import android.util.SparseIntArray +import helium314.keyboard.keyboard.internal.keyboard_parser.floris.KeyCode +import helium314.keyboard.latin.common.Constants +import java.text.Normalizer +import java.util.* + +/** + * A combiner that handles dead keys. + */ +class DeadKeyCombiner : Combiner { + private object Data { + // This class data taken from KeyCharacterMap.java. +/* Characters used to display placeholders for dead keys. */ + private const val ACCENT_ACUTE = '\u00B4'.code + private const val ACCENT_BREVE = '\u02D8'.code + private const val ACCENT_CARON = '\u02C7'.code + private const val ACCENT_CEDILLA = '\u00B8'.code + private const val ACCENT_CIRCUMFLEX = '\u02C6'.code + private const val ACCENT_COMMA_ABOVE = '\u1FBD'.code + private const val ACCENT_COMMA_ABOVE_RIGHT = '\u02BC'.code + private const val ACCENT_DOT_ABOVE = '\u02D9'.code + private const val ACCENT_DOT_BELOW = Constants.CODE_PERIOD // approximate + private const val ACCENT_DOUBLE_ACUTE = '\u02DD'.code + private const val ACCENT_GRAVE = '\u02CB'.code + private const val ACCENT_HOOK_ABOVE = '\u02C0'.code + private const val ACCENT_HORN = Constants.CODE_SINGLE_QUOTE // approximate + private const val ACCENT_MACRON = '\u00AF'.code + private const val ACCENT_MACRON_BELOW = '\u02CD'.code + private const val ACCENT_OGONEK = '\u02DB'.code + private const val ACCENT_REVERSED_COMMA_ABOVE = '\u02BD'.code + private const val ACCENT_RING_ABOVE = '\u02DA'.code + private const val ACCENT_STROKE = Constants.CODE_DASH // approximate + private const val ACCENT_TILDE = '\u02DC'.code + private const val ACCENT_TURNED_COMMA_ABOVE = '\u02BB'.code + private const val ACCENT_UMLAUT = '\u00A8'.code + private const val ACCENT_VERTICAL_LINE_ABOVE = '\u02C8'.code + private const val ACCENT_VERTICAL_LINE_BELOW = '\u02CC'.code + /* Legacy dead key display characters used in previous versions of the API (before L) + * We still support these characters by mapping them to their non-legacy version. */ + private const val ACCENT_GRAVE_LEGACY = Constants.CODE_GRAVE_ACCENT + private const val ACCENT_CIRCUMFLEX_LEGACY = Constants.CODE_CIRCUMFLEX_ACCENT + private const val ACCENT_TILDE_LEGACY = Constants.CODE_TILDE + /** + * Maps Unicode combining diacritical to display-form dead key. + */ + val sCombiningToAccent = SparseIntArray() + val sAccentToCombining = SparseIntArray() + private fun addCombining(combining: Int, accent: Int) { + sCombiningToAccent.append(combining, accent) + sAccentToCombining.append(accent, combining) + } + + // Caution! This may only contain chars, not supplementary code points. It's unlikely + // it will ever need to, but if it does we'll have to change this + private val sNonstandardDeadCombinations = SparseIntArray() + + private fun addNonStandardDeadCombination(deadCodePoint: Int, spacingCodePoint: Int, result: Int) { + val combination = deadCodePoint shl 16 or spacingCodePoint + sNonstandardDeadCombinations.put(combination, result) + } + + const val NOT_A_CHAR = 0 + const val BITS_TO_SHIFT_DEAD_CODE_POINT_FOR_NON_STANDARD_COMBINATION = 16 + // Get a non-standard combination + fun getNonstandardCombination(deadCodePoint: Int, + spacingCodePoint: Int): Char { + val combination = spacingCodePoint or + (deadCodePoint shl BITS_TO_SHIFT_DEAD_CODE_POINT_FOR_NON_STANDARD_COMBINATION) + return sNonstandardDeadCombinations[combination, NOT_A_CHAR].toChar() + } + + init { // U+0300: COMBINING GRAVE ACCENT + addCombining('\u0300'.code, ACCENT_GRAVE) + // U+0301: COMBINING ACUTE ACCENT + addCombining('\u0301'.code, ACCENT_ACUTE) + // U+0302: COMBINING CIRCUMFLEX ACCENT + addCombining('\u0302'.code, ACCENT_CIRCUMFLEX) + // U+0303: COMBINING TILDE + addCombining('\u0303'.code, ACCENT_TILDE) + // U+0304: COMBINING MACRON + addCombining('\u0304'.code, ACCENT_MACRON) + // U+0306: COMBINING BREVE + addCombining('\u0306'.code, ACCENT_BREVE) + // U+0307: COMBINING DOT ABOVE + addCombining('\u0307'.code, ACCENT_DOT_ABOVE) + // U+0308: COMBINING DIAERESIS + addCombining('\u0308'.code, ACCENT_UMLAUT) + // U+0309: COMBINING HOOK ABOVE + addCombining('\u0309'.code, ACCENT_HOOK_ABOVE) + // U+030A: COMBINING RING ABOVE + addCombining('\u030A'.code, ACCENT_RING_ABOVE) + // U+030B: COMBINING DOUBLE ACUTE ACCENT + addCombining('\u030B'.code, ACCENT_DOUBLE_ACUTE) + // U+030C: COMBINING CARON + addCombining('\u030C'.code, ACCENT_CARON) + // U+030D: COMBINING VERTICAL LINE ABOVE + addCombining('\u030D'.code, ACCENT_VERTICAL_LINE_ABOVE) + // U+030E: COMBINING DOUBLE VERTICAL LINE ABOVE + //addCombining('\u030E', ACCENT_DOUBLE_VERTICAL_LINE_ABOVE); + // U+030F: COMBINING DOUBLE GRAVE ACCENT + //addCombining('\u030F', ACCENT_DOUBLE_GRAVE); + // U+0310: COMBINING CANDRABINDU + //addCombining('\u0310', ACCENT_CANDRABINDU); + // U+0311: COMBINING INVERTED BREVE + //addCombining('\u0311', ACCENT_INVERTED_BREVE); + // U+0312: COMBINING TURNED COMMA ABOVE + addCombining('\u0312'.code, ACCENT_TURNED_COMMA_ABOVE) + // U+0313: COMBINING COMMA ABOVE + addCombining('\u0313'.code, ACCENT_COMMA_ABOVE) + // U+0314: COMBINING REVERSED COMMA ABOVE + addCombining('\u0314'.code, ACCENT_REVERSED_COMMA_ABOVE) + // U+0315: COMBINING COMMA ABOVE RIGHT + addCombining('\u0315'.code, ACCENT_COMMA_ABOVE_RIGHT) + // U+031B: COMBINING HORN + addCombining('\u031B'.code, ACCENT_HORN) + // U+0323: COMBINING DOT BELOW + addCombining('\u0323'.code, ACCENT_DOT_BELOW) + // U+0326: COMBINING COMMA BELOW + //addCombining('\u0326', ACCENT_COMMA_BELOW); + // U+0327: COMBINING CEDILLA + addCombining('\u0327'.code, ACCENT_CEDILLA) + // U+0328: COMBINING OGONEK + addCombining('\u0328'.code, ACCENT_OGONEK) + // U+0329: COMBINING VERTICAL LINE BELOW + addCombining('\u0329'.code, ACCENT_VERTICAL_LINE_BELOW) + // U+0331: COMBINING MACRON BELOW + addCombining('\u0331'.code, ACCENT_MACRON_BELOW) + // U+0335: COMBINING SHORT STROKE OVERLAY + addCombining('\u0335'.code, ACCENT_STROKE) + // U+0342: COMBINING GREEK PERISPOMENI + //addCombining('\u0342', ACCENT_PERISPOMENI); + // U+0344: COMBINING GREEK DIALYTIKA TONOS + //addCombining('\u0344', ACCENT_DIALYTIKA_TONOS); + // U+0345: COMBINING GREEK YPOGEGRAMMENI + //addCombining('\u0345', ACCENT_YPOGEGRAMMENI); + // One-way mappings to equivalent preferred accents. + // U+0340: COMBINING GRAVE TONE MARK + sCombiningToAccent.append('\u0340'.code, ACCENT_GRAVE) + // U+0341: COMBINING ACUTE TONE MARK + sCombiningToAccent.append('\u0341'.code, ACCENT_ACUTE) + // U+0343: COMBINING GREEK KORONIS + sCombiningToAccent.append('\u0343'.code, ACCENT_COMMA_ABOVE) + // One-way legacy mappings to preserve compatibility with older applications. + // U+0300: COMBINING GRAVE ACCENT + sAccentToCombining.append(ACCENT_GRAVE_LEGACY, '\u0300'.code) + // U+0302: COMBINING CIRCUMFLEX ACCENT + sAccentToCombining.append(ACCENT_CIRCUMFLEX_LEGACY, '\u0302'.code) + // U+0303: COMBINING TILDE + sAccentToCombining.append(ACCENT_TILDE_LEGACY, '\u0303'.code) + } + + init { // Non-standard decompositions. + // Stroke modifier for Finnish multilingual keyboard and others. + // U+0110: LATIN CAPITAL LETTER D WITH STROKE + addNonStandardDeadCombination(ACCENT_STROKE, 'D'.code, '\u0110'.code) + // U+01E4: LATIN CAPITAL LETTER G WITH STROKE + addNonStandardDeadCombination(ACCENT_STROKE, 'G'.code, '\u01e4'.code) + // U+0126: LATIN CAPITAL LETTER H WITH STROKE + addNonStandardDeadCombination(ACCENT_STROKE, 'H'.code, '\u0126'.code) + // U+0197: LATIN CAPITAL LETTER I WITH STROKE + addNonStandardDeadCombination(ACCENT_STROKE, 'I'.code, '\u0197'.code) + // U+0141: LATIN CAPITAL LETTER L WITH STROKE + addNonStandardDeadCombination(ACCENT_STROKE, 'L'.code, '\u0141'.code) + // U+00D8: LATIN CAPITAL LETTER O WITH STROKE + addNonStandardDeadCombination(ACCENT_STROKE, 'O'.code, '\u00d8'.code) + // U+0166: LATIN CAPITAL LETTER T WITH STROKE + addNonStandardDeadCombination(ACCENT_STROKE, 'T'.code, '\u0166'.code) + // U+0111: LATIN SMALL LETTER D WITH STROKE + addNonStandardDeadCombination(ACCENT_STROKE, 'd'.code, '\u0111'.code) + // U+01E5: LATIN SMALL LETTER G WITH STROKE + addNonStandardDeadCombination(ACCENT_STROKE, 'g'.code, '\u01e5'.code) + // U+0127: LATIN SMALL LETTER H WITH STROKE + addNonStandardDeadCombination(ACCENT_STROKE, 'h'.code, '\u0127'.code) + // U+0268: LATIN SMALL LETTER I WITH STROKE + addNonStandardDeadCombination(ACCENT_STROKE, 'i'.code, '\u0268'.code) + // U+0142: LATIN SMALL LETTER L WITH STROKE + addNonStandardDeadCombination(ACCENT_STROKE, 'l'.code, '\u0142'.code) + // U+00F8: LATIN SMALL LETTER O WITH STROKE + addNonStandardDeadCombination(ACCENT_STROKE, 'o'.code, '\u00f8'.code) + // U+0167: LATIN SMALL LETTER T WITH STROKE + addNonStandardDeadCombination(ACCENT_STROKE, 't'.code, '\u0167'.code) + } + } + + // TODO: make this a list of events instead + val mDeadSequence = StringBuilder() + + override fun processEvent(previousEvents: ArrayList?, event: Event): Event { + if (TextUtils.isEmpty(mDeadSequence)) { // No dead char is currently being tracked: this is the most common case. + if (event.isDead) { // The event was a dead key. Start tracking it. + mDeadSequence.appendCodePoint(event.codePoint) + return Event.createConsumedEvent(event) + } + // Regular keystroke when not keeping track of a dead key. Simply said, there are + // no dead keys at all in the current input, so this combiner has nothing to do and + // simply returns the event as is. The majority of events will go through this path. + return event + } + if (Character.isWhitespace(event.codePoint) + || event.codePoint == mDeadSequence.codePointBefore(mDeadSequence.length)) { // When whitespace or twice the same dead key, we should output the dead sequence as is. + val resultEvent = createEventChainFromSequence(mDeadSequence.toString(), event) + mDeadSequence.setLength(0) + return resultEvent + } + if (event.isFunctionalKeyEvent) { + if (KeyCode.DELETE == event.keyCode) { // Remove the last code point + val trimIndex = mDeadSequence.length - Character.charCount( + mDeadSequence.codePointBefore(mDeadSequence.length)) + mDeadSequence.setLength(trimIndex) + return Event.createConsumedEvent(event) + } + return event + } + if (event.isDead) { + mDeadSequence.appendCodePoint(event.codePoint) + return Event.createConsumedEvent(event) + } + // Combine normally. + val sb = StringBuilder() + sb.appendCodePoint(event.codePoint) + var codePointIndex = 0 + while (codePointIndex < mDeadSequence.length) { + val deadCodePoint = mDeadSequence.codePointAt(codePointIndex) + val replacementSpacingChar = Data.getNonstandardCombination(deadCodePoint, event.codePoint) + if (Data.NOT_A_CHAR != replacementSpacingChar.code) { + sb.setCharAt(0, replacementSpacingChar) + } else { + val combining = Data.sAccentToCombining[deadCodePoint] + sb.appendCodePoint(if (0 == combining) deadCodePoint else combining) + } + codePointIndex += if (Character.isSupplementaryCodePoint(deadCodePoint)) 2 else 1 + } + val normalizedString = Normalizer.normalize(sb, Normalizer.Form.NFC) + val resultEvent = createEventChainFromSequence(normalizedString, event) + mDeadSequence.setLength(0) + return resultEvent + } + + override fun reset() { + mDeadSequence.setLength(0) + } + + override val combiningStateFeedback: CharSequence + get() = mDeadSequence + + companion object { + private fun createEventChainFromSequence(text: CharSequence, originalEvent: Event): Event { + var index = text.length + if (index <= 0) { + return originalEvent + } + var lastEvent: Event? = null + do { + val codePoint = Character.codePointBefore(text, index) + lastEvent = Event.createHardwareKeypressEvent(codePoint, originalEvent.keyCode, 0, lastEvent, false) + index -= Character.charCount(codePoint) + } while (index > 0) + // can't be null because + return lastEvent!! + } + } +} diff --git a/app/src/main/java/helium314/keyboard/event/Event.kt b/app/src/main/java/helium314/keyboard/event/Event.kt new file mode 100644 index 0000000000..09e00bdf09 --- /dev/null +++ b/app/src/main/java/helium314/keyboard/event/Event.kt @@ -0,0 +1,293 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.event + +import helium314.keyboard.latin.SuggestedWords.SuggestedWordInfo +import helium314.keyboard.latin.common.Constants +import helium314.keyboard.latin.common.StringUtils + +/** + * Class representing a generic input event as handled by Latin IME. + * + * This contains information about the origin of the event, but it is generalized and should + * represent a software keypress, hardware keypress, or d-pad move alike. + * Very importantly, this does not necessarily result in inputting one character, or even anything + * at all - it may be a dead key, it may be a partial input, it may be a special key on the + * keyboard, it may be a cancellation of a keypress (e.g. in a soft keyboard the finger of the + * user has slid out of the key), etc. It may also be a batch input from a gesture or handwriting + * for example. + * The combiner should figure out what to do with this. + */ +class Event private constructor( + // The type of event - one of the constants above + private val eventType: Int, + // If applicable, this contains the string that should be input. + val text: CharSequence? = null, + // The code point associated with the event, if relevant. This is a unicode code point, and + // has nothing to do with other representations of the key. It is only relevant if this event + // is of KEYPRESS type, but for a mode key like hankaku/zenkaku or ctrl, there is no code point + // associated so this should be NOT_A_CODE_POINT to avoid unintentional use of its value when + // it's not relevant. + val codePoint: Int = NOT_A_CODE_POINT, + // The key code associated with the event, if relevant. This is relevant whenever this event + // has been triggered by a key press, but not for a gesture for example. This has conceptually + // no link to the code point, although keys that enter a straight code point may often set + // this to be equal to mCodePoint for convenience. If this is not a key, this must contain + // NOT_A_KEY_CODE. + val keyCode: Int = NOT_A_KEY_CODE, + // State of meta keys (currently ctrl, alt, fn, meta) + // same value as https://developer.android.com/reference/android/view/KeyEvent#getMetaState() + val metaState: Int = 0, + // Coordinates of the touch event, if relevant. If useful, we may want to replace this with + // a MotionEvent or something in the future. This is only relevant when the keypress is from + // a software keyboard obviously, unless there are touch-sensitive hardware keyboards in the + // future or some other awesome sauce. + val x: Int = Constants.NOT_A_COORDINATE, + val y: Int = Constants.NOT_A_COORDINATE, + // If this is of type EVENT_TYPE_SUGGESTION_PICKED, this must not be null (and must be null in + // other cases). + val suggestedWordInfo: SuggestedWordInfo? = null, + // Some flags that can't go into the key code. It's a bit field of FLAG_* + private val flags: Int = FLAG_NONE, + // The next event, if any. Null if there is no next event yet. + val nextEvent: Event? = null + // This logic may need to be refined in the future +) { + init { + if ((EVENT_TYPE_SUGGESTION_PICKED == eventType) != (suggestedWordInfo != null)) + throw RuntimeException("Wrong event: SUGGESTION_PICKED event must have a non-null SuggestedWordInfo, other events may not") + } + + // Returns whether this is a function key like backspace, ctrl, settings... as opposed to keys + // that result in input like letters or space. + val isFunctionalKeyEvent: Boolean + get() = NOT_A_CODE_POINT == codePoint || metaState != 0 // This logic may need to be refined in the future + + // Returns whether this event is for a dead character. @see {@link #FLAG_DEAD} + val isDead: Boolean get() = 0 != FLAG_DEAD and flags + + val isKeyRepeat: Boolean get() = 0 != FLAG_REPEAT and flags + + val isConsumed: Boolean get() = 0 != FLAG_CONSUMED and flags + + val isCombining: Boolean get() = 0 != FLAG_COMBINING and flags + + val isGesture: Boolean get() = EVENT_TYPE_GESTURE == eventType + + // Returns whether this is a fake key press from the suggestion strip. This happens with + // punctuation signs selected from the suggestion strip. + val isSuggestionStripPress: Boolean get() = EVENT_TYPE_SUGGESTION_PICKED == eventType + + val isHandled: Boolean get() = EVENT_TYPE_NOT_HANDLED != eventType + + // A consumed event should input no text. + val textToCommit: CharSequence? + get() { + if (isConsumed) { + return "" // A consumed event should input no text. + } + return when (eventType) { + EVENT_TYPE_MODE_KEY, EVENT_TYPE_NOT_HANDLED, EVENT_TYPE_TOGGLE, EVENT_TYPE_CURSOR_MOVE -> "" + EVENT_TYPE_INPUT_KEYPRESS -> StringUtils.newSingleCodePointString(codePoint) + EVENT_TYPE_GESTURE, EVENT_TYPE_SOFTWARE_GENERATED_STRING, EVENT_TYPE_SUGGESTION_PICKED -> text + else -> throw RuntimeException("Unknown event type: $eventType") + } + } + + companion object { + // Should the types below be represented by separate classes instead? It would be cleaner + // but probably a bit too much + // An event we don't handle in Latin IME, for example pressing Ctrl on a hardware keyboard. + const val EVENT_TYPE_NOT_HANDLED = 0 + // A key press that is part of input, for example pressing an alphabetic character on a + // hardware qwerty keyboard. It may be part of a sequence that will be re-interpreted later + // through combination. + const val EVENT_TYPE_INPUT_KEYPRESS = 1 + // A toggle event is triggered by a key that affects the previous character. An example would + // be a numeric key on a 10-key keyboard, which would toggle between 1 - a - b - c with + // repeated presses. + const val EVENT_TYPE_TOGGLE = 2 + // A mode event instructs the combiner to change modes. The canonical example would be the + // hankaku/zenkaku key on a Japanese keyboard, or even the caps lock key on a qwerty keyboard + // if handled at the combiner level. + const val EVENT_TYPE_MODE_KEY = 3 + // An event corresponding to a gesture. + const val EVENT_TYPE_GESTURE = 4 + // An event corresponding to the manual pick of a suggestion. + const val EVENT_TYPE_SUGGESTION_PICKED = 5 + // An event corresponding to a string generated by some software process. + const val EVENT_TYPE_SOFTWARE_GENERATED_STRING = 6 + // An event corresponding to a cursor move + const val EVENT_TYPE_CURSOR_MOVE = 7 + + // 0 is a valid code point, so we use -1 here. + const val NOT_A_CODE_POINT = -1 + // -1 is a valid key code, so we use 0 here. + const val NOT_A_KEY_CODE = 0 + + private const val FLAG_NONE = 0 + // This event is a dead character, usually input by a dead key. Examples include dead-acute or dead-abovering. + private const val FLAG_DEAD = 0x1 + // This event is coming from a key repeat, software or hardware. + private const val FLAG_REPEAT = 0x2 + // This event has already been consumed. + private const val FLAG_CONSUMED = 0x4 + // This event is a combining character, usually a hangul input. + private const val FLAG_COMBINING = 0x8 + + @JvmStatic + fun createSoftwareKeypressEvent(codePoint: Int, keyCode: Int, metaState: Int, x: Int, y: Int, isKeyRepeat: Boolean) = + Event( + eventType = EVENT_TYPE_INPUT_KEYPRESS, + codePoint = codePoint, + keyCode = keyCode, + metaState = metaState, + x = x, + y = y, + flags = if (isKeyRepeat) FLAG_REPEAT else FLAG_NONE + ) + + // A helper method to split the code point and the key code. + // todo: Ultimately, they should not be squashed into the same variable, and this method should be removed. + @JvmStatic + fun createSoftwareKeypressEvent(keyCodeOrCodePoint: Int, metaState: Int, keyX: Int, keyY: Int, isKeyRepeat: Boolean) = + if (keyCodeOrCodePoint <= 0) { + createSoftwareKeypressEvent(NOT_A_CODE_POINT, keyCodeOrCodePoint, metaState, keyX, keyY, isKeyRepeat) + } else { + createSoftwareKeypressEvent(keyCodeOrCodePoint, NOT_A_KEY_CODE, metaState, keyX, keyY, isKeyRepeat) + } + + fun createHardwareKeypressEvent(codePoint: Int, keyCode: Int, metaState: Int, next: Event?, isKeyRepeat: Boolean) = + Event( + eventType = EVENT_TYPE_INPUT_KEYPRESS, + codePoint = codePoint, + keyCode = keyCode, + metaState = metaState, + x = Constants.EXTERNAL_KEYBOARD_COORDINATE, + y = Constants.EXTERNAL_KEYBOARD_COORDINATE, + flags = if (isKeyRepeat) FLAG_REPEAT else FLAG_NONE, + nextEvent = next + ) + + // This creates an input event for a dead character. see FLAG_DEAD + fun createDeadEvent(codePoint: Int, keyCode: Int, metaState: Int, next: Event?) = + Event( + eventType = EVENT_TYPE_INPUT_KEYPRESS, + codePoint = codePoint, + keyCode = keyCode, + metaState = metaState, + x = Constants.EXTERNAL_KEYBOARD_COORDINATE, + y = Constants.EXTERNAL_KEYBOARD_COORDINATE, + flags = FLAG_DEAD, + nextEvent = next + ) + + // This creates an input event for a dead character. see FLAG_DEAD + fun createSoftwareDeadEvent(codePoint: Int, keyCode: Int, metaState: Int, x: Int, y: Int, next: Event?) = + Event( + eventType = EVENT_TYPE_INPUT_KEYPRESS, + codePoint = codePoint, + keyCode = keyCode, + metaState = metaState, + x = x, + y = y, + flags = FLAG_DEAD, + nextEvent = next + ) + + /** + * Create an input event with nothing but a code point. This is the most basic possible input + * event; it contains no information on many things the IME requires to function correctly, + * so avoid using it unless really nothing is known about this input. + * @param codePoint the code point. + * @return an event for this code point. + */ + @JvmStatic + // TODO: should we have a different type of event for this? After all, it's not a key press. + fun createEventForCodePointFromUnknownSource(codePoint: Int) = Event(eventType = EVENT_TYPE_INPUT_KEYPRESS, codePoint = codePoint) + + /** + * Creates an input event with a code point and x, y coordinates. This is typically used when + * resuming a previously-typed word, when the coordinates are still known. + * @param codePoint the code point to input. + * @param x the X coordinate. + * @param y the Y coordinate. + * @return an event for this code point and coordinates. + */ + @JvmStatic + // TODO: should we have a different type of event for this? After all, it's not a key press. + fun createEventForCodePointFromAlreadyTypedText(codePoint: Int, x: Int, y: Int) = + Event(eventType = EVENT_TYPE_INPUT_KEYPRESS, codePoint = codePoint, x = x, y = y) + + /** + * Creates an input event representing the manual pick of a suggestion. + * @return an event for this suggestion pick. + */ + @JvmStatic + fun createSuggestionPickedEvent(suggestedWordInfo: SuggestedWordInfo) = + Event( + eventType = EVENT_TYPE_SUGGESTION_PICKED, + text = suggestedWordInfo.mWord, + x = Constants.SUGGESTION_STRIP_COORDINATE, + y = Constants.SUGGESTION_STRIP_COORDINATE, + suggestedWordInfo = suggestedWordInfo + ) + + /** + * Creates an input event with a CharSequence. This is used by some software processes whose + * output is a string, possibly with styling. Examples include press on a multi-character key, + * or combination that outputs a string. + * @param text the CharSequence associated with this event. + * @param keyCode the key code, or NOT_A_KEYCODE if not applicable. + * @param nextEvent the next event, or null if not applicable. + * @return an event for this text. + */ + @JvmStatic + fun createSoftwareTextEvent(text: CharSequence?, keyCode: Int, nextEvent: Event? = null) = + Event(eventType = EVENT_TYPE_SOFTWARE_GENERATED_STRING, text = text, keyCode = keyCode, nextEvent = nextEvent) + + /** + * Creates an input event representing the manual pick of a punctuation suggestion. + * @return an event for this suggestion pick. + */ + @JvmStatic + fun createPunctuationSuggestionPickedEvent(suggestedWordInfo: SuggestedWordInfo) = + Event( + eventType = EVENT_TYPE_SUGGESTION_PICKED, + text = suggestedWordInfo.mWord, + codePoint = suggestedWordInfo.mWord[0].code, + x = Constants.SUGGESTION_STRIP_COORDINATE, + y = Constants.SUGGESTION_STRIP_COORDINATE, + suggestedWordInfo = suggestedWordInfo + ) + + /** + * Creates an input event representing moving the cursor. The relative move amount is stored + * in mX. + * @param moveAmount the relative move amount. + * @return an event for this cursor move. + */ + @JvmStatic + fun createCursorMovedEvent(moveAmount: Int) = Event(eventType = EVENT_TYPE_CURSOR_MOVE, x = moveAmount) + + /** + * Creates an event identical to the passed event, but that has already been consumed. + * @param source the event to copy the properties of. + * @return an identical event marked as consumed. + */ + // A consumed event should not input any text at all, so we pass the empty string as text. + fun createConsumedEvent(source: Event) = + Event(source.eventType, source.text, source.codePoint, source.keyCode, source.metaState, + source.x, source.y, source.suggestedWordInfo, source.flags or FLAG_CONSUMED, source.nextEvent) + + fun createCombiningEvent(source: Event) = + Event(source.eventType, source.text, source.codePoint, source.keyCode, source.metaState, + source.x, source.y, source.suggestedWordInfo, source.flags or FLAG_COMBINING, source.nextEvent) + + val notHandledEvent = Event(eventType = EVENT_TYPE_NOT_HANDLED) + } +} diff --git a/app/src/main/java/helium314/keyboard/event/EventDecoder.kt b/app/src/main/java/helium314/keyboard/event/EventDecoder.kt new file mode 100644 index 0000000000..44a535f654 --- /dev/null +++ b/app/src/main/java/helium314/keyboard/event/EventDecoder.kt @@ -0,0 +1,12 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.event + +/** + * A generic interface for event decoders. + */ +interface EventDecoder \ No newline at end of file diff --git a/app/src/main/java/helium314/keyboard/event/HangulCombiner.kt b/app/src/main/java/helium314/keyboard/event/HangulCombiner.kt new file mode 100644 index 0000000000..b782e1c489 --- /dev/null +++ b/app/src/main/java/helium314/keyboard/event/HangulCombiner.kt @@ -0,0 +1,337 @@ +// SPDX-License-Identifier: GPL-3.0-only + +package helium314.keyboard.event + +import helium314.keyboard.keyboard.internal.keyboard_parser.floris.KeyCode +import helium314.keyboard.latin.common.Constants +import java.lang.StringBuilder +import java.util.ArrayList + +class HangulCombiner : Combiner { + + private val composingWord = StringBuilder() + + val history: MutableList = mutableListOf() + private val syllable: HangulSyllable? get() = history.lastOrNull() + + override fun processEvent(previousEvents: ArrayList?, event: Event): Event { + if (event.keyCode == KeyCode.SHIFT) return event + // previously we only used the combiner if codePoint > 0x1100 or codePoint == -1, but looks here it's not necessary + val event = HangulEventDecoder.decodeSoftwareKeyEvent(event) + if (Character.isWhitespace(event.codePoint)) { + val text = combiningStateFeedback + reset() + return createEventChainFromSequence(text, event) + } else if (event.isFunctionalKeyEvent) { + if(event.keyCode == KeyCode.DELETE) { + return when { + history.size == 1 && composingWord.isEmpty() || history.isEmpty() && composingWord.length == 1 -> { + reset() + Event.createHardwareKeypressEvent(0x20, Constants.CODE_SPACE, 0, event, event.isKeyRepeat) + } + history.isNotEmpty() -> { + history.removeAt(history.lastIndex) + Event.createConsumedEvent(event) + } + composingWord.isNotEmpty() -> { + composingWord.deleteCharAt(composingWord.lastIndex) + Event.createConsumedEvent(event) + } + else -> event + } + } + val text = combiningStateFeedback + reset() + return createEventChainFromSequence(text, event) + } else { + val currentSyllable = syllable ?: HangulSyllable() + val jamo = HangulJamo.of(event.codePoint) + if (!event.isCombining || jamo is HangulJamo.NonHangul) { + composingWord.append(currentSyllable.string) + composingWord.append(jamo.string) + history.clear() + } else { + when (jamo) { + is HangulJamo.Consonant -> { + val initial = jamo.toInitial() + val final = jamo.toFinal() + if (currentSyllable.initial != null && currentSyllable.medial != null) { + if (currentSyllable.final == null) { + val combination = COMBINATION_TABLE_DUBEOLSIK[currentSyllable.initial.codePoint to (initial?.codePoint ?: -1)] + history += + if (combination != null) { + currentSyllable.copy(initial = HangulJamo.Initial(combination)) + } else { + if (final != null) { + currentSyllable.copy(final = final) + } else { + composingWord.append(currentSyllable.string) + history.clear() + HangulSyllable(initial = initial) + } + } + } else { + val pair = currentSyllable.final.codePoint to (final?.codePoint ?: -1) + val combination = COMBINATION_TABLE_DUBEOLSIK[pair] + history += if (combination != null) { + currentSyllable.copy(final = HangulJamo.Final(combination, combinationPair = pair)) + } else { + composingWord.append(currentSyllable.string) + history.clear() + HangulSyllable(initial = initial) + } + } + } else { + composingWord.append(currentSyllable.string) + history.clear() + history += HangulSyllable(initial = initial) + } + } + is HangulJamo.Vowel -> { + val medial = jamo.toMedial() + if (currentSyllable.final == null) { + history += + if (currentSyllable.medial != null) { + val combination = COMBINATION_TABLE_DUBEOLSIK[currentSyllable.medial.codePoint to (medial?.codePoint ?: -1)] + if (combination != null) { + currentSyllable.copy(medial = HangulJamo.Medial(combination)) + } else { + composingWord.append(currentSyllable.string) + history.clear() + HangulSyllable(medial = medial) + } + } else { + currentSyllable.copy(medial = medial) + } + } else if (currentSyllable.final.combinationPair != null) { + val pair = currentSyllable.final.combinationPair + + history.removeAt(history.lastIndex) + val final = HangulJamo.Final(pair.first) + history += currentSyllable.copy(final = final) + composingWord.append(syllable?.string ?: "") + history.clear() + val initial = HangulJamo.Final(pair.second).toConsonant()?.toInitial() + val newSyllable = HangulSyllable(initial = initial) + history += newSyllable + history += newSyllable.copy(medial = medial) + } else { + history.removeAt(history.lastIndex) + composingWord.append(syllable?.string ?: "") + history.clear() + val initial = currentSyllable.final.toConsonant()?.toInitial() + val newSyllable = HangulSyllable(initial = initial) + history += newSyllable + history += newSyllable.copy(medial = medial) + } + } + is HangulJamo.Initial -> { + history += + if (currentSyllable.initial != null) { + val combination = COMBINATION_TABLE_SEBEOLSIK[currentSyllable.initial.codePoint to jamo.codePoint] + if (combination != null && currentSyllable.medial == null && currentSyllable.final == null) { + currentSyllable.copy(initial = HangulJamo.Initial(combination)) + } else { + composingWord.append(currentSyllable.string) + history.clear() + HangulSyllable(initial = jamo) + } + } else { + currentSyllable.copy(initial = jamo) + } + } + is HangulJamo.Medial -> { + history += + if (currentSyllable.medial != null) { + val combination = COMBINATION_TABLE_SEBEOLSIK[currentSyllable.medial.codePoint to jamo.codePoint] + if (combination != null) { + currentSyllable.copy(medial = HangulJamo.Medial(combination)) + } else { + composingWord.append(currentSyllable.string) + history.clear() + HangulSyllable(medial = jamo) + } + } else { + currentSyllable.copy(medial = jamo) + } + } + is HangulJamo.Final -> { + history += + if (currentSyllable.final != null) { + val combination = COMBINATION_TABLE_SEBEOLSIK[currentSyllable.final.codePoint to jamo.codePoint] + if (combination != null) { + currentSyllable.copy(final = HangulJamo.Final(combination)) + } else { + composingWord.append(currentSyllable.string) + history.clear() + HangulSyllable(final = jamo) + } + } else { + currentSyllable.copy(final = jamo) + } + } + // compiler bug? when it's not added, compiler complains that it's missing + // but when added, linter (correctly) states it's unreachable anyway + is HangulJamo.NonHangul -> Unit + } + } + } + + return Event.createConsumedEvent(event) + } + + override val combiningStateFeedback: CharSequence + get() = composingWord.toString() + (syllable?.string ?: "") + + override fun reset() { + composingWord.setLength(0) + history.clear() + } + + sealed class HangulJamo { + abstract val codePoint: Int + abstract val modern: Boolean + val string: String get() = codePoint.toChar().toString() + data class NonHangul(override val codePoint: Int) : HangulJamo() { + override val modern: Boolean get() = false + } + data class Initial(override val codePoint: Int) : HangulJamo() { + override val modern: Boolean get() = codePoint in 0x1100 .. 0x1112 + val ordinal: Int get() = codePoint - 0x1100 + fun toConsonant(): Consonant? { + val codePoint = COMPAT_CONSONANTS.getOrNull(CONVERT_INITIALS.indexOf(codePoint.toChar())) ?: return null + if(codePoint.code == 0) return null + return Consonant(codePoint.code) + } + } + data class Medial(override val codePoint: Int) : HangulJamo() { + override val modern: Boolean get() = codePoint in 1161 .. 0x1175 + val ordinal: Int get() = codePoint - 0x1161 + fun toVowel(): Vowel? { + val codePoint = COMPAT_VOWELS.getOrNull(CONVERT_MEDIALS.indexOf(codePoint.toChar())) ?: return null + return Vowel(codePoint.code) + } + } + data class Final(override val codePoint: Int, val combinationPair: Pair? = null) : HangulJamo() { + override val modern: Boolean get() = codePoint in 0x11a8 .. 0x11c2 + val ordinal: Int get() = codePoint - 0x11a7 + fun toConsonant(): Consonant? { + val codePoint = COMPAT_CONSONANTS.getOrNull(CONVERT_FINALS.indexOf(codePoint.toChar())) ?: return null + if(codePoint.code == 0) return null + return Consonant(codePoint.code) + } + } + data class Consonant(override val codePoint: Int) : HangulJamo() { + override val modern: Boolean get() = codePoint in 0x3131 .. 0x314e + val ordinal: Int get() = codePoint - 0x3131 + fun toInitial(): Initial? { + val codePoint = CONVERT_INITIALS.getOrNull(COMPAT_CONSONANTS.indexOf(codePoint.toChar())) ?: return null + if(codePoint.code == 0) return null + return Initial(codePoint.code) + } + fun toFinal(): Final? { + val codePoint = CONVERT_FINALS.getOrNull(COMPAT_CONSONANTS.indexOf(codePoint.toChar())) ?: return null + if(codePoint.code == 0) return null + return Final(codePoint.code) + } + } + data class Vowel(override val codePoint: Int) : HangulJamo() { + override val modern: Boolean get() = codePoint in 0x314f .. 0x3163 + val ordinal: Int get() = codePoint - 0x314f1 + fun toMedial(): Medial? { + val codePoint = CONVERT_MEDIALS.getOrNull(COMPAT_VOWELS.indexOf(codePoint.toChar())) ?: return null + if(codePoint.code == 0) return null + return Medial(codePoint.code) + } + } + companion object { + const val COMPAT_CONSONANTS = "ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ" + const val COMPAT_VOWELS = "ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ" + const val CONVERT_INITIALS = "ᄀᄁ\u0000ᄂ\u0000\u0000ᄃᄄᄅ\u0000\u0000\u0000\u0000\u0000\u0000\u0000ᄆᄇᄈ\u0000ᄉᄊᄋᄌᄍᄎᄏᄐᄑᄒ" + const val CONVERT_MEDIALS = "ᅡᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵ" + const val CONVERT_FINALS = "ᆨᆩᆪᆫᆬᆭᆮ\u0000ᆯᆰᆱᆲᆳᆴᆵᆶᆷᆸ\u0000ᆹᆺᆻᆼᆽ\u0000ᆾᆿᇀᇁᇂ" + fun of(codePoint: Int): HangulJamo { + return when(codePoint) { + in 0x3131 .. 0x314e -> Consonant(codePoint) + in 0x314f .. 0x3163 -> Vowel(codePoint) + in 0x1100 .. 0x115f -> Initial(codePoint) + in 0x1160 .. 0x11a7 -> Medial(codePoint) + in 0x11a8 .. 0x11ff -> Final(codePoint) + else -> NonHangul(codePoint) + } + } + } + } + + data class HangulSyllable( + val initial: HangulJamo.Initial? = null, + val medial: HangulJamo.Medial? = null, + val final: HangulJamo.Final? = null + ) { + val combinable: Boolean get() = (initial?.modern ?: false) && (medial?.modern ?: false) && (final?.modern ?: true) + val combined: String get() = (0xac00 + (initial?.ordinal ?: 0) * 21 * 28 + + (medial?.ordinal ?: 0) * 28 + + (final?.ordinal ?: 0)).toChar().toString() + val uncombined: String get() = (initial?.string ?: "") + (medial?.string ?: "") + (final?.string ?: "") + val uncombinedCompat: String get() = (initial?.toConsonant()?.string ?: "") + + (medial?.toVowel()?.string ?: "") + (final?.toConsonant()?.string ?: "") + val string: String get() = if (this.combinable) this.combined else this.uncombinedCompat + } + + companion object { + val COMBINATION_TABLE_DUBEOLSIK = mapOf, Int>( + 0x1169 to 0x1161 to 0x116a, + 0x1169 to 0x1162 to 0x116b, + 0x1169 to 0x1175 to 0x116c, + 0x116e to 0x1165 to 0x116f, + 0x116e to 0x1166 to 0x1170, + 0x116e to 0x1175 to 0x1171, + 0x1173 to 0x1175 to 0x1174, + + 0x11a8 to 0x11ba to 0x11aa, + 0x11ab to 0x11bd to 0x11ac, + 0x11ab to 0x11c2 to 0x11ad, + 0x11af to 0x11a8 to 0x11b0, + 0x11af to 0x11b7 to 0x11b1, + 0x11af to 0x11b8 to 0x11b2, + 0x11af to 0x11ba to 0x11b3, + 0x11af to 0x11c0 to 0x11b4, + 0x11af to 0x11c1 to 0x11b5, + 0x11af to 0x11c2 to 0x11b6, + 0x11b8 to 0x11ba to 0x11b9 + ) + val COMBINATION_TABLE_SEBEOLSIK = mapOf, Int>( + 0x1100 to 0x1100 to 0x1101, // ㄲ + 0x1103 to 0x1103 to 0x1104, // ㄸ + 0x1107 to 0x1107 to 0x1108, // ㅃ + 0x1109 to 0x1109 to 0x110a, // ㅆ + 0x110c to 0x110c to 0x110d, // ㅉ + + 0x1169 to 0x1161 to 0x116a, // ㅘ + 0x1169 to 0x1162 to 0x116b, // ㅙ + 0x1169 to 0x1175 to 0x116c, // ㅚ + 0x116e to 0x1165 to 0x116f, // ㅝ + 0x116e to 0x1166 to 0x1170, // ㅞ + 0x116e to 0x1175 to 0x1171, // ㅟ + 0x1173 to 0x1175 to 0x1174, // ㅢ + + 0x11a8 to 0x11a8 to 0x11a9, // ㄲ + 0x11a8 to 0x11ba to 0x11aa, // ㄳ + 0x11ab to 0x11bd to 0x11ac, // ㄵ + 0x11ab to 0x11c2 to 0x11ad, // ㄶ + 0x11af to 0x11a8 to 0x11b0, // ㄺ + 0x11af to 0x11b7 to 0x11b1, // ㄻ + 0x11af to 0x11b8 to 0x11b2, // ㄼ + 0x11af to 0x11ba to 0x11b3, // ㄽ + 0x11af to 0x11c0 to 0x11b4, // ㄾ + 0x11af to 0x11c1 to 0x11b5, // ㄿ + 0x11af to 0x11c2 to 0x11b6, // ㅀ + 0x11b8 to 0x11ba to 0x11b9, // ㅄ + 0x11ba to 0x11ba to 0x11bb // ㅆ + ) + private fun createEventChainFromSequence(text: CharSequence, originalEvent: Event): Event { + return Event.createSoftwareTextEvent(text, KeyCode.MULTIPLE_CODE_POINTS, originalEvent) + } + } + +} diff --git a/app/src/main/java/helium314/keyboard/event/HangulEventDecoder.kt b/app/src/main/java/helium314/keyboard/event/HangulEventDecoder.kt new file mode 100644 index 0000000000..e0df5228c1 --- /dev/null +++ b/app/src/main/java/helium314/keyboard/event/HangulEventDecoder.kt @@ -0,0 +1,165 @@ +// SPDX-License-Identifier: GPL-3.0-only + +package helium314.keyboard.event + +import android.view.KeyEvent +import helium314.keyboard.latin.RichInputMethodSubtype + +import helium314.keyboard.event.HangulCombiner.HangulJamo + +object HangulEventDecoder { + + @JvmStatic + fun decodeHardwareKeyEvent(subtype: RichInputMethodSubtype, event: KeyEvent, defaultEvent: () -> Event): Event { + val layout = LAYOUTS[subtype.mainLayoutName] ?: return defaultEvent() + val codePoint = layout[event.keyCode]?.let { if (event.isShiftPressed) it.second else it.first } ?: return defaultEvent() + val hardwareEvent = Event.createHardwareKeypressEvent(codePoint, event.keyCode, event.metaState, null, event.repeatCount != 0) + return decodeSoftwareKeyEvent(hardwareEvent) + } + + @JvmStatic + fun decodeSoftwareKeyEvent(event: Event): Event { + if (event.isCombining) return event + return if (HangulJamo.of(event.codePoint) is HangulJamo.NonHangul) event + else Event.createCombiningEvent(event) + } + + private val LAYOUT_DUBEOLSIK_STANDARD = mapOf( + 45 to (0x3142 to 0x3143), + 51 to (0x3148 to 0x3149), + 33 to (0x3137 to 0x3138), + 46 to (0x3131 to 0x3132), + 48 to (0x3145 to 0x3146), + 53 to (0x315b to 0x315b), + 49 to (0x3155 to 0x3155), + 37 to (0x3151 to 0x3151), + 43 to (0x3150 to 0x3152), + 44 to (0x3154 to 0x3156), + + 29 to (0x3141 to 0x3141), + 47 to (0x3134 to 0x3134), + 32 to (0x3147 to 0x3147), + 34 to (0x3139 to 0x3139), + 35 to (0x314e to 0x314e), + 36 to (0x3157 to 0x3157), + 38 to (0x3153 to 0x3153), + 39 to (0x314f to 0x314f), + 40 to (0x3163 to 0x3163), + + 54 to (0x314b to 0x314b), + 52 to (0x314c to 0x314c), + 31 to (0x314a to 0x314a), + 50 to (0x314d to 0x314d), + 30 to (0x3160 to 0x3160), + 42 to (0x315c to 0x315c), + 41 to (0x3161 to 0x3161) + ) + + private val LAYOUT_SEBEOLSIK_390 = mapOf( + 8 to (0x11c2 to 0x11bd), + 9 to (0x11bb to 0x0040), + 10 to (0x11b8 to 0x0023), + 11 to (0x116d to 0x0024), + 12 to (0x1172 to 0x0025), + 13 to (0x1163 to 0x005e), + 14 to (0x1168 to 0x0026), + 15 to (0x1174 to 0x002a), + 16 to (0x116e to 0x0028), + 7 to (0x110f to 0x0029), + + 45 to (0x11ba to 0x11c1), + 51 to (0x11af to 0x11c0), + 33 to (0x1167 to 0x11bf), + 46 to (0x1162 to 0x1164), + 48 to (0x1165 to 0x003b), + 53 to (0x1105 to 0x003c), + 49 to (0x1103 to 0x0037), + 37 to (0x1106 to 0x0038), + 43 to (0x110e to 0x0039), + 44 to (0x1111 to 0x003e), + + 29 to (0x11bc to 0x11ae), + 47 to (0x11ab to 0x11ad), + 32 to (0x1175 to 0x11b0), + 34 to (0x1161 to 0x11a9), + 35 to (0x1173 to 0x002f), + 36 to (0x1102 to 0x0027), + 38 to (0x110b to 0x0034), + 39 to (0x1100 to 0x0035), + 40 to (0x110c to 0x0036), + 74 to (0x1107 to 0x003a), + 75 to (0x1110 to 0x0022), + + 54 to (0x11b7 to 0x11be), + 52 to (0x11a8 to 0x11b9), + 31 to (0x1166 to 0x11b1), + 50 to (0x1169 to 0x11b6), + 30 to (0x116e to 0x0021), + 42 to (0x1109 to 0x0030), + 41 to (0x1112 to 0x0031), + 55 to (0x002c to 0x0032), + 56 to (0x002e to 0x0033), + 76 to (0x1169 to 0x003f) + ) + + private val LAYOUT_SEBEOLSIK_FINAL = mapOf( + 68 to (0x002a to 0x203b), + + 8 to (0x11c2 to 0x11a9), + 9 to (0x11bb to 0x11b0), + 10 to (0x11b8 to 0x11bd), + 11 to (0x116d to 0x11b5), + 12 to (0x1172 to 0x11b4), + 13 to (0x1163 to 0x003d), + 14 to (0x1168 to 0x201c), + 15 to (0x1174 to 0x201d), + 16 to (0x116e to 0x0027), + 7 to (0x110f to 0x007e), + 69 to (0x0029 to 0x003b), + 70 to (0x003e to 0x002b), + + 45 to (0x11ba to 0x11c1), + 51 to (0x11af to 0x11c0), + 33 to (0x1167 to 0x11ac), + 46 to (0x1162 to 0x11b6), + 48 to (0x1165 to 0x11b3), + 53 to (0x1105 to 0x0035), + 49 to (0x1103 to 0x0036), + 37 to (0x1106 to 0x0037), + 43 to (0x110e to 0x0038), + 44 to (0x1111 to 0x0039), + 71 to (0x0028 to 0x0025), + 72 to (0x003c to 0x002f), + 73 to (0x003a to 0x005c), + + 29 to (0x11bc to 0x11ae), + 47 to (0x11ab to 0x11ad), + 32 to (0x1175 to 0x11b2), + 34 to (0x1161 to 0x11b1), + 35 to (0x1173 to 0x1164), + 36 to (0x1102 to 0x0030), + 38 to (0x110b to 0x0031), + 39 to (0x1100 to 0x0032), + 40 to (0x110c to 0x0033), + 74 to (0x1107 to 0x0034), + 75 to (0x1110 to 0x00b7), + + 54 to (0x11b7 to 0x11be), + 52 to (0x11a8 to 0x11b9), + 31 to (0x1166 to 0x11bf), + 50 to (0x1169 to 0x11aa), + 30 to (0x116e to 0x003f), + 42 to (0x1109 to 0x002d), + 41 to (0x1112 to 0x0022), + 55 to (0x002c to 0x002c), + 56 to (0x002e to 0x002e), + 76 to (0x1169 to 0x0021) + ) + + private val LAYOUTS = mapOf( + "korean" to LAYOUT_DUBEOLSIK_STANDARD, + "korean_sebeolsik_390" to LAYOUT_SEBEOLSIK_390, + "korean_sebeolsik_final" to LAYOUT_SEBEOLSIK_FINAL + ) + +} diff --git a/app/src/main/java/helium314/keyboard/event/HapticEvent.kt b/app/src/main/java/helium314/keyboard/event/HapticEvent.kt new file mode 100644 index 0000000000..4f3e01e75b --- /dev/null +++ b/app/src/main/java/helium314/keyboard/event/HapticEvent.kt @@ -0,0 +1,35 @@ +package helium314.keyboard.event + +import android.view.HapticFeedbackConstants + +enum class HapticEvent(@JvmField val feedbackConstant: Int, @JvmField val allowCustomDuration: Boolean) { + NO_HAPTICS(HapticFeedbackConstants.NO_HAPTICS, false), + KEY_PRESS(HapticFeedbackConstants.KEYBOARD_TAP, true), +// KEY_RELEASE( +// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) { +// HapticFeedbackConstants.KEYBOARD_RELEASE +// } else { +// HapticFeedbackConstants.? +// }, +// ? +// ), + KEY_LONG_PRESS(HapticFeedbackConstants.LONG_PRESS, true), +// KEY_REPEAT(HapticFeedbackConstants.?, ?), +// GESTURE_START( +// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { +// HapticFeedbackConstants.GESTURE_START +// } else { +// HapticFeedbackConstants.? +// }, +// ? +// ), + GESTURE_MOVE(HapticFeedbackConstants.CLOCK_TICK, false), +// GESTURE_END( +// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { +// HapticFeedbackConstants.GESTURE_END +// } else { +// HapticFeedbackConstants.? +// }, +// ? +// ) +} diff --git a/app/src/main/java/helium314/keyboard/event/HardwareEventDecoder.kt b/app/src/main/java/helium314/keyboard/event/HardwareEventDecoder.kt new file mode 100644 index 0000000000..2ca286ad56 --- /dev/null +++ b/app/src/main/java/helium314/keyboard/event/HardwareEventDecoder.kt @@ -0,0 +1,15 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.event + +import android.view.KeyEvent + +/** + * An event decoder for hardware events. + */ +interface HardwareEventDecoder : EventDecoder { + fun decodeHardwareKey(keyEvent: KeyEvent): Event +} \ No newline at end of file diff --git a/app/src/main/java/helium314/keyboard/event/HardwareKeyboardEventDecoder.kt b/app/src/main/java/helium314/keyboard/event/HardwareKeyboardEventDecoder.kt new file mode 100644 index 0000000000..b5951077b1 --- /dev/null +++ b/app/src/main/java/helium314/keyboard/event/HardwareKeyboardEventDecoder.kt @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.event + +import android.view.KeyCharacterMap +import android.view.KeyEvent +import helium314.keyboard.keyboard.internal.keyboard_parser.floris.KeyCode +import helium314.keyboard.latin.common.Constants + +/** + * A hardware event decoder for a hardware qwerty-ish keyboard. + * + * The events are always hardware keypresses, but they can be key down or key up events, they + * can be dead keys, they can be meta keys like shift or ctrl... This does not deal with + * 10-key like keyboards; a different decoder is used for this. + */ +// TODO: get the layout for this hardware keyboard +class HardwareKeyboardEventDecoder(val mDeviceId: Int) : HardwareEventDecoder { + override fun decodeHardwareKey(keyEvent: KeyEvent): Event { + // KeyEvent#getUnicodeChar() does not exactly returns a unicode char, but rather a value + // that includes both the unicode char in the lower 21 bits and flags in the upper bits, + // hence the name "codePointAndFlags". {@see KeyEvent#getUnicodeChar()} for more info. + val codePointAndFlags = keyEvent.unicodeChar.takeIf { it != 0 } + ?: Event.NOT_A_CODE_POINT // KeyEvent has 0 if no codePoint, but that's actually valid so we convert it to -1 + + // The keyCode is the abstraction used by the KeyEvent to represent different keys that + // do not necessarily map to a unicode character. This represents a physical key, like + // the key for 'A' or Space, but also Backspace or Ctrl or Caps Lock. + val keyCode = keyEvent.keyCode + val metaState = keyEvent.metaState + val isKeyRepeat = 0 != keyEvent.repeatCount + + return if (KeyEvent.KEYCODE_DEL == keyCode) { + Event.createHardwareKeypressEvent(Event.NOT_A_CODE_POINT, KeyCode.DELETE, metaState, null, isKeyRepeat) + } else if ( + (keyEvent.isPrintingKey && codePointAndFlags != Event.NOT_A_CODE_POINT) // can be NOT_A_CODE_POINT depending on meta state (e.g. ctrl+c) + || KeyEvent.KEYCODE_SPACE == keyCode + || KeyEvent.KEYCODE_ENTER == keyCode + ) { + if (0 != codePointAndFlags and KeyCharacterMap.COMBINING_ACCENT) { // A dead key. + Event.createDeadEvent(codePointAndFlags and KeyCharacterMap.COMBINING_ACCENT_MASK, keyCode, metaState, null) + } else if (KeyEvent.KEYCODE_ENTER == keyCode) { + // The Enter key. If the Shift key is not being pressed, this should send a + // CODE_ENTER to trigger the action if any, or a carriage return otherwise. If the + // Shift key is being pressed, this should send a CODE_SHIFT_ENTER and let + // Latin IME decide what to do with it. + if (keyEvent.isShiftPressed) { + Event.createHardwareKeypressEvent(Event.NOT_A_CODE_POINT, // todo: maybe remove, see also related comment in input logic + KeyCode.SHIFT_ENTER, 0, null, isKeyRepeat) + } else Event.createHardwareKeypressEvent(Constants.CODE_ENTER, keyCode, metaState, null, isKeyRepeat) + } else Event.createHardwareKeypressEvent(codePointAndFlags, keyCode, metaState, null, isKeyRepeat) + // If not Enter, then this is just a regular keypress event for a normal character + // that can be committed right away, taking into account the current state. + } else if (isDpadDirection(keyCode)) { + Event.createHardwareKeypressEvent(codePointAndFlags, keyCode, metaState, null, isKeyRepeat) +// } else if (KeyEvent.isModifierKey(keyCode)) { +// todo: we could synchronize meta state across HW and SW keyboard, but that's more work for little benefit (especially with shift & caps lock) + } else { + Event.notHandledEvent + } + } + + companion object { + private fun isDpadDirection(keyCode: Int) = when (keyCode) { + KeyEvent.KEYCODE_DPAD_UP, KeyEvent.KEYCODE_DPAD_DOWN, KeyEvent.KEYCODE_DPAD_LEFT, KeyEvent.KEYCODE_DPAD_RIGHT, + KeyEvent.KEYCODE_DPAD_DOWN_LEFT, KeyEvent.KEYCODE_DPAD_DOWN_RIGHT, KeyEvent.KEYCODE_DPAD_UP_RIGHT, + KeyEvent.KEYCODE_DPAD_UP_LEFT -> true + else -> false + } + } +} diff --git a/app/src/main/java/helium314/keyboard/event/InputTransaction.kt b/app/src/main/java/helium314/keyboard/event/InputTransaction.kt new file mode 100644 index 0000000000..b3b45fa412 --- /dev/null +++ b/app/src/main/java/helium314/keyboard/event/InputTransaction.kt @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ +package helium314.keyboard.event + +import helium314.keyboard.latin.settings.SettingsValues + +/** An object encapsulating a single transaction for input. */ +class InputTransaction( + // Initial conditions + val settingsValues: SettingsValues, + val event: Event, + val timestamp: Long, + val spaceState: Int, + val shiftState: Int +) { + /** Gets what type of shift update this transaction requires. */ + // Outputs + var requiredShiftUpdate = SHIFT_NO_UPDATE + private set + private var requiresUpdateSuggestions = false + private var didAffectContents = false + private var didAutoCorrect = false + /** + * Indicate that this transaction requires some type of shift update. + * @param updateType What type of shift update this requires. + */ + fun requireShiftUpdate(updateType: Int) { + requiredShiftUpdate = requiredShiftUpdate.coerceAtLeast(updateType) + } + + /** Indicate that this transaction requires updating the suggestions.*/ + fun setRequiresUpdateSuggestions() { + requiresUpdateSuggestions = true + } + + /** Whether this transaction requires updating the suggestions. */ + fun requiresUpdateSuggestions() = requiresUpdateSuggestions + + /** Indicate that this transaction affected the contents of the editor. */ + fun setDidAffectContents() { + didAffectContents = true + } + + /** Whether this transaction affected contents of the editor. */ + fun didAffectContents() = didAffectContents + + /** Indicate that this transaction performed an auto-correction. */ + fun setDidAutoCorrect() { + didAutoCorrect = true + } + + /** Whether this transaction performed an auto-correction. */ + fun didAutoCorrect() = didAutoCorrect + + companion object { + // UPDATE_LATER is stronger than UPDATE_NOW. The reason for this is, if we have to update later, + // it's because something will change that we can't evaluate now, which means that even if we + // re-evaluate now we'll have to do it again later. The only case where that wouldn't apply + // would be if we needed to update now to find out the new state right away, but then we + // can't do it with this deferred mechanism anyway. + const val SHIFT_NO_UPDATE = 0 + const val SHIFT_UPDATE_NOW = 1 + const val SHIFT_UPDATE_LATER = 2 + } +} diff --git a/app/src/main/java/helium314/keyboard/keyboard/Key.java b/app/src/main/java/helium314/keyboard/keyboard/Key.java new file mode 100644 index 0000000000..c5de708515 --- /dev/null +++ b/app/src/main/java/helium314/keyboard/keyboard/Key.java @@ -0,0 +1,1278 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.keyboard; + +import android.graphics.Rect; +import android.graphics.Typeface; +import android.graphics.drawable.Drawable; +import android.text.TextUtils; + +import helium314.keyboard.keyboard.internal.KeyDrawParams; +import helium314.keyboard.keyboard.internal.KeySpecParser; +import helium314.keyboard.keyboard.internal.KeyVisualAttributes; +import helium314.keyboard.keyboard.internal.KeyboardIconsSet; +import helium314.keyboard.keyboard.internal.KeyboardParams; +import helium314.keyboard.keyboard.internal.PopupKeySpec; +import helium314.keyboard.keyboard.internal.keyboard_parser.floris.KeyCode; +import helium314.keyboard.keyboard.internal.keyboard_parser.floris.PopupSet; +import helium314.keyboard.latin.common.Constants; +import helium314.keyboard.latin.common.StringUtils; +import helium314.keyboard.latin.utils.PopupKeysUtilsKt; +import helium314.keyboard.latin.utils.ToolbarKey; +import helium314.keyboard.latin.utils.ToolbarUtilsKt; +import kotlin.collections.ArraysKt; + +import java.util.Arrays; +import java.util.Locale; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +/** + * Class for describing the position and characteristics of a single key in the keyboard. + */ +public class Key implements Comparable { + /** + * The key code (unicode or custom code) that this key generates. + */ + private final int mCode; + + /** Label to display */ + private final String mLabel; + /** Hint label to display on the key in conjunction with the label */ + private final String mHintLabel; + /** Flags of the label */ + private final int mLabelFlags; + public static final int LABEL_FLAGS_ALIGN_HINT_LABEL_TO_BOTTOM = 0x02; + public static final int LABEL_FLAGS_ALIGN_ICON_TO_BOTTOM = 0x04; + public static final int LABEL_FLAGS_ALIGN_LABEL_OFF_CENTER = 0x08; + // Font typeface specification. + private static final int LABEL_FLAGS_FONT_MASK = 0x30; + public static final int LABEL_FLAGS_FONT_NORMAL = 0x10; + public static final int LABEL_FLAGS_FONT_MONO_SPACE = 0x20; + public static final int LABEL_FLAGS_FONT_DEFAULT = 0x30; + // Start of key text ratio enum values + private static final int LABEL_FLAGS_FOLLOW_KEY_TEXT_RATIO_MASK = 0x1C0; + public static final int LABEL_FLAGS_FOLLOW_KEY_LARGE_LETTER_RATIO = 0x40; + public static final int LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO = 0x80; + public static final int LABEL_FLAGS_FOLLOW_KEY_LABEL_RATIO = 0xC0; + public static final int LABEL_FLAGS_FOLLOW_KEY_HINT_LABEL_RATIO = 0x140; + // End of key text ratio mask enum values + public static final int LABEL_FLAGS_HAS_POPUP_HINT = 0x200; + public static final int LABEL_FLAGS_HAS_SHIFTED_LETTER_HINT = 0x400; + public static final int LABEL_FLAGS_HAS_HINT_LABEL = 0x800; + // The bit to calculate the ratio of key label width against key width. If autoXScale bit is on + // and autoYScale bit is off, the key label may be shrunk only for X-direction. + // If both autoXScale and autoYScale bits are on, the key label text size may be auto scaled. + public static final int LABEL_FLAGS_AUTO_X_SCALE = 0x4000; + public static final int LABEL_FLAGS_AUTO_Y_SCALE = 0x8000; + public static final int LABEL_FLAGS_AUTO_SCALE = LABEL_FLAGS_AUTO_X_SCALE + | LABEL_FLAGS_AUTO_Y_SCALE; + public static final int LABEL_FLAGS_PRESERVE_CASE = 0x10000; + public static final int LABEL_FLAGS_SHIFTED_LETTER_ACTIVATED = 0x20000; + public static final int LABEL_FLAGS_FROM_CUSTOM_ACTION_LABEL = 0x40000; + public static final int LABEL_FLAGS_FOLLOW_FUNCTIONAL_TEXT_COLOR = 0x80000; + public static final int LABEL_FLAGS_KEEP_BACKGROUND_ASPECT_RATIO = 0x100000; + public static final int LABEL_FLAGS_DISABLE_HINT_LABEL = 0x40000000; + public static final int LABEL_FLAGS_DISABLE_ADDITIONAL_POPUP_KEYS = 0x80000000; + + /** Icon to display instead of a label. Icon takes precedence over a label */ + @Nullable private final String mIconName; + + /** Width of the key, excluding the gap */ + private final int mWidth; + /** Height of the key, excluding the gap */ + private final int mHeight; + /** + * The combined width in pixels of the horizontal gaps belonging to this key, both to the left + * and to the right. I.e., mWidth + mHorizontalGap = total width belonging to the key. + */ + private final int mHorizontalGap; + /** + * The combined height in pixels of the vertical gaps belonging to this key, both above and + * below. I.e., mHeight + mVerticalGap = total height belonging to the key. + */ + private final int mVerticalGap; + /** X coordinate of the top-left corner of the key in the keyboard layout, excluding the gap. */ + private final int mX; + /** Y coordinate of the top-left corner of the key in the keyboard layout, excluding the gap. */ + private final int mY; + /** Hit bounding box of the key */ + @NonNull + private final Rect mHitBox = new Rect(); + + /** Popup keys. It is guaranteed that this is null or an array of one or more elements */ + @Nullable + private final PopupKeySpec[] mPopupKeys; + /** Popup keys column number and flags */ + private final int mPopupKeysColumnAndFlags; + private static final int POPUP_KEYS_COLUMN_NUMBER_MASK = 0x000000ff; + // If this flag is specified, popup keys keyboard should have the specified number of columns. + // Otherwise popup keys keyboard should have less than or equal to the specified maximum number + // of columns. + private static final int POPUP_KEYS_FLAGS_FIXED_COLUMN = 0x00000100; + // If this flag is specified, the order of popup keys is determined by the order in the popup + // keys' specification. Otherwise the order of popup keys is automatically determined. + private static final int POPUP_KEYS_FLAGS_FIXED_ORDER = 0x00000200; + private static final int POPUP_KEYS_MODE_MAX_COLUMN_WITH_AUTO_ORDER = 0; + private static final int POPUP_KEYS_MODE_FIXED_COLUMN_WITH_AUTO_ORDER = POPUP_KEYS_FLAGS_FIXED_COLUMN; + private static final int POPUP_KEYS_MODE_FIXED_COLUMN_WITH_FIXED_ORDER = (POPUP_KEYS_FLAGS_FIXED_COLUMN | POPUP_KEYS_FLAGS_FIXED_ORDER); + private static final int POPUP_KEYS_FLAGS_HAS_LABELS = 0x40000000; + private static final int POPUP_KEYS_FLAGS_NEEDS_DIVIDERS = 0x20000000; + private static final int POPUP_KEYS_FLAGS_NO_PANEL_AUTO_POPUP_KEY = 0x10000000; + // TODO: Rename these specifiers to !autoOrder! and !fixedOrder! respectively. + public static final String POPUP_KEYS_AUTO_COLUMN_ORDER = "!autoColumnOrder!"; + public static final String POPUP_KEYS_FIXED_COLUMN_ORDER = "!fixedColumnOrder!"; + public static final String POPUP_KEYS_HAS_LABELS = "!hasLabels!"; + private static final String POPUP_KEYS_NEEDS_DIVIDERS = "!needsDividers!"; + private static final String POPUP_KEYS_NO_PANEL_AUTO_POPUP_KEY = "!noPanelAutoPopupKey!"; + + /** Background type that represents different key background visual than normal one. */ + private final int mBackgroundType; + public static final int BACKGROUND_TYPE_EMPTY = 0; + public static final int BACKGROUND_TYPE_NORMAL = 1; + public static final int BACKGROUND_TYPE_FUNCTIONAL = 2; + public static final int BACKGROUND_TYPE_ACTION = 3; + public static final int BACKGROUND_TYPE_SPACEBAR = 4; + + private final int mActionFlags; + private static final int ACTION_FLAGS_IS_REPEATABLE = 0x01; + private static final int ACTION_FLAGS_NO_KEY_PREVIEW = 0x02; + private static final int ACTION_FLAGS_ALT_CODE_WHILE_TYPING = 0x04; + private static final int ACTION_FLAGS_ENABLE_LONG_PRESS = 0x08; + + @Nullable + private final KeyVisualAttributes mKeyVisualAttributes; + @Nullable + private final OptionalAttributes mOptionalAttributes; + + private static final class OptionalAttributes { + /** Text to output when pressed. This can be multiple characters, like ".com" */ + public final String mOutputText; + public final int mAltCode; + /** Icon for disabled state */ + @Nullable public final String mDisabledIconName; + /** The visual insets */ + public final int mVisualInsetsLeft; + public final int mVisualInsetsRight; + + private OptionalAttributes(final String outputText, final int altCode, @Nullable final String disabledIconName, + final int visualInsetsLeft, final int visualInsetsRight) { + mOutputText = outputText; + mAltCode = altCode; + mDisabledIconName = disabledIconName; + mVisualInsetsLeft = visualInsetsLeft; + mVisualInsetsRight = visualInsetsRight; + } + + @Nullable + public static OptionalAttributes newInstance(final String outputText, final int altCode, + @Nullable final String disabledIconName, final int visualInsetsLeft, final int visualInsetsRight) { + if (outputText == null && altCode == KeyCode.NOT_SPECIFIED + && disabledIconName == null && visualInsetsLeft == 0 + && visualInsetsRight == 0) { + return null; + } + return new OptionalAttributes(outputText, altCode, disabledIconName, visualInsetsLeft, + visualInsetsRight); + } + } + + private final int mHashCode; + + /** The current pressed state of this key */ + private boolean mPressed; + /** Key is enabled and responds on press */ + private boolean mEnabled; + /** Key is locked (appears permanently pressed) */ + private boolean mLocked = false; + /** + * Constructor for a key on PopupKeyKeyboard and on MoreSuggestions. + */ + public Key(@Nullable final String label, @Nullable final String iconName, final int code, + @Nullable final String outputText, @Nullable final String hintLabel, + final int labelFlags, final int backgroundType, final int x, final int y, + final int width, final int height, final int horizontalGap, final int verticalGap) { + mWidth = width - horizontalGap; + mHeight = height - verticalGap; + mHorizontalGap = horizontalGap; + mVerticalGap = verticalGap; + mHintLabel = hintLabel; + mLabelFlags = labelFlags; + mBackgroundType = backgroundType; + // TODO: Pass keyActionFlags as an argument. + mActionFlags = ACTION_FLAGS_NO_KEY_PREVIEW; + mPopupKeys = null; + mPopupKeysColumnAndFlags = 0; + mLabel = label; + mCode = code; + mEnabled = (code != KeyCode.NOT_SPECIFIED); + mIconName = iconName; + mOptionalAttributes = OptionalAttributes.newInstance(outputText, KeyCode.NOT_SPECIFIED, + mIconName == null ? null : getDisabledIconName(mIconName), 0, 0); + // Horizontal gap is divided equally to both sides of the key. + mX = x + mHorizontalGap / 2; + mY = y; + mHitBox.set(x, y, x + width + 1, y + height); + mKeyVisualAttributes = null; + + mHashCode = computeHashCode(this); + } + + /** + * Copy constructor for DynamicGridKeyboard.GridKey. + * + * @param key the original key. + * @param popupKeys the popup keys that should be assigned to this key. + * @param labelHint the label hint that should be assigned to this key. + * @param backgroundType the background type that should be assigned to this key. + */ + protected Key(@NonNull final Key key, @Nullable final PopupKeySpec[] popupKeys, + @Nullable final String labelHint, final int backgroundType) { + // Final attributes. + mCode = key.mCode; + mLabel = key.mLabel; + mHintLabel = labelHint; + mLabelFlags = key.mLabelFlags; + mIconName = key.mIconName; + mWidth = key.mWidth; + mHeight = key.mHeight; + mHorizontalGap = key.mHorizontalGap; + mVerticalGap = key.mVerticalGap; + mX = key.mX; + mY = key.mY; + mHitBox.set(key.mHitBox); + mPopupKeys = popupKeys; + mPopupKeysColumnAndFlags = key.mPopupKeysColumnAndFlags; + mBackgroundType = backgroundType; + mActionFlags = key.mActionFlags; + mKeyVisualAttributes = key.mKeyVisualAttributes; + mOptionalAttributes = key.mOptionalAttributes; + mHashCode = key.mHashCode; + // Key state. + mPressed = key.mPressed; + mEnabled = key.mEnabled; + } + + /** constructor for creating emoji recent keys when there is no keyboard to take keys from */ + public Key(@NonNull final Key key, @Nullable final PopupKeySpec[] popupKeys, + @Nullable final String labelHint, final int backgroundType, final int code, @Nullable final String outputText) { + // Final attributes. + mCode = outputText == null ? code : KeyCode.MULTIPLE_CODE_POINTS; + mLabel = outputText == null ? StringUtils.newSingleCodePointString(code) : outputText; + mHintLabel = labelHint; + mLabelFlags = key.mLabelFlags; + mIconName = key.mIconName; + mWidth = key.mWidth; + mHeight = key.mHeight; + mHorizontalGap = key.mHorizontalGap; + mVerticalGap = key.mVerticalGap; + mX = key.mX; + mY = key.mY; + mHitBox.set(key.mHitBox); + mPopupKeys = popupKeys; + mPopupKeysColumnAndFlags = key.mPopupKeysColumnAndFlags; + mBackgroundType = backgroundType; + mActionFlags = key.mActionFlags; + mKeyVisualAttributes = key.mKeyVisualAttributes; + mOptionalAttributes = outputText == null ? null + : Key.OptionalAttributes.newInstance(outputText, KeyCode.NOT_SPECIFIED, null, 0, 0); + mHashCode = key.mHashCode; + // Key state. + mPressed = key.mPressed; + mEnabled = key.mEnabled; + } + + /** constructor from KeyParams */ + private Key(KeyParams keyParams) { + // stuff to copy + mCode = keyParams.mCode; + mLabel = keyParams.mLabel; + mHintLabel = keyParams.mHintLabel; + mLabelFlags = keyParams.mLabelFlags; + mIconName = keyParams.mIconName; + mPopupKeys = keyParams.mPopupKeys; + mPopupKeysColumnAndFlags = keyParams.mPopupKeysColumnAndFlags; + mBackgroundType = keyParams.mBackgroundType; + mActionFlags = keyParams.mActionFlags; + mKeyVisualAttributes = keyParams.mKeyVisualAttributes; + mOptionalAttributes = keyParams.mOptionalAttributes; + mEnabled = keyParams.mEnabled; + + // stuff to create + + // get the "correct" float gap: may shift keys by one pixel, but results in more uniform gaps between keys + final float horizontalGapFloat = isSpacer() ? 0 : (keyParams.mKeyboardParams.mRelativeHorizontalGap * keyParams.mKeyboardParams.mOccupiedWidth); + mHorizontalGap = Math.round(horizontalGapFloat); + mVerticalGap = Math.round(keyParams.mKeyboardParams.mRelativeVerticalGap * keyParams.mKeyboardParams.mOccupiedHeight); + mWidth = Math.round(keyParams.mAbsoluteWidth - horizontalGapFloat); + // height is always rounded down, because rounding up may make the keyboard too high to fit, leading to issues + mHeight = (int) (keyParams.mAbsoluteHeight - keyParams.mKeyboardParams.mVerticalGap); + if (!isSpacer() && (mWidth == 0 || mHeight == 0)) { + throw new IllegalStateException("key needs positive width and height"); + } + // Horizontal gap is divided equally to both sides of the key. + mX = Math.round(keyParams.xPos + horizontalGapFloat / 2); + mY = Math.round(keyParams.yPos); + mHitBox.set(Math.round(keyParams.xPos), Math.round(keyParams.yPos), Math.round(keyParams.xPos + keyParams.mAbsoluteWidth) + 1, + Math.round(keyParams.yPos + keyParams.mAbsoluteHeight)); + mHashCode = computeHashCode(this); + } + + private Key(@NonNull final Key key, @Nullable final PopupKeySpec[] popupKeys) { + // Final attributes. + mCode = key.mCode; + mLabel = key.mLabel; + mHintLabel = PopopUtilKt.findPopupHintLabel(popupKeys, key.mHintLabel); + mLabelFlags = key.mLabelFlags; + mIconName = key.mIconName; + mWidth = key.mWidth; + mHeight = key.mHeight; + mHorizontalGap = key.mHorizontalGap; + mVerticalGap = key.mVerticalGap; + mX = key.mX; + mY = key.mY; + mHitBox.set(key.mHitBox); + mPopupKeys = popupKeys; + mPopupKeysColumnAndFlags = key.mPopupKeysColumnAndFlags; + mBackgroundType = key.mBackgroundType; + if (popupKeys == null && mCode > Constants.CODE_SPACE && (key.mActionFlags & ACTION_FLAGS_ENABLE_LONG_PRESS) != 0) + mActionFlags = key.mActionFlags - ACTION_FLAGS_ENABLE_LONG_PRESS; + else + mActionFlags = key.mActionFlags; + mKeyVisualAttributes = key.mKeyVisualAttributes; + mOptionalAttributes = key.mOptionalAttributes; + mHashCode = key.mHashCode; + // Key state. + mPressed = key.mPressed; + mEnabled = key.mEnabled; + } + + @NonNull + public static Key removeRedundantPopupKeys(@NonNull final Key key, + @NonNull final PopupKeySpec.LettersOnBaseLayout lettersOnBaseLayout) { + if ((key.mPopupKeysColumnAndFlags & POPUP_KEYS_FLAGS_FIXED_COLUMN) != 0) + return key; // don't remove anything for fixed column popup keys + final PopupKeySpec[] popupKeys = key.getPopupKeys(); + final PopupKeySpec[] filteredPopupKeys = PopupKeySpec.removeRedundantPopupKeys( + popupKeys, lettersOnBaseLayout); + return (filteredPopupKeys == popupKeys) ? key : new Key(key, filteredPopupKeys); + } + + private static boolean needsToUpcase(final int labelFlags, final int keyboardElementId) { + if ((labelFlags & LABEL_FLAGS_PRESERVE_CASE) != 0) return false; + return switch (keyboardElementId) { + case KeyboardId.ELEMENT_ALPHABET_MANUAL_SHIFTED, KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED, + KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED, KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED -> true; + default -> false; + }; + } + + private static int computeHashCode(final Key key) { + return Arrays.hashCode(new Object[] { + key.mX, + key.mY, + key.mWidth, + key.mHeight, + key.mCode, + key.mLabel, + key.mHintLabel, + key.mIconName, + key.mBackgroundType, + Arrays.hashCode(key.mPopupKeys), + key.getOutputText(), + key.mActionFlags, + key.mLabelFlags, + // Key can be distinguishable without the following members. + // key.mOptionalAttributes.mAltCode, + // key.mOptionalAttributes.mDisabledIconId, + // key.mOptionalAttributes.mPreviewIconId, + // key.mHorizontalGap, + // key.mVerticalGap, + // key.mOptionalAttributes.mVisualInsetLeft, + // key.mOptionalAttributes.mVisualInsetRight, + // key.mMaxPopupKeysColumn, + }); + } + + private boolean equalsInternal(final Key o) { + if (this == o) return true; + return o.mX == mX + && o.mY == mY + && o.mWidth == mWidth + && o.mHeight == mHeight + && o.mCode == mCode + && TextUtils.equals(o.mLabel, mLabel) + && TextUtils.equals(o.mHintLabel, mHintLabel) + && TextUtils.equals(o.mIconName, mIconName) + && o.mBackgroundType == mBackgroundType + && Arrays.equals(o.mPopupKeys, mPopupKeys) + && TextUtils.equals(o.getOutputText(), getOutputText()) + && o.mActionFlags == mActionFlags + && o.mLabelFlags == mLabelFlags; + } + + @Override + public int compareTo(Key o) { + if (equalsInternal(o)) return 0; + if (mHashCode > o.mHashCode) return 1; + return -1; + } + + @Override + public int hashCode() { + return mHashCode; + } + + @Override + public boolean equals(final Object o) { + return o instanceof Key && equalsInternal((Key)o); + } + + @NonNull + @Override + public String toString() { + return toShortString() + " " + getX() + "," + getY() + " " + getWidth() + "x" + getHeight(); + } + + public String toShortString() { + final int code = getCode(); + if (code == KeyCode.MULTIPLE_CODE_POINTS) { + return getOutputText(); + } + return Constants.printableCode(code); + } + + public String toLongString() { + final String iconName = getIconName(); + final String topVisual = (iconName != null) + ? KeyboardIconsSet.PREFIX_ICON + iconName : getLabel(); + final String hintLabel = getHintLabel(); + final String visual = (hintLabel == null) ? topVisual : topVisual + "^" + hintLabel; + return toString() + " " + visual + "/" + backgroundName(mBackgroundType); + } + + private static String backgroundName(final int backgroundType) { + return switch (backgroundType) { + case BACKGROUND_TYPE_EMPTY -> "empty"; + case BACKGROUND_TYPE_NORMAL -> "normal"; + case BACKGROUND_TYPE_FUNCTIONAL -> "functional"; + case BACKGROUND_TYPE_ACTION -> "action"; + case BACKGROUND_TYPE_SPACEBAR -> "spacebar"; + default -> null; + }; + } + + public int getCode() { + return mCode; + } + + @Nullable + public String getLabel() { + return mLabel; + } + + @Nullable + public String getHintLabel() { + return mHintLabel; + } + + @Nullable + public PopupKeySpec[] getPopupKeys() { + return mPopupKeys; + } + + public void markAsLeftEdge(final KeyboardParams params) { + mHitBox.left = params.mLeftPadding; + } + + public void markAsRightEdge(final KeyboardParams params) { + mHitBox.right = params.mOccupiedWidth - params.mRightPadding; + } + + public void markAsTopEdge(final KeyboardParams params) { + mHitBox.top = params.mTopPadding; + } + + public void markAsBottomEdge(final KeyboardParams params) { + mHitBox.bottom = params.mOccupiedHeight + params.mBottomPadding; + } + + public final boolean isSpacer() { + return this instanceof Spacer; + } + + public final boolean hasActionKeyBackground() { + return mBackgroundType == BACKGROUND_TYPE_ACTION; + } + + public final boolean isShift() { + return mCode == KeyCode.SHIFT; + } + + public final boolean isModifier() { + return KeyCode.INSTANCE.isModifier(mCode); + } + + public final boolean isRepeatable() { + return (mActionFlags & ACTION_FLAGS_IS_REPEATABLE) != 0; + } + + public final boolean hasPreview() { + return (mActionFlags & ACTION_FLAGS_NO_KEY_PREVIEW) == 0; + } + + /** + * altCodeWhileTyping is a weird thing. + * When user pressed a typing key less than ignoreAltCodeKeyTimeout (config_ignore_alt_code_key_timeout / 350 ms) ago, + * this code will be used instead. There is no documentation, but it appears the purpose is to avoid unintentional layout switches. + * Assuming this is true, the key still is used now if pressed near the center, where we assume it's less likely to be accidental. + * See PointerTracker.isClearlyInsideKey + */ + public final boolean altCodeWhileTyping() { + return (mActionFlags & ACTION_FLAGS_ALT_CODE_WHILE_TYPING) != 0; + } + + public final boolean isLongPressEnabled() { + // We need not start long press timer on the key which has activated shifted letter. + return (mActionFlags & ACTION_FLAGS_ENABLE_LONG_PRESS) != 0 + && (mLabelFlags & LABEL_FLAGS_SHIFTED_LETTER_ACTIVATED) == 0; + } + + public KeyVisualAttributes getVisualAttributes() { + return mKeyVisualAttributes; + } + + @NonNull + public final Typeface selectTypeface(final KeyDrawParams params) { + return switch (mLabelFlags & LABEL_FLAGS_FONT_MASK) { + case LABEL_FLAGS_FONT_NORMAL -> Typeface.DEFAULT; + case LABEL_FLAGS_FONT_MONO_SPACE -> Typeface.MONOSPACE; + default -> params.mTypeface; // The type-face is specified by keyTypeface attribute. + }; + } + + public final int selectTextSize(final KeyDrawParams params) { + return switch (mLabelFlags & LABEL_FLAGS_FOLLOW_KEY_TEXT_RATIO_MASK) { + case LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO -> params.mLetterSize; + case LABEL_FLAGS_FOLLOW_KEY_LARGE_LETTER_RATIO -> params.mLargeLetterSize; + case LABEL_FLAGS_FOLLOW_KEY_LABEL_RATIO -> params.mLabelSize; + case LABEL_FLAGS_FOLLOW_KEY_HINT_LABEL_RATIO -> params.mHintLabelSize; + // No follow key ratio flag specified. + default -> StringUtils.codePointCount(mLabel) == 1 ? params.mLetterSize : params.mLabelSize; + }; + } + + public final int selectTextColor(final KeyDrawParams params) { + if ((mLabelFlags & LABEL_FLAGS_FOLLOW_FUNCTIONAL_TEXT_COLOR) != 0) { + return params.mFunctionalTextColor; + } + return isShiftedLetterActivated() ? params.mTextInactivatedColor : params.mTextColor; + } + + public final int selectHintTextSize(final KeyDrawParams params) { + if (hasHintLabel()) { + return params.mHintLabelSize; + } + if (hasShiftedLetterHint()) { + return params.mShiftedLetterHintSize; + } + return params.mHintLetterSize; + } + + public final int selectHintTextColor(final KeyDrawParams params) { + if (hasHintLabel()) { + return params.mHintLabelColor; + } + if (hasShiftedLetterHint()) { + return isShiftedLetterActivated() ? params.mShiftedLetterHintActivatedColor + : params.mShiftedLetterHintInactivatedColor; + } + return params.mHintLetterColor; + } + + public final int selectPopupKeyTextSize(final KeyDrawParams params) { + return hasLabelsInPopupKeys() ? params.mLabelSize : params.mLetterSize; + } + + public final String getPreviewLabel() { + return isShiftedLetterActivated() ? mHintLabel : mLabel; + } + + private boolean previewHasLetterSize() { + return (mLabelFlags & LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO) != 0 + || StringUtils.codePointCount(getPreviewLabel()) == 1; + } + + public final int selectPreviewTextSize(final KeyDrawParams params) { + if (previewHasLetterSize()) { + return params.mPreviewTextSize; + } + return params.mLetterSize; + } + + @NonNull + public Typeface selectPreviewTypeface(final KeyDrawParams params) { + if (previewHasLetterSize()) { + return selectTypeface(params); + } + return Typeface.DEFAULT_BOLD; + } + + public final boolean isAlignHintLabelToBottom(final int defaultFlags) { + return ((mLabelFlags | defaultFlags) & LABEL_FLAGS_ALIGN_HINT_LABEL_TO_BOTTOM) != 0; + } + + public final boolean isAlignIconToBottom() { + return (mLabelFlags & LABEL_FLAGS_ALIGN_ICON_TO_BOTTOM) != 0; + } + + public final boolean isAlignLabelOffCenter() { + return (mLabelFlags & LABEL_FLAGS_ALIGN_LABEL_OFF_CENTER) != 0; + } + + public final boolean hasPopupHint() { + return (mLabelFlags & LABEL_FLAGS_HAS_POPUP_HINT) != 0; + } + + public final boolean hasShiftedLetterHint() { + return (mLabelFlags & LABEL_FLAGS_HAS_SHIFTED_LETTER_HINT) != 0 + && !TextUtils.isEmpty(mHintLabel); + } + + public final boolean hasHintLabel() { + return (mLabelFlags & LABEL_FLAGS_HAS_HINT_LABEL) != 0; + } + + public final boolean needsAutoXScale() { + return (mLabelFlags & LABEL_FLAGS_AUTO_X_SCALE) != 0; + } + + public final boolean needsAutoScale() { + return (mLabelFlags & LABEL_FLAGS_AUTO_SCALE) == LABEL_FLAGS_AUTO_SCALE; + } + + public final boolean needsToKeepBackgroundAspectRatio(final int defaultFlags) { + return ((mLabelFlags | defaultFlags) & LABEL_FLAGS_KEEP_BACKGROUND_ASPECT_RATIO) != 0; + } + + public final boolean hasCustomActionLabel() { + return (mLabelFlags & LABEL_FLAGS_FROM_CUSTOM_ACTION_LABEL) != 0; + } + + private boolean isShiftedLetterActivated() { + return (mLabelFlags & LABEL_FLAGS_SHIFTED_LETTER_ACTIVATED) != 0 + && !TextUtils.isEmpty(mHintLabel); + } + + public final int getPopupKeysColumnNumber() { + return mPopupKeysColumnAndFlags & POPUP_KEYS_COLUMN_NUMBER_MASK; + } + + public final boolean isPopupKeysFixedColumn() { + return (mPopupKeysColumnAndFlags & POPUP_KEYS_FLAGS_FIXED_COLUMN) != 0; + } + + public final boolean isPopupKeysFixedOrder() { + return (mPopupKeysColumnAndFlags & POPUP_KEYS_FLAGS_FIXED_ORDER) != 0; + } + + public final boolean hasLabelsInPopupKeys() { + return (mPopupKeysColumnAndFlags & POPUP_KEYS_FLAGS_HAS_LABELS) != 0; + } + + public final int getPopupKeyLabelFlags() { + final int labelSizeFlag = hasLabelsInPopupKeys() + ? LABEL_FLAGS_FOLLOW_KEY_LABEL_RATIO + : LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO; + return labelSizeFlag | LABEL_FLAGS_AUTO_X_SCALE; + } + + public final boolean needsDividersInPopupKeys() { + return (mPopupKeysColumnAndFlags & POPUP_KEYS_FLAGS_NEEDS_DIVIDERS) != 0; + } + + public final boolean hasNoPanelAutoPopupKey() { + return (mPopupKeysColumnAndFlags & POPUP_KEYS_FLAGS_NO_PANEL_AUTO_POPUP_KEY) != 0; + } + + @Nullable + public final String getOutputText() { + final OptionalAttributes attrs = mOptionalAttributes; + return (attrs != null) ? attrs.mOutputText : null; + } + + public final int getAltCode() { + final OptionalAttributes attrs = mOptionalAttributes; + return (attrs != null) ? attrs.mAltCode : KeyCode.NOT_SPECIFIED; + } + + @Nullable + public String getIconName() { + return mIconName; + } + + @Nullable + public Drawable getIcon(final KeyboardIconsSet iconSet, final int alpha) { + final OptionalAttributes attrs = mOptionalAttributes; + final String iconName = mEnabled ? getIconName() : ((attrs != null) ? attrs.mDisabledIconName : null); + final Drawable icon = iconSet.getIconDrawable(iconName); + if (icon != null) { + icon.setAlpha(alpha); + } + return icon; + } + + @Nullable + public Drawable getPreviewIcon(final KeyboardIconsSet iconSet) { + return iconSet.getIconDrawable(getIconName()); + } + + /** + * Gets the background type of this key. + * @return Background type. + * @see Key#BACKGROUND_TYPE_EMPTY + * @see Key#BACKGROUND_TYPE_NORMAL + * @see Key#BACKGROUND_TYPE_FUNCTIONAL + * @see Key#BACKGROUND_TYPE_ACTION + * @see Key#BACKGROUND_TYPE_SPACEBAR + */ + public int getBackgroundType() { + return mBackgroundType; + } + + /** + * Gets the width of the key in pixels, excluding the gap. + * @return The width of the key in pixels, excluding the gap. + */ + public int getWidth() { + return mWidth; + } + + /** + * Gets the height of the key in pixels, excluding the gap. + * @return The height of the key in pixels, excluding the gap. + */ + public int getHeight() { + return mHeight; + } + + /** + * The combined width in pixels of the horizontal gaps belonging to this key, both above and + * below. I.e., getWidth() + getHorizontalGap() = total width belonging to the key. + * @return Horizontal gap belonging to this key. + */ + public int getHorizontalGap() { + return mHorizontalGap; + } + + /** + * The combined height in pixels of the vertical gaps belonging to this key, both above and + * below. I.e., getHeight() + getVerticalGap() = total height belonging to the key. + * @return Vertical gap belonging to this key. + */ + public int getVerticalGap() { + return mVerticalGap; + } + + /** + * Gets the x-coordinate of the top-left corner of the key in pixels, excluding the gap. + * @return The x-coordinate of the top-left corner of the key in pixels, excluding the gap. + */ + public int getX() { + return mX; + } + + /** + * Gets the y-coordinate of the top-left corner of the key in pixels, excluding the gap. + * @return The y-coordinate of the top-left corner of the key in pixels, excluding the gap. + */ + public int getY() { + return mY; + } + + public final int getDrawX() { + final int x = getX(); + final OptionalAttributes attrs = mOptionalAttributes; + return (attrs == null) ? x : x + attrs.mVisualInsetsLeft; + } + + public final int getDrawWidth() { + final OptionalAttributes attrs = mOptionalAttributes; + return (attrs == null) ? mWidth + : mWidth - attrs.mVisualInsetsLeft - attrs.mVisualInsetsRight; + } + + /** + * Informs the key that it has been pressed, in case it needs to change its appearance or + * state. + * @see #onReleased() + */ + public void onPressed() { + mPressed = true; + } + + /** + * Informs the key that it has been released, in case it needs to change its appearance or + * state. + * @see #onPressed() + */ + public void onReleased() { + mPressed = false; + } + + public final boolean isEnabled() { + return mEnabled; + } + + public void setEnabled(final boolean enabled) { + mEnabled = enabled; + } + + public void setLocked(final boolean locked) { + mLocked = locked; + } + + @NonNull + public Rect getHitBox() { + return mHitBox; + } + + /** + * Detects if a point falls on this key. + * @param x the x-coordinate of the point + * @param y the y-coordinate of the point + * @return whether or not the point falls on the key. If the key is attached to an edge, it + * will assume that all points between the key and the edge are considered to be on the key. + * @see #markAsLeftEdge(KeyboardParams) etc. + */ + public boolean isOnKey(final int x, final int y) { + return mHitBox.contains(x, y); + } + + /** + * Returns the square of the distance to the nearest edge of the key and the given point. + * @param x the x-coordinate of the point + * @param y the y-coordinate of the point + * @return the square of the distance of the point from the nearest edge of the key + */ + public int squaredDistanceToEdge(final int x, final int y) { + final int left = getX(); + final int right = left + mWidth; + final int top = getY(); + final int bottom = top + mHeight; + final int edgeX = x < left ? left : Math.min(x, right); + final int edgeY = y < top ? top : Math.min(y, bottom); + final int dx = x - edgeX; + final int dy = y - edgeY; + return dx * dx + dy * dy; + } + + static class KeyBackgroundState { + private final int[] mReleasedState; + private final int[] mPressedState; + + private KeyBackgroundState(final int ... attrs) { + mReleasedState = attrs; + mPressedState = Arrays.copyOf(attrs, attrs.length + 1); + mPressedState[attrs.length] = android.R.attr.state_pressed; + } + + public int[] getState(final boolean pressed) { + return pressed ? mPressedState : mReleasedState; + } + + public static final KeyBackgroundState[] STATES = { + // 0: BACKGROUND_TYPE_EMPTY + new KeyBackgroundState(android.R.attr.state_empty), + // 1: BACKGROUND_TYPE_NORMAL + new KeyBackgroundState(), + // 2: BACKGROUND_TYPE_FUNCTIONAL + new KeyBackgroundState(), + // 3: BACKGROUND_TYPE_ACTION + new KeyBackgroundState(android.R.attr.state_active), + // 4: BACKGROUND_TYPE_SPACEBAR + new KeyBackgroundState(), + }; + } + + /** + * Returns the background drawable for the key, based on the current state and type of the key. + * @return the background drawable of the key. + * @see android.graphics.drawable.StateListDrawable#setState(int[]) + */ + @NonNull + public final Drawable selectBackgroundDrawable(@NonNull final Drawable keyBackground, + @NonNull final Drawable functionalKeyBackground, + @NonNull final Drawable spacebarBackground, + @NonNull final Drawable actionKeyBackground) { + final Drawable background; + if (hasActionKeyBackground()) { + background = actionKeyBackground; + } else if (hasFunctionalBackground()) { + background = functionalKeyBackground; + } else if (mBackgroundType == BACKGROUND_TYPE_SPACEBAR) { + background = spacebarBackground; + } else { + background = keyBackground; + } + final int[] state = KeyBackgroundState.STATES[mBackgroundType].getState(mPressed || mLocked); + background.setState(state); + return background; + } + + public final boolean hasActionKeyPopups() { + if (!hasActionKeyBackground()) return false; + // only use the special action key popups for action colored keys, and only for icon popups + return ArraysKt.none(getPopupKeys(), (key) -> key.mIconName == null); + } + + public boolean hasFunctionalBackground() { + return mBackgroundType == BACKGROUND_TYPE_FUNCTIONAL; + } + + @Nullable private static String getDisabledIconName(@NonNull final String iconName) { + if (iconName.equals(ToolbarUtilsKt.getToolbarKeyStrings().get(ToolbarKey.VOICE))) + return KeyboardIconsSet.NAME_SHORTCUT_KEY_DISABLED; + return null; + } + + public static class Spacer extends Key { + private Spacer(KeyParams keyParams) { + super(keyParams); + } + + /** + * This constructor is being used only for divider in popup keys keyboard. + */ + protected Spacer(final KeyboardParams params, final int x, final int y, final int width, + final int height) { + super(null, null, KeyCode.NOT_SPECIFIED, null, + null, 0, BACKGROUND_TYPE_EMPTY, x, y, width, + height, params.mHorizontalGap, params.mVerticalGap); + } + } + + // for creating keys that might get modified later + public static class KeyParams { + // params for building + public boolean isSpacer; + private final KeyboardParams mKeyboardParams; // for reading gaps and keyboard width / height + public float mWidth; + public float mHeight; // also should allow negative values, indicating absolute height is defined + + // params that may change + public float mAbsoluteWidth; + public float mAbsoluteHeight; + public float xPos; + public float yPos; + + // params that remains constant + public final int mCode; + @Nullable public final String mLabel; + @Nullable public final String mHintLabel; + public final int mLabelFlags; + @Nullable public final String mIconName; + @Nullable public final PopupKeySpec[] mPopupKeys; + public final int mPopupKeysColumnAndFlags; + public final int mBackgroundType; + public final int mActionFlags; + @Nullable public final KeyVisualAttributes mKeyVisualAttributes; + @Nullable final OptionalAttributes mOptionalAttributes; + public final boolean mEnabled; + + public static KeyParams newSpacer(final KeyboardParams params, final float width) { + final KeyParams spacer = new KeyParams(params); + spacer.mWidth = width; + spacer.mHeight = params.mDefaultRowHeight; + return spacer; + } + + public Key createKey() { + if (isSpacer) return new Spacer(this); + return new Key(this); + } + + public void setAbsoluteDimensions(final float newX, final float newY) { + if (mHeight == 0) + mHeight = mKeyboardParams.mDefaultRowHeight; + if (!isSpacer && mWidth == 0) + throw new IllegalStateException("width = 0 should have been evaluated already"); + if (mHeight < 0) + // todo (later): deal with it properly when it needs to be adjusted, i.e. when changing popupKeys or moreSuggestions + throw new IllegalStateException("can't (yet) deal with absolute height"); + xPos = newX; + yPos = newY; + mAbsoluteWidth = mWidth * mKeyboardParams.mBaseWidth; + mAbsoluteHeight = mHeight * mKeyboardParams.mBaseHeight; + } + + private static int getPopupKeysColumnAndFlagsAndSetNullInArray(final KeyboardParams params, final String[] popupKeys) { + // Get maximum column order number and set a relevant mode value. + int popupKeysColumnAndFlags = POPUP_KEYS_MODE_MAX_COLUMN_WITH_AUTO_ORDER | params.mMaxPopupKeysKeyboardColumn; + int value; + if ((value = PopupKeySpec.getIntValue(popupKeys, POPUP_KEYS_AUTO_COLUMN_ORDER, -1)) > 0) { + // Override with fixed column order number and set a relevant mode value. + popupKeysColumnAndFlags = POPUP_KEYS_MODE_FIXED_COLUMN_WITH_AUTO_ORDER | (value & POPUP_KEYS_COLUMN_NUMBER_MASK); + } + if ((value = PopupKeySpec.getIntValue(popupKeys, POPUP_KEYS_FIXED_COLUMN_ORDER, -1)) > 0) { + // Override with fixed column order number and set a relevant mode value. + popupKeysColumnAndFlags = POPUP_KEYS_MODE_FIXED_COLUMN_WITH_FIXED_ORDER | (value & POPUP_KEYS_COLUMN_NUMBER_MASK); + } + if (PopupKeySpec.getBooleanValue(popupKeys, POPUP_KEYS_HAS_LABELS)) { + popupKeysColumnAndFlags |= POPUP_KEYS_FLAGS_HAS_LABELS; + } + if (PopupKeySpec.getBooleanValue(popupKeys, POPUP_KEYS_NEEDS_DIVIDERS)) { + popupKeysColumnAndFlags |= POPUP_KEYS_FLAGS_NEEDS_DIVIDERS; + } + if (PopupKeySpec.getBooleanValue(popupKeys, POPUP_KEYS_NO_PANEL_AUTO_POPUP_KEY)) { + popupKeysColumnAndFlags |= POPUP_KEYS_FLAGS_NO_PANEL_AUTO_POPUP_KEY; + } + return popupKeysColumnAndFlags; + } + + public String getOutputText() { + return mOptionalAttributes == null ? null : mOptionalAttributes.mOutputText; + } + + public KeyParams( + @NonNull final String keySpec, + @NonNull final KeyboardParams params, + final float relativeWidth, + final int labelFlags, + final int backgroundType, + @Nullable final PopupSet popupSet + ) { + this(keySpec, KeySpecParser.getCode(keySpec), params, relativeWidth, labelFlags, backgroundType, popupSet); + } + + /** + * constructor that does not require attrs, style or absolute key dimension / position + * setDimensionsFromRelativeSize needs to be called before creating the key + */ + public KeyParams( + // todo (much later): replace keySpec? these encoded icons and codes are not really great + @NonNull final String keySpec, // key text or some special string for KeySpecParser, e.g. "!icon/shift_key|!code/key_shift" (avoid using !text, should be removed) + final int code, + @NonNull final KeyboardParams params, + final float width, + final int labelFlags, + final int backgroundType, + @Nullable final PopupSet popupSet + ) { + mKeyboardParams = params; + mBackgroundType = backgroundType; + mLabelFlags = labelFlags; + mWidth = width; + mHeight = params.mDefaultRowHeight; + mIconName = KeySpecParser.getIconName(keySpec); + + final boolean needsToUpcase = needsToUpcase(mLabelFlags, params.mId.mElementId); + final Locale localeForUpcasing = params.mId.getLocale(); + int actionFlags = 0; + if (params.mId.isNumberLayout()) + actionFlags = ACTION_FLAGS_NO_KEY_PREVIEW; + + // label + String label = null; + if ((mLabelFlags & LABEL_FLAGS_FROM_CUSTOM_ACTION_LABEL) != 0) { + mLabel = params.mId.mCustomActionLabel; + } else if (code >= Character.MIN_SUPPLEMENTARY_CODE_POINT) { + // This is a workaround to have a key that has a supplementary code point in its label. + // Because we can put a string in resource neither as a XML entity of a supplementary + // code point nor as a surrogate pair. + mLabel = new StringBuilder().appendCodePoint(code).toString(); + } else { + label = KeySpecParser.getLabel(keySpec); + mLabel = needsToUpcase + ? StringUtils.toTitleCaseOfKeyLabel(label, localeForUpcasing) + : label; + } + + // popupKeys + final String[] popupKeys = PopupKeysUtilsKt.createPopupKeysArray(popupSet, mKeyboardParams, label != null ? label : keySpec); + mPopupKeysColumnAndFlags = getPopupKeysColumnAndFlagsAndSetNullInArray(params, popupKeys); + final String[] finalPopupKeys = popupKeys == null ? null : PopupKeySpec.filterOutEmptyString(popupKeys); + if (finalPopupKeys != null) { + actionFlags |= ACTION_FLAGS_ENABLE_LONG_PRESS; + mPopupKeys = new PopupKeySpec[finalPopupKeys.length]; + for (int i = 0; i < finalPopupKeys.length; i++) { + mPopupKeys[i] = new PopupKeySpec(finalPopupKeys[i], needsToUpcase, localeForUpcasing); + } + } else { + mPopupKeys = null; + } + + // hint label + if ((mLabelFlags & LABEL_FLAGS_DISABLE_HINT_LABEL) != 0) { + mHintLabel = null; + } else { + // maybe also always null for comma and period keys + final String hintLabel = PopupKeysUtilsKt.getHintLabel(popupSet, params, keySpec); + mHintLabel = needsToUpcase + ? StringUtils.toTitleCaseOfKeyLabel(hintLabel, localeForUpcasing) + : hintLabel; + } + + String outputText = KeySpecParser.getOutputText(keySpec, code); + if (needsToUpcase) { + outputText = StringUtils.toTitleCaseOfKeyLabel(outputText, localeForUpcasing); + } + // Choose the first letter of the label as primary code if not specified. + if (code == KeyCode.NOT_SPECIFIED && TextUtils.isEmpty(outputText) && !TextUtils.isEmpty(mLabel)) { + if (StringUtils.codePointCount(mLabel) == 1) { + // Use the first letter of the hint label if shiftedLetterActivated flag is + // specified. + if ((mLabelFlags & LABEL_FLAGS_HAS_SHIFTED_LETTER_HINT) != 0 && (mLabelFlags & LABEL_FLAGS_SHIFTED_LETTER_ACTIVATED) != 0 + && !TextUtils.isEmpty(mHintLabel)) { + mCode = mHintLabel.codePointAt(0); + } else { + mCode = mLabel.codePointAt(0); + } + } else { + // In some locale and case, the character might be represented by multiple code + // points, such as upper case Eszett of German alphabet. + outputText = mLabel; + mCode = KeyCode.MULTIPLE_CODE_POINTS; + } + } else if (code == KeyCode.NOT_SPECIFIED && outputText != null) { + if (StringUtils.codePointCount(outputText) == 1) { + mCode = outputText.codePointAt(0); + outputText = null; + } else { + mCode = KeyCode.MULTIPLE_CODE_POINTS; + } + } else { + mCode = needsToUpcase ? StringUtils.toTitleCaseOfKeyCode(code, localeForUpcasing) : code; + } + + // action flags don't need to be specified, they can be deduced from the key + if (mCode == Constants.CODE_SPACE + || mCode == KeyCode.LANGUAGE_SWITCH + || (mCode == KeyCode.SYMBOL_ALPHA && !params.mId.isAlphabetKeyboard()) + ) + actionFlags |= ACTION_FLAGS_ENABLE_LONG_PRESS; + if (mCode <= Constants.CODE_SPACE && mCode != KeyCode.MULTIPLE_CODE_POINTS && mIconName == null) + actionFlags |= ACTION_FLAGS_NO_KEY_PREVIEW; + switch (mCode) { + case KeyCode.DELETE, KeyCode.ARROW_LEFT, KeyCode.ARROW_RIGHT, KeyCode.ARROW_UP, KeyCode.ARROW_DOWN, + KeyCode.WORD_LEFT, KeyCode.WORD_RIGHT, KeyCode.PAGE_UP, KeyCode.PAGE_DOWN: + // repeating is disabled if a key is configured with pop-ups + if (mPopupKeys == null) + actionFlags |= ACTION_FLAGS_IS_REPEATABLE; + // fallthrough + case KeyCode.SHIFT, Constants.CODE_ENTER, KeyCode.SHIFT_ENTER, KeyCode.ALPHA, Constants.CODE_SPACE, KeyCode.NUMPAD, + KeyCode.SYMBOL, KeyCode.SYMBOL_ALPHA, KeyCode.LANGUAGE_SWITCH, KeyCode.EMOJI, KeyCode.CLIPBOARD, + KeyCode.MOVE_START_OF_LINE, KeyCode.MOVE_END_OF_LINE, KeyCode.MOVE_START_OF_PAGE, KeyCode.MOVE_END_OF_PAGE: + actionFlags |= ACTION_FLAGS_NO_KEY_PREVIEW; // no preview even if icon! + } + if (mCode == KeyCode.SETTINGS || mCode == KeyCode.LANGUAGE_SWITCH) + actionFlags |= ACTION_FLAGS_ALT_CODE_WHILE_TYPING; + mActionFlags = actionFlags; + + final int altCodeInAttr; // settings and language switch keys have alt code space, all others nothing + if (mCode == KeyCode.SETTINGS || mCode == KeyCode.LANGUAGE_SWITCH || mCode == KeyCode.EMOJI || mCode == KeyCode.CLIPBOARD) + altCodeInAttr = Constants.CODE_SPACE; + else + altCodeInAttr = KeyCode.NOT_SPECIFIED; + final int altCode = needsToUpcase + ? StringUtils.toTitleCaseOfKeyCode(altCodeInAttr, localeForUpcasing) + : altCodeInAttr; + mOptionalAttributes = OptionalAttributes.newInstance(outputText, altCode, + // disabled icon only shortcut / voice key, visual insets can be replaced with spacer + mIconName == null ? null : getDisabledIconName(mIconName), 0, 0); + // KeyVisualAttributes for a key essentially are what the theme has, but on a per-key base + // could be used e.g. for having a color gradient on key color + mKeyVisualAttributes = null; + mEnabled = true; + } + + /** constructor for emoji parser */ + public KeyParams(@Nullable final String label, final int code, @Nullable final String hintLabel, + @Nullable final String popupKeySpecs, final int labelFlags, final KeyboardParams params) { + mKeyboardParams = params; + mHintLabel = hintLabel; + mLabelFlags = labelFlags; + mBackgroundType = BACKGROUND_TYPE_EMPTY; + + if (popupKeySpecs != null) { + String[] popupKeys = PopupKeySpec.splitKeySpecs(popupKeySpecs); + mPopupKeysColumnAndFlags = getPopupKeysColumnAndFlagsAndSetNullInArray(params, popupKeys); + + popupKeys = PopupKeySpec.insertAdditionalPopupKeys(popupKeys, null); + int actionFlags = 0; + if (popupKeys != null) { + actionFlags |= ACTION_FLAGS_ENABLE_LONG_PRESS; + mPopupKeys = new PopupKeySpec[popupKeys.length]; + for (int i = 0; i < popupKeys.length; i++) { + mPopupKeys[i] = new PopupKeySpec(popupKeys[i], false, Locale.getDefault()); + } + } else { + mPopupKeys = null; + } + mActionFlags = actionFlags; + } else { + // TODO: Pass keyActionFlags as an argument. + mActionFlags = ACTION_FLAGS_NO_KEY_PREVIEW; + mPopupKeys = null; + mPopupKeysColumnAndFlags = 0; + } + + mLabel = label; + mOptionalAttributes = code == KeyCode.MULTIPLE_CODE_POINTS + ? OptionalAttributes.newInstance(label, KeyCode.NOT_SPECIFIED, null, 0, 0) + : null; + mCode = code; + mEnabled = (code != KeyCode.NOT_SPECIFIED); + mIconName = null; + mKeyVisualAttributes = null; + } + + /** constructor for a spacer whose size MUST be determined using setDimensionsFromRelativeSize */ + private KeyParams(final KeyboardParams params) { + isSpacer = true; // this is only for spacer! + mKeyboardParams = params; + + mCode = KeyCode.NOT_SPECIFIED; + mLabel = null; + mHintLabel = null; + mKeyVisualAttributes = null; + mOptionalAttributes = null; + mIconName = null; + mBackgroundType = BACKGROUND_TYPE_NORMAL; + mActionFlags = ACTION_FLAGS_NO_KEY_PREVIEW; + mPopupKeys = null; + mPopupKeysColumnAndFlags = 0; + mLabelFlags = LABEL_FLAGS_FONT_NORMAL; + mEnabled = true; + } + + public KeyParams(final KeyParams keyParams) { + xPos = keyParams.xPos; + yPos = keyParams.yPos; + mWidth = keyParams.mWidth; + mHeight = keyParams.mHeight; + isSpacer = keyParams.isSpacer; + mKeyboardParams = keyParams.mKeyboardParams; + mEnabled = keyParams.mEnabled; + + mCode = keyParams.mCode; + mLabel = keyParams.mLabel; + mHintLabel = keyParams.mHintLabel; + mLabelFlags = keyParams.mLabelFlags; + mIconName = keyParams.mIconName; + mAbsoluteWidth = keyParams.mAbsoluteWidth; + mAbsoluteHeight = keyParams.mAbsoluteHeight; + mPopupKeys = keyParams.mPopupKeys; + mPopupKeysColumnAndFlags = keyParams.mPopupKeysColumnAndFlags; + mBackgroundType = keyParams.mBackgroundType; + mActionFlags = keyParams.mActionFlags; + mKeyVisualAttributes = keyParams.mKeyVisualAttributes; + mOptionalAttributes = keyParams.mOptionalAttributes; + } + } +} diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyDetector.java b/app/src/main/java/helium314/keyboard/keyboard/KeyDetector.java similarity index 85% rename from app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyDetector.java rename to app/src/main/java/helium314/keyboard/keyboard/KeyDetector.java index 58bd399290..400511cdad 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyDetector.java +++ b/app/src/main/java/helium314/keyboard/keyboard/KeyDetector.java @@ -1,20 +1,10 @@ /* * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only */ -package org.dslul.openboard.inputmethod.keyboard; +package helium314.keyboard.keyboard; /** * This class handles key detection. diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/Keyboard.java b/app/src/main/java/helium314/keyboard/keyboard/Keyboard.java similarity index 75% rename from app/src/main/java/org/dslul/openboard/inputmethod/keyboard/Keyboard.java rename to app/src/main/java/helium314/keyboard/keyboard/Keyboard.java index e64794cfe9..794e10f42d 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/Keyboard.java +++ b/app/src/main/java/helium314/keyboard/keyboard/Keyboard.java @@ -1,36 +1,29 @@ /* * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only */ -package org.dslul.openboard.inputmethod.keyboard; +package helium314.keyboard.keyboard; import android.util.SparseArray; -import org.dslul.openboard.inputmethod.keyboard.internal.KeyVisualAttributes; -import org.dslul.openboard.inputmethod.keyboard.internal.KeyboardIconsSet; -import org.dslul.openboard.inputmethod.keyboard.internal.KeyboardParams; -import org.dslul.openboard.inputmethod.latin.common.Constants; -import org.dslul.openboard.inputmethod.latin.common.CoordinateUtils; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import helium314.keyboard.latin.legacy.ProximityInfo; + +import helium314.keyboard.keyboard.internal.KeyVisualAttributes; +import helium314.keyboard.keyboard.internal.KeyboardIconsSet; +import helium314.keyboard.keyboard.internal.KeyboardParams; +import helium314.keyboard.keyboard.internal.keyboard_parser.floris.KeyCode; +import helium314.keyboard.latin.common.Constants; +import helium314.keyboard.latin.common.CoordinateUtils; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - /** * Loads an XML description of a keyboard and stores the attributes of the keys. A keyboard * consists of rows of keys. @@ -50,19 +43,19 @@ * */ public class Keyboard { - @Nonnull + @NonNull public final KeyboardId mId; public final int mThemeId; /** Total height of the keyboard, including the padding and keys */ public final int mOccupiedHeight; /** Total width of the keyboard, including the padding and keys */ - public final int mOccupiedWidth; + public int mOccupiedWidth; /** Base height of the keyboard, used to calculate rows' height */ public final int mBaseHeight; /** Base width of the keyboard, used to calculate keys' width */ - public final int mBaseWidth; + public int mBaseWidth; /** The padding above the keyboard */ public final int mTopPadding; @@ -75,32 +68,30 @@ public class Keyboard { public final int mMostCommonKeyHeight; public final int mMostCommonKeyWidth; - /** More keys keyboard template */ - public final int mMoreKeysTemplate; + /** Popup keys keyboard template */ + public final int mPopupKeysTemplate; - /** Maximum column for more keys keyboard */ - public final int mMaxMoreKeysKeyboardColumn; + /** Maximum column for popup keys keyboard */ + public final int mMaxPopupKeysKeyboardColumn; /** List of keys in this keyboard */ - @Nonnull + @NonNull private final List mSortedKeys; - @Nonnull + @NonNull public final List mShiftKeys; - @Nonnull + @NonNull public final List mAltCodeKeysWhileTyping; - @Nonnull + @NonNull public final KeyboardIconsSet mIconsSet; private final SparseArray mKeyCache = new SparseArray<>(); - @Nonnull + @NonNull private final ProximityInfo mProximityInfo; - @Nonnull - private final KeyboardLayout mKeyboardLayout; private final boolean mProximityCharsCorrectionEnabled; - public Keyboard(@Nonnull final KeyboardParams params) { + public Keyboard(@NonNull final KeyboardParams params) { mId = params.mId; mThemeId = params.mThemeId; mOccupiedHeight = params.mOccupiedHeight; @@ -109,8 +100,8 @@ public Keyboard(@Nonnull final KeyboardParams params) { mBaseWidth = params.mBaseWidth; mMostCommonKeyHeight = params.mMostCommonKeyHeight; mMostCommonKeyWidth = params.mMostCommonKeyWidth; - mMoreKeysTemplate = params.mMoreKeysTemplate; - mMaxMoreKeysKeyboardColumn = params.mMaxMoreKeysKeyboardColumn; + mPopupKeysTemplate = params.mPopupKeysTemplate; + mMaxPopupKeysKeyboardColumn = params.mMaxPopupKeysKeyboardColumn; mKeyVisualAttributes = params.mKeyVisualAttributes; mTopPadding = params.mTopPadding; mVerticalGap = params.mVerticalGap; @@ -124,11 +115,9 @@ public Keyboard(@Nonnull final KeyboardParams params) { mOccupiedWidth, mOccupiedHeight, mMostCommonKeyWidth, mMostCommonKeyHeight, mSortedKeys, params.mTouchPositionCorrection); mProximityCharsCorrectionEnabled = params.mProximityCharsCorrectionEnabled; - mKeyboardLayout = KeyboardLayout.newKeyboardLayout(mSortedKeys, mMostCommonKeyWidth, - mMostCommonKeyHeight, mOccupiedWidth, mOccupiedHeight); } - protected Keyboard(@Nonnull final Keyboard keyboard) { + protected Keyboard(@NonNull final Keyboard keyboard) { mId = keyboard.mId; mThemeId = keyboard.mThemeId; mOccupiedHeight = keyboard.mOccupiedHeight; @@ -137,8 +126,8 @@ protected Keyboard(@Nonnull final Keyboard keyboard) { mBaseWidth = keyboard.mBaseWidth; mMostCommonKeyHeight = keyboard.mMostCommonKeyHeight; mMostCommonKeyWidth = keyboard.mMostCommonKeyWidth; - mMoreKeysTemplate = keyboard.mMoreKeysTemplate; - mMaxMoreKeysKeyboardColumn = keyboard.mMaxMoreKeysKeyboardColumn; + mPopupKeysTemplate = keyboard.mPopupKeysTemplate; + mMaxPopupKeysKeyboardColumn = keyboard.mMaxPopupKeysKeyboardColumn; mKeyVisualAttributes = keyboard.mKeyVisualAttributes; mTopPadding = keyboard.mTopPadding; mVerticalGap = keyboard.mVerticalGap; @@ -150,7 +139,6 @@ protected Keyboard(@Nonnull final Keyboard keyboard) { mProximityInfo = keyboard.mProximityInfo; mProximityCharsCorrectionEnabled = keyboard.mProximityCharsCorrectionEnabled; - mKeyboardLayout = keyboard.mKeyboardLayout; } public boolean hasProximityCharsCorrection(final int code) { @@ -165,30 +153,25 @@ public boolean hasProximityCharsCorrection(final int code) { return canAssumeNativeHasProximityCharsInfoOfAllKeys || Character.isLetter(code); } - @Nonnull + @NonNull public ProximityInfo getProximityInfo() { return mProximityInfo; } - @Nonnull - public KeyboardLayout getKeyboardLayout() { - return mKeyboardLayout; - } - /** * Return the sorted list of keys of this keyboard. * The keys are sorted from top-left to bottom-right order. * The list may contain {@link Key.Spacer} object as well. * @return the sorted unmodifiable list of {@link Key}s of this keyboard. */ - @Nonnull + @NonNull public List getSortedKeys() { return mSortedKeys; } @Nullable public Key getKey(final int code) { - if (code == Constants.CODE_UNSPECIFIED) { + if (code == KeyCode.NOT_SPECIFIED) { return null; } synchronized (mKeyCache) { @@ -208,7 +191,7 @@ public Key getKey(final int code) { } } - public boolean hasKey(@Nonnull final Key aKey) { + public boolean hasKey(@NonNull final Key aKey) { if (mKeyCache.indexOfValue(aKey) >= 0) { return true; } @@ -234,7 +217,7 @@ public String toString() { * @return the list of the nearest keys to the given point. If the given * point is out of range, then an array of size zero is returned. */ - @Nonnull + @NonNull public List getNearestKeys(final int x, final int y) { // Avoid dead pixels at edges of the keyboard final int adjustedX = Math.max(0, Math.min(x, mOccupiedWidth - 1)); @@ -242,8 +225,8 @@ public List getNearestKeys(final int x, final int y) { return mProximityInfo.getNearestKeys(adjustedX, adjustedY); } - @Nonnull - public int[] getCoordinates(@Nonnull final int[] codePoints) { + @NonNull + public int[] getCoordinates(@NonNull final int[] codePoints) { final int length = codePoints.length; final int[] coordinates = CoordinateUtils.newCoordinateArray(length); for (int i = 0; i < length; ++i) { diff --git a/app/src/main/java/helium314/keyboard/keyboard/KeyboardActionListener.java b/app/src/main/java/helium314/keyboard/keyboard/KeyboardActionListener.java new file mode 100644 index 0000000000..a71414fa30 --- /dev/null +++ b/app/src/main/java/helium314/keyboard/keyboard/KeyboardActionListener.java @@ -0,0 +1,179 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.keyboard; + +import android.view.KeyEvent; + +import helium314.keyboard.event.HapticEvent; +import helium314.keyboard.latin.common.Constants; +import helium314.keyboard.latin.common.InputPointers; + +public interface KeyboardActionListener { + /** + * Called when the user presses a key. This is sent before the {@link #onCodeInput} is called. + * For keys that repeat, this is only called once. + * + * @param primaryCode the unicode of the key being pressed. If the touch is not on a valid key, + * the value will be zero. + * @param repeatCount how many times the key was repeated. Zero if it is the first press. + * @param isSinglePointer true if pressing has occurred while no other key is being pressed. + * @param hapticEvent the type of haptic feedback to perform. + */ + void onPressKey(int primaryCode, int repeatCount, boolean isSinglePointer, HapticEvent hapticEvent); + + void onLongPressKey(int primaryCode); + + /** + * Called when the user releases a key. This is sent after the {@link #onCodeInput} is called. + * For keys that repeat, this is only called once. + * + * @param primaryCode the code of the key that was released + * @param withSliding true if releasing has occurred because the user slid finger from the key + * to other key without releasing the finger. + */ + void onReleaseKey(int primaryCode, boolean withSliding); + + /** For handling hardware key presses. Returns whether the event was handled. */ + boolean onKeyDown(int keyCode, KeyEvent keyEvent); + + /** For handling hardware key presses. Returns whether the event was handled. */ + boolean onKeyUp(int keyCode, KeyEvent keyEvent); + + /** + * Send a key code to the listener. + * + * @param primaryCode this is the code of the key that was pressed + * @param x x-coordinate pixel of touched event. If onCodeInput is not called by + * {@link PointerTracker} or so, the value should be + * {@link Constants#NOT_A_COORDINATE}. If it's called on insertion from the + * suggestion strip, it should be {@link Constants#SUGGESTION_STRIP_COORDINATE}. + * @param y y-coordinate pixel of touched event. If #onCodeInput is not called by + * {@link PointerTracker} or so, the value should be + * {@link Constants#NOT_A_COORDINATE}.If it's called on insertion from the + * suggestion strip, it should be {@link Constants#SUGGESTION_STRIP_COORDINATE}. + * @param isKeyRepeat true if this is a key repeat, false otherwise + */ + // TODO: change this to send an Event object instead + void onCodeInput(int primaryCode, int x, int y, boolean isKeyRepeat); + + /** + * Sends a string of characters to the listener. + * + * @param text the string of characters to be registered. + */ + void onTextInput(String text); + + /** + * Called when user started batch input. + */ + void onStartBatchInput(); + + /** + * Sends the ongoing batch input points data. + * @param batchPointers the batch input points representing the user input + */ + void onUpdateBatchInput(InputPointers batchPointers); + + /** + * Sends the final batch input points data. + * + * @param batchPointers the batch input points representing the user input + */ + void onEndBatchInput(InputPointers batchPointers); + + void onCancelBatchInput(); + + /** + * Called when user released a finger outside any key. + */ + void onCancelInput(); + + /** + * Called when user finished sliding key input. + */ + void onFinishSlidingInput(); + + /** + * Send a non-"code input" custom request to the listener. + * @return true if the request has been consumed, false otherwise. + */ + boolean onCustomRequest(int requestCode); + + /** + * Called when the user performs a horizontal or vertical swipe gesture + * on the space bar. + */ + boolean onHorizontalSpaceSwipe(int steps); + boolean onVerticalSpaceSwipe(int steps); + void onEndSpaceSwipe(); + boolean toggleNumpad(boolean withSliding, boolean forceReturnToAlpha); + + void onMoveDeletePointer(int steps); + void onUpWithDeletePointerActive(); + void resetMetaState(); + + KeyboardActionListener EMPTY_LISTENER = new Adapter(); + + int SWIPE_NO_ACTION = 0; + int SWIPE_MOVE_CURSOR = 1; + int SWIPE_SWITCH_LANGUAGE = 2; + int SWIPE_TOGGLE_NUMPAD = 3; + int SWIPE_HIDE_KEYBOARD = 4; + + class Adapter implements KeyboardActionListener { + @Override + public void onPressKey(int primaryCode, int repeatCount, boolean isSinglePointer, HapticEvent hapticEvent) {} + @Override + public void onLongPressKey(int primaryCode) {} + @Override + public void onReleaseKey(int primaryCode, boolean withSliding) {} + @Override + public boolean onKeyDown(int keyCode, KeyEvent keyEvent) { return false; } + @Override + public boolean onKeyUp(int keyCode, KeyEvent keyEvent) { return false; } + @Override + public void onCodeInput(int primaryCode, int x, int y, boolean isKeyRepeat) {} + @Override + public void onTextInput(String text) {} + @Override + public void onStartBatchInput() {} + @Override + public void onUpdateBatchInput(InputPointers batchPointers) {} + @Override + public void onEndBatchInput(InputPointers batchPointers) {} + @Override + public void onCancelBatchInput() {} + @Override + public void onCancelInput() {} + @Override + public void onFinishSlidingInput() {} + @Override + public boolean onCustomRequest(int requestCode) { + return false; + } + @Override + public boolean onHorizontalSpaceSwipe(int steps) { + return false; + } + @Override + public boolean onVerticalSpaceSwipe(int steps) { + return false; + } + @Override + public boolean toggleNumpad(boolean withSliding, boolean forceReturnToAlpha) { + return false; + } + @Override + public void onEndSpaceSwipe() {} + @Override + public void onMoveDeletePointer(int steps) {} + @Override + public void onUpWithDeletePointerActive() {} + @Override + public void resetMetaState() {} + } +} diff --git a/app/src/main/java/helium314/keyboard/keyboard/KeyboardActionListenerImpl.kt b/app/src/main/java/helium314/keyboard/keyboard/KeyboardActionListenerImpl.kt new file mode 100644 index 0000000000..d6d03453a8 --- /dev/null +++ b/app/src/main/java/helium314/keyboard/keyboard/KeyboardActionListenerImpl.kt @@ -0,0 +1,501 @@ +// SPDX-License-Identifier: GPL-3.0-only +package helium314.keyboard.keyboard + +import android.text.InputType +import android.util.SparseArray +import android.view.KeyEvent +import android.view.inputmethod.InputMethodSubtype +import androidx.core.util.forEach +import helium314.keyboard.event.Event +import helium314.keyboard.event.HangulEventDecoder +import helium314.keyboard.event.HapticEvent +import helium314.keyboard.event.HardwareEventDecoder +import helium314.keyboard.event.HardwareKeyboardEventDecoder +import helium314.keyboard.keyboard.internal.keyboard_parser.floris.KeyCode +import helium314.keyboard.latin.AudioAndHapticFeedbackManager +import helium314.keyboard.latin.EmojiAltPhysicalKeyDetector +import helium314.keyboard.latin.LatinIME +import helium314.keyboard.latin.RichInputMethodManager +import helium314.keyboard.latin.common.Constants +import helium314.keyboard.latin.common.InputPointers +import helium314.keyboard.latin.common.StringUtils +import helium314.keyboard.latin.common.combiningRange +import helium314.keyboard.latin.common.loopOverCodePoints +import helium314.keyboard.latin.common.loopOverCodePointsBackwards +import helium314.keyboard.latin.define.ProductionFlags +import helium314.keyboard.latin.inputlogic.InputLogic +import helium314.keyboard.latin.settings.Settings +import helium314.keyboard.latin.utils.SubtypeSettings +import kotlin.math.abs +import kotlin.math.min + +class KeyboardActionListenerImpl(private val latinIME: LatinIME, private val inputLogic: InputLogic) : KeyboardActionListener { + + private val connection = inputLogic.mConnection + private val emojiAltPhysicalKeyDetector by lazy { EmojiAltPhysicalKeyDetector(latinIME.resources) } + + // We expect to have only one decoder in almost all cases, hence the default capacity of 1. + // If it turns out we need several, it will get grown seamlessly. + private val hardwareEventDecoders: SparseArray = SparseArray(1) + + private val keyboardSwitcher = KeyboardSwitcher.getInstance() + private val settings = Settings.getInstance() + private val audioAndHapticFeedbackManager = AudioAndHapticFeedbackManager.getInstance() + + // language slide state + private var initialSubtype: InputMethodSubtype? = null + private var subtypeSwitchCount = 0 + + override fun onPressKey(primaryCode: Int, repeatCount: Int, isSinglePointer: Boolean, hapticEvent: HapticEvent) { + metaOnPressKey(primaryCode) + keyboardSwitcher.onPressKey(primaryCode, isSinglePointer, latinIME.currentAutoCapsState, latinIME.currentRecapitalizeState) + // we need to use LatinIME for handling of key-down audio and haptics + latinIME.hapticAndAudioFeedback(primaryCode, repeatCount, hapticEvent) + } + + override fun onLongPressKey(primaryCode: Int) { + metaOnLongPressKey(primaryCode) + performHapticFeedback(HapticEvent.KEY_LONG_PRESS) + } + + override fun onReleaseKey(primaryCode: Int, withSliding: Boolean) { + metaOnReleaseKey(primaryCode) + keyboardSwitcher.onReleaseKey(primaryCode, withSliding, latinIME.currentAutoCapsState, latinIME.currentRecapitalizeState) + } + + override fun onKeyUp(keyCode: Int, keyEvent: KeyEvent): Boolean { + emojiAltPhysicalKeyDetector.onKeyUp(keyEvent) + if (!ProductionFlags.IS_HARDWARE_KEYBOARD_SUPPORTED) + return false + + val keyIdentifier = keyEvent.deviceId.toLong() shl 32 + keyEvent.keyCode + return inputLogic.mCurrentlyPressedHardwareKeys.remove(keyIdentifier) + } + + override fun onKeyDown(keyCode: Int, keyEvent: KeyEvent): Boolean { + emojiAltPhysicalKeyDetector.onKeyDown(keyEvent) + if (!ProductionFlags.IS_HARDWARE_KEYBOARD_SUPPORTED) + return false + + val event: Event + if (settings.current.mLocale.language == "ko") { // todo: this does not appear to be the right place + val subtype = keyboardSwitcher.keyboard?.mId?.mSubtype ?: RichInputMethodManager.getInstance().currentSubtype + event = HangulEventDecoder.decodeHardwareKeyEvent(subtype, keyEvent) { + getHardwareKeyEventDecoder(keyEvent.deviceId).decodeHardwareKey(keyEvent) + } + } else { + event = getHardwareKeyEventDecoder(keyEvent.deviceId).decodeHardwareKey(keyEvent) + } + + if (event.isHandled) { + inputLogic.onCodeInput( + settings.current, event, + keyboardSwitcher.getKeyboardShiftMode(), // TODO: this is not necessarily correct for a hardware keyboard right now + keyboardSwitcher.getCurrentKeyboardScript(), + latinIME.mHandler + ) + return true + } + return false + } + + override fun onCodeInput(primaryCode: Int, x: Int, y: Int, isKeyRepeat: Boolean) { + when (primaryCode) { + KeyCode.TOGGLE_AUTOCORRECT -> return settings.toggleAutoCorrect() + KeyCode.TOGGLE_INCOGNITO_MODE -> return settings.toggleAlwaysIncognitoMode() + } + val mkv = keyboardSwitcher.mainKeyboardView + + // checking if the character is a combining accent + val event = if (primaryCode in combiningRange) { // todo: should this be done later, maybe in inputLogic? + Event.createSoftwareDeadEvent(primaryCode, 0, metaState, mkv.getKeyX(x), mkv.getKeyY(y), null) + } else { + // todo: + // setting meta shift should only be done for arrow and similar cursor movement keys + // should only be enabled once it works more reliably (currently depends on app for some reason) +// if (mkv.keyboard?.mId?.isAlphabetShiftedManually == true) +// Event.createSoftwareKeypressEvent(primaryCode, metaState or KeyEvent.META_SHIFT_ON, mkv.getKeyX(x), mkv.getKeyY(y), isKeyRepeat) +// else Event.createSoftwareKeypressEvent(primaryCode, metaState, mkv.getKeyX(x), mkv.getKeyY(y), isKeyRepeat) + Event.createSoftwareKeypressEvent(primaryCode, metaState, mkv.getKeyX(x), mkv.getKeyY(y), isKeyRepeat) + } + latinIME.onEvent(event) + metaAfterCodeInput(primaryCode) + } + + override fun onTextInput(text: String?) = latinIME.onTextInput(text) + + override fun onStartBatchInput() = latinIME.onStartBatchInput() + + override fun onUpdateBatchInput(batchPointers: InputPointers?) = latinIME.onUpdateBatchInput(batchPointers) + + override fun onEndBatchInput(batchPointers: InputPointers?) = latinIME.onEndBatchInput(batchPointers) + + override fun onCancelBatchInput() = latinIME.onCancelBatchInput() + + // User released a finger outside any key + override fun onCancelInput() { } + + override fun onFinishSlidingInput() = + keyboardSwitcher.onFinishSlidingInput(latinIME.currentAutoCapsState, latinIME.currentRecapitalizeState) + + override fun onCustomRequest(requestCode: Int): Boolean { + if (requestCode == Constants.CUSTOM_CODE_SHOW_INPUT_METHOD_PICKER) { + return latinIME.showInputPickerDialog() + } + if (requestCode == Constants.CUSTOM_CODE_HIDE_KEYBOARD) { + latinIME.requestHideSelf(0) + return true + } + return false + } + + override fun onHorizontalSpaceSwipe(steps: Int): Boolean = when (Settings.getValues().mSpaceSwipeHorizontal) { + KeyboardActionListener.SWIPE_MOVE_CURSOR -> onMoveCursorHorizontally(steps) + KeyboardActionListener.SWIPE_SWITCH_LANGUAGE -> onLanguageSlide(steps) + KeyboardActionListener.SWIPE_TOGGLE_NUMPAD -> toggleNumpad(false, false) + else -> false + } + + override fun onVerticalSpaceSwipe(steps: Int): Boolean = when (Settings.getValues().mSpaceSwipeVertical) { + KeyboardActionListener.SWIPE_MOVE_CURSOR -> onMoveCursorVertically(steps) + KeyboardActionListener.SWIPE_SWITCH_LANGUAGE -> onLanguageSlide(steps) + KeyboardActionListener.SWIPE_TOGGLE_NUMPAD -> toggleNumpad(false, false) + KeyboardActionListener.SWIPE_HIDE_KEYBOARD -> { + latinIME.requestHideSelf(0) + true + } + else -> false + } + + override fun onEndSpaceSwipe(){ + initialSubtype = null + subtypeSwitchCount = 0 + } + + override fun toggleNumpad(withSliding: Boolean, forceReturnToAlpha: Boolean): Boolean { + keyboardSwitcher.toggleNumpad(withSliding, latinIME.currentAutoCapsState, latinIME.currentRecapitalizeState, forceReturnToAlpha) + return true + } + + override fun onMoveDeletePointer(steps: Int) { + inputLogic.finishInput() + val end = connection.expectedSelectionEnd + val actualSteps = actualSteps(steps) + val start = connection.expectedSelectionStart + actualSteps + if (start > end) return + gestureMoveBackHaptics() + connection.setSelection(start, end) + } + + private fun actualSteps(steps: Int): Int { + var actualSteps = 0 + // corrected steps to avoid splitting chars belonging to the same codepoint + if (steps > 0) { + val text = connection.getSelectedText(0) ?: return steps + loopOverCodePoints(text) { cp, charCount -> + actualSteps += charCount + actualSteps >= steps + } + } else { + val text = connection.getTextBeforeCursor(-steps * 4, 0) ?: return steps + loopOverCodePointsBackwards(text) { cp, charCount -> + actualSteps -= charCount + actualSteps <= steps + } + } + return actualSteps + } + + override fun onUpWithDeletePointerActive() { + if (!connection.hasSelection()) return + inputLogic.finishInput() + onCodeInput(KeyCode.DELETE, Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE, false) + } + + override fun resetMetaState() { + metaState = 0 + } + + private fun onLanguageSlide(steps: Int): Boolean { + if (abs(steps) < settings.current.mLanguageSwipeDistance) return false + val subtypes = SubtypeSettings.getEnabledSubtypes(true) + if (subtypes.size <= 1) { // only allow if we have more than one subtype + return false + } + // decide next or previous dependent on up or down + val current = RichInputMethodManager.getInstance().currentSubtype.rawSubtype + var wantedIndex = subtypes.indexOf(current) + if (steps > 0) 1 else -1 + wantedIndex %= subtypes.size + if (wantedIndex < 0) { + wantedIndex += subtypes.size + } + val newSubtype = subtypes[wantedIndex] + + // do not switch if we would switch to the initial subtype after cycling all other subtypes + if (initialSubtype == null) initialSubtype = current + if (initialSubtype == newSubtype) { + if ((subtypeSwitchCount > 0 && steps > 0) || (subtypeSwitchCount < 0 && steps < 0)) { + return true + } + } + if (steps > 0) subtypeSwitchCount++ else subtypeSwitchCount-- + + keyboardSwitcher.switchToSubtype(newSubtype) + return true + } + + private fun onMoveCursorVertically(steps: Int): Boolean { + if (steps == 0) return false + val code = if (steps < 0) { + gestureMoveBackHaptics() + KeyCode.ARROW_UP + } else { + gestureMoveForwardHaptics() + KeyCode.ARROW_DOWN + } + onCodeInput(code, Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE, false) + return true + } + + private fun onMoveCursorHorizontally(rawSteps: Int): Boolean { + if (rawSteps == 0) return false + // for RTL languages we want to invert pointer movement + val rtl = RichInputMethodManager.getInstance().currentSubtype.isRtlSubtype + val steps = if (rtl) -rawSteps else rawSteps + val moveSteps: Int + if (steps < 0) { + val text = connection.getTextBeforeCursor(-steps * 4, 0) ?: return false + moveSteps = negativeMoveSteps(text, steps) + if (moveSteps == 0) { + // some apps don't return any text via input connection, and the cursor can't be moved + // we fall back to virtually pressing the left/right key one or more times instead + repeat(-steps) { + onCodeInput(if (rtl) KeyCode.ARROW_RIGHT else KeyCode.ARROW_LEFT, Constants.NOT_A_COORDINATE, + Constants.NOT_A_COORDINATE, false) + } + if (text.isNotEmpty()) { + gestureMoveBackHaptics() + } + return true + } + gestureMoveBackHaptics() + } else { + val text = connection.getTextAfterCursor(steps * 4, 0) ?: return false + moveSteps = positiveMoveSteps(text, steps) + if (moveSteps == 0) { + // some apps don't return any text via input connection, and the cursor can't be moved + // we fall back to virtually pressing the left/right key one or more times instead + repeat(steps) { + onCodeInput(if (rtl) KeyCode.ARROW_LEFT else KeyCode.ARROW_RIGHT, Constants.NOT_A_COORDINATE, + Constants.NOT_A_COORDINATE, false) + } + if (text.isNotEmpty()) { + gestureMoveForwardHaptics(true) + } + return true + } + gestureMoveForwardHaptics(text.isNotEmpty()) + } + + // the shortcut below causes issues due to horrible handling of text fields by Firefox and forks + // issues: + // * setSelection "will cause the editor to call onUpdateSelection", see: https://developer.android.com/reference/android/view/inputmethod/InputConnection#setSelection(int,%20int) + // but Firefox is simply not doing this within the same word... WTF? + // https://github.com/Helium314/HeliBoard/issues/1139#issuecomment-2588169384 + // * inputType is NOT of variant InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT (variant appears to always be 0) + // -> this is "fixed" now using AppWorkarounds.adjustInputType + val variation = InputType.TYPE_MASK_VARIATION and Settings.getValues().mInputAttributes.mInputType + if (variation != InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT + && inputLogic.moveCursorByAndReturnIfInsideComposingWord(moveSteps)) { + // no need to finish input and restart suggestions if we're still in the word + // this is a noticeable performance improvement when moving through long words + val newPosition = connection.expectedSelectionStart + moveSteps + connection.setSelection(newPosition, newPosition) + return true + } + + inputLogic.finishInput() + val newPosition = connection.expectedSelectionStart + moveSteps + connection.setSelection(newPosition, newPosition) + inputLogic.restartSuggestionsOnWordTouchedByCursor(settings.current, keyboardSwitcher.currentKeyboardScript) + return true + } + + private fun positiveMoveSteps(text: CharSequence, steps: Int): Int { + var actualSteps = 0 + // corrected steps to avoid splitting chars belonging to the same codepoint + loopOverCodePoints(text) { cp, charCount -> + // For emojis we (incorrectly) return 0 so the move is handled by virtual arrow key presses. + // This is a simple workaround to avoid determining the correct character count, which can + // be tricky because in some cases older Android versions show two emojis where newer ones show one. + if (StringUtils.mightBeEmoji(cp)) return 0 + actualSteps += charCount + actualSteps >= steps + } + return min(actualSteps, text.length) + } + + private fun negativeMoveSteps(text: CharSequence, steps: Int): Int { + var actualSteps = 0 + // corrected steps to avoid splitting chars belonging to the same codepoint + loopOverCodePointsBackwards(text) { cp, charCount -> + // For emojis we (incorrectly) return 0 so the move is handled by virtual arrow key presses. + // This is a simple workaround to avoid determining the correct character count, which can + // be tricky because in some cases older Android versions show two emojis where newer ones show one. + if (StringUtils.mightBeEmoji(cp)) return 0 + actualSteps -= charCount + actualSteps <= steps + } + return -min(-actualSteps, text.length) + } + + private fun gestureMoveBackHaptics() { + if (connection.canDeleteCharacters()) { + performHapticFeedback(HapticEvent.GESTURE_MOVE) + } + } + + // hasTextAfterCursor is used because text before the cursor is cached, going through the InputConnection can be slow + private fun gestureMoveForwardHaptics(hasTextAfterCursor: Boolean? = null) { + if (hasTextAfterCursor ?: connection.hasTextAfterCursor()) { + performHapticFeedback(HapticEvent.GESTURE_MOVE) + } + } + + private fun performHapticFeedback(hapticEvent: HapticEvent) { + audioAndHapticFeedbackManager.performHapticFeedback(keyboardSwitcher.visibleKeyboardView, hapticEvent) + } + + private fun getHardwareKeyEventDecoder(deviceId: Int): HardwareEventDecoder { + hardwareEventDecoders.get(deviceId)?.let { return it } + + // TODO: create the decoder according to the specification + val newDecoder = HardwareKeyboardEventDecoder(deviceId) + hardwareEventDecoders.put(deviceId, newDecoder) + return newDecoder + } + + // -------------------------- meta state handling ----------------------------- + + // current state + // press enables meta + // release keeps meta enabled, unless there was a onCodeInput for a different key in between + // onCodeInput ends the meta if it was enabled + // long press on meta key also ends meta so popups are handled properly + // sliding from a meta key to some other words too, though this was not intended (and there are no sliding key input graphics) + + // todo: move meta state tracking to KeyboardState? seems more suitable, also for handling sliding input + // but the issue is that meta state is used in Event to determine whether it's a functional Event (does not add a character) + // (and also it's in the hardware keyEvents which are handled by onKeyUp/Down, but that should be manageable) + + /** actual Android metaState like in KeyEvent */ + private var metaState = 0 + + /** keeps track of the state of meta keys by (HeliBoard) KeyCodes */ + private val metaPressStates = SparseArray(4) + + // todo: lock and non-lock versions interact badly: when any of them is released, the meta state is removed + // this is not wanted, especially because the state of the other key is not affected (still looks pressed) + private fun metaOnPressKey(primaryCode: Int) { + val metaCode = primaryCode.toMetaState() ?: return + if (primaryCode.isMetaLock()) { + // if unset -> lock, otherwise set to UNSET_ON_RELEASE so it's unset on release + if (metaPressStates[primaryCode] != MetaPressState.LOCKED) { + metaPressStates[primaryCode] = MetaPressState.LOCKED + keyboardSwitcher.mainKeyboardView?.updateLockState(primaryCode, true) + metaState = metaState or metaCode + } else { + metaPressStates[primaryCode] = MetaPressState.UNSET_ON_RELEASE + } + return + } + if (metaPressStates[primaryCode] == MetaPressState.RELEASED_BUT_ACTIVE) { + // meta key is pressed again without other input -> should be disabled on release + metaPressStates[primaryCode] = MetaPressState.UNSET_ON_RELEASE + } else { + // otherwise just press it normally + metaPressStates[primaryCode] = MetaPressState.PRESSED + } + metaState = metaState or metaCode + // pressed graphics are set anyway, no need to lock it + } + + // looks like this is not called if there are no popups + private fun metaOnLongPressKey(primaryCode: Int) { + if (metaPressStates[primaryCode] != MetaPressState.PRESSED) return + // we long-pressed a meta key that has popups -> disable so the meta state is not used for the popup + metaPressStates[primaryCode] = MetaPressState.UNSET + keyboardSwitcher.mainKeyboardView?.updateLockState(primaryCode, false) + val metaCode = primaryCode.toMetaState() ?: return + metaState = metaState and metaCode.inv() + } + + private fun metaOnReleaseKey(primaryCode: Int) { + val metaCode = primaryCode.toMetaState() ?: return + val metaPressState = metaPressStates[primaryCode] + if (metaPressState == MetaPressState.UNSET_ON_RELEASE) { + metaPressStates[primaryCode] = MetaPressState.UNSET + metaState = metaState and metaCode.inv() + keyboardSwitcher.mainKeyboardView?.updateLockState(primaryCode, false) + } else if (metaPressState == MetaPressState.PRESSED) { + metaPressStates[primaryCode] = MetaPressState.RELEASED_BUT_ACTIVE + keyboardSwitcher.mainKeyboardView?.updateLockState(primaryCode, true) + } + } + + private fun metaAfterCodeInput(primaryCode: Int) { + val metaCode = primaryCode.toMetaState() + if (metaCode != null) { + // meta key might be a popup key, we just toggle between set and unset + val metaPressState = metaPressStates[primaryCode] ?: MetaPressState.UNSET + if (metaPressState == MetaPressState.UNSET) { + metaPressStates[primaryCode] = MetaPressState.SET + metaState = metaState or metaCode + keyboardSwitcher.mainKeyboardView?.updateLockState(primaryCode, true) + } else if (metaPressState == MetaPressState.SET) { + metaPressStates[primaryCode] = MetaPressState.UNSET + metaState = metaState and metaCode.inv() + keyboardSwitcher.mainKeyboardView?.updateLockState(primaryCode, false) + } + } else if (metaState != 0) { + // non-meta key -> unset all set / released_but_active, and mark pressed as UNSET_ON_RELEASE + metaPressStates.forEach { key, value -> + if (value == MetaPressState.RELEASED_BUT_ACTIVE || value == MetaPressState.SET) { + metaPressStates[key] = MetaPressState.UNSET + keyboardSwitcher.mainKeyboardView?.updateLockState(key, false) + val metaCode = key.toMetaState() ?: return@forEach + metaState = metaState and metaCode.inv() + } else if (value == MetaPressState.PRESSED) { + metaPressStates[key] = MetaPressState.UNSET_ON_RELEASE + } + } + } + } + + companion object { + private enum class MetaPressState { + UNSET, // default state, not active + SET, // enabled without onPressKey (e.g. in popup) + PRESSED, // key is pressed + UNSET_ON_RELEASE, // key is pressed, but state will be unset on release + RELEASED_BUT_ACTIVE, // key was released without UNSET_ON_RELEASE state, meta state is still set + LOCKED, // key is locked and will be released only by pressing the same key again + } + + private fun Int.toMetaState() = when (this) { + KeyCode.CTRL, KeyCode.CTRL_LOCK -> KeyEvent.META_CTRL_ON + KeyCode.CTRL_LEFT -> KeyEvent.META_CTRL_LEFT_ON + KeyCode.CTRL_RIGHT -> KeyEvent.META_CTRL_RIGHT_ON + KeyCode.ALT, KeyCode.ALT_LOCK -> KeyEvent.META_ALT_ON + KeyCode.ALT_LEFT -> KeyEvent.META_ALT_LEFT_ON + KeyCode.ALT_RIGHT -> KeyEvent.META_ALT_RIGHT_ON + KeyCode.FN, KeyCode.FN_LOCK -> KeyEvent.META_FUNCTION_ON + KeyCode.META, KeyCode.META_LOCK -> KeyEvent.META_META_ON + KeyCode.META_LEFT -> KeyEvent.META_META_LEFT_ON + KeyCode.META_RIGHT -> KeyEvent.META_META_RIGHT_ON + else -> null + } + + private fun Int.isMetaLock() = this == KeyCode.CTRL_LOCK || this == KeyCode.ALT_LOCK || this == KeyCode.FN_LOCK || this == KeyCode.META_LOCK + } +} diff --git a/app/src/main/java/helium314/keyboard/keyboard/KeyboardId.java b/app/src/main/java/helium314/keyboard/keyboard/KeyboardId.java new file mode 100644 index 0000000000..3c5de6925e --- /dev/null +++ b/app/src/main/java/helium314/keyboard/keyboard/KeyboardId.java @@ -0,0 +1,325 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.keyboard; + +import android.text.InputType; +import android.text.TextUtils; +import android.view.inputmethod.EditorInfo; + +import helium314.keyboard.compat.EditorInfoCompatUtils; +import helium314.keyboard.latin.RichInputMethodSubtype; +import helium314.keyboard.latin.WordComposer; +import helium314.keyboard.latin.utils.InputTypeUtils; + +import java.util.Arrays; +import java.util.Locale; +import java.util.Objects; + +import static helium314.keyboard.latin.common.Constants.Subtype.ExtraValue.KEYBOARD_LAYOUT_SET; + +/** + * Unique identifier for each keyboard type. + */ +public final class KeyboardId { + public static final int MODE_TEXT = 0; + public static final int MODE_URL = 1; + public static final int MODE_EMAIL = 2; + public static final int MODE_IM = 3; + public static final int MODE_PHONE = 4; + public static final int MODE_NUMBER = 5; + public static final int MODE_DATE = 6; + public static final int MODE_TIME = 7; + public static final int MODE_DATETIME = 8; + public static final int MODE_NUMPAD = 9; + + public static final int ELEMENT_ALPHABET = 0; + public static final int ELEMENT_ALPHABET_MANUAL_SHIFTED = 1; + public static final int ELEMENT_ALPHABET_AUTOMATIC_SHIFTED = 2; + public static final int ELEMENT_ALPHABET_SHIFT_LOCKED = 3; + public static final int ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED = 4; + public static final int ELEMENT_SYMBOLS = 5; + public static final int ELEMENT_SYMBOLS_SHIFTED = 6; + public static final int ELEMENT_PHONE = 7; + public static final int ELEMENT_PHONE_SYMBOLS = 8; + public static final int ELEMENT_NUMBER = 9; + public static final int ELEMENT_EMOJI_RECENTS = 10; + public static final int ELEMENT_EMOJI_CATEGORY1 = 11; + public static final int ELEMENT_EMOJI_CATEGORY2 = 12; + public static final int ELEMENT_EMOJI_CATEGORY3 = 13; + public static final int ELEMENT_EMOJI_CATEGORY4 = 14; + public static final int ELEMENT_EMOJI_CATEGORY5 = 15; + public static final int ELEMENT_EMOJI_CATEGORY6 = 16; + public static final int ELEMENT_EMOJI_CATEGORY7 = 17; + public static final int ELEMENT_EMOJI_CATEGORY8 = 18; + public static final int ELEMENT_EMOJI_CATEGORY9 = 19; + public static final int ELEMENT_EMOJI_CATEGORY10 = 20; + public static final int ELEMENT_EMOJI_CATEGORY11 = 21; + public static final int ELEMENT_EMOJI_CATEGORY12 = 22; + public static final int ELEMENT_EMOJI_CATEGORY13 = 23; + public static final int ELEMENT_EMOJI_CATEGORY14 = 24; + public static final int ELEMENT_EMOJI_CATEGORY15 = 25; + public static final int ELEMENT_EMOJI_CATEGORY16 = 26; + public static final int ELEMENT_CLIPBOARD = 27; + public static final int ELEMENT_NUMPAD = 28; + public static final int ELEMENT_EMOJI_BOTTOM_ROW = 29; + public static final int ELEMENT_CLIPBOARD_BOTTOM_ROW = 30; + + public final RichInputMethodSubtype mSubtype; + public final int mWidth; + public final int mHeight; + public final int mMode; + public final int mElementId; + public final EditorInfo mEditorInfo; + public final boolean mDeviceLocked; + public final boolean mNumberRowEnabled; + public final boolean mNumberRowInSymbols; + public final boolean mLanguageSwitchKeyEnabled; + public final boolean mEmojiKeyEnabled; + public final String mCustomActionLabel; + public final boolean mHasShortcutKey; + public final boolean mIsSplitLayout; + public final boolean mOneHandedModeEnabled; + public final KeyboardLayoutSet.InternalAction mInternalAction; + + private final int mHashCode; + + public KeyboardId(final int elementId, final KeyboardLayoutSet.Params params) { + mSubtype = params.mSubtype; + mWidth = params.mKeyboardWidth; + mHeight = params.mKeyboardHeight; + mMode = params.mMode; + mElementId = elementId; + mEditorInfo = params.mEditorInfo; + mDeviceLocked = params.mDeviceLocked; + mNumberRowEnabled = params.mNumberRowEnabled; + mNumberRowInSymbols = params.mNumberRowInSymbols; + mLanguageSwitchKeyEnabled = params.mLanguageSwitchKeyEnabled; + mEmojiKeyEnabled = params.mEmojiKeyEnabled; + mCustomActionLabel = (mEditorInfo.actionLabel != null) + ? mEditorInfo.actionLabel.toString() : null; + mHasShortcutKey = params.mVoiceInputKeyEnabled; + mIsSplitLayout = params.mIsSplitLayoutEnabled; + mOneHandedModeEnabled = params.mOneHandedModeEnabled; + mInternalAction = params.mInternalAction; + + mHashCode = computeHashCode(this); + } + + private static int computeHashCode(final KeyboardId id) { + return Arrays.hashCode(new Object[] { + id.mElementId, + id.mMode, + id.mWidth, + id.mHeight, + id.passwordInput(), + id.mDeviceLocked, + id.mHasShortcutKey, + id.mNumberRowEnabled, + id.mLanguageSwitchKeyEnabled, + id.mEmojiKeyEnabled, + id.isMultiLine(), + id.imeAction(), + id.mCustomActionLabel, + id.navigateNext(), + id.navigatePrevious(), + id.mSubtype, + id.mIsSplitLayout, + id.mInternalAction + }); + } + + private boolean equals(final KeyboardId other) { + if (other == this) + return true; + return other.mElementId == mElementId + && other.mMode == mMode + && other.mWidth == mWidth + && other.mHeight == mHeight + && other.passwordInput() == passwordInput() + && other.mDeviceLocked == mDeviceLocked + && other.mHasShortcutKey == mHasShortcutKey + && other.mNumberRowEnabled == mNumberRowEnabled + && other.mLanguageSwitchKeyEnabled == mLanguageSwitchKeyEnabled + && other.mEmojiKeyEnabled == mEmojiKeyEnabled + && other.isMultiLine() == isMultiLine() + && other.imeAction() == imeAction() + && TextUtils.equals(other.mCustomActionLabel, mCustomActionLabel) + && other.navigateNext() == navigateNext() + && other.navigatePrevious() == navigatePrevious() + && other.mSubtype.equals(mSubtype) + && other.mIsSplitLayout == mIsSplitLayout + && Objects.equals(other.mInternalAction, mInternalAction); + } + + private static boolean isAlphabetKeyboard(final int elementId) { + return elementId < ELEMENT_SYMBOLS; + } + + public boolean isAlphaOrSymbolKeyboard() { + return mElementId <= ELEMENT_SYMBOLS_SHIFTED; + } + + public boolean isAlphabetKeyboard() { + return isAlphabetKeyboard(mElementId); + } + + public boolean navigateNext() { + return (mEditorInfo.imeOptions & EditorInfo.IME_FLAG_NAVIGATE_NEXT) != 0 + || imeAction() == EditorInfo.IME_ACTION_NEXT; + } + + public boolean navigatePrevious() { + return (mEditorInfo.imeOptions & EditorInfo.IME_FLAG_NAVIGATE_PREVIOUS) != 0 + || imeAction() == EditorInfo.IME_ACTION_PREVIOUS; + } + + public boolean passwordInput() { + final int inputType = mEditorInfo.inputType; + return InputTypeUtils.isAnyPasswordInputType(inputType); + } + + public boolean isMultiLine() { + return (mEditorInfo.inputType & InputType.TYPE_TEXT_FLAG_MULTI_LINE) != 0; + } + + public boolean isAlphabetShifted() { + return mElementId == ELEMENT_ALPHABET_SHIFT_LOCKED || mElementId == ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED + || mElementId == ELEMENT_ALPHABET_AUTOMATIC_SHIFTED || mElementId == ELEMENT_ALPHABET_MANUAL_SHIFTED; + } + + public boolean isAlphabetShiftedManually() { + return mElementId == ELEMENT_ALPHABET_SHIFT_LOCKED || mElementId == ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED + || mElementId == ELEMENT_ALPHABET_MANUAL_SHIFTED; + } + + public boolean isNumberLayout() { + return mElementId == ELEMENT_NUMBER || mElementId == ELEMENT_NUMPAD + || mElementId == ELEMENT_PHONE || mElementId == ELEMENT_PHONE_SYMBOLS; + } + + public boolean isEmojiKeyboard() { + return mElementId >= ELEMENT_EMOJI_RECENTS && mElementId <= ELEMENT_EMOJI_CATEGORY16; + } + + public boolean isEmojiClipBottomRow() { + return mElementId == ELEMENT_CLIPBOARD_BOTTOM_ROW || mElementId == ELEMENT_EMOJI_BOTTOM_ROW; + } + + public int imeAction() { + return InputTypeUtils.getImeOptionsActionIdFromEditorInfo(mEditorInfo); + } + + public Locale getLocale() { + return mSubtype.getLocale(); + } + + @Override + public boolean equals(final Object other) { + return other instanceof KeyboardId && equals((KeyboardId) other); + } + + @Override + public int hashCode() { + return mHashCode; + } + + @Override + public String toString() { + return String.format(Locale.ROOT, "[%s %s:%s %dx%d %s %s%s%s%s%s%s%s%s%s%s%s]", + elementIdToName(mElementId), + mSubtype.getLocale(), + mSubtype.getExtraValueOf(KEYBOARD_LAYOUT_SET), + mWidth, mHeight, + modeName(mMode), + actionName(imeAction()), + (navigateNext() ? " navigateNext" : ""), + (navigatePrevious() ? " navigatePrevious" : ""), + (mDeviceLocked ? " deviceLocked" : ""), + (passwordInput() ? " passwordInput" : ""), + (mHasShortcutKey ? " hasShortcutKey" : ""), + (mNumberRowEnabled ? " numberRowEnabled" : ""), + (mLanguageSwitchKeyEnabled ? " languageSwitchKeyEnabled" : ""), + (mEmojiKeyEnabled ? " emojiKeyEnabled" : ""), + (isMultiLine() ? " isMultiLine" : ""), + (mIsSplitLayout ? " isSplitLayout" : "") + ); + } + + public static boolean equivalentEditorInfoForKeyboard(final EditorInfo a, final EditorInfo b) { + if (a == null && b == null) return true; + if (a == null || b == null) return false; + return a.inputType == b.inputType + && a.imeOptions == b.imeOptions + && TextUtils.equals(a.privateImeOptions, b.privateImeOptions); + } + + public static String elementIdToName(final int elementId) { + return switch (elementId) { + case ELEMENT_ALPHABET -> "alphabet"; + case ELEMENT_ALPHABET_MANUAL_SHIFTED -> "alphabetManualShifted"; + case ELEMENT_ALPHABET_AUTOMATIC_SHIFTED -> "alphabetAutomaticShifted"; + case ELEMENT_ALPHABET_SHIFT_LOCKED -> "alphabetShiftLocked"; + case ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED -> "alphabetShiftLockShifted"; + case ELEMENT_SYMBOLS -> "symbols"; + case ELEMENT_SYMBOLS_SHIFTED -> "symbolsShifted"; + case ELEMENT_PHONE -> "phone"; + case ELEMENT_PHONE_SYMBOLS -> "phoneSymbols"; + case ELEMENT_NUMBER -> "number"; + case ELEMENT_EMOJI_RECENTS -> "emojiRecents"; + case ELEMENT_EMOJI_CATEGORY1 -> "emojiCategory1"; + case ELEMENT_EMOJI_CATEGORY2 -> "emojiCategory2"; + case ELEMENT_EMOJI_CATEGORY3 -> "emojiCategory3"; + case ELEMENT_EMOJI_CATEGORY4 -> "emojiCategory4"; + case ELEMENT_EMOJI_CATEGORY5 -> "emojiCategory5"; + case ELEMENT_EMOJI_CATEGORY6 -> "emojiCategory6"; + case ELEMENT_EMOJI_CATEGORY7 -> "emojiCategory7"; + case ELEMENT_EMOJI_CATEGORY8 -> "emojiCategory8"; + case ELEMENT_EMOJI_CATEGORY9 -> "emojiCategory9"; + case ELEMENT_EMOJI_CATEGORY10 -> "emojiCategory10"; + case ELEMENT_EMOJI_CATEGORY11 -> "emojiCategory11"; + case ELEMENT_EMOJI_CATEGORY12 -> "emojiCategory12"; + case ELEMENT_EMOJI_CATEGORY13 -> "emojiCategory13"; + case ELEMENT_EMOJI_CATEGORY14 -> "emojiCategory14"; + case ELEMENT_EMOJI_CATEGORY15 -> "emojiCategory15"; + case ELEMENT_EMOJI_CATEGORY16 -> "emojiCategory16"; + case ELEMENT_CLIPBOARD -> "clipboard"; + case ELEMENT_NUMPAD -> "numpad"; + default -> null; + }; + } + + public static String modeName(final int mode) { + return switch (mode) { + case MODE_TEXT -> "text"; + case MODE_URL -> "url"; + case MODE_EMAIL -> "email"; + case MODE_IM -> "im"; + case MODE_PHONE -> "phone"; + case MODE_NUMBER -> "number"; + case MODE_DATE -> "date"; + case MODE_TIME -> "time"; + case MODE_DATETIME -> "datetime"; + case MODE_NUMPAD -> "numpad"; + default -> null; + }; + } + + public static String actionName(final int actionId) { + return (actionId == InputTypeUtils.IME_ACTION_CUSTOM_LABEL) ? "actionCustomLabel" + : EditorInfoCompatUtils.imeActionName(actionId); + } + + public int getKeyboardCapsMode() { + return switch (mElementId) { + case KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED, KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED -> + WordComposer.CAPS_MODE_MANUAL_SHIFT_LOCKED; + case KeyboardId.ELEMENT_ALPHABET_MANUAL_SHIFTED -> WordComposer.CAPS_MODE_MANUAL_SHIFTED; + case KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED -> WordComposer.CAPS_MODE_AUTO_SHIFTED; + default -> WordComposer.CAPS_MODE_OFF; + }; + } +} diff --git a/app/src/main/java/helium314/keyboard/keyboard/KeyboardLayoutSet.java b/app/src/main/java/helium314/keyboard/keyboard/KeyboardLayoutSet.java new file mode 100644 index 0000000000..5c293b4e6e --- /dev/null +++ b/app/src/main/java/helium314/keyboard/keyboard/KeyboardLayoutSet.java @@ -0,0 +1,346 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.keyboard; + +import android.content.Context; +import android.text.InputType; +import android.view.inputmethod.EditorInfo; + +import helium314.keyboard.compat.IsLockedCompatKt; +import helium314.keyboard.keyboard.internal.KeyboardBuilder; +import helium314.keyboard.keyboard.internal.KeyboardIconsSet; +import helium314.keyboard.keyboard.internal.KeyboardParams; +import helium314.keyboard.keyboard.internal.UniqueKeysCache; +import helium314.keyboard.keyboard.internal.keyboard_parser.LayoutParser; +import helium314.keyboard.keyboard.internal.keyboard_parser.LocaleKeyboardInfos; +import helium314.keyboard.keyboard.internal.keyboard_parser.LocaleKeyboardInfosKt; +import helium314.keyboard.latin.RichInputMethodManager; +import helium314.keyboard.latin.RichInputMethodSubtype; +import helium314.keyboard.latin.settings.Settings; +import helium314.keyboard.latin.utils.InputTypeUtils; +import helium314.keyboard.latin.utils.Log; +import helium314.keyboard.latin.utils.ResourceUtils; +import helium314.keyboard.latin.utils.ScriptUtils; +import helium314.keyboard.latin.utils.SubtypeLocaleUtils; + +import java.lang.ref.SoftReference; +import java.util.HashMap; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +/** + * This class represents a set of keyboard layouts. Each of them represents a different keyboard + * specific to a keyboard state, such as alphabet, symbols, and so on. Layouts in the same + * {@link KeyboardLayoutSet} are related to each other. + * A {@link KeyboardLayoutSet} needs to be created for each + * {@link android.view.inputmethod.EditorInfo}. + */ +public final class KeyboardLayoutSet { + private static final String TAG = KeyboardLayoutSet.class.getSimpleName(); + private static final boolean DEBUG_CACHE = false; + + private final Context mContext; + @NonNull + private final Params mParams; + public final LocaleKeyboardInfos mLocaleKeyboardInfos; + + // How many layouts we forcibly keep in cache. This only includes ALPHABET (default) and + // ALPHABET_AUTOMATIC_SHIFTED layouts - other layouts may stay in memory in the map of + // soft-references, but we forcibly cache this many alphabetic/auto-shifted layouts. + private static final int FORCIBLE_CACHE_SIZE = 4; + // By construction of soft references, anything that is also referenced somewhere else + // will stay in the cache. So we forcibly keep some references in an array to prevent + // them from disappearing from sKeyboardCache. + private static final Keyboard[] sForcibleKeyboardCache = new Keyboard[FORCIBLE_CACHE_SIZE]; + private static final HashMap> sKeyboardCache = new HashMap<>(); + @NonNull + private static final UniqueKeysCache sUniqueKeysCache = UniqueKeysCache.newInstance(); + + public static final class KeyboardLayoutSetException extends RuntimeException { + public final KeyboardId mKeyboardId; + + public KeyboardLayoutSetException(final Throwable cause, final KeyboardId keyboardId) { + super(cause); + mKeyboardId = keyboardId; + } + } + + + /** + * Represents an internal action that overrides the action provided by the input field. + * @param code to send on action key press + * @param label to display on action key + */ + public record InternalAction(int code, String label) {} + + public static final class Params { + int mMode; + boolean mDisableTouchPositionCorrectionDataForTest; // remove + // TODO: Use {@link InputAttributes} instead of these variables. + EditorInfo mEditorInfo; + boolean mVoiceInputKeyEnabled; + boolean mDeviceLocked; + boolean mNumberRowEnabled; + boolean mNumberRowInSymbols; + boolean mLanguageSwitchKeyEnabled; + boolean mEmojiKeyEnabled; + boolean mOneHandedModeEnabled; + RichInputMethodSubtype mSubtype; + boolean mIsSpellChecker; + int mKeyboardWidth; + int mKeyboardHeight; + String mScript = ScriptUtils.SCRIPT_LATIN; + // Indicates if the user has enabled the split-layout preference + // and the required ProductionFlags are enabled. + boolean mIsSplitLayoutEnabled; + InternalAction mInternalAction; + } + + public static void onSystemLocaleChanged() { + clearKeyboardCache(); + LocaleKeyboardInfosKt.clearCache(); + SubtypeLocaleUtils.clearSubtypeDisplayNameCache(); + } + + public static void onKeyboardThemeChanged() { + clearKeyboardCache(); + } + + private static void clearKeyboardCache() { + sKeyboardCache.clear(); + sUniqueKeysCache.clear(); + LayoutParser.INSTANCE.clearCache(); + KeyboardIconsSet.Companion.setNeedsReload(true); + } + + KeyboardLayoutSet(final Context context, @NonNull final Params params) { + mContext = context; + mParams = params; + mLocaleKeyboardInfos = LocaleKeyboardInfosKt.getOrCreate(context, params.mSubtype.getLocale()); + } + + @NonNull + public Keyboard getKeyboard(final int baseKeyboardLayoutSetElementId) { + final int keyboardLayoutSetElementId; + switch (mParams.mMode) { + case KeyboardId.MODE_PHONE -> { + if (baseKeyboardLayoutSetElementId == KeyboardId.ELEMENT_SYMBOLS) { + keyboardLayoutSetElementId = KeyboardId.ELEMENT_PHONE_SYMBOLS; + } else { + keyboardLayoutSetElementId = KeyboardId.ELEMENT_PHONE; + } + } + case KeyboardId.MODE_NUMPAD -> keyboardLayoutSetElementId = KeyboardId.ELEMENT_NUMPAD; + case KeyboardId.MODE_NUMBER, KeyboardId.MODE_DATE, KeyboardId.MODE_TIME, KeyboardId.MODE_DATETIME -> + keyboardLayoutSetElementId = KeyboardId.ELEMENT_NUMBER; + default -> keyboardLayoutSetElementId = baseKeyboardLayoutSetElementId; + } + + // Note: The keyboard for each shift state, and mode are represented as an elementName + // attribute in a keyboard_layout_set XML file. Also each keyboard layout XML resource is + // specified as an elementKeyboard attribute in the file. + // The KeyboardId is an internal key for a Keyboard object. + + final KeyboardId id = new KeyboardId(keyboardLayoutSetElementId, mParams); + try { + return getKeyboard(id); + } catch (final RuntimeException e) { + Log.e(TAG, "Can't create keyboard: " + id, e); + throw new KeyboardLayoutSetException(e, id); + } + } + + @NonNull + private Keyboard getKeyboard(final KeyboardId id) { + final SoftReference ref = sKeyboardCache.get(id); + final Keyboard cachedKeyboard = (ref == null) ? null : ref.get(); + if (cachedKeyboard != null) { + if (DEBUG_CACHE) { + Log.d(TAG, "keyboard cache size=" + sKeyboardCache.size() + ": HIT id=" + id); + } + return cachedKeyboard; + } + + final KeyboardBuilder builder = + new KeyboardBuilder<>(mContext, new KeyboardParams(sUniqueKeysCache)); + sUniqueKeysCache.setEnabled(id.isAlphabetKeyboard()); + builder.load(id); + if (mParams.mDisableTouchPositionCorrectionDataForTest) { + builder.disableTouchPositionCorrectionDataForTest(); + } + final Keyboard keyboard = builder.build(); + sKeyboardCache.put(id, new SoftReference<>(keyboard)); + if ((id.mElementId == KeyboardId.ELEMENT_ALPHABET + || id.mElementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) + && !mParams.mIsSpellChecker) { + // We only forcibly cache the primary, "ALPHABET", layouts. + for (int i = sForcibleKeyboardCache.length - 1; i >= 1; --i) { + sForcibleKeyboardCache[i] = sForcibleKeyboardCache[i - 1]; + } + sForcibleKeyboardCache[0] = keyboard; + if (DEBUG_CACHE) { + Log.d(TAG, "forcing caching of keyboard with id=" + id); + } + } + if (DEBUG_CACHE) { + Log.d(TAG, "keyboard cache size=" + sKeyboardCache.size() + ": " + + ((ref == null) ? "LOAD" : "GCed") + " id=" + id); + } + return keyboard; + } + + public String getScript() { + return mParams.mScript; + } + + public static final class Builder { + private final Context mContext; + + private final Params mParams = new Params(); + + private static final EditorInfo EMPTY_EDITOR_INFO = new EditorInfo(); + + public Builder(final Context context, @Nullable final EditorInfo ei) { + mContext = context; + final Params params = mParams; + + final EditorInfo editorInfo = (ei != null) ? ei : EMPTY_EDITOR_INFO; + params.mMode = getKeyboardMode(editorInfo); + // TODO: Consolidate those with {@link InputAttributes}. + params.mEditorInfo = editorInfo; + + // When the device is still locked, features like showing the IME setting app need to be locked down. + params.mDeviceLocked = IsLockedCompatKt.isDeviceLocked(context); + } + + public static KeyboardLayoutSet buildEmojiClipBottomRow(final Context context, @Nullable final EditorInfo ei) { + final Builder builder = new Builder(context, ei); + builder.mParams.mMode = KeyboardId.MODE_TEXT; + final int width = ResourceUtils.getKeyboardWidth(context, Settings.getValues()); + // actually the keyboard does not have full height, but at this point we use it to get correct key heights + final int height = ResourceUtils.getKeyboardHeight(context.getResources(), Settings.getValues()); + builder.setKeyboardGeometry(width, height); + builder.setSubtype(RichInputMethodManager.getInstance().getCurrentSubtype()); + return builder.build(); + } + + public Builder setKeyboardGeometry(final int keyboardWidth, final int keyboardHeight) { + mParams.mKeyboardWidth = keyboardWidth; + mParams.mKeyboardHeight = keyboardHeight; + return this; + } + + public Builder setSubtype(@NonNull final RichInputMethodSubtype subtype) { + final boolean asciiCapable = subtype.getRawSubtype().isAsciiCapable(); + final boolean forceAscii = (mParams.mEditorInfo.imeOptions & EditorInfo.IME_FLAG_FORCE_ASCII) != 0; + mParams.mSubtype = (forceAscii && !asciiCapable) + ? RichInputMethodSubtype.Companion.getNoLanguageSubtype() + : subtype; + return this; + } + + public Builder setIsSpellChecker(final boolean isSpellChecker) { + mParams.mIsSpellChecker = isSpellChecker; + return this; + } + + public Builder setVoiceInputKeyEnabled(final boolean enabled) { + mParams.mVoiceInputKeyEnabled = enabled; + return this; + } + + public Builder setNumberRowEnabled(final boolean enabled) { + mParams.mNumberRowEnabled = enabled; + return this; + } + + public Builder setNumberRowInSymbolsEnabled(final boolean enabled) { + mParams.mNumberRowInSymbols = enabled; + return this; + } + + public Builder setLanguageSwitchKeyEnabled(final boolean enabled) { + mParams.mLanguageSwitchKeyEnabled = enabled; + return this; + } + + public Builder setEmojiKeyEnabled(final boolean enabled) { + mParams.mEmojiKeyEnabled = enabled; + return this; + } + + public Builder disableTouchPositionCorrectionData() { + mParams.mDisableTouchPositionCorrectionDataForTest = true; + return this; + } + + public Builder setSplitLayoutEnabled(final boolean enabled) { + mParams.mIsSplitLayoutEnabled = enabled; + return this; + } + + public Builder setOneHandedModeEnabled(boolean enabled) { + mParams.mOneHandedModeEnabled = enabled; + return this; + } + + public Builder setInternalAction(InternalAction internalAction) { + mParams.mInternalAction = internalAction; + return this; + } + + public KeyboardLayoutSet build() { + if (mParams.mSubtype == null) + throw new RuntimeException("KeyboardLayoutSet subtype is not specified"); + mParams.mScript = ScriptUtils.script(mParams.mSubtype.getLocale()); + return new KeyboardLayoutSet(mContext, mParams); + } + + private static int getKeyboardMode(final EditorInfo editorInfo) { + final int inputType = editorInfo.inputType; + final int variation = inputType & InputType.TYPE_MASK_VARIATION; + + switch (inputType & InputType.TYPE_MASK_CLASS) { + case InputType.TYPE_CLASS_NUMBER: + return KeyboardId.MODE_NUMBER; + case InputType.TYPE_CLASS_DATETIME: + return switch (variation) { + case InputType.TYPE_DATETIME_VARIATION_DATE -> KeyboardId.MODE_DATE; + case InputType.TYPE_DATETIME_VARIATION_TIME -> KeyboardId.MODE_TIME; + default -> KeyboardId.MODE_DATETIME; // must be InputType.TYPE_DATETIME_VARIATION_NORMAL + }; + case InputType.TYPE_CLASS_PHONE: + return KeyboardId.MODE_PHONE; + case InputType.TYPE_CLASS_TEXT: + if (InputTypeUtils.isEmailVariation(variation)) { + return KeyboardId.MODE_EMAIL; + } else if (variation == InputType.TYPE_TEXT_VARIATION_URI) { + return KeyboardId.MODE_URL; + } else if (variation == InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE) { + //return KeyboardId.MODE_IM; + return KeyboardId.MODE_TEXT; + } else if (variation == InputType.TYPE_TEXT_VARIATION_FILTER) { + return KeyboardId.MODE_TEXT; + } else { + return KeyboardId.MODE_TEXT; + } + default: + return KeyboardId.MODE_TEXT; + } + } + } + + // used for testing keyboard layout files without actually creating a keyboard + public static KeyboardId getFakeKeyboardId(final int elementId) { + final Params params = new Params(); + params.mEditorInfo = new EditorInfo(); + params.mSubtype = RichInputMethodSubtype.Companion.getEmojiSubtype(); + params.mSubtype.getMainLayoutName(); + return new KeyboardId(elementId, params); + } +} diff --git a/app/src/main/java/helium314/keyboard/keyboard/KeyboardSwitcher.java b/app/src/main/java/helium314/keyboard/keyboard/KeyboardSwitcher.java new file mode 100644 index 0000000000..eb29a0c6c6 --- /dev/null +++ b/app/src/main/java/helium314/keyboard/keyboard/KeyboardSwitcher.java @@ -0,0 +1,770 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package helium314.keyboard.keyboard; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.SharedPreferences; +import android.content.res.Configuration; +import android.content.res.Resources; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.view.ContextThemeWrapper; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.animation.AnimationUtils; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputMethodSubtype; +import android.widget.FrameLayout; +import android.widget.HorizontalScrollView; +import android.widget.LinearLayout; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import helium314.keyboard.event.Event; +import helium314.keyboard.keyboard.KeyboardLayoutSet.KeyboardLayoutSetException; +import helium314.keyboard.keyboard.clipboard.ClipboardHistoryView; +import helium314.keyboard.keyboard.emoji.EmojiPalettesView; +import helium314.keyboard.keyboard.internal.KeyboardState; +import helium314.keyboard.latin.InputView; +import helium314.keyboard.latin.KeyboardWrapperView; +import helium314.keyboard.latin.LatinIME; +import helium314.keyboard.latin.R; +import helium314.keyboard.latin.RichInputMethodManager; +import helium314.keyboard.latin.RichInputMethodSubtype; +import helium314.keyboard.latin.WordComposer; +import helium314.keyboard.latin.settings.Settings; +import helium314.keyboard.latin.settings.SettingsValues; +import helium314.keyboard.latin.suggestions.SuggestionStripView; +import helium314.keyboard.latin.utils.CapsModeUtils; +import helium314.keyboard.latin.utils.KtxKt; +import helium314.keyboard.latin.utils.LanguageOnSpacebarUtils; +import helium314.keyboard.latin.utils.Log; +import helium314.keyboard.latin.utils.RecapitalizeMode; +import helium314.keyboard.latin.utils.ResourceUtils; +import helium314.keyboard.latin.utils.ScriptUtils; +import helium314.keyboard.latin.utils.SubtypeUtilsAdditional; +import helium314.keyboard.latin.utils.ToolbarMode; + +public final class KeyboardSwitcher implements KeyboardState.SwitchActions { + private static final String TAG = KeyboardSwitcher.class.getSimpleName(); + + private InputView mCurrentInputView; + private KeyboardWrapperView mKeyboardViewWrapper; + private View mMainKeyboardFrame; + private MainKeyboardView mKeyboardView; + private EmojiPalettesView mEmojiPalettesView; + private View mEmojiTabStripView; + private LinearLayout mClipboardStripView; + private HorizontalScrollView mClipboardStripScrollView; + private SuggestionStripView mSuggestionStripView; + private FrameLayout mStripContainer; + private ClipboardHistoryView mClipboardHistoryView; + private TextView mFakeToastView; + private LatinIME mLatinIME; + private RichInputMethodManager mRichImm; + private boolean mIsHardwareAcceleratedDrawingEnabled; + + private KeyboardState mState; + + private KeyboardLayoutSet mKeyboardLayoutSet; + + private KeyboardTheme mKeyboardTheme; + private Context mThemeContext; + private int mCurrentUiMode; + private int mCurrentOrientation; + private int mCurrentDpi; + private boolean mThemeNeedsReload; + + @SuppressLint("StaticFieldLeak") // this is a keyboard, we want to keep it alive in background + private static final KeyboardSwitcher sInstance = new KeyboardSwitcher(); + + public static KeyboardSwitcher getInstance() { + return sInstance; + } + + private KeyboardSwitcher() { + // Intentional empty constructor for singleton. + } + + public static void init(final LatinIME latinIme) { + sInstance.initInternal(latinIme); + } + + private void initInternal(final LatinIME latinIme) { + mLatinIME = latinIme; + mRichImm = RichInputMethodManager.getInstance(); + mState = new KeyboardState(this); + mIsHardwareAcceleratedDrawingEnabled = mLatinIME.enableHardwareAcceleration(); + } + + public void updateKeyboardTheme(@NonNull Context displayContext) { + final boolean themeUpdated = updateKeyboardThemeAndContextThemeWrapper( + displayContext, KeyboardTheme.getKeyboardTheme(displayContext)); + if (themeUpdated) { + Settings settings = Settings.getInstance(); + settings.loadSettings(displayContext, settings.getCurrent().mLocale, settings.getCurrent().mInputAttributes); + if (mKeyboardView != null) + mLatinIME.setInputView(onCreateInputView(displayContext, mIsHardwareAcceleratedDrawingEnabled)); + } + } + + private boolean updateKeyboardThemeAndContextThemeWrapper(final Context context, final KeyboardTheme keyboardTheme) { + final Resources res = context.getResources(); + if (mThemeNeedsReload + || mThemeContext == null + || !keyboardTheme.equals(mKeyboardTheme) + || mCurrentDpi != res.getDisplayMetrics().densityDpi + || mCurrentOrientation != res.getConfiguration().orientation + || (mCurrentUiMode & Configuration.UI_MODE_NIGHT_MASK) != (res.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) + || !mThemeContext.getResources().equals(res) + || Settings.getValues().mColors.haveColorsChanged(context)) { + mThemeNeedsReload = false; + mKeyboardTheme = keyboardTheme; + mThemeContext = new ContextThemeWrapper(context, keyboardTheme.mStyleId); + mCurrentUiMode = res.getConfiguration().uiMode; + mCurrentOrientation = res.getConfiguration().orientation; + mCurrentDpi = res.getDisplayMetrics().densityDpi; + KeyboardLayoutSet.onKeyboardThemeChanged(); + return true; + } + return false; + } + + public void loadKeyboard(final EditorInfo editorInfo, final SettingsValues settingsValues, + final int currentAutoCapsState, @Nullable final RecapitalizeMode currentRecapitalizeState, + KeyboardLayoutSet.InternalAction internalAction) { + final KeyboardLayoutSet.Builder builder = new KeyboardLayoutSet.Builder( + mThemeContext, editorInfo); + final int keyboardWidth = ResourceUtils.getKeyboardWidth(mThemeContext, settingsValues); + final int keyboardHeight = ResourceUtils.getKeyboardHeight(mThemeContext.getResources(), settingsValues); + final boolean oneHandedModeEnabled = settingsValues.mOneHandedModeEnabled; + mKeyboardLayoutSet = builder.setKeyboardGeometry(keyboardWidth, keyboardHeight) + .setSubtype(mRichImm.getCurrentSubtype()) + .setVoiceInputKeyEnabled(settingsValues.mShowsVoiceInputKey) + .setNumberRowEnabled(settingsValues.mShowsNumberRow) + .setNumberRowInSymbolsEnabled(settingsValues.mShowsNumberRowInSymbols) + .setLanguageSwitchKeyEnabled(settingsValues.isLanguageSwitchKeyEnabled()) + .setEmojiKeyEnabled(settingsValues.mShowsEmojiKey) + .setSplitLayoutEnabled(settingsValues.mIsSplitKeyboardEnabled) + .setOneHandedModeEnabled(oneHandedModeEnabled) + .setInternalAction(internalAction) + .build(); + try { + mState.onLoadKeyboard(currentAutoCapsState, currentRecapitalizeState, oneHandedModeEnabled); + } catch (KeyboardLayoutSetException e) { + Log.e(TAG, "loading keyboard failed: " + e.mKeyboardId, e.getCause()); + try { + final InputMethodSubtype defaults = SubtypeUtilsAdditional.INSTANCE.createDefaultSubtype(mRichImm.getCurrentSubtypeLocale()); + mKeyboardLayoutSet = builder.setKeyboardGeometry(keyboardWidth, keyboardHeight) + .setSubtype(RichInputMethodSubtype.Companion.get(defaults)) + .setVoiceInputKeyEnabled(settingsValues.mShowsVoiceInputKey) + .setNumberRowEnabled(settingsValues.mShowsNumberRow) + .setNumberRowInSymbolsEnabled(settingsValues.mShowsNumberRowInSymbols) + .setLanguageSwitchKeyEnabled(settingsValues.isLanguageSwitchKeyEnabled()) + .setEmojiKeyEnabled(settingsValues.mShowsEmojiKey) + .setSplitLayoutEnabled(settingsValues.mIsSplitKeyboardEnabled) + .setOneHandedModeEnabled(oneHandedModeEnabled) + .build(); + mState.onLoadKeyboard(currentAutoCapsState, currentRecapitalizeState, oneHandedModeEnabled); + showToast("error loading the keyboard, falling back to defaults", false); + } catch (KeyboardLayoutSetException e2) { + Log.e(TAG, "even fallback to defaults failed: " + e2.mKeyboardId, e2.getCause()); + } + } + } + + public void saveKeyboardState() { + if (getKeyboard() != null || isShowingEmojiPalettes() || isShowingClipboardHistory()) { + mState.onSaveKeyboardState(); + } + } + + public void onHideWindow() { + if (mKeyboardView != null) { + mKeyboardView.onHideWindow(); + } + } + + private void setKeyboard(final int keyboardId, @NonNull final KeyboardSwitchState toggleState) { + // with a hardware keyboard we might get here without ever calling onCreateInputView, so don't crash + if (mKeyboardView == null) return; + + // Make {@link MainKeyboardView} visible and hide {@link EmojiPalettesView}. + final SettingsValues currentSettingsValues = Settings.getValues(); + setMainKeyboardFrame(currentSettingsValues, toggleState); + // TODO: pass this object to setKeyboard instead of getting the current values. + final MainKeyboardView keyboardView = mKeyboardView; + final Keyboard oldKeyboard = keyboardView.getKeyboard(); + final Keyboard newKeyboard = mKeyboardLayoutSet.getKeyboard(keyboardId); + keyboardView.setKeyboard(newKeyboard); + mCurrentInputView.setKeyboardTopPadding(newKeyboard.mTopPadding); + keyboardView.setKeyPreviewPopupEnabled(currentSettingsValues.mKeyPreviewPopupOn); + keyboardView.updateShortcutKey(mRichImm.isShortcutImeReady()); + final boolean subtypeChanged = (oldKeyboard == null) || !newKeyboard.mId.mSubtype.equals(oldKeyboard.mId.mSubtype); + final int languageOnSpacebarFormatType = LanguageOnSpacebarUtils.getLanguageOnSpacebarFormatType(newKeyboard.mId.mSubtype); + final boolean hasMultipleEnabledIMEsOrSubtypes = mRichImm.hasMultipleEnabledIMEsOrSubtypes(true); + keyboardView.startDisplayLanguageOnSpacebar(subtypeChanged, languageOnSpacebarFormatType, hasMultipleEnabledIMEsOrSubtypes); + } + + public Keyboard getKeyboard() { + if (mKeyboardView != null) { + return mKeyboardView.getKeyboard(); + } + return null; + } + + // TODO: Remove this method. Come up with a more comprehensive way to reset the keyboard layout + // when a keyboard layout set doesn't get reloaded in LatinIME.onStartInputViewInternal(). + public void resetKeyboardStateToAlphabet(final int currentAutoCapsState, + @Nullable final RecapitalizeMode currentRecapitalizeState) { + mState.onResetKeyboardStateToAlphabet(currentAutoCapsState, currentRecapitalizeState); + } + + public void onPressKey(final int code, final boolean isSinglePointer, + final int currentAutoCapsState, @Nullable final RecapitalizeMode currentRecapitalizeState) { + mState.onPressKey(code, isSinglePointer, currentAutoCapsState, currentRecapitalizeState); + } + + public void onReleaseKey(final int code, final boolean withSliding, + final int currentAutoCapsState, @Nullable final RecapitalizeMode currentRecapitalizeState) { + mState.onReleaseKey(code, withSliding, currentAutoCapsState, currentRecapitalizeState); + } + + public void onFinishSlidingInput(final int currentAutoCapsState, + @Nullable final RecapitalizeMode currentRecapitalizeState) { + mState.onFinishSlidingInput(currentAutoCapsState, currentRecapitalizeState); + } + + // Implements {@link KeyboardState.SwitchActions}. + @Override + public void setAlphabetKeyboard() { + if (DEBUG_ACTION) { + Log.d(TAG, "setAlphabetKeyboard"); + } + setKeyboard(KeyboardId.ELEMENT_ALPHABET, KeyboardSwitchState.OTHER); + } + + // Implements {@link KeyboardState.SwitchActions}. + @Override + public void setAlphabetManualShiftedKeyboard() { + if (DEBUG_ACTION) { + Log.d(TAG, "setAlphabetManualShiftedKeyboard"); + } + setKeyboard(KeyboardId.ELEMENT_ALPHABET_MANUAL_SHIFTED, KeyboardSwitchState.OTHER); + } + + // Implements {@link KeyboardState.SwitchActions}. + @Override + public void setAlphabetAutomaticShiftedKeyboard() { + if (DEBUG_ACTION) { + Log.d(TAG, "setAlphabetAutomaticShiftedKeyboard"); + } + setKeyboard(KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED, KeyboardSwitchState.OTHER); + } + + // Implements {@link KeyboardState.SwitchActions}. + @Override + public void setAlphabetShiftLockedKeyboard() { + if (DEBUG_ACTION) { + Log.d(TAG, "setAlphabetShiftLockedKeyboard"); + } + setKeyboard(KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED, KeyboardSwitchState.OTHER); + } + + // Implements {@link KeyboardState.SwitchActions}. + @Override + public void setAlphabetShiftLockShiftedKeyboard() { + if (DEBUG_ACTION) { + Log.d(TAG, "setAlphabetShiftLockShiftedKeyboard"); + } + setKeyboard(KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED, KeyboardSwitchState.OTHER); + } + + // Implements {@link KeyboardState.SwitchActions}. + @Override + public void setSymbolsKeyboard() { + if (DEBUG_ACTION) { + Log.d(TAG, "setSymbolsKeyboard"); + } + setKeyboard(KeyboardId.ELEMENT_SYMBOLS, KeyboardSwitchState.OTHER); + } + + // Implements {@link KeyboardState.SwitchActions}. + @Override + public void setSymbolsShiftedKeyboard() { + if (DEBUG_ACTION) { + Log.d(TAG, "setSymbolsShiftedKeyboard"); + } + setKeyboard(KeyboardId.ELEMENT_SYMBOLS_SHIFTED, KeyboardSwitchState.SYMBOLS_SHIFTED); + } + + public boolean isImeSuppressedByHardwareKeyboard( + @NonNull final SettingsValues settingsValues, + @NonNull final KeyboardSwitchState toggleState) { + return settingsValues.mHasHardwareKeyboard && toggleState == KeyboardSwitchState.HIDDEN; + } + + private void setMainKeyboardFrame( + @NonNull final SettingsValues settingsValues, + @NonNull final KeyboardSwitchState toggleState) { + final int visibility = isImeSuppressedByHardwareKeyboard(settingsValues, toggleState) ? View.GONE : View.VISIBLE; + final int stripVisibility = settingsValues.mToolbarMode == ToolbarMode.HIDDEN ? View.GONE : View.VISIBLE; + mStripContainer.setVisibility(stripVisibility); + PointerTracker.switchTo(mKeyboardView); + mKeyboardView.setVisibility(visibility); + // The visibility of {@link #mKeyboardView} must be aligned with {@link #MainKeyboardFrame}. + // @see #getVisibleKeyboardView() and + // @see LatinIME#onComputeInset(android.inputmethodservice.InputMethodService.Insets) + mMainKeyboardFrame.setVisibility(visibility); + mEmojiPalettesView.setVisibility(View.GONE); + mEmojiPalettesView.stopEmojiPalettes(); + mEmojiTabStripView.setVisibility(View.GONE); + mClipboardStripScrollView.setVisibility(View.GONE); + mSuggestionStripView.setVisibility(stripVisibility); + mClipboardHistoryView.setVisibility(View.GONE); + mClipboardHistoryView.stopClipboardHistory(); + } + + // Implements {@link KeyboardState.SwitchActions}. + @Override + public void setEmojiKeyboard() { + if (DEBUG_ACTION) { + Log.d(TAG, "setEmojiKeyboard"); + } + mMainKeyboardFrame.setVisibility(View.VISIBLE); + // The visibility of {@link #mKeyboardView} must be aligned with {@link #MainKeyboardFrame}. + // @see #getVisibleKeyboardView() and + // @see LatinIME#onComputeInset(android.inputmethodservice.InputMethodService.Insets) + mKeyboardView.setVisibility(View.GONE); + mSuggestionStripView.setVisibility(View.GONE); + mStripContainer.setVisibility(getSecondaryStripVisibility()); + mClipboardStripScrollView.setVisibility(View.GONE); + mEmojiTabStripView.setVisibility(View.VISIBLE); + mClipboardHistoryView.setVisibility(View.GONE); + mEmojiPalettesView.startEmojiPalettes(mKeyboardView.getKeyVisualAttribute(), + mLatinIME.getCurrentInputEditorInfo(), mLatinIME.mKeyboardActionListener); + mEmojiPalettesView.setVisibility(View.VISIBLE); + } + + // Implements {@link KeyboardState.SwitchActions}. + @Override + public void setClipboardKeyboard() { + if (DEBUG_ACTION) { + Log.d(TAG, "setClipboardKeyboard"); + } + mMainKeyboardFrame.setVisibility(View.VISIBLE); + // The visibility of {@link #mKeyboardView} must be aligned with {@link #MainKeyboardFrame}. + // @see #getVisibleKeyboardView() and + // @see LatinIME#onComputeInset(android.inputmethodservice.InputMethodService.Insets) + mKeyboardView.setVisibility(View.GONE); + mEmojiTabStripView.setVisibility(View.GONE); + mSuggestionStripView.setVisibility(View.GONE); + mStripContainer.setVisibility(getSecondaryStripVisibility()); + mClipboardStripScrollView.post(() -> mClipboardStripScrollView.fullScroll(HorizontalScrollView.FOCUS_RIGHT)); + mClipboardStripScrollView.setVisibility(View.VISIBLE); + mEmojiPalettesView.setVisibility(View.GONE); + mClipboardHistoryView.startClipboardHistory(mLatinIME.getClipboardHistoryManager(), mKeyboardView.getKeyVisualAttribute(), + mLatinIME.getCurrentInputEditorInfo(), mLatinIME.mKeyboardActionListener); + mClipboardHistoryView.setVisibility(View.VISIBLE); + } + + @Override + public void setNumpadKeyboard() { + if (DEBUG_ACTION) { + Log.d(TAG, "setNumpadKeyboard"); + } + setKeyboard(KeyboardId.ELEMENT_NUMPAD, KeyboardSwitchState.OTHER); + } + + @Override + public void toggleNumpad(final boolean withSliding, final int autoCapsFlags, + @Nullable final RecapitalizeMode recapitalizeMode, final boolean forceReturnToAlpha) { + if (DEBUG_ACTION) { + Log.d(TAG, "toggleNumpad"); + } + mState.toggleNumpad(withSliding, autoCapsFlags, recapitalizeMode, forceReturnToAlpha, true); + } + + public enum KeyboardSwitchState { + HIDDEN(-1), + SYMBOLS_SHIFTED(KeyboardId.ELEMENT_SYMBOLS_SHIFTED), + EMOJI(KeyboardId.ELEMENT_EMOJI_RECENTS), + CLIPBOARD(KeyboardId.ELEMENT_CLIPBOARD), + OTHER(-1); + + final int mKeyboardId; + + KeyboardSwitchState(int keyboardId) { + mKeyboardId = keyboardId; + } + } + + public KeyboardSwitchState getKeyboardSwitchState() { + boolean hidden = !isShowingEmojiPalettes() && !isShowingClipboardHistory() + && (mKeyboardLayoutSet == null + || mKeyboardView == null + || !mKeyboardView.isShown()); + if (hidden) { + return KeyboardSwitchState.HIDDEN; + } else if (isShowingEmojiPalettes()) { + return KeyboardSwitchState.EMOJI; + } else if (isShowingClipboardHistory()) { + return KeyboardSwitchState.CLIPBOARD; + } else if (isShowingKeyboardId(KeyboardId.ELEMENT_SYMBOLS_SHIFTED)) { + return KeyboardSwitchState.SYMBOLS_SHIFTED; + } + return KeyboardSwitchState.OTHER; + } + + public void onToggleKeyboard(@NonNull final KeyboardSwitchState toggleState) { + KeyboardSwitchState currentState = getKeyboardSwitchState(); + Log.w(TAG, "onToggleKeyboard() : Current = " + currentState + " : Toggle = " + toggleState); + if (currentState == toggleState) { + mLatinIME.stopShowingInputView(); + mLatinIME.hideWindow(); + setAlphabetKeyboard(); + } else { + mLatinIME.startShowingInputView(true); + if (toggleState == KeyboardSwitchState.EMOJI) { + setEmojiKeyboard(); + } else if (toggleState == KeyboardSwitchState.CLIPBOARD) { + setClipboardKeyboard(); + } else { + mEmojiPalettesView.stopEmojiPalettes(); + mEmojiPalettesView.setVisibility(View.GONE); + + mClipboardHistoryView.stopClipboardHistory(); + mClipboardHistoryView.setVisibility(View.GONE); + + mMainKeyboardFrame.setVisibility(View.VISIBLE); + mKeyboardView.setVisibility(View.VISIBLE); + setKeyboard(toggleState.mKeyboardId, toggleState); + } + } + } + + // Future method for requesting an updating to the shift state. + @Override + public void requestUpdatingShiftState(final int autoCapsFlags, @Nullable final RecapitalizeMode recapitalizeMode) { + if (DEBUG_ACTION) { + Log.d(TAG, "requestUpdatingShiftState: " + + " autoCapsFlags=" + CapsModeUtils.flagsToString(autoCapsFlags) + + " recapitalizeMode=" + recapitalizeMode); + } + mState.onUpdateShiftState(autoCapsFlags, recapitalizeMode); + } + + // Implements {@link KeyboardState.SwitchActions}. + @Override + public void startDoubleTapShiftKeyTimer() { + if (DEBUG_TIMER_ACTION) { + Log.d(TAG, "startDoubleTapShiftKeyTimer"); + } + final MainKeyboardView keyboardView = getMainKeyboardView(); + if (keyboardView != null) { + keyboardView.startDoubleTapShiftKeyTimer(); + } + } + + // Implements {@link KeyboardState.SwitchActions}. + @Override + public void cancelDoubleTapShiftKeyTimer() { + if (DEBUG_TIMER_ACTION) { + Log.d(TAG, "setAlphabetKeyboard"); + } + final MainKeyboardView keyboardView = getMainKeyboardView(); + if (keyboardView != null) { + keyboardView.cancelDoubleTapShiftKeyTimer(); + } + } + + // Implements {@link KeyboardState.SwitchActions}. + @Override + public void setOneHandedModeEnabled(boolean enabled) { + setOneHandedModeEnabled(enabled, false); + } + + public void setOneHandedModeEnabled(boolean enabled, boolean force) { + if (!force && mKeyboardViewWrapper.getOneHandedModeEnabled() == enabled) { + return; + } + final Settings settings = Settings.getInstance(); + mKeyboardViewWrapper.setOneHandedModeEnabled(enabled); + mKeyboardViewWrapper.setOneHandedGravity(settings.getCurrent().mOneHandedModeGravity); + + settings.writeOneHandedModeEnabled(enabled); + reloadKeyboard(); + } + + // Implements {@link KeyboardState.SwitchActions}. + @Override + public void switchOneHandedMode() { + mKeyboardViewWrapper.switchOneHandedModeSide(); + Settings.getInstance().writeOneHandedModeGravity(mKeyboardViewWrapper.getOneHandedGravity()); + } + + public void toggleSplitKeyboardMode() { + final Settings settings = Settings.getInstance(); + settings.writeSplitKeyboardEnabled( + !settings.getCurrent().mIsSplitKeyboardEnabled, + mCurrentOrientation == Configuration.ORIENTATION_LANDSCAPE + ); + setOneHandedModeEnabled(settings.getCurrent().mOneHandedModeEnabled, true); + reloadKeyboard(); + } + + public void reloadKeyboard() { + if (mCurrentInputView == null) + return; + mEmojiPalettesView.clearKeyboardCache(); + reloadMainKeyboard(); + } + + public void reloadMainKeyboard() { + // Reload the entire keyboard, and switch to the previous layout + final boolean wasEmoji = isShowingEmojiPalettes(); + final boolean wasClipboard = isShowingClipboardHistory(); + loadKeyboard(mLatinIME.getCurrentInputEditorInfo(), Settings.getValues(), + mLatinIME.getCurrentAutoCapsState(), mLatinIME.getCurrentRecapitalizeState(), null); + if (wasEmoji) { + setEmojiKeyboard(); + } else if (wasClipboard) { + setClipboardKeyboard(); + } + } + + /** + * Displays a toast message. + * + * @param text The text to display in the toast message. + * @param briefToast If true, the toast duration will be short; otherwise, it will last longer. + */ + public void showToast(final String text, final boolean briefToast){ + // In API 32 and below, toasts can be shown without a notification permission. + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.S_V2) { + final int toastLength = briefToast ? Toast.LENGTH_SHORT : Toast.LENGTH_LONG; + final Toast toast = Toast.makeText(mLatinIME, text, toastLength); + toast.setGravity(Gravity.CENTER, 0, 0); + toast.show(); + } else { + final int toastLength = briefToast ? 2000 : 3500; + showFakeToast(text, toastLength); + } + } + + private static int getSecondaryStripVisibility() { + return Settings.getValues().mSecondaryStripVisible? View.VISIBLE : View.GONE; + } + + // Displays a toast-like message with the provided text for a specified duration. + private void showFakeToast(final String text, final int timeMillis) { + if (mFakeToastView.getVisibility() == View.VISIBLE) return; + + final Drawable appIcon = mFakeToastView.getCompoundDrawables()[0]; + if (appIcon != null) { + final int bound = mFakeToastView.getLineHeight(); + appIcon.setBounds(0, 0, bound, bound); + mFakeToastView.setCompoundDrawables(appIcon, null, null, null); + } + mFakeToastView.setText(text); + mFakeToastView.setVisibility(View.VISIBLE); + mFakeToastView.bringToFront(); + mFakeToastView.startAnimation(AnimationUtils.loadAnimation(mLatinIME, R.anim.fade_in)); + + mFakeToastView.postDelayed(() -> { + mFakeToastView.startAnimation(AnimationUtils.loadAnimation(mLatinIME, R.anim.fade_out)); + mFakeToastView.setVisibility(View.GONE); + }, timeMillis); + } + + // Implements {@link KeyboardState.SwitchActions}. + @Override + public boolean isInDoubleTapShiftKeyTimeout() { + if (DEBUG_TIMER_ACTION) { + Log.d(TAG, "isInDoubleTapShiftKeyTimeout"); + } + final MainKeyboardView keyboardView = getMainKeyboardView(); + return keyboardView != null && keyboardView.isInDoubleTapShiftKeyTimeout(); + } + + /** + * Updates state machine to figure out when to automatically switch back to the previous mode. + */ + public void onEvent(final Event event, final int currentAutoCapsState, + @Nullable final RecapitalizeMode currentRecapitalizeState) { + mState.onEvent(event, currentAutoCapsState, currentRecapitalizeState); + } + + public boolean isShowingKeyboardId(@NonNull int... keyboardIds) { + if (mKeyboardView == null || !mKeyboardView.isShown()) { + return false; + } + final Keyboard keyboard = mKeyboardView.getKeyboard(); + if (keyboard == null) // may happen when using hardware keyboard + return false; + int activeKeyboardId = keyboard.mId.mElementId; + for (int keyboardId : keyboardIds) { + if (activeKeyboardId == keyboardId) { + return true; + } + } + return false; + } + + public boolean isShowingEmojiPalettes() { + return mEmojiPalettesView != null && mEmojiPalettesView.isShown(); + } + + public boolean isShowingClipboardHistory() { + return mClipboardHistoryView != null && mClipboardHistoryView.isShown(); + } + + public boolean isShowingPopupKeysPanel() { + if (isShowingEmojiPalettes() || isShowingClipboardHistory()) { + return false; + } + return mKeyboardView.isShowingPopupKeysPanel(); + } + + public boolean isShowingStripContainer() { + return mStripContainer.isShown(); + } + + public View getVisibleKeyboardView() { + if (isShowingEmojiPalettes()) { + return mEmojiPalettesView; + } else if (isShowingClipboardHistory()) { + return mClipboardHistoryView; + } + return mKeyboardView; + } + + public View getWrapperView() { + return mKeyboardViewWrapper; + } + + public View getEmojiTabStrip() { + return mEmojiTabStripView; + } + + public LinearLayout getClipboardStrip() { + return mClipboardStripView; + } + + public MainKeyboardView getMainKeyboardView() { + return mKeyboardView; + } + + public FrameLayout getStripContainer() { return mStripContainer; } + + public void deallocateMemory() { + if (mKeyboardView != null) { + mKeyboardView.cancelAllOngoingEvents(); + mKeyboardView.deallocateMemory(); + } + if (mEmojiPalettesView != null) { + mEmojiPalettesView.stopEmojiPalettes(); + } + if (mClipboardHistoryView != null) { + mClipboardHistoryView.stopClipboardHistory(); + } + } + + public void trimMemory() { + if (mEmojiPalettesView != null) { + mEmojiPalettesView.clearKeyboardCache(); + } + } + + @SuppressLint("InflateParams") + public View onCreateInputView(@NonNull Context displayContext, final boolean isHardwareAcceleratedDrawingEnabled) { + if (mKeyboardView != null) { + mKeyboardView.closing(); + } + PointerTracker.clearOldViewData(); + final SharedPreferences prefs = KtxKt.prefs(displayContext); + if (mSuggestionStripView != null) + prefs.unregisterOnSharedPreferenceChangeListener(mSuggestionStripView); + if (mClipboardHistoryView != null) + prefs.unregisterOnSharedPreferenceChangeListener(mClipboardHistoryView); + if (mThemeNeedsReload) // necessary in some cases (e.g. theme switch) when mThemeNeedsReload is set before first keyboard load + Settings.getInstance().loadSettings(displayContext, Settings.getValues().mLocale, Settings.getValues().mInputAttributes); + + updateKeyboardThemeAndContextThemeWrapper(displayContext, KeyboardTheme.getKeyboardTheme(displayContext)); + mCurrentInputView = (InputView)LayoutInflater.from(mThemeContext).inflate(R.layout.input_view, null); + mMainKeyboardFrame = mCurrentInputView.findViewById(R.id.main_keyboard_frame); + mEmojiPalettesView = mCurrentInputView.findViewById(R.id.emoji_palettes_view); + mClipboardHistoryView = mCurrentInputView.findViewById(R.id.clipboard_history_view); + mFakeToastView = mCurrentInputView.findViewById(R.id.fakeToast); + + mKeyboardViewWrapper = mCurrentInputView.findViewById(R.id.keyboard_view_wrapper); + mKeyboardViewWrapper.setKeyboardActionListener(mLatinIME.mKeyboardActionListener); + mKeyboardView = mCurrentInputView.findViewById(R.id.keyboard_view); + mKeyboardView.setHardwareAcceleratedDrawingEnabled(isHardwareAcceleratedDrawingEnabled); + mKeyboardView.setKeyboardActionListener(mLatinIME.mKeyboardActionListener); + mEmojiPalettesView.setHardwareAcceleratedDrawingEnabled(isHardwareAcceleratedDrawingEnabled); + mEmojiPalettesView.setKeyboardActionListener(mLatinIME.mKeyboardActionListener); + mClipboardHistoryView.setHardwareAcceleratedDrawingEnabled(isHardwareAcceleratedDrawingEnabled); + mClipboardHistoryView.setKeyboardActionListener(mLatinIME.mKeyboardActionListener); + mEmojiTabStripView = mCurrentInputView.findViewById(R.id.emoji_tab_strip); + mClipboardStripView = mCurrentInputView.findViewById(R.id.clipboard_strip); + mClipboardStripScrollView = mCurrentInputView.findViewById(R.id.clipboard_strip_scroll_view); + mSuggestionStripView = mCurrentInputView.findViewById(R.id.suggestion_strip_view); + mStripContainer = mCurrentInputView.findViewById(R.id.strip_container); + + prefs.registerOnSharedPreferenceChangeListener(mSuggestionStripView); + prefs.registerOnSharedPreferenceChangeListener(mClipboardHistoryView); + PointerTracker.switchTo(mKeyboardView); + return mCurrentInputView; + } + + public int getKeyboardShiftMode() { + final Keyboard keyboard = getKeyboard(); + if (keyboard == null) { + return WordComposer.CAPS_MODE_OFF; + } + return keyboard.mId.getKeyboardCapsMode(); + } + + public String getCurrentKeyboardScript() { + if (null == mKeyboardLayoutSet) { + return ScriptUtils.SCRIPT_UNKNOWN; + } + return mKeyboardLayoutSet.getScript(); + } + + public void switchToSubtype(InputMethodSubtype subtype) { + mLatinIME.switchToSubtype(subtype); + } + + // used for debug + public String getLocaleAndConfidenceInfo() { + return mLatinIME.getLocaleAndConfidenceInfo(); + } + + /** Marks the theme as outdated. The theme will be reloaded next time the keyboard is shown. + * If the keyboard is currently showing, theme will be reloaded immediately. */ + public void setThemeNeedsReload() { + mThemeNeedsReload = true; + if (mLatinIME == null || !mLatinIME.isInputViewShown()) + return; // will be reloaded right before showing IME + + // Hide and show IME, showing will trigger the reload. + // Reloading while IME is shown is glitchy, and hiding / showing is so fast the user shouldn't notice. + mLatinIME.hideWindow(); + try { + mLatinIME.showWindow(true); + } catch (IllegalStateException e) { + // in tests isInputViewShown returns true, but showWindow throws "IllegalStateException: Window token is not set yet." + } + } +} diff --git a/app/src/main/java/helium314/keyboard/keyboard/KeyboardTheme.kt b/app/src/main/java/helium314/keyboard/keyboard/KeyboardTheme.kt new file mode 100644 index 0000000000..7bb42bdc8c --- /dev/null +++ b/app/src/main/java/helium314/keyboard/keyboard/KeyboardTheme.kt @@ -0,0 +1,532 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ +package helium314.keyboard.keyboard + +import android.content.Context +import android.content.SharedPreferences +import android.graphics.Color +import android.graphics.drawable.Drawable +import android.os.Build +import android.util.TypedValue +import android.view.ContextThemeWrapper +import androidx.core.content.ContextCompat +import androidx.core.content.edit +import helium314.keyboard.latin.R +import helium314.keyboard.latin.common.AllColors +import helium314.keyboard.latin.common.ColorType +import helium314.keyboard.latin.common.Colors +import helium314.keyboard.latin.common.DefaultColors +import helium314.keyboard.latin.common.DynamicColors +import helium314.keyboard.latin.settings.Defaults +import helium314.keyboard.latin.settings.Settings +import helium314.keyboard.latin.utils.ResourceUtils +import helium314.keyboard.latin.utils.brightenOrDarken +import helium314.keyboard.latin.utils.isBrightColor +import helium314.keyboard.latin.utils.isGoodContrast +import helium314.keyboard.latin.utils.prefs +import helium314.keyboard.settings.SettingsActivity +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.Json +import java.util.EnumMap +import androidx.core.graphics.toColorInt + +class KeyboardTheme // Note: The themeId should be aligned with "themeId" attribute of Keyboard style in values/themes- - - \ No newline at end of file diff --git a/app/src/main/res/values-night-v31/colors.xml b/app/src/main/res/values-night-v31/colors.xml new file mode 100644 index 0000000000..ed16a8fe97 --- /dev/null +++ b/app/src/main/res/values-night-v31/colors.xml @@ -0,0 +1,15 @@ + + + + + @android:color/system_accent1_500 + @android:color/system_neutral1_900 + @android:color/system_accent1_500 + @android:color/system_accent1_300 + #FFFFFFFF + @android:color/system_neutral2_800 + @android:color/system_neutral2_800 + @android:color/system_neutral2_700 + diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml new file mode 100644 index 0000000000..c9ef14f4ed --- /dev/null +++ b/app/src/main/res/values-night/colors.xml @@ -0,0 +1,20 @@ + + + + #FFF + #BBB + #444444 + + @color/keyboard_background_dark + + + @color/highlight_color_lxx_dark + #FF303030 + #FF2D4260 + #FF5C94F1 + #FFFFFFFF + #FF212121 + #FF303030 + diff --git a/app/src/main/res/values-night/themes-lxx-auto-amoled.xml b/app/src/main/res/values-night/themes-lxx-auto-amoled.xml deleted file mode 100644 index 25e9a223dd..0000000000 --- a/app/src/main/res/values-night/themes-lxx-auto-amoled.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - diff --git a/app/src/main/res/values-night/themes-lxx-auto-border.xml b/app/src/main/res/values-night/themes-lxx-auto-border.xml deleted file mode 100644 index 6eacd276d9..0000000000 --- a/app/src/main/res/values-night/themes-lxx-auto-border.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - diff --git a/app/src/main/res/values-night/themes-lxx-auto.xml b/app/src/main/res/values-night/themes-lxx-auto.xml deleted file mode 100644 index d27bf2d616..0000000000 --- a/app/src/main/res/values-night/themes-lxx-auto.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - diff --git a/app/src/main/res/values-nl-rBE/bools.xml b/app/src/main/res/values-nl-rBE/bools.xml index ad833975e9..8c43fa7b85 100644 --- a/app/src/main/res/values-nl-rBE/bools.xml +++ b/app/src/main/res/values-nl-rBE/bools.xml @@ -1,21 +1,7 @@ true diff --git a/app/src/main/res/values-nl/bools.xml b/app/src/main/res/values-nl/bools.xml index c289e5bf38..481b3fdc68 100644 --- a/app/src/main/res/values-nl/bools.xml +++ b/app/src/main/res/values-nl/bools.xml @@ -1,21 +1,7 @@ - - - "Ga" - "Volg." - "Vorig" - "Gereed" - "Verz." - "Zoeken" - "Pauze" - "Wacht" - diff --git a/app/src/main/res/values-nl/strings-config-important-notice.xml b/app/src/main/res/values-nl/strings-config-important-notice.xml deleted file mode 100644 index 4942e8122d..0000000000 --- a/app/src/main/res/values-nl/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "Suggesties verbeteren met je communicatie en getypte gegevens" - diff --git a/app/src/main/res/values-nl/strings-emoji-descriptions.xml b/app/src/main/res/values-nl/strings-emoji-descriptions.xml deleted file mode 100644 index 583e04f55d..0000000000 --- a/app/src/main/res/values-nl/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "Copyrightsymbool" - "Gedeponeerd-symbool" - "Dubbel uitroepteken" - "Uitroepteken vraagteken" - "Handelsmerksymbool" - "Informatiebron" - "Pijl links-rechts" - "Pijl omhoog-omlaag" - "Pijl naar noordwesten" - "Pijl naar noordoosten" - "Pijl naar zuidoosten" - "Pijl naar zuidwesten" - "Gehoekte pijl naar links" - "Gehoekte pijl naar rechts" - "Horloge" - "Zandloper" - - - - - "Zwarte dubbele driehoekjes naar rechts" - "Zwarte dubbele driehoekjes naar links" - "Zwarte dubbele driehoekjes omhoog" - "Zwarte dubbele driehoekjes omlaag" - - - - - - - "Wekker" - - - - - "Zandloper met lopend zand" - - - - - - - "Omcirkelde Latijnse hoofdletter M" - "Zwart klein vierkant" - "Wit klein vierkant" - "Zwart driehoekje naar rechts" - "Zwart driehoekje naar links" - "Wit middelgroot vierkant" - "Zwart middelgroot vierkant" - "Wit middelgroot klein vierkant" - "Zwart middelgroot klein vierkant" - "Zwarte zon met stralen" - "Wolk" - - - - - - - "Zwarte telefoon" - "Stembus met vinkje" - "Paraplu met regendruppels" - "Warme drank" - - - "Witte wijsvinger omhoog" - - - - - - - - - - - - - - - - - - - "Wit lachend gezicht" - "Ram" - "Stier" - "Tweelingen" - "Kreeft" - "Leeuw" - "Maagd" - "Weegschaal" - "Schorpioen" - "Boogschutter" - "Steenbok" - "Waterman" - "Vissen" - "Zwarte schoppen" - "Zwarte klavers" - "Zwarte harten" - "Zwarte ruiten" - "Heetwaterbronnen" - "Zwart universeel recyclingsymbool" - "Rolstoelsymbool" - - - "Anker" - - - - - - - - - - - - - "Waarschuwingsbord" - "Hoogspanningsbord" - "Middelgrote witte cirkel" - "Middelgrote zwarte cirkel" - - - - - "Voetbal" - "Honkbal" - "Sneeuwpop zonder sneeuw" - "Zon achter wolk" - - - "Slangendrager" - - - - - - - "Verboden toegang" - - - "Kerk" - - - - - "Fontein" - "Vlag in hole" - - - "Zeilboot" - - - - - - - "Tent" - "Benzinepomp" - "Zwarte schaar" - "Wit vinkje" - "Vliegtuig" - "Envelop" - "Vuist omhoog" - "Hand omhoog" - "Overwinningsgebaar" - - - "Potlood" - "Zwarte vulpen" - "Gevuld vinkje" - "Gevuld vermenigvuldigingsteken x" - - - - - "Sterretjes" - "Sterretje met acht spaken" - "Zwarte achtpuntige ster" - "Sneeuwvlok" - "Fonkeling" - "Kruis" - "Kruis in zwart vierkant" - "Gevuld vraagteken" - "Vraagteken met omtrek" - "Uitroepteken met omtrek" - "Gevuld uitroepteken" - - - "Effen zwart hart" - "Gevuld plusteken" - "Gevuld minteken" - "Gevuld deelteken" - "Gevulde pijl naar rechts" - "Gekrulde lus" - "Dubbele gekrulde lus" - "Pijl naar rechts en vervolgens omhoog" - "Pijl naar rechts en vervolgens omlaag" - "Zwarte pijl naar links" - "Zwarte pijl-omhoog" - "Zwarte pijl-omlaag" - "Zwart groot vierkant" - "Wit groot vierkant" - "Witte middelgrote ster" - "Gevulde grote cirkel" - "Golvend streepje" - "Beurtwisselingsteken" - "Omcirkeld ideogram \'Gefeliciteerd\'" - "Omcirkeld ideogram \'Geheim\'" - "Mahjong-steen rode draak" - "Speelkaart zwarte joker" - "Bloedgroep A" - "Bloedgroep B" - "Bloedgroep O" - "Parkeerplaats" - "Bloedgroep AB" - "CL in vierkant" - "COOL in vierkant" - "FREE in vierkant" - "ID in vierkant" - "NEW in vierkant" - "NG in vierkant" - "OK in vierkant" - "SOS in vierkant" - "UP met uitroepteken in vierkant" - "VS in vierkant" - "Katakana \'Hier\' in vierkant" - "Katakana \'Service\' in vierkant" - "Ideogram \'Kosteloos\' in vierkant" - "Ideogram \'Gereserveerde plaats\' in vierkant" - "Ideogram \'Verbod\' in vierkant" - "Ideogram \'Ruimte beschikbaar\' in vierkant" - "Ideogram \'Acceptatie\' in vierkant" - "Ideogram \'Volledig bezet\' in vierkant" - "Ideogram \'Betaald\' in vierkant" - "Ideogram \'Maandelijks\' in vierkant" - "Ideogram \'Aanvraag\' in vierkant" - "Ideogram \'Korting\' in vierkant" - "Ideogram \'In bedrijf\' in vierkant" - "Ideogram\' Voordeel\' in cirkel" - "Ideogram \'Acceptatie\' in cirkel" - "Cycloon" - "Mistig" - "Dichte paraplu" - "Night met sterren" - "Zonsopgang boven de bergen" - "Zonsopgang" - "Stadslandschap bij zonsondergang" - "Zonsondergang over gebouwen" - "Regenboog" - "Brug bij nacht" - "Golf" - "Vulkaan" - "Melkweg" - "Aardbol Europa-Afrika" - "Aardbol Noord- en Zuid-Amerika" - "Aardbol Azië-Australië" - "Aardbol met meridianen" - "Symbool voor nieuwe maan" - "Symbool voor wassende halvemaan" - "Symbool voor maan in eerste kwartaal" - "Symbool voor wassende bolvormige maan" - "Symbool voor volle maan" - "Symbool voor afnemende bolvormige maan" - "Symbool voor maan in laatste kwartier" - "Symbool voor afnemende halvemaan" - "Halvemaan" - "Nieuwe maan met gezicht" - "Maan in eerste kwartier met gezicht" - "Maan in laatste kwartier met gezicht" - "Volle maan met gezicht" - "Zon met gezicht" - "Stralende ster" - "Vallende ster" - - - - - - - - - - - - - - - - - - - - - - - - - - - "Kastanje" - "Zaailing" - "Groenblijvende boom" - "Loofboom" - "Palmboom" - "Cactus" - - - "Tulp" - "Kersenbloesem" - "Roos" - "Hibiscus" - "Zonnebloem" - "Bloesem" - "Maïskolf" - "Rijstaar" - "Kruid" - "Klavertje vier" - "Esdoornblad" - "Gevallen blad" - "Blad dwarrelt in de wind" - "Paddestoel" - "Tomaat" - "Aubergine" - "Druiven" - "Meloen" - "Watermeloen" - "Mandarijn" - "Citroen" - "Banaan" - "Ananas" - "Rode appel" - "Groene appel" - "Peer" - "Perzik" - "Kersen" - "Aardbei" - "Hamburger" - "Pizzapunt" - "Vlees op het bot" - "Kippenpoot" - "Rijstcracker" - "Rijstballetje" - "Gekookte rijst" - "Curry en rijst" - "Stomende kom" - "Spaghetti" - "Brood" - "Friet" - "Gepofte zoete aardappel" - "Dango" - "Oden" - "Sushi" - "Gefrituurde garnaal" - "Viskoekje met krul" - "Softijs" - "Geschaafd ijs" - "IJs" - "Donut" - "Cookie" - "Chocoladereep" - "Snoep" - "Lolly" - "Vla" - "Honingpot" - "Cake" - "Bento box" - "Stoofschotel" - "Koken" - "Vork en mes" - "Theekopje zonder oor" - "Sakefles en kopje" - "Wijnglas" - "Cocktailglas" - "Tropisch drankje" - "Bierglas" - "Klinkende bierglazen" - "Babyflesje" - - - - - - - "Strik" - "Ingepakt cadeau" - "Verjaardagstaart" - "Pompoenlantaarn" - "Kerstboom" - "De kerstman" - "Vuurwerk" - "Sterretje" - "Ballon" - "Party-popper" - "Confettibal" - "Boom met papierlinten" - "Gekruiste vlaggen" - "Dennentakdecoratie" - "Japanse poppen" - "Karperwimpel" - "Windklok" - "Maankijkceremonie" - "Schooltas" - "Diplomeringshoed" - - - - - - - - - - - - - - - "Draaimolenpaard" - "Reuzenrad" - "Achtbaan" - "Hengel en vis" - "Microfoon" - "Filmcamera" - "Bioscoop" - "Hoofdtelefoon" - "Schilderspalet" - "Hoge hoed" - "Circustent" - "Kaartje" - "Klapbord" - "Podiumkunsten" - "Videogame" - "Voltreffer" - "Fruitautomaat" - "Biljart" - "Dobbelsteen" - "Bowlen" - "Speelkaarten met bloemen" - "Muzieknoot" - "Meerdere muzieknoten" - "Saxofoon" - "Gitaar" - "Keyboard" - "Trompet" - "Viool" - "Notenschrift" - "Hardloopshirt met sjerp" - "Tennisracket en bal" - "Ski\'s en skischoen" - "Basketbal en basket" - "Geblokte vlag" - "Snowboarder" - "Hardloper" - "Surfer" - - - "Trofee" - "Paardenrennen" - "American football" - "Rugby" - "Zwemmer" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Huis bouwen" - "Huis met tuin" - "Kantoorgebouw" - "Japans postkantoor" - "Europees postkantoor" - "Ziekenhuis" - "Bank" - "Pinautomaat" - "Hotel" - "Love-hotel" - "Supermarkt" - "School" - "Warenhuis" - "Fabriek" - "Izakaya-lantaarn" - "Japans kasteel" - "Europees kasteel" - - - - - - - - - - - - - - - - - - - - - - - - - "Rat" - "Muis" - "Os" - "Waterbuffel" - "Koe" - - - "Luipaard" - "Konijn" - "Kat" - "Draak" - "Krokodil" - "Walvis" - "Slak" - "Slang" - "Paard" - "Ram" - "Geit" - "Schaap" - "Aap" - "Haan" - "Kip" - "Hond" - "Varken" - "Everzwijn" - "Olifant" - "Octopus" - "Spiraalvormige schelp" - "Insect" - "Mier" - "Honingbij" - "Lieveheersbeestje" - "Vis" - "Tropische vis" - "Kogelvis" - "Schildpad" - "Kuiken dat uit het ei komt" - "Kuikentje" - "Kuikentje dat naar voren kijkt" - "Vogel" - "Pinguïn" - "Koala" - "Poedel" - "Dromedaris" - "Kameel" - "Dolfijn" - "Muizengezicht" - "Koeiengezicht" - "Tijgergezicht" - "Konijnengezicht" - "Kattengezicht" - "Drakengezicht" - "Spuitende walvis" - "Paardengezicht" - "Apengezicht" - "Hondengezicht" - "Varkensgezicht" - "Kikkergezicht" - "Hamstergezicht" - "Wolvengezicht" - "Berengezicht" - "Pandagezicht" - "Varkensneus" - "Pootafdrukken" - - - "Ogen" - - - "Oor" - "Neus" - "Mond" - "Tong" - "Witte hand met wijsvinger omhoog" - "Witte hand met wijsvinger omlaag" - "Witte hand met wijsvinger naar links" - "Witte hand met wijsvinger naar rechts" - "Gebalde vuist" - "Zwaaiende hand" - "OK-handgebaar" - "Duim omhoog" - "Duim omlaag" - "Klappende handen" - "Open handen" - "Kroon" - "Dameshoed" - "Bril" - "Stropdas" - "T-shirt" - "Jeans" - "Jurk" - "Kimono" - "Bikini" - "Dameskleding" - "Portemonnee" - "Handtas" - "Tasje" - "Herenschoen" - "Sportschoen" - "Schoen met hoge hak" - "Damessandaal" - "Dameslaars" - "Voetafdrukken" - "Buste in silhouet" - "Bustes in silhouet" - "Jongen" - "Meisje" - "Man" - "Vrouw" - "Familie" - "Man en vrouw hand in hand" - "Twee mannen hand in hand" - "Twee vrouwen hand in hand" - "Politieagent" - "Vrouw met konijnenoren" - "Bruid met sluier" - "Persoon met blond haar" - "Man met Chinees hoedje" - "Man met tulband" - "Oudere man" - "Oudere vrouw" - "Baby" - "Bouwvakker" - "Prinses" - "Japanse oger" - "Japanse kobold" - "Spook" - "Baby-engel" - "Buitenaards wezen" - "Buitenaards monster" - "Duiveltje" - "Schedel" - "Persoon van informatiebalie" - "Gardesoldaat" - "Danser" - "Lippenstift" - "Nagellak" - "Gezichtsmassage" - "Kapsel" - "Kapperspaal" - "Injectiespuit" - "Pil" - "Kusafdruk" - "Liefdesbrief" - "Ring" - "Edelsteen" - "Kus" - "Boeket" - "Stel met hartje" - "Bruiloft" - "Kloppend hart" - "Gebroken hart" - "Twee harten" - "Glinsterend hart" - "Groeiend hart" - "Hart met pijl" - "Blauw hart" - "Groen hart" - "Geel hart" - "Paars hart" - "Hart met lint" - "Draaiende harten" - "Hartdecoratie" - "Ruitvorm met stip in het midden" - "Elektrische gloeilamp" - "Symbool voor woede" - "Bom" - "Symbool voor slapen" - "Symbool voor botsing" - "Symbool voor spattende zweetdruppels" - "Druppel" - "Symbool voor wegrennen" - "Poep" - "Gespannen biceps" - "Symbool voor duizelig" - "Spraakballon" - "Gedachtenballon" - "Witte bloem" - "Symbool voor honderd punten" - "Zak met geld" - "Valutaconversie" - "Vetgedrukt dollarteken" - "Creditcard" - "Bankbiljet met Yen-teken" - "Bankbiljet met dollarteken" - "Bankbiljet met euroteken" - "Bankbiljet met pondteken" - "Geld met vleugels" - "Grafiek met opwaartse trend en Yen-teken" - "Stoel" - "Pc" - "Koffertje" - "Minidisc" - "Diskette" - "Optische schijf" - "Dvd" - "Bestandsmap" - "Bestandsmap openen" - "Gekrulde pagina" - "Naar voren gerichte pagina" - "Kalender" - "Scheurkalender" - "Kaartindex" - "Grafiek met opwaartse trend" - "Grafiek met neerwaartse trend" - "Staafdiagram" - "Klembord" - "Punaise" - "Kopspeld" - "Paperclip" - "Liniaal" - "Geodriehoek" - "Bladwijzertabs" - "Grootboek" - "Schrift" - "Schrift met decoratie" - "Gesloten boek" - "Geopend boek" - "Groen boek" - "Blauw boek" - "Oranje boek" - "Boeken" - "Naamkaartje" - "Rol" - "Memo" - "Telefoonhoorn" - "Pager" - "Faxapparaat" - "Satellietantenne" - "Handluidspreker" - "Megafoon" - "Outbox" - "Inbox" - "Pakket" - "E-mailsymbool" - "Inkomende envelop" - "Envelop met pijl-omlaag daarboven" - "Gesloten brievenbus met vlag omlaag" - "Gesloten brievenbus met vlag omhoog" - "Open brievenbus met vlag omhoog" - "Open brievenbus met vlag omlaag" - "Brievenbus" - "Posthoorn" - "Krant" - "Mobiele telefoon" - "Mobiele telefoon met pijl-rechts aan linkerkant" - "Trilstand" - "Mobiele telefoon uit" - "Geen mobiele telefoons" - "Antenne met streepjes" - "Camera" - - - "Videocamera" - "Televisie" - "Radio" - "Videoband" - - - - - "Gekruiste pijlen naar rechts" - "Twee open horizontale pijlen die rechtsom draaien" - "Twee open horizontale pijlen die rechtsom draaien met een cirkel met het cijfer 1" - "Twee open verticale pijlen die rechtsom draaien" - "Twee open verticale pijlen die linksom draaien" - "Symbool voor lage helderheid" - "Symbool voor hoge helderheid" - "Luidspreker met doorstrepingsteken" - "Luidspreker" - "Luidspreker met één geluidsgolf" - "Luidspreker met drie geluidsgolven" - "Batterij" - "Elektrische stekker" - "Vergrootglas naar links gericht" - "Vergrootglas naar rechts gericht" - "Slot met vulpen" - "Gesloten slot met sleutel" - "Sleutel" - "Slot" - "Open slot" - "Bel" - "Bel met doorstrepingsteken" - "Bladwijzer" - "Koppelingsteken" - "Keuzerondje" - "BACK met pijl naar links daarboven" - "END met pijl naar links daarboven" - "ON met uitroepteken met pijl naar links en rechts daarboven" - "SOON met pijl naar rechts daarboven" - "TOP met pijl-omhoog daarboven" - "Symbool voor niemand onder de achttien" - "Cijfertoets tien" - "Invoersymbool voor Latijnse hoofdletters" - "Invoersymbool voor Latijnse kleine letters" - "Invoersymbool voor cijfers" - "Invoersymbool voor symbolen" - "Invoersymbool voor Latijnse letters" - "Brandweer" - "Zaklamp" - "Moersleutel" - "Hamer" - "Bout en moer" - "Keukenmes" - "Pistool" - "Microscoop" - "Telescoop" - "Kristallen bol" - "Zespuntige ster met stip in het midden" - "Japans symbool voor beginner" - "Drietand-symbool" - "Zwarte vierkant" - "Witte vierkant" - "Grote rode cirkel" - "Grote blauwe cirkel" - "Grote oranje ruit" - "Grote blauwe ruit" - "Kleine oranje ruit" - "Kleine blauwe ruit" - "Rode driehoek omhoog" - "Rode driehoek omlaag" - "Kleine rode driehoek omhoog" - "Kleine rode driehoek omlaag" - - - - - - - - - - - - - "Eén uur op de klok" - "Twee uur op de klok" - "Drie uur op de klok" - "Vier uur op de klok" - "Vijf uur op de klok" - "Zes uur op de klok" - "Zeven uur op de klok" - "Acht uur op de klok" - "Negen uur op de klok" - "Tien uur op de klok" - "Elf uur op de klok" - "Twaalf uur op de klok" - "Half twee op de klok" - "Half drie op de klok" - "Half vier op de klok" - "Half vijf op de klok" - "Half zes op de klok" - "Half zeven op de klok" - "Half acht op de klok" - "Half negen op de klok" - "Half tien op de klok" - "Half elf op de klok" - "Half twaalf op de klok" - "Half één op de klok" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Berg Fuji" - "Tokiotoren" - "Vrijheidsbeeld" - "Silhouet van Japan" - "Moyai-standbeeld" - "Grijnzend gezicht" - "Grijnzend gezicht met lachende ogen" - "Gezicht met tranen van geluk" - "Lachend gezicht met open mond" - "Lachend gezicht met open mond en lachende ogen" - "Lachend gezicht met open mond en angstzweet" - "Lachend gezicht met open mond en ogen dicht" - "Lachend gezicht met halo" - "Lachend gezicht met hoorns" - "Knipogend gezicht" - "Lachend gezicht met lachende ogen" - "Gezicht dat geniet van heerlijk eten" - "Opgelucht gezicht" - "Lachend gezicht met hartvormige ogen" - "Lachend gezicht met zonnebril" - "Gezicht met grote grijns" - "Uitgestreken gezicht" - "Uitdrukkingsloos gezicht" - "Chagrijnig gezicht" - "Gezicht met angstzweet" - "Peinzend gezicht" - "Verward gezicht" - "Onthutst gezicht" - "Kussend gezicht" - "Gezicht dat een kus uitdeelt" - "Kussend gezicht met lachende ogen" - "Kussend gezicht met dichte ogen" - "Gezicht met uitgestoken tong" - "Gezicht met uitgestoken tong en knipoog" - "Gezicht met uitgestoken tong en dichte ogen" - "Teleurgesteld gezicht" - "Bezorgd gezicht" - "Boos gezicht" - "Pruilend gezicht" - "Huilend gezicht" - "Volhardend gezicht" - "Gezicht met triomfantelijke blik" - "Teleurgesteld maar opgelucht gezicht" - "Fronsend gezicht met open mond" - "Gekweld gezicht" - "Angstig gezicht" - "Vermoeid gezicht" - "Slaperig gezicht" - "Moe gezicht" - "Gezicht met grimas" - "Hard huilend gezicht" - "Gezicht met open mond" - "Verstomd gezicht" - "Gezicht met open mond en angstzweet" - "Gezicht dat schreeuwt van angst" - "Geschokt gezicht" - "Blozend gezicht" - "Slapend gezicht" - "Duizelig gezicht" - "Gezicht zonder mond" - "Gezicht met medisch masker" - "Grijnzend kattengezicht met lachende ogen" - "Kattengezicht met tranen van geluk" - "Lachend kattengezicht met open mond" - "Lachend kattengezicht met hartvormige ogen" - "Kattengezicht met ironische lach" - "Kussend kattengezicht met dichte ogen" - "Pruilend kattengezicht" - "Huilend kattengezicht" - "Vermoeid kattengezicht" - - - - - - - - - "Gezicht met \'niet goed\'-gebaar" - "Gezicht met \'OK\'-gebaar" - "Persoon die diep buigt" - "\'Geen kwaad zien\'-aapje" - "\'Geen kwaad horen\'-aapje" - "\'Geen kwaad spreken\'-aapje" - "Vrolijk persoon met één hand in de lucht" - "Persoon die beide handen omhoog steekt om iets te vieren" - "Fronsend persoon" - "Persoon met pruilend gezicht" - "Persoon met gevouwen handen" - "Raket" - "Helikopter" - "Stoomlocomotief" - "Treinwagon" - "Hogesnelheidstrein" - "Hogesnelheidstrein met kogelneus" - "Trein" - "Metro" - "Lightrail" - "Station" - "Tram" - "Tramwagon" - "Bus" - "Naderende bus" - "Trolleybus" - "Bushalte" - "Minibus" - "Ambulance" - "Brandweerauto" - "Politieauto" - "Naderende politieauto" - "Taxi" - "Naderende taxi" - "Auto" - "Naderende auto" - "Camper" - "Bestelbus" - "Vrachtwagen met oplegger" - "Tractor" - "Monorail" - "Bergspoor" - "Zweeftrein" - "Bergkabelbaan" - "Luchtkabelbaan" - "Schip" - "Roeiboot" - "Speedboot" - "Horizontale verkeerslichten" - "Verticale verkeerslichten" - "Werk in uitvoering" - "Zwaailicht" - "Driehoekige vlag op paal" - "Deur" - "\'Verboden toegang\'-bord" - "Roken toegestaan" - "Symbool voor niet roken" - "Symbool voor afval in prullenbak gooien" - "Symbool voor geen afval weggooien" - "Symbool voor drinkwater" - "Symbool voor geen drinkwater" - "Fiets" - "Geen fietsen" - "Fietser" - "Mountainbiker" - "Voetganger" - "Geen voetgangers" - "Kinderoversteek" - "Symbool voor herentoilet" - "Symbool voor damestoilet" - "Toiletsymbool" - "Babysymbool" - "Toilet" - "Wc" - "Douche" - "Bad" - "Badkuip" - "Paspoortcontrole" - "Douane" - "Bagage ophalen" - "Achtergelaten bagage" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-nl/strings-letter-descriptions.xml b/app/src/main/res/values-nl/strings-letter-descriptions.xml deleted file mode 100644 index 8bd3aafdcf..0000000000 --- a/app/src/main/res/values-nl/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "Superscript a" - "Micro-teken" - "Superscript o" - "Scherpe S" - "A, accent grave" - "A, accent aigu" - "A, accent circonflexe" - "A, tilde" - "A, trema" - "A, ring erboven" - "A, E, ligatuur" - "C, cedille" - "E, accent grave" - "E, accent aigu" - "E, accent circonflexe" - "E, trema" - "I, accent grave" - "I, accent aigu" - "I, accent circonflexe" - "I, trema" - "Eth" - "N, tilde" - "O, accent grave" - "O, accent aigu" - "O, accent circonflexe" - "O, tilde" - "O, trema" - "O, schuine streep" - "U, accent grave" - "U, accent aigu" - "U, accent circonflexe" - "U, trema" - "Y, accent aigu" - "Thorn" - "Y, trema" - "A, lengteteken" - "A, boogje" - "A, ogonek" - "C, accent aigu" - "C, accent circonflexe" - "C, punt erboven" - "C, caron" - "D, caron" - "D, schuine streep" - "E, lengteteken" - "E, boogje" - "E, punt erboven" - "E, ogonek" - "E, caron" - "G, accent circonflexe" - "G, boogje" - "G, punt erboven" - "G, cedille" - "H, accent circonflexe" - "H, schuine streep" - "I, tilde" - "I, lengteteken" - "I, boogje" - "I, ogonek" - "I zonder punt" - "I, J, ligatuur" - "J, accent circonflexe" - "K, cedille" - "Kra" - "L, accent aigu" - "L, cedille" - "L, caron" - "L, midden-punt" - "L, schuine streep" - "N, accent aigu" - "N, cedille" - "N, caron" - "N, voorafgegaan door apostrof" - "Eng" - "O, lengteteken" - "O, boogje" - "O, dubbel accent aigu" - "O, E, ligatuur" - "R, accent aigu" - "R, cedille" - "R, caron" - "S, accent aigu" - "S, accent circonflexe" - "S, cedille" - "S, caron" - "T, cedille" - "T, caron" - "T, schuine streep" - "U, tilde" - "U, lengteteken" - "U, boogje" - "U, ring erboven" - "U, dubbel accent aigu" - "U, ogonek" - "W, accent circonflexe" - "Y, accent circonflexe" - "Z, accent aigu" - "Z, punt erboven" - "Z, caron" - "Lange S" - "O, hoorntje" - "U, hoorntje" - "S, komma eronder" - "T, komma eronder" - "Schwa" - "A, punt eronder" - "A, haakje erboven" - "A, accent circonflexe en accent aigu" - "A, accent circonflexe en accent grave" - "A, accent circonflexe en haakje erboven" - "A, accent circonflexe en tilde" - "A, accent circonflexe en punt eronder" - "A, boogje en accent aigu" - "A, boogje en accent grave" - "A, boogje en haakje erboven" - "A, boogje en tilde" - "A, boogje en punt eronder" - "E, punt eronder" - "E, haakje erboven" - "E, tilde" - "E, accent circonflexe en accent aigu" - "E, accent circonflexe en accent grave" - "E, accent circonflexe en haakje erboven" - "E, accent circonflexe en tilde" - "E, accent circonflexe en punt eronder" - "I, haakje erboven" - "I, punt eronder" - "O, punt eronder" - "O, haakje erboven" - "O, accent circonflexe en accent aigu" - "O, accent circonflexe en accent grave" - "O, accent circonflexe en haakje erboven" - "O, accent circonflexe en tilde" - "O, accent circonflexe en punt eronder" - "O, hoorntje en accent aigu" - "O, hoorntje en accent grave" - "O, hoorntje en haakje erboven" - "O, hoorntje en tilde" - "O, hoorntje en punt eronder" - "U, punt eronder" - "U, haakje erboven" - "U, hoorntje en accent aigu" - "U, hoorntje en accent grave" - "U, hoorntje en haakje erboven" - "U, hoorntje en tilde" - "U, hoorntje en punt eronder" - "Y, accent grave" - "Y, punt eronder" - "Y, haakje erboven" - "Y, tilde" - "Omgekeerd uitroepteken" - "Dubbel aanhalingsteken naar links" - "Midden-punt" - "Superscript 1" - "Dubbel aanhalingsteken naar rechts" - "Omgekeerd vraagteken" - "Enkel aanhalingsteken links" - "Enkel aanhalingsteken rechts" - "Enkel omgekeerd laag aanhalingsteken" - "Dubbel aanhalingsteken links" - "Dubbel aanhalingsteken rechts" - "Kruisje" - "Dubbel kruisje" - "Per duizend-teken" - "Accent" - "Dubbel accent" - "Enkel aanhalingsteken naar links" - "Enkel aanhalingsteken naar rechts" - "Superscript 4" - "Superscript Latijnse kleine letter N" - "Teken voor Peso" - "Ten attentie van" - "Pijl naar rechts" - "Pijl omlaag" - "Lege verzameling" - "Verhoging" - "Kleiner dan of gelijk aan" - "Groter dan of gelijk aan" - "Zwarte ster" - diff --git a/app/src/main/res/values-nl/strings-talkback-descriptions.xml b/app/src/main/res/values-nl/strings-talkback-descriptions.xml index 8381066987..334dfc51d6 100644 --- a/app/src/main/res/values-nl/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-nl/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "Sluit een headset aan om wachtwoordtoetsen hardop te laten voorlezen." - "Huidige tekst is %s" - "Geen tekst ingevoerd" - "Met %1$s wordt %2$s gecorrigeerd naar %3$s" - "Met %1$s voer je automatische correctie uit" - "Geen suggestie" - "Onbekend teken" - "Shift" - "Meer symbolen" - "Shift" - "Symbolen" - "Shift" - "Verwijderen" - "Symbolen" - "Letters" - "Cijfers" - "Instellingen" - "Tab" - "Spatiebalk" - "Spraakinvoer" - "Emoji" - "Return" - "Zoeken" - "Punt" - "Taal wijzigen" - "Volgende" - "Vorige" - "Shift ingeschakeld" - "Caps Lock ingeschakeld" - "Symbolen" - "Modus voor meer symbolen" - "Alfanumeriek toetsenbord" - "Toetsenbord telefoon" - "Telefoonsymbolen" - "Toetsenbord verborgen" - "Toetsenbord voor %s wordt weergegeven" - "datum" - "datum en tijd" - "e-mail" - "berichten" - "nummer" - "telefoon" - "tekst" - "tijd" - "URL" - "Recent" - "Mensen" - "Objecten" - "Natuur" - "Plaatsen" - "Symbolen" - "Vlaggen" - "Smileys en mensen" - "Dieren en natuur" - "Eten en drinken" - "Reizen en plaatsen" - "Activiteit" - "Emoticons" - "Hoofdletter %s" - "Hoofdletter I" - "Hoofdletter I, punt erboven" - "Onbekend symbool" - "Onbekende emoji" - "Verveeld gezicht" - "Beschaamd gezicht" - "Gezicht met zonnebril" - "Verbaasd gezicht" - "Kussend gezicht" - "Fronsend gezicht" - "Alternatieve tekens zijn beschikbaar" - "Alternatieve tekens worden verwijderd" - "Alternatieve suggesties zijn beschikbaar" - "Alternatieve suggesties worden verwijderd" + + + "Sluit een headset aan om wachtwoordtoetsen hardop te laten voorlezen." + "Huidige tekst is %s" + "Geen tekst ingevoerd" + "Met %1$s wordt %2$s gecorrigeerd naar %3$s" + "Met %1$s voer je automatische correctie uit" + "Geen suggestie" + "Onbekend teken" + "Shift" + "Meer symbolen" + "Shift" + "Symbolen" + "Shift" + "Verwijderen" + "Symbolen" + "Letters" + "Cijfers" + "Instellingen" + "Tab" + "Spatiebalk" + "Spraakinvoer" + "Emoji" + "Return" + "Zoeken" + "Punt" + "Taal wijzigen" + "Volgende" + "Vorige" + "Shift ingeschakeld" + "Caps Lock ingeschakeld" + "Symbolen" + "Modus voor meer symbolen" + "Alfanumeriek toetsenbord" + "Toetsenbord telefoon" + "Telefoonsymbolen" + "Toetsenbord verborgen" + "Toetsenbord voor %s wordt weergegeven" + "datum" + "datum en tijd" + "e-mail" + "berichten" + "nummer" + "telefoon" + "tekst" + "tijd" + "URL" + "Recent" + "Objecten" + "Symbolen" + "Vlaggen" + "Smileys en mensen" + "Dieren en natuur" + "Eten en drinken" + "Reizen en plaatsen" + "Activiteit" + "Emoticons" + "Hoofdletter %s" + "Hoofdletter I" + "Hoofdletter I, punt erboven" + "Alternatieve tekens zijn beschikbaar" + "Alternatieve tekens worden verwijderd" + "Alternatieve suggesties zijn beschikbaar" + "Alternatieve suggesties worden verwijderd" diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 5b5d6eb3e5..e05bd5d74e 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -1,193 +1,478 @@ - - - - - "Invoeropties" - "Contactnamen opzoeken" - "De spellingcontrole gebruikt items uit je contactenlijst" - "Trillen bij toetsaanslag" - "Geluid bij toetsaanslag" - "Pop-up bij toetsaanslag" - "Voorkeuren" - "Accounts en privacy" - "Uiterlijk en lay-out" - "Invoer met bewegingen" - "Tekstcorrectie" - "Geavanceerd" - "Thema" - "Gesplitst toetsenbord inschakelen" - "Invoermeth. overschakelen" - "Schakelknop voor taal ook van toepassing op andere invoermethoden" - "Schakelknop voor taal" - "Weergeven wanneer meerdere invoertalen zijn geselecteerd" - "Pop-up vertraagd sluiten" - "Geen vertraging" - "Standaard" - "%s ms" - "Systeemstandaard" - "Contactnamen suggereren" - "Namen uit Contacten gebruiken voor suggesties en correcties" - "Gepersonaliseerde suggesties" - "%s verbeteren" - "Dubbeltik is punt, spatie" - "Dubbeltik op spatiebalk voor een punt gevolgd door een spatie" - "Auto-hoofdlettergebruik" - "Het eerste woord van elke zin met een hoofdletter schrijven" - "Persoonlijk woordenboek" - "Woordenboeken toevoegen" - "Algemeen woordenboek" - "Correctievoorstellen weergeven" - "Voorgestelde woorden weergeven tijdens typen" - "Grof taalgebruik blokkeren" - "Geen potentieel aanstootgevende woorden voorstellen" - "Autocorrectie" - "Met spatiebalk en interpunctie worden verkeerd gespelde woorden automatisch gecorrigeerd" - "Uitgeschakeld" - "Normaal" - "Agressief" - "Zeer agressief" - "Suggesties voor volgend woord" - "Het vorige woord gebruiken bij het doen van suggesties" - "Bewegingsinvoer inschakelen" - "Voer een woord in door van letter naar letter te bewegen" - "Gebarenspoor weergeven" - "Dynamisch zwevend voorbeeld" - "Het voorgestelde woord weergeven tijdens het tekenen" - "Gebaar voor woordgroep" - "Spaties invoeren door naar de spatietoets te bewegen" - "Toets voor spraakinvoer" - "Geen spraakinvoermethoden ingeschakeld. Bekijk de instellingen bij \'Talen en invoer\'." - "Invoermethoden configureren" - "Talen" - "Hulp en feedback" - "Talen" - "Tik nogmaals om op te slaan" - "Tik hier om op te slaan" - "Woordenboek beschikbaar" - "Toetsenbordthema" - "Schakelen tussen accounts" - "Geen accounts geselecteerd" - "%1$s wordt momenteel gebruikt" - "OK" - "Annuleren" - "Uitloggen" - "Selecteer een account om te gebruiken" - "Engels (GB)" - "Engels (VS)" - "Spaans (VS)" - "Hindi-Engels" - "Servisch (Latijns)" - "Engels (VK) (%s)" - "Engels (VS) (%s)" - "Spaans (VS) (%s)" - "Hindi-Engels (%s)" - "Servisch (%s)" - "%s (traditioneel)" - "%s (compact)" - "Geen taal (alfabet)" - "Alfabet (QWERTY)" - "Alfabet (QWERTZ)" - "Alfabet (AZERTY)" - "Alfabet (Dvorak)" - "Alfabet (Colemak)" - "Alfabet (pc)" - "Emoji" - "Toetsenbordthema" - "Aangepaste invoer" - "Stijl toevoegen" - "Toevoegen" - "Verwijderen" - "Opslaan" - "Taal" - "Lay-out" - "Je moet je aangepaste invoerstijl inschakelen voor je deze kunt gebruiken. Wil je de invoerstijl nu inschakelen?" - "Inschakelen" - "Niet nu" - "Dezelfde invoerstijl bestaat al: %s" - "Trilingsduur bij toetsgebruik" - "Geluidsvolume bij toetsgebruik" - "Lengte toetsinvoer" - "Emoji voor fysiek toetsenbord" - "Emoji-palet weergeven met fysieke Alt-toets" - "Standaard" - "Welkom bij %s" - "met Invoer met bewegingen" - "Aan de slag" - "Volgende stap" - "%s instellen" - "%s inschakelen" - "Vink \'%s\' aan in de instellingen bij \'Talen en invoer\'. De app kan dan worden uitgevoerd op je apparaat." - "%s is al ingeschakeld in de instellingen bij \'Talen en invoer\', dus deze stap is voltooid. Op naar de volgende!" - "Inschakelen in \'Instellingen\'" - "Overschakelen naar %s" - "Selecteer vervolgens \'%s\' als actieve tekstinvoermethode." - "Schakelen tussen invoermethoden" - "Gefeliciteerd, je kunt nu aan de slag." - "Je kunt nu in al je favoriete apps typen met %s." - "Extra talen configureren" - "Voltooid" - "App-pictogram weergeven" - "App-pictogram weergeven in het opstartprogramma" - "Woordenboekleverancier" - "Woordenboekleverancier" - "Woordenboekservice" - "Informatie over woordenboekupdate" - "Woordenboeken toevoegen" - "Instellingen voor woordenboeken" - "Gebruikerswoordenboeken" - "Gebruikerswoordenboek" - "Woordenboek beschikbaar" - "Wordt gedownload" - "Geïnstalleerd" - "Geïnstalleerd, uitgeschakeld" - "Verbindingsprobleem woordenboekservice" - "Geen woordenboeken" - "Vernieuwen" - "Laatst bijgewerkt" - "Controleren op updates" - "Laden…" - "Algemeen woordenboek" - "Annuleren" - "Instellingen" - "Installeren" - "Annuleren" - "Verwijderen" - "Versie %1$s" - "Toevoegen" - "Toevoegen aan woordenboek" - "Zinsdeel" - "Meer opties" - "Minder opties" - "OK" - "Woord:" - "Sneltoets:" - "Taal:" - "Typ een woord" - "Optionele snelkoppeling" - "Woord bewerken" - "Bewerken" - "Verwijderen" - "Er staan geen woorden in het gebruikerswoordenboek. Tik op de knop Toevoegen (+) om een woord toe te voegen." - "Voor alle talen" - "Meer talen…" - "Verwijderen" - " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + + Contactnamen opzoeken + "Trillen bij toetsaanslag" + "Geluid bij toetsaanslag" + "Pop-up bij toetsaanslag" + Instellingen + Typen met gebaren + "Tekstcorrectie" + "Geavanceerd" + "Thema" + Gesplitst toetsenbord + Andere invoermethode + Taalkeuzetoets + %s ms + "Systeemstandaard" + Gebruik namen uit Contacten voor suggesties en correcties + "Gepersonaliseerde suggesties" + Dubbel-spatie punt + Dubbele tik op spatiebalk voor een punt gevolgd door een spatie + Automatische hoofdletters + Het eerste woord van elke zin met een hoofdletter + "Persoonlijk woordenboek" + Hoofdwoordenboek + "Correctievoorstellen weergeven" + "Voorgestelde woorden weergeven tijdens typen" + "Grof taalgebruik blokkeren" + "Geen potentieel aanstootgevende woorden voorstellen" + "Autocorrectie" + "Met spatiebalk en interpunctie worden verkeerd gespelde woorden automatisch gecorrigeerd" + "Uitgeschakeld" + Bescheiden + "Agressief" + "Zeer agressief" + "Suggesties voor volgend woord" + "Het vorige woord gebruiken bij het doen van suggesties" + Typen met gebaren inschakelen + Voer een woord in door van letter naar letter te vegen + Veegspoor weergeven + "Dynamisch zwevend voorbeeld" + Woordgroepen gebaren + Spaties invoeren door te vegen over de spatiebalk + Engels (VK) + "Engels (VS)" + "Spaans (VS)" + "Hindi-Engels" + "Servisch (Latijns)" + %s (Traditional) + %s (Compact) + "Geen taal" + "Emoji" + "Toevoegen" + "Verwijderen" + "Opslaan" + "Taal" + "Lay-out" + "Trilingsduur bij toetsgebruik" + "Geluidsvolume bij toetsgebruik" + Vertraging bij lang drukken + "Emoji voor fysiek toetsenbord" + Emoji-palet weergeven bij fysieke Alt-toets + "Standaard" + Welkom bij %s + met Typen met gebaren + "Aan de slag" + %s instellen + %s inschakelen + Selecteer %s in de instellingen bij \'Talen & invoer\'. De app kan dan worden uitgevoerd op dit apparaat. + "Inschakelen in \'Instellingen\'" + Overschakelen naar %s + Selecteer vervolgens %s als actieve methode voor tekstinvoer. + "Schakelen tussen invoermethoden" + Gefeliciteerd, je kunt nu aan de slag! + Je kunt nu in al je favoriete apps typen met %s. + "Voltooid" + "App-pictogram weergeven" + "App-pictogram weergeven in het opstartprogramma" + Aanvullende woordenboeken + "Woordenboek beschikbaar" + "Instellingen" + "Verwijderen" + Versie %s + "Sneltoets:" + "Taal:" + "Typ een woord" + "Optionele snelkoppeling" + "Woord bewerken" + "Voor alle talen" + "Meer talen…" + Automatische spatie na interpunctie + "Invoermethode selecteren" + Automatische dag/nachtmodus + Het uiterlijk volgt de systeeminstellingen + Klembordgeschiedenis + Experimenteel + Overig + Geen limiet + Bewaartijd van de geschiedenis + Verwijderen met veegbeweging + Klembordgeschiedenis inschakelen + Meer toetsen + Cijferregel altijd weergeven + Veeg vanaf de delete-toets om grotere stukken tekst in één keer te selecteren en verwijderen + HeliBoard-spellingcontrole + HeliBoard-spellingcontrole-instellingen + Cijferregel + Incognito-modus afdwingen + Emojitoets + Correcties + Suggesties + %s min + Druk lang op de spatietoets voor het selectiemenu van de invoermethode + Betrouwbaarheid autocorrectie + Indien uitgeschakeld, plakt de klembord-toets de inhoud van het klembord + Hints bij toetsen weergeven + Het leren van nieuwe woorden uitschakelen + Hints bij lang indrukken weergeven + Toetsenbordhoogte schaal + %s (Akkhor) + Invoermethode schakelen met spatietoets + Toetsranden + Automatisch spatie invoegen na interpunctie en het typen van een nieuw woord + HeliBoard-instellingen + Invoer + Extra toetsen + "Ongedaan maken" + "Opnieuw" + Suggesties verbeteren op basis van je communicatie en getypte gegevens + Gaan + Volgende + Vorige + "Gereed" + Verzenden + "Zoeken" + "Pauze" + "Wacht" + Bediening met één hand + Roze + Zand + Violet + Smalle toetsruimte + Het toetsenbord configureren + Scheidingsruimte + Beide + Woorden toevoegen aan persoonlijk woordenboek + Gebruik het persoonlijke woordenboek van het apparaat om geleerde woorden op te slaan + Waarschuwing: Als u deze instelling uitschakelt, worden de geleerde gegevens gewist + Altijd suggesties tonen + Automatisch corrigeren, zelfs als dit niet expliciet wordt gevraagd door het invoerveld + Meer autocorrectie + Fout bij back-up: %s + Woordenboek vervangen + Gebruikerswoordenboek \"%1$s\" vervangen\"? +\n +\nHuidig woordenboek: +\n%2$s +\n +\nNieuw woordenboek: +\n%3$s + Kaitag + Altijd middelste suggestie gebruiken + Bij spatie of interpunctie wordt de middelste suggestie ingevoerd + Bibliotheek laden voor typen met gebaren + Zorg voor een passende bibliotheek om typen met gebaren in te schakelen + Back-up + Terugzetten + Opslaan of laden vanuit bestand. Waarschuwing: terugzetten overschrijft bestaande gegevens + Back-up en terugzetten + Meertalig typen + Onbekend bibliotheekbestand. Komt het van een vertrouwde bron en is het geschikt voor \'%s\'? + Bibliotheek laden + Bibliotheek verwijderen + Meer letters met diakritische tekens weergeven in pop-up + Algemene varianten toevoegen + Alle beschikbare varianten toevoegen + URL-detectie + Probeer URL\'s en dergelijke als één woord te detecteren + Talen & lay-outs + Aangepaste Cijferregel + Voorkeur voor regionale cijfers i.p.v. latijns + Bron voor hints kiezen + Hints tonen als lang drukken op een toets extra functionaliteit activeert + Volgorde pop-up toets kiezen + Cijferregel + Bodemafstand schaal + Aangepaste lay-out %s verwijderen? + Symbolen (Arabisch) + Aangepast + Horizontaal veeggebaar over spatiebalk + Klembordgeschiedenis sluiten + Klembord-werkbalktoetsen kiezen + Druk lang op de toets symbolen voor het numpad + Bestand laden + Kan bestand niet lezen + Gebruikerswoordenboek \"%s\" verwijderen? + Zwart + Symbolen + %s (experimenteel) + Fout: script niet compatibel met dit toetsenbord + Gewicht: + Bewolkt + %s (Extended) + Taal kiezen + Dit woord is al aanwezig in het gebruikerswoordenboek van %s. Typ er nog een. + Woord toevoegen + Taal wisselen + Taal (prioriteit) + Lay-out + Symbolen + Klembord + Klembord wissen + Woord selecteren + Werkbalktoetsen kiezen + Geheel links + Geheel rechts + Links + Rechts + Omhoog + Omlaag + Spraakinvoer + Achtergrondafbeelding instellen + Afbeelding voor dag/nachtmodus instellen? + Dag + Nacht + Cijfers + Numpad + Numpad (liggend) + %s (Probhat) + Intern hoofdwoordenboek + Over + Versie + Bekijk op GitHub + Logbestand opslaan + Open-source licentie + Tik op de taal om instellingen te openen + Fout: Geselecteerd bestand is geen geldig woordenboekbestand + Telefoonsymbolen + Mansi + %s (Sebeolsik 390) + %s (Sebeolsik Final) + %s (Student) + Aangepaste lay-out toevoegen + Selecteer een bestand in een compatibel formaat. Informatie over de formaten is beschikbaar %s. + Fout bij lay-out: %s + Tik om lay-out te bewerken + Meer symbolen + Telefoon + Woordenboeken + Woordenboek toevoegen vanuit bestand + Niet meer laten zien + hier + Fout bij laden van woordenboekbestand + Stijl + Afgerond + Kleuren + Licht + Holo Wit + Donker + Donkerder + Dynamische kleuren + Blauwgrijs + Bruin + Chocolade + Bos + Navigatiebalk kleuren + Kleuren automatisch kiezen + Alleen hoofdkleuren weergeven + Meer kleuren tonen + Alle kleuren tonen + Deze instelling toont alle kleuren bloot die intern worden gebruikt. De lijst met kleuren kan op elk moment veranderen. Er is een willekeurige standaardkleur en de namen worden niet vertaald. + Toetsenbord-achtergrond + Toetstekst + Toets-achtergrond + Spatiebalk-achtergrond + Spatiebalk-tekst + Accent + GNU General Public License v3.0 + Sluiten + Uiterlijk + Beschrijving van verborgen functies + Toon functies die mogelijk onopgemerkt blijven + apparaatbeveiligde opslag + Toetshint-tekst + Suggestieregel-tekst + Functietoets achtergrond + Gebaren-invoer + Geen + Cursor verplaatsen + Variabele werkbalkrichting + Omgekeerde richting wanneer een rechts-naar-links toetsenbord-subtype is geselecteerd + Verticaal veeggebaar over spatiebalk + Een bibliotheek is nodig voor \'%s\'. Incompatibele bibliotheken kunnen crashen bij het typen van gebaren. +\n +\nWaarschuwing: het laden van externe code kan een veiligheidsrisico vormen. Gebruik alleen een bibliotheek van een vertrouwde bron. + Zonder woordenboek krijg je alleen suggesties voor tekst die eerder is ingevoerd.<br> +\nJe kunt woordenboeken %1$s downloaden, of een woordenboek voor \"%2$s\" %3$s direct downloaden. + Varianten gedefinieerd in toetsenbordtalen weergeven + Functionele hints weergeven + Fout bij terugzetten van de back-up: %s + Selecteer een woordenboek om toe te voegen. Woordenboeken in .dict-indeling kunnen %s worden gedownload. + Kleuren (nacht) + Indigo + Oceaan + ► Lang drukken van vastgezette werkbalktoetsen resulteert in extra functionaliteit: <br> +\n\t• klembord &#65515; plakken<br> +\n\t• links/rechts verplaatsen &#65515; woord links/rechts verplaatsen <br> +\n\t• omhoog/omlaag verplaatsen &#65515; pagina omhoog/omlaag <br> +\n\t• woord links/rechts &#65515; regel begin/einde <br> +\n\t• pagina omhoog/omlaag &#65515; pagina begin/einde <br> +\n\t• kopiëren &#65515; knippen <br> +\n\t• woord selecteren &#8596; alles selecteren<br> +\n\t• ongedaan maken &#8596; opnieuw <br> <br> +\n► Lang drukken van toetsen in de suggestieregel zet deze daarin vast. <br> <br> +\n► Lang drukken van de komma-toets om de klembordweergave, Emoji-weergave, Bediening met één hand, Instellingen, of de taal te wisselen: <br> +\n\t• Emoji-weergave en taal-schakelaar verdwijnen wanneer de corresponderende toets is geactiveerd; <br> +\n\t• Voor sommige lay-outs is het niet de komma-toets, maar de toets op dezelfde positie (bijvoorbeeld \\\'q\\\' bij een Dvorak-lay-out). <br> <br> +\n► Wanneer incognitomodus is ingeschakeld, worden er geen woorden geleerd en worden er geen emoji\'s aan de lijst recent toegevoegd.<br> <br> +\n► Druk op het Incognito-pictogram om toegang te krijgen tot de werkbalk. <br> <br> +\n► Vegende toetsinvoer: Veeg van shift naar een andere toets om een enkele hoofdletter te typen: <br> +\n\t• Dit werkt ook voor de \\\'?123\\\'-toets om een enkel symbool te typen vanaf het toetsenbord van de symbolen en voor gerelateerde toetsen. <br> <br> +\n► Houd de shift- of symbolentoets ingedrukt, druk op een of meer toetsen en laat vervolgens de shift- of symbolentoets los om terug te keren naar het vorige toetsenbord. <br> <br> +\n► Druk lang op een suggestie in de suggestiestrip om meer suggesties te tonen en een verwijderknop om deze suggestie te verwijderen. <br> <br> +\n► Veeg omhoog van een suggestie om meer suggesties te openen en geef de suggestie om het te selecteren vrij. <br> <br> +\n► Druk lang op een item in de klembordgeschiedenis om het vast te pinnen (in het klembord bewaren totdat je het losmaakt). <br> <br> +\n► Veeg links in de klembordweergave om een item te verwijderen (behalve wanneer het vastgemaakt is) <br> <br> +\n► Selecteer tekst en druk op shift om te schakelen tussen hoofdletters, kleine letters en hoofdletters. <br> <br> +\n► Je kunt woordenboeken toevoegen door ze te openen in een bestandsverkenner: <br> +\n\t• Dit werkt alleen met <i>inhoud-uris</i> en niet met <i>bestand-uris</i>, wat betekent dat het mogelijk niet werkt met sommige bestandsverkenners. <br> <br> +\n► Voor gebruikers die handmatige back-ups maken met roottoegang: <br> +\n\t• Vanaf Android 7 bevindt het bestand met gedeelde voorkeuren zich niet op de standaardlocatie, omdat de app %s gebruikt. Dit is nodig zodat de instellingen kunnen worden gelezen voordat het apparaat wordt ontgrendeld, bv. bij het opstarten; <br> +\n\t• Het bestand bevindt zich in /data/user_de/0/package_id/shared_prefs/ hoewel dit kan afhangen van het apparaat en de Android-versie. <br> <br> +\n<i><b>Debug mode / debug APK</b></i> <br> <br> +\n► Druk lang op een suggestie om het bronwoordenboek te tonen. <br> <br> +\n► Bij gebruik van een Debug APK, kunt u foutopsporingsinstellingen vinden in de geavanceerde voorkeuren, hoewel het nut beperkt is, behalve voor het dumpen van woordenboeken in het logboek. <br> +\n\t• Voor een release-APK moet je meermaals op de versie tikken in <i>Over</i>, dan kunt u debug-instellingen vinden in<i>Geavanceerde voorkeuren</i>. <br> +\n\t• Bij het inschakelen van <i>Suggestie-informatie tonen</i>, zullen suggesties enkele kleine cijfers bevatten met een interne score en een bronwoordenboek. <br> <br> +\n► In het geval van een applicatiecrash, wordt u gevraagd of u de crashlogboeken wilt wanneer u de instellingen opent. <br> <br> +\n► Bij het gebruik van meertalig typen zal de spatiebalk een betrouwbaarheidswaarde tonen die wordt gebruikt voor het bepalen van de momenteel gebruikte taal. <br> <br> +\n► Suggesties hebben een aantal kleine cijfers bovenaan met een interne score en een bronwoordenboek (kan worden uitgeschakeld). + Verzoeken van andere apps om suggesties uit te schakelen negeren (kan problemen veroorzaken) + Functietoetsen + Functietoetsen (symbolen) + Functietoetsen (meer symbolen) + Vastgezette werkbalktoetsen selecteren + Werkbalktoets vastzetten bij lang indrukken + Hiermee worden andere lang indrukkenacties uitgeschakeld voor werkbalktoetsen die niet zijn vastgezet + Werkbalk + Inhoud gekopieerd + Werkbalk automatisch verbergen + Werkbalk automatisch weergeven + Verberg de werkbalk wanneer er suggesties beschikbaar komen + Toon de werkbalk bij invoer of selectie van tekst + Gedrag van taalkeuzetoets + Emoji + Altijd direct starten + Afkoelperiode bij snel typen + Stel tot 6 valutasymbolen in, gescheiden door spatie + Valuta aanpassen + Opslaan naar bestand + Kopiëren naar klembord + Laden + Pagina-einde + Pagina-begin + Woord links + Woord rechts + Pagina omhoog + Pagina omlaag + Inhoud van het klembord voorstellen + Recent gekopieerde inhoud van het klembord tonen als suggestie + Numpad omschakelen + Emoji selecteren in de emoji-weergave + Vermelding in de klembordgeschiedenis selecteren + Schakel over naar het hoofdtoetsenbord na… + Drukken op enter of spatie na andere toetsen in de symbolenweergave + Zeer veelgebruikte varianten toevoegen (standaard) + Pop-uptoetsen onderdrukken die al aanwezig zijn in de basislay-out + Overbodige pop-ups verwijderen + Voorbeeld verplaatsen tijdens het gebaar + Levensduur van het veegspoor + Zwevend voorbeeld + Zie het voorgestelde woord tijdens het gebaar + Pictogramstijl + Cijferregel + Aangepaste tekst op spatiebalk + Klembord onderste regel + Emoji onderste regel + Enter + Tab + Del + Shift + Caps lock + Space (nummer-lay-out) + Bediening met één hand stoppen + Bediening met één hand schalen + Toetscode + Spraakinvoer uitgeschakeld + Werkbalk weergeven/verbergen + Verbindingsstuk met breedte nul + Niet-verbindingsstuk met breedte nul + Werkbalktoetscodes aanpassen + Code voor lang drukken + Pictogrammen aanpassen + Shift (ingedrukt) + Bediening met één hand wisselen + Vuilnisbak + Alle aangepaste pictogrammen herstellen? + Trillen in de niet storen-modus + Emoji-versie overschrijven + %s (Phonetic) + Dargwa (Urakhi) + Sneltoetsen autom. corrigeren + Indien ingeschakeld, kunnen sneltoetsen worden uitgebreid met autocorrectie + Aangepast lettertype instellen vanuit bestand + Achtergrondafbeelding instellen (liggend) + Als deze niet is ingesteld, wordt de staande afbeelding gebruikt + Alle aangepaste toetscodes wissen? + Schaal van toetsenbordlettertype + Schaal van Emoji-weergave + Schaal van vulling zijkanten + Hints weergeven bij cijferregel + Veegafstand voor taal wisselen + Gesplitst toetsenbord inschakelen (liggend) + Gesplitst toetsenbord + %s echt verwijderen? + Functionele toetsen (groot scherm) + Secundaire lay-outs + Ongeldige naam + Talen met woordenboeken + Waarschuwing: lay-out is momenteel in gebruik + Je kunt kleuren zoeken en delen in de %s. + Aangepast subtype + Je kunt lay-outs zoeken en delen in de %s. + discussiesectie + %s (Baishakhi) + TLD-opties weergeven + Vervang pop-ups met interpunctie door topleveldomeinen bij het typen van URL\'s en e-mailadressen + Druk op enter of spatie na andere toetsen in het numpad + Cijferregel (basis) + Suggesties voor webbewerkingsvelden niet altijd weergeven + Webbewerkingsvelden (meestal te vinden in browsers) zijn een veel voorkomende oorzaak van problemen met de instelling Altijd suggesties weergeven + Spatie + Autom. spatie na keuze van suggestie + Autom. spatie voor typen van woord met gebaren + Autom. spatie na typen van woord met gebaren + Geen autom. spatie bij indrukken van shift + Shift verwijdert autom. spatie in afwachting + Backspace draait autocorrectie terug + Formaat voor tijdstempeltoetd + Dagbani + Sesotho + Emoji-toetsgrootte schalen met lettergrootte + Back-up hersteld + App-namen opzoeken + Gebruik de namen van geïnstalleerde apps voor suggesties en correcties + Neutraal + Standaard emoji-huidskleur + %1$s (%2$s) + Werkbalk-modus + Werkbalktoetsen en suggesties + Alleen werkbalktoetsen + Alleen suggesties + Verborgen + Klembord- en emoji-werkbalken ook verbergen + Popup toetsvolgorde en bron van hints + Liggend + Toon emoji-beschrijving bij lang indrukken + Emoji\'s voorstellen + Emoji-woordenboek gebruiken in normale suggesties + Toetsenbord verbergen + Interpunctie-suggesties + Toon interpunctie wanneer er geen andere suggesties beschikbaar zijn + Ga naar Wiki + De Wiki kan door elke GitHub-gebruiker worden verbeterd! diff --git a/app/src/main/res/values-or/strings.xml b/app/src/main/res/values-or/strings.xml new file mode 100644 index 0000000000..f2959924a2 --- /dev/null +++ b/app/src/main/res/values-or/strings.xml @@ -0,0 +1,29 @@ + + + ଵିଵିଧ + ଭାଷା + ଭାଷା: + ଶବ୍ଦ ସମ୍ପାଦନା + ଅଧିକ ଭାଷା… + ଥିମ୍ + ବନ୍ଦ + ଵିକଶିତ + ଇଂରାଜୀ (ଯୁକ୍ତରାଷ୍ଟ୍ର) + ଯୋଡ଼ନ୍ତୁ + ଡିଫଲ୍ଟ + ସେଟିଂ + "ଇନପୁଟ୍ ପଦ୍ଧତି ବାଛନ୍ତୁ" + "ଅପମାନଜନକ ଶବ୍ଦଗୁଡ଼ିକୁ ବ୍ଲକ୍ କରନ୍ତୁ" + "ସମ୍ଭାବ୍ୟ ଅପମାନଜନକ ଶବ୍ଦଗୁଡ଼ିକର ପ୍ରସ୍ତାବ ଦିଅନ୍ତୁ ନାହିଁ" + "ପ୍ରସ୍ତାବ ପ୍ରସ୍ତୁତ କରିବାରେ ପୂର୍ବବର୍ତ୍ତୀ ଶବ୍ଦ ବ୍ୟବହାର କରନ୍ତୁ" + "ପୂର୍ବ ପରି କରନ୍ତୁ" + "ପୁଣି କରନ୍ତୁ" + ହେଲିବୋର୍ଡ ସେଟିଂସ୍ + ହେଲିବୋର୍ଡ ବନାନ ଯାଞ୍ଚକାରୀ ସେଟିଂସ୍ + ହେଲିବୋର୍ଡ ବନାନ ଯାଞ୍ଚକାରୀ + ଇମୋଜ୍ଜି ସଙ୍କେତ କରିବା + diff --git a/app/src/main/res/values-ota/strings.xml b/app/src/main/res/values-ota/strings.xml new file mode 100644 index 0000000000..00f7ce68f5 --- /dev/null +++ b/app/src/main/res/values-ota/strings.xml @@ -0,0 +1,90 @@ + + + قاپالی + گلیشمیش + تەما + گیریش + اونریلر + دڭیسل + چشیتلی + اوتوماتیك بویوك حرف یاپ + اوتوماتیك دوزەلت + اولچولو + گنیش اولچكدە + گری یوكلە + آیرلر + گری آل + دوزەلتمەلر + ترجیحلر + یدكلەمە + سمبوللر + اموجی + ‫HeliBoard‬ یازم دنەتلەییجیسی + ‫HeliBoard‬ عیارلری + ‫HeliBoard‬ یازم دنەتلەییجیسی عیارلری + كیشی آدلرڭی دنەتلە + حركتلە یازمە + دوزن + سمبوللر + پانو + صول + صاغ + یوقاری + آشاغی + یڭیدن یاپ + اموجی + هینگیلیزجە + مانسی + قائیتاغ + اكلە + قالدر + قاعدت + یوكلە + دوزن + تلفون + صاییلر + صاییصال طوش طاقیمی + گوندوز + وارصاییلان + سوزلوكلر + سیل + سیقلق: + دیل: + یووارلادلمش + رنگلر + آچیق + قویو + دها قویو + سیاه + قهوەرنگی + چوقولاتە + گولگەلی + آچیق ماوی + اوقیانوس + پنبە + قوم + منكشە + قوللانیجی تنعیملی + اورگو + حقڭدە + سوروم + قاپات + گورڭم + آراچ چوبوقی + گیت + ایلری + گری + بیتدی + گوندر + آراما + دور + بكلە + یوق + ستیل + اورمان + دیل + گجە + قیصەیول: + تماملاندی + بورادە + diff --git a/app/src/main/res/values-pa-rPK/strings.xml b/app/src/main/res/values-pa-rPK/strings.xml new file mode 100644 index 0000000000..a017226051 --- /dev/null +++ b/app/src/main/res/values-pa-rPK/strings.xml @@ -0,0 +1,106 @@ + + + تھیم + اینپُٹ + درستی + سُجھے + آزمائش + ترجیحاں + اضافی + ہور چوݨاں + ‫HeliBoard‬ سیٹنگاں + لکھت نوں ٹھیک کرن + ہور کنجیاں + کاپی پیسٹ تریخ + ایموجی دی کنجی + سِسٹم دا مول + کوئی حد نہیں + نجی بݨاۓ سجھا + مکھ لغت + بہت پرجوش + ہِنگریزی + ایموجی + کیبورڈ دی چوݨ + مٹاؤ + بولی + خود بخود اکھر کیپیٹل ورتݨ + بند + بہت + شامل کرو + خود بخود درستی + مدھ + ہٹاؤ + سامبھو + مول + پورا ہویا + بولی + سیٹنگاں + شورٹکٹ: + دو خالی تھاں ڈنڈی + سنکیت نال اینپُٹ کرن + نجی لغت + نمبر + ہلکا + اشارے + نبڑیا + کوئی نہیں + لغات + اتھے + وزن:؜ + ورتݨ والے دی چوݨ + بھیجو + کھوجو + چاکلیٹ + رابطیاں دے ناں لیاوݨے + چوہݨ توں تھڑکݨا + چوہݨ توں آواز + کالا + نھیرے توں نھیرا + ‫HeliBoard لفظ جوڑ دیاں سیٹنگاں‬ + سپینی (امریکی) + انگریزی (امریکی) + بحال کرو + بیک اپ کرو + سجے + اپر + ہیٹھاں + واپس کرو + فر کرو + کبے + طنز + بھورا + جامنی + وکھالا + سربیائی (لاطینی) + بند کرو + کلپ بورڈ + سمندری + رات + فون + نھیرا + بدلوائی + ورژن + اڈیکو + گول + جاؤ + اگے + پچھے + بارے + جنگلی + ریتلی + نیل + گلابی + انگریزی (برطانوی) + رنگ + دن + نمبر پیڈ + کنجی دباوݨ تے پوپ‌اپ کرو + دپھاڑ دا کی‌بورڈ نوں چالو کرو + دپھاڑ دا فاصلا + ‫HeliBoard‬ لفظ جوڑن والا + بولی بدلو + diff --git a/app/src/main/res/values-pa/strings-action-keys.xml b/app/src/main/res/values-pa/strings-action-keys.xml deleted file mode 100644 index 85e99b12b1..0000000000 --- a/app/src/main/res/values-pa/strings-action-keys.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - "ਜਾਓ" - "ਅੱਗੇ" - "ਪਿਛਲਾ" - "ਹੋ ਗਿਆ" - "ਭੇਜੋ" - "ਖੋਜੋ" - "ਰੋਕੋ" - "ਉਡੀਕ ਕਰੋ" - diff --git a/app/src/main/res/values-pa/strings-config-important-notice.xml b/app/src/main/res/values-pa/strings-config-important-notice.xml deleted file mode 100644 index c6528ad058..0000000000 --- a/app/src/main/res/values-pa/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "ਸੁਝਾਵਾਂ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ ਆਪਣੀਆਂ ਗੱਲਬਾਤਾਂ ਅਤੇ ਟਾਈਪ ਕੀਤੇ ਡਾਟਾ ਤੋਂ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰੋ" - diff --git a/app/src/main/res/values-pa/strings-emoji-descriptions.xml b/app/src/main/res/values-pa/strings-emoji-descriptions.xml deleted file mode 100644 index a9ee6a7308..0000000000 --- a/app/src/main/res/values-pa/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1481 +0,0 @@ - - - - - - - "ਕਾਪੀਰਾਈਟ ਚਿੰਨ੍ਹ" - "ਰਜਿਸਟਰਡ ਚਿੰਨ੍ਹ" - "ਡਬਲ ਵਿਸਮਿਕ ਚਿੰਨ੍ਹ" - "ਵਿਸਮਿਕ ਪ੍ਰਸ਼ਨ ਚਿੰਨ੍ਹ" - "ਟ੍ਰੇਡ ਮਾਰਕ ਚਿੰਨ੍ਹ" - "ਜਾਣਕਾਰੀ ਸਰੋਤ" - "ਖੱਬੇ ਸੱਜੇ ਵੱਲ ਤੀਰ ਦਾ ਨਿਸ਼ਾਨ" - "ਉੱਪਰ ਹੇਠਾਂ ਵੱਲ ਤੀਰ ਦਾ ਨਿਸ਼ਾਨ" - "ਉੱਤਰ ਪੱਛਮ ਵੱਲ ਤੀਰ ਦਾ ਨਿਸ਼ਾਨ" - "ਉੱਤਰ ਪੂਰਬ ਵੱਲ ਤੀਰ ਦਾ ਨਿਸ਼ਾਨ" - "ਦੱਖਣ ਪੂਰਬ ਵੱਲ ਤੀਰ ਦਾ ਨਿਸ਼ਾਨ" - "ਦੱਖਣ ਪੱਛਮ ਵੱਲ ਤੀਰ ਦਾ ਨਿਸ਼ਾਨ" - "ਹੁੱਕ ਵਾਲਾ ਖੱਬੇ ਪਾਸੇ ਵੱਲ ਤੀਰ ਦਾ ਨਿਸ਼ਾਨ" - "ਹੁੱਕ ਵਾਲਾ ਸੱਜੇ ਪਾਸੇ ਵੱਲ ਤੀਰ ਦਾ ਨਿਸ਼ਾਨ" - "ਦੇਖੋ" - "ਰੇਤ ਘੜੀ" - - - - - "ਕਾਲਾ ਸੱਜੇ ਪਾਸੇ-ਸੰਕੇਤ ਦੇਣ ਵਾਲਾ ਡਬਲ ਤਿਕੋਨ" - "ਕਾਲਾ ਖੱਬੇ ਪਾਸੇ-ਸੰਕੇਤ ਦੇਣ ਵਾਲਾ ਡਬਲ ਤਿਕੋਨ" - "ਕਾਲਾ ਉੱਪਰ-ਸੰਕੇਤ ਦੇਣ ਵਾਲਾ ਡਬਲ ਤਿਕੋਨ" - "ਕਾਲਾ ਹੇਠਾਂ-ਸੰਕੇਤ ਦੇਣ ਵਾਲਾ ਡਬਲ ਤਿਕੋਨ" - - - - - - - "ਅਲਾਰਮ ਘੜੀ" - - - - - "ਵਗਦੀ ਰੇਤ ਵਾਲੀ ਰੇਤ ਘੜੀ" - - - - - - - "ਗੋਲ ਲਾਤੀਨੀ ਕੈਪੀਟਲ ਅੱਖਰ m" - "ਕਾਲਾ ਛੋਟਾ ਵਰਗ" - "ਚਿੱਟਾ ਛੋਟਾ ਵਰਗ" - "ਕਾਲਾ ਸੱਜੇ ਪਾਸੇ-ਸੰਕੇਤ ਦੇਣ ਵਾਲਾ ਤਿਕੋਨ" - "ਕਾਲਾ ਖੱਬੇ ਪਾਸੇ-ਸੰਕੇਤ ਦੇਣ ਵਾਲਾ ਤਿਕੋਨ" - "ਚਿੱਟਾ ਦਰਮਿਆਨਾ ਵਰਗ" - "ਕਾਲਾ ਦਰਮਿਆਨਾ ਵਰਗ" - "ਚਿੱਟਾ ਦਰਮਿਆਨਾ ਛੋਟਾ ਵਰਗ" - "ਕਾਲਾ ਦਰਮਿਆਨਾ ਛੋਟਾ ਵਰਗ" - "ਕਿਰਨਾਂ ਵਾਲਾ ਕਾਲਾ ਸੂਰਜ" - "ਬੱਦਲ" - - - - - - - "ਕਾਲਾ ਟੈਲੀਫੋਨ" - "ਸਹੀ ਦੇ ਨਿਸ਼ਾਨ ਵਾਲਾ ਬੈਲਟ ਬਾਕਸ" - "ਵਰਖਾ ਦੀਆਂ ਬੂੰਦਾਂ ਵਾਲੀ ਛਤਰੀ" - "ਗਰਮ ਪੀਣ ਵਾਲਾ ਪਦਾਰਥ" - - - "ਚਿੱਟੀ ਉੱਪਰ ਸੰਕੇਤ ਦੇਣ ਵਾਲੀ ਕ੍ਰਮ-ਸੂਚੀ" - - - - - - - - - "Star and crescent" - - - - - - - - - "ਚਿੱਟਾ ਮੁਸਕਰਾਉਂਦਾ ਚਿਹਰਾ" - "ਮੇਖ ਰਾਸ਼ੀ" - "ਬਿਰਖ ਰਾਸ਼ੀ" - "ਮਿਥੁਨ ਰਾਸ਼ੀ" - "ਕਰਕ ਰਾਸ਼ੀ" - "ਸਿੰਘ ਰਾਸ਼ੀ" - "ਕੰਨਿਆ ਰਾਸ਼ੀ" - "ਤੁਲਾ ਰਾਸ਼ੀ" - "ਬ੍ਰਿਸ਼ਚਕ ਰਾਸ਼ੀ ਚੱਕਰ ਤਾਰਾਮੰਡਲ" - "ਧਨ ਰਾਸ਼ੀ" - "ਮਕਰ ਰਾਸ਼ੀ" - "ਕੁੰਭ ਰਾਸ਼ੀ" - "ਮੀਨ ਰਾਸ਼ੀ" - "ਕਾਲਾ ਸਪੇਡ ਸੂਟ" - "ਕਾਲਾ ਕਲਬ ਸੂਟ" - "ਕਾਲਾ ਹਾਰਟ ਸੂਟ" - "ਕਾਲਾ ਡਾਇਮੰਡ ਸੂਟ" - "ਗਰਮ ਚਸ਼ਮੇ" - "ਕਾਲਾ ਯੂਨੀਵਰਸਲ ਰੀਸਾਈਕਲਿੰਗ ਚਿੰਨ੍ਹ" - "ਪਹੀਏਦਾਰ ਕੁਰਸੀ ਦਾ ਚਿੰਨ੍ਹ" - - - "ਲੰਗਰ" - - - - - - - - - "ਐਟਮ ਚਿੰਨ੍ਹ" - - - "ਚਿਤਾਵਨੀ ਚਿੰਨ੍ਹ" - "ਉੱਚ ਵੋਲਟੇਜ ਚਿੰਨ੍ਹ" - "ਦਰਮਿਆਨਾ ਚਿੱਟਾ ਗੋਲਾ" - "ਦਰਮਿਆਨਾ ਕਾਲਾ ਗੋਲਾ" - - - - - "ਸੌਸਰ ਬਾਲ" - "ਬੇਸਬਾਲ" - "ਬਰਫ਼ ਤੋਂ ਬਿਨਾਂ ਬਰਫ਼ ਦਾ ਪੁਤਲਾ" - "ਬੱਦਲਾਂ ਦੇ ਪਿੱਛੇ ਸੂਰਜ" - "ਗਰਜਦੇ ਬੱਦਲ ਅਤੇ ਬਾਰਸ਼" - "ਓਫੀਉਚਸ" - - - - - - - "ਦਾਖ਼ਲ ਹੋਣਾ ਮਨ੍ਹਾ ਹੈ" - - - "ਗਿਰਜਾ ਘਰ" - - - - - "ਫੁਹਾਰਾ" - "ਮੋਰੀ ਵਿੱਚ ਝੰਡਾ" - - - "ਸੇਲਬੋਟ" - - - - - - - "ਤੰਬੂ" - "ਬਾਲਣ ਪੰਪ" - "ਕਾਲੀ ਕੈਂਚੀ" - "ਚਿੱਟਾ ਵੱਡਾ ਸਹੀ ਦਾ ਨਿਸ਼ਾਨ" - "ਹਵਾਈ ਜਹਾਜ਼" - "ਲਿਫ਼ਾਫ਼ਾ" - "ਚੁੱਕੀ ਹੋਈ ਮੁੱਕੀ" - "ਚੁੱਕਿਆ ਹੋਇਆ ਹੱਥ" - "ਜਿੱਤ ਦਾ ਹੱਥ" - - - "ਪੈਂਸਿਲ" - "ਕਾਲੀ ਨਿਬ" - "ਵੱਡਾ ਸਹੀ ਦਾ ਨਿਸ਼ਾਨ" - "ਵੱਡਾ ਗੁਣਾ x" - - - "Star of David" - "ਲਿਸ਼ਕਾਰੇ" - "ਅੱਠ ਸਪੋਕਡ ਤਾਰਾ ਚਿੰਨ੍ਹ" - "ਅੱਠ ਦਾ ਸੰਕੇਤ ਦੇਣ ਵਾਲਾ ਕਾਲਾ ਤਾਰਾ" - "ਸਨੋਫਲੇਕ" - "ਲਿਸ਼ਕਾਰਾ" - "ਕ੍ਰੌਸ ਚਿੰਨ੍ਹ" - "ਨੈਗੇਟਿਵ ਵਰਗਾਕਾਰ ਕ੍ਰੌਸ ਚਿੰਨ੍ਹ" - "ਕਾਲਾ ਪ੍ਰਸ਼ਨ ਚਿੰਨ੍ਹ ਗਹਿਣਾ" - "ਚਿੱਟਾ ਪ੍ਰਸ਼ਨ ਚਿੰਨ੍ਹ ਗਹਿਣਾ" - "ਚਿੱਟਾ ਵਿਸਮਿਕ ਚਿੰਨ੍ਹ ਗਹਿਣਾ" - "ਵੱਡਾ ਵਿਸਮਿਕ ਚਿੰਨ੍ਹ ਦਾ ਚਿੰਨ੍ਹ" - - - "ਵੱਡਾ ਕਾਲਾ ਦਿਲ" - "ਵੱਡਾ ਜੋੜ ਦਾ ਚਿੰਨ੍ਹ" - "ਵੱਡਾ ਘਟਾ ਦਾ ਚਿੰਨ੍ਹ" - "ਵੱਡਾ ਭਾਗ ਦਾ ਚਿੰਨ੍ਹ" - "ਕਾਲਾ ਉੱਪਰ ਵੱਲ ਤੀਰ ਦਾ ਨਿਸ਼ਾਨ" - "ਕੁੰਡਲਦਾਰ ਲੂਪ" - "ਡਬਲ ਕੁੰਡਲਦਾਰ ਲੂਪ" - "ਸੱਜੇ ਪਾਸੇ ਵੱਲ ਫਿਰ ਉੱਪਰ ਵੱਲ ਮੁੜਦਾ ਤੀਰ ਦਾ ਨਿਸ਼ਾਨ" - "ਸੱਜੇ ਪਾਸੇ ਵੱਲ ਫਿਰ ਹੇਠਾਂ ਵੱਲ ਮੁੜਦਾ ਤੀਰ ਦਾ ਨਿਸ਼ਾਨ" - "ਖੱਬੇ ਪਾਸੇ ਵੱਲ ਕਾਲਾ ਤੀਰ ਦਾ ਨਿਸ਼ਾਨ" - "ਉੱਪਰ ਵੱਲ ਕਾਲਾ ਤੀਰ ਦਾ ਨਿਸ਼ਾਨ" - "ਹੇਠਾਂ ਵੱਲ ਕਾਲਾ ਤੀਰ ਦਾ ਨਿਸ਼ਾਨ" - "ਕਾਲਾ ਵੱਡਾ ਵਰਗ" - "ਚਿੱਟਾ ਵੱਡਾ ਵਰਗ" - "ਸਫੈਦ ਦਰਮਿਆਨਾ ਤਾਰਾ" - "ਹੈਵੀ ਵੱਡਾ ਗੋਲਾ" - "ਲਹਿਰਦਾਰ ਡੈਸ਼" - "ਭਾਗ ਤਬਦੀਲੀ ਚਿੰਨ੍ਹ" - "ਗੋਲ ਭਾਵ ਚਿੱਤਰ ਵਧਾਈ" - "ਗੋਲ ਭਾਵ ਚਿੱਤਰ ਭੇਤ" - "ਮੈਹਜੋਂਗ ਟਾਈਲ ਰੈਡ ਡ੍ਰੈਗਨ" - "ਪਲੇਇੰਗ ਕਾਰਡ ਬਲੈਕ ਜੋਕਰ" - "ਬਲਡ ਟਾਈਪ A" - "ਬਲਡ ਟਾਈਪ B" - "ਬਲਡ ਟਾਈਪ O" - "ਪਾਰਕਿੰਗ ਲੌਟ" - "ਬਲਡ ਟਾਈਪ AB" - "ਵਰਗਾਕਾਰ CL" - "ਵਰਗਾਕਾਰ ਕੂਲ" - "ਵਰਗਾਕਾਰ ਫ੍ਰੀ" - "ਵਰਗਾਕਾਰ ਆਈ.ਡੀ." - "ਵਰਗਾਕਾਰ ਨਵਾਂ" - "ਵਰਗਾਕਾਰ N G" - "ਵਰਗਾਕਾਰ ਠੀਕ" - "ਵਰਗਾਕਾਰ SOS" - "ਵਿਸਮਿਕ ਚਿੰਨ੍ਹ ਨਾਲ ਵਰਗਾਕਾਰ ਅਪ" - "ਵਰਗਾਕਾਰ ਬਨਾਮ" - "ਇੱਥੇ ਵਰਗਾਕਾਰ ਕਟਾਕਨਾ" - "ਵਰਗਾਕਾਰ ਕਟਾਕਨਾ ਸੇਵਾ" - "ਵਰਗਾਕਾਰ ਭਾਵ ਚਿੱਤਰ ਮੁਫ਼ਤ" - "ਵਰਗਾਕਾਰ ਭਾਵ ਚਿੱਤਰ ਰਾਖਵੀਂ-ਸੀਟ" - "ਵਰਗਾਕਾਰ ਭਾਵ ਚਿੱਤਰ ਪ੍ਰਤਿਬੰਧ" - "ਵਰਗਾਕਾਰ ਭਾਵ ਚਿੱਤਰ ਵੈਕੈਂਸੀ" - "ਵਰਗਾਕਾਰ ਭਾਵ ਚਿੱਤਰ ਸਵੀਕ੍ਰਿਤੀ" - "ਵਰਗਾਕਾਰ ਭਾਵ ਚਿੱਤਰ ਪੂਰਾ ਅਧਿਕਾਰ" - "ਵਰਗਾਕਾਰ ਭਾਵ ਚਿੱਤਰ ਵੇਤਨਕ" - "ਵਰਗਾਕਾਰ ਭਾਵ ਚਿੱਤਰ ਮਾਸਿਕ" - "ਵਰਗਾਕਾਰ ਭਾਵ ਚਿੱਤਰ ਐਪਲੀਕੇਸ਼ਨ" - "ਵਰਗਾਕਾਰ ਭਾਵ ਚਿੱਤਰ ਕਟੌਤੀ" - "ਕਾਰੋਬਾਰ ਵਿੱਚ ਵਰਗਾਕਾਰ ਭਾਵ ਚਿੱਤਰ" - "ਗੋਲ ਭਾਵ ਚਿੱਤਰ ਲਾਭ" - "ਗੋਲ ਭਾਵ ਚਿੱਤਰ ਸਵੀਕਾਰ ਕਰੋ" - "ਸਮੁੰਦਰੀ ਝੱਖੜ" - "ਧੁੰਦ ਵਾਲਾ" - "ਬੰਦ ਛਤਰੀ" - "ਤਾਰਿਆਂ ਵਾਲੀ ਰਾਤ" - "ਪਹਾੜਾਂ ਤੇ ਸਵੇਰ" - "ਸਵੇਰ" - "ਸ਼ਾਮ ਨੂੰ ਸਿਟੀਸਕੇਪ" - "ਇਮਾਰਤਾਂ ਤੇ ਸ਼ਾਮ" - "ਇੰਦਰਧਨੁਸ਼" - "ਰਾਤ ਨੂੰ ਪੁਲ" - "ਪਾਣੀ ਦੀ ਲਹਿਰ" - "ਜੁਆਲਾਮੁਖੀ ਪਹਾੜ" - "ਅਕਾਸ਼ ਗੰਗਾ" - "ਧਰਤੀ ਗਲੋਬ ਯੂਰੋਪ-ਅਫਰੀਕਾ" - "ਧਰਤੀ ਗਲੋਬ ਅਮਰੀਕਾ" - "ਧਰਤੀ ਗਲੋਬ ਏਸ਼ੀਆ-ਆੱਸਟ੍ਰੇਲੀਆ" - "ਮੈਰੀਡੀਅਨਾਂ ਵਾਲਾ ਗਲੋਬ" - "ਨਵਾਂ ਚੰਦਰਮਾ ਦਾ ਚਿੰਨ੍ਹ" - "ਵੈਕਸਿੰਗ ਕ੍ਰੀਸੈਂਟ ਚੰਦਰਮਾ ਦਾ ਚਿੰਨ੍ਹ" - "ਪਹਿਲੀ ਤਿਮਾਹੀ ਦੇ ਚੰਦਰਮਾ ਦਾ ਚਿੰਨ੍ਹ" - "ਵੈਕਸਿੰਗ ਗਿੱਬਸ ਚੰਦਰਮਾ ਦਾ ਚਿੰਨ੍ਹ" - "ਪੂਰਾ ਚੰਦਰਮਾ ਦਾ ਚਿੰਨ੍ਹ" - "ਵੈਨਿੰਗ ਗਿੱਬਸ ਚੰਦਰਮਾ ਦਾ ਚਿੰਨ੍ਹ" - "ਆਖਰੀ ਤਿਮਾਹੀ ਦੇ ਚੰਦਰਮਾ ਦਾ ਚਿੰਨ੍ਹ" - "ਵੈਨਿੰਗ ਨਵੇਂ ਚੰਦਰਮਾ ਦਾ ਚਿੰਨ੍ਹ" - "ਨਵਾਂ ਚੰਦਰਮਾ" - "ਚਿਹਰੇ ਨਾਲ ਨਵਾਂ ਚੰਦਰਮਾ" - "ਚਿਹਰੇ ਨਾਲ ਪਹਿਲੀ ਤਿਮਾਹੀ ਦਾ ਚੰਦਰਮਾ" - "ਚਿਹਰੇ ਨਾਲ ਆਖਰੀ ਤਿਮਾਹੀ ਦਾ ਚੰਦਰਮਾ" - "ਚਿਹਰੇ ਨਾਲ ਪੂਰਾ ਚੰਦਰਮਾ" - "ਚਿਹਰੇ ਨਾਲ ਸੂਰਜ" - "ਚਮਕਦਾ ਤਾਰਾ" - "ਉਲਕਾ" - - - "ਛੋਟੇ ਬੱਦਲ ਨਾਲ ਸਫ਼ੈਦ ਸੂਰਜ" - "ਬੱਦਲ ਦੇ ਪਿੱਛੇ ਸਫ਼ੈਦ ਸੂਰਜ" - "ਬਾਰਸ਼ ਨਾਲ ਬੱਦਲ ਦੇ ਪਿੱਛੇ ਸਫ਼ੈਜ ਸੂਰਜ" - "ਬਾਰਸ਼ ਦੇ ਨਾਲ ਬੱਦਲ" - "ਬਰਫ਼ਬਾਰੀ ਦੇ ਨਾਲ ਬੱਦਲ" - "ਬਿਜਲੀ ਦੇ ਨਾਲ ਬੱਦਲ" - "ਬਵੰਡਰ ਦੇ ਨਾਲ ਬੱਦਲ" - - - - - - - - - - - "ਚੈਸਟਨਟ" - "ਨਵਾਂ ਪੁੰਗਰਿਆ ਬੂਟਾ" - "ਸਦਾਬਹਾਰ ਰੁੱਖ" - "ਪਤਝੜ ਵਾਲਾ ਰੁੱਖ" - "ਤਾੜ ਦਾ ਰੁੱਖ" - "ਥੋਹਰ" - - - "ਗੁਲਲਾਲਾ" - "ਚੈਰੀ ਬਲੋਸਮ" - "ਗੁਲਾਬ" - "ਹਿਬਿਸਕਸ" - "ਸੂਰਜਮੁਖੀ" - "ਬਲੋਸਮ" - "ਮੱਕੀ ਦੇ ਸਿੱਟੇ" - "ਚੌਲਾਂ ਦੇ ਸਿੱਟੇ" - "ਜੜੀ-ਬੂਟੀ" - "ਫੋਰ ਲੀਫ ਕਲੋਵਰ" - "ਮੇਪਲ ਦਾ ਪੱਤਾ" - "ਝਰਿਆ ਹੋਇਆ ਪੱਤਾ" - "ਹਵਾ ਵਿੱਚ ਲਹਿਰਾਉਂਦਾ ਪੱਤਾ" - "ਖੁੰਬਾਂ" - "ਟਮਾਟਰ" - "ਬੈਂਗਨ" - "ਅੰਗੂਰ" - "ਖ਼ਰਬੂਜ਼ਾ" - "ਤਰਬੂਜ਼" - "ਇੱਕ ਤਰ੍ਹਾਂ ਦਾ ਸੰਤਰਾ" - "ਨੀਂਬੂ" - "ਕੇਲਾ" - "ਅਨਾਨਾਸ" - "ਲਾਲ ਸੇਬ" - "ਹਰਾ ਸੇਬ" - "ਨਾਸ਼ਪਾਤੀ" - "ਆੜੂ" - "ਚੈਰੀ" - "ਸਟਰਾਬਰੀ" - "ਹੰਬਰਗਰ" - "ਪੀਜ਼ਾ ਦੀ ਸਲਾਈਸ" - "ਹੱਡੀ ਤੇ ਮਾਸ" - "ਕੁੱਕੜ ਦੀ ਲੱਤ" - "ਰਾਈਸ ਕ੍ਰੈਕਰ" - "ਰਾਈਸ ਬੌਲ" - "ਪਕਾਏ ਹੋਏ ਚੌਲ" - "ਕੜੀ ਅਤੇ ਚੌਲ" - "ਭਾਫ਼ ਵਾਲਾ ਪਿਆਲਾ" - "ਸਪਾਗਟੀ" - "ਰੋਟੀ" - "ਫ੍ਰੈਂਚ ਫ੍ਰਾਈਜ਼" - "ਭੁੰਨੀ ਹੋਈ ਸ਼ਕਰਕੰਦੀ" - "ਡੈਂਗੋ" - "ਓਡੈਨ" - "ਸੁਸ਼ੀ" - "ਤਲੀ ਹੋਈ ਝੀਂਗਾ ਮੱਛੀ" - "ਸਵਿਰਲ ਡਿਜਾਈਨ ਵਾਲਾ ਫਿਸ਼ ਕੇਕ" - "ਸੌਫਟ ਆਈਸ ਕ੍ਰੀਮ" - "ਸ਼ੇਵਡ ਆਈਸ" - "ਆਈਸ ਕ੍ਰੀਮ" - "ਡੋਨੱਟ" - "ਕੁਕੀ" - "ਚੌਕਲੇਟ ਬਾਰ" - "ਕੈਂਡੀ" - "ਲਾਲੀਪਾਪ" - "ਕਸਟਰਡ" - "ਸ਼ਹਿਦ ਦਾ ਪੌਟ" - "ਖਸਤਾ ਕੇਕ" - "ਬੈਂਟੋ ਬੌਕਸ" - "ਭੋਜਨ ਦਾ ਬਰਤਨ" - "ਖਾਣਾ ਪਕਾਉਣਾ" - "ਕਾਂਟਾ ਅਤੇ ਛੁਰੀ" - "ਬਿਨਾਂ ਹੱਥੇ ਵਾਲਾ ਚਾਹ ਦਾ ਕੱਪ" - "ਸੇਕ ਬੋਤਲ ਅਤੇ ਕੱਪ" - "ਵਾਈਨ ਦਾ ਗਿਲਾਸ" - "ਕਾਕਟੇਲ ਦਾ ਗਿਲਾਸ" - "ਗਰਮ ਦੇਸ਼ ਦੀ ਸ਼ਰਾਬ" - "ਬੀਅਰ ਮਗ" - "ਛਣਕਣ ਵਾਲੇ ਬੀਅਰ ਮਗ" - "ਬੱਚੇ ਦੀ ਬੋਤਲ" - - - - - - - "ਰਿਬਨ" - "ਪੈਕ ਕੀਤਾ ਤੋਹਫ਼ਾ" - "ਜਨਮਦਿਨ ਦਾ ਕੇਕ" - "ਜੈਕ-ਓ-ਲੈਂਟਰਨ" - "ਕ੍ਰਿਸਮਸ ਟ੍ਰੀ" - "ਫਾਦਰ ਕ੍ਰਿਸਮਸ" - "ਪਟਾਖੇ" - "ਪਟਾਖਿਆਂ ਦੇ ਸਪਾਰਕਲਰ" - "ਗੁਬਾਰਾ" - "ਪਾਰਟੀ ਪੌਪਰ" - "ਕੌਨਫੈਟੀ ਬੌਲ" - "ਤਨਾਬਤਾ ਰੁੱਖ" - "ਕ੍ਰੌਸਡ ਫਲੈਗਸ" - "ਚੀੜ੍ਹ ਦੀ ਸਜਾਵਟ" - "ਜਾਪਾਨੀ ਗੁੱਡੀਆਂ" - "ਕਾਰਪ ਸਟ੍ਰੀਮਰ" - "ਵਿੰਡ ਚਾਈਮਸ" - "ਚੰਦਰਮਾ ਦੇਖਣ ਦੀ ਰਸਮ" - "ਸਕੂਲ ਦਾ ਬਸਤਾ" - "ਗ੍ਰੈਜੁਏਸ਼ਨ ਕੈਪ" - - - - - - - "Level slider" - - - - - - - "ਝੂਟੇ ਵਾਲਾ ਘੋੜਾ" - "ਫੈਰਿਸ ਝੂਲਾ" - "ਰੋਲਰ ਕੋਸਟਰ" - "ਮੱਛੀ ਫੜ੍ਹਨ ਦਾ ਡੰਡਾ ਅਤੇ ਮੱਛੀ" - "ਮਾਈਕ੍ਰੋਫ਼ੋਨ" - "ਮੂਵੀ ਕੈਮਰਾ" - "ਸਿਨੇਮਾ" - "ਹੈਡਫੋਨ" - "ਕਲਾਕਾਰ ਪੈਲੇਟ" - "ਲੰਮਾ ਟੋਪ" - "ਸਰਕਸ ਦਾ ਤੰਬੂ" - "ਟਿਕਟ" - "ਕਲੈਪਰ ਬੋਰਡ" - "ਰੰਗ ਕਲਾਵਾਂ" - "ਵੀਡੀਓ ਗੇਮ" - "ਡਾਇਰੈਕਟ ਹਿਟ" - "ਸਲੌਟ ਮਸ਼ੀਨ" - "ਬਿਲੀਅਰਡ" - "ਗੇਮ ਡਾਈ" - "ਗੇਂਦਬਾਜੀ" - "ਫਲਾਵਰ ਪਲੇਇੰਗ ਕਾਰਡਸ" - "ਸੰਗੀਤਮਈ ਨੋਟ" - "ਮਲਟੀਪਲ ਸੰਗੀਤਮਈ ਨੋਟਸ" - "ਸੈਕਸੋਫ਼ੋਨ" - "ਗਿਟਾਰ" - "ਸੰਗੀਤਮਈ ਕੀ-ਬੋਰਡ" - "ਬਿਗਲ" - "ਸਾਰੰਗੀ" - "ਸੰਗੀਤਮਈ ਸਕੋਰ" - "ਕਮਰਬੰਦ ਨਾਲ ਰਨਿੰਗ ਕਮੀਜ਼" - "ਟੈਨਿਸ ਦਾ ਬੱਲਾ ਅਤੇ ਗੇਂਦ" - "ਸਕੀ ਅਤੇ ਸਕੀ ਬੂਟ" - "ਬਾਸਕੇਟਬਾਲ ਅਤੇ ਹੂਪ" - "ਚਾਰਖ਼ਾਨੇਦਾਰ ਝੰਡਾ" - "ਸਨੋਬੌਰਡਰ" - "ਰਨਰ" - "ਸਰਫ਼ਰ" - - - "ਟ੍ਰੌਫੀ" - "ਘੁੜ ਦੌੜ" - "ਅਮਰੀਕੀ ਫੁਟਬਾਲ" - "ਰਗਬੀ ਫੁਟਬਾਲ" - "ਤੈਰਾਕ" - - - - - - - - - - - - - "Field hockey stick and ball" - - - "Table tennis paddle and ball" - - - - - - - - - - - - - - - - - - - - - - - - - "ਘਰ ਦਾ ਨਿਰਮਾਣ" - "ਬਾਗ ਵਾਲਾ ਘਰ" - "ਦਫ਼ਤਰ ਦੀ ਇਮਾਰਤ" - "ਜਾਪਾਨੀ ਡਾਕ ਘਰ" - "ਯੂਰੋਪੀਅਨ ਡਾਕ ਘਰ" - "ਹਸਪਤਾਲ" - "ਬੈਂਕ" - "ਆਟੋਮੇਟਿਡ ਟੈਲਰ ਮਸ਼ੀਨ" - "ਹੋਟਲ" - "ਲਵ ਹੋਟਲ" - "ਸਹੂਲਤ ਸਟੋਰ" - "ਸਕੂਲ" - "ਡਿਪਾਰਟਮੈਂਟ ਸਟੋਰ" - "ਫੈਕਟਰੀ" - "ਇਜ਼ਾਕਾਇਆ ਲੈਂਟਰਨ" - "ਜਾਪਾਨੀ ਕਾਸਲ" - "ਯੂਰੋਪੀਅਨ ਕਾਸਲ" - "Waving white flag" - "Waving black flag" - - - - - - - - - - - "ਇਮੋਜੀ ਸੋਧਕ Fitzpatrick ਕਿਸਮ-1-2" - "ਇਮੋਜੀ ਸੋਧਕ Fitzpatrick ਕਿਸਮ-3" - "ਇਮੋਜੀ ਸੋਧਕ Fitzpatrick ਕਿਸਮ-4" - "ਇਮੋਜੀ ਸੋਧਕ Fitzpatrick ਕਿਸਮ-5" - "ਇਮੋਜੀ ਸੋਧਕ Fitzpatrick ਕਿਸਮ-6" - "ਚੂਹਾ" - "ਮਾਊਸ" - "ਬਲਦ" - "ਮੱਝ" - "ਗਊ" - - - "ਚੀਤਾ" - "ਖ਼ਰਗੋਸ਼" - "ਬਿੱਲੀ" - "ਡਰੈਗਨ" - "ਮਗਰਮੱਛ" - "ਵੇਲ ਮੱਛੀ" - "ਘੋਗਾ" - "ਸੱਪ" - "ਘੋੜਾ" - "ਰਾਮ" - "ਬੱਕਰੀ" - "ਭੇਡ" - "ਬਾਂਦਰ" - "ਕੁੱਕੜ" - "ਚਿਕਨ" - "ਕੁੱਤਾ" - "ਸੂਰ" - "ਜੰਗਲੀ ਸੂਰ" - "ਹਾਥੀ" - "ਤੰਦੂਆ" - "ਕੁੰਡਲਦਾਰ ਘੋਗਾ" - "ਖਟਮਲ" - "ਕੀੜੀ" - "ਮਧੂ ਮੱਖੀ" - "ਲੇਡੀ ਬੀਟਲ" - "ਮੱਛੀ" - "ਗਰਮ ਦੇਸ਼ ਦੀ ਮੱਛੀ" - "ਬਲੋਫਿਸ਼" - "ਕੱਛੂਕੰਮਾ" - "ਹੈਚਿੰਗ ਚਿਕ" - "ਬੇਬੀ ਚਿਕ" - "ਫ੍ਰੰਟ-ਫੇਸਿੰਗ ਬੇਬੀ ਚਿਕ" - "ਪੰਛੀ" - "ਪੈਂਗੁਇਨ" - "ਕੋਆਲਾ" - "ਪੂਡਲ ਕੁੱਤਾ" - "ਅਰਬੀ ਊਠ" - "ਬੈਕਟਰੀਅਨ ਊਠ" - "ਡਾਲਫਿਨ ਮੱਛੀ" - "ਮਾਊਸ ਫੇਸ" - "ਗਊ ਦਾ ਮੂੰਹ" - "ਚੀਤੇ ਦਾ ਮੂੰਹ" - "ਖ਼ਰਗੋਸ਼ ਦਾ ਮੂੰਹ" - "ਬਿੱਲੀ ਦਾ ਮੂੰਹ" - "ਡਰੈਗਨ ਦਾ ਮੂੰਹ" - "ਨਾਸਾਂ ਵਾਲੀ ਵੇਲ ਮੱਛੀ" - "ਘੋੜੇ ਦਾ ਮੂੰਹ" - "ਬਾਂਦਰ ਦਾ ਮੂੰਹ" - "ਕੁੱਤੇ ਦਾ ਮੂੰਹ" - "ਸੂਰ ਦਾ ਮੂੰਹ" - "ਡੱਡੂ ਦਾ ਮੂੰਹ" - "ਹੈਮਸਟਰ ਦਾ ਮੂੰਹ" - "ਬਘਿਆੜ ਦਾ ਮੂੰਹ" - "ਰਿੱਛ ਦਾ ਮੂੰਹ" - "ਪੰਡੇ ਦਾ ਮੂੰਹ" - "ਸੂਰ ਦੀ ਨੱਕ" - "ਪੰਜੇ ਦੇ ਨਿਸ਼ਾਨ" - - - "ਅੱਖਾਂ" - - - "ਕੰਨ" - "ਨੱਕ" - "ਮੂੰਹ" - "ਜੀਭ" - "ਚਿੱਟੀ ਉੱਪਰ ਸੰਕੇਤ ਦੇਣ ਵਾਲੀ ਪੁੱਠੇ ਹੱਥ ਦੀ ਕ੍ਰਮ-ਸੂਚੀ" - "ਚਿੱਟੀ ਹੇਠਾਂ ਸੰਕੇਤ ਦੇਣ ਵਾਲੀ ਪੁੱਠੇ ਹੱਥ ਦੀ ਕ੍ਰਮ-ਸੂਚੀ" - "ਚਿੱਟੀ ਖੱਬੇ ਪਾਸੇ ਸੰਕੇਤ ਦੇਣ ਵਾਲੀ ਪੁੱਠੇ ਹੱਥ ਦੀ ਕ੍ਰਮ-ਸੂਚੀ" - "ਚਿੱਟੀ ਸੱਜੇ ਪਾਸੇ ਸੰਕੇਤ ਦੇਣ ਵਾਲੀ ਪੁੱਠੇ ਹੱਥ ਦੀ ਕ੍ਰਮ-ਸੂਚੀ" - "ਹੱਥ ਦੀ ਮੁੱਕੀ ਦਾ ਨਿਸ਼ਾਨ" - "ਹੱਥ ਹਿਲਾਉਣ ਦਾ ਨਿਸ਼ਾਨ" - "ਠੀਕ ਹੱਥ ਦਾ ਨਿਸ਼ਾਨ" - "ਅੰਗੂਠਾ ਉੱਪਰ ਦਾ ਨਿਸ਼ਾਨ" - "ਅੰਗੂਠਾ ਹੇਠਾਂ ਦਾ ਨਿਸ਼ਾਨ" - "ਹੱਥਾਂ ਨਾਲ ਤਾਲੀ ਵਜਾਉਣ ਦਾ ਨਿਸ਼ਾਨ" - "ਖੁੱਲ੍ਹੇ ਹੱਥਾਂ ਦਾ ਨਿਸ਼ਾਨ" - "ਮੁਕਟ" - "ਔਰਤਾਂ ਦਾ ਟੋਪ" - "ਐਨਕਾਂ" - "ਟਾਈ" - "ਟੀ-ਸ਼ਰਟ" - "ਜੀਂਸ" - "ਪੁਸ਼ਾਕ" - "ਕਿਮੋਨੋ" - "ਬਿਕਨੀ" - "ਔਰਤਾਂ ਦੇ ਕੱਪੜੇ" - "ਪਰਸ" - "ਹੈਂਡਬੈਗ" - "ਥੈਲੀ" - "ਪੁਰਸ਼ਾ ਦੇ ਬੂਟ" - "ਅਥਲੈਟਿਕ ਬੂਟ" - "ਉੱਚੀ-ਅੱਡੀ ਦੇ ਬੂਟ" - "ਔਰਤਾਂ ਦੇ ਸੈਂਡਲ" - "ਔਰਤਾਂ ਦੇ ਬੂਟ" - "ਪੈਰਾਂ ਦੇ ਨਿਸ਼ਾਨ" - "ਛਾਇਆ ਚਿੱਤਰ ਵਿੱਚ ਧੜ ਦਾ ਬੁੱਤ" - "ਛਾਇਆ ਚਿੱਤਰ ਵਿੱਚ ਧੜ ਦੇ ਬੁੱਤ" - "ਲੜਕਾ" - "ਲੜਕੀ" - "ਆਦਮੀ" - "ਔਰਤ" - "ਪਰਿਵਾਰ" - "ਹੱਥ ਫੜ੍ਹੇ ਹੋਏ ਆਦਮੀ ਅਤੇ ਔਰਤ" - "ਹੱਥ ਫੜ੍ਹੇ ਹੋਏ ਦੋ ਆਦਮੀ" - "ਹੱਥ ਫੜ੍ਹੇ ਹੋਏ ਦੋ ਔਰਤਾਂ" - "ਪੁਲਿਸ ਅਫ਼ਸਰ" - "ਬਨੀ ਕੰਨਾਂ ਨਾਲ ਔਰਤ" - "ਘੁੰਡ ਵਿੱਚ ਲਾੜੀ" - "ਸੁਨਹਿਰੇ ਵਾਲਾਂ ਵਾਲਾ ਵਿਅਕਤੀ" - "ਗੁਆ ਪੀ ਮਾਓ ਨਾਲ ਆਦਮੀ" - "ਪੱਗ ਵਾਲਾ ਆਦਮੀ" - "ਬਜ਼ੁਰਗ ਆਦਮੀ" - "ਬਜ਼ੁਰਗ ਔਰਤ" - "ਬੱਚਾ" - "ਉਸਾਰੀ ਮਜ਼ਦੂਰ" - "ਰਾਜਕੁਮਾਰੀ" - "ਜਾਪਾਨੀ ਰਾਖਸ਼" - "ਜਾਪਾਨੀ ਭੂਤ" - "ਭੂਤ" - "ਬਾਲ ਦੇਵਤਾ" - "ਐਕਸਟ੍ਰਾਟੈਰੈਸਟ੍ਰੀਅਲ ਏਲੀਅਨ" - "ਏਲੀਅਨ ਰਾਖਸ਼" - "Imp" - "ਖੋਪਰੀ" - "ਜਾਣਕਾਰੀ ਡੈਸਕ ਕਰਮਚਾਰੀ" - "ਪਹਿਰੇਦਾਰ" - "ਨਿਰਤਕਾਰ" - "ਲਿਪਸਟਿਕ" - "ਨਹੁੰ ਪਾਲਿਸ਼" - "ਚਿਹਰੇ ਦੀ ਮਾਲਸ਼" - "ਹੇਅਰਕਟ" - "ਬਾਰਬਰ ਪੋਲ" - "ਸਰਿੰਜ" - "ਗੋਲੀ" - "ਚੁੰਮੀ ਦਾ ਨਿਸ਼ਾਨ" - "ਪ੍ਰੇਮ ਪੱਤਰ" - "ਅੰਗੂਠੀ" - "ਰਤਨ" - "ਚੁੰਮੀ" - "ਗੁਲਦਸਤਾ" - "ਦਿਲ ਨਾਲ ਜੋੜਾ" - "ਵਿਆਹ" - "ਧੜਕਦਾ ਦਿਲ" - "ਟੁੱਟਿਆ ਦਿਲ" - "ਦੋ ਦਿਲ" - "ਚਮਕਦਾ ਦਿਲ" - "ਵਧਦਾ ਦਿਲ" - "ਤੀਰ ਵਾਲਾ ਦਿਲ" - "ਨੀਲਾ ਦਿਲ" - "ਹਰਾ ਦਿਲ" - "ਪੀਲਾ ਦਿਲ" - "ਜਾਮਨੀ ਦਿਲ" - "ਰਿਬਨ ਵਾਲਾ ਦਿਲ" - "ਘੁੰਮਦੇ ਦਿਲ" - "ਦਿਲ ਦੀ ਸਜਾਵਟ" - "ਅੰਦਰ ਇੱਕ ਬਿੰਦੀ ਨਾਲ ਡਾਇਮੰਡ ਆਕਾਰ" - "ਇਲੈਕਟ੍ਰਿਕ ਲਾਈਟ ਬਲਬ" - "ਗੁੱਸੇ ਦਾ ਚਿੰਨ੍ਹ" - "ਬੰਬ" - "ਸੌਣ ਦਾ ਚਿੰਨ੍ਹ" - "ਟੱਕਰ ਦਾ ਚਿੰਨ੍ਹ" - "ਪਸੀਨੇ ਦੇ ਛਿੱਟੇ ਉੱਡਣ ਦਾ ਚਿੰਨ੍ਹ" - "ਬੂੰਦ" - "ਡੈਸ਼ ਦਾ ਚਿੰਨ੍ਹ" - "ਪਾਈਲ ਔਫ ਪੂ" - "ਲਚਕਦਾਰ ਡੌਲੇ" - "ਚੱਕਰ ਆਉਣ ਦਾ ਚਿੰਨ੍ਹ" - "ਸਪੀਚ ਗੁਬਾਰਾ" - "ਚਿੰਤਨ ਗੁਬਾਰਾ" - "ਚਿੱਟਾ ਫੁੱਲ" - "ਸੌ ਅੰਕਾਂ ਦਾ ਚਿੰਨ੍ਹ" - "ਪੈਸੇ ਦਾ ਥੈਲਾ" - "ਮੁਦਰਾ ਵਟਾਂਦਰਾ" - "ਹੈਵੀ ਡਾਲਰ ਚਿੰਨ੍ਹ" - "ਕ੍ਰੈਡਿਟ ਕਾਰਡ" - "ਜਪਾਨੀ ਸਿੱਕੇ ਦੇ ਚਿੰਨ੍ਹ ਵਾਲਾ ਬੈਂਕਨੋਟ" - "ਡਾਲਰ ਦੇ ਚਿੰਨ੍ਹ ਵਾਲਾ ਬੈਂਕਨੋਟ" - "ਯੂਰੋ ਦੇ ਚਿੰਨ੍ਹ ਵਾਲਾ ਬੈਂਕਨੋਟ" - "ਪੌਂਡ ਦੇ ਚਿੰਨ੍ਹ ਵਾਲਾ ਬੈਂਕਨੋਟ" - "ਖੰਭਾਂ ਨਾਲ ਪੈਸਾ" - "ਉੱਪਰ ਵੱਲ ਟ੍ਰੈਂਡ ਅਤੇ ਜਪਾਨੀ ਸਿੱਕੇ ਦੇ ਚਿੰਨ੍ਹ ਵਾਲਾ ਚਾਰਟ" - "ਸੀਟ" - "ਨਿੱਜੀ ਕੰਪਿਊਟਰ" - "ਬ੍ਰੀਫ਼ਕੇਸ" - "ਮਿਨੀਡਿਸਕ" - "ਫਲੌਪੀ ਡਿਸਕ" - "ਆਪਟੀਕਲ ਡਿਸਕ" - "Dvd" - "ਫਾਈਲ ਫੋਲਡਰ" - "ਫਾਈਲ ਫੋਲਡਰ ਖੋਲ੍ਹੋ" - "ਵੱਟ ਵਾਲਾ ਸਫ਼ਾ" - "ਫੇਸਿੰਗ ਅਪ ਸਫ਼ਾ" - "ਕੈਲੰਡਰ" - "ਟੀਅਰ-ਔਫ ਕੈਲੰਡਰ" - "ਕਾਰਡ ਕ੍ਰਮ-ਸੂਚੀ" - "ਉੱਪਰ ਵੱਲ ਟ੍ਰੈਂਡ ਵਾਲਾ ਚਾਰਟ" - "ਹੇਠਾਂ ਵੱਲ ਟ੍ਰੈਂਡ ਵਾਲਾ ਚਾਰਟ" - "ਛੜ ਚਾਰਟ" - "ਕਲਿਪਬੋਰਡ" - "ਪੁਸ਼ਪਿਨ" - "ਗੋਲ ਪੁਸ਼ਪਿਨ" - "ਪੇਪਰਕਲਿਪ" - "ਸਿੱਧਾ ਪੈਮਾਨਾ" - "ਤਿਕੋਨਾ ਪੈਮਾਨਾ" - "ਬੁੱਕਮਾਰਕ ਟੈਬ" - "ਵਹੀ-ਖਾਤਾ" - "ਨੋਟਬੁੱਕ" - "ਸਜਾਵਟੀ ਜਿਲਦ ਵਾਲੀ ਨੋਟਬੁੱਕ" - "ਬੰਦ ਕਿਤਾਬ" - "ਖੁਲ੍ਹੀ ਕਿਤਾਬ" - "ਹਰੀ ਕਿਤਾਬ" - "ਨੀਲੀ ਕਿਤਾਬ" - "ਸੰਤਰੀ ਕਿਤਾਬ" - "ਕਿਤਾਬਾਂ" - "ਨਾਮ ਦਾ ਬਿੱਲਾ" - "ਸਕ੍ਰੋਲ ਕਰੋ" - "ਮੀਮੋ" - "ਟੈਲੀਫੋਨ ਰਿਸੀਵਰ" - "ਪੇਜਰ" - "ਫੈਕਸ ਮਸ਼ੀਨ" - "ਸੈਟੇਲਾਈਟ ਐਂਟੀਨਾ" - "ਜਨਤਕ ਸੰਬੋਧਨ ਲਾਊਡਸਪੀਕਰ" - "ਖੁਸ਼ੀ ਪ੍ਰਗਟ ਕਰਨ ਵਾਲਾ ਲਾਊਡ ਸਪੀਕਰ" - "ਆਊਟਬੌਕਸ ਟ੍ਰੇ" - "ਇਨਬੌਕਸ ਟ੍ਰੇ" - "ਪੈਕੇਜ" - "ਈ-ਮੇਲ ਦਾ ਚਿੰਨ੍ਹ" - "ਇਨਕਮਿੰਗ ਲਿਫ਼ਾਫ਼ਾ" - "ਉੱਪਰ ਹੇਠਾਂ ਵੱਲ ਤੀਰ ਦੇ ਨਿਸ਼ਾਨ ਵਾਲਾ ਲਿਫ਼ਾਫ਼ਾ" - "ਹੇਠਾਂ ਕੀਤੇ ਝੰਡੇ ਵਾਲਾ ਬੰਦ ਮੇਲਬੌਕਸ" - "ਉੱਪਰ ਕੀਤੇ ਝੰਡੇ ਵਾਲਾ ਬੰਦ ਮੇਲਬੌਕਸ" - "ਉੱਪਰ ਕੀਤੇ ਝੰਡੇ ਵਾਲਾ ਖੁੱਲ੍ਹਾ ਮੇਲਬੌਕਸ" - "ਹੇਠਾਂ ਕੀਤੇ ਝੰਡੇ ਵਾਲਾ ਖੁੱਲ੍ਹਾ ਮੇਲਬੌਕਸ" - "ਪੋਸਟਬੌਕਸ" - "ਪੋਸਟਲ ਹੌਰਨ" - "ਅਖ਼ਬਾਰ" - "ਮੋਬਾਈਲ ਫ਼ੋਨ" - "ਮੋਬਾਈਲ ਫ਼ੋਨ ਦੇ ਨਾਲ ਸੱਜੇ ਪਾਸੇ ਵੱਲ ਮੁੜਿਆ ਤੀਰ" - "ਵਾਈਬ੍ਰੇਸ਼ਨ ਮੋਡ" - "ਮੋਬਾਈਲ ਫ਼ੋਨ ਬੰਦ" - "ਕੋਈ ਮੋਬਾਈਲ ਫ਼ੋਨ ਨਹੀਂ" - "ਬਾਰਸ ਵਾਲਾ ਐਂਟੀਨਾ" - "ਕੈਮਰਾ" - - - "ਵੀਡੀਓ ਕੈਮਰਾ" - "ਟੈਲੀਵਿਜ਼ਨ" - "ਰੇਡੀਓ" - "ਵੀਡੀਓਕੈਸੇਟ" - - - - - "ਮੁੜੇ ਹੋਏ ਸੱਜੇ ਪਾਸੇ ਵੱਲ ਤੀਰ ਦੇ ਨਿਸ਼ਾਨ" - "ਕਲੌਕਵਾਈਜ ਸੱਜੇ ਅਤੇ ਖੱਬੇ ਪਾਸੇ ਵੱਲ ਖੁੱਲ੍ਹੇ ਗੋਲ ਤੀਰ ਦੇ ਨਿਸ਼ਾਨ" - "ਗੋਲ ਇੱਕ ਓਵਰਲੇ ਵਾਲੇ ਕਲੌਕਵਾਈਜ ਸੱਜੇ ਅਤੇ ਖੱਬੇ ਪਾਸੇ ਵੱਲ ਖੁੱਲ੍ਹੇ ਗੋਲ ਤੀਰ ਦੇ ਨਿਸ਼ਾਨ" - "ਕਲੌਕਵਾਈਜ ਹੇਠਾਂ ਅਤੇ ਉੱਪਰ ਵੱਲ ਖੁੱਲ੍ਹੇ ਗੋਲ ਤੀਰ ਦੇ ਨਿਸ਼ਾਨ" - "ਐਂਟੀਕਲੌਕਵਾਈਜ ਹੇਠਾਂ ਅਤੇ ਉੱਪਰ ਵੱਲ ਖੁੱਲ੍ਹੇ ਗੋਲ ਤੀਰ ਦੇ ਨਿਸ਼ਾਨ" - "ਘੱਟ ਚਮਕ ਦਾ ਚਿੰਨ੍ਹ" - "ਉੱਚ ਚਮਕ ਦਾ ਚਿੰਨ੍ਹ" - "ਕਾਟਾ ਸਟ੍ਰੋਕ ਵਾਲਾ ਸਪੀਕਰ" - "ਸਪੀਕਰ" - "ਇੱਕ ਅਵਾਜ਼ ਤਰੰਗ ਵਾਲਾ ਸਪੀਕਰ" - "ਤਿੰਨ ਅਵਾਜ਼ ਤਰੰਗਾਂ ਵਾਲਾ ਸਪੀਕਰ" - "ਬੈਟਰੀ" - "ਇਲੈਕਟ੍ਰਿਕ ਪਲਗ" - "ਖੱਬੇ-ਪਾਸੇ ਸੰਕੇਤ ਦੇਣ ਵਾਲਾ ਵੱਡਦਰਸ਼ੀ ਸ਼ੀਸ਼ਾ" - "ਸੱਜੇ-ਪਾਸੇ ਸੰਕੇਤ ਦੇਣ ਵਾਲਾ ਵੱਡਦਰਸ਼ੀ ਸ਼ੀਸ਼ਾ" - "ਸਿਆਹੀ ਦੇ ਪੈਨ ਨਾਲ ਤਾਲਾ" - "ਕੁੰਜੀ ਨਾਲ ਬੰਦ ਤਾਲਾ" - "ਕੁੰਜੀ" - "ਤਾਲਾ" - "ਖੁੱਲ੍ਹਾ ਤਾਲਾ" - "ਘੰਟੀ" - "ਕਾਟਾ ਸਟ੍ਰੋਕ ਵਾਲੀ ਘੰਟੀ" - "ਬੁੱਕਮਾਰਕ" - "ਲਿੰਕ ਚਿੰਨ੍ਹ" - "ਰੇਡੀਓ ਬਟਨ" - "ਉੱਪਰ ਖੱਬੇ ਪਾਸੇ ਵੱਲ ਤੀਰ ਦੇ ਨਿਸ਼ਾਨ ਨਾਲ ਪਿੱਛੇ" - "ਉੱਪਰ ਖੱਬੇ ਪਾਸੇ ਵੱਲ ਤੀਰ ਦੇ ਨਿਸ਼ਾਨ ਨਾਲ ਖ਼ਤਮ" - "ਉੱਪਰ ਖੱਬੇ ਸੱਜੇ ਪਾਸੇ ਤੀਰ ਦੇ ਨਿਸ਼ਾਨ ਨਾਲ ਵਿਸਮਿਕ ਚਿੰਨ੍ਹ ਨਾਲ ਚਾਲੂ" - "ਉੱਪਰ ਸੱਜੇ ਪਾਸੇ ਵੱਲ ਤੀਰ ਦੇ ਨਿਸ਼ਾਨ ਨਾਲ ਜਲਦੀ" - "ਉੱਤੇ ਉੱਪਰ ਵੱਲ ਤੀਰ ਦੇ ਨਿਸ਼ਾਨ ਨਾਲ ਉੱਪਰ" - "ਅਠਾਰਾਂ ਦੇ ਚਿੰਨ੍ਹ ਹੇਠ ਕੋਈ ਨਹੀਂ" - "ਕੀਕੈਪ ਦਸ" - "ਲਾਤੀਨੀ ਕੈਪੀਟਲ ਅੱਖਰਾਂ ਲਈ ਇਨਪੁਟ ਚਿੰਨ੍ਹ" - "ਲਾਤੀਨੀ ਛੋਟੇ ਅੱਖਰਾਂ ਲਈ ਇਨਪੁਟ ਚਿੰਨ੍ਹ" - "ਸੰਖਿਆਵਾਂ ਲਈ ਇਨਪੁਟ ਚਿੰਨ੍ਹ" - "ਚਿੰਨ੍ਹਾਂ ਲਈ ਇਨਪੁਟ ਚਿੰਨ੍ਹ" - "ਲਾਤੀਨੀ ਅੱਖਰਾਂ ਲਈ ਇਨਪੁਟ ਚਿੰਨ੍ਹ" - "ਅੱਗ" - "ਇਲੈਕਟ੍ਰੈਕ ਟੌਰਚ" - "ਸੰਨੀ" - "ਹਥੌੜਾ" - "ਨਟ ਐਂਡ ਬੋਲਟ" - "ਹੋਚੋ" - "ਪਸਤੌਲ" - "ਮਾਈਕ੍ਰੋਸਕੋਪ" - "ਟੈਲੀਸਕੋਪ" - "ਕ੍ਰਿਸਟਲ ਬੌਲ" - "ਵਿਚਾਲੇ ਬਿੰਦੀ ਨਾਲ ਛੇ ਨੋਕਾਂ ਵਾਲਾ ਤਾਰਾ" - "ਅਰੰਭ ਕਰਤਾ ਲਈ ਜਾਪਾਨੀ ਚਿੰਨ੍ਹ" - "ਤ੍ਰਿਸ਼ੂਲ ਦਾ ਚਿੰਨ੍ਹ" - "ਕਾਲਾ ਵਰਗਾਕਾਰ ਬਟਨ" - "ਚਿੱਟਾ ਵਰਗਾਕਾਰ ਬਟਨ" - "ਵੱਡਾ ਲਾਲ ਗੋਲਾ" - "ਵੱਡਾ ਨੀਲਾ ਗੋਲਾ" - "ਵੱਡਾ ਸੰਤਰੀ ਹੀਰਾ" - "ਵੱਡਾ ਨੀਲਾ ਹੀਰਾ" - "ਛੋਟਾ ਸੰਤਰੀ ਹੀਰਾ" - "ਛੋਟਾ ਨੀਲਾ ਹੀਰਾ" - "ਉੱਪਰ-ਸੰਕੇਤ ਦੇਣ ਵਾਲਾ ਲਾਲ ਤਿਕੋਨ" - "ਹੇਠਾਂ-ਸੰਕੇਤ ਦੇਣ ਵਾਲਾ ਲਾਲ ਤਿਕੋਨ" - "ਉੱਪਰ-ਸੰਕੇਤ ਦੇਣ ਵਾਲਾ ਛੋਟਾ ਲਾਲ ਤਿਕੋਨ" - "ਹੇਠਾਂ-ਸੰਕੇਤ ਦੇਣ ਵਾਲਾ ਛੋਟਾ ਲਾਲ ਤਿਕੋਨ" - - - - - - - - - - - - - "ਘੜੀ ਫੇਸ ਇੱਕ ਵਜੇ" - "ਘੜੀ ਫੇਸ ਦੋ ਵਜੇ" - "ਘੜੀ ਫੇਸ ਤਿੰਨ ਵਜੇ" - "ਘੜੀ ਫੇਸ ਚਾਰ ਵਜੇ" - "ਘੜੀ ਫੇਸ ਪੰਜ ਵਜੇ" - "ਘੜੀ ਫੇਸ ਛੇ ਵਜੇ" - "ਘੜੀ ਫੇਸ ਸੱਤ ਵਜੇ" - "ਘੜੀ ਫੇਸ ਅੱਠ ਵਜੇ" - "ਘੜੀ ਫੇਸ ਨੌ ਵਜੇ" - "ਘੜੀ ਫੇਸ ਦਸ ਵਜੇ" - "ਘੜੀ ਫੇਸ ਗਿਆਰਾਂ ਵਜੇ" - "ਘੜੀ ਫੇਸ ਬਾਰਾਂ ਵਜੇ" - "ਘੜੀ ਫੇਸ ਇੱਕ-ਤੀਹ" - "ਘੜੀ ਫੇਸ ਦੋ-ਤੀਹ" - "ਘੜੀ ਫੇਸ ਤਿੰਨ-ਤੀਹ" - "ਘੜੀ ਫੇਸ ਚਾਰ-ਤੀਹ" - "ਘੜੀ ਫੇਸ ਪੰਜ-ਤੀਹ" - "ਘੜੀ ਫੇਸ ਛੇ-ਤੀਹ" - "ਘੜੀ ਫੇਸ ਸੱਤ-ਤੀਹ" - "ਘੜੀ ਫੇਸ ਅੱਠ-ਤੀਹ" - "ਘੜੀ ਫੇਸ ਨੌ-ਤੀਹ" - "ਘੜੀ ਫੇਸ ਦਸ-ਤੀਹ" - "ਘੜੀ ਫੇਸ ਗਿਆਰਾਂ-ਤੀਹ" - "ਘੜੀ ਫੇਸ ਬਾਰਾਂ-ਤੀਹ" - - - - - - - "Man in business suit levitating" - - - - - "ਮੱਕੜੀ" - "ਮੱਕੜੀ ਦਾ ਜਾਲਾ" - - - - - - - - - - - - - - - - - - - "Desktop computer" - - - "Three button mouse" - "ਟਰੈਕਬਾਲ" - "Frame with picture" - "Card index dividers" - - - - - - - - - - - - - - - - - - - - - - - - - - - "ਮਾਊਂਟ ਫਿਊਜੀ" - "ਟੋਕਿਓ ਟਾਵਰ" - "ਸਟੈਚੂ ਔਫ ਲਿਬਰਟੀ" - "ਜਾਪਾਨ ਦੇ ਛਾਇਆ ਚਿੱਤਰ" - "ਮੋਏਆਈ" - "ਖਿਸਿਆਣੀ ਹਾਸੀ ਵਾਲਾ ਚਿਹਰਾ" - "ਮੁਸਕਰਾਉਂਦੀਆਂ ਅੱਖਾਂ ਨਾਲ ਖਿਸਿਆਣੀ ਹਾਸੀ ਵਾਲਾ ਚਿਹਰਾ" - "ਖੁਸ਼ੀ ਦੇ ਹੰਝੁੂਆਂ ਵਾਲਾ ਚਿਹਰਾ" - "ਖੁੱਲ੍ਹੇ ਮੂੰਹ ਵਾਲਾ ਮੁਸਕਰਾਉਂਦਾ ਚਿਹਰਾ" - "ਖੁੱਲ੍ਹੇ ਮੂੰਹ ਅਤੇ ਮੁਸਕਰਾਉਂਦੀਆਂ ਅੱਖਾਂ ਵਾਲਾ ਮੁਸਕਰਾਉਂਦਾ ਚਿਹਰਾ" - "ਖੁੱਲ੍ਹੇ ਮੂੰਹ ਅਤੇ ਠੰਢੇ ਪਸੀਨਾ ਵਾਲਾ ਮੁਸਕਰਾਉਂਦਾ ਚਿਹਰਾ" - "ਖੁੱਲ੍ਹੇ ਮੂੰਹ ਅਤੇ ਕੱਸ ਕੇ -ਬੰਦ ਕੀਤੀਆਂ ਅੱਖਾਂ ਵਾਲਾ ਮੁਸਕਰਾਉਂਦਾ ਚਿਹਰਾ" - "ਪ੍ਰਕਾਸ਼ ਕੁੰਡਲ ਵਾਲਾ ਮੁਸਕਰਾਉਂਦਾ ਚਿਹਰਾ" - "ਸਿੰਗਾਂ ਵਾਲਾ ਮੁਸਕਰਾਉਂਦਾ ਚਿਹਰਾ" - "ਅੱਖਾਂ ਝਮਕਦਾ ਚਿਹਰਾ" - "ਮੁਸਕਰਾਉਂਦੀਆਂ ਅੱਖਾਂ ਵਾਲਾ ਮੁਸਕਰਾਉਂਦਾ ਚਿਹਰਾ" - "ਸੁਆਦੀ ਭੋਜਨ ਦਾ ਸੁਆਦ ਲੈਂਦਾ ਚਿਹਰਾ" - "ਸਕੂਨ ਵਾਲਾ ਚਿਹਰਾ" - "ਦਿਲ-ਆਕ੍ਰਿਤੀ ਵਾਲੀਆਂ ਅੱਖਾਂ ਵਾਲਾ ਮੁਸਕਰਾਉਂਦਾ ਚਿਹਰਾ" - "ਧੁੱਪ ਦੀਆਂ ਐਨਕਾਂ ਵਾਲਾ ਮੁਸਕਰਾਉਂਦਾ ਚਿਹਰਾ" - "ਬਣਾਵਟੀ ਹਾਸੀ ਵਾਲਾ ਚਿਹਰਾ" - "ਉਦਾਸੀਨ ਚਿਹਰਾ" - "ਭਾਵ ਰਹਿਤ ਚਿਹਰਾ" - "ਨਾਖ਼ੁਸ਼ ਚਿਹਰਾ" - "ਠੰਢੇ ਪਸੀਨੇ ਵਾਲਾ ਚਿਹਰਾ" - "ਧਿਆਨ ਮਗਨ ਚਿਹਰਾ" - "ਘਬਰਾਇਆ ਹੋਇਆ ਚਿਹਰਾ" - "ਹੈਰਾਨੀ ਭਰਿਆ ਚਿਹਰਾ" - "ਚੁੰਮੀ ਵਾਲਾ ਚਿਹਰਾ" - "ਇੱਕ ਚੁੰਮੀ ਉਛਾਲਦਾ ਚਿਹਰਾ" - "ਮੁਸਕਰਾਉਂਦੀਆਂ ਅੱਖਾਂ ਵਾਲਾ ਚੁੰਮੀ ਵਾਲਾ ਚਿਹਰਾ" - "ਬੰਦ ਅੱਖਾਂ ਵਾਲਾ ਚੁੰਮੀ ਵਾਲਾ ਚਿਹਰਾ" - "ਬਾਹਰ ਨਿੱਕਲੀ ਹੋਈ ਜੀਭ ਵਾਲਾ ਚਿਹਰਾ" - "ਬਾਹਰ ਨਿੱਕਲੀ ਹੋਈ ਜੀਭ ਅਤੇ ਝਮਕਦੀ ਅੱਖ ਵਾਲਾ ਚਿਹਰਾ" - "ਬਾਹਰ ਨਿੱਕਲੀ ਹੋਈ ਜੀਭ ਅਤੇ ਕੱਸਕੇ-ਬੰਦ ਕੀਤੀਆਂ ਅੱਖਾਂ ਵਾਲਾ ਚਿਹਰਾ" - "ਨਿਰਾਸ਼ ਚਿਹਰਾ" - "ਚਿੰਤਾਤੁਰ ਚਿਹਰਾ" - "ਗੁੱਸੇ ਵਾਲਾ ਚਿਹਰਾ" - "ਬੁੱਲ੍ਹ ਟੇਰਦਾ ਚਿਹਰਾ" - "ਰੋਂਦਾ ਚਿਹਰਾ" - "ਦ੍ਰਿੜ੍ਹ ਚਿਹਰਾ" - "ਜਿੱਤ ਦੇ ਅੰਦਾਜ਼ ਵਾਲਾ ਚਿਹਰਾ" - "ਨਿਰਾਸ਼ ਪਰੰਤੂ ਸਕੂਨ ਵਾਲਾ ਚਿਹਰਾ" - "ਖੁੱਲ੍ਹੇ ਮੂੰਹ ਵਾਲਾ ਤਿਉੜੀ ਚੜ੍ਹਾਉਂਦਾ ਚਿਹਰਾ" - "ਤੀਬਰ ਵੇਦਨਾ ਵਾਲਾ ਚਿਹਰਾ" - "ਡਰਿਆ ਹੋਇਆ ਚਿਹਰਾ" - "ਥੱਕਿਆ ਚਿਹਰਾ" - "ਉਨੀਂਦਾ ਚਿਹਰਾ" - "ਥੱਕਿਆ ਚਿਹਰਾ" - "ਦੰਦੀਆਂ ਚਿੜ੍ਹਾਉਂਦਾ ਚਿਹਰਾ" - "ਉੱਚੀ-ਉੱਚੀ ਰੋਂਦਾ ਚਿਹਰਾ" - "ਖੁੱਲ੍ਹੇ ਮੂੰਹ ਵਾਲਾ ਚਿਹਰਾ" - "ਸ਼ਾਂਤਮਈ ਚਿਹਰਾ" - "ਖੁੱਲ੍ਹੇ ਮੂੰਹ ਅਤੇ ਠੰਢੇ ਪਸੀਨੇ ਵਾਲਾ ਚਿਹਰਾ" - "ਡਰ ਨਾਲ ਚੀਕਦਾ ਚਿਹਰਾ" - "ਹੈਰਾਨਕੁੰਨ ਚਿਹਰਾ" - "ਲਾਲ ਚਿਹਰਾ" - "ਉਨੀਂਦਾ ਚਿਹਰਾ" - "ਚਕਰਾਉਂਦਾ ਚਿਹਰਾ" - "ਬਿਨਾਂ ਮੂੰਹ ਦਾ ਚਿਹਰਾ" - "ਮੈਡੀਕਲ ਮਾਸਕ ਵਾਲਾ ਚਿਹਰਾ" - "ਮੁਸਕਰਾਉਂਦੀਆਂ ਅੱਖਾਂ ਵਾਲਾ ਖਿਸਿਆਉਂਦਾ ਬਿੱਲੀ ਦਾ ਮੂੰਹ" - "ਖ਼ੁਸ਼ੀ ਦੇ ਹੰਝੂਆਂ ਵਾਲਾ ਬਿੱਲੀ ਦਾ ਮੂੰਹ" - "ਖੁੱਲ੍ਹੇ ਮੂੰਹ ਵਾਲਾ ਮੁਸਕਰਾਉਂਦਾ ਬਿੱਲੀ ਦਾ ਮੂੰਹ" - "ਦਿਲ-ਆਕ੍ਰਿਤੀ ਵਾਲੀਆਂ ਅੱਖਾਂ ਵਾਲਾ ਮੁਸਕਰਾਉਂਦਾ ਬਿੱਲੀ ਦਾ ਮੂੰਹ" - "ਵਿੰਗੀ ਮੁਸਕਰਾਹਟ ਵਾਲਾ ਬਿੱਲੀ ਦਾ ਮੂੰਹ" - "ਬੰਦ ਅੱਖਾਂ ਵਾਲਾ ਬਿੱਲੀ ਦਾ ਚੁੰਮਣ ਮੂੰਹ" - "ਬੁੱਲ੍ਹ ਟੇਰਦਾ ਬਿੱਲੀ ਦਾ ਮੂੰਹ" - "ਰੋਂਦਾ ਬਿੱਲੀ ਦਾ ਮੂੰਹ" - "ਥੱਕਿਆ ਬਿੱਲੀ ਦਾ ਮੂੰਹ" - - - - - - - - - "ਕੋਈ ਵੀ ਵਧੀਆ ਸੰਕੇਤ ਨਹੀਂ ਵਾਲਾ ਚਿਹਰਾ" - "ਠੀਕ ਸੰਕੇਤ ਵਾਲਾ ਚਿਹਰਾ" - "ਦਿਲੋਂ ਝੁਕਦਾ ਵਿਅਕਤੀ" - "ਕੁਝ-ਬੁਰਾ-ਨਾ ਦੇਖਦਾ ਬਾਂਦਰ" - "ਕੁਝ-ਬੁਰਾ-ਨਾ ਸੁਣਦਾ ਬਾਂਦਰ" - "ਕੁਝ-ਬੁਰਾ-ਨਾ ਬੋਲਦਾ ਬਾਂਦਰ" - "ਇੱਕ ਹੱਥ ਉੱਪਰ ਚੁੱਕਦਾ ਖ਼ੁਸ਼ ਵਿਅਕਤੀ" - "ਜਸ਼ਨ ਵਿੱਚ ਦੋਵੇਂ ਹੱਥ ਉੱਪਰ ਚੁੱਕਦਾ ਵਿਅਕਤੀ" - "ਤਿਉੜੀ ਚੜ੍ਹਾਉਂਦਾ ਵਿਅਕਤੀ" - "ਬੁੱਲ੍ਹ ਟੇਰਦੇ ਚਿਹਰੇ ਵਾਲਾ ਵਿਅਕਤੀ" - "ਜੋੜੇ ਹੋਏ ਹੱਥਾਂ ਵਾਲਾ ਵਿਅਕਤੀ" - "ਰੌਕੇਟ" - "ਹੈਲੀਕਾਪਟਰ" - "ਭਾਫ਼ ਵਾਲੇ ਰੇਲ ਦਾ ਇੰਜਣ" - "ਰੇਲਵੇ ਕਾਰ" - "ਹਾਈ-ਸਪੀਡ ਰੇਲਗੱਡੀ" - "ਬੁਲੇਟ ਨੋਜ ਵਾਲੀ ਹਾਈ-ਸਪੀਡ ਰੇਲਗੱਡੀ" - "ਰੇਲਗੱਡੀ" - "ਮੈਟਰੋ" - "ਲਾਈਟ ਰੇਲ" - "ਸਟੇਸ਼ਨ" - "ਟ੍ਰਾਮ" - "ਟ੍ਰਾਮ ਕਾਰ" - "ਬੱਸ" - "ਆਉਂਦੀ ਹੋਈ ਬੱਸ" - "ਟਰਾਲੀਬੱਸ" - "ਬੱਸ ਸਟਾਪ" - "ਮਿਨੀਬੱਸ" - "ਐਂਬੂਲੈਂਸ" - "ਅੱਗ ਬੁਝਾਉਣ ਵਾਲਾ ਇੰਜਣ" - "ਪੁਲਿਸ ਕਾਰ" - "ਆਉਂਦੀ ਹੋਈ ਪੁਲਿਸ ਕਾਰ" - "ਟੈਕਸੀ" - "ਆਉਂਦੀ ਹੋਈ ਟੈਕਸੀ" - "ਮੋਟਰ ਜਾਂ ਕਾਰ" - "ਆਉਂਦੀ ਹੋਈ ਮੋਟਰ ਜਾਂ ਕਾਰ" - "ਮਨੋਰੰਜਨ ਵਾਹਨ" - "ਡਿਲੀਵਰੀ ਟਰੱਕ" - "ਜੋੜੀ ਹੋਈ ਲਾਰੀ" - "ਟਰੈਕਟਰ" - "ਮੋਨੋਰੇਲ" - "ਮਾਊਂਟੇਨ ਰੇਲਵੇ" - "ਸਸਪੈਂਸ਼ਨ ਰੇਲਵੇ" - "ਮਾਊਂਟੇਨ ਕੇਬਲਵੇ" - "ਏਰੀਅਲ ਟਰਾਮਵੇ" - "ਜਹਾਜ਼" - "ਰੋਬੋਟ" - "ਸਪੀਡਬੋਟ" - "ਲੇਟਵੀਂ ਟ੍ਰੈਫਿਕ ਲਾਈਟ" - "ਖੜ੍ਹਵੀਂ ਟ੍ਰੈਫਿਕ ਲਾਈਟ" - "ਉਸਾਰੀ ਚਿੰਨ੍ਹ" - "ਘੁੰਮਦੀ ਲਾਈਟ ਵਾਲੀਆਂ ਪੁਲਿਸ ਕਾਰਾਂ" - "ਪੋਸਟ ਤੇ ਤਿਕੋਨਾ ਝੰਡਾ" - "ਦਰਵਾਜਾ" - "ਕੋਈ ਐਂਟਰੀ ਚਿੰਨ੍ਹ ਨਹੀਂ" - "ਤੰਮਾਕੂਨੋਸ਼ੀ ਚਿੰਨ੍ਹ" - "ਤੰਮਾਕੂਨੋਸ਼ੀ ਨਾ ਕਰੋ ਦਾ ਚਿੰਨ੍ਹ" - "ਕੂੜੇ ਨੂੰ ਸਹੀ ਸਥਾਨ ਤੇ ਰੱਖੋ ਦਾ ਚਿੰਨ੍ਹ" - "ਕੂੜਾ ਨਾ ਖਿਲਾਰੋ ਦਾ ਚਿੰਨ੍ਹ" - "ਪੀਣਯੋਗ ਪਾਣੀ ਦਾ ਚਿੰਨ੍ਹ" - "ਗ਼ੈਰ-ਪੀਣਯੋਗ ਪਾਣੀ ਦਾ ਚਿੰਨ੍ਹ" - "ਸਾਇਕਲ" - "ਕੋਈ ਸਾਇਕਲ ਨਹੀਂ" - "ਸਾਇਕਲ ਚਲਾਉਣ ਵਾਲਾ" - "ਮਾਊਂਟੇਨ ਤੇ ਸਾਇਕਲ ਚਲਾਉਣ ਵਾਲਾ" - "ਪੈਦਲ ਯਾਤਰੀ" - "ਕੋਈ ਪੈਦਲ ਯਾਤਰੀ ਨਹੀਂ" - "ਪਾਰ ਕਰਦੇ ਬੱਚੇ" - "ਆਦਮੀਆਂ ਦਾ ਚਿੰਨ੍ਹ" - "ਔਰਤਾਂ ਦਾ ਚਿੰਨ੍ਹ" - "ਪਖਾਨਾ" - "ਬਾਲ ਚਿੰਨ੍ਹ" - "ਗੁਸਲਖ਼ਾਨਾ" - "ਪਖਾਨਾ" - "ਸ਼ਾਵਰ" - "ਇਸ਼ਨਾਨ" - "ਬਾਥਟਬ" - "ਪਾਸਪੋਰਟ ਨਿਯੰਤਰਣ" - "ਕਸਟਮਸ" - "ਸਮਾਨ ਦਾ ਦਾਅਵਾ" - "ਖੱਬੇ ਪਾਸੇ ਦਾ ਸਮਾਨ" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Flag for Ascension Island" - "Flag for Andorra" - "Flag for United Arab Emirates" - "Flag for Afghanistan" - "Flag for Antigua & Barbuda" - "Flag for Anguilla" - "Flag for Albania" - "Flag for Armenia" - "Flag for Angola" - "Flag for Antarctica" - "Flag for Argentina" - "Flag for American Samoa" - "Flag for Austria" - "Flag for Australia" - "Flag for Aruba" - "Flag for Åland Islands" - "Flag for Azerbaijan" - "Flag for Bosnia & Herzegovina" - "Flag for Barbados" - "Flag for Bangladesh" - "Flag for Belgium" - "Flag for Burkina Faso" - "Flag for Bulgaria" - "Flag for Bahrain" - "Flag for Burundi" - "Flag for Benin" - "Flag for St. Barthélemy" - "Flag for Bermuda" - "Flag for Brunei" - "Flag for Bolivia" - "Flag for Caribbean Netherlands" - "Flag for Brazil" - "Flag for Bahamas" - "Flag for Bhutan" - "Flag for Bouvet Island" - "Flag for Botswana" - "Flag for Belarus" - "Flag for Belize" - "Flag for Canada" - "Flag for Cocos Islands" - "Flag for Congo - Kinshasa" - "Flag for Central African Republic" - "Flag for Congo - Brazzaville" - "Flag for Switzerland" - "Flag for Côte d\'Ivoire" - "Flag for Cook Islands" - "Flag for Chile" - "Flag for Cameroon" - "Flag for China" - "Flag for Colombia" - "Flag for Clipperton Island" - "Flag for Costa Rica" - "Flag for Cuba" - "Flag for Cape Verde" - "Flag for Curaçao" - "Flag for Christmas Island" - "Flag for Cyprus" - "Flag for Czech Republic" - "Flag for Germany" - "Flag for Diego Garcia" - "Flag for Djibouti" - "Flag for Denmark" - "Flag for Dominica" - "Flag for Dominican Republic" - "Flag for Algeria" - "Flag for Ceuta & Melilla" - "Flag for Ecuador" - "Flag for Estonia" - "Flag for Egypt" - "Flag for Western Sahara" - "Flag for Eritrea" - "Flag for Spain" - "Flag for Ethiopia" - "Flag for European Union" - "Flag for Finland" - "Flag for Fiji" - "Flag for Falkland Islands" - "Flag for Micronesia" - "Flag for Faroe Islands" - "Flag for France" - "Flag for Gabon" - "Flag for United Kingdom" - "Flag for Grenada" - "Flag for Georgia" - "Flag for French Guiana" - "Flag for Guernsey" - "Flag for Ghana" - "Flag for Gibraltar" - "Flag for Greenland" - "Flag for Gambia" - "Flag for Guinea" - "Flag for Guadeloupe" - "Flag for Equatorial Guinea" - "Flag for Greece" - "Flag for South Georgia & South Sandwich Islands" - "Flag for Guatemala" - "Flag for Guam" - "Flag for Guinea-Bissau" - "Flag for Guyana" - "Flag for Hong Kong" - "Flag for Heard & McDonald Islands" - "Flag for Honduras" - "Flag for Croatia" - "Flag for Haiti" - "Flag for Hungary" - "Flag for Canary Islands" - "Flag for Indonesia" - "Flag for Ireland" - "Flag for Israel" - "Flag for Isle of Man" - "Flag for India" - "Flag for British Indian Ocean Territory" - "Flag for Iraq" - "Flag for Iran" - "Flag for Iceland" - "Flag for Italy" - "Flag for Jersey" - "Flag for Jamaica" - "Flag for Jordan" - "Flag for Japan" - "Flag for Kenya" - "Flag for Kyrgyzstan" - "Flag for Cambodia" - "Flag for Kiribati" - "Flag for Comoros" - "Flag for St. Kitts & Nevis" - "Flag for North Korea" - "Flag for South Korea" - "Flag for Kuwait" - "Flag for Cayman Islands" - "Flag for Kazakhstan" - "Flag for Laos" - "Flag for Lebanon" - "Flag for St. Lucia" - "Flag for Liechtenstein" - "Flag for Sri Lanka" - "Flag for Liberia" - "Flag for Lesotho" - "Flag for Lithuania" - "Flag for Luxembourg" - "Flag for Latvia" - "Flag for Libya" - "Flag for Morocco" - "Flag for Monaco" - "Flag for Moldova" - "Flag for Montenegro" - "Flag for St. Martin" - "Flag for Madagascar" - "Flag for Marshall Islands" - "Flag for Macedonia" - "Flag for Mali" - "Flag for Myanmar" - "Flag for Mongolia" - "Flag for Macau" - "Flag for Northern Mariana Islands" - "Flag for Martinique" - "Flag for Mauritania" - "Flag for Montserrat" - "Flag for Malta" - "Flag for Mauritius" - "Flag for Maldives" - "Flag for Malawi" - "Flag for Mexico" - "Flag for Malaysia" - "Flag for Mozambique" - "Flag for Namibia" - "Flag for New Caledonia" - "Flag for Niger" - "Flag for Norfolk Island" - "Flag for Nigeria" - "Flag for Nicaragua" - "Flag for Netherlands" - "Flag for Norway" - "Flag for Nepal" - "Flag for Nauru" - "Flag for Niue" - "Flag for New Zealand" - "Flag for Oman" - "Flag for Panama" - "Flag for Peru" - "Flag for French Polynesia" - "Flag for Papua New Guinea" - "Flag for Philippines" - "Flag for Pakistan" - "Flag for Poland" - "Flag for St. Pierre & Miquelon" - "Flag for Pitcairn Islands" - "Flag for Puerto Rico" - "Flag for Palestinian Territories" - "Flag for Portugal" - "Flag for Palau" - "Flag for Paraguay" - "Flag for Qatar" - "Flag for Réunion" - "Flag for Romania" - "Flag for Serbia" - "Flag for Russia" - "Flag for Rwanda" - "Flag for Saudi Arabia" - "Flag for Solomon Islands" - "Flag for Seychelles" - "Flag for Sudan" - "Flag for Sweden" - "Flag for Singapore" - "Flag for St. Helena" - "Flag for Slovenia" - "Flag for Svalbard & Jan Mayen" - "Flag for Slovakia" - "Flag for Sierra Leone" - "Flag for San Marino" - "Flag for Senegal" - "Flag for Somalia" - "Flag for Suriname" - "Flag for South Sudan" - "Flag for São Tomé & Príncipe" - "Flag for El Salvador" - "Flag for Sint Maarten" - "Flag for Syria" - "Flag for Swaziland" - "Flag for Tristan da Cunha" - "Flag for Turks & Caicos Islands" - "Flag for Chad" - "Flag for French Southern Territories" - "Flag for Togo" - "Flag for Thailand" - "Flag for Tajikistan" - "Flag for Tokelau" - "Flag for Timor-Leste" - "Flag for Turkmenistan" - "Flag for Tunisia" - "Flag for Tonga" - "Flag for Turkey" - "Flag for Trinidad & Tobago" - "Flag for Tuvalu" - "Flag for Taiwan" - "Flag for Tanzania" - "Flag for Ukraine" - "Flag for Uganda" - "Flag for U.S. Outlying Islands" - "Flag for United States" - "Flag for Uruguay" - "Flag for Uzbekistan" - "Flag for Vatican City" - "Flag for St. Vincent & Grenadines" - "Flag for Venezuela" - "Flag for British Virgin Islands" - "Flag for U.S. Virgin Islands" - "Flag for Vietnam" - "Flag for Vanuatu" - "Flag for Wallis & Futuna" - "Flag for Samoa" - "Flag for Kosovo" - "Flag for Yemen" - "Flag for Mayotte" - "Flag for South Africa" - "Flag for Zambia" - "Flag for Zimbabwe" - diff --git a/app/src/main/res/values-pa/strings-letter-descriptions.xml b/app/src/main/res/values-pa/strings-letter-descriptions.xml deleted file mode 100644 index 1707f47da4..0000000000 --- a/app/src/main/res/values-pa/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "ਜ਼ਨਾਨਾ ਕ੍ਰਮਵਾਚਕ ਸੂਚਕ" - "ਮਾਈਕ੍ਰੋ ਚਿੰਨ੍ਹ" - "ਮਰਦਾਵਾਂ ਕ੍ਰਮਵਾਚਕ ਸੂਚਕ" - "ਨਿਊਨ S" - "A, ਗਰੇਵ" - "A, ਨਿਊਨ" - "A, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ" - "A, ਲਹਿਰੀਆ ਡੈਸ਼" - "A, ਡਾਇਰੈਸਿਸ" - "A, ਉੱਪਰ ਅੰਗੂਠੀ" - "A, E, ਜੁੜਵਾਂ ਅੱਖਰ" - "C, ਸੈਡਿਲਾ" - "E, ਗਰੇਵ" - "E, ਨਿਊਨ" - "E, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ" - "E, ਡਾਇਰੈਸਿਸ" - "I, ਗਰੇਵ" - "I, ਨਿਊਨ" - "I, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ" - "I, ਡਾਇਰੈਸਿਸ" - "Eth" - "N, ਲਹਿਰੀਆ ਡੈਸ਼" - "O, ਗਰੇਵ" - "O, ਨਿਊਨ" - "O, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ" - "O, ਲਹਿਰੀਆ ਡੈਸ਼" - "O, ਡਾਇਰੈਸਿਸ" - "O, ਸਟ੍ਰੋਕ" - "U, ਗਰੇਵ" - "U, ਨਿਊਨ" - "U, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ" - "U, ਡਾਇਰੈਸਿਸ" - "Y, ਨਿਊਨ" - "ਕੰਡਾ" - "Y, ਡਾਇਰੈਸਿਸ" - "A, ਦੀਰਘ ਸਵਰ ਚਿੰਨ੍ਹ" - "A, ਬਰੀਵ" - "A, ਓਗੋਨੈਕ" - "C, ਨਿਊਨ" - "C, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ" - "C, ਉੱਪਰ ਬਿੰਦੀ" - "C, ਕੈਰਨ" - "D, ਕੈਰਨ" - "D, ਸਟ੍ਰੋਕ" - "E, ਦੀਰਘ ਸਵਰ ਚਿੰਨ੍ਹ" - "E, ਬਰੀਵ" - "E, ਉੱਪਰ ਬਿੰਦੀ" - "E, ਓਗੋਨੈਕ" - "E, ਕੈਰਨ" - "G, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ" - "G, ਬਰੀਵ" - "G, ਉੱਪਰ ਬਿੰਦੀ" - "G, ਸੈਡਿਲਾ" - "H, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ" - "H, ਸਟ੍ਰੋਕ" - "I, ਲਹਿਰੀਆ ਡੈਸ਼" - "I, ਦੀਰਘ ਸਵਰ ਚਿੰਨ੍ਹ" - "I, ਬਰੀਵ" - "I, ਓਗੋਨੈਕ" - "ਡੌਟਲੈਸ I" - "I, J, ਜੁੜਵਾਂ ਅੱਖਰ" - "J, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ" - "K, ਸੈਡਿਲਾ" - "ਕ੍ਰਾ" - "L, ਨਿਊਨ" - "L, ਸੈਡਿਲਾ" - "L, ਕੈਰਨ" - "L, ਵਿਚਾਲੇ ਬਿੰਦੀ" - "L, ਸਟ੍ਰੋਕ" - "N, ਨਿਊਨ" - "N, ਸੈਡਿਲਾ" - "N, ਕੈਰਨ" - "N, ਪਹਿਲਾਂ ਅੱਖਰ ਲੋਪ ਚਿੰਨ੍ਹ" - "ਅੰਗ੍ਰੇਜ਼ੀ" - "O, ਦੀਰਘ ਸਵਰ ਚਿੰਨ੍ਹ" - "O, ਬਰੀਵ" - "O, ਡਬਲ ਨਿਊਨ" - "O, E, ਜੁੜਵਾਂ ਅੱਖਰ" - "R, ਨਿਊਨ" - "R, ਸੈਡਿਲਾ" - "R, ਕੈਰਨ" - "S, ਨਿਊਨ" - "S, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ" - "S, ਸੈਡਿਲਾ" - "S, ਕੈਰਨ" - "T, ਸੈਡਿਲਾ" - "T, ਕੈਰਨ" - "T, ਸਟ੍ਰੋਕ" - "U, ਲਹਿਰੀਆ ਡੈਸ਼" - "U, ਦੀਰਘ ਸਵਰ ਚਿੰਨ੍ਹ" - "U, ਬਰੀਵ" - "U, ਉੱਪਰ ਅੰਗੂਠੀ" - "U, ਡਬਲ ਨਿਊਨ" - "U, ਓਗੋਨੈਕ" - "W, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ" - "Y, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ" - "Z, ਨਿਊਨ" - "Z, ਉੱਪਰ ਬਿੰਦੀ" - "Z, ਕੈਰਨ" - "ਲੰਮਾ S" - "O, ਸਿੰਗ" - "U, ਸਿੰਗ" - "S, ਹੇਠਾਂ ਕਾਮਾ" - "T, ਹੇਠਾਂ ਕਾਮਾ" - "ਲਘੂ ਸਵਰ ਧੁਨੀ" - "A, ਹੇਠਾਂ ਬਿੰਦੀ" - "A, ਉੱਪਰ ਹੁੱਕ" - "A, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ ਅਤੇ ਨਿਊਨ" - "A, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ ਅਤੇ ਗਰੇਵ" - "A, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ ਅਤੇ ਉੱਪਰ ਹੁੱਕ" - "A, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ ਅਤੇ ਲਹਿਰੀਆ ਡੈਸ਼" - "A, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ ਅਤੇ ਹੇਠਾਂ ਬਿੰਦੀ" - "A, ਬਰੀਵ ਅਤੇ ਨਿਊਨ" - "A, ਬਰੀਵ ਅਤੇ ਗਰੇਵ" - "A, ਬਰੀਵ ਅਤੇ ਉੱਪਰ ਹੁੱਕ" - "A, ਬਰੀਵ ਅਤੇ ਲਹਿਰੀਆ ਡੈਸ਼" - "A, ਬਰੀਵ ਅਤੇ ਹੇਠਾਂ ਬਿੰਦੀ" - "E, ਹੇਠਾਂ ਬਿੰਦੀ" - "E, ਉੱਪਰ ਹੁੱਕ" - "E, ਲਹਿਰੀਆ ਡੈਸ਼" - "E, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ ਅਤੇ ਨਿਊਨ" - "E, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ ਅਤੇ ਗਰੇਵ" - "E, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ ਅਤੇ ਉੱਪਰ ਹੁੱਕ" - "E, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ ਅਤੇ ਲਹਿਰੀਆ ਡੈਸ਼" - "E, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ ਅਤੇ ਹੇਠਾਂ ਬਿੰਦੀ" - "I, ਉੱਪਰ ਹੁੱਕ" - "I, ਹੇਠਾਂ ਬਿੰਦੀ" - "O, ਹੇਠਾਂ ਬਿੰਦੀ" - "O, ਉੱਪਰ ਹੁੱਕ" - "O, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ ਅਤੇ ਨਿਊਨ" - "O, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ ਅਤੇ ਗਰੇਵ" - "O, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ ਅਤੇ ਉੱਪਰ ਹੁੱਕ" - "O, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ ਅਤੇ ਲਹਿਰੀਆ ਡੈਸ਼" - "O, ਦੀਰਘਤਾ ਸੂਚਕ ਚਿੰਨ੍ਹ ਅਤੇ ਹੇਠਾਂ ਬਿੰਦੀ" - "O, ਸਿੰਗ ਅਤੇ ਨਿਊਨ" - "O, ਸਿੰਗ ਅਤੇ ਗਰੇਵ" - "O, ਸਿੰਗ ਅਤੇ ਉੱਪਰ ਹੁੱਕ" - "O, ਸਿੰਗ ਅਤੇ ਲਹਿਰੀਆ ਡੈਸ਼" - "O, ਸਿੰਗ ਅਤੇ ਹੇਠਾਂ ਬਿੰਦੀ" - "U, ਹੇਠਾਂ ਬਿੰਦੀ" - "U, ਉੱਪਰ ਹੁੱਕ" - "U, ਸਿੰਗ ਅਤੇ ਨਿਊਨ" - "U, ਸਿੰਗ ਅਤੇ ਗਰੇਵ" - "U, ਸਿੰਗ ਅਤੇ ਉੱਪਰ ਹੁੱਕ" - "U, ਸਿੰਗ ਅਤੇ ਲਹਿਰੀਆ ਡੈਸ਼" - "U, ਸਿੰਗ ਅਤੇ ਹੇਠਾਂ ਬਿੰਦੀ" - "Y, ਗਰੇਵ" - "Y, ਹੇਠਾਂ ਬਿੰਦੀ" - "Y, ਉੱਪਰ ਹੁੱਕ" - "Y, ਲਹਿਰੀਆ ਡੈਸ਼" - "ਇਨਵਰਟਿਡ ਵਿਸਮਿਕ ਚਿੰਨ੍ਹ" - "ਖੱਬੇ-ਸੰਕੇਤ ਦੇਣ ਵਾਲਾ ਡਬਲ ਕੋਣ ਉਕਤੀ ਚਿੰਨ੍ਹ" - "ਵਿਚਾਲੇ ਬਿੰਦੀ" - "ਉੱਪਰ ਅੰਕਿਤ ਇੱਕ" - "ਸੱਜੇ-ਸੰਕੇਤ ਦੇਣ ਵਾਲਾ ਡਬਲ ਕੋਣ ਉਕਤੀ ਚਿੰਨ੍ਹ" - "ਇਨਵਰਟਿਡ ਪ੍ਰਸ਼ਨ ਚਿੰਨ੍ਹ" - "ਖੱਬੇ ਪਾਸੇ ਸਿੰਗਲ ਉਕਤੀ ਚਿੰਨ੍ਹ" - "ਸੱਜੇ ਪਾਸੇ ਸਿੰਗਲ ਉਕਤੀ ਚਿੰਨ੍ਹ" - "ਸਿੰਗਲ ਛੋਟਾ-9 ਉਕਤੀ ਚਿੰਨ੍ਹ" - "ਖੱਬੇ ਪਾਸੇ ਡਬਲ ਉਕਤੀ ਚਿੰਨ੍ਹ" - "ਸੱਜੇ ਪਾਸੇ ਡਬਲ ਉਕਤੀ ਚਿੰਨ੍ਹ" - "ਛੁਰਾ" - "ਡਬਲ ਛੁਰਾ" - "ਪ੍ਰਤੀ ਮਿਲੀ ਚਿੰਨ੍ਹ" - "ਪ੍ਰਾਈਮ" - "ਡਬਲ ਪ੍ਰਾਈਮ" - "ਸਿੰਗਲ ਖੱਬੇ-ਸੰਕੇਤ ਦੇਣ ਵਾਲਾ ਕੋਣ ਉਕਤੀ ਚਿੰਨ੍ਹ" - "ਸਿੰਗਲ ਸੱਜੇ-ਸੰਕੇਤ ਦੇਣ ਵਾਲਾ ਕੋਣ ਉਕਤੀ ਚਿੰਨ੍ਹ" - "ਉੱਪਰ ਅੰਕਿਤ ਚਾਰ" - "ਉੱਪਰ ਅੰਕਿਤ ਲਾਤੀਨੀ ਛੋਟਾ ਅੱਖਰ n" - "ਪੇਸੋ ਚਿੰਨ੍ਹ" - "ਇਸਦੇ ਪਤੇ ਤੇ" - "ਸੱਜੇ ਪਾਸੇ ਵੱਲ ਤੀਰ ਦਾ ਨਿਸ਼ਾਨ" - "ਹੇਠਾਂ ਵੱਲ ਤੀਰ ਦਾ ਨਿਸ਼ਾਨ" - "ਖਾਲੀ ਸੈਟ" - "ਵਿਸਤਾਰ" - "ਇਸਤੋਂ-ਘੱਟ ਜਾਂ ਇਸਦੇ ਬਰਾਬਰ" - "ਇਸਤੋਂ-ਵੱਧ ਜਾਂ ਇਸਦੇ ਬਰਾਬਰ" - "ਕਾਲਾ ਤਾਰਾ" - diff --git a/app/src/main/res/values-pa/strings-talkback-descriptions.xml b/app/src/main/res/values-pa/strings-talkback-descriptions.xml index 39b6805984..3a71287904 100644 --- a/app/src/main/res/values-pa/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-pa/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "ਉੱਚੀ ਬੋਲੀਆਂ ਗਈਆਂ ਪਾਸਵਰਡ ਕੁੰਜੀਆਂ ਸੁਣਨ ਲਈ ਇੱਕ ਹੈਡਸੈੱਟ ਪਲੱਗ-ਇਨ ਕਰੋ।" - "ਮੌਜੂਦਾ ਟੈਕਸਟ %s ਹੈ" - "ਕੋਈ ਟੈਕਸਟ ਦਰਜ ਨਹੀਂ ਕੀਤਾ" - "%1$s %2$s ਦਾ %3$s ਵਿੱਚ ਸੋਧ ਕਰਦਾ ਹੈ" - "%1$s ਆਟੋ-ਸੁਧਾਈ ਕਰਦੀ ਹੈ" - "ਕੋਈ ਸੁਝਾਅ ਨਹੀਂ" - "ਅਗਿਆਤ ਅੱਖਰ" - "ਸ਼ਿਫਟ ਕੁੰਜੀ" - "ਹੋਰ ਚਿੰਨ੍ਹ" - "ਸ਼ਿਫਟ ਕੁੰਜੀ" - "ਚਿੰਨ੍ਹ" - "ਸ਼ਿਫਟ ਕੁੰਜੀ" - "ਮਿਟਾਓ" - "ਚਿੰਨ੍ਹ" - "ਅੱਖਰ" - "ਨੰਬਰ" - "ਸੈਟਿੰਗਾਂ" - "ਟੈਬ" - "ਸਪੇਸ" - "ਵੌਇਸ ਇਨਪੁਟ" - "ਇਮੋਜੀ" - "ਵਾਪਸ ਜਾਓ" - "ਖੋਜੋ" - "ਬਿੰਦੀ" - "ਭਾਸ਼ਾ ਸਵਿੱਚ ਕਰੋ" - "ਅੱਗੇ" - "ਪਿਛਲਾ" - "ਸ਼ਿਫਟ ਕੁੰਜੀ ਚਾਲੂ" - "ਕੈਪਸ ਲਾਕ ਸਮਰਥਿਤ" - "ਚਿੰਨ੍ਹ ਮੋਡ" - "ਹੋਰ ਚਿੰਨ੍ਹ ਮੋਡ" - "ਅੱਖਰ ਮੋਡ" - "ਫ਼ੋਨ ਮੋਡ" - "ਫ਼ੋਨ ਚਿੰਨ੍ਹ ਮੋਡ" - "ਕੀ-ਬੋਰਡ ਲੁਕਾਇਆ" - "%s ਕੀ-ਬੋਰਡ ਦਿਖਾ ਰਿਹਾ ਹੈ" - "ਮਿਤੀ" - "ਮਿਤੀ ਅਤੇ ਸਮਾਂ" - "ਈਮੇਲ" - "ਮੈਸੇਂਜ਼ਿੰਗ" - "ਨੰਬਰ" - "ਫ਼ੋਨ" - "ਟੈਕਸਟ" - "ਸਮਾਂ" - "URL" - "ਹਾਲੀਆ" - "ਲੋਕ" - "ਵਸਤਾਂ" - "ਕੁਦਰਤ" - "ਥਾਂਵਾਂ" - "ਚਿੰਨ੍ਹ" - "ਫਲੈਗ" - "ਸਮਾਈਲੀ & ਲੋਕ" - "ਜਾਨਵਰ & ਕੁਦਰਤ" - "ਖਾਣਾ & ਪੀਣਾ" - "ਯਾਤਰਾ & ਥਾਂਵਾਂ" - "ਸਰਗਰਮੀ" - "ਇਮੋਟੀਕੋਨਸ" - "ਕੈਪੀਟਲ %s" - "ਕੈਪੀਟਲ I" - "ਕੈਪੀਟਲ I, ਉੱਪਰ ਬਿੰਦੀ" - "ਅਗਿਆਤ ਚਿੰਨ੍ਹ" - "ਅਗਿਆਤ ਇਮੋਜੀ" - "ਅਕੇਵੇਂ ਵਾਲਾ ਚਿਹਰਾ" - "ਪਰੇਸ਼ਾਨ ਚਿਹਰਾ" - "ਧੁੱਪ ਦੀਆਂ ਐਨਕਾਂ ਪਹਿਨਿਆ ਹੋਇਆ ਚਿਹਰਾ" - "ਹੈਰਾਨਕੁੰਨ ਚਿਹਰਾ" - "ਚੁੰਮੀ ਵਾਲਾ ਚਿਹਰਾ" - "ਤਿਉੜੀ ਚੜ੍ਹਾਉਂਦਾ ਚਿਹਰਾ" - "ਬਦਲਵੇਂ ਅੱਖਰ ਉਪਲਬਧ ਹਨ" - "ਬਦਲਵੇਂ ਅੱਖਰ ਖਾਰਜ ਕੀਤੇ ਗਏ ਹਨ" - "ਬਦਲਵੇਂ ਸੁਝਾਅ ਉਪਲਬਧ ਹਨ" - "ਬਦਲਵੇਂ ਸੁਝਾਅ ਬਰਖਾਸਤ ਕੀਤੇ ਗਏ ਹਨ" + + + "ਉੱਚੀ ਬੋਲੀਆਂ ਗਈਆਂ ਪਾਸਵਰਡ ਕੁੰਜੀਆਂ ਸੁਣਨ ਲਈ ਇੱਕ ਹੈਡਸੈੱਟ ਪਲੱਗ-ਇਨ ਕਰੋ।" + "ਮੌਜੂਦਾ ਟੈਕਸਟ %s ਹੈ" + "ਕੋਈ ਟੈਕਸਟ ਦਰਜ ਨਹੀਂ ਕੀਤਾ" + "%1$s %2$s ਦਾ %3$s ਵਿੱਚ ਸੋਧ ਕਰਦਾ ਹੈ" + "%1$s ਆਟੋ-ਸੁਧਾਈ ਕਰਦੀ ਹੈ" + "ਕੋਈ ਸੁਝਾਅ ਨਹੀਂ" + "ਅਗਿਆਤ ਅੱਖਰ" + "ਸ਼ਿਫਟ ਕੁੰਜੀ" + "ਹੋਰ ਚਿੰਨ੍ਹ" + "ਸ਼ਿਫਟ ਕੁੰਜੀ" + "ਚਿੰਨ੍ਹ" + "ਸ਼ਿਫਟ ਕੁੰਜੀ" + "ਮਿਟਾਓ" + "ਚਿੰਨ੍ਹ" + "ਅੱਖਰ" + "ਨੰਬਰ" + "ਸੈਟਿੰਗਾਂ" + "ਟੈਬ" + "ਸਪੇਸ" + "ਵੌਇਸ ਇਨਪੁਟ" + "ਇਮੋਜੀ" + "ਵਾਪਸ ਜਾਓ" + "ਖੋਜੋ" + "ਬਿੰਦੀ" + "ਭਾਸ਼ਾ ਸਵਿੱਚ ਕਰੋ" + "ਅੱਗੇ" + "ਪਿਛਲਾ" + "ਸ਼ਿਫਟ ਕੁੰਜੀ ਚਾਲੂ" + "ਕੈਪਸ ਲਾਕ ਸਮਰਥਿਤ" + "ਚਿੰਨ੍ਹ ਮੋਡ" + "ਹੋਰ ਚਿੰਨ੍ਹ ਮੋਡ" + "ਅੱਖਰ ਮੋਡ" + "ਫ਼ੋਨ ਮੋਡ" + "ਫ਼ੋਨ ਚਿੰਨ੍ਹ ਮੋਡ" + "ਕੀ-ਬੋਰਡ ਲੁਕਾਇਆ" + "%s ਕੀ-ਬੋਰਡ ਦਿਖਾ ਰਿਹਾ ਹੈ" + "ਮਿਤੀ" + "ਮਿਤੀ ਅਤੇ ਸਮਾਂ" + "ਈਮੇਲ" + "ਮੈਸੇਂਜ਼ਿੰਗ" + "ਨੰਬਰ" + "ਫ਼ੋਨ" + "ਟੈਕਸਟ" + "ਸਮਾਂ" + "URL" + "ਹਾਲੀਆ" + "ਵਸਤਾਂ" + "ਚਿੰਨ੍ਹ" + "ਫਲੈਗ" + "ਸਮਾਈਲੀ & ਲੋਕ" + "ਜਾਨਵਰ & ਕੁਦਰਤ" + "ਖਾਣਾ & ਪੀਣਾ" + "ਯਾਤਰਾ & ਥਾਂਵਾਂ" + "ਸਰਗਰਮੀ" + "ਇਮੋਟੀਕੋਨਸ" + "ਕੈਪੀਟਲ %s" + "ਕੈਪੀਟਲ I" + "ਕੈਪੀਟਲ I, ਉੱਪਰ ਬਿੰਦੀ" + "ਬਦਲਵੇਂ ਅੱਖਰ ਉਪਲਬਧ ਹਨ" + "ਬਦਲਵੇਂ ਅੱਖਰ ਖਾਰਜ ਕੀਤੇ ਗਏ ਹਨ" + "ਬਦਲਵੇਂ ਸੁਝਾਅ ਉਪਲਬਧ ਹਨ" + "ਬਦਲਵੇਂ ਸੁਝਾਅ ਬਰਖਾਸਤ ਕੀਤੇ ਗਏ ਹਨ" diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index bf60ed62cb..6a97659f52 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -1,193 +1,106 @@ - - - - - "ਇਨਪੁਟ ਚੋਣਾਂ" - "ਸੰਪਰਕ ਨਾਮ ਤਲਾਸ਼ੋ" - "ਸਪੈੱਲ ਚੈਕਰ ਤੁਹਾਡੀ ਸੰਪਰਕ ਸੂਚੀ ਵਿੱਚੋਂ ਐਂਟਰੀਆਂ ਵਰਤਦਾ ਹੈ" - "ਕੁੰਜੀ ਦਬਾਉਣ ’ਤੇ ਥਰਥਰਾਹਟ ਕਰੋ" - "ਕੁੰਜੀ ਦਬਾਉਣ \'ਤੇ ਧੁਨ ਵਜਾਓ" - "ਕੁੰਜੀ ਦਬਾਉਣ ’ਤੇ ਪੌਪਅੱਪ ਕਰੋ" - "ਤਰਜੀਹਾਂ" - "ਖਾਤੇ & ਪ੍ਰਾਈਵੇਸੀ" - "ਪ੍ਰਗਟਾਅ & ਲੇਆਉਟਸ" - "ਸੰਕੇਤ ਟਾਈਪਿੰਗ" - "ਟੈਕਸਟ ਸੁਧਾਈ" - "ਵਿਕਸਿਤ" - "ਥੀਮ" - "ਸਪਲਿਟ ਕੀ-ਬੋਰਡ ਨੂੰ ਚਾਲੂ ਕਰੋ" - "ਹੋਰਾਂ ਇਨਪੁੱਟ ਵਿਧੀਆਂ ਤੇ ਸਵਿੱਚ ਕਰੋ" - "ਭਾਸ਼ਾ ਸਵਿੱਚ ਕੁੰਜੀ ਹੋਰਾਂ ਇਨਪੁੱਟ ਵਿਧੀਆਂ ਨੂੰ ਵੀ ਸ਼ਾਮਲ ਕਰਦੀ ਹੈ" - "ਭਾਸ਼ਾ ਸਵਿੱਚ ਕੁੰਜੀ" - "ਜਦੋਂ ਮਲਟੀਪਲ ਭਾਸਾਵਾਂ ਸਮਰਥਿਤ ਹੋਣ ਤਾਂ ਦਿਖਾਓ" - "ਕੁੰਜੀ ਪੌਪਅੱਪ ਖਾਰਜ ਦੇਰੀ" - "ਕੋਈ ਦੇਰੀ ਨਹੀਂ" - "ਪੂਰਵ-ਨਿਰਧਾਰਤ" - "%sms" - "ਸਿਸਟਮ ਪੂਰਵ-ਨਿਰਧਾਰਤ" - "ਸੰਪਰਕ ਨਾਵਾਂ ਦਾ ਸੁਝਾਅ ਦਿਓ" - "ਸੁਝਾਵਾਂ ਅਤੇ ਸੋਧਾਂ ਲਈ ਸੰਪਰਕਾਂ ਵਿੱਚੋਂ ਨਾਮ ਵਰਤੋ" - "ਨਿੱਜੀ ਬਣਾਏ ਸੁਝਾਅ" - "%s ਸੁਧਾਰ ਕਰੋ" - "ਡਬਲ-ਸਪੇਸ ਡੰਡੀ" - "ਸਪੇਸਬਾਰ ’ਤੇ ਡਬਲ ਟੈਪ ਕਰਨਾ ਇੱਕ ਡੰਡੀ ਤੋਂ ਬਾਅਦ ਇੱਕ ਸਪੇਸ ਦਾਖਲ ਕਰਦਾ ਹੈ" - "ਆਟੋ-ਕੈਪਿਟਲਾਈਜ਼ੇਸ਼ਨ" - "ਹਰੇਕ ਵਾਕ ਦਾ ਪਹਿਲਾ ਅੱਖਰ ਵੱਡਾ ਕਰੋ" - "ਨਿੱਜੀ ਸ਼ਬਦਕੋਸ਼" - "ਐਡ-ਆਨ ਸ਼ਬਦਕੋਸ਼" - "ਮੁੱਖ ਸ਼ਬਦਕੋਸ਼" - "ਸੁਧਾਈ ਸੁਝਾਅ ਦਿਖਾਓ" - "ਟਾਈਪਿੰਗ ਕਰਦੇ ਸਮੇਂ ਸੁਝਾਏ ਗਏ ਸ਼ਬਦ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੋ" - "ਅਪਮਾਨਜਨਕ ਸ਼ਬਦਾਂ ਨੂੰ ਬਲਾਕ ਕਰੋ" - "ਸੰਭਾਵੀ ਅਪਮਾਨਜਨਕ ਸ਼ਬਦਾਂ ਦਾ ਸੁਝਾਅ ਨਾ ਦਿਓ" - "ਆਟੋ-ਸੁਧਾਈ" - "ਸਪੇਸਬਾਰ ਅਤੇ ਵਿਸ਼ਰਾਮ ਚਿੰਨ੍ਹ ਗ਼ਲਤ ਟਾਈਪ ਕੀਤੇ ਸ਼ਬਦਾਂ ਨੂੰ ਆਟੋਮੈਟਿਕਲੀ ਠੀਕ ਕਰਦੇ ਹਨ" - "ਬੰਦ" - "ਸੰਕੋਚਵਾਨ" - "ਆਕਰਮਣਸ਼ੀਲ" - "ਬਹੁਤ ਆਕਰਮਣਸ਼ੀਲ" - "ਅਗਲਾ-ਸ਼ਬਦ ਸੁਝਾਅ" - "ਸੁਝਾਅ ਦੇਣ ਵਿੱਚ ਪਿਛਲਾ ਸ਼ਬਦ ਵਰਤੋ" - "ਸੰਕੇਤ ਟਾਈਪਿੰਗ ਚਾਲੂ ਕਰੋ" - "ਅੱਖਰਾਂ ਰਾਹੀਂ ਸਲਾਈਡ ਕਰਕੇ ਇੱਕ ਸ਼ਬਦ ਦਾਖਲ ਕਰੋ" - "ਸੰਕੇਤ ਲੀਹ ਦਿਖਾਓ" - "ਸਕਿਰਿਆ ਫਲੋਟਿੰਗ ਪੂਰਵ-ਝਲਕ" - "ਸੰਕੇਤ ਦਿੰਦੇ ਸਮੇਂ ਸੁਝਾਇਆ ਗਿਆ ਸ਼ਬਦ ਦੇਖੋ" - "ਵਾਕਾਂਸ਼ ਸੰਕੇਤ" - "ਸਪੇਸ ਕੁੰਜੀ ਸਰਕਾ ਕੇ ਸੰਕੇਤਾਂ ਦੇ ਦੌਰਾਨ ਸਪੇਸ ਇਨਪੁਟ ਕਰੋ" - "ਅਵਾਜ਼ੀ ਇਨਪੁੱਟ ਕੁੰਜੀ" - "ਕੋਈ ਵੌਇਸ ਇਨਪੁੱਟ ਵਿਧੀਆਂ ਚਾਲੂ ਨਹੀਂ ਕੀਤੀਆਂ ਹਨ। ਭਾਸ਼ਾਵਾਂ ਅਤੇ ਇਨਪੁੱਟ ਸੈਟਿੰਗਾਂ ਦੀ ਜਾਂਚ ਕਰੋ।" - "ਇਨਪੁੱਟ ਵਿਧੀਆਂ ਦੀ ਰੂਪ-ਰੇਖਾ ਬਦਲੋ" - "ਭਾਸ਼ਾਵਾਂ" - "ਮਦਦ & ਫੀਡਬੈਕ" - "ਭਾਸ਼ਾਵਾਂ" - "ਰੱਖਿਅਤ ਕਰਨ ਲਈ ਦੁਬਾਰਾ ਟੈਪ ਕਰੋ" - "ਰੱਖਿਅਤ ਕਰਨ ਲਈ ਇੱਥੇ ਟੈਪ ਕਰੋ" - "ਸ਼ਬਦਕੋਸ਼ ਉਪਲਬਧ" - "ਕੀ-ਬੋਰਡ ਥੀਮ" - "ਖਾਤੇ ਸਵਿੱਚ ਕਰੋ" - "ਕੋਈ ਖਾਤੇ ਨਹੀਂ ਚੁਣੇ" - "ਇਸ ਵੇਲੇ %1$s ਵਰਤ ਰਿਹਾ ਹੈ" - "ਠੀਕ" - "ਰੱਦ ਕਰੋ" - "ਸਾਈਨ-ਆਊਟ ਕਰੋ" - "ਵਰਤਣ ਲਈ ਇੱਕ ਖਾਤਾ ਚੁਣੋ" - "ਅੰਗ੍ਰੇਜ਼ੀ (ਯੂਕੇ)" - "ਅੰਗ੍ਰੇਜੀ (ਅਮਰੀਕਾ)" - "ਸਪੇਨੀ (ਅਮਰੀਕਾ)" - "ਹਿੰਗਲਿੰਸ਼" - "ਸਰਬੀਅਨ (ਲਾਤੀਨੀ)" - "ਅੰਗਰੇਜ਼ੀ (ਯੂ.ਕੇ.) (%s)" - "ਅੰਗਰੇਜ਼ੀ (ਅਮਰੀਕਾ) (%s)" - "ਸਪੇਨੀ (ਅਮਰੀਕਾ) (%s)" - "ਹਿੰਗਲਿਸ਼(%s)" - "ਸਰਬੀਅਨ (%s)" - "%s (ਪਰੰਪਰਿਕ)" - "%s (ਸੰਖਿਪਤ)" - "ਕੋਈ ਭਾਸ਼ਾ ਨਹੀਂ (ਵਰਨਮਾਲਾ)" - "ਵਰਨਮਾਲਾ (QWERTY)" - "ਵਰਨਮਾਲਾ (QWERTZ)" - "ਵਰਨਮਾਲਾ (AZERTY)" - "ਵਰਨਮਾਲਾ (ਵੋਰਕ)" - "ਵਰਨਮਾਲਾ (ਕੋਲਮੈਕ)" - "ਵਰਨਮਾਲਾ (PC)" - "ਇਮੋਜੀ" - "ਕੀ-ਬੋਰਡ ਥੀਮ" - "ਵਿਉਂਤੀ ਇਨਪੁੱਟ ਸ਼ੈਲੀ" - "ਸਟਾਈਲ ਸ਼ਾਮਲ ਕਰੋ" - "ਸ਼ਾਮਲ ਕਰੋ" - "ਹਟਾਓ" - "ਰੱਖਿਅਤ ਕਰੋ" - "ਭਾਸ਼ਾ" - "ਲੇਆਉਟ" - "ਤੁਹਾਡੀ ਵਿਉਂਂਤੀ ਇਨਪੁੱਟ ਸ਼ੈਲੀ ਵਰਤਣਾ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਤੁਹਾਨੂੰ ਇਸਨੂੰ ਸਮਰੱਥ ਬਣਾਉਣ ਪਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਹੁਣ ਇਸਨੂੰ ਸਮਰੱਥ ਬਣਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?" - "ਚਾਲੂ ਕਰੋ" - "ਅਜੇ ਨਹੀਂ" - "ਸਮਾਨ ਇਨਪੁਟ ਸਟਾਈਲ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ: %s" - "ਕੀਪ੍ਰੈਸ ਵਾਈਬ੍ਰੇਸ਼ਨ ਮਿਆਦ" - "ਕੀਪ੍ਰੈਸ ਅਵਾਜ਼ ਵੌਲਿਊਮ" - "ਕੁੰਜੀ ਦਬਾਈ ਰੱਖਣ ਦੀ ਮਿਆਦ" - "ਭੌਤਿਕ ਕੀ-ਬੋਰਡ ਲਈ ਇਮੋਜੀ" - "ਭੌਤਿਕ Alt ਕੁੰਜੀ ਇਮੋਜੀ ਪੈਲੇਟ ਦਿਖਾਉਂਦੀ ਹੈ" - "ਪੂਰਵ-ਨਿਰਧਾਰਤ" - "%s ਤੇ ਸੁਆਗਤ ਹੈ" - "ਸੰਕੇਤ ਟਾਈਪਿੰਗ ਨਾਲ" - "ਸ਼ੁਰੂਆਤ ਕਰੋ" - "ਅਗਲਾ ਸਟੈਪ" - "%s ਸੈਟ ਅਪ ਕਰ ਰਿਹਾ ਹੈ" - "%s ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ" - "ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੀਆਂ ਭਾਸ਼ਾਵਾਂ ਅਤੇ ਇਨਪੁੱਟ ਸੈਟਿੰਗਾਂ ਵਿੱਚ \"%s\" \'ਤੇ ਸਹੀ ਦਾ ਨਿਸ਼ਾਨ ਲਗਾਓ। ਇਹ ਉਸ ਨੂੰ ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਚੱਲਣ ਲਈ ਅਧਿਕਾਰਿਤ ਕਰੇਗਾ।" - "%s ਨੂੰ ਪਹਿਲਾਂ ਹੀ ਤੁਹਾਡੀਆਂ ਭਾਸ਼ਾਵਾਂ ਅਤੇ ਇਨਪੁੱਟ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਚਾਲੂ ਕੀਤਾ ਗਿਆ ਹੈ, ਇਸ ਲਈ ਇਹ ਪੜਾਅ ਪੂਰਾ ਹੋ ਗਿਆ ਹੈ। ਅਗਲੇ ਪੜਾਅ \'ਤੇ ਜਾਓ!" - "ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਚਾਲੂ ਕਰੋ" - "%s \'ਤੇ ਸਵਿੱਚ ਕਰੋ" - "ਫਿਰ, \"%s\" ਨੂੰ ਆਪਣੀ ਕਿਰਿਆਸ਼ੀਲ ਲਿਖਤ-ਇਨਪੁੱਟ ਵਿਧੀ ਦੇ ਤੌਰ ਤੇ ਚੁਣੋ।" - "ਇਨਪੁੱਟ ਵਿਧੀਆਂ ਸਵਿੱਚ ਕਰੋ" - "ਵਧਾਈ ਹੋਵੇ, ਤੁਸੀਂ ਸਾਰਾ ਸੈਟ ਕਰ ਲਿਆ ਹੈ!" - "ਹੁਣ ਤੁਸੀਂ %s ਨਾਲ ਆਪਣੇ ਸਾਰੇ ਮਨਪਸੰਦ ਐਪਸ ਨੂੰ ਟਾਈਪ ਕਰ ਸਕਦੇ ਹੋ।" - "ਵਾਧੂ ਭਾਸ਼ਾਵਾਂ ਦੀ ਰੂਪ-ਰੇਖਾ ਬਦਲੋ" - "ਪੂਰਾ ਹੋਇਆ" - "ਐਪ ਪ੍ਰਤੀਕ ਦਿਖਾਓ" - "ਲਾਂਚਰ ਵਿੱਚ ਐਪਲੀਕੇਸ਼ਨ ਪ੍ਰਤੀਕ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੋ" - "ਸ਼ਬਦਕੋਸ਼ ਪ੍ਰਦਾਤਾ" - "ਸ਼ਬਦਕੋਸ਼ ਪ੍ਰਦਾਤਾ" - "ਸ਼ਬਦਕੋਸ਼ ਸੇਵਾ" - "ਸ਼ਬਦਕੋਸ਼ ਅੱਪਡੇਟ ਜਾਣਕਾਰੀ" - "ਐਡ-ਆਨ ਸ਼ਬਦਕੋਸ਼" - "ਸ਼ਬਦਕੋਸ਼ਾਂ ਦੀਆਂ ਸੈਟਿੰਗਾਂ" - "ਉਪਭੋਗਤਾ ਸ਼ਬਦਕੋਸ਼" - "ਉਪਭੋਗਤਾ ਸ਼ਬਦਕੋਸ਼" - "ਸ਼ਬਦਕੋਸ਼ ਉਪਲਬਧ" - "ਇਸ ਵੇਲੇ ਡਾਊਨਲੋਡ ਕਰ ਰਿਹਾ ਹੈ" - "ਇੰਸਟੌਲ ਕੀਤਾ" - "ਇੰਸਟੌਲ ਕੀਤਾ, ਅਸਮਰਥਿਤ" - "ਸ਼ਬਦਕੋਸ਼ ਸੇਵਾ ਕਨੈਕਟ ਕਰਨ ਵਿੱਚ ਸਮੱਸਿਆ" - "ਕੋਈ ਸ਼ਬਦਕੋਸ਼ ਉਪਲਬਧ ਨਹੀਂ" - "ਤਾਜ਼ਾ" - "ਆਖਰੀ ਵਾਰ ਅੱਪਡੇਟ ਕੀਤਾ" - "ਅਪਡੇਟਸ ਦੀ ਜਾਂਚ ਕਰ ਰਿਹਾ ਹੈ" - "ਲੋਡ ਕਰ ਰਿਹਾ ਹੈ…" - "ਮੁੱਖ ਸ਼ਬਦਕੋਸ਼" - "ਰੱਦ ਕਰੋ" - "ਸੈਟਿੰਗਾਂ" - "ਸਥਾਪਤ ਕਰੋ" - "ਰੱਦ ਕਰੋ" - "ਮਿਟਾਓ" - "ਰੂਪ %1$s" - "ਸ਼ਾਮਲ ਕਰੋ" - "ਸ਼ਬਦਕੋਸ਼ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ" - "ਵਾਕਾਂਸ਼" - "ਹੋਰ ਚੋਣਾਂ" - "ਘੱਟ ਚੋਣਾਂ" - "ਠੀਕ" - "ਸ਼ਬਦ:" - "ਸ਼ਾਰਟਕੱਟ:" - "ਭਾਸ਼ਾ:" - "ਇੱਕ ਸ਼ਬਦ ਟਾਈਪ ਕਰੋ" - "ਵਿਕਲਪਕ ਸ਼ਾਰਟਕੱਟ" - "ਸ਼ਬਦ ਦਾ ਸੰਪਾਦਨ ਕਰੋ" - "ਸੰਪਾਦਨ ਕਰੋ" - "ਮਿਟਾਓ" - "ਤੁਹਾਡੇ ਕੋਲ ਵਰਤੋਂਕਾਰ ਸ਼ਬਦਕੋਸ਼ ਵਿੱਚ ਕੋਈ ਸ਼ਬਦ ਨਹੀਂ ਹਨ। ਇੱਕ ਸ਼ਬਦ ਸ਼ਾਮਲ ਕਰਨ ਲਈ \'ਸ਼ਾਮਲ ਕਰੋ\' (+) ਬਟਨ \'ਤੇ ਟੈਪ ਕਰੋ।" - "ਸਾਰੀਆਂ ਭਾਸ਼ਾਵਾਂ ਲਈ" - "ਹੋਰ ਭਾਸ਼ਾਵਾਂ…" - "ਮਿਟਾਓ" - " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + + "ਸੰਪਰਕ ਨਾਮ ਤਲਾਸ਼ੋ" + "ਕੁੰਜੀ ਦਬਾਉਣ ’ਤੇ ਥਰਥਰਾਹਟ ਕਰੋ" + "ਕੁੰਜੀ ਦਬਾਉਣ \'ਤੇ ਧੁਨ ਵਜਾਓ" + "ਕੁੰਜੀ ਦਬਾਉਣ ’ਤੇ ਪੌਪਅੱਪ ਕਰੋ" + "ਤਰਜੀਹਾਂ" + "ਸੰਕੇਤ ਟਾਈਪਿੰਗ" + "ਟੈਕਸਟ ਸੁਧਾਈ" + "ਵਿਕਸਿਤ" + "ਥੀਮ" + "ਸਪਲਿਟ ਕੀ-ਬੋਰਡ ਨੂੰ ਚਾਲੂ ਕਰੋ" + "ਹੋਰਾਂ ਇਨਪੁੱਟ ਵਿਧੀਆਂ ਤੇ ਸਵਿੱਚ ਕਰੋ" + "ਭਾਸ਼ਾ ਸਵਿੱਚ ਕੁੰਜੀ" + "%sms" + "ਸਿਸਟਮ ਪੂਰਵ-ਨਿਰਧਾਰਤ" + "ਸੁਝਾਵਾਂ ਅਤੇ ਸੋਧਾਂ ਲਈ ਸੰਪਰਕਾਂ ਵਿੱਚੋਂ ਨਾਮ ਵਰਤੋ" + "ਨਿੱਜੀ ਬਣਾਏ ਸੁਝਾਅ" + "ਡਬਲ-ਸਪੇਸ ਡੰਡੀ" + "ਸਪੇਸਬਾਰ ’ਤੇ ਡਬਲ ਟੈਪ ਕਰਨਾ ਇੱਕ ਡੰਡੀ ਤੋਂ ਬਾਅਦ ਇੱਕ ਸਪੇਸ ਦਾਖਲ ਕਰਦਾ ਹੈ" + "ਆਟੋ-ਕੈਪਿਟਲਾਈਜ਼ੇਸ਼ਨ" + "ਹਰੇਕ ਵਾਕ ਦਾ ਪਹਿਲਾ ਅੱਖਰ ਵੱਡਾ ਕਰੋ" + "ਨਿੱਜੀ ਸ਼ਬਦਕੋਸ਼" + "ਮੁੱਖ ਸ਼ਬਦਕੋਸ਼" + "ਸੁਧਾਈ ਸੁਝਾਅ ਦਿਖਾਓ" + "ਟਾਈਪਿੰਗ ਕਰਦੇ ਸਮੇਂ ਸੁਝਾਏ ਗਏ ਸ਼ਬਦ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੋ" + "ਅਪਮਾਨਜਨਕ ਸ਼ਬਦਾਂ ਨੂੰ ਬਲਾਕ ਕਰੋ" + "ਸੰਭਾਵੀ ਅਪਮਾਨਜਨਕ ਸ਼ਬਦਾਂ ਦਾ ਸੁਝਾਅ ਨਾ ਦਿਓ" + "ਆਟੋ-ਸੁਧਾਈ" + "ਸਪੇਸਬਾਰ ਅਤੇ ਵਿਸ਼ਰਾਮ ਚਿੰਨ੍ਹ ਗ਼ਲਤ ਟਾਈਪ ਕੀਤੇ ਸ਼ਬਦਾਂ ਨੂੰ ਆਟੋਮੈਟਿਕਲੀ ਠੀਕ ਕਰਦੇ ਹਨ" + "ਬੰਦ" + "ਸੰਕੋਚਵਾਨ" + "ਆਕਰਮਣਸ਼ੀਲ" + "ਬਹੁਤ ਆਕਰਮਣਸ਼ੀਲ" + "ਅਗਲਾ-ਸ਼ਬਦ ਸੁਝਾਅ" + "ਸੁਝਾਅ ਦੇਣ ਵਿੱਚ ਪਿਛਲਾ ਸ਼ਬਦ ਵਰਤੋ" + "ਸੰਕੇਤ ਟਾਈਪਿੰਗ ਚਾਲੂ ਕਰੋ" + "ਅੱਖਰਾਂ ਰਾਹੀਂ ਸਲਾਈਡ ਕਰਕੇ ਇੱਕ ਸ਼ਬਦ ਦਾਖਲ ਕਰੋ" + "ਸੰਕੇਤ ਲੀਹ ਦਿਖਾਓ" + "ਸਕਿਰਿਆ ਫਲੋਟਿੰਗ ਪੂਰਵ-ਝਲਕ" + "ਵਾਕਾਂਸ਼ ਸੰਕੇਤ" + "ਸਪੇਸ ਕੁੰਜੀ ਸਰਕਾ ਕੇ ਸੰਕੇਤਾਂ ਦੇ ਦੌਰਾਨ ਸਪੇਸ ਇਨਪੁਟ ਕਰੋ" + "ਅੰਗ੍ਰੇਜ਼ੀ (ਯੂਕੇ)" + "ਅੰਗ੍ਰੇਜੀ (ਅਮਰੀਕਾ)" + "ਸਪੇਨੀ (ਅਮਰੀਕਾ)" + "ਹਿੰਗਲਿੰਸ਼" + "ਸਰਬੀਅਨ (ਲਾਤੀਨੀ)" + "%s (ਪਰੰਪਰਿਕ)" + "%s (ਸੰਖਿਪਤ)" + "ਕੋਈ ਭਾਸ਼ਾ ਨਹੀਂ" + "ਇਮੋਜੀ" + "ਸ਼ਾਮਲ ਕਰੋ" + "ਹਟਾਓ" + "ਰੱਖਿਅਤ ਕਰੋ" + "ਭਾਸ਼ਾ" + "ਲੇਆਉਟ" + "ਕੀਪ੍ਰੈਸ ਵਾਈਬ੍ਰੇਸ਼ਨ ਮਿਆਦ" + "ਕੀਪ੍ਰੈਸ ਅਵਾਜ਼ ਵੌਲਿਊਮ" + "ਕੁੰਜੀ ਦਬਾਈ ਰੱਖਣ ਦੀ ਮਿਆਦ" + "ਭੌਤਿਕ ਕੀ-ਬੋਰਡ ਲਈ ਇਮੋਜੀ" + "ਭੌਤਿਕ Alt ਕੁੰਜੀ ਇਮੋਜੀ ਪੈਲੇਟ ਦਿਖਾਉਂਦੀ ਹੈ" + "ਪੂਰਵ-ਨਿਰਧਾਰਤ" + %s ਤੇ ਸੁਆਗਤ ਹੈ\" + "ਸੰਕੇਤ ਟਾਈਪਿੰਗ ਨਾਲ" + "ਸ਼ੁਰੂਆਤ ਕਰੋ" + %s ਸੈਟ ਅਪ ਕਰ ਰਿਹਾ ਹੈ\" + %s ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ\" + "ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੀਆਂ ਭਾਸ਼ਾਵਾਂ ਅਤੇ ਇਨਪੁੱਟ ਸੈਟਿੰਗਾਂ ਵਿੱਚ \"%s\" \'ਤੇ ਸਹੀ ਦਾ ਨਿਸ਼ਾਨ ਲਗਾਓ। ਇਹ ਉਸ ਨੂੰ ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਚੱਲਣ ਲਈ ਅਧਿਕਾਰਿਤ ਕਰੇਗਾ।" + "ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਚਾਲੂ ਕਰੋ" + %s \'ਤੇ ਸਵਿੱਚ ਕਰੋ\" + "ਫਿਰ, \"%s\" ਨੂੰ ਆਪਣੀ ਕਿਰਿਆਸ਼ੀਲ ਲਿਖਤ-ਇਨਪੁੱਟ ਵਿਧੀ ਦੇ ਤੌਰ ਤੇ ਚੁਣੋ।" + "ਇਨਪੁੱਟ ਵਿਧੀਆਂ ਸਵਿੱਚ ਕਰੋ" + "ਵਧਾਈ ਹੋਵੇ, ਤੁਸੀਂ ਸਾਰਾ ਸੈਟ ਕਰ ਲਿਆ ਹੈ!" + "ਹੁਣ ਤੁਸੀਂ %s ਨਾਲ ਆਪਣੇ ਸਾਰੇ ਮਨਪਸੰਦ ਐਪਸ ਨੂੰ ਟਾਈਪ ਕਰ ਸਕਦੇ ਹੋ।" + "ਪੂਰਾ ਹੋਇਆ" + "ਐਪ ਪ੍ਰਤੀਕ ਦਿਖਾਓ" + "ਲਾਂਚਰ ਵਿੱਚ ਐਪਲੀਕੇਸ਼ਨ ਪ੍ਰਤੀਕ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੋ" + "ਐਡ-ਆਨ ਸ਼ਬਦਕੋਸ਼" + "ਸ਼ਬਦਕੋਸ਼ ਉਪਲਬਧ" + "ਸੈਟਿੰਗਾਂ" + "ਮਿਟਾਓ" + "ਰੂਪ %1$s" + "ਸ਼ਾਰਟਕੱਟ:" + "ਭਾਸ਼ਾ:" + "ਇੱਕ ਸ਼ਬਦ ਟਾਈਪ ਕਰੋ" + "ਵਿਕਲਪਕ ਸ਼ਾਰਟਕੱਟ" + "ਸ਼ਬਦ ਦਾ ਸੰਪਾਦਨ ਕਰੋ" + "ਸਾਰੀਆਂ ਭਾਸ਼ਾਵਾਂ ਲਈ" + "ਹੋਰ ਭਾਸ਼ਾਵਾਂ…" + "ਇਨਪੁਟ ਵਿਧੀ ਚੁਣੋ" + "ਅਣਕੀਤਾ ਕਰੋ" + "ਮੁੜ-ਓਹੀ ਕਰੋ" + "ਸੁਝਾਵਾਂ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ ਆਪਣੀਆਂ ਗੱਲਬਾਤਾਂ ਅਤੇ ਟਾਈਪ ਕੀਤੇ ਡਾਟਾ ਤੋਂ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰੋ" + "ਜਾਓ" + "ਅੱਗੇ" + "ਪਿਛਲਾ" + "ਹੋ ਗਿਆ" + "ਭੇਜੋ" + "ਖੋਜੋ" + "ਰੋਕੋ" + "ਉਡੀਕ ਕਰੋ" diff --git a/app/src/main/res/values-pl/bools.xml b/app/src/main/res/values-pl/bools.xml index c289e5bf38..481b3fdc68 100644 --- a/app/src/main/res/values-pl/bools.xml +++ b/app/src/main/res/values-pl/bools.xml @@ -1,21 +1,7 @@ - - - "OK" - "Dalej" - "Wróć" - "Gotowe" - "Wyślij" - "Szukaj" - "Pauza" - "Czekaj" - diff --git a/app/src/main/res/values-pl/strings-config-important-notice.xml b/app/src/main/res/values-pl/strings-config-important-notice.xml deleted file mode 100644 index 3d7af4108f..0000000000 --- a/app/src/main/res/values-pl/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "Analizuj wiadomości i wpisywane dane, by otrzymywać lepsze podpowiedzi" - diff --git a/app/src/main/res/values-pl/strings-emoji-descriptions.xml b/app/src/main/res/values-pl/strings-emoji-descriptions.xml deleted file mode 100644 index bb9b1b7403..0000000000 --- a/app/src/main/res/values-pl/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "Znak praw autorskich" - "Zarejestrowany znak towarowy" - "Podwójny wykrzyknik" - "Wykrzyknik i pytajnik" - "Zastrzeżony znak towarowy" - "Źródło informacji" - "Strzałka w lewo i w prawo" - "Strzałka w górę i w dół" - "Strzałka w kierunku północno-zachodnim" - "Strzałka w kierunku północno-wschodnim" - "Strzałka w kierunku południowo-wschodnim" - "Strzałka w kierunku południowo-zachodnim" - "Strzałka w lewo z hakiem" - "Strzałka w prawo z hakiem" - "Zegarek" - "Klepsydra" - - - - - "Czarna podwójna strzałka trójkątna w prawo" - "Czarna podwójna strzałka trójkątna w lewo" - "Czarna podwójna strzałka trójkątna w górę" - "Czarna podwójna strzałka trójkątna w dół" - - - - - - - "Budzik" - - - - - "Klepsydra z przesypującym się piaskiem" - - - - - - - "Wielka litera M w kole" - "Mały czarny kwadrat" - "Mały biały kwadrat" - "Czarny trójkąt w prawo" - "Czarny trójkąt w lewo" - "Biały średni kwadrat" - "Czarny średni kwadrat" - "Biały niewielki kwadrat" - "Czarny niewielki kwadrat" - "Czarne słońce z promieniami" - "Chmura" - - - - - - - "Czarny telefon" - "Zaznaczona kratka" - "Parasol z kroplami deszczu" - "Gorący napój" - - - "Biały palec wskazujący w górę" - - - - - - - - - - - - - - - - - - - "Biała uśmiechnięta buźka" - "Baran" - "Byk" - "Bliźnięta" - "Rak" - "Lew" - "Panna" - "Waga" - "Skorpion" - "Strzelec" - "Koziorożec" - "Wodnik" - "Ryby" - "Pik" - "Trefl" - "Kier" - "Karo" - "Gorące źródła" - "Czarny uniwersalny znak recyclingu" - "Znak wózka inwalidzkiego" - - - "Kotwica" - - - - - - - - - - - - - "Znak ostrzegawczy" - "Znak wysokiego napięcia" - "Średnie białe koło" - "Średnie czarne koło" - - - - - "Piłka nożna" - "Piłka baseballowa" - "Bałwanek" - "Słońce za chmurą" - - - "Wężownik" - - - - - - - "Zakaz wstępu" - - - "Kościół" - - - - - "Fontanna" - "Pole golfowe" - - - "Żaglówka" - - - - - - - "Namiot" - "Dystrybutor paliwa" - "Czarne nożyczki" - "Znak zaznaczenia" - "Samolot" - "Koperta" - "Uniesiona pięść" - "Uniesiona ręka" - "Gest zwycięstwa" - - - "Ołówek" - "Czarna stalówka" - "Znak zaznaczenia" - "Znak mnożenia x" - - - - - "Iskry" - "Gwiazdka ośmioramienna" - "Gwiazda ośmioramienna" - "Płatek śniegu" - "Iskra" - "Krzyżyk" - "Znak X kwadracie oznaczający zaprzeczenie" - "Czarny ozdobny znak zapytania" - "Biały ozdobny znak zapytania" - "Biały ozdobny wykrzyknik" - "Czarny ozdobny wykrzyknik" - - - "Czarne serce" - "Znak plusa" - "Znak minusa" - "Znak dzielenia" - "Czarna strzałka w prawo" - "Pętla" - "Podwójna pętla" - "Strzałka w prawo skręcająca w górę" - "Strzałka w prawo skręcająca w dół" - "Czarna strzałka w lewo" - "Czarna strzałka w górę" - "Czarna strzałka w dół" - "Duży czarny kwadrat" - "Duży biały kwadrat" - "Biała średnia gwiazda" - "Duże koło" - "Fala" - "Znak rozpoczęcia partii wokalisty" - "Okrągły symbol gratulacji" - "Okrągły symbol tajemnicy" - "Kafelek mahjong czerwony smok" - "Karta Joker" - "Grupa krwi A" - "Grupa krwi B" - "Grupa krwi 0" - "Parking" - "Grupa krwi AB" - "Kwadratowy znak CL, czyli Czyste" - "Kwadratowy znak Cool czyli Świetnie" - "Kwadratowy znak Free, czyli Bezpłatne" - "Kwadratowy znak ID, czyli Identyfikator" - "Kwadratowy znak New, czyli Nowy" - "Kwadratowy znak NG, czyli Niedobrze" - "Kwadratowy znak OK" - "Kwadratowy znak SOS" - "Kwadratowy znak UP, czyli W górę, z wykrzyknikiem" - "Kwadratowy znak VS, czyli Kontra" - "Kwadratowy znak Tutaj w zapisie katakana" - "Kwadratowy znak Usługa w zapisie katakana" - "Kwadratowy symbol Bezpłatne" - "Kwadratowy symbol Zarezerwowane" - "Kwadratowy symbol zakazu" - "Kwadratowy symbol wolnego miejsca" - "Kwadratowy symbol akceptacji" - "Kwadratowy symbol Wszystkie miejsca zajęte" - "Kwadratowy symbol Zapłacone" - "Kwadratowy symbol Miesięcznie" - "Kwadratowy symbol aplikacji" - "Kwadratowy symbol rabatu" - "Kwadratowy symbol Otwarte" - "Okrągły symbol korzyści" - "Okrągły symbol akceptacji" - "Cyklon" - "Mgła" - "Zamknięty parasol" - "Rozgwieżdżone niebo" - "Wschód słońca nad górami" - "Wschód słońca" - "Miasto o zmierzchu" - "Zachód słońca nad budynkami" - "Tęcza" - "Most w nocy" - "Fala" - "Wulkan" - "Droga Mleczna" - "Kula ziemska: Europa i Afryka" - "Kula ziemska: Ameryki" - "Kula ziemska: Azja i Australia" - "Kula ziemska z południkami i równoleżnikami" - "Symbol nowiu" - "Symbol wzrastającego sierpa Księżyca" - "Symbol pierwszej kwadry" - "Symbol poszerzonego Księżyca" - "Symbol Księżyca w pełni" - "Symbol malejącego Księżyca" - "Symbol ostatniej kwadry" - "Symbol ubywającego sierpa Księżyca" - "Sierp Księżyca" - "Księżyc w nowiu z twarzą" - "Pierwsza kwadra Księżyca z twarzą" - "Ostatnia kwadra Księżyca z twarzą" - "Pełnia Księżyca z twarzą" - "Słońce z twarzą" - "Świecąca gwiazdka" - "Spadająca gwiazda" - - - - - - - - - - - - - - - - - - - - - - - - - - - "Orzech" - "Roślinka" - "Choinka" - "Drzewo liściaste" - "Palma" - "Kaktus" - - - "Tulipan" - "Kwitnąca wiśnia" - "Róża" - "Ketmia" - "Słonecznik" - "Kwiat" - "Kolba kukurydzy" - "Ryż" - "Zioło" - "Czterolistna koniczynka" - "Liść klonowy" - "Spadające liście" - "Liście na wietrze" - "Grzyb" - "Pomidor" - "Bakłażan" - "Winogrona" - "Melon" - "Arbuz" - "Mandarynka" - "Cytryna" - "Banan" - "Ananas" - "Czerwone jabłko" - "Zielone jabłko" - "Gruszka" - "Brzoskwinia" - "Wiśnie" - "Truskawka" - "Hamburger" - "Kawałek pizzy" - "Mięso z kością" - "Udko drobiowe" - "Krakers ryżowy" - "Kulka ryżowa" - "Miseczka z ryżem" - "Ryż z curry" - "Parująca miska" - "Spaghetti" - "Chleb" - "Frytki" - "Pieczony ziemniak" - "Dango" - "Oden" - "Sushi" - "Smażona krewetka" - "Ciastko rybne ze spiralą" - "Lody włoskie" - "Lody kulkowe" - "Lody" - "Pączek" - "Ciastko" - "Tabliczka czekolady" - "Cukierek" - "Lizak" - "Ciastko kremowe" - "Garnek z miodem" - "Kawałek tortu" - "Pudełko bento" - "Miska z jedzeniem" - "Patelnia" - "Nóż i widelec" - "Filiżanka bez uszka" - "Butelka sake i czarka" - "Kieliszek na wino" - "Kieliszek koktajlowy" - "Drink" - "Kufel z piwem" - "Kufle z piwem" - "Butelka ze smoczkiem" - - - - - - - "Wstążka" - "Prezent" - "Tort urodzinowy" - "Lampa z dyni" - "Choinka bożonarodzeniowa" - "Święty Mikołaj" - "Fajerwerki" - "Sztuczne ognie" - "Balonik" - "Tuba strzelająca" - "Konfetti" - "Drzewo życzeń" - "Japońskie flagi" - "Stroiki świąteczne" - "Japońskie lalki" - "Flaga w kształcie karpi" - "Dzwonki wietrzne" - "Święto podziwiania Księżyca" - "Tornister" - "Czapka akademicka" - - - - - - - - - - - - - - - "Konik z karuzeli" - "Diabelski młyn" - "Kolejka górska w wesołym miasteczku" - "Wędka z rybą" - "Mikrofon" - "Kamera" - "Kino" - "Słuchawka" - "Paleta" - "Cylinder" - "Cyrk" - "Bilet" - "Klaps" - "Maski" - "Gra wideo" - "Strzał w 10" - "Automat do gier" - "Kula bilardowa" - "Kostka do gry" - "Kręgle" - "Karta" - "Nuta" - "Nuty" - "Saksofon" - "Gitara" - "Klawisze fortepianowe" - "Trąbka" - "Skrzypce" - "Klucz wiolinowy na pięciolinii" - "Koszulka na ramiona" - "Rakieta i piłka tenisowa" - "Narta z butem narciarskim" - "Piłka wpadająca do kosza" - "Flaga w kratkę" - "Snowboardzista" - "Biegacz" - "Surfer" - - - "Puchar" - "Jazda konna" - "Piłka do futbolu amerykańskiego" - "Piłka do rugby" - "Pływak" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Dom" - "Dom z ogrodem" - "Biurowiec" - "Japoński budynek poczty" - "Europejski budynek poczty" - "Szpital" - "Bank" - "Bankomat" - "Hotel" - "Hotel miłości" - "Sklep" - "Szkoła" - "Dom towarowy" - "Fabryka" - "Czerwony lampion" - "Pagoda" - "Zamek" - - - - - - - - - - - - - - - - - - - - - - - - - "Szczur" - "Mysz" - "Wół" - "Bawół wodny" - "Krowa" - - - "Lampart" - "Królik" - "Kot" - "Smok" - "Krokodyl" - "Wieloryb" - "Ślimak" - "Wąż" - "Koń" - "Baran" - "Koza" - "Owca" - "Małpa" - "Kogut" - "Kurczak" - "Pies" - "Świnia" - "Dzik" - "Słoń" - "Ośmiornica" - "Muszla" - "Gąsienica" - "Mrówka" - "Pszczoła" - "Żuk" - "Ryba" - "Ryba tropikalna" - "Ryba rozdymka" - "Żółw" - "Pisklę" - "Pisklak" - "Kurczaczek widziany z przodu" - "Ptak" - "Pingwin" - "Koala" - "Pudel" - "Dromader" - "Wielbłąd" - "Delfin" - "Pysk myszy" - "Pysk krowy" - "Pysk tygrysa" - "Pyszczek królika" - "Pyszczek kota" - "Paszcza smoka" - "Wieloryb z fontanną" - "Pysk konia" - "Głowa małpy" - "Pysk psa" - "Głowa świnki" - "Głowa żaby" - "Pyszczek chomika" - "Pysk wilka" - "Głowa misia" - "Głowa pandy" - "Ryj" - "Ślady łap" - - - "Oczy" - - - "Ucho" - "Nos" - "Usta" - "Język" - "Palec wskazujący skierowany w górę" - "Palec wskazujący skierowany w dół" - "Palec wskazujący skierowany w lewo" - "Palec wskazujący skierowany w prawo" - "Znak pięści" - "Znak machającej ręki" - "Znak gestu dłonią oznaczającego OK" - "Znak kciuka w górę" - "Znak kciuka w dół" - "Znak klaszczących dłoni" - "Znak otwartych dłoni" - "Korona" - "Damski kapelusz" - "Okulary" - "Krawat" - "T-shirt" - "Jeansy" - "Sukienka" - "Kimono" - "Bikini" - "Bluzka" - "Portmonetka" - "Torebka" - "Portmonetka damska" - "But męski" - "But sportowy" - "But na wysokim obcasie" - "Sandałek damski" - "Kozak" - "Odciski stóp" - "Sylwetka" - "Sylwetki" - "Chłopiec" - "Dziewczynka" - "Mężczyzna" - "Kobieta" - "Rodzina" - "Para trzymająca się za ręce" - "Męska para trzymająca się za ręce" - "Kobieca para trzymająca się za ręce" - "Policjant" - "Kobiety z uszami królika" - "Panna młoda w welonie" - "Osoba jasnowłosa" - "Człowiek w chińskiej czapce" - "Mężczyzna w turbanie" - "Staruszek" - "Staruszka" - "Niemowlę" - "Robotnik" - "Księżniczka" - "Ogr japoński" - "Goblin japoński" - "Duch" - "Aniołek" - "Ufoludek" - "Kosmita" - "Diablik" - "Czaszka" - "Pracownik informacji" - "Wartownik" - "Tancerka" - "Szminka" - "Lakier do paznokci" - "Masaż twarzy" - "Fryzura" - "Szpulka" - "Strzykawka" - "Tabletka" - "Odcisk ust" - "List miłosny" - "Pierścionek" - "Diament" - "Pocałunek" - "Bukiet kwiatów" - "Para z sercem" - "Ślub" - "Bijące serce" - "Złamane serce" - "Dwa serca" - "Błyszczące serce" - "Rosnące serce" - "Serce przebite strzałą" - "Niebieskie serce" - "Zielone serce" - "Żółte serce" - "Różowe serce" - "Serce ze wstążką" - "Obracające się serca" - "Serce" - "Romb z kropką w środku" - "Żarówka" - "Symbol gniewu" - "Bomba" - "Symbol snu" - "Symbol zderzenia" - "Znak siódmych potów" - "Kropla" - "Wiatr" - "Kupa" - "Biceps" - "Skołowany" - "Rozmowa (dymek)" - "Myśl (dymek)" - "Biały kwiat" - "Symbol stu punktów" - "Worek z pieniędzmi" - "Wymiana waluty" - "Dolar" - "Karta kredytowa" - "Banknot ze znakiem jena" - "Banknot ze znakiem dolara" - "Banknot ze znakiem euro" - "Banknot ze znakiem funta" - "Pieniądze ze skrzydłami" - "Wykres rosnący ze znakiem jena" - "Fotel" - "Komputer" - "Teczka" - "Minidysk" - "Dyskietka" - "Dysk optyczny" - "DVD" - "Folder" - "Otwarty folder" - "Strona z zawinięciem" - "Strona z zagięciem w rogu" - "Kalendarz" - "Zdzierany kalendarz" - "Wizytownik" - "Wykres rosnący" - "Wykres malejący" - "Wykres słupkowy" - "Podkładka do pisania" - "Pinezka" - "Szpilka" - "Spinacz" - "Linijka" - "Ekierka" - "Zakładki" - "Skoroszyt" - "Notes" - "Ozdobny notes" - "Zamknięta książka" - "Otwarta książka" - "Zielona książka" - "Niebieska książka" - "Pomarańczowa książka" - "Książki" - "Plakietka" - "Zwój" - "Notatka" - "Słuchawka telefoniczna" - "Pager" - "Faks" - "Antena satelitarna" - "Megafon" - "Tuba nagłaśniająca" - "Skrzynka nadawcza" - "Skrzynka odbiorcza" - "Paczka" - "E-mail" - "Przychodząca koperta" - "Koperta z umieszczoną nad nią strzałką w dół" - "Zamknięta skrzynka pocztowa z opuszczoną flagą" - "Zamknięta skrzynka pocztowa z podniesioną flagą" - "Otwarta skrzynka pocztowa z podniesioną flagą" - "Otwarta skrzynka pocztowa z opuszczoną flagą" - "Skrzynka na listy" - "Trąbka pocztyliona" - "Gazeta" - "Telefon komórkowy" - "Telefon komórkowy ze strzałką w prawo po lewej stronie" - "Tryb wibracji" - "Wyłączenie telefonu komórkowego" - "Zakaz używania telefonów komórkowych" - "Antena ze słupkami zasięgu" - "Aparat" - - - "Kamera" - "Telewizor" - "Radio" - "Kaseta wideo" - - - - - "Przecinające się strzałki w prawo" - "Strzałki w prawo i w lewo wskazujące kierunek obrotu zgodny z ruchem wskazówek zegara" - "Strzałki w prawo i w lewo wskazujące kierunek obrotu zgodny z ruchem wskazówek zegara z cyfrą 1" - "Strzałki w dół i w górę wskazujące kierunek obrotu zgodny z ruchem wskazówek zegara" - "Strzałki w dół i w górę wskazujące kierunek obrotu przeciwny do ruchu wskazówek zegara" - "Symbol małej jasności" - "Symbol dużej jasności" - "Przekreślony głośnik" - "Głośnik" - "Głośnik z jedną falą dźwiękową" - "Głośnik z trzema falami dźwiękowymi" - "Bateria" - "Wtyczka" - "Lupa skierowana w lewo" - "Lupa skierowana w prawo" - "Kłódka z wiecznym piórem" - "Zamknięta kłódka z kluczem" - "Klucz" - "Kłódka" - "Otwarta kłódka" - "Dzwonek" - "Przekreślony dzwonek" - "Zakładka" - "Ogniwo" - "Przycisk radiowy" - "Napis Back, czyli Wstecz, z umieszczoną nad nim strzałką w lewo" - "Napis End, czyli Koniec, z umieszczoną nad nim strzałką w lewo" - "Napis On, czyli Włączone, z umieszczoną nad nim strzałką dwukierunkową w lewo i prawo" - "Napis Soon, czyli Wkrótce, z umieszczoną nad nim strzałką w prawo" - "Napis Top, czyli Góra, z umieszczoną nad nim strzałką w górę" - "Symbol Zakazane poniżej 18 lat" - "Klawisz 10" - "Symbol wpisywania wielkich liter" - "Symbol wpisywania małych liter" - "Symbol wpisywania cyfr" - "Symbol wpisywania symboli" - "Symbol wpisywania liter" - "Ogień" - "Latarka" - "Klucz" - "Młotek" - "Śruba i nakrętka" - "Nóż kuchenny" - "Pistolet" - "Mikroskop" - "Teleskop" - "Kryształowa kula" - "Sześcioramienna gwiazda z kropką w środku" - "Japoński symbol początkującego" - "Trójząb" - "Przycisk – biały kwadrat w czarnej ramce" - "Przycisk – czarny kwadrat w białej ramce" - "Duże czerwone koło" - "Duże niebieskie koło" - "Duży pomarańczowy romb" - "Duży niebieski romb" - "Mały pomarańczowy romb" - "Mały niebieski romb" - "Czerwona strzałka trójkątna w górę" - "Czerwona strzałka trójkątna w dół" - "Mała czerwona strzałka trójkątna w górę" - "Mała czerwona strzałka trójkątna w dół" - - - - - - - - - - - - - "Tarcza zegara z godziną 1:00" - "Tarcza zegara z godziną 2:00" - "Tarcza zegara z godziną 3:00" - "Tarcza zegara z godziną 4:00" - "Tarcza zegara z godziną 5:00" - "Tarcza zegara z godziną 6:00" - "Tarcza zegara z godziną 7:00" - "Tarcza zegara z godziną 8:00" - "Tarcza zegara z godziną 9:00" - "Tarcza zegara z godziną 10:00" - "Tarcza zegara z godziną 11:00" - "Tarcza zegara z godziną 12:00" - "Tarcza zegara z godziną 1:30" - "Tarcza zegara z godziną 2:30" - "Tarcza zegara z godziną 3:30" - "Tarcza zegara z godziną 4:30" - "Tarcza zegara z godziną 5:30" - "Tarcza zegara z godziną 6:30" - "Tarcza zegara z godziną 7:30" - "Tarcza zegara z godziną 8:30" - "Tarcza zegara z godziną 9:30" - "Tarcza zegara z godziną 10:30" - "Tarcza zegara z godziną 11:30" - "Tarcza zegara z godziną 12:30" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Góra Fudżi" - "Tokyo Tower" - "Statua Wolności" - "Mapa Japonii" - "Posąg z Wyspy Wielkanocnej" - "Szeroki uśmiech" - "Szeroko uśmiechnięta buźka z roześmianymi oczami" - "Łzy radości" - "Szeroko uśmiechnięta buźka" - "Roześmiana buźka ze śmiejącymi się oczami" - "Roześmiana buźka ze śmiejącymi się oczami i kroplą potu" - "Roześmiana buźka z zaciśniętymi oczami" - "Uśmiechnięta buźka z aureolą" - "Uśmiechnięta buźka z różkami" - "Puszczenie oka" - "Uśmiechnięta buźka z roześmianymi oczami" - "Oblizująca się buźka" - "Odprężona buźka" - "Uśmiechnięta buźka z oczami w kształcie serc" - "Uśmiechnięta buźka w ciemnych okularach" - "Półuśmieszek" - "Buźka obojętna" - "Buźka bez wyrazu" - "Niezadowolona buźka" - "Buźka z kroplą potu" - "Zamyślona buźka" - "Zakłopotana buźka" - "Zirytowana buźka" - "Buźka całująca" - "Buźka przesyłająca całusa" - "Całująca buźka z roześmianymi oczami" - "Całująca buźka z zamkniętymi oczami" - "Buźka pokazująca język" - "Buźka pokazująca język i puszczająca oko" - "Buźka z zamkniętymi oczami pokazująca język" - "Rozczarowana buźka" - "Zmartwiona buźka" - "Rozgniewana buźka" - "Nadąsana mina" - "Płacząca buźka" - "Zacięta twarz" - "Dumna buźka" - "Buźka z wyrazem rozczarowania połączonego z ulgą" - "Niezadowolona buźka z otwartymi ustami" - "Przerażona buźka" - "Wystraszona buźka" - "Zmęczona buźka" - "Śpiąca buźka" - "Zmęczona buźka" - "Grymaśna buźka" - "Zapłakana buźka" - "Buźka z otwartymi ustami" - "Zaskoczona buźka" - "Zziajana buźka" - "Buźka krzycząca ze strachu" - "Zdziwiona buźka" - "Buźka z wypiekami" - "Śpiąca buźka" - "Buźka oszołomiona" - "Buźka bez ust" - "Buźka w masce chirurgicznej" - "Roześmiany koci pyszczek" - "Koci pyszczek płaczący ze śmiechu" - "Szeroko uśmiechnięty koci pyszczek" - "Uśmiechnięty koci pyszczek z oczami w kształcie serc" - "Pyszczek kota ze skrzywionym uśmiechem" - "Koci pyszczek całujący z zamkniętymi oczami" - "Obrażony koci pyszczek" - "Płaczący koci pyszczek" - "Zmęczony koci pyszczek" - - - - - - - - - "Buźka z gestem dezaprobaty" - "Buźka z gestem aprobaty" - "Osoba kłaniająca się" - "Małpka zasłaniająca sobie oczy" - "Małpka zasłaniająca sobie uszy" - "Małpka zakrywająca sobie usta" - "Zadowolona osoba z ręką w górze" - "Osoba unosząca ręce w geście zwycięstwa" - "Osoba niezadowolona" - "Osoba z grymasem niezadowolenia" - "Złożone ręce" - "Rakieta" - "Helikopter" - "Parowóz" - "Wagon kolejowy" - "Szybki pociąg" - "Szybki pociąg z zaokrąglonym przodem" - "Pociąg" - "Metro" - "Kolej miejska" - "Stacja kolejowa" - "Tramwaj" - "Wagon tramwajowy" - "Autobus" - "Nadjeżdżający autobus" - "Trolejbus" - "Przystanek autobusowy" - "Mikrobus" - "Karetka pogotowia" - "Wóz strażacki" - "Samochód policyjny" - "Nadjeżdżający samochód policyjny" - "Taksówka" - "Nadjeżdżająca taksówka" - "Samochód" - "Nadjeżdżający samochód" - "Samochód rekreacyjny" - "Samochód dostawczy" - "Ciągnik z naczepą" - "Ciągnik" - "Kolej jednoszynowa" - "Kolej górska" - "Kolej podwieszana" - "Kolejka górska" - "Kolejka wisząca" - "Statek" - "Łódka z wiosłami" - "Motorówka" - "Poziome światła drogowe" - "Pionowe światła drogowe" - "Znak sygnalizujący prace drogowe" - "Kogut policyjny" - "Trójkątna flaga na maszcie" - "Drzwi" - "Znak zakazu wejścia" - "Znak Dla palących" - "Znak zakazu palenia" - "Znak Wyrzuć śmieci do kosza" - "Znak Nie śmiecić" - "Znak Woda pitna" - "Znak Woda niezdatna do picia" - "Rower" - "Zakaz ruchu rowerów" - "Rowerzysta" - "Kolarz górski" - "Pieszy" - "Zakaz ruchu pieszych" - "Przejście dla dzieci" - "Znak Dla panów" - "Znak Dla pań" - "Toaleta" - "Znak Dziecko" - "Toaleta" - "WC" - "Prysznic" - "Kąpiel" - "Wanna" - "Kontrola paszportowa" - "Kontrola celna" - "Odbiór bagażu" - "Pozostawiony bagaż" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-pl/strings-letter-descriptions.xml b/app/src/main/res/values-pl/strings-letter-descriptions.xml deleted file mode 100644 index 7b1463c791..0000000000 --- a/app/src/main/res/values-pl/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "Wskaźnik rodzaju żeńskiego liczebnika porządkowego" - "Znak mikro" - "Wskaźnik rodzaju męskiego liczebnika porządkowego" - "Ostre S" - "A z odwrotną kreską" - "A z kreską" - "A z daszkiem" - "A z tyldą" - "A z dwiema kropkami" - "A z kółkiem" - "A, E, ligatura" - "C z haczykiem" - "E z odwrotną kreską" - "E z kreską" - "E z daszkiem" - "E z dwiema kropkami" - "I z odwrotną kreską" - "I z kreską" - "I z daszkiem" - "I z dwiema kropkami" - "Eth" - "N z tyldą" - "O z odwrotną kreską" - "O z kreską" - "O z daszkiem" - "O z tyldą" - "O z dwiema kropkami" - "O z przekreśleniem" - "U z odwrotną kreską" - "U z kreską" - "U z daszkiem" - "U z dwiema kropkami" - "Y z kreską" - "Thorn" - "Y z dwiema kropkami" - "A z makronem" - "A z łuczkiem" - "A z ogonkiem" - "C z kreską" - "C z daszkiem" - "C z kropką" - "C z ptaszkiem" - "D z ptaszkiem" - "D z przekreśleniem" - "E z makronem" - "E z łuczkiem" - "E z kropką u góry" - "E z ogonkiem" - "E z ptaszkiem" - "G z daszkiem" - "G z łuczkiem" - "G z kropką u góry" - "G z haczykiem" - "H z daszkiem" - "H z przekreśleniem" - "I z tyldą" - "I z makronem" - "I z łuczkiem" - "I z ogonkiem" - "I bez kropki" - "I, J, ligatura" - "J z daszkiem" - "K z haczykiem" - "Kra" - "L z kreską" - "L z haczykiem" - "L z ptaszkiem" - "L z kropką pośrodku" - "L z przekreśleniem" - "N z kreską" - "N z haczykiem" - "N z ptaszkiem" - "N poprzedzone apostrofem" - "Eng" - "O z makronem" - "O z łuczkiem" - "O z podwójną kreską" - "O, E, ligatura" - "R z kreską" - "R z haczykiem" - "R z ptaszkiem" - "S z kreską" - "S z daszkiem" - "S z haczykiem" - "S z ptaszkiem" - "T z haczykiem" - "T z ptaszkiem" - "T z przekreśleniem" - "U z tyldą" - "U z makronem" - "U z łuczkiem" - "U z kółkiem" - "U z podwójną kreską" - "U z ogonkiem" - "W z daszkiem" - "Y z daszkiem" - "Z z kreską" - "Z z kropką" - "Z z ptaszkiem" - "Długie S" - "O z rogiem" - "U z rogiem" - "S z przecinkiem u dołu" - "T z przecinkiem u dołu" - "Szwa" - "A z kropką u dołu" - "A z zawijasem u góry" - "A z daszkiem i kreską" - "A z daszkiem i odwrotną kreską" - "A z daszkiem i zawijasem u góry" - "A z daszkiem i tyldą" - "A z daszkiem i kropką u dołu" - "A z łuczkiem i kreską" - "A z łuczkiem i odwrotną kreską" - "A z łuczkiem i zawijasem u góry" - "A z łuczkiem i tyldą" - "A z łuczkiem i kropką u dołu" - "E z kropką u dołu" - "E z zawijasem u góry" - "E z tyldą" - "E z daszkiem i kreską" - "E z daszkiem i odwrotną kreską" - "E z daszkiem i zawijasem u góry" - "E z daszkiem i tyldą" - "E z daszkiem i kropką u dołu" - "I z zawijasem u góry" - "I z kropką u dołu" - "O z kropką u dołu" - "O z zawijasem u góry" - "O z daszkiem i kreską" - "O z daszkiem i odwrotną kreską" - "O z daszkiem i zawijasem u góry" - "O z daszkiem i tyldą" - "O z daszkiem i kropką u dołu" - "O z rogiem i kreską" - "O z rogiem i odwrotną kreską" - "O z rogiem i zawijasem u góry" - "O z rogiem i tyldą" - "O z rogiem i kropką u dołu" - "U z kropką u dołu" - "U z zawijasem u góry" - "U z rogiem i kreską" - "U z rogiem i odwrotną kreską" - "U z rogiem i zawijasem u góry" - "U z rogiem i tyldą" - "U z rogiem i kropką u dołu" - "Y z odwrotną kreską" - "Y z kropką u dołu" - "Y z zawijasem u góry" - "Y z tyldą" - "Odwrócony wykrzyknik" - "Lewy cudzysłów kątowy" - "Kropka pośrodku" - "Pierwsza potęga" - "Prawy cudzysłów kątowy" - "Odwrócony pytajnik" - "Lewy cudzysłów definicyjny" - "Prawy cudzysłów definicyjny" - "Cudzysłów pojedynczy" - "Lewy cudzysłów apostrofowy" - "Prawy cudzysłów apostrofowy" - "Krzyżyk" - "Podwójny krzyżyk" - "Promil" - "Prim" - "Bis" - "Lewy francuski cudzysłów pojedynczy" - "Prawy francuski cudzysłów pojedynczy" - "Czwarta potęga" - "Małe n w górnym indeksie" - "Znak peso" - "Znak „przez grzeczność”" - "Strzałka w prawo" - "Strzałka w dół" - "Zbiór pusty" - "Przyrost" - "Mniejsze lub równe" - "Większe lub równe" - "Czarna gwiazdka" - diff --git a/app/src/main/res/values-pl/strings-talkback-descriptions.xml b/app/src/main/res/values-pl/strings-talkback-descriptions.xml index 2538f6ff6c..2b761ea04f 100644 --- a/app/src/main/res/values-pl/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-pl/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "Podłącz zestaw słuchawkowy, by usłyszeć znaki hasła wypowiadane na głos." - "Aktualny tekst: %s" - "Nie wpisano tekstu" - "%1$s poprawia %2$s na %3$s" - "%1$s wykonuje autokorektę" - "Brak sugestii" - "Nieznany znak" - "Shift" - "Więcej symboli" - "Shift" - "Symbole" - "Shift" - "Usuń" - "Symbole" - "Litery" - "Liczby" - "Ustawienia" - "Karta" - "Spacja" - "Rozpoznawanie mowy" - "Emotikony" - "Enter" - "Szukaj" - "Punktor" - "Przełącz język" - "Dalej" - "Wstecz" - "Shift włączony" - "Caps lock włączony" - "Tryb symboli" - "Tryb dodatkowych symboli" - "Tryb liter" - "Tryb telefonu" - "Tryb symboli telefonu" - "Klawiatura ukryta" - "Pokazuję klawiaturę w trybie %s" - "data" - "data i godzina" - "e-mail" - "SMS" - "liczba" - "telefon" - "tekst" - "godzina" - "adres URL" - "Ostatnie" - "Osoby" - "Obiekty" - "Przyroda" - "Miejsca" - "Symbole" - "Flagi" - "Emotikony i ludzie" - "Zwierzęta i natura" - "Jedzenie i napoje" - "Podróże i miejsca" - "Aktywność" - "Emotikony" - "Wielka litera %s" - "Wielka litera I" - "Wielka litera I z kropką" - "Nieznany symbol" - "Nieznany emotikon" - "Buźka znudzona" - "Buźka zawstydzona" - "Buźka w ciemnych okularach" - "Buźka zdziwiona" - "Buźka całująca" - "Buźka marszcząca czoło" - "Alternatywne znaki są dostępne" - "Alternatywne znaki zostały zamknięte" - "Alternatywne propozycje są dostępne" - "Alternatywne propozycje zostały zamknięte" + + + "Podłącz zestaw słuchawkowy, by usłyszeć znaki hasła wypowiadane na głos." + "Aktualny tekst: %s" + "Nie wpisano tekstu" + "%1$s poprawia %2$s na %3$s" + "%1$s wykonuje autokorektę" + "Brak sugestii" + "Nieznany znak" + "Shift" + "Więcej symboli" + "Shift" + "Symbole" + "Shift" + "Usuń" + "Symbole" + "Litery" + "Liczby" + "Ustawienia" + "Karta" + "Spacja" + "Rozpoznawanie mowy" + "Emotikony" + "Enter" + "Szukaj" + "Punktor" + "Przełącz język" + "Dalej" + "Wstecz" + "Shift włączony" + "Caps lock włączony" + "Tryb symboli" + "Tryb dodatkowych symboli" + "Tryb liter" + "Tryb telefonu" + "Tryb symboli telefonu" + "Klawiatura ukryta" + "Pokazuję klawiaturę w trybie %s" + "data" + "data i godzina" + "e-mail" + "SMS" + "liczba" + "telefon" + "tekst" + "godzina" + "adres URL" + "Ostatnie" + "Obiekty" + "Symbole" + "Flagi" + "Emotikony i ludzie" + "Zwierzęta i natura" + "Jedzenie i napoje" + "Podróże i miejsca" + "Aktywność" + "Emotikony" + "Wielka litera %s" + "Wielka litera I" + "Wielka litera I z kropką" + "Alternatywne znaki są dostępne" + "Alternatywne znaki zostały zamknięte" + "Alternatywne propozycje są dostępne" + "Alternatywne propozycje zostały zamknięte" diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 19530167f7..b1c9a14925 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -1,193 +1,485 @@ - - - - - "Opcje wprowadzania" - "Przeszukaj kontakty" - "Sprawdzanie pisowni bierze pod uwagę wpisy z listy kontaktów." - "Wibracja przy naciśnięciu" - "Dźwięk przy naciśnięciu" - "Powiększ po naciśnięciu" - "Ustawienia" - "Konta i prywatność" - "Wygląd i układy" - "Pisanie gestami" - "Korekta tekstu" - "Zaawansowane" - "Motyw" - "Włącz podzieloną klawiaturę" - "Inne metody wprowadzania" - "Klawisz zmiany języka obejmuje też inne metody wprowadzania" - "Klawisz zmiany języka" - "Pokaż, gdy włączonych jest kilka języków wprowadzania" - "Opóźnienie znikania klawiszy" - "Bez opóźnienia" - "Wartość domyślna" - "%s ms" - "Ustawienie domyślne" - "Proponuj osoby z kontaktów" - "W podpowiedziach i poprawkach używaj nazwisk z kontaktów" - "Dostosowane sugestie" - "Popraw aplikację %s" - "Szybka kropka ze spacją" - "Dwukrotne kliknięcie spacji wstawia kropkę ze spacją" - "Wstawiaj wielkie litery" - "Zaczynaj każde zdanie wielką literą" - "Słownik osobisty" - "Dodatkowe słowniki" - "Słownik główny" - "Pokazuj propozycje poprawek" - "Wyświetlaj proponowane słowa podczas wpisywania" - "Blokuj obraźliwe słowa" - "Nie proponuj słów potencjalnie obraźliwych" - "Autokorekta" - "Spacja i znaki przestankowe poprawiają błędnie wpisane słowa" - "Wyłącz" - "Umiarkowana" - "Agresywna" - "Bardzo agresywna" - "Podpowiadaj kolejne słowo" - "Pokazuj podpowiedzi na podstawie poprzedniego słowa" - "Włącz pisanie gestami" - "Wpisuj słowa, przesuwając palcem po literach" - "Pokazuj ślad gestu" - "Dynamiczny podgląd słowa" - "Podczas pisania gestami zobaczysz podpowiadane słowo" - "Gest wyrażenia" - "Wpisuj spacje podczas gestów, przesuwając palec do klawisza spacji" - "Klawisz rozpoznawania mowy" - "Nie włączono żadnych metod wprowadzania głosowego. Sprawdź ustawienia Język i wprowadzanie tekstu." - "Konfiguruj metody wprowadzania" - "Języki" - "Pomoc i opinie" - "Języki" - "Kliknij ponownie, by zapisać" - "Kliknij tutaj, by zapisać" - "Słownik dostępny" - "Motyw klawiatury" - "Przełącz konta" - "Nie wybrałeś żadnych kont" - "Teraz używasz konta %1$s" - "OK" - "Anuluj" - "Wyloguj się" - "Wybierz konto, którego chcesz używać" - "angielski (Wielka Brytania)" - "angielski (Stany Zjednoczone)" - "hiszpański (USA)" - "Hinglish" - "serbski (alfabet łaciński)" - "Angielski (Wielka Brytania) (%s)" - "Angielski (USA) (%s)" - "Hiszpański (USA) (%s)" - "Hinglish (%s)" - "serbski (%s)" - "%s (tradycyjny)" - "%s (kompaktowa)" - "Bez języka (alfabet)" - "Alfabet (QWERTY)" - "Alfabet (QWERTZ)" - "Alfabet (AZERTY)" - "Alfabet (Dvorak)" - "Alfabet (Colemak)" - "Alfabet (PC)" - "Emotikony" - "Motyw klawiatury" - "Style niestandardowe" - "Dodaj styl" - "Dodaj" - "Usuń" - "Zapisz" - "Język" - "Układ" - "Niestandardowy styl wprowadzania trzeba przed użyciem włączyć. Zrobić to teraz?" - "Włącz" - "Nie teraz" - "Taki styl wprowadzania już istnieje: %s" - "Wibracja przy naciśniętym klawiszu" - "Głośność przy naciśniętym klawiszu" - "Opóźnienie przy długim naciśnięciu" - "Emotikony z klawiatury fizycznej" - "Naciśnięcie klawisza Alt przywołuje okienko wyboru emotikonów" - "Domyślne" - "Witamy w aplikacji %s" - "z pisaniem gestami" - "Rozpocznij" - "Następny krok" - "Konfigurowanie aplikacji %s" - "Włącz aplikację %s" - "Zaznacz aplikację „%s” w ustawieniach Język i wprowadzanie tekstu. Umożliwi to jej uruchamianie na urządzeniu." - "Aplikacja %s jest już włączona w ustawieniach Język i wprowadzanie tekstu. Przejdź do następnego kroku." - "Włącz w Ustawieniach" - "Przełącz się na aplikację %s" - "Następnie wybierz „%s” jako aktywną metodę wprowadzania tekstu." - "Przełącz metody wprowadzania" - "Gratulacje! Wszystko gotowe." - "Teraz możesz pisać we wszystkich swoich ulubionych aplikacjach, używając aplikacji %s." - "Skonfiguruj dodatkowe języki" - "Zakończone" - "Pokaż ikonę aplikacji" - "Wyświetlaj ikonę aplikacji w programie uruchamiającym" - "Dostawca słownika" - "Dostawca słownika" - "Usługa słownika" - "Informacje o aktualizacji słownika" - "Słowniki dodatkowe" - "Ustawienia słowników" - "Słowniki użytkownika" - "Słownik użytkownika" - "Słownik dostępny" - "Aktualnie pobierany" - "Zainstalowany" - "Zainstalowany, wyłączony" - "Problem z połączeniem z usługą słownika" - "Brak słowników" - "Odśwież" - "Ostatnia aktualizacja" - "Sprawdzanie dostępności aktualizacji" - "Wczytuję…" - "Słownik główny" - "Anuluj" - "Ustawienia" - "Zainstaluj" - "Anuluj" - "Usuń" - "Wersja %1$s" - "Dodaj" - "Dodaj do słownika" - "Fraza" - "Więcej opcji" - "Mniej opcji" - "OK" - "Słowo:" - "Skrót:" - "Język:" - "Wpisz słowo" - "Opcjonalny skrót" - "Edytuj słowo" - "Edytuj" - "Usuń" - "Brak słów w słowniku użytkownika. Aby dodać słowo, kliknij przycisk Dodaj (+)." - "Dla wszystkich języków" - "Więcej języków…" - "Usuń" - " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + + "Przeszukaj kontakty" + "Wibracja przy naciśnięciu" + "Dźwięk przy naciśnięciu" + "Powiększ po naciśnięciu" + "Ustawienia" + "Wygląd" + "Pisanie gestami" + "Korekta tekstu" + "Zaawansowane" + "Motyw" + "Włącz podzieloną klawiaturę" + "Inne metody wprowadzania" + "Klawisz zmiany języka" + "%s ms" + "Ustawienie domyślne" + "W podpowiedziach i poprawkach używaj nazwisk z kontaktów" + "Dostosowane sugestie" + "Szybka kropka ze spacją" + "Dwukrotne kliknięcie spacji wstawia kropkę ze spacją" + "Wstawiaj wielkie litery" + "Zaczynaj każde zdanie wielką literą" + "Słownik osobisty" + "Słownik główny" + "Pokazuj propozycje poprawek" + "Wyświetlaj proponowane słowa podczas wpisywania" + "Blokuj obraźliwe słowa" + "Nie proponuj słów potencjalnie obraźliwych" + "Autokorekta" + "Spacja i znaki przestankowe poprawiają błędnie wpisane słowa" + "Wyłącz" + "Umiarkowana" + "Agresywna" + "Bardzo agresywna" + "Podpowiadaj kolejne słowo" + "Pokazuj podpowiedzi na podstawie poprzedniego słowa" + "Włącz pisanie gestami" + "Wpisuj słowa, przesuwając palcem po literach" + "Pokazuj ślad gestu" + "Dynamiczny podgląd słowa" + "Gest wyrażenia" + "Wpisuj spacje podczas gestów, przesuwając palec do klawisza spacji" + "Angielski (Wielka Brytania)" + "Angielski (Stany Zjednoczone)" + "Hiszpański (USA)" + hinglish + serbski (alfabet łaciński) + %s (tradycyjny) + %s (kompaktowy) + standardowy + "Emotikony" + "Dodaj" + "Usuń" + "Zapisz" + "Język" + "Układ" + "Wibracja przy naciśniętym klawiszu" + "Głośność przy naciśniętym klawiszu" + "Opóźnienie przy długim naciśnięciu" + "Emotikony z klawiatury fizycznej" + "Naciśnięcie klawisza Alt przywołuje okienko wyboru emotikonów" + "Domyślne" + Witamy w aplikacji %s + "z pisaniem gestami" + "Rozpocznij" + Konfigurowanie aplikacji %s + Włącz aplikację %s + Zaznacz aplikację %s w ustawieniach Język i wprowadzanie tekstu. Umożliwi to jej uruchamianie na urządzeniu. + "Włącz w Ustawieniach" + Przełącz się na aplikację %s + Następnie wybierz %s jako aktywną metodę wprowadzania tekstu. + "Przełącz metody wprowadzania" + Gratulacje, wszystko gotowe! + Teraz możesz pisać we wszystkich swoich ulubionych aplikacjach, używając aplikacji %s. + Zakończ + "Pokaż ikonę aplikacji" + "Wyświetlaj ikonę aplikacji w programie uruchamiającym" + "Słowniki dodatkowe" + Dostępny słownik + "Ustawienia" + "Usuń" + Wersja %1$s + "Skrót:" + "Język:" + "Wpisz słowo" + "Opcjonalny skrót" + "Edytuj słowo" + "Dla wszystkich języków" + "Więcej języków…" + Korekty + Różne + %s min. + Bez limitu + Wyłącz naukę nowych słów + Więcej klawiszy + Rząd numeryczny + Klawisz emotikonów + Sprawdzanie pisowni HeliBoard + Ustawienia sprawdzania pisowni HeliBoard + Historia schowka + Włącz historię schowka + Wymuś tryb incognito + Czas przechowywania historii + Zawsze pokazuj rząd numeryczny + Zmień metodę wprowadzania za pomocą spacji + Pokazuj wskazówki dotyczące długiego naciśnięcia przycisku + Przesuń palcem od klawisza usuwania, aby zaznaczyć i usunąć większe fragmenty tekstu za jednym razem + Po wyłączeniu, klawisz schowka będzie wklejał zawartość schowka, jeśli taka istnieje + Gest usunięcia + Długie naciśnięcie klawisza spacji spowoduje wyświetlenie menu wyboru metody wprowadzania tekstu + Pokazuj wskazówki klawiszy + Skala wysokości klawiatury + %s (Akkhor) + Ustawienia HeliBoard + Dodatkowe klawisze + Wprowadzanie + Sugestie + Eksperymentalne + Obramowanie klawiszy + Automatyczny tryb dzienny/nocny + Wygląd będzie zgodny z ustawieniami systemu + Automatyczne wstawianie spacji po znaku interpunkcyjnym podczas wpisywania nowego słowa + Automatyczne wstawianie spacji po znaku interpunkcyjnym + Dokładność autokorekty + "Wybierz metodę wprowadzania" + "Cofnij" + "Ponów" + "Analizuj wiadomości i wpisywane dane, by otrzymywać lepsze podpowiedzi" + "OK" + "Dalej" + "Wróć" + "Gotowe" + "Wyślij" + "Szukaj" + "Pauza" + "Czekaj" + Zawsze pokazuj sugestie + Główny słownik wewnętrzny + Ciemne + Pokaż tylko główne kolory + W górę + Pisanie głosowe + Dynamiczne kolory + Pokaż wskazówki na klawiszach funkcyjnych + Wybierz plik w kompatybilnym formacie. Informacje o formatach dostępne są %s. + Tło klawiszy + Błąd podczas przywracania kopii zapasowej: %s + Kolory + Tło klawiszy funkcyjnych + %s (Sebeolsik 390) + Używaj słownika osobistego do przechowywania nauczonych słów + To słowo znajduje się już w słowniku: %s. Wpisz inne. + Zaokrąglony + Kopia + Czarne + %s (Sebeolsik Final) + Czekoladowe + Na pewno usunąć słownik \"%s\" dodany przez użytkownika? + Pochmurne + GNU General Public License v3.0 + Dzienny + Błąd: skrypt nie jest kompatybilny z tą klawiaturą + Opis ukrytych funkcji + Język (dodatkowy) + Dodawaj słowa do słownika osobistego + Ustaw obraz jako tło klawiatury + Dotknij, aby edytować układ + Różowe + Języki i układy + Nie można odczytać pliku + tutaj + Błąd: wybrany plik nie jest prawidłowym plikiem słownika + chronionej pamięci urządzenia + Koloruj pasek nawigacyjny + Leśne + Będziesz potrzebować biblioteki dla \\\'%s\\\'. Niekompatybilne biblioteki mogą powodować awarie podczas pisania gestami. +\n +\nUwaga: dodawanie zewnętrznego kodu może stanowić zagrożenie bezpieczeństwa. Korzystaj z biblioteki pochodzącej tylko z zaufanego źródła. + Wybierz słownik do dodania. Słowniki w formacie .dict można pobrać %s. + Usuń bibliotekę + W prawo + Błąd podczas dodawania słownika + Preferuj liczby lokalne zamiast łacińskich + Nieznany plik biblioteki. Czy na pewno pochodzi z zaufanego źródła i jest przeznaczony dla \\\'%s\\\'? + ► Długie naciśnięcie przypiętych klawiszy paska narzędzi zapewnia dodatkową funkcję: <br> +\n\t• schowek &#65515; wklej <br> +\n\t• w lewo/w prawo &#65515; przed słowo/za słowo <br> +\n\t• w górę/w dół &#65515; strona w górę/w dół <br> +\n\t• przed słowo/za słowo &#65515; na początek linii/na koniec linii <br> +\n\t• strona w górę/w dół &#65515; na początek strony/na koniec strony <br> +\n\t• skopiuj &#65515; wytnij <br> +\n\t• wybierz słowo &#8596; zaznacz wszystko <br> +\n\t• cofnij &#8596; ponów <br> <br> +\n► Długie naciśnięcie przycisków na pasku narzędzi spowoduje przypięcie ich do paska sugestii. <br> <br> +\n► Przytrzymaj klawisz przecinka, aby uzyskać dostęp do schowka, emotikonów, trybu jednej ręki, ustawień lub zmiany języka: <br> +\n\t• Przyciski emotikonów i zmiany języka znikną, jeśli masz włączone odpowiednie klawisze; <br> +\n\t• W niektórych układach nie jest to klawisz przecinka, tylko inny w tym samym miejscu (np. w układzie Dvorak jest to \'q\'). <br> <br> +\n► Gdy tryb incognito jest włączony, słowa nie będą pamiętane, a emotikony nie zostaną dodane do ostatnio używanych. <br> <br> +\n► Dotknij ikonkę incognito, aby uzyskać dostęp do paska narzędzi. <br> <br> +\n► Pisanie za pomocą przesuwania po klawiszu: przesuń palcem od klawisza Shift do innego klawisza, aby wpisać pojedynczą wielką literę: <br> +\n\t• Działa to również w przypadku klawisza \\\'?123\\\' do wpisywania pojedynczego symbolu z klawiatury symboli oraz podobnych klawiszy. <br> <br> +\n► Przytrzymaj Shift lub klawisz symboli, naciśnij jeden lub więcej klawiszy, a następnie puść Shift lub klawisz symboli, aby powrócić do poprzedniej klawiatury. <br> <br> +\n► Przytrzymaj sugestię na pasku sugestii, aby wyświetlić więcej sugestii oraz przycisk usuwania, aby ją usunąć. <br> <br> +\n► Przesuń palcem w górę na sugestii, aby wyświetlić więcej sugestii i puść, aby wybrać sugestię. <br> <br> +\n► Przytrzymaj wpis w schowku, aby go przypiąć (pozostanie w schowku do czasu odpięcia). <br> <br> +\n► Przesuń w lewo w widoku schowka, aby usunąć wpis (jeśli nie jest przypięty) <br> <br> +\n► Zaznacz tekst i naciśnij Shift, aby przełączać się między wielkimi i małymi literami. <br> <br> +\n► Możesz dodać słowniki otwierając je w eksploratorze plików: <br> +\n\t• Działa to tylko z <i>content-uris</i> nie z <i>file-uris</i>, co oznacza, że może nie działać z niektórymi eksploratorami plików. <br> <br> +\n► Do użytkowników wykonujących ręczne kopie zapasowe z dostępem do roota: <br> +\n\t• Od Androida 7 udostępniony plik ustawień nie znajduje się w domyślnej lokalizacji, ponieważ aplikacja korzysta z %s. Jest to konieczne, aby można było odczytać ustawienia przed odblokowaniem urządzenia, np. podczas uruchamiania; <br> +\n\t• Plik zwykle znajduje się w /data/user_de/0/package_id/shared_prefs/, ale może to zależeć od urządzenia i wersji Androida. <br> <br> +\n<i><b>Tryb debugowania / aplikacja debug</b></i> <br> <br> +\n► Przytrzymaj sugestię, aby wyświetlić słownik źródłowy. <br> <br> +\n► Korzystając z aplikacji debug, w ustawieniach zaawansowanych znajdziesz ustawienia debugowania, choć ich użyteczność jest ograniczona, z wyjątkiem dodawania słowników do dziennika zdarzeń. <br> +\n\t• W przypadku aplikacji release należy kilkukrotnie dotknąć jej wersję w sekcji <i>O aplikacji</i>, a następnie w <i>Ustawieniach zaawansowanych</i> znaleźć ustawienia debugowania.<br> +\n\t• Po włączeniu opcji <i>Pokaż informacje o sugestii</i>, sugestie będą miały na górze cyferki pokazujące wewnętrzne numery i słownik źródłowy. <br> <br> +\n► W przypadku awarii aplikacji, po otwarciu ustawień zostaniesz zapytany, czy chcesz zapisać dzienniki awarii. <br> <br> +\n► Podczas pisania wielojęzycznego spacja wyświetli wartość służącą do określenia aktualnie używanego języka. <br> <br> +\n► Sugestie będą miały na górze cyferki pokazujące wewnętrzne numery i słownik źródłowy (można to wyłączyć). + Niebiesko-szare + Tekst spacji + Jasne + Dodaj słowo + Tekst paska sugestii + Pokaż warianty zdefiniowane w językach klawiatury + Pokaż popularne warianty + Własne + Zastąp słownik + Tło klawiatury + Schowek + Indygo + Akcent + Zobacz na GitHubie + Rząd numeryczny + Przywracanie + Wybierz kolejność klawiszy w wyskakującym okienku + Wersja + Wybierz źródło wskazówek + Dodaj natywną bibliotekę, aby umożliwić pisanie gestami + Dodatkowe symbole + Próbuj wykrywać adresy URL i podobne jako pojedyncze słowo + Wybierz język + Tekst klawiszy + Dodaj bibliotekę pisania gestami + Tło spacji + Bardzo ciemne + Ustawić obraz na tryb dzienny czy nocny? + Wybierz kolor automatycznie + O aplikacji + W dół + Wybierz klawisze paska narzędzi + Licencje open source + Niebieskie + Błąd podczas tworzenia kopii zapasowej: %s + Wyświetlaj wskazówki, jeśli długie naciśnięcie klawisza uruchamia dodatkową funkcję + Piaskowe + Kopia i przywracanie + Na początek + Styl + Zaznacz słowo + Pokaż funkcje, które mogą zostać niezauważone + Kolory (tryb nocny) + W lewo + Pokaż wszystkie kolory + Na pewno chcesz usunąć układ %s? + Słowniki + Dodaj własny układ + Tekst wskazówek + Skonfiguruj klawiaturę + Symbole + Dodaj słownik z pliku + Brązowe + Na pewno zastąpić słownik \"%1$s\" dodany przez użytkownika? +\n +\nObecny słownik: +\n%2$s +\n +\nNowy słownik: +\n%3$s + Wykrywaj adresy URL + Fiołkowe + Na koniec + Lokalny rząd numeryczny + Pokaż wszystkie dostępne warianty + Zaawansowana autokorekta + Szerokość podziału + Wartość: + Ignoruj prośby innych aplikacji o wyłączenie sugestii (może powodować problemy) + Bez słownika będziesz otrzymywać jedynie sugestie dotyczące tekstu, który został wpisany wcześniej.<br> +\nSłowniki możesz pobrać %1$s lub sprawdź, czy słownik \"%2$s\" można pobrać bezpośrednio %3$s. + Zmień język + Wyczyść schowek + Nocny + Mniejszy odstęp między klawiszami + Nie pokazuj ponownie + Uwaga: wyłączenie tego ustawienia spowoduje usunięcie nauczonych podpowiedzi + Dodaj bibliotekę + Dodaj plik + Zamknij + Wysokość dolnego odstępu + Gest + Dotknij język, aby wyświetlić opcje + Pokaż więcej liter ze znakami diakrytycznymi w wyskakującym okienku + Tryb jednej ręki + Błąd układu: %s + Pisanie wielojęzyczne + Zapisz lub przywróć z pliku. Uwaga: przywrócenie spowoduje zastąpienie istniejących danych + Zapisz dziennik zdarzeń + Układ + Włącza autokorektę, nawet jeśli nie jest to wyraźnie wymagane przez pole wprowadzania + Białe Holo + Zmień oba + %s (eksperymentalny) + Symbole + Symbole (arabski) + Telefon + kaitag + Klawiatura numeryczna + Klawiatura numeryczna (poziomo) + Liczby + Symbole telefonu + Spacja - przesuwanie pionowe + Spacja - przesuwanie poziome + Przesuń kursor + Brak + Odwróć kierunek po wybraniu układu klawiatury od prawej do lewej + Zmienny kierunek paska narzędzi + %s (Probhat) + %s (Uczeń) + Przytrzymaj klawisz symboli, aby wyświetlić klawiaturę numeryczną + Zawsze używaj środkowej sugestii + Po naciśnięciu spacji lub znaku interpunkcyjnego zostanie wpisana środkowa sugestia + Zamknij schowek + Wybierz klawisze paska narzędzi w schowku + %s (rozszerzony) + mansyjski + Pokaż więcej kolorów + To ustawienie wyświetla wszystkie kolory używane wewnętrznie. Lista kolorów może w każdej chwili ulec zmianie. Domyślny kolor jest losowy, a nazwy nie zostaną przetłumaczone. + Klawisze funkcyjne + Klawisze funkcyjne (dodatkowe symbole) + Klawisze funkcyjne (symbole) + Przypnij klawisz paska narzędzi po długim naciśnięciu + Pasek narzędzi + Spowoduje to wyłączenie funkcji związanych z długim naciśnięciem klawiszy, które nie zostały przypięte + Wybierz przypięte klawisze paska narzędzi + Skopiowano + Ukryj pasek narzędzi, jeśli są dostępne sugestie + Pokaż pasek narzędzi, jeśli rozpocznie się wprowadzanie lub tekst zostanie zaznaczony + Automatyczne ukrywanie paska narzędzi + Automatyczne wyświetlanie paska narzędzi + Zachowanie klawisza zmiany języka + Emotikony + Ustaw główny i do 6 drugorzędnych symboli waluty, oddzielonych spacją + Dostosuj waluty + Dodaj + Skopiuj do schowka + Zapisz do pliku + Na początek strony + Na koniec strony + Przed słowo + Za słowo + Strona w górę + Strona w dół + Czas odnowienia dla szybkiego pisania + Sugeruj zawartość schowka + Pokaż ostatnio skopiowaną zawartość jako sugestię + Zawsze zaczynaj natychmiast + Przełącz na klawiaturę numeryczną + Przełącz na klawiaturę główną po… + Wybraniu emoji z widoku emotikonów + Wybraniu wpisu ze schowka + Naciśnięciu enter lub spacji po wpisaniu symbolu z widoku symboli + Dodaj bardzo popularne warianty (domyślne) + Pomiń klawisze, które są już obecne w układzie podstawowym + Usuń zbędne wyskakujące okienka + Zobacz sugerowane słowo podczas pisania gestami + Przesuń podgląd podczas gestu + Czas trwania śladu gestu + Pływający podgląd + Styl ikon + Rząd numeryczny + Własny tekst na klawiszu spacji + Dolny rząd w widoku emotikonów + Dolny rząd w widoku schowka + Enter + Tabulator + Shift + Shift (aktywowany) + Caps lock + Spacja (układ liczb) + Wyłącz tryb jednej ręki + Zmiana rozmiaru trybu jednej ręki + Usuwanie + Wprowadzanie głosowe wyłączone + Pokaż/ukryj pasek narzędzi + Dostosuj kody klawiszy paska narzędzi + Kod klawisza + Kod długiego naciśnięcia + Dostosuj ikony + Zmień stronę trybu jednej ręki + Łącznik o zerowej szerokości + Niełącznik o zerowej szerokości + Usuń + Na pewno zresetować wszystkie dostosowane ikony? + Wibracje w trybie nie przeszkadzać + %s (fonetyczny) + Dargwa (Urakhi) + Zastąp wersję emoji + Autokorekta skrótów + Po włączeniu skróty mogą być rozwijane przez autokorektę + Dodaj niestandardową czcionkę z pliku + Na pewno usunąć wszystkie dostosowane kody klawiszy? + Ustaw obraz jako tło klawiatury (poziomo) + Jeśli nie ustawiono, zostanie użyty obraz portretowy + Rozmiar czcionki klawiatury + Rozmiar czcionki w widoku emoji + Rozmiar bocznego odstępu + Pokaż wskazówki na wierszu numerycznym + Zmień język - odległość przesunięcia + Włącz podzieloną klawiaturę (poziomo) + Podziel klawiaturę + Na pewno usunąć %s? + Inne układy + Klawisze funkcyjne (tablet) + Nieprawidłowa nazwa + Języki ze słownikami + Ostrzeżenie: ten układ jest aktualnie używany + Motywy możesz znaleźć i udostępnić w %s. + Układy możesz znaleźć i udostępnić w %s. + sekcji dyskusji + Własny układ + %s (Baishakhi) + Pokaż wyskakujące okienka TLD + Zastąp wyskakujące okienka klawisza kropki domenami najwyższego poziomu podczas wpisywania adresów URL i adresów e-mail + Naciśnięciu enter lub spacji po innych klawiszach w klawiaturze numerycznej + Rząd numeryczny (podstawowy) + Nie zawsze pokazuj sugestie dla pól edycji w sieci + Pola edycji w sieci (zwykle znajdujące się w przeglądarkach) są bardzo częstą przyczyną problemów z ustawieniem \"zawsze pokazuj sugestie\" + Spacja + Automatyczna spacja po wybraniu sugestii + Automatyczna spacja po wpisaniu słowa gestem + Brak automatycznej spacji po wciśnięciu shift + Shift usuwa automatyczną spację + Backspace cofa autokorektę + Automatyczna spacja przed wpisaniem słowa gestem + Format klawisza znacznika czasu + dagbani + sesotho + Skaluj rozmiar emotikonów w zależności od rozmiaru czcionki + Kopia zapasowa przywrócona + Używaj nazw zainstalowanych aplikacji do sugestii i poprawek + Przeszukaj nazwy aplikacji + Domyślny odcień skóry emoji + Neutralny + %1$s (%2$s) + Tryb paska narzędzi + Klawisze i sugestie + Tylko klawisze + Tylko sugestie + Ukryty + Ukryj także paski schowka i emotikonów + Poziomo + Kolejność wyskakujących okienek i źródło wskazówek + Pokaż opis emoji po długim naciśnięciu + Używaj słownika emotikonów w normalnych sugestiach + Sugeruj emotikony + Sugestie interpunkcji + Pokaż znaki interpunkcyjne, gdy nie ma innych sugestii + Ukryj klawiaturę + Przejdź do Wiki + Każdy użytkownik GitHuba może ulepszać Wiki! + Pokaż przypięte elementy na górze + Zapamiętaj język dla każdej aplikacji + Mari (wschodni) + %s (Khipro) + Wbudowane wyszukiwanie emotikonów + Sugeruj emotikony tylko wtedy, gdy przed słowem znajduje się dwukropek + Do działania tej funkcji potrzebny jest słownik emotikonów. Słowniki w formacie .dict można pobrać %s. diff --git a/app/src/main/res/values-port/setup-dimens-small-phone-port.xml b/app/src/main/res/values-port/setup-dimens-small-phone-port.xml deleted file mode 100644 index cf2751f1b2..0000000000 --- a/app/src/main/res/values-port/setup-dimens-small-phone-port.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - 40sp - 20sp - 18sp - 18dp - 18sp - 14sp - 16sp - 2dp - 12dp - 42dp - 20dp - 10dp - 12dp - 2dp - 40 - 60 - 16dp - 4dp - 12dp - 12dp - 70 - 30 - diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index d55d0638c0..87ec73e91b 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1,215 +1,454 @@ - - Configurações do OpenBoard - Opções de entrada + + Configurações do HeliBoard Vibrar ao tocar nas teclas Som ao tocar nas teclas - O corretor ortográfico usa entradas da sua lista de contatos - Aparência e Layouts - Escrita com Gestos - Correção de Texto + Digitação por gestos + Correção de texto Avançado Tema Entrada - Teclas Adicionais + Teclas adicionais Correções Outros Ativar teclado dividido - Experimento - Tecla para mudar de idioma também cobre outros métodos de entrada - Sem atraso - Padrão - Usar nomes de contatos para correções e sugestões + Experimentos + Usar nomes de contatos para sugestões e correções Sugestões personalizadas Duplo espaço para ponto - Tocar duas vezes na barra de espaço insere um ponto e um espaço + Tocar duas vezes na barra de espaço insere um ponto seguido por um espaço Maiúsculas automáticas - Primeira palavra de cada frase com letra maiúscula - Adicionar dicionários + Começar cada palavra de cada frase com letra maiúscula Bloquear palavras ofensivas - Não sugerir palavras ofensivas - Correção automática + Não sugerir palavras potencialmente ofensivas + Correção automática Desligado - Moderado + Modesto Agressivo Muito agressivo - Sugerir palavra seguinte - Ativar escrita com gestos - Inserir uma palavra deslizando pelas letras + Sugerir palavra(s) seguinte(s) + Ativar digitação por gestos + Insira uma palavra ao deslizar pelas letras Mostrar rastro do gesto - Previsão dinâmica flutuante - Ver a palavra sugerida ao usar gestos - Inserir espaços durante gestos ao deslizar até a tecla de espaço - Tecla da área de transferência - Ativar área de transferência - Deslize a tecla delete para selecionar e remover partes maiores de texto de uma só vez + Pré-visualização flutuante dinâmica + Insira espaços durante gestos ao deslizar pela tecla de espaço + Ativar histórico da área de transferência + Deslize da tecla delete para selecionar e remover partes de texto maiores de uma vez só Deslizar para apagar - Forçar modo anônimo - Desativar aprendizagem de palavras + Forçar modo privativo + Desativar aprendizagem de novas palavras Mais teclas - Configurar métodos de entrada - Idiomas - Ajuda e comentários - Idiomas - Tema do teclado Mostrar dicas de teclas Mostrar dicas com toque longo - Toque longo na tecla Espaço abre menu de seleção do método de entrada - Ativar redimensionamento do teclado - Escala de altura do teclado - Alternar contas - Nenhuma conta selecionada + Segurar na tecla de espaço mostrará um menu de seleção de metódo de entrada + Escala da altura do teclado Sempre mostrar a linha de números - OK - Cancelar - Sair Inglês (Reino Unido) - Inglês (EUA) - Espanhol (EUA) - Hindi-Inglês - Sérvio (Latino) - Espanhol (EUA) (%s) - Sérvio %s - Nepali (Nepal) %s (Tradicional) - Bengali (Bangladesh) %s (Akkhor) - Alfabeto (PC) + Inglês (Estados Unidos) + Espanhol (Estados Unidos) + Hinglês + Sérvio (Latino) + %s (Tradicional) + %s (Akkhor) Emojis - Tema do teclado - Estilos personalizados - Adicionar estilo Adicionar Remover Salvar Idioma Layout - Ativar - Agora não - Seu estilo de entrada personalizado precisa ser ativado antes de começar a usá-lo. Deseja ativá-lo agora\? - Volume ao tocar na tecla - Tempo de pressão nas teclas + Volume do som ao pressionar uma tecla + Atraso ao pressionar e segurar uma tecla Emojis para teclado físico - Tempo de vibração ao tocar em teclas + Duração da vibração ao pressionar uma tecla Padrão - com Escrita por Gestos - Iniciar Configuração - Próxima etapa - Ative o %s - Ative nas Configurações - Alternar métodos de entrada - Parabéns, configuração concluída! - Configurar idiomas adicionais - Mostrar ícone do aplicativo - Serviço de dicionário - Informações de atualização do dicionário - Adicionar dicionários - Dicionário da(o) usuária(o) - Instalado - Baixando - Instalado, desativado - Erro ao contatar o serviço de dicionário - Nenhum dicionário disponível - Atualizar - Última atualização - Procurando atualizações - Carregando… - Configurações - Cancelar - Apagar - Adicionar - Mais opções + com Digitação por Gestos + Começar + Ative %s + Ativar nas Configurações + Alterar os métodos de entrada + Parabéns, está tudo pronto! + Mostrar ícone do app + Adicionar dicionários + Configurações + Apagar Atalho: Idioma: Editar palavra - Não existem palavras no dicionário da(o) usuária(o). Para adicionar uma palavra, toque na tecla (+). Para todos os idiomas Mais idiomas… - Apagar - " ABCDEFGHIJKLMNOPQRSTUVWXYZ" - Variante do tema - Família do tema - Borda em teclas - Fundo muito escuro - Reduzir o uso de energia (dependendo da tecnologia de tela do dispositivo) - Corretor Ortográfico do OpenBoard - Configurar corretor ortográfico do OpenBoard - Procurar nomes de contatos - Contas e Privacidade - Mostrar teclas em pop-up ao digitar + Bordas nas teclas + Verificador ortográfico do HeliBoard + Configurações do verificador ortográfico do HeliBoard + Buscar por nomes de contatos + Mostrar pop-up ao tocar em teclas Preferências - Área de transferência + Histórico da área de transferência Sugestões - %sms - %smin. + %s ms + %s min Sem limite - Mostrar se estiverem ativados vários idiomas - Melhorar %s - Padrão do Sistema - Sugerir nomes de contatos + Padrão do sistema Dicionário pessoal Dicionário principal Mostrar sugestões de correção Gesto de frase - Mostrar sugestões durante a digitação - A barra de espaço e a pontuação corrigem automaticamente as palavras com erro - Utilizar palavra anterior para efetuar sugestões - Alterar método de entrada com a tecla Espaço - \'Trackpad\' na barra de espaço - Nenhum método de entrada por voz ativado. Verifique as definições de Idioma e Entrada. + Mostrar sugestões durante a escrita + A barra de espaço e a pontuação corrigem automaticamente as palavras escritas incorretamente + Usar a palavra anterior para criar sugestões + Alterar método de entrada com a tecla de espaço Tempo de retenção do histórico - Deslize na barra de espaço para mover o cursor Linha de números - Toque novamente para salvar - Dicionário disponível - Selecione a conta a usar - Inglês (Reino Unido) %s - Inglês (EUA) %s - Hindi-inglês %s - Nenhum idioma (alfabeto) - Alfabeto (QWERTY) - %s já está ativado nas configurações de Idioma e Entrada. Esta etapa já está concluída. Vamos avançar para a próxima! - Alfabeto (QWERTZ) - Alfabeto (AZERTY) - Alfabeto (Dvorak) - Alfabeto (Colemak) - Alfabeto (Colemak Mod-DH) - Alfabeto (Workman) - O estilo de entrada já existe: %s - Bem-vindo ao %s - Mostra o teclado de emojis ao tocar na tecla Alt - A configurar %s - Ative-o %s em \"Idiomas e Entrada\" nas configurações. Assim, já poderá executar a aplicação no dispositivo. + Nenhum idioma + Bem-vindo ao %s + Mostrar a paleta de emojis ao tocar na tecla Alt física + Configurando %s + Ative o \"%s\" em \'Idiomas e Entrada\' nas configurações. Isso permitirá que ele seja usado no seu dispositivo. Concluído - Mostrar ícone da aplicativo no \'Lançador\' - Fornecedor de dicionário - Configurações para dicionários + Mostrar o ícone do app na launcher Dicionário disponível - Alternar para %s - Em seguida, selecione \"%s\" como método de entrada. - Dicionários da(o) usuária(o) - OK - Agora, já pode utilizá-lo %s para digitar nos seus aplicativos. - Fornecedor de dicionário - Dicionário principal - Cancelar - Instalar - Adicionar ao dicionário - Versão %1$s - Frase - Menos opções - Apagar - Palavra: + Alternar para %s + Em seguida, selecione o \"%s\" como o seu método de entrada ativo. + Agora, você pode usar o %s para digitar nos seus apps favoritos. + Versão %s Escreva uma palavra Atalho opcional - Editar - Modo diurno/noturno automático - A aparência seguirá as configurações de tema do sistema - Atualmente utilizando %1$s - Mudar para outros métodos de entrada - Tecla para mudar de idioma - Tecla de Emojis - Híndi %s (Compacto) - Duração do popup da tecla - Tecla de Entrada por Voz - Se desativada, a tecla da área de transferência colará o conteúdo na área de transferência, caso exista - Toque novamente para salvar - \ No newline at end of file + Modo de dia/noite automático + A aparência seguirá as configurações do sistema + Alterar para outros métodos de entrada + Tecla de alteração de idioma + Tecla de emoji + %s (Compacto) + Se desativado, a tecla da área de transferência somente colará o conteúdo na área de transferência + Espaço automático após pontuação + Inserir um espaço automaticamente após a pontuação ao digitar uma nova palavra + Confiança da correção automática + Selecionar método de entrada + "Desfazer" + "Refazer" + Usar o dicionário pessoal do dispositivo para armazenar palavras aprendidas + Erro de backup: %s + Erro restaurando o backup: %s + Fazer backup + Restaurar + Teclas com espaços estreitos + Digitação multilinguagem + Carregar biblioteca de digitação por gestos + Fornece uma biblioteca nativa para permitir a digitação por gestos + Você precisará da biblioteca para \'%s\'. Bibliotecas incompatíveis podem travar ao usar a digitação com gestos. +\n +\nAviso: carregar código externo pode ser um risco à segurança. Use apenas uma biblioteca de uma fonte confiável. + Arquivo de biblioteca desconhecido. Tem certeza de que o obteve de uma fonte confiável, e que é para \'%s\'? + Carregar biblioteca + Mostrar variantes configuradas nos idiomas do teclado + Adicionar variantes comuns + Adicionar todas as variantes disponíveis + Detecção de URL + Tentar detectar URLs e similares como uma única palavra + Idiomas & Layouts + Localizar linha de números + Selecionar fonte de dicas + Selecionar ordem do pop-up de teclas + Linha de números + Idioma (prioridade) + Layout + Símbolos + Área de transferência + Limpar a área de transferência + Entrada de voz + Selecionar palavra + Modo de uma mão só + Mostrar dicas funcionais + Apagar biblioteca + Preferir números localizados em vez de latim + Mostrar mais letras com diacríticos no pop-up + Direção da barra de ferramentas variável + Distância de separação + Alterar ambos + Adicionar palavras ao dicionário pessoal + Mais autocorreção + Automaticamente corrigir mesmo quando não explicitamente solicitado pelo campo de entrada + Backup e restauração + Salvar ou carregar para/de um arquivo. Aviso: A restauração substituirá dados existentes + Carregar arquivo + Não foi possível ler o arquivo + Erro de layout: %s + Configurar imagem para o modo de dia ou noite? + Dia + Noite + Selecionar idioma + Aprender de suas comunicações e dados digitados para melhorar sugestões + Versão + Sempre mostrar sugestões + Alerta: Desativar esta opção limpará dados aprendidos + Ignorar a solicitação de outros apps de desativar as sugestões (pode causar problemas) + Deseja realmente apagar o layout customizado %s? + Configurar imagem de fundo + Configurar o teclado + Adicionar dicionário por um arquivo + Fundo do teclado + Espera + %s (Probhat) + "Sem um dicionário, você receberá apenas sugestões para o texto digitado antes.<br>\n Você pode baixar dicionários %1$s, ou verifique se um dicionário para \"%2$s\" pode ser baixado diretamente %3$s." + Essa palavra já está presente no dicionário do usuário %s. Digite outra. + Texto da tecla + Fundo da barra de espaço + Mostrar funções que podem passar despercebido + Alterar idioma + Selecionar teclas da barra de ferramentas + Inteiramente para a esquerda + Inteiramente para a direita + Esquerda + Direita + Cima + Baixo + Mostrar dicas se um toque longo numa tecla ativa funcionalidade adicional + Escala do preenchimento da parte inferior + Kaitag + Destaque + Gesto de deslizar horizontal na barra de espaço + Mover cursor + %s (Sebeolsik 390) + %s (Sebeolsik Final) + Adicionar layout customizado + Selecionar um arquivo num formato compatível. Infomações sobre os formatos estão disponíveis em %s. + Toque para editar o layout bruto + Símbolos + Símbolos (Árabe) + Mais símbolos + Telefone + Símbolos de telefone + Números + Teclado númerico + Teclado numérico (paisagem) + Dicionários + Dicionário interno principal + Deseja realmente substituir o dicionário \"%1$s\" adicionado pelo usuário? +\n +\nDicionário atual: +\n%2$s +\n +\nDicionário novo: +\n%3$s + Substituir dicionário + Deseja realmente excluir o dicionário \"%s\" adicionado pelo usuário? + Não mostrar novamente + Selecione um dicionário para adicionar. Dicionários no formato .dict podem ser baixados %s. + aqui + %s (experimental) + Erro: Arquivo selecionado não é um arquivo de dicionário válido + Erro: script não compatível com esse teclado + Erro carregando o arquivo de dicionário + Peso: + Adicionar palavra + Estilo + Arredondado + Cores + Cores (noite) + Cor da barra de navegação + Claro + Holo White + Escuro + Mais escuro + Preto + Cores dinâmicas + Cinza azul + Marrom + Chocolate + Nublado + Foresta + Índigo + Oceano + Rosa + Areia + Violeta + Configurado pelo usuário + Escolher cor automaticamente + Mostrar somente cores principais + Mostrar todas as cores + Texto da dica da tecla + Texto da faixa de sugestão + Fundo da tecla + Fundo da tecla funcional + Texto da barra de espaço + Entrada de gesto + Sobre + Veja no GitHub + Salvar registros + Licença de código aberto + Fechar + Toque no idioma para abrir configurações + Aparência + Descrição de funções escondidas + armazenamento protegido pelo dispositivo + Ir + Pronto + Enviar + Pesquisar + Pausar + Anterior + Próximo + Gesto de deslizar vertical na barra de espaço + Nenhum + Inverter a direção quando um teclado do subtipo direita-para-esquerda é selecionado + Pressione longamente a tecla de símbolos para abrir o teclado numérico + Cortar + %s (Estudante) + Licença Pública Geral GNU v3.0 + Sempre usar a sugestão do meio + Ao pressionar espaço ou pontuação, a sugestão do meio será inserida + Fechar histórico da área de transferência + Selecionar teclas da barra de ferramentas de área de transferência + %s (Extendido) + Essa configuração expõe todas as cores que são usadas internamente. A lista de cores pode mudar a qualquer momento. A cor padrão é aleatória, e os nomes não são traduzidos. + Selecionar teclas fixadas da barra de ferramentas + Começar instantaneamente sempre + Tempo de espera para digitação rápida + Fixar tecla da barra de ferramentas em toque longo + Customizar moedas + Mostrar a barra de ferramentas se a digitação começar ou se o texto é selecionado + Automaticamente mostrar a barra de ferramentas + Ocultar barra de ferramentas automaticamente + Esconder a barra de ferramentas quando sugestões ficam disponíveis + Conteúdo copiado + Configure um símbolo principal e até 6 secundários para moedas, separado com espaço + Comportamento da tecla de alteração de idioma + Carregar + Salvar para arquivo + Copiar para a Área de Transferência + Emoji + Isto desativará outras ações de toque longo para teclas da barra de ferramentas que não estão fixadas + Barra de Ferramentas + Começo da página + Final da página + Palavra para a esquerda + Palavra para a direita + Página para baixo + Sugerir conteúdo da área de transferência + Mostrar conteúdo recentemente copiado da área de transferência como uma sugestão + Página para cima + Mansi + Mostrar mais cores + Teclas funcionais + Teclas funcionais (Símbolos) + Teclas funcionais (Mais símbolos) + Altere para o teclado principal depois… + Selecionando entrada do histórico da área de transferência + Selecionando emoji na tela de emoji + Pressionando enter ou espaço após outras teclas na tela de símbolos + Ativar teclado numérico + Adicionar variantes muito comuns (padrão) + Remover pop-ups redundantes + Suprimir pop-ups de teclas que já estão presentes no layout base + Pré-visualização flutuante + Veja a palavra sugerida ao usar os gestos + Mover a pré-visualização durante um gesto + Tempo de vida do percurso do gesto + Estilo do ícone + Linha de números + Texto customizado na barra de espaço + Linha inferior de emojis + Linha inferior da área de transferência + Enter + Tab + Delete + Shift + Shift (ativado) + Caps lock + Desativar modo de uma mão só + Espaço (layout de número) + Alterar o tamanho do modo de uma mão só + Mudar o lado do modo de uma mão só + Entrada de voz desativada + Mostrar / ocultar barra de ferramentas + Conector de zero largura + Não-conector de zero largura + Customizar códigos de teclas da barra de ferramentas + Código de tecla + Pressionar código + Customizar ícones + ► Pressionar em teclas da barra de ferramentas resulta em funcionalidade adicional: <br>\n\t• área de transferência &#65515; colar <br>\n\t• mover para esquerda/direita &#65515; palavra para esquerda/direita <br>\n\t• mover para cima/baixo &#65515; página para cima/baixo <br>\n\t• palavra para esquerda/direita &#65515; linha começo/fim <br>\n\t• página para cima/baixo &#65515; página começo/fim <br>\n\t• copiar &#65515; recortar <br>\n\t• selecionar palavra &#8596; selecionar tudo <br>\n\t• desfazer &#8596; refazer <br> <br>\n► Pressionar nas teclas da barra de sugestões fixam as mesmas. <br> <br>\n► Pressionar na tecla da vírgula para acessar a visualização da área de transferência, modo de uma mão só, configurações, ou mudar de idioma: <br>\n\t• A Visualização de Emojis e Mudança de Idioma desaparecerão se você tiver a tecla correspondente ativada; <br>\n\t• Para alguns layouts, não é a tecla de vírgula, mas a tecla que seria no mesmo lugar. (ex: \\\'q\'\\ para o layout Dvorak). <br> <br>\n► Quando o modo privado está ativado, nenhuma palavra será aprendida, e nenhum emoji será adicionado aos recentes. <br> <br>\n► Pressione no botão do modo privado para acessar a barra de ferramentas. <br> <br>\n► Digitação por gestos: Deslize do shift até outra tecla para escrevê-la em maiúsculo: <br>\n\t• Isto também funciona para as teclas \\\'?123\\\' para escrever um único símbolo do teclado de símbolos, e para teclas relacionadas. <br> <br>\n► Pressione a tecla shift ou de símbolos, pressione uma ou mais teclas, e então solte a tecla do shift ou de símbolos para retornar ao teclado anterior. <br> <br>\n► Pressione em una sugestão na barra de sugestões para mostrar mais sugestões, e um botão para apagar esta sugestão. <br> <br>\n► Deslize para cima a partir de uma sugestão para abrir mais sugestões, e solte na sugestão que selecionar para usá-la. <br> <br>\n► Pressione em um item no histórico da área de transferência para fixá-lo (mantê-lo na área de transferência até que você o desafixe). <br> <br>\n► Deslize para a esquerda na visualização da área de transferência para remover um item (exceto quando estiver fixado) <br> <br>\n► Selecione texto e pressione shift para alternar entre maiúsculo , minúsculo, e escrever palavras com letra maiúscula. <br> <br>\n► Você pode adicionar dicionários abrindo-os em um explorador de arquivos: <br>\n\t• Isto somente funciona com <i>content-uris></i> e não com <i>file-uris</i>, significando que pode não funcionar com certos exploradores de arquivos.\n► Para usuários fazendo backups manual com acesso root: <br>\n\t• Começando com o Android 7, o arquivo de preferências compartilhado não está na localização padrão, por que o app está usando %s. Isto é necessário para que as configurações possam ser lidas antes que o dispositivo seja desbloqueado, como por exemplo no boot; <br>>\n\t• O arquivo está localizado em /data/user_de/0/package_id/shared_prefs/ porém isto pode depender do dispositivo e versão do Android. <br> <br>\n<i><b>Modo de depuração / APK de depuração</b></i> <br> <br>\n► Pressionar em uma sugestão mostrará o dicionário de origem. <br> <br>\n► Ao usar o APK de depuração, você pode encontrar configurações de depuração dentro das opções avançadas, porém a utilidade é limitada exceto à exportar dicionários nos registros. <br>\n\t• Para o APK de lançamento, você precisará tocar na versão em <i>Sobre</i> várias vezes, e assim você poderá encontrar as opções de depuração em <i>Preferências Avançadas</i>. <br>\n\t• Ao ativar <i>Mostrar informações de sugestão</i>, sugestões terão pequenos números em cima mostrando sua pontuação interna e dicionário de origem. <br> <br>\n► No evento de um crash do aplicativo, você será perguntado caso você queira os registros do crash quando abrir as Configurações. <br> <br>\n► Ao usar digitação multi-linguagem, a barra de espaço mostrará um número de confiança para determinar a linguagem atualmente usada. <br> <br>\n► Sugestões terão pequenos números em cima mostrando sua pontuação interna e dicionário de origem (pode ser desativado). + Você deseja realmente reconfigurar todos os ícones personalizados? + Lixeira + Vibrar no modo Não Perturbe + %s (Fonético) + Sobrescrever versão de Emoji + Realmente limpar todos os códigos de tecla customizados? + Auto-corrrigir atalhos + Quando atalhos ativados podem ser expandidos pela correção automática + Configurar fonte customizada de um arquivo + Configurar imagem de fundo (paisagem) + Se não configurado, a imagem de retrato será usada + Dargínico (Urakhi) + Escala da fonte do teclado + Escala da fonte na visualização de emoji + Escala do espaço lateral + Mostrar dicas na linha de números + Distância do deslize para alterar idioma + Teclado separado + Ativar teclado separado (paisagem) + Realmente apagar %s? + Layouts secundários + Teclas funcionais (tela grande) + Nome inválido + Idiomas com dicionários + Alerta: o layout está em uso atualmente + Você pode encontrar e compartilhar cores em %s. + Você pode encontrar e compartilhar layouts em %s. + seção de discussão + Subtipo customizado + %s (Baishakhi) + Mostrar teclas de TLD + Substituir os pop-ups da tecla de ponto com domínios de topo ao digitar URLs e endereços de e-mail + Pressionando enter ou espaço após outras teclas no teclado de números + Linha de números (básica) + Não mostrar sugestões para campos de edição da web sempre + Campos de edição da web (encontrados normalmente em navegadores) são uma causa comum de problemas com a configuração de sempre mostrar sugestões + Espaço + Espaço automático após escolher uma sugestão + Espaço automática após digitar uma palavra com gestos + Sem espaço automático ao pressionar shift + O shift remove o espaço automático pendente + O backspace reverte a autocorreção + Espaço automático antes de digitar uma palavra com gestos + Formato da tecla de horário + Dagani + Sesoto + Redimensionar tamanho da tecla de emoji com o tamanho da fonte + O backup foi restaurado + Procurar nomes de apps + Usar nomes de apps instalados para sugestões e correções + Cor de pele padrão para os emojis + Neutra + %1$s (%2$s) + Modo da barra de ferramentas + Ocultar a área de transferência e as barras de ferramentas de emoji também + Teclas da barra de ferramentas e sugestões + Somente teclas da barra de ferramentas + Somente sugestões + Oculta + Paisagem + Ordem das teclas de pop-up e fonte de dicas + Mostrar descrição do emoji ao pressionar + Sugerir emojis + Usar dicionário de emojis em sugestões normais + Ocultar teclado + Sugestões de pontuação + Mostrar pontuação quando não há outras sugestões + Ir para a Wiki + A wiki pode ser melhorada por qualquer usuário do GitHub! + Lembrar idioma por app + Mostrar itens fixados no topo + %s (Khipro) + Busca por emojis embutida + Sugerir apenas emojis quando uma palavra for precedida por dois pontos + Um dicionário de emoji é necessário para esta funcionalidade. Dicionários no formato .dict podem ser baixados %s. + Mari (Oriental) + Fileira inferior de emojis com tecla de ação + Fileira inferior da área de transferência com tecla de ação + Mostrar linha de números no modo de símbolos + Definir fonte de emojis personalizada a partir de um arquivo + diff --git a/app/src/main/res/values-pt-rPT/strings-action-keys.xml b/app/src/main/res/values-pt-rPT/strings-action-keys.xml deleted file mode 100644 index 73a6c498f4..0000000000 --- a/app/src/main/res/values-pt-rPT/strings-action-keys.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - "Ok" - "Seg." - "Ant." - "Conc." - "Env." - "Pesquisar" - "Pausa" - "Esp." - diff --git a/app/src/main/res/values-pt-rPT/strings-config-important-notice.xml b/app/src/main/res/values-pt-rPT/strings-config-important-notice.xml deleted file mode 100644 index 38e2499d4e..0000000000 --- a/app/src/main/res/values-pt-rPT/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "Aprender com comunicações e dados introd. para melhorar sugestões" - diff --git a/app/src/main/res/values-pt-rPT/strings-emoji-descriptions.xml b/app/src/main/res/values-pt-rPT/strings-emoji-descriptions.xml deleted file mode 100644 index 6bc3dce58d..0000000000 --- a/app/src/main/res/values-pt-rPT/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "Símbolo de Direitos de Autor" - "Símbolo de marca registada" - "Duplo ponto de exclamação" - "Pontos de exclamação e de interrogação" - "Símbolo de marca comercial" - "Fonte de informação" - "Seta para a direita e para a esquerda" - "Seta para cima e para baixo" - "Seta para noroeste" - "Seta para nordeste" - "Seta para sudeste" - "Seta para sudoeste" - "Seta para a esquerda em U" - "Seta para a direita em U" - "Relógio" - "Ampulheta" - - - - - "Triângulo duplo preto a apontar para a direita" - "Triângulo duplo preto a apontar para a esquerda" - "Triângulo duplo preto a apontar para cima" - "Triângulo duplo preto a apontar para baixo" - - - - - - - "Despertador" - - - - - "Ampulheta com areia a cair" - - - - - - - "M latino maiúsculo redondo" - "Quadrado preto pequeno" - "Quadrado branco pequeno" - "Triângulo preto a apontar para a direita" - "Triângulo preto a apontar para a esquerda" - "Quadrado branco médio" - "Quadrado preto médio" - "Quadrado branco pequeno/médio" - "Quadrado preto pequeno/médio" - "Sol preto com raios" - "Nuvem" - - - - - - - "Telefone preto" - "Caixa com marca de visto" - "Chapéu de chuva com gotas de chuva" - "Bebida quente" - - - "Dedo indicador branco a apontar para cima" - - - - - - - - - - - - - - - - - - - "Cara branca sorridente" - "Carneiro" - "Touro" - "Gémeos" - "Caranguejo" - "Leão" - "Virgem" - "Balança" - "Escorpião" - "Sagitário" - "Capricórnio" - "Aquário" - "Peixes" - "Carta de espadas" - "Carta de paus" - "Carta de copas" - "Carta de ouros" - "A escaldar" - "Símbolo de reciclagem universal preto" - "Sinal de cadeira de rodas" - - - "Âncora" - - - - - - - - - - - - - "Sinal de aviso" - "Sinal de alta voltagem" - "Círculo branco médio" - "Círculo preto médio" - - - - - "Bola de futebol" - "Basebol" - "Boneco de neve sem neve" - "Sol encoberto" - - - "Serpentário" - - - - - - - "Sinal de entrada proibida" - - - "Igreja" - - - - - "Fonte" - "Bandeira no buraco" - - - "Barco à vela" - - - - - - - "Tenda" - "Bomba de gasolina" - "Tesoura preta" - "Marca de visto branca sólida" - "Avião" - "Envelope" - "Punho erguido" - "Mão erguida" - "Mão em V de vitória" - - - "Lápis" - "Ponteira de caneta preta" - "Marca de visto sólida" - "Sinal de multiplicação sólido" - - - - - "Centelhas" - "Asterisco" - "Estrela preta de oito pontas" - "Floco de neve" - "Centelha" - "Marca de visto" - "Marca de visto negativo quadrada" - "Decoração de ponto de interrogação preto" - "Decoração de ponto de interrogação branco" - "Decoração de ponto de exclamação branco" - "Símbolo de ponto de exclamação sólido" - - - "Coração preto sólido" - "Sinal de mais sólido" - "Sinal de menos sólido" - "Sinal de dividir sólido" - "Seta preta para a direita" - "Laço encaracolado" - "Laço encaracolado duplo" - "Seta curvada para cima" - "Seta curvada para baixo" - "Sete preta para a esquerda" - "Seta preta para cima" - "Seta preta para baixo" - "Quadrado preto grande" - "Quadrado preto grande" - "Estrela branca média" - "Círculo sólido grande" - "Traço ondulado" - "Símbolo de entrada na música" - "Ideograma circular de felicitações" - "Ideograma circular de segredo" - "Mosaico de Mahjong dragão vermelho" - "Joker preto de baralho de cartas" - "Tipo sanguíneo A" - "Tipo sanguíneo B" - "Tipo sanguíneo O" - "Parque de Estacionamento" - "Tipo sanguíneo AB" - "CL quadrado" - "\"Cool\" quadrado" - "\"Free\" quadrado" - "\"ID\" quadrado" - "\"New\" quadrado" - "\"NG\" quadrado" - "\"OK\" quadrado" - "\"SOS\" quadrado" - "\"Up\" quadrado com ponto de exclamação" - "\"vs\" quadrado" - "\"Katakana here\" quadrado" - "\"katakana service\" quadrado" - "Ideograma quadrado gratuito" - "Ideograma quadrado com reserva" - "Ideograma quadrado de proibição" - "Ideograma quadrado de vaga" - "Ideograma quadrado de aceitação" - "Ideograma quadrado de ocupação total" - "Ideograma quadrado pago" - "Ideograma quadrado mensal" - "Ideograma quadrado de aplicação" - "Ideograma quadrado de desconto" - "Ideograma quadrado de negócios" - "Ideograma circular de vantagem" - "Ideograma circular de aceitação" - "Ciclone" - "Enevoado" - "Chapéu de chuva fechado" - "Noite estrelada" - "Nascer do sol na montanha" - "Nascer do sol" - "Silhueta de cidade ao anoitecer" - "Pôr do sol atrás dos prédios" - "Arco-íris" - "Ponte à noite" - "Onda" - "Vulcão" - "Via Láctea" - "Globo terrestre Europa-África" - "Globo terrestre Américas" - "Globo terrestre Ásia-Austrália" - "Globo com os meridianos" - "Símbolo de lua nova" - "Símbolo de lua crescente" - "Símbolo de lua em quarto crescente" - "Lua crescente convexa" - "Símbolo de lua cheia" - "Símbolo de lua minguante convexa" - "Símbolo de lua em quarto minguante" - "Símbolo de lua em quarto minguante" - "Lua crescente" - "Lua nova com cara" - "Lua em quarto crescente com cara" - "Lua em quarto minguante com cara" - "Lua cheia com cara" - "Sol com cara" - "Estrela brilhante" - "Estrela cadente" - - - - - - - - - - - - - - - - - - - - - - - - - - - "Castanha" - "Plântula" - "Árvore de folha persistente" - "Árvore de folha caduca" - "Palmeira" - "Cato" - - - "Túlipa" - "Cerejeira em flor" - "Rosa" - "Hibisco" - "Girassol" - "Margarida" - "Milho" - "Planta de arroz" - "Ervas" - "Trevo-de-quatro-folhas" - "Folha de ácer" - "Folha a cair" - "Folha a esvoaçar ao vento" - "Cogumelo" - "Tomate" - "Beringela" - "Uvas" - "Melão" - "Melancia" - "Tangerina" - "Limão" - "Banana" - "Ananás" - "Maçã vermelha" - "Maçã verde" - "Pera" - "Pêssego" - "Cerejas" - "Morango" - "Hambúrguer" - "Fatia de piza" - "Osso com carne" - "Perna de frango" - "Biscoito de arroz" - "Bolinho de arroz" - "Arroz cozinhado" - "Arroz e caril" - "Caçarola" - "Esparguete" - "Pão" - "Batatas fritas" - "Batata doce assada" - "Dango" - "Oden" - "Sushi" - "Camarão frito" - "Pastel de peixe em turbilhão" - "Gelado cremoso" - "Gelado \"shaved ice\"" - "Gelado" - "Donut" - "Biscoito" - "Barra de chocolate" - "Guloseima" - "Chupa-chupa" - "Pudim" - "Pote de mel" - "Bolacha amanteigada" - "Caixa de refeições" - "Tacho com comida" - "Culinária" - "Garfo e faca" - "Chávena de chá sem pega" - "Garrafa e chávena de saké" - "Copo de vinho" - "Copo de cocktail" - "Bebida tropical" - "Caneca de cerveja" - "Brinde com canecas de cerveja" - "Biberão" - - - - - - - "Fita" - "Presente embrulhado" - "Bolo de aniversário" - "Abóbora iluminada" - "Árvore de Natal" - "Pai Natal" - "Fogo-de-artifício" - "Fogo-de-artifício" - "Balão" - "Bombinhas de Carnaval" - "Bola de confetti" - "Árvore do Tanabata" - "Bandeiras cruzadas" - "Decoração em pinho" - "Bonecas japonesas" - "Bandeirola de carpas" - "Espanta espíritos" - "Cerimónia de contemplação da lua" - "Pasta da escola" - "Chapéu de formatura" - - - - - - - - - - - - - - - "Cavalo de carrossel" - "Roda panorâmica" - "Montanha-russa" - "Cana de pesca e peixe" - "Microfone" - "Câmara de filmar" - "Cinema" - "Auricular" - "Paleta de artista" - "Chapéu de cartola" - "Tenda de circo" - "Bilhete" - "Claquete" - "Artes de palco" - "Videojogo" - "Em cheio no alvo" - "Slot machine" - "Bilhar" - "Dado de jogo" - "Bowling" - "Baralho de cartas com desenho de flores" - "Nota de música" - "Muitas notas de música" - "Saxofone" - "Guitarra" - "Teclado de música" - "Trompete" - "Violino" - "Pauta de música" - "T-shirt de corrida com faixa" - "Raquete e bola de ténis" - "Esqui e bota de esqui" - "Bola e cesto de basquetebol" - "Bandeira axadrezada" - "Esquiador" - "Corredor" - "Surfista" - - - "Troféu" - "Corrida de cavalos" - "Futebol americano" - "Bola de râguebi" - "Nadador" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Construção de casas" - "Casa com jardim" - "Edifício de escritórios" - "Estação de correios japonesa" - "Estação de correios europeia" - "Hospital" - "Banco" - "Máquina de multibanco" - "Hotel" - "Hotel romântico" - "Loja de conveniência" - "Escola" - "Centro comercial" - "Fábrica" - "Lanterna Izakaya" - "Castelo japonês" - "Castelo europeu" - - - - - - - - - - - - - - - - - - - - - - - - - "Ratazana" - "Rato" - "Boi" - "Búfalo-asiático" - "Vaca" - - - "Leopardo" - "Coelho" - "Gato" - "Dragão" - "Crocodilo" - "Baleia" - "Caracol" - "Cobra" - "Cavalo" - "Carneiro" - "Cabra" - "Ovelha" - "Macaco" - "Galo" - "Galinha" - "Cão" - "Porco" - "Javali" - "Elefante" - "Polvo" - "Búzio" - "Inseto" - "Formiga" - "Abelha" - "Joaninha" - "Peixe" - "Peixe tropical" - "Peixe-balão" - "Tartaruga" - "Galinha a chocar" - "Pintainho" - "Pintainho a olhar para a frente" - "Pássaro" - "Pinguim" - "Coala" - "Caniche" - "Dromedário" - "Camelo bactriano" - "Golfinho" - "Focinho de rato" - "Focinho de vaca" - "Focinho de tigre" - "Focinho de coelho" - "Focinho de gato" - "Focinho de dragão" - "Baleia a expelir água" - "Focinho de cavalo" - "Focinho de macaco" - "Focinho de cão" - "Focinho de porco" - "Focinho de sapo" - "Focinho de hamster" - "Focinho de lobo" - "Focinho de urso" - "Focinho de urso-panda" - "Nariz de porco" - "Pegadas de garras" - - - "Olhos" - - - "Orelha" - "Nariz" - "Boca" - "Língua" - "Dedo indicador a apontar para cima" - "Dedo indicador a apontar para baixo" - "Dedo indicador a apontar para a esquerda" - "Dedo indicador a apontar para a direita" - "Símbolo de punho fechado" - "Símbolo de mão a acenar" - "Símbolo de ok com a mão" - "Símbolo de polegar para cima" - "Símbolo de polegar para baixo" - "Símbolo de mãos a bater palmas" - "Símbolo de mãos abertas" - "Coroa" - "Chapéu de mulher" - "Óculos" - "Gravata" - "T-shirt" - "Calças de ganga" - "Vestido" - "Quimono" - "Biquíni" - "Roupas de mulher" - "Carteira" - "Mala" - "Bolsa" - "Sapato de homem" - "Ténis de corrida" - "Sapato de salto alto" - "Sandália de mulher" - "Botas de mulher" - "Pegadas" - "Silhueta de busto" - "Silhueta de bustos" - "Rapaz" - "Rapariga" - "Homem" - "Mulher" - "Família" - "Homem e mulher de mãos dadas" - "Dois homens de mão dada" - "Duas mulheres de mão dada" - "Agente da polícia" - "Mulher com orelhas de coelho" - "Noiva com véu" - "Pessoa loira" - "Homem com gua pi mao" - "Homem com turbante" - "Homem mais velho" - "Mulher mais velha" - "Bebé" - "Trabalhador da construção civil" - "Princesa" - "Ogre japonês" - "Duende japonês" - "Fantasma" - "Anjo bebé" - "Ser extraterrestre" - "Monstro extraterrestre" - "Imp." - "Caveira" - "Assistente do balcão de informações" - "Guarda" - "Bailarino" - "Batom" - "Verniz para as unhas" - "Massagem facial" - "Cortar o cabelo" - "Símbolo de barbearia" - "Seringa" - "Comprimido" - "Marca de beijo" - "Carta de amor" - "Anel" - "Diamante" - "Beijo" - "Bouquet" - "Casal com coração" - "Casamento" - "Coração a bater" - "Coração partido" - "Dois corações" - "Coração reluzente" - "Coração a crescer" - "Coração com seta" - "Coração azul" - "Coração verde" - "Coração amarelo" - "Coração roxo" - "Coração com laço" - "Corações a dançar" - "Coração decorativo" - "Forma de diamante com ponto no interior" - "Lâmpada elétrica" - "Símbolo de raiva" - "Bomba" - "Símbolo de sono" - "Símbolo de colisão" - "Símbolo de transpiração" - "Gota" - "Símbolo de pressa" - "Monte de cocó" - "Bíceps fletidos" - "Símbolo de zonzear" - "Balão de diálogo" - "Balão de pensamento" - "Flor branca" - "Símbolo de cem pontos" - "Saco de dinheiro" - "Câmbio" - "Símbolo de dólar sólido" - "Cartão de crédito" - "Nota com símbolo do yen" - "Nota com símbolo de dólar norte-americano" - "Nota com símbolo do euro" - "Nota com símbolo da libra" - "Notas com asas" - "Gráfico com tendência altista e símbolo do yen" - "Lugar" - "Computador pessoal" - "Pasta de trabalho" - "Minidisco" - "Disquete" - "Disco ótico" - "DVD" - "Pasta de ficheiros" - "Pasta de ficheiro aberto" - "Página com dobra" - "Página virada para cima" - "Calendário" - "Calendário de mesa" - "Porta-cartões de visita" - "Gráfico com tendência altista" - "Gráfico com tendência baixista" - "Gráfico de barras" - "Área de transferência" - "Alfinete" - "Alfinete redondo" - "Clip" - "Régua" - "Esquadro" - "Marcadores de folhas" - "Livro razão" - "Bloco de notas" - "Bloco de notas com capa decorada" - "Livro fechado" - "Livro aberto" - "Livro verde" - "Livro azul" - "Livro cor de laranja" - "Livros" - "Etiqueta de nome" - "Rolo" - "Nota" - "Auscultador de telefone" - "Pager" - "Fax" - "Antena parabólica" - "Sistema sonoro" - "Megafone" - "Bandeja de correio a enviar" - "Bandeja de correio recebido" - "Pacote" - "Símbolo de email" - "Envelope a chegar" - "Envelope com seta para baixo em cima" - "Caixa de correio fechada com bandeirola para baixo" - "Caixa de correio com bandeirola para cima" - "Caixa de correio aberta com bandeirola para cima" - "Caixa de correio aberta com bandeirola para baixo" - "Caixa de correio" - "Aviso sonoro de correio" - "Jornal" - "Telemóvel" - "Telemóvel com seta para a direita à esquerda" - "Modo de vibração" - "Telemóvel desligado" - "Proibido usar o telemóvel" - "Sinal de barras" - "Câmara" - - - "Câmara de filmar" - "Televisão" - "Rádio" - "Cassete de vídeo" - - - - - "Setas cruzadas para a direita" - "Setas abertas em círculo para a esquerda e para a direita no sentido dos ponteiros do relógio" - "Setas abertas em círculo para a esquerda e para a direita no sentido dos ponteiros do relógio com o algarismo 1 sobreposto" - "Setas abertas em círculo para baixo e para cima no sentido dos ponteiros do relógio" - "Setas abertas em círculo para baixo e para cima no sentido contrário ao dos ponteiros do relógio" - "Símbolo de pouco brilho" - "Símbolo de brilho intenso" - "Altifalante com barra de cancelamento" - "Altifalante" - "Altifalante com uma onda de som" - "Altifalante com três ondas de som" - "Bateria" - "Ficha elétrica" - "Lupa inclinada para a esquerda" - "Lupa inclinada para a direita" - "Cadeado com caneta de tinta permanente" - "Cadeado fechado com chave" - "Chave" - "Cadeado" - "Cadeado aberto" - "Sino" - "Sino com faixa de cancelamento" - "Marcador" - "Corrente" - "Botão de opção" - "\"Back\" com seta para a esquerda em cima" - "\"End\" com seta para a esquerda em cima" - "\"On\" com ponto de exclamação e seta para os dois lados em cima" - "\"Soon\" com seta para a direita em cima" - "\"Top\" com seta para cima no topo" - "Símbolo de proibida a presença de menores de idade" - "Tecla do algarismo dez" - "Símbolo de introdução de letras maiúsculas latinas" - "Símbolo de introdução de letras minúsculas latinas" - "Símbolo de introdução de números" - "Símbolo de introdução para símbolos" - "Símbolo de introdução de letras latinas" - "Fogo" - "Lanterna" - "Chave de bocas" - "Martelo" - "Parafuso e porca" - "Faca de cozinha japonesa" - "Pistola" - "Microscópio" - "Telescópio" - "Bola de cristal" - "Estrela de seis pontas com ponto no meio" - "Símbolo japonês para principiante" - "Símbolo de tridente" - "Botão quadrado preto" - "Botão quadrado branco" - "Círculo grande vermelho" - "Círculo grande azul" - "Diamante grande cor de laranja" - "Diamante grande azul" - "Diamante pequeno cor de laranja" - "Diamante pequeno azul" - "Triângulo vermelho a apontar para cima" - "Triângulo vermelho a apontar para baixo" - "Triângulo pequeno vermelho a apontar para cima" - "Triângulo pequeno vermelho a apontar para baixo" - - - - - - - - - - - - - "Mostrador de relógio à 1h00" - "Mostrador de relógio às 2h00" - "Mostrador de relógio às 3h00" - "Mostrador de relógio às 4h00" - "Mostrador de relógio às 5h00" - "Mostrador de relógio às 6h00" - "Mostrador de relógio às 7h00" - "Mostrador de relógio às 8h00" - "Mostrador de relógio às 9h00" - "Mostrador de relógio às 10h00" - "Mostrador de relógio às 11h00" - "Mostrador de relógio às 12h00" - "Mostrador de relógio à 1h30" - "Mostrador de relógio às 2h30" - "Mostrador de relógio às 3h30" - "Mostrador de relógio às 4h30" - "Mostrador de relógio às 5h30" - "Mostrador de relógio às 6h30" - "Mostrador de relógio às 7h30" - "Mostrador de relógio às 8h30" - "Mostrador de relógio às 9h30" - "Mostrador de relógio às 10h30" - "Mostrador de relógio às 11h30" - "Mostrador de relógio às 12h30" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Monte Fuji" - "Torre de Tóquio" - "Estátua da Liberdade" - "Silhueta do Japão" - "Moai" - "Cara sorridente" - "Gargalhada" - "Cara a chorar de alegria" - "Cara a sorrir com boca aberta" - "Cara a sorrir com boca aberta e olhos curvados" - "Cara a sorrir com boca aberta e suor frio" - "Cara a sorrir com boca aberta e olhos semicerrados" - "Cara a sorrir com auréola" - "Cara sorridente endiabrada" - "Cara a piscar o olho" - "Cara a sorrir com olhos curvados" - "Cara a saborear uma refeição deliciosa" - "Cara aliviada" - "Cara a sorrir com olhos em forma de coração" - "Cara a sorrir com óculos de sol" - "Cara presunçosa" - "Cara neutra" - "Cara sem expressão" - "Cara de desagrado" - "Cara com suor frio" - "Cara pensativa" - "Cara baralhada" - "Cara completamente baralhada" - "Cara a dar um beijo" - "Cara a atirar um beijo" - "Cara a beijar com olhos sorridentes" - "Cara a beijar com olhos fechados" - "Cara com língua de fora" - "Cara com língua de fora e a piscar o olho" - "Cara com língua de fora e os olhos semicerrados" - "Cara desapontada" - "Cara preocupada" - "Cara irritada" - "Cara mal-humorada" - "Cara a chorar" - "Cara perseverante" - "Cara com ar triunfante" - "Cara desapontada, mas aliviada" - "Cara franzida com boca aberta" - "Cara preocupada" - "Cara cheia de medo" - "Cara desgastada" - "Cara sonolenta" - "Cara cansada" - "Cara a fazer caretas" - "Cara a chorar perdidamente" - "Cara com boca aberta" - "Cara expectante" - "Cara com boca aberta e suor frio" - "Cara a gritar de medo" - "Cara de espanto" - "Cara corada" - "Cara a dormir" - "Cara atordoada" - "Cara sem boca" - "Cara com máscara de médico" - "Focinho de gato sorridente com olhos curvados" - "Focinho de gato a chorar de alegria" - "Focinho de gato sorridente com boca aberta" - "Focinho de gato sorridente com olhos em forma de coração" - "Focinho de gato com sorriso de través" - "Focinho de gato a beijar com olhos fechados" - "Focinho de gato mal-humorado" - "Focinho de gato a chorar" - "Focinho de gato desgastado" - - - - - - - - - "Cara com gesto de desaprovação" - "Cara com gesto de aprovação" - "Pessoa profundamente arrependida" - "Macaco \"não olhar para o mal\"" - "Macaco \"não ouvir o mal\"" - "Macaco \"não falar no mal\"" - "Pessoa contente a levantar a mão" - "Pessoa a erguer as duas mãos e a festejar" - "Pessoa entristecida" - "Pessoa com cara mal-humorada" - "Pessoa com mãos juntas" - "Foguetão" - "Helicóptero" - "Locomotiva a vapor" - "Elétrico" - "Comboio de alta velocidade" - "Comboio de alta velocidade com cabeça aerodinâmica" - "Comboio" - "Metro" - "Metro de superfície" - "Estação" - "Elétrico" - "Carruagem de elétrico" - "Autocarro" - "Autocarro a aproximar-se" - "Troleicarro" - "Paragem de autocarro" - "\"Minibus\"" - "Ambulância" - "Viatura de incêndio" - "Carro da polícia" - "Carro da polícia a aproximar-se" - "Táxi" - "Táxi a aproximar-se" - "Automóvel" - "Automóvel a aproximar-se" - "Veículo utilitário recreativo" - "Camião de entregas" - "Camião articulado" - "Trator" - "Monocarril" - "Linha férrea na montanha" - "Via-férrea suspensa" - "Teleférico" - "Funicular aéreo" - "Navio" - "Barco a remos" - "Barco a motor" - "Semáforo na horizontal" - "Semáforo vertical" - "Sinal de obras" - "Sirene de carro da polícia" - "Bandeira triangular na haste" - "Porta" - "Sinal de entrada proibida" - "Sinal de fumar" - "Sinal de proibido fumar" - "Sinal para colocar o lixo no seu devido lugar" - "Sinal para não deixar lixo para o chão" - "Sinal de água potável" - "Sinal de água não potável" - "Bicicleta" - "Proibido andar de bicicleta" - "Ciclista" - "Ciclista de montanha" - "Pedestre" - "Proibido andar a pé" - "Crianças a atravessar" - "Sinal de entrada para homens" - "Sinal de entrada para mulheres" - "Lavabo" - "Sinal de bebé" - "Casa-de-banho" - "\"Water closet\"" - "Chuveiro" - "Banho" - "Banheira" - "Controlo de passaportes" - "Alfândega" - "Recolha de bagagem" - "Perdidos e achados" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-pt-rPT/strings-letter-descriptions.xml b/app/src/main/res/values-pt-rPT/strings-letter-descriptions.xml deleted file mode 100644 index 377b1578ff..0000000000 --- a/app/src/main/res/values-pt-rPT/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "Indicador ordinal feminino" - "Sinal de micro" - "Indicador ordinal masculino" - "S curto" - "A, grave" - "A, agudo" - "A, circunflexo" - "A, til" - "A, diérese" - "A, anel sobreposto" - "A, E, ligadura" - "C, cedilha" - "E, grave" - "E, agudo" - "E, circunflexo" - "E, diérese" - "I, grave" - "I, agudo" - "I, circunflexo" - "I, diérese" - "Eth" - "N, til" - "O, grave" - "O, agudo" - "O, circunflexo" - "O, til" - "O, diérese" - "O, traço" - "U, grave" - "U, agudo" - "U, circunflexo" - "U, diérese" - "Y, agudo" - "Thorn" - "Y, diérese" - "A, mácron" - "A, breve" - "A, ogonek" - "C, agudo" - "C, circunflexo" - "C, ponto sobreposto" - "C, caron" - "D, caron" - "D, traço" - "E, mácron" - "E, breve" - "E, ponto sobreposto" - "E, ogonek" - "E, caron" - "G, circunflexo" - "G, breve" - "G, ponto sobreposto" - "G, cedilha" - "H, circunflexo" - "H, traço" - "I, til" - "I, mácron" - "I, breve" - "I, ogonek" - "I sem ponto" - "I, J, ligadura" - "J, circunflexo" - "K, cedilha" - "Kra" - "L, agudo" - "L, cedilha" - "L, caron" - "L, ponto intermédio" - "L, traço" - "N, agudo" - "N, cedilha" - "N, caron" - "N, precedido de apóstrofe" - "Eng" - "O, mácron" - "O, breve" - "O, duplo agudo" - "O, E, ligadura" - "R, agudo" - "R, cedilha" - "R, caron" - "S, agudo" - "S, circunflexo" - "S, cedilha" - "S, caron" - "T, cedilha" - "T, caron" - "T, traço" - "U, til" - "U, mácron" - "U, breve" - "U, anel sobreposto" - "U, duplo agudo" - "U, ogonek" - "W, circunflexo" - "Y, circunflexo" - "Z, agudo" - "Z, ponto sobreposto" - "Z, caron" - "S longo" - "O, chifre" - "U, chifre" - "S, vírgula subposta" - "T, vírgula subposta" - "Schwa" - "A, ponto subposto" - "A, gancho sobreposto" - "A, circunflexo e agudo" - "A, circunflexo e grave" - "A, circunflexo e gancho sobreposto" - "A, circunflexo e til" - "A, circunflexo e ponto subposto" - "A, breve e agudo" - "A, breve e grave" - "A, breve e gancho sobreposto" - "A, breve e til" - "A, breve e ponto subposto" - "E, ponto subposto" - "E, gancho sobreposto" - "E, til" - "E, circunflexo e agudo" - "E, circunflexo e grave" - "E, circunflexo e gancho sobreposto" - "E, circunflexo e til" - "E, circunflexo e ponto subposto" - "I, gancho sobreposto" - "I, ponto subposto" - "O, ponto subposto" - "O, gancho sobreposto" - "O, circunflexo e agudo" - "O, circunflexo e grave" - "O, circunflexo e gancho sobreposto" - "O, circunflexo e til" - "O, circunflexo e ponto subposto" - "O, chifre e agudo" - "O, chifre e grave" - "O, chifre e gancho sobreposto" - "O, chifre e til" - "O, chifre e ponto subposto" - "U, ponto subposto" - "U, gancho sobreposto" - "U, chifre e agudo" - "U, chifre e grave" - "U, chifre e gancho sobreposto" - "U, chifre e til" - "U, chifre e ponto subposto" - "Y, grave" - "Y, ponto subposto" - "Y, gancho sobreposto" - "Y, til" - "Ponto de exclamação invertido" - "Aspas angulares duplas esquerdas" - "Ponto intermédio" - "Um sobrescrito" - "Aspas angulares duplas direitas" - "Ponto de interrogação invertido" - "Aspa simples esquerda" - "Aspa simples direita" - "Aspa simples subposta" - "Aspas duplas esquerdas" - "Aspas duplas direitas" - "Adaga" - "Adaga dupla" - "Sinal de permilagem" - "Plica" - "Plica dupla" - "Aspa angular simples esquerda" - "Aspa angular simples direita" - "Quatro sobrescrito" - "N latino minúsculo sobrescrito" - "Sinal de peso" - "Ao cuidado de" - "Seta para a direita" - "Seta para baixo" - "Conjunto vazio" - "Delta" - "Menor do que ou igual a" - "Maior do que ou igual a" - "Estrela negra" - diff --git a/app/src/main/res/values-pt-rPT/strings-talkback-descriptions.xml b/app/src/main/res/values-pt-rPT/strings-talkback-descriptions.xml index 739de59bde..3707759418 100644 --- a/app/src/main/res/values-pt-rPT/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-pt-rPT/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "Ligar auscultadores com microfone integrado para ouvir as teclas da palavra-passe." - "O texto atual é %s" - "Nenhum texto digitado" - "%1$s corrige %2$s para %3$s" - "%1$s executa a correção automática" - "Nenhuma sugestão" - "Caráter desconhecido" - "Shift" - "Mais símbolos" - "Shift" - "Símbolos" - "Shift" - "Eliminar" - "Símbolos" - "Letras" - "Números" - "Definições" - "Separador" - "Espaço" - "Entrada de voz" - "Emoji" - "Voltar" - "Pesquisar" - "Ponto" - "Mudar de idioma" - "Seguinte" - "Anterior" - "Shift ativado" - "Caps lock ativado" - "Modo de símbolos" - "Modo Mais símbolos" - "Modo de letras" - "Modo de telemóvel" - "Modo de símbolos de telemóvel" - "Teclado oculto" - "A mostrar o teclado de %s" - "data" - "data e hora" - "email" - "mensagens" - "números" - "telemóvel" - "texto" - "hora" - "URL" - "Recentes" - "Pessoas" - "Objetos" - "Natureza" - "Locais" - "Símbolos" - "Bandeiras" - "Emoticons e pessoas" - "Animais e natureza" - "Comida e bebidas" - "Viagens e locais" - "Atividade" - "Ícones expressivos" - "%s maiúsculo" - "I maiúsculo" - "I maiúsculo, ponto sobreposto" - "Símbolo desconhecido" - "Emoji desconhecido" - "Cara aborrecida" - "Cara envergonhada" - "Cara com óculos de sol" - "Cara surpreendida" - "Cara a dar um beijo" - "Cara franzida" - "Os carateres alternativos estão disponíveis" - "Os carateres alternativos são ignorados" - "As sugestões alternativas estão disponíveis" - "As sugestões alternativas são ignoradas" + + + "Ligar auscultadores com microfone integrado para ouvir as teclas da palavra-passe." + "O texto atual é %s" + "Nenhum texto digitado" + "%1$s corrige %2$s para %3$s" + "%1$s executa a correção automática" + "Nenhuma sugestão" + "Caráter desconhecido" + "Shift" + "Mais símbolos" + "Shift" + "Símbolos" + "Shift" + "Eliminar" + "Símbolos" + "Letras" + "Números" + "Definições" + "Separador" + "Espaço" + "Entrada de voz" + "Emoji" + "Voltar" + "Pesquisar" + "Ponto" + "Mudar de idioma" + "Seguinte" + "Anterior" + "Shift ativado" + "Caps lock ativado" + "Modo de símbolos" + "Modo Mais símbolos" + "Modo de letras" + "Modo de telemóvel" + "Modo de símbolos de telemóvel" + "Teclado oculto" + "A mostrar o teclado de %s" + "data" + "data e hora" + "email" + "mensagens" + "números" + "telemóvel" + "texto" + "hora" + "URL" + "Recentes" + "Objetos" + "Símbolos" + "Bandeiras" + "Emoticons e pessoas" + "Animais e natureza" + "Comida e bebidas" + "Viagens e locais" + "Atividade" + "Ícones expressivos" + "%s maiúsculo" + "I maiúsculo" + "I maiúsculo, ponto sobreposto" + "Os carateres alternativos estão disponíveis" + "Os carateres alternativos são ignorados" + "As sugestões alternativas estão disponíveis" + "As sugestões alternativas são ignoradas" diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 6123870d6e..de81e2b930 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -1,225 +1,443 @@ - - "Opções de introdução" - Procurar nomes dos contactos - Corretor ortográfico usa entradas da lista de contactos - Vibrar ao tocar na tecla - Som ao tocar na tecla - Mostrar popup de teclas - "Preferências" - "Contas e privacidade" - Aparência e esquemas - "Escrita com gestos" - "Correção de texto" - Avançado - "Tema" - "Ativar teclado dividido" - Outros métodos de entrada - Tecla para mudar o idioma também cobre outros métodos de entrada - Tecla para troca de idioma - Mostrar se estiverem ativados vários idiomas - Duração do popup da tecla - "Sem atraso" - Padrão - "%s ms" - Padrão do sistema - Sugerir nomes dos contactos - Utilizar nomes dos contactos para sugestões e correções - "Sugestões personalizadas" - Melhorar %s - Duplo espaço insere ponto - Tocar duas vezes na barra de espaço insere um ponto e um espaço - Maiúsculas automáticas - Primeira palavra de cada frase com letra maiúscula - "Dicionário pessoal" - Dicionários extra - "Dicionário principal" - Mostrar sugestões de correção - Mostrar sugestões durante a escrita - "Bloquear palavras ofensivas" - Não sugerir palavras ofensivas - "Correção automática" - A barra de espaço e a pontuação corrigem automaticamente as palavras com erro - Desligada - Moderado - Agressivo - Muito agressivo - Sugerir palavra seguinte - Utilizar palavra anterior para efetuar sugestões - Ativar escrita com gestos - Inserir uma palavra deslizando pelas letras - Mostrar rasto do gesto - Previsão dinâmica flutuante - Ver a palavra sugerida ao usar gestos - Gesto de frase - Inserir espaços durante gestos ao deslizar até a tecla de espaço - Tecla Introdução por voz - Nenhum método de introdução por voz ativado. Verifique as definições Idioma e introdução. - "Configurar métodos de introdução" - "Idiomas" - Ajuda e ciomentários - "Idiomas" - Toque novamente para guardar - Toque aqui para guardar - "Dicionário disponível" - "Tema do teclado" - Alternar contas - "Nenhuma conta selecionada" - Está a utilizar %1$s - "OK" - "Cancelar" - Sair - Selecione a conta para usar - Inglês (Reino Unido) - "Inglês (EUA)" - "Espanhol (EUA)" - Hindi-Inglês - Sérvio (Latino) - Inglês (Reino Unido) %s - Inglês (EUA) %s - Espanhol (EUA) (%s) - Hindi-inglês %s - Sérvio %s - %s (Tradicional) - %s (Compacto) - Nenhum idioma (alfabeto) - "Alfabeto (QWERTY)" - "Alfabeto (QWERTZ)" - "Alfabeto (AZERTY)" - "Alfabeto (Dvorak)" - "Alfabeto (Colemak)" - "Alfabeto (PC)" - Emojis - "Tema do teclado" - Estilos personalizados - Adicionar estilo - "Adicionar" - "Remover" - "Guardar" - "Idioma" - "Esquema" - Para utilizar o estilo personalizado, tem que o ativar. Deseja ativar o estilo agora\? - "Ativar" - "Agora não" - O estilo de entrada já existe: %s - Duração da vibração ao tocar - Volume ao tocar na tecla - Atraso de pressão nas teclas - Emojis para teclado físico - Mostra o teclado de emojis ao tocar na tecla Alt - Padrão - Bem-vindo ao %s - com escrita por gestos - Configuração - Próxima etapa - A configurar %s - Ative o %s - Assinale %s na área \"Idioma e introdução\" das definições. Assim, já poderá executar a aplicação no dispositivo. - %s já está ativado nas nas definições de idioma e introdução. Esta etapa está concluída. Vamos avançar para a próxima! - Ativar nas definições - Alternar para %s - De seguida, selecione \"%s\" como método de introdução. - Alternar métodos de introdução - Parabéns, configuração terminada! - Agora, já pode utilizar o %s para escrever nas suas aplicações. - Configurar idiomas extra - Terminado - Mostrar ícone - Mostrar ícone da aplicação no \'launcher\' - Fornecedor do dicionário - Fornecedor do dicionário - Serviço de dicionário - "Informações de atualização do dicionário" - Dicionários extra - Definições para dicionários - "Dicionários do utilizador" - "Dicionário do utilizador" - "Dicionário disponível" - Descarga em curso... - "Instalado" - "Instalado, desativado" - Erro ao contactar com o serviço de dicionário - Nenhum dicionário disponível - Recarregar - "Última atualização" - A procurar atualizações - "A carregar…" - "Dicionário principal" - "Cancelar" - "Definições" - "Instalar" - "Cancelar" - "Eliminar" - Versão %1$s - "Adicionar" - "Adicionar ao dicionário" - Frase - "Mais opções" - "Menos opções" - "OK" - "Palavra:" - "Atalho:" - "Idioma:" - "Escreva uma palavra" - "Atalho opcional" - "Editar palavra" - "Editar" - "Eliminar" - Não existem palavras no dicionário do utilizador. Para adicionar uma palavra, toque na tecla (+). - Para todos os idiomas - Mais idiomas… - "Eliminar" - " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + Procurar nomes de contactos + Vibrar ao premir as teclas + Som ao premir as teclas + Mostrar popup ao premir as teclas + "Preferências" + Aparência + Escrita ao deslizar + Correção de texto + "Avançadas" + "Tema" + "Ativar teclado dividido" + "Mudar p/ outros mét. ent." + Tecla \'Alterar idioma\' + "%s ms" + "Predef. do sistema" + Usar nomes dos Contactos para sugestões e correções + "Sugestões personalizadas" + "Ponto de espaço duplo" + "Tocar duas vezes na barra de espaço insere um ponto seguido de espaço" + "Letras maiúsculas automáticas" + "Maiúscula no início da frase" + "Dicionário pessoal" + "Dicionário principal" + Mostrar sugestões de correção + "Apresentar sugestões de palavras ao escrever" + "Bloquear palavras ofensivas" + "Não sugerir palavras potencialmente ofensivas" + "Correção automática" + Correção automática de palavras mal escritas c/ barra de espaço e pontuação + "Desligar" + "Moderada" + "Agressiva" + "Muito agressiva" + "Sugestões da palavra seguinte" + Usar palavra anterior para fazer sugestões + Ativar escrita ao deslizar + Introduzir uma palavra ao deslizar pelas letras + "Mostrar percurso do gesto" + "Pré-visual. flutuante dinâmica" + Gesto multi-termo + "Deslize p/ a tecla de espaço p/ introduzir espaços durante toques" + Inglês (Reino Unido) + "Inglês (EUA)" + "Espanhol (EUA)" + Hindi-Inglês + Sérvio (Latino) + %s (Tradicional) + %s (Compacto) + Nenhum idioma + Emojis + "Adicionar" + "Remover" + "Guardar" + "Idioma" + Esquema + "Duração vibr. ao premir teclas" + "Volume do som ao premir teclas" + "Atraso ao manter tecla premida" + "Emoji para teclado físico" + "A tecla Alt física mostra a paleta de emoji" + "Predefinido" + Bem-vindo ao %s + com a Escrita ao deslizar + "Começar" + A configurar %s + Ative o %s + Assinale \"%s\" na área \'Idioma e entrada\' das definições para autorizar a execução no seu dispositivo. + Ativar nas definições + Alterar para %s + De seguida, selecione \"%s\" como método de entrada ativo. + Alterar métodos de entrada + Parabéns, configuração terminada! + Agora pode usar o %s para escrever em qualquer app. + "Concluído" + Mostrar ícone da app + Mostrar ícone da app no iniciador + Dicionários extras + "Dicionário disponível" + "Definições" + Eliminar + Versão %1$s + "Atalho:" + Idioma: + Digite uma palavra + "Atalho opcional" + "Editar palavra" + "Em todos os idiomas" + Mais idiomas… Mostrar dicas com toque longo Deslize para eliminar - \'Trackpad\' na barra de espaço - Pode deslizar desde a tecla Eliminar para selecionar e remover grandes porções de texto de uma vez + Pode deslizar desde a tecla \'Apagar\' para selecionar e remover grandes porções de texto de uma vez Tecla de emoji - Impor modo incógnito + Impor modo incógnito Modo diurno/noturno automático Aparência usa as definições do sistema - Fundo muito escuro - Pode reduzir a utilização de energia (conforme a tecnologia do ecrã) - Verificação ortográfica OpenBoard - Definições OpenBoard + Corretor ortográfico HeliBoard + Definições de HeliBoard Introdução Teclas adicionais Correções Sugestões Experimental Outras - Tecla da área de transferência - Deslize na barra de espaço para mover o cursor Desativar aprendizagem de palavras Mais teclas - Número de linha - Mostrar sempre n.º de linha + Linha de números + Mostrar sempre linha de números Mostrar dicas de teclas - Alterar método de introdução com a tecla Espaço - Toque longo na tecla Espaço abre menu de seleção do método de introdução - Ativar redimensionamento do teclado + Alterar método de entrada com a tecla de Espaço + Toque longo na tecla de Espaço abre o menu de seleção do método de entrada Altura do teclado - Alfabeto (Colemak Mod-DH) - Alfabeto (Workman) - Família do tema - Variante do tema Limite das teclas - Definições de verificação ortográfica OpenBoard - \ No newline at end of file + Definições do corretor ortográfico HeliBoard + Confiança da correção automática + Se desativado, a tecla da área de transferência colará o conteúdo disponível + "Escolher o método de entrada" + Tempo de retenção de histórico + Espaço automático depois de pontuação + %s (Akkhor) + Sem limite + Ativar Histórico da Área de Transferência + %s min. + Inserir espaço automaticamente após pontuação ao digitar uma nova palavra + Histórico da área de transferência + "Anular" + "Refazer" + "Aprender com comunicações e dados introd. para melhorar sugestões" + "Ok" + "Seg." + "Ant." + "Conc." + "Env." + "Pesquisar" + "Pausa" + "Esp." + Mover a pré-visualização durante um gesto + Escrita em vários idiomas + Carregar biblioteca de escrita ao deslizar + Fornecer uma biblioteca nativa para permitir a escrita por gestos + Carregar biblioteca + Tempo de espera da escrita rápida + Comportamento da tecla de alteração de idioma + Adicionar palavras ao dicionário pessoal + Usar o dicionário pessoal do dispositivo para guardar novas palavras + Mais correção automática + Distância de separação + Mudar ambos + Aviso: Desativar esta definição irá apagar todos os dados aprendidos + Usar sempre a sugestão do meio + Ao pressionar espaço ou pontuação, a sugestão do meio será introduzida + Erro na cópia de segurança: %s + Mostrar variantes definidas nos idiomas do teclado + Mostrar mais letras com acentos numa janela + Ignorar o pedido de outras apps para desativar as sugestões (pode causar problemas) + Mudar de idioma + Cópia de segurança e restauro + Guardar ou carregar a partir de um ficheiro. Atenção: o restauro substitui os dados existentes + Restaurar + Fazer cópia de segurança + Sugerir conteúdo da área de transferência + Mostrar o conteúdo da área de transferência recentemente copiado como uma sugestão + Iniciar sempre instantaneamente + Necessita da biblioteca para \'%s\'. As bibliotecas incompatíveis podem falhar ao usar a escrita por gestos. \n\nAviso: carregar código externo pode ser um risco de segurança. Use apenas uma biblioteca de uma fonte em que confie. + Pré-visualização flutuante + Ver a palavra sugerida ao usar gestos + Mostrar sempre sugestões + Erro ao restaurar a cópia de segurança: %s + Eliminar biblioteca + Correção automática mesmo quando não é explicitamente solicitada pelo campo de entrada + Tempo de vida do rasto do gesto + Ficheiro de biblioteca desconhecido. Tem a certeza de que o obteve de uma fonte fiável e que é para \'%s\'? + Vibrar no modo \'Não Incomodar\' + %s (Fonético) + Substituir a versão de Emoji + Dargínico (Urakhi) + Atalhos de correção automática + Quando ativado, os atalhos podem ser expandidos pela correção automática + Definir imagem de fundo (horizontal) + Definir fonte a partir de um ficheiro + Se não for definido, será usada a imagem vertical + Limpar mesmo todos os códigos de teclas personalizados? + Mostrar dicas na linha de números + Mudar a distância de deslizamento do idioma + Linha de números + Esquema + Adicionar variantes comuns + Símbolos + Idioma (prioridade) + Emoji + Adicionar todas as variantes disponíveis + Cima + Baixo + Limpar a área de transferência + Selecionar palavra + Esquerda + Direita + Idiomas com dicionários + Área de transferência + Fixar tecla da barra de ferramentas em toque longo + Selecionar teclas fixadas da barra de ferramentas + Conteúdo copiado + Mudar o lado do modo de uma mão + Não foi possível ler o ficheiro + Texto personalizado na barra de espaço + Mansi + Personalizar moedas + Erro: escrita não compatível com este teclado + Branco Holo + Mais escuro + Preto + Texto da dica da tecla + Texto da faixa de sugestão + Fundo da tecla + Escuro + Cores dinâmicas + Índigo + Oceano + Mostrar apenas cores principais + Subtipo personalizado + Noturno + Números + Estilo + Fundo da tecla funcional + Escolher cor automaticamente + Selecionar teclas da barra de ferramentas + Teclas com espaços estreitos + Kaitag + Símbolos (Árabe) + Fundo do teclado + Fila inferior de emojis + Fila inferior da área de transferência + Violeta + Não mostrar sempre sugestões para campos de edição web + Os campos de edição na Web (encontrados principalmente nos navegadores) são uma causa muito comum de problemas com a configuração de mostrar sempre sugestões + Deteção de URL + Tenta detetar URLs e similares como uma única palavra + Selecionar fonte de dicas + Escala do espaço inferior + Excluir mesmo o esquema personalizado %s? + Linha de números (básica) + Definir imagem de fundo + Não-conector de zero largura + Fechar histórico da área de transferência + Claro + Destaque + Adicionar esquema personalizado + Selecionar idioma + Substituir mesmo o dicionário \"%1$s\" adicionado pelo utilizador?\n\nDicionário atual:\n%2$s \n\nDicionário novo:\n%3$s + Selecione um dicionário para adicionar. Dicionários no formato .dict podem ser descarregados %s. + Inverter a direção quando um teclado do subtipo direita-para-esquerda é selecionado + Direção da barra de ferramentas variável + Deslizar vertical na barra de espaço + Mostrar funções que podem ser desconhecidas + Selecionar ordem do popup de teclas + Copiar para a Área de Transferência + Aviso: o esquema está agora em uso + Erro de esquema: %s + Toque para editar o esquema bruto + Teclas funcionais (Mais símbolos) + Símbolos + Símbolos de telefone + Dicionário interno principal + Eliminar mesmo o dicionário \"%s\" adicionado pelo utilizador? + "Sem um dicionário, irá receber apenas sugestões para o texto introduzido antes.<br>\n Pode descarregar dicionários %1$s, ou verifique se um dicionário para \"%2$s\" pode ser descarregado diretamente %3$s." + Erro: O ficheiro selecionado não é um ficheiro de dicionário válido + Peso: + Fundo da barra de espaço + ► Premir continuamente teclas fixadas da barra de ferramentas resulta em funcionalidades adicionais: <br>\n\t• área de transferência &#65515; colar <br>\n\t• mover para esquerda/direita &#65515; palavra para esquerda/direita <br>\n\t• mover para cima/baixo &#65515; página para cima/baixo <br>\n\t• palavra para esquerda/direita &#65515; linha início/fim <br>\n\t• página para cima/baixo &#65515; página início/fim <br>\n\t• copiar &#65515; cortar <br>\n\t• selecionar palavra &#8596; selecionar tudo <br>\n\t• desfazer &#8596; refazer <br> <br>\n► Premir continuamente as teclas da barra de sugestões fixam as mesmas. <br> <br>\n► Premir continuamente a tecla da vírgula para aceder à visualização da área de transferência, modo de uma mão, definições, ou mudar de idioma: <br>\n\t• A Visualização de Emojis e Mudança de Idioma vão desaparecer se tiver a tecla correspondente ativada; <br>\n\t• Para alguns esquemas, não é a tecla de vírgula, mas a tecla que seria no mesmo sítio. (ex: \\\'q\'\\ para o esquema Dvorak). <br> <br>\n► Quando o modo privado está ativado, nenhuma palavra será aprendida, e nenhum emoji será adicionado aos recentes. <br> <br>\n► Prima o botão do modo privado para aceder à barra de ferramentas. <br> <br>\n► Entrada por gestos: Deslize do shift até outra tecla para escrevê-la em maiúscula: <br>\n\t• Funciona também para as tecla \\\'?123\\\' para escrever um único símbolo do teclado de símbolos, e para teclas relacionadas. <br> <br>\n► Mantenha premida a tecla shift ou de símbolos, prima uma ou mais teclas, e depois solte a tecla shift ou de símbolos para voltar ao teclado anterior. <br> <br>\n► Prima continuamente uma sugestão na barra de sugestões para mostrar mais sugestões, e um botão para apagar essa sugestão. <br> <br>\n► Deslize para cima a partir de uma sugestão para abrir mais sugestões, e solte na sugestão que selecionar para usá-la. <br> <br>\n► Prima continuamente um item no histórico da área de transferência para fixá-lo (mantem na área de transferência até o desafixar). <br> <br>\n► Deslize para a esquerda na visualização da área de transferência para remover um item (exceto quando estiver fixado). <br> <br>\n► Selecione texto e pressione shift para alternar entre maiúscula, minúscula, e escrever palavras com letra maiúscula. <br> <br>\n► Pode adicionar dicionários abrindo-os em um explorador de ficheiros: <br>\n\t• Suporta apenas <i>content-uri</i>, não <i>file-uri</i>: pode não funcionar com alguns exploradores de ficheiros. <br> <br>\n► Para utilizadores a fazer backups manuais com acesso root: <br>\n\t• A partir do Android 7, o ficheiro de preferências compartilhadas não está na localização padrão, porque a app usa o %s. Para que as definições sejam lidas antes do dispositivo ser desbloqueado, como por exemplo no boot; <br>\n\t• O ficheiros está localizado em /data/user_de/0/package_id/shared_prefs/ porém pode depender do dispositivo e versão do Android. <br> <br>\n<i><b>Modo de depuração / APK de depuração</b></i> <br> <br>\n► Prima continuamente uma sugestão para mostrar o dicionário de origem. <br> <br>\n► Ao usar o APK de depuração, pode encontrar definições de depuração dentro das opções avançadas, porém a utilidade é limitada exceto a exportar dicionários para o log. <br>\n\t• Para o APK de lançamento, é preciso tocar na versão em <i>Sobre</i> várias vezes, assim irá encontrar as opções de depuração em <i>Preferências Avançadas</i>. <br>\n\t• Ao ativar <i>Mostrar informações de sugestão</i>, as sugestões terão pequenos números em cima a mostrar a sua pontuação interna e dicionário de origem. <br> <br>\n► Num eventual crash da aplicação, é perguntado caso queira o log do crash quando abrir as Definições. <br> <br>\n► Ao usar digitação multi-linguagem, a barra de espaço irá mostrar um número de confiança para determinar a linguagem atualmente em uso. <br> <br>\n► Sugestões terão pequenos números em cima a mostrar a sua pontuação interna e dicionário de origem (pode ser desativado). + Código de tecla + Dicionários + Palavra para a esquerda + Início da página + Palavra para a direita + Fim da página + Página para cima + Adicionar dicionário de um ficheiro + Areia + Chocolate + Nublado + Ativar teclado dividido (horizontal) + Prima continuamente a tecla de símbolos para o teclado numérico + Carregar + Espaço + Retrocesso reverte a correção automática + Mais símbolos + Formato de data e hora + Espaço automático após escolher uma sugestão + Sem espaço automático ao premir Maiús + Maiús elimina o espaço automático pendente + Espaço automático antes de digitar uma palavra ao deslizar + Espaço automática após digitar uma palavra com gestos + Linha de números + Mostrar teclas de TLD + Substituir popups de ponto final por domínios de topo ao digitar URLs e endereços de e-mail + Teclado dividido + Página para baixo + Selecionar teclas da barra de ferramentas de área de transferência + Desativa outras ações de toque longo para teclas da barra de ferramentas desafixadas + Mostrar dicas funcionais + Mostrar dicas se um toque longo numa tecla ativa funcionalidade adicional + Premir Enter ou Espaço após outras teclas no teclado de números + Esta configuração expõe todas as cores que são usadas internamente. A lista de cores pode mudar a qualquer momento. A cor padrão é aleatória, e os nomes não são traduzidos. + Entrada de gesto + seção de discussão + Sobre + Versão + Ver no GitHub + Guardar log + Barra de Ferramentas + %s (experimental) + Shift (ativado) + Foresta + Esta palavra já está presente no dicionário do utilizador %s. Digite outra. + Texto da barra de espaço + Mostrar a barra de ferramentas se a entrada começar ou o texto for selecionado + Apagar mesmo %s? + Carregar ficheiro + Definido pelo utilizador + Mostrar todas as cores + Ocultar barra de ferramentas automaticamente + Ocultar barra de ferramentas quando sugestões ficam disponíveis + Entrada de voz + Modo de uma mão + Tudo à esquerda + Tudo à direita + Cinza azul + Castanho + Deslizar horizontal na barra de espaço + Não mostrar novamente + Erro ao carregar ficheiro de dicionário + Fechar + Toque no idioma para abrir definições + Shift + Maiúsculas + Desativar modo de uma mão + Alterar o tamanho do modo de uma mão + Adicionar palavra + Arredondado + Cores + Cores (noite) + Licença de código aberto + Voltar ao teclado principal após… + Selecionar emoji no ecrã de emojis + Selecionar um ficheiro num formato compatível. Infomação sobre os formatos está disponível em %s. + Cor da barra de navegação + Texto da tecla + Descrição de funções escondidas + Dagbani + Sesotho + Personalizar códigos de teclas da barra de ferramentas + armazenamento protegido pelo dispositivo + Adicionar variantes muito comuns (padrão) + Remover popups redundantes + Remove popups de teclas já presentes no esquema padrão + Defina um símbolo principal e até 6 secundários para moedas, separado com espaço + Repor mesmo todos os ícones personalizados? + Código de pressão contínua + Mostrar automaticamente a barra de ferramentas + Esquemas secundários + Teclas funcionais (ecrã grande) + Telefone + Teclado númerico + Teclado numérico (horizontal) + Selecionar entrada do histórico da área de transferência + Premir Enter ou Espaço após outras teclas no ecrã de símbolos + Definir imagem para o modo diurno ou noturno? + Diurno + Rosa + Nenhuma + Mover cursor + Mudar para teclado numérico + Personalizar ícones + Nome inválido + Mostrar mais cores + Teclas funcionais + Teclas funcionais (Símbolos) + Enter + Tab + Delete + Entrada de voz desativada + Mostrar / ocultar barra de ferramentas + Estilo do ícone + Escala da fonte do teclado + Escala da fonte na visualização de emoji + Substituir dicionário + Licença Pública Geral GNU v3.0 + Espaço (teclado numérico) + Conector de zero largura + Escala do espaço lateral + Reciclagem + Idiomas e esquemas + Localizar linha de números + Preferir localizados em vez de números latinos + Guardar num ficheiro + aqui + Pode encontrar e partilhar cores em %s. + Pode encontrar e partilhar esquemas em %s. + Configurar o teclado + Escalar tamanho da tecla emoji com o do tipo de letra + Sugestões de pontuação + Mostrar pontuação quando não há outras sugestões + A cópia de segurança foi restaurada + Apenas teclas da barra de ferramentas + Apenas sugestões + Oculto + Cor de pele padrão para os emojis + Neutra + Ir para a Wiki + Qualquer pessoa pode melhorar a wiki no Github! + Horizontal + Sujerir emojis + Procurar nomes de apps instaladas + Usar nomes de apps instaladas para sugestões e correções + Ocultar teclado + Usar o dicionário de emojis nas sugestões normais + Mostrar descrição do emoji ao premir continuamente + Modo da barra de ferramentas + Ordem das teclas de popup e fonte de dicas + Teclas da barra de ferramentas e sugestões + Ocultar a área de transferência e as barras de ferramentas de emoji + %1$s (%2$s) + %s (Extendido) + %s (Probhat) + %s (Baishakhi) + %s (Sebeolsik 390) + %s (Sebeolsik Final) + %s (Estudante) + Pesquisa de emoji embutida + Apenas sugerir emojis quando uma palavra é precedida por dois pontos + É necessário um dicionário de emojis para esta funcionalidade. Os dicionários no formato .dict podem ser descarregados %s. + Mostrar items afixados no topo + Lembrar idioma por app + Mai (Oriental) + %s (Khipro) + Fila inferior de emoji com tecla de ação + Fila inferior da área de transferência com tecla de ação + diff --git a/app/src/main/res/values-pt/bools.xml b/app/src/main/res/values-pt/bools.xml index 840d20c218..8693f6e1ec 100644 --- a/app/src/main/res/values-pt/bools.xml +++ b/app/src/main/res/values-pt/bools.xml @@ -1,21 +1,7 @@ - - - "Ir" - "Próx." - "Ant." - "Conc." - "Env." - "Pesquisar" - "Pausa" - "Esp." - diff --git a/app/src/main/res/values-pt/strings-config-important-notice.xml b/app/src/main/res/values-pt/strings-config-important-notice.xml deleted file mode 100644 index 86af5ff6de..0000000000 --- a/app/src/main/res/values-pt/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "Aprender com mensagens e dados digitados para melhorar sugestões" - diff --git a/app/src/main/res/values-pt/strings-emoji-descriptions.xml b/app/src/main/res/values-pt/strings-emoji-descriptions.xml deleted file mode 100644 index 05d3739747..0000000000 --- a/app/src/main/res/values-pt/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "Símbolo de copyright" - "Símbolo de marca registrada" - "Ponto de exclamação duplo" - "Ponto de exclamação e ponto de interrogação" - "Símbolo de marca comercial" - "Fonte de informação" - "Seta para esquerda e para direita" - "Seta para cima e para baixo" - "Seta para o noroeste" - "Seta para o nordeste" - "Seta para o sudeste" - "Seta para o sudoeste" - "Seta para a esquerda com gancho" - "Seta para a direita com gancho" - "Relógio de pulso" - "Ampulheta" - - - - - "Triângulo duplo preto para a direita" - "Triângulo duplo preto para a esquerda" - "Triângulo duplo preto para cima" - "Triângulo duplo preto para baixo" - - - - - - - "Despertador" - - - - - "Ampulheta com areia correndo" - - - - - - - "Letra M maiúscula contida em círculo" - "Quadrado pequeno preto" - "Quadrado pequeno branco" - "Triângulo preto para a direita" - "Triângulo preto para a esquerda" - "Quadrado médio branco" - "Quadrado médio preto" - "Quadrado médio branco" - "Quadrado médio preto" - "Sol preto com raios" - "Nuvem" - - - - - - - "Telefone preto" - "Urna de votação com marca de verificação" - "Guarda-chuva com gotas de chuva" - "Bebida quente" - - - "Dedo indicador branco apontando para cima de frente" - - - - - - - - - - - - - - - - - - - "Rosto sorridente branco" - "Áries" - "Touro" - "Gêmeos" - "Câncer" - "Leão" - "Virgem" - "Libra" - "Escorpião" - "Sagitário" - "Capricórnio" - "Aquário" - "Peixes" - "Naipe preto de espadas" - "Naipe preto de paus" - "Naipe preto de copas" - "Naipe preto de ouros" - "Águas termais" - "Símbolo de reciclagem universal preto" - "Símbolo de cadeira de rodas" - - - "Âncora" - - - - - - - - - - - - - "Sinal de aviso" - "Sinal de alta tensão" - "Círculo branco médio" - "Círculo preto médio" - - - - - "Bola de futebol" - "Bola de beisebol" - "Boneco de neve sem neve" - "Sol atrás da nuvem" - - - "Serpentário" - - - - - - - "Entrada proíbida" - - - "Igreja" - - - - - "Fonte" - "Bandeira no buraco" - - - "Barco a vela" - - - - - - - "Barraca" - "Bomba de combustível" - "Tesoura preta" - "Marca de verificação grossa branca" - "Avião" - "Envelope" - "Punho levantado" - "Mão levantada" - "Mão de vitória" - - - "Lápis" - "Ponta de caneta-tinteiro preta" - "Marca de verificação grossa" - "Sinal de multiplicação x grosso" - - - - - "Brilhos" - "Asterisco de oito pontas" - "Estrela preta de oito pontas" - "Floco de neve" - "Brilho" - "Sinal de cruzamento" - "egativo de sinal de cruzamento contido em quadrado" - "Ornamento de ponto de interrogação preto" - "Ornamento de ponto de interrogação branco" - "Ornamento de ponto de exclamação branco" - "Símbolo de ponto de exclamação grosso" - - - "Coração preto grosso" - "Sinal de adição grosso" - "Sinal de subtração grosso" - "Sinal de divisão grosso" - "Seta para a direita preta" - "Laçada" - "Laçada dupla" - "Seta para a direita com curva para cima" - "Seta para a direita com curva para baixo" - "Seta preta para a esquerda" - "Seta preta para cima" - "Seta preta para baixo" - "Quadrado grande preto" - "Quadrado grande branco" - "Estrela média branca" - "Círculo grande grosso" - "Traço ondulado" - "Marca de alternação de parte" - "Ideograma \"parabéns\" contido em círculo" - "Ideograma \"segredo\" contido em círculo" - "Pedra de mahjong do dragão vermelho" - "Curinga preto de baralho" - "Tipo sanguíneo A" - "Tipo sanguíneo B" - "Tipo sanguíneo O" - "Estacionamento" - "Tipo sanguíneo AB" - "\"CL\" em letras de fôrma" - "\"COOL\" em letras de fôrma" - "\"‘FREE\" em letras de fôrma" - "\"ID\" em letras de fôrma" - "\"NEW\" em letras de fôrma" - "\"NG\" em letras de fôrma" - "\"OK\" em letras de fôrma" - "\"SOS\" em letras de fôrma" - "\"UP!\" em letras de fôrma" - "\"VS\" em letras de fôrma" - "Caracteres koko em katakana contidos em quadrado" - "Caractere sa em katakana contido em quadrado" - "Ideograma \"gratuito\" contido em quadrado" - "Ideograma \"lugar reservado\" contido em quadrado" - "Ideograma \"proibição\" contido em quadrado" - "Ideograma \"vaga\" contido em quadrado" - "Ideograma \"aceitação\" contido em quadrado" - "Ideograma \"lotação esgotada\" contido em quadrado" - "Ideograma \"pago\" contido em quadrado" - "Ideograma \"mensal\" contido em quadrado" - "Ideograma \"aplicação\" contido em quadrado" - "Ideograma \"desconto\" contido em quadrado" - "Ideograma \"em atividade\" contido em quadrado" - "Ideograma \"vantagem\" contido em círculo" - "Ideograma \"aceitar\" contido em círculo" - "Ciclone" - "Enevoado" - "Guarda-chuva fechado" - "Noite estrelada" - "Nascer do sol nas montanhas" - "Nascer do sol" - "Cidade ao entardecer" - "Pôr do sol nos prédios" - "Arco-íris" - "Ponte à noite" - "Onda do mar" - "Vulcão" - "Via Láctea" - "Globo terrestre Europa/África" - "Globo terrestre Américas" - "Globo terrestre Ásia/Austrália" - "Globo com meridianos" - "Símbolo da lua nova" - "Símbolo da lua crescente" - "Símbolo da lua em quarto crescente" - "Símbolo da lua crescente gibosa" - "Símbolo da lua cheia" - "Símbolo da lua minguante gibosa" - "Símbolo da lua em quarto minguante" - "Símbolo da lua minguante" - "Lua crescente" - "Lua nova com rosto" - "Lua em quarto crescente com rosto" - "Lua em quarto minguante com rosto" - "Lua cheia com rosto" - "Sol com rosto" - "Estrela brilhante" - "Estrela cadente" - - - - - - - - - - - - - - - - - - - - - - - - - - - "Castanha" - "Muda" - "Árvore perenifólia" - "Árvore decídua" - "Palmeira" - "Cacto" - - - "Tulipa" - "Flor de cerejeira" - "Rosa" - "Hibisco" - "Girassol" - "Florescência" - "Espiga de milho" - "Espiga de arroz" - "Erva" - "Trevo de quatro folhas" - "Folha de bordo" - "Folha caída" - "Folha ao sabor do vento" - "Cogumelo" - "Tomate" - "Berinjela" - "Uvas" - "Melão" - "Melancia" - "Tangerina" - "Limão" - "Banana" - "Abacaxi" - "Maçã vermelha" - "Maçã verde" - "Pera" - "Pêssego" - "Cerejas" - "Morango" - "Hambúrguer" - "Fatia de pizza" - "Carne com osso" - "Coxa de frango" - "Biscoito de arroz japonês" - "Bolinho de arroz japonês" - "Arroz cozido" - "Arroz com curry" - "Tigela quente" - "Espaguete" - "Pão" - "Batatas fritas" - "Batata doce assada" - "Dango" - "Oden" - "Sushi" - "Camarão frito" - "Kamaboko com design de espiral" - "Sorvete de massa" - "Raspadinha" - "Sorvete" - "Rosquinha" - "Cookie" - "Barra de chocolate" - "Doce" - "Pirulito" - "Flan" - "Pote de mel" - "Torta" - "Marmiteira bento" - "Tigela de comida" - "Cozinha" - "Garfo e faca" - "Xícara sem asa" - "Garrafa e copo para saquê" - "Copo para vinho" - "Copo para coquetel" - "Bebida tropical" - "Caneca de cerveja" - "Canecas de cerveja brindando" - "Mamadeira" - - - - - - - "Fita de presente" - "Presente embrulhado" - "Bolo de aniversário" - "Jack Lanterna" - "Árvore de Natal" - "Papai Noel" - "Fogos de artifício" - "Estrelinha" - "Balão" - "Lança confetes" - "Bola de confetes" - "Árvore de Tanabata" - "Bandeiras cruzadas" - "Decoração Kadomatsu" - "Bonecas japonesas" - "Biruta de carpa Koinobori" - "Sinos de vento" - "Cerimônia de contemplação da lua Otsukimi" - "Mochila escolar" - "Capelo" - - - - - - - - - - - - - - - "Carrossel de cavalinho" - "Roda-gigante" - "Montanha russa" - "Vara de pescar e peixe" - "Microfone" - "Câmera cinematográfica" - "Cinema" - "Fone de ouvido" - "Aquarela" - "Cartola" - "Tenda de circo" - "Ingresso" - "Claquete" - "Artes cênicas" - "Videogame" - "Bela pontaria" - "Caça-níqueis" - "Bilhar" - "Dados" - "Boliche" - "Baralho temático de flores" - "Nota musical" - "Várias notas musicais" - "Saxofone" - "Guitarra" - "Teclado musical" - "Trompete" - "Violino" - "Partitura" - "Camiseta de corrida com faixa" - "Raquete e bola de tênis" - "Esqui e bota de esqui" - "Bola de basquete e cesto" - "Bandeira xadrez" - "Snowboarder" - "Corredor" - "Surfista" - - - "Troféu" - "Corridas de cavalos" - "Futebol americano" - "Bola de rugby" - "Nadador" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Construção de casas" - "Casa com jardim" - "Edifício comercial" - "Correio japonês" - "Correio europeu" - "Hospital" - "Banco" - "Caixa eletrônico" - "Hotel" - "Motel" - "Loja de conveniência" - "Escola" - "Loja de departamentos" - "Fábrica" - "Luminária izakaya" - "Castelo japonês" - "Castelo europeu" - - - - - - - - - - - - - - - - - - - - - - - - - "Rato" - "Camundongo" - "Boi" - "Búfalo asiático" - "Vaca" - - - "Leopardo" - "Coelho" - "Gato" - "Dragão" - "Crocodilo" - "Baleia" - "Caracol" - "Serpente" - "Cavalo" - "Carneiro" - "Cabra" - "Ovelha" - "Macaco" - "Galo" - "Galinha" - "Cachorro" - "Porco" - "Javali" - "Elefante" - "Polvo" - "Concha espiral" - "Inseto" - "Formiga" - "Abelha" - "Joaninha" - "Peixe" - "Peixe tropical" - "Peixe-balão" - "Tartaruga" - "Pintinho nascendo" - "Pintinho" - "Pintinho de frente" - "Pássaro" - "Pinguim" - "Coala" - "Poodle" - "Dromedário" - "Camelo bactriano" - "Golfinho" - "Smiley de rato" - "Smiley de vaca" - "Smiley de tigre" - "Smiley de coelho" - "Smiley de gato" - "Smiley de dragão" - "Baleia jorrando água" - "Smiley de cavalo" - "Smiley de macaco" - "Smiley de cachorro" - "Smiley de porco" - "Smiley de sapo" - "Smiley de porquinho-da-índia" - "Smiley de lobo" - "Smiley de urso" - "Smiley de panda" - "Focinho de porco" - "Pegadas de patas" - - - "Olhos" - - - "Orelha" - "Nariz" - "Boca" - "Língua" - "Dedo indicador branco apontando para cima" - "Dedo indicador branco apontando para baixo" - "Dedo indicador branco apontando para a esquerda" - "Dedo indicador branco apontando para a direita" - "Sinal de mão em punho" - "Sinal de mão acenando" - "Sinal de mão indicando OK" - "Sinal com polegar para cima" - "Sinal com polegar para baixo" - "Sinal de bater palmas" - "Sinal de mãos abertas" - "Coroa" - "Chapéu de mulher" - "Óculos de grau" - "Gravata" - "Camiseta" - "Calça jeans" - "Vestido" - "Quimono" - "Biquíni" - "Roupas de mulher" - "Bolsinha" - "Bolsa" - "Bolsa saco" - "Sapato masculino" - "Tênis" - "Sapato de salto alto" - "Sandália feminina" - "Botas femininas" - "Pegadas" - "Busto em silhueta" - "Bustos em silhueta" - "Menino" - "Menina" - "Homem" - "Mulher" - "Família" - "Homem e mulher de mãos dadas" - "Dois homens de mãos dadas" - "Duas mulheres de mãos dadas" - "Policial" - "Mulher com orelhas de coelho" - "Noiva com véu" - "Pessoa loira" - "Homem com gua pi mao" - "Homem com turbante" - "Idoso" - "Idosa" - "Bebê" - "Operário de construção civil" - "Princesa" - "Ogro japonês" - "Gnomo japonês" - "Fantasma" - "Anjo bebê" - "Alienígena" - "Monstro alienígena" - "Duende" - "Caveira" - "Recepcionista de balcão de informações" - "Guarda" - "Dançarina" - "Batom" - "Esmalte" - "Massagem facial" - "Corte de cabelo" - "Poste de barbearia" - "Seringa" - "Comprimido" - "Marca de beijo" - "Carta de amor" - "Anel" - "Gema" - "Beijo" - "Buquê" - "Casal com coração" - "Casamento" - "Coração batendo" - "Coração partido" - "Dois corações" - "Coração brilhando" - "Coração crescendo" - "Coração com flecha" - "Coração azul" - "Coração verde" - "Coração amarelo" - "Coração roxo" - "Coração com fita" - "Corações em círculo" - "Decoração de coração" - "Forma de losango com ponto interno" - "Lâmpada elétrica" - "Símbolo de raiva" - "Bomba" - "Símbolo de sono" - "Símbolo de colisão" - "Símbolo da gota de suor" - "Gota" - "Símbolo de traço" - "Cocô" - "Bíceps contraídos" - "Símbolo de tontura" - "Balão de fala" - "Balão de pensamento" - "Flor branca" - "Símbolo de cem pontos" - "Saco de dinheiro" - "Câmbio de moeda" - "Sinal de cifrão grosso" - "Cartão de crédito" - "Nota bancária com sinal de iene" - "Nota bancária com sinal de dólar" - "Nota bancária com sinal de euro" - "Nota bancária com sinal de libra" - "Dinheiro com asas" - "Gráfico com tendência ascendente e símbolo de iene" - "Assento" - "Computador pessoal" - "Valise" - "Minidisco" - "Disquete" - "Disco óptico" - "DVD" - "Pasta de arquivos" - "Pasta de arquivos aberta" - "Página com curva" - "Página voltada para cima" - "Calendário" - "Calendário destacável" - "Índice de cartões" - "Gráfico com tendência ascendente" - "Gráfico com tendência descendente" - "Gráfico de barras" - "Prancheta" - "Alfinete" - "Alfinete redondo" - "Clipe de papel" - "Régua reta" - "Régua triangular" - "Guias de marca-página" - "Livro-razão" - "Bloco de anotações" - "Bloco de anotações com capa decorativa" - "Livro fechado" - "Livro aberto" - "Livro verde" - "Livro azul" - "Livro laranja" - "Livros" - "Crachá" - "Pergaminho" - "Memorando" - "Telefone" - "Pager" - "Aparelho de fax" - "Antena de satélite" - "Alto-falante para discursos públicos" - "Megafone em uso" - "Bandeja da caixa de saída" - "Bandeja da caixa de entrada" - "Pacote" - "Símbolo de e-mail" - "Envelope recebido" - "Envelope com seta para baixo" - "Caixa de correio fechada com bandeira abaixada" - "Caixa de correio fechada com bandeira levantada" - "Caixa de correio aberta com bandeira levantada" - "Caixa de correio aberta com bandeira abaixada" - "Caixa de e-mails" - "Corneta de correio" - "Jornal" - "Celular" - "Celular com seta para a direita" - "Modo de vibração" - "Celular desligado" - "Proibido usar celular" - "Antena com barras" - "Câmera" - - - "Filmadora" - "Televisão" - "Rádio" - "Videocassete" - - - - - "Setas entrelaçadas para a direita" - "Setas para a esquerda e para a direita em sentido horário" - "Setas para a esquerda e para a direita em sentido horário com \"1\"" - "Setas para baixo e para cima em sentido horário" - "Setas para baixo e para cima em sentido anti-horário" - "Símbolo de baixo brilho" - "Símbolo de alto brilho" - "Alto-falante cortado" - "Alto-falante" - "Alto-falante com onda sonora" - "Alto-falante com três ondas sonoras" - "Bateria" - "Tomada elétrica" - "Lente de aumento virada para a esquerda" - "Lente de aumento virada para a direita" - "Cadeado com caneta-tinteiro" - "Cadeado fechado com chave" - "Chave" - "Cadeado" - "Cadeado aberto" - "Sino" - "Sino cortado" - "Marca-página" - "Símbolo de link" - "Botão de opção" - "\"Back\" com seta para a esquerda" - "\"End\" com seta para a esquerda" - "\"On!\" com seta para a esquerda e para a direita" - "\"Soon\" com seta para a direita" - "\"Top\" com seta para cima" - "Símbolo de proibido para menores de 18" - "Tecla do dez" - "Símbolo de entrada de letras latinas maiúsculas" - "Símbolo de entrada de letras latinas minúsculas" - "Símbolo de entrada de números" - "Símbolo de entrada de símbolos" - "Símbolo de entrada de letras latinas" - "Fogo" - "Tocha elétrica" - "Chave inglesa" - "Martelo" - "Porca e parafuso" - "Facão" - "Pistola" - "Microscópio" - "Telescópio" - "Bola de cristal" - "Estrela de seis pontas com ponto central" - "Símbolo japonês para iniciante" - "Emblema de tridente" - "Botão quadrado preto" - "Botão quadrado branco" - "Círculo grande vermelho" - "Círculo grande azul" - "Losango grande laranja" - "Losango grande azul" - "Losango pequeno laranja" - "Losango pequeno azul" - "Triângulo vermelho apontando para cima" - "Triângulo vermelho apontando para baixo" - "Triângulo pequeno vermelho apontando para cima" - "Triângulo pequeno vermelho apontando para baixo" - - - - - - - - - - - - - "Relógio mostrando 01h00" - "Relógio mostrando 02h00" - "Relógio mostrando 03h00" - "Relógio mostrando 04h00" - "Relógio mostrando 05h00" - "Relógio mostrando 06h00" - "Relógio mostrando 07h00" - "Relógio mostrando 08h00" - "Relógio mostrando 09h00" - "Relógio mostrando 10h00" - "Relógio mostrando 11h00" - "Relógio mostrando 12h00" - "Relógio mostrando 01h30" - "Relógio mostrando 02h30" - "Relógio mostrando 03h30" - "Relógio mostrando 04h30" - "Relógio mostrando 05h30" - "Relógio mostrando 06h30" - "Relógio mostrando 07h30" - "Relógio mostrando 08h30" - "Relógio mostrando 09h30" - "Relógio mostrando 10h30" - "Relógio mostrando 11h30" - "Relógio mostrando 12h30" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Monte Fuji" - "Torre de Tóquio" - "Estátua da Liberdade" - "Silhueta do Japão" - "Moai" - "Rosto mostrando os dentes" - "Rosto mostrando os dentes com olhos sorridentes" - "Rosto com lágrimas de alegria" - "Rosto sorridente com boca aberta" - "Rosto sorridente com boca aberta e olhos sorridentes" - "Rosto sorridente com boca aberta e suando frio" - "Rosto sorridente com boca aberta e olhos bem fechados" - "Rosto sorridente com auréola" - "Rosto sorridente com chifres" - "Rosto com olho piscando" - "Rosto sorridente com olhos sorridentes" - "Rosto saboreando comida deliciosa" - "Rosto aliviado" - "Rosto sorridente com olhos de coração" - "Rosto sorridente com óculos de sol" - "Rosto com meio sorriso" - "Rosto neutro" - "Rosto sem expressão" - "Rosto de desinteressado" - "Rosto suando frio" - "Rosto pensativo" - "Rosto confuso" - "Rosto desconcertado" - "Rosto beijando" - "Rosto jogando beijo" - "Rosto beijando com olhos sorridentes" - "Rosto beijando com olhos fechados" - "Rosto com língua de fora" - "Rosto com língua de fora e piscando" - "Rosto com língua de fora e olhos bem fechados" - "Rosto de frustrado" - "Rosto preocupado" - "Rosto nervoso" - "Rosto de desaprovação" - "Rosto chorando" - "Rosto de perseverante" - "Rosto com aparência de triunfo" - "Rosto com misto de decepção e alívio" - "Rosto franzido com boca aberta" - "Rosto angustiado" - "Rosto temeroso" - "Rosto fatigado" - "Rosto sonolento" - "Rosto cansado" - "Rosto mostrando os dentes" - "Rosto chorando alto" - "Rosto com boca aberta" - "Rosto silenciado" - "Rosto com boca aberta e suando frio" - "Rosto gritando de medo" - "Rosto surpreso" - "Rosto enrubescido" - "Rosto dormindo" - "Rosto tonto" - "Rosto sem boca" - "Rosto com máscara hospitalar" - "Smiley de gato feliz com olhos sorridentes" - "Smiley de gato com lágrimas de alegria" - "Smiley de gato sorridente com boca aberta" - "Smiley de gato sorridente com olhos de coração" - "Smiley de gato com sorriso maroto" - "Smiley de gato beijando com olhos fechados" - "Smiley de gato de desaprovação" - "Smiley de gato chorando" - "Smiley de gato fatigado" - - - - - - - - - "Smiley com gesto de reprovação" - "Smiley com gesto de ok" - "Pessoa curvando-se bastante" - "Macaco cego" - "Macaco surdo" - "Macaco mudo" - "Pessoa feliz levantando uma mão" - "Pessoa levantando as mãos em comemoração" - "Pessoa franzindo a testa" - "Pessoa com rosto de desaprovação" - "Pessoa com mãos unidas em oração" - "Foguete" - "Helicóptero" - "Locomotiva a vapor" - "Vagão" - "Trem de alta velocidade" - "Trem-bala de alta velocidade" - "Trem" - "Metrô" - "Metrô leve" - "Estação" - "Bonde" - "Elétrico" - "Ônibus" - "Ônibus de frente" - "Trólebus" - "Ponto de ônibus" - "Micro-ônibus" - "Ambulância" - "Caminhão de bombeiros" - "Viatura policial" - "Viatura policial de frente" - "Táxi" - "Táxi de frente" - "Automóvel" - "Automóvel de frente" - "Veículo recreativo" - "Caminhão de entrega" - "Caminhão articulado" - "Trator" - "Monotrilho" - "Trem de montanha" - "Trem suspenso" - "Bondinho" - "Teleférico" - "Navio" - "Barco a remo" - "Lancha" - "Semáforo horizontal" - "Semáforo vertical" - "Sinal de construção" - "Giroflex de viaturas policiais" - "Bandeira triangular em poste" - "Porta" - "Sinal de entrada proibida" - "Símbolo de permitido fumar" - "Símbolo de proibido fumar" - "Símbolo de \"jogue o lixo no lixo\"" - "Símbolo de proibido jogar lixo" - "Símbolo de água potável" - "Símbolo de água não potável" - "Bicicleta" - "Proibido bicicletas" - "Ciclista" - "Ciclista de montanha" - "Pedestre" - "Proibido pedestres" - "Travessia de crianças" - "Símbolo masculino" - "Símbolo feminino" - "Banheiro" - "Símbolo de bebê" - "Vaso sanitário" - "WC" - "Chuveiro" - "Banho" - "Banheira" - "Controle de passaportes" - "Alfândega" - "Esteira de bagagem" - "Bagagem abandonada" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-pt/strings-letter-descriptions.xml b/app/src/main/res/values-pt/strings-letter-descriptions.xml deleted file mode 100644 index d49d5f6745..0000000000 --- a/app/src/main/res/values-pt/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "Indicador ordinal feminino" - "Micro" - "Indicador ordinal masculino" - "Eszett" - "A, crase" - "A, agudo" - "A, circunflexo" - "A, til" - "A, trema" - "A, ångström" - "A, E, ligadura" - "C, cedilha" - "E, crase" - "E, agudo" - "E, circunflexo" - "E, trema" - "I, crase" - "I, agudo" - "I, circunflexo" - "I, trema" - "Eth" - "N, til" - "O, crase" - "O, agudo" - "O, circunflexo" - "O, til" - "O, trema" - "O, traço" - "U, crase" - "U, agudo" - "U, circunflexo" - "U, trema" - "Y, agudo" - "Thorn" - "Y, trema" - "A, mácron" - "A, bráquia" - "A, ogonek" - "C, agudo" - "C, circunflexo" - "C, ponto acima" - "C, caron" - "D, caron" - "D, traço" - "E, mácron" - "E, bráquia" - "E, ponto acima" - "E, ogonek" - "E, caron" - "G, circunflexo" - "G, bráquia" - "G, ponto acima" - "G, cedilha" - "H, circunflexo" - "H, traço" - "I, til" - "I, mácron" - "I, bráquia" - "I, ogonek" - "I sem ponto" - "I, J, ligadura" - "J, circunflexo" - "K, cedilha" - "Kra" - "L, agudo" - "L, cedilha" - "L, caron" - "L, ponto médio" - "L, traço" - "N, agudo" - "N, cedilha" - "N, caron" - "N, precedida por apóstrofe" - "Eng" - "O, mácron" - "O, bráquia" - "O, agudo duplo" - "O, E, ligadura" - "R, agudo" - "R, cedilha" - "R, caron" - "S, agudo" - "S, circunflexo" - "S, cedilha" - "S, caron" - "T, cedilha" - "T, caron" - "T, traço" - "U, til" - "U, mácron" - "L, bráquia" - "U, ångström" - "U, agudo duplo" - "U, ogonek" - "W, circunflexo" - "Y, circunflexo" - "Z, agudo" - "Z, ponto acima" - "Z, caron" - "S longo" - "O, chifre" - "U, chifre" - "S, vírgula abaixo" - "T, vírgula abaixo" - "Schwa" - "A, ponto abaixo" - "A, gancho acima" - "A, circunflexo e agudo" - "A, circunflexo e crase" - "A, circunflexo e gancho acima" - "A, circunflexo e til" - "A, circunflexo e ponto abaixo" - "Um, bráquia e agudo" - "A, bráquia e crase" - "A, bráquia e gancho acima" - "A, bráquia e til" - "A, bráquia e ponto abaixo" - "E, ponto abaixo" - "E, gancho acima" - "E, til" - "E, circunflexo e agudo" - "E, circunflexo e crase" - "E, circunflexo e gancho acima" - "E, circunflexo e til" - "E, circunflexo e ponto abaixo" - "I, gancho acima" - "I, ponto abaixo" - "O, ponto abaixo" - "O, gancho acima" - "O, circunflexo e agudo" - "O, circunflexo e crase" - "O, circunflexo e gancho acima" - "O, circunflexo e til" - "O, circunflexo e ponto abaixo" - "O, chifre e agudo" - "O, chifre e crase" - "O, chifre e gancho acima" - "O, chifre e til" - "O, chifre e ponto abaixo" - "U, ponto abaixo" - "U, gancho acima" - "U, chifre e agudo" - "U, chifre e crase" - "U, chifre e gancho acima" - "U, chifre e til" - "U, chifre e ponto abaixo" - "Y, crase" - "Y, ponto abaixo" - "Y, gancho acima" - "Y, til" - "Ponto de exclamação invertido" - "Aspa dupla angular esquerda" - "Ponto médio" - "Um sobrescrito" - "Aspa dupla angular direita" - "Ponto de interrogação invertido" - "Aspa simples esquerda" - "Aspa simples direita" - "Aspa baixa simples" - "Aspa dupla esquerda" - "Aspa dupla direita" - "Adaga" - "Adaga dupla" - "Sinal de \"por mil\"" - "Símbolo de minutos" - "Símbolo de segundos" - "Aspa simples angular esquerda" - "Aspa simples angular direita" - "Quatro sobrescrito" - "n latina minúscula sobrescrita" - "Símbolo de peso" - "Aos cuidados de" - "Seta para a direita" - "Seta para baixo" - "Conjunto vazio" - "Incremento" - "Menor ou igual a" - "Maior ou igual a" - "Estrela preta" - diff --git a/app/src/main/res/values-pt/strings-talkback-descriptions.xml b/app/src/main/res/values-pt/strings-talkback-descriptions.xml index c41baac99d..0eb1363b53 100644 --- a/app/src/main/res/values-pt/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-pt/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "Conecte um fone de ouvido para ouvir as chaves de senha." - "O texto atual é %s" - "Nenhum texto digitado" - "%1$s corrige %2$s para %3$s" - "%1$s realiza correção automática" - "Sem sugestões" - "Caractere desconhecido" - "Shift" - "Mais símbolos" - "Shift" - "Símbolos" - "Shift" - "Excluir" - "Símbolos" - "Letras" - "Números" - "Configurações" - "Tab" - "Espaço" - "Entrada de texto por voz" - "Emojis" - "Enter" - "Pesquisar" - "Ponto" - "Alterar idioma" - "Próximo" - "Anterior" - "Shift ativado" - "Caps Lock ativado" - "Modo de símbolos" - "Modo mais símbolos" - "Modo de letras" - "Modo de telefone" - "Modo de símbolos do telefone" - "Teclado oculto" - "Mostrando teclado %s" - "data" - "data e hora" - "e-mail" - "mensagens" - "número" - "telefone" - "texto" - "hora" - "URL" - "Recentes" - "Pessoas" - "Objetos" - "Natureza" - "Lugares" - "Símbolos" - "Sinalizações" - "Emoticons e pessoas" - "Animais e natureza" - "Comidas e bebidas" - "Viagens e lugares" - "Atividade" - "Emoticons" - "%s maiúscula" - "I maiúscula" - "I maiúscula, ponto acima" - "Símbolo desconhecido" - "Emoji desconhecido" - "Rosto entediado" - "Rosto envergonhado" - "Rosto com óculos" - "Rosto de surpresa" - "Rosto beijando" - "Rosto franzido" - "Caracteres alternativos estão disponíveis" - "Caracteres alternativos foram descartados" - "Sugestões alternativas estão disponíveis" - "Sugestões alternativas foram descartadas" + + + "Conecte um fone de ouvido para ouvir as chaves de senha." + "O texto atual é %s" + "Nenhum texto digitado" + "%1$s corrige %2$s para %3$s" + "%1$s realiza correção automática" + "Sem sugestões" + "Caractere desconhecido" + "Shift" + "Mais símbolos" + "Shift" + "Símbolos" + "Shift" + "Excluir" + "Símbolos" + "Letras" + "Números" + "Configurações" + "Tab" + "Espaço" + "Entrada de texto por voz" + "Emojis" + "Enter" + "Pesquisar" + "Ponto" + "Alterar idioma" + "Próximo" + "Anterior" + "Shift ativado" + "Caps Lock ativado" + "Modo de símbolos" + "Modo mais símbolos" + "Modo de letras" + "Modo de telefone" + "Modo de símbolos do telefone" + "Teclado oculto" + "Mostrando teclado %s" + "data" + "data e hora" + "e-mail" + "mensagens" + "número" + "telefone" + "texto" + "hora" + "URL" + "Recentes" + "Objetos" + "Símbolos" + "Sinalizações" + "Emoticons e pessoas" + "Animais e natureza" + "Comidas e bebidas" + "Viagens e lugares" + "Atividade" + "Emoticons" + "%s maiúscula" + "I maiúscula" + "I maiúscula, ponto acima" + "Caracteres alternativos estão disponíveis" + "Caracteres alternativos foram descartados" + "Sugestões alternativas estão disponíveis" + "Sugestões alternativas foram descartadas" diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 37f56de1b0..f6f3ddc8c1 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -1,225 +1,445 @@ - - Opções de introdução - Procurar nomes dos contactos - Corretor ortográfico usa entradas da lista de contactos - Vibrar ao tocar na tecla - Som ao tocar na tecla - Mostrar popup de teclas - "Preferências" - "Contas e privacidade" - Aparência e esquemas - "Escrita com gestos" - "Correção de texto" - "Avançado" - "Tema" - "Ativar teclado dividido" - "Outros métodos de entrada" - Tecla para mudar o idioma também cobre outros métodos de entrada - Tecla para troca de idioma - Mostrar se estiverem ativados vários idiomas - Duração do popup da tecla - "Sem atraso" - "Padrão" - "%s ms" - "Padrão do sistema" - Sugerir nomes dos contactos - Utilizar nomes dos contactos para sugestões e correções - "Sugestões personalizadas" - Melhorar %s - Duplo espaço insere ponto - Tocar duas vezes na barra de espaço insere um ponto e um espaço - Maiúsculas automáticas - Primeira palavra de cada frase com letra maiúscula - "Dicionário pessoal" - Dicionários extra - "Dicionário principal" - "Mostrar sugestões de correção" - Mostrar sugestões durante a escrita - "Bloquear palavras ofensivas" - Não sugerir palavras ofensivas - "Correção automática" - A barra de espaço e a pontuação corrigem automaticamente as palavras com erro - Desligada - "Moderado" - "Agressivo" - "Muito agressivo" - "Sugerir palavra seguinte" - Utilizar palavra anterior para efetuar sugestões - Ativar escrita com gestos - Inserir uma palavra deslizando pelas letras - Mostrar rasto do gesto - "Previsão dinâmica flutuante" - "Ver a palavra sugerida ao usar gestos" - "Gesto de frase" - Inserir espaços durante gestos ao deslizar até a tecla de espaço - Tecla Introdução por voz - Nenhum método de introdução por voz ativado. Verifique as definições Idioma e introdução. - Configurar métodos de introdução - "Idiomas" - Ajuda e ciomentários - "Idiomas" - Toque novamente para guardar - Toque aqui para guardar - "Dicionário disponível" - "Tema do teclado" - "Alternar contas" - "Nenhuma conta selecionada" - Está a utilizar %1$s - "OK" - "Cancelar" - "Sair" - Selecione a conta para usar - Inglês (Reino Unido) - Inglês (EUA) - Espanhol (EUA) - Hindi-Inglês - "Sérvio (Latino)" - Inglês (Reino Unido) %s - Inglês (EUA) %s - Espanhol (EUA) (%s) - Hindi-inglês %s - Sérvio %s - %s (Tradicional) - %s (Compacto) - "Nenhum idioma (alfabeto)" - "Alfabeto (QWERTY)" - "Alfabeto (QWERTZ)" - "Alfabeto (AZERTY)" - "Alfabeto (Dvorak)" - "Alfabeto (Colemak)" - "Alfabeto (PC)" - "Emojis" - "Tema do teclado" - "Estilos personalizados" - Adicionar estilo - "Adicionar" - "Remover" - Guardar - "Idioma" - Esquema - Para utilizar o estilo personalizado, tem que o ativar. Deseja ativar o estilo agora\? - "Ativar" - "Agora não" - O estilo de entrada já existe: %s - "Duração da vibração ao tocar" - Volume ao tocar na tecla - Atraso de pressão nas teclas - "Emojis para teclado físico" - Mostra o teclado de emojis ao tocar na tecla Alt - "Padrão" - Bem-vindo ao %s - com escrita por gestos - Configuração - "Próxima etapa" - A configurar %s - Ative o %s - Assinale %s na área \"Idioma e introdução\" das definições. Assim, já poderá executar a aplicação no dispositivo. - %s já está ativado nas nas definições de idioma e introdução. Esta etapa está concluída. Vamos avançar para a próxima! - Ativar nas definições - Alternar para %s - De seguida, selecione \"%s\" como método de introdução. - Alternar métodos de introdução - Parabéns, configuração terminada! - Agora, já pode utilizar o %s para escrever nas suas aplicações. - Configurar idiomas extra - Terminado - Mostrar ícone - Mostrar ícone da aplicação no \'launcher\' - Fornecedor do dicionário - Fornecedor do dicionário - "Serviço de dicionário" - "Informações de atualização do dicionário" - Dicionários extra - Definições para dicionários - Dicionários do utilizador - Dicionário do utilizador - "Dicionário disponível" - Descarga em curso... - "Instalado" - "Instalado, desativado" - Erro ao contactar com o serviço de dicionário - "Nenhum dicionário disponível" - Recarregar - "Última atualização" - A procurar atualizações - A carregar… - "Dicionário principal" - "Cancelar" - Definições - "Instalar" - "Cancelar" - Eliminar - Versão %1$s - "Adicionar" - "Adicionar ao dicionário" - "Frase" - "Mais opções" - "Menos opções" - OK - "Palavra:" - "Atalho:" - "Idioma:" - Escreva uma palavra - "Atalho opcional" - "Editar palavra" - "Editar" - Eliminar - Não existem palavras no dicionário do utilizador. Para adicionar uma palavra, toque na tecla (+). - "Para todos os idiomas" - Mais idiomas… - Eliminar - " ABCDEFGHIJKLMNOPQRSTUVWXYZ" - Verificação ortográfica OpenBoard - Definições de verificação ortográfica OpenBoard - Tecla da área de transferência + + "Buscar nomes de contatos" + "Vibrar ao digitar" + "Som ao tocar a tecla" + "Mostrar letra em pop-up ao digitar" + "Preferências" + "Escrita com gestos" + "Correção de texto" + "Avançado" + "Tema" + "Ativar teclado dividido" + "Outros métodos de entrada" + "Tecla de seleção de idioma" + "%s ms" + "Padrão do sistema" + "Usa nomes dos Contatos para sugestões e correções" + "Sugestões personalizadas" + "Duplo espaço para ponto" + "Tocar duas vezes na barra de espaço insere um ponto seguido de espaço" + "Capitalização automática" + "Iniciar a primeira palavra de cada frase com letra maiúscula" + "Dicionário pessoal" + "Dicionário principal" + "Mostrar sugestões de correção" + "Exibir sugestões de palavras durante a digitação" + "Bloquear palavras ofensivas" + "Não sugerir palavras potencialmente ofensivas" + "Correção automática" + "A barra de espaço e a pontuação corrigem automaticamente palavras com erro de digitação" + "Desativado" + "Moderado" + "Agressivo" + "Muito agressivo" + "Sugerir palavra seguinte" + "Usar a palavra anterior ao fazer sugestões" + "Ativar a escrita com gestos" + "Inserir uma palavra deslizando os dedos pelas letras" + "Mostrar percurso do gesto" + "Previsão dinâmica flutuante" + "Gesto de frase" + "Inserir espaços durante gestos deslizando até a tecla de espaço" + Inglês (Reino Unido) + Inglês (EUA) + Espanhol (EUA) + Hindi-Inglês + "Sérvio (Latino)" + %s (Tradicional) + %s (Compacto) + "Nenhum idioma" + "Emojis" + "Adicionar" + "Remover" + "Salvar" + "Idioma" + "Layout" + "Duração da vibração ao tocar" + "Volume ao tocar na tela" + "Atraso ao pressionar teclas" + "Emojis para teclado físico" + "Exibe o teclado de emojis ao pressionar a tecla Alt" + "Padrão" + Bem-vindo ao %s + "com entrada por gestos" + "Começar" + A configurar %s + Ative o %s + Assinale %s na área \"Idioma e introdução\" das definições. Assim, já poderá executar a aplicação no dispositivo. + Ativar nas definições + Alternar para %s + De seguida, selecione \"%s\" como método de introdução. + Alternar métodos de introdução + Parabéns, configuração terminada! + Agora, já pode utilizar o %s para escrever nas suas aplicações. + "Concluído" + "Mostrar ícone do app" + "Mostrar ícone do app no iniciador" + "Dicionários complementares" + "Dicionário disponível" + "Configurações" + "Excluir" + Versão %s + "Atalho:" + "Idioma:" + "Digite uma palavra" + "Atalho opcional" + "Editar palavra" + "Para todos os idiomas" + "Mais idiomas…" + Verificação ortográfica HeliBoard + Definições de verificação ortográfica HeliBoard Número de linha Mostrar sempre n.º de linha - Alfabeto (Colemak Mod-DH) Desativar aprendizagem de palavras - Impor modo incógnito - Deslize na barra de espaço para mover o cursor + Impor modo incógnito Tecla de emoji Correções Experimental Introdução Outras - Definições OpenBoard + Definições HeliBoard Sugestões Deslize para eliminar Mais teclas Pode deslizar desde a tecla Eliminar para selecionar e remover grandes porções de texto de uma vez - Ativar redimensionamento do teclado Altura do teclado Toque longo na tecla Espaço abre menu de seleção do método de introdução Mostrar dicas de teclas Mostrar dicas com toque longo Limite das teclas - Família do tema - Variante do tema - Pode reduzir a utilização de energia (conforme a tecnologia do ecrã) - Fundo muito escuro Teclas adicionais - Alfabeto (Workman) Aparência usa as definições do sistema Modo diurno/noturno automático Alterar método de introdução com a tecla Espaço - \'Trackpad\' na barra de espaço - \ No newline at end of file + "Selecione o método de entrada" + "Aparência" + Confiança na auto-correção + Se desativada, a chave da área de transferência colará o conteúdo da área de transferência, se houver + Espaço automático após pontuação + Inserir automaticamente espaço após a pontuação ao digitar uma nova palavra + Histórico da área de transferência + %s min + Sem Limite + Ativar histórico da área de transferência + Tempo de retenção do histórico + %s (Akkhor) + "Desfazer" + "Refazer" + "Aprender com mensagens e dados digitados para melhorar sugestões" + "Ir" + "Próx." + "Ant." + "Conc." + "Env." + "Pesquisar" + "Pausa" + "Esp." + Escalar tamanho da tecla emoji com o do tipo de letra + Backup + Sempre usar a sugestão do meio + Backup e restauração + Alterar idioma + Começar instantaneamente sempre + Vibrar em modo Não incomodar + Atalhos de autocorreção + Mostrar conteúdo copiado recentemente para a área de transferência como uma sugestão + Procurar nomes de apps + Sugestões de pontuação + Mostrar pontuação quando não há outras sugestões + Pré-visualização flutuante + Ver a palavra sugerida ao usar os gestos + Restaurar + Backup restaurado + Formato da tecla de horário + Escrita multi-idioma + Idiomas com dicionários + Carregar biblioteca de escrita por gestos + Fornecer uma biblioteca nativa para permitir a escrita por gestos + Distância da divisão + Alterar ambos + Comportamento da tela de mudança de idioma + Usar nomes de apps instaladas para sugestões e correções + Aviso: Desativar esta opção irá limpar os dados aprendidos + Adicionar palavras ao dicionário pessoal + Usar dicionário pessoal do dispositivo para guardar palavras aprendidas + Sempre mostrar sugestões + Campos de edição web (encontrados normalmente em browser) tem uma grande tendência a causar problemas com a definição de \"Sempre mostrar sugestões\" + Mais autocorreção + Autocorrigir mesmo quando não explicitamente requisitado pelo campo de entrada + Backspace reverte o autocorretor + Usar dicionário de emojis em sugestões normais + Ignorar o pedido de outras apps de desativar sugestões (pode causar problemas) + Espaço + Nunca mostrar sugestões para campos de edição de web + Quando ativado, atalhos poderão ser expandidos pelo autocorretor + Sugerir emojis + Ativar teclado dividido (paisagem) + Mostrar descrição do emoji ao pressionar + Ao clicar espaço ou pontuação, a sugestão do meio será inserida + Sugerir conteúdo da área de transferência + Mover a pré-visualização durante um gesto + Tempo de espera de escrita rápida + Tempo de vida do percurso do gesto + Erro de backup: %s + Salvar ou carregar de ficheiro. Aviso: a restauração irá substituir dados existentes + Erro ao restaurar o backup: %s + Adicionar variantes comuns + Ficheiro de biblioteca desconhecido. Tem a certeza que a obteve de uma fonte de confiança, e que serve para \'%s\'? + Carregar biblioteca + Espaço automático após uma sugestão + Espaço automático após uma palavra escrita com gestos + Sem espaço automático ao pressionar shift + Shift remove o espaço automático pendente + Mostrar mais letras com diacríticos no pop-up + Adicionar todas as variantes disponíveis + Deteção de URL + Idiomas e Layouts + Preferir números localizados em vez de latim + Mostrar dicas na linha de números + Ordem das teclas de pop-up e fonte de dicas + Selecionar fonte de dicas + Selecionar ordem do pop-up de teclas + Mostrar teclas de pop-up de TLD + Espaço automático antes de uma palavra escrita com gestos + Substituir os pop-ups da tecla de ponto com TLDs quando escrevendo URLs e endereços de email + Apagar biblioteca + Tenta detetar URLs e parecidos como uma única palavra + Mostrar variantes definidas nos idiomas do teclado + Adicionar variantes muito comuns (padrão) + Localizar linha de números + Irás necessitar da biblioteca para \'%s\'. Bibliotecas incompatíveis podem crashar ao usar escrita por gestos. \n\nAviso: carregar código externo pode ser um risco de segurança. Use apenas uma biblioteca de uma fonte confiável. + Teclas de barra de ferramentas e sugestões + Todo à direita + Idioma (prioridade) + Área de transferência + Modo de uma mão + Início da página + Linha de números + Esquerda + Direita + Layout + Selecionar palavra + Todo à esquerda + Final da página + Baixo + Palavra à esquerda + Escondido + Esconder a área de transferência e barras de ferramentas de emoji também + Selecionar teclas da barra de ferramentas + Entrada de voz + Só teclas da barra de ferramentas + Só sugestões + Limpar a área de transferência + Cima + Símbolos + Teclado dividido + Modo de barra de ferramentas + Palavra à direita + Página acima + Página abaixo + Fechar o histórico da área de transferência + Emoji + Toque para editar o layout + Teclas funcionais + Erro de layout: %s + Última fila da área de transferência + Última fila de emojis + Espaçamento em baixo + %s (Sebeolsik Final) + %s (Estudante) + Carregar ficheiro + Espaçamento ao lado + %s (Bengalí) + Kaitag + %s (Fonético) + Mais símbolos + Linha de números + Se não definido, a imagem de retrato será usada + Telefone + Cor de pele padrão para emojis + Neutro + Texto personalizado na barra de espaço + Definir fonte personalizada de ficheiro + Mansi + Dagbani + Sesoto + Dargínico (Urakhi) + %1$s (%2$s) + %s (Extendido) + %s (Baishakhi) + %s (Sebeolsik 390) + Carregar + Adicionar layout customizado + Selecionar ficheiro num formato compatível. Informação sobre os formatos está disponível em %s. + Guardar para ficheiro + Copiar para Área de Transferência + Impossível ler ficheiro + Apagar mesmo o layout customizado %s? + Aviso: o layout está a ser usado + Layouts Secundários + Teclas funcionais (ecrã grande) + Teclas funcionais (Símbolos) + Teclas funcionais (Mais símbolos) + Símbolos + Símbolos (Árabe) + Símbolos de telefone + Telemóvel + Numpad + Numpad (paisagem) + Linha de números (básica) + Definir imagem de fundo + Definir imagem de fundo (paisagem) + Personalizar moedas + Definir o símbolo principal e até 6 secundários para a moeda, separadas com espaços + Mudar o teclado principal depois… + Selecionar emojis da vista de emojis + Selecionando entrada do histórico da área de transferência + Pressionando espaço ou enter após outras teclas no modo de símbolos + Tamanho da fonte do teclado + Tamanho da fonte dos emojis + Adicionar dicionário de ficheiro + Não mostrar novamente + %s (experimental) + Substituir o dicionário \"%1$s\" adicionado pelo utilizador?\n\nDicionário atual:\n%2$s\n\nNovo dicionário:\n%3$s + Selecionar teclas da barra de ferramentas da área de transferência + Remover pop-ups redundantes + Selecionar teclas afixadas da barra de ferramentas + Fixar tecla da barra de ferramentas ao pressionar + Isto irá desativar as outras ações ao pressionar para teclas da barra de ferramentas que não estão afixadas + Mostrar dicas funcionais + Suprimir teclas de pop-ups se presentes no layout de base + Pressionar tecla de símbolos de numpad + Teclas com espaços estreitos + Pressionando enter ou espaço após outras teclas no numpad + Definir imagem para o modo de dia ou noite? + Substituir versão de Emoji + Configurar o teclado + Dicionário interno principal + Selecionar idioma + Substituir dicionário + Remover mesmo o dicionário \"%s\" adicionado pelo utilizador? + Selecionar um dicionário para adicionar. Dicionários no formato de .dict podem ser descarregado %s. + aqui + Erro: O ficheiro selecionado não é um ficheiro de dicionário válido + Erro: script não compatível com este teclado + Erro ao carregar o ficheiro do dicionário + Dia + Mostra dicas se pressionar uma tecla ativa funcionalidade extra + Noite + Dicionários + "Sem um dicionário, apenas obterá sugestões de texto digitado anteriormente.<br> \n Pode descarregar dicionários %1$s, ou verificar se um dicionário para \"%2$s\" pode ser descarregado diretamente %3$s." + Cor barra de navegação + Cores dinâmicas + Preto + Nublado + Holo Branco + Índigo + Fundo da barra de espaços + Mostrar mais cores + Claro + Mostrar apenas cores principais + Adicionar uma palavra + Estilo + Arredondado + Cores + Cores (noite) + Escuro + Mais escuro + Azul Acinzentado + Castanho + Floresta + Oceano + Rosa + Areia + Violeta + Escolher cor automaticamente + Mostrar todas as cores + Fundo do teclado + Texto da tecla + Texto da linha de sugestões + Fundo da tecla + Fundo da tecla funcional + Texto da barra de espaço + Acento + Input gestual + Podes encontrar e partilhar layouts em %s. + secção de discussão + Sobre + Versão + Ver no GitHub + Ir para a Wiki + Estilo do ícone + Peso: + Chocolate + Essa palavra já existe no dicionário do utilizador %s. Por favor digite outra. + Esta definição expõe todas as cores usadas internamente. A lista de cores pode mudar a qualquer hora. A cor padrão é aleatória, e todos os nomes não serão traduzidos. + Podes encontrar e partilhar cores em %s. + Texto da dica da tecla + Definido pelo Utilizador + Paisagem + Nome inválido + Licença de open-source + Mover cursor + Salvar registos + Código de tecla + Fechar + Apagar mesmo %s? + Descrição de funcionalidades ocultas + Enter + Tab + Delete + Mudar o lado do modo de uma mão + Gesto de deslizar verticalmente a barra de espaço + Ativar numpad + Esconder teclado + Direção da barra de ferramentas variável + Mostrar barra de ferramentas automáticamente + Mostrar a barra de ferramentas se a escrita começar ou texto é selecionado + A Wiki pode ser melhorada por qualquer utilizador do GitHub! + GNU General Public License v3.0 + Toque o idioma para abrir as definições + armazenamento protegido pelo dispositivo + Shift + Shift (ativo) + Caps lock + Espaço (layout de números) + Desativar modo de uma mão + Redimensionar o modo de uma mão + Conector de zero largura + Não conector de zero largura + Lixo + Gesto de deslizar horizontalmente a barra de espaço + Nenhum + Inverter a direção quando um teclado do subtipo direita para a esquerda é selecionado + Distância de deslizar para alterar idioma + Apagar mesmo todos os códigos de teclas personalizados? + Pressionar código + Conteúdo copiado + Personalizar ícones + Subtipo personalizado + Mostrar / esconder barra de ferramentas + Esconder a barra de ferramentas quando sugestões ficam disponíveis + Mostrar funcionalidades que podem passar despercebidas + Input de voz desativado + Barra de Ferramentas + Redefinir mesmo todos os ícones personalizados? + Personalizar teclas de códigos da barra de ferramentas + Esconder barra de ferramentas automaticamente + ► Pressionar teclas da barra de ferramentas resulta em funcionalidade adicional: <br> \n\t• área de transferência &#65515; colar <br> \n\t• mover esquerda/direita &#65515; palavra à esquerda/direita <br> \n\t• mover cima/baixo &#65515; página para cima/baixo <br> \n\t• palavra à esquerda/direita &#65515; início/fim da linha <br> \n\t• página para cima/baixo &#65515; início/fim da página <br> \n\t• copiar &#65515; cortar <br> \n\t• selecionar palavra &#8596; selecionar tudo <br> \n\t• desfazer &#8596; refazer <br> <br> \n► Pressionar as teclas na faixa de sugestões afixa-as na faixa de sugestões. <br> <br> \n► Pressiona a tecla de vírgula para aceder ao modo de Área de Transferência, modo de Emoji, modo de Uma Mão, Definições, ou mudar Idioma: <br> \n\t• Modo de Emoji e Mudar Idioma irá desaparecer se a tecla correspondente estiver ativa; <br> \n\t• Em alguns layouts não é a tecla de vírgula, mas a que está na mesma posição (e.g. é \\\'q\\\' para o layout Dvorak). <br> <br> \n► Quando o modo incógnito estiver ativo, nenhuma palavra nova será aprendida, e nenhum emoji será adicionado aos recentes. <br> <br> \n► Pressiona o ícone de Incógnito para aceder à barra de ferramentas. <br> <br> \n► Input por gestos: Desliza do shift para outra tecla para escrever uma única tecla maiúscula: <br> \n\t• Também funciona para as teclas \\\'?123\\\' para escrever um único símbolo do teclado, e para teclas relacionadas. <br> <br> \n► Pressiona shift ou a tecla de símbolos, pressiona uma ou mais teclas, e depois liberta para voltar ao teclado anterior. <br> <br> \n► Pressiona uma sugestão na faixa de sugestões para mostrar mais sugestões, e o botão de apagar para a apagar. <br> <br> \n► Desliza para cima para mostrar mais sugestões, e liberta na sugestão para selecionar. <br> <br> \n► Pressiona um artigo na área de transferência para o afixar (permanece lá até ser desafiado). <br> <br> \n► Deslize para a esquerda no Modo da Área de Transferência para remover um artigo (exceto quando está afixado) <br> <br> \n► Seleciona texto e pressiona shift para alternar entre maiúsculas, minúsculas e palavras capitalizadas. <br> <br> \n► Pode adicionar dicionários ao abri-los no gestor de ficheiros: <br> \n\t• Apenas funciona com <i>content-uris</i> e não com <i>file-uris</i>, ou seja, pode não funcionar com alguns gestores de ficheiros. <br> <br> \n► Para utilizadores a fazer backup manual com root: <br> \n\t• Começando no Android 7, o ficheiro de preferências partilhado não está no local padrão, pois a app está a usar %s. Isto é necessário para que as definições sejam acessíveis depois do dispositivo ser desbloqueado, e.g. no boot; <br> \n\t• O ficheiro está normalmente localizado em /data/user_de/0/package_id/shared_prefs/ mas pode variar dependendo da versão de Android. <br> <br> \n<i><b>Modo de debug / APK de debug</b></i> <br> <br> \n► Pressiona uma sugestão para ver o dicionário de origem. <br> <br> \n► Ao usar o APK de debug, pode encontrar as Definições de Debug nas Definições Avançadas, mas a utilidade é limitada exceto para exportar o dicionário nos logs. <br> \n\t• Para um APK de release, clique a versão no <i>Sobre</i> várias vezes, e depois pode encontrar as definições de debug nas <i>Definições Avançadas</i>. <br> \n\t• Ao ativar <i>Show suggestion infos</i>, sugestões terão pequenos números no topo mostrando a pontuação interna e o dicionário proveniente. <br> <br> \n► No evento de um crash da aplicação, ser-lhe-á perguntado se quer os logs do crash quando abre as Definições. <br> <br> \n► Em escrita multi-idioma, a barra de espaço irá mostrar um valor de confiança usado para determinar o idioma atual. <br> <br> \n► Sugestões terão um pequeno número no topo mostrando a pontuação interna e o dicionário proveniente (pode ser desativado). + Pesquisa por emojis embutida + Sugerir somente emojis para quando uma palavra é precedida por dois pontos + Um dicionário de emojis é necessário para esta funcionalidade. Dicionários no formato .dict podem ser descarregados %s. + Mostrar items afixados no topo + Lembrar idioma por app + Mari (Oriental) + %s (Khipro) + Fila inferior de emojis com tecla de ação + Fila inferior da área de transferência com tecla de ação + Mostrar fila de números no modo de símbolos + Definir fonte de emojis personalizada de ficheiro + diff --git a/app/src/main/res/values-ro/bools.xml b/app/src/main/res/values-ro/bools.xml index 840d20c218..8693f6e1ec 100644 --- a/app/src/main/res/values-ro/bools.xml +++ b/app/src/main/res/values-ro/bools.xml @@ -1,21 +1,7 @@ - - - "Start" - "Înai." - "Înap." - "Gata" - "Trim." - "Căutați" - "Pauză" - "Așt." - diff --git a/app/src/main/res/values-ro/strings-config-important-notice.xml b/app/src/main/res/values-ro/strings-config-important-notice.xml deleted file mode 100644 index f481e89725..0000000000 --- a/app/src/main/res/values-ro/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "Utilizează mesajele și datele introduse pt. a îmbunătăți sugestiile" - diff --git a/app/src/main/res/values-ro/strings-emoji-descriptions.xml b/app/src/main/res/values-ro/strings-emoji-descriptions.xml deleted file mode 100644 index cae27908a4..0000000000 --- a/app/src/main/res/values-ro/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "Semnul Copyright" - "Semnul Marcă înregistrată" - "Semn de exclamare dublu" - "Semn de exclamare și întrebare" - "Semn marcă înregistrată" - "Sursă de informații" - "Săgeată stânga-dreapta" - "Săgeată sus-jos" - "Săgeată nord-vest" - "Săgeată nord-est" - "Săgeată sud-est" - "Săgeată sud-vest" - "Săgeată încovoiată spre stânga" - "Săgeată încovoiată spre dreapta" - "Ceas de mână" - "Clepsidră" - - - - - "Triunghi dublu, negru, orientat spre dreapta" - "Triunghi dublu, negru, orientat spre stânga" - "Triunghi dublu, negru, orientat în sus" - "Triunghi dublu, negru, orientat în jos" - - - - - - - "Ceas deșteptător" - - - - - "Clepsidră cu nisip" - - - - - - - "Majuscula „M”, din alfabetul latin, încercuită" - "Pătrat mic negru" - "Pătrat mic alb" - "Triunghi negru, orientat spre dreapta" - "Triunghi negru, orientat spre stânga" - "Pătrat mediu alb" - "Pătrat negru mediu" - "Pătrat alb, mijlociu spre mic" - "Pătrat negru, mijlociu spre mic" - "Soare negru cu raze" - "Nor" - - - - - - - "Telefon negru" - "Casetă cu bifă" - "Umbrelă cu picături de ploaie" - "Băuturi calde" - - - "Deget arătător alb, orientat în sus" - - - - - - - - - - - - - - - - - - - "Față zâmbitoare albă" - "Berbec" - "Taur" - "Gemeni" - "Rac" - "Leu" - "Fecioară" - "Balanță" - "Scorpion" - "Săgetător" - "Capricorn" - "Vărsător" - "Pești" - "Pică neagră" - "Treflă neagră" - "Inimă neagra" - "Romb negru" - "Izvoare termale" - "Simbol negru, universal, de reciclare" - "Simbol pentru scaun cu rotile" - - - "Ancoră" - - - - - - - - - - - - - "Semn de avertizare" - "Semn de înaltă tensiune" - "Cerc alb mediu" - "Cerc negru mediu" - - - - - "Minge de fotbal" - "Minge de baseball" - "Om de zăpadă fără zăpadă" - "Soare în spatele unui nor" - - - "Ophiuchus" - - - - - - - "Intrarea interzisă" - - - "Biserică" - - - - - "Fântână" - "Steag în gaură" - - - "Barcă cu pânze" - - - - - - - "Cort" - "Pompă de combustibil" - "Foarfece negru" - "Bifă albă îngroșată" - "Avion" - "Plic" - "Pumn ridicat" - "Mână ridicată" - "Mână cu semnul victoriei" - - - "Creion" - "Peniță neagră" - "Bifă îngroșată" - "Înmulțire complexă x" - - - - - "Scântei" - "Asterisc cu opt colțuri" - "Stea neagră, cu opt colțuri" - "Fulg de nea" - "Scânteie" - "Semn x" - "Semn x alb pe fond negru în pătrat" - "Semn de întrebare ornamental negru" - "Semn de întrebare ornamental alb" - "Semn de exclamare ornamental alb" - "Semn de exclamare îngroșat" - - - "Inimă neagră îngroșată" - "Semn plus îngroșat" - "Semn minus îngroșat" - "Semn de împărțire îngroșat" - "Săgeată neagră, spre dreapta" - "Buclă ondulată" - "Buclă ondulată dublă" - "Săgeată orientată spre dreapta, apoi curbată în sus" - "Săgeată orientată spre dreapta, apoi curbată în jos" - "Săgeată neagră orientată spre stânga" - "Săgeată neagră orientată în sus" - "Săgeată neagră orientată în jos" - "Pătrat negru mare" - "Pătrat alb mare" - "Stea albă medie" - "Cerc îngroșat, mare" - "Liniuță ondulată" - "Semn de modificare" - "Ideogramă încercuită - felicitări" - "Ideogramă încercuită - secret" - "Piesă Mahjong dragon roșu" - "Carte de joc joker negru" - "Grupa de sânge A" - "Grupa de sânge B" - "Grupa de sânge O" - "Parcare" - "Grupa de sânge AB" - "„CL” în pătrat" - "„COOL” în pătrat" - "„FREE” în pătrat" - "„ID” în pătrat" - "„NEW” în pătrat" - "„N G” în pătrat" - "„OK” în pătrat" - "„SOS” în pătrat" - "„UP” cu semn de exclamare în pătrat" - "„VS” în pătrat" - "„Katakana” în pătrat" - "„Servicii Katakana” în pătrat" - "Caracter ideografic „Gratuit” în pătrat" - "Caracter ideografic „Loc rezervat” în pătrat" - "Caracter ideografic „Interzis” în pătrat" - "Caracter ideografic „Loc liber” în pătrat" - "Caracter ideografic „Aprobare” în pătrat" - "Caracter ideografic „Nu sunt locuri libere” în pătrat" - "Caracter ideografic „Cu plată” în pătrat" - "Caracter ideografic „Lunar” în pătrat" - "Caracter ideografic „Înscriere” în pătrat" - "Caracter ideografic „Reducere” în pătrat" - "Caracter ideografic „În activitate” în pătrat" - "Caracter ideografic „Avantaj” în pătrat" - "Caracter ideografic „Acord” în pătrat" - "Ciclon" - "Ceață" - "Umbrelă închisă" - "Noapte cu stele" - "Răsărit peste munți" - "Răsărit" - "Peisaj urban la asfințit" - "Apus de soare deasupra clădirilor" - "Curcubeu" - "Pod noaptea" - "Val" - "Vulcan" - "Calea Lactee" - "Globul pământesc: Europa-Africa" - "Globul pământesc: continentul american" - "Globul pământesc: Asia-Australia" - "Glob pământesc cu meridiane" - "Simbolul Lună nouă" - "Simbolul Lună nouă" - "Simbolul Primul pătrar" - "Simbolul Înainte de lună plină" - "Simbolul Lună plină" - "Simbolul După lună plină" - "Simbolul Ultimul pătrar" - "Simbolul Înainte de lună nouă" - "Semilună" - "Lună nouă, cu chip" - "Lună în primul pătrar, cu chip" - "Lună în ultimul pătrar, cu chip" - "Lună plină, cu chip" - "Soare cu chip" - "Stea strălucitoare" - "Stea căzătoare" - - - - - - - - - - - - - - - - - - - - - - - - - - - "Castană" - "Puiet" - "Copac veșnic verde" - "Copac cu frunze căzătoare" - "Palmier" - "Cactus" - - - "Lalea" - "Floare de cireș" - "Trandafir" - "Hibiscus" - "Floarea-soarelui" - "Floare" - "Spic de porumb" - "Spic de orez" - "Plantă" - "Trifoi cu patru foi" - "Frunză de arțar" - "Frunză căzută" - "Frunză în vânt" - "Ciupercă" - "Roșie" - "Vânătă" - "Struguri" - "Pepene galben" - "Pepene verde" - "Mandarină" - "Lămâie" - "Banană" - "Ananas" - "Măr roșu" - "Măr verde" - "Pară" - "Piersic" - "Cireșe" - "Căpșună" - "Hamburger" - "Felie de pizza" - "Carne pe os" - "Picior de pasăre" - "Biscuite de orez" - "Chiftea de orez" - "Orez gătit" - "Orez cu curry" - "Castron aburind" - "Spaghete" - "Pâine" - "Cartofi prăjiți" - "Cartof dulce copt" - "Dango" - "Oden" - "Sushi" - "Creveți prăjiți" - "Plăcintă de pește cu model ondulat" - "Cornet de înghețată" - "Fulgi de gheață" - "Înghețată" - "Gogoașă" - "Biscuit" - "Ciocolată" - "Bomboane" - "Lollipop" - "Budincă" - "Oală de miere" - "Prăjitură" - "Cutie Bento" - "Oală cu mâncare" - "Gătit" - "Furculiță și cuțit" - "Ceașcă fără toartă" - "Sticlă și ceașcă de sake" - "Pahar de vin" - "Pahar de cocktail" - "Băutură tropicală" - "Halbă de bere" - "Halbe de bere ciocnindu-se" - "Biberon" - - - - - - - "Panglică" - "Cadou ambalat" - "Tort" - "Felinar din dovleac" - "Pom de Crăciun" - "Moș Crăciun" - "Focuri de artificii" - "Artificiu" - "Balon" - "Tun de confetti" - "Minge de confetti" - "Copac Tanabata" - "Steaguri încrucișate" - "Decorațiune de Crăciun" - "Păpuși japoneze" - "Steaguri în formă de pește" - "Clopoței de vânt" - "Ceremonia contemplării lunii" - "Ghiozdan" - "Tocă de absolvire" - - - - - - - - - - - - - - - "Cal de carusel" - "Roata mare" - "Montaigne-russe" - "Undiță și pește" - "Microfon" - "Cameră video" - "Cinema" - "Căști" - "Paletă de pictură" - "Joben" - "Cort de circ" - "Bilet" - "Clachetă" - "Arta spectacolului" - "Joc video" - "Lovitură drept la țintă" - "Jocuri mecanice" - "Biliard" - "Zaruri" - "Popice" - "Cărți de joc cu flori" - "Notă muzicală" - "Mai multe note muzicale" - "Saxofon" - "Chitară" - "Claviatură" - "Trompetă" - "Vioară" - "Partitură" - "Maieu de sport cu dungă" - "Rachetă de tenis și minge" - "Schi și gheată de schi" - "Minge și inel de baschet" - "Steag în carouri" - "Practicant de snowboard" - "Alergător" - "Practicant de surf" - - - "Trofeu" - "Curse de cai" - "Fotbal american" - "Rugby" - "Înnotător" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Clădire" - "Casă cu grădină" - "Clădire de birouri" - "Oficiu poștal japonez" - "Oficiu poștal european" - "Spital" - "Bancă" - "Bancomat" - "Hotel" - "Hoteluri pentru îndrăgostiți" - "Alimentară" - "Școală" - "Magazin universal" - "Fabrică" - "Felinar Izakaya" - "Castel japonez" - "Castel european" - - - - - - - - - - - - - - - - - - - - - - - - - "Șobolan" - "Șoarece" - "Bou" - "Bivol de apă" - "Vacă" - - - "Leopard" - "Iepure" - "Pisică" - "Dragon" - "Crocodil" - "Balenă" - "Melc" - "Șarpe" - "Cal" - "Berbec" - "Capră" - "Oaie" - "Maimuță" - "Cocoș" - "Pui" - "Câine" - "Porc" - "Porc mistreț" - "Elefant" - "Caracatiță" - "Scoică spiralată" - "Insectă" - "Furnică" - "Albină" - "Buburuză" - "Pești" - "Pești tropicali" - "Pește lună" - "Broască țestoasă" - "Pui ieșind din ou" - "Pui de găină" - "Pui văzut din față" - "Pasăre" - "Pinguin" - "Urs koala" - "Pudel" - "Dromader" - "Cămilă cu două cocoașe" - "Delfin" - "Cap de șoarece" - "Cap de vacă" - "Cap de tigru" - "Cap de iepure" - "Cap de pisică" - "Cap de dragon" - "Balenă cenușie" - "Cap de cal" - "Cap de maimuță" - "Cap de câine" - "Cap de porc" - "Cap de broască" - "Cap de hamster" - "Cap de lup" - "Cap de urs" - "Cap de urs panda" - "Rât de porc" - "Urme de labe" - - - "Ochi" - - - "Ureche" - "Nas" - "Gură" - "Limbă scoasă" - "Deget arătător alb, orientat în sus" - "Deget arătător alb, orientat în jos" - "Deget arătător alb, orientat la stânga" - "Deget arătător alb, orientat la dreapta" - "Semn pumn strâns" - "Semn palmă deschisă" - "Semn OK" - "Semn de aprobare" - "Semn de dezaprobare" - "Semn Aplauze" - "Semn Palme deschise" - "Coroană" - "Pălărie de damă" - "Ochelari" - "Cravată" - "Tricou" - "Blugi" - "Rochie" - "Kimono" - "Bikini" - "Haine de damă" - "Poșetă" - "Geantă" - "Borsetă" - "Pantofi bărbătești" - "Încălțăminte sport" - "Pantof cu toc înalt" - "Sandale de damă" - "Cizme de damă" - "Urme de pași" - "Bust siluetă" - "Busturi siluetă" - "Băiat" - "Fată" - "Bărbat" - "Femeie" - "Familie" - "Bărbat și femeie ținându-se de mână" - "Doi bărbați ținându-se de mână" - "Două femei ținându-se de mână" - "Polițist" - "Femeie cu urechi de iepure" - "Mireasă cu voal" - "Persoană cu păr blond" - "Bărbat cu gua pi mao" - "Bărbat cu turban" - "Bătrân" - "Bătrână" - "Bebeluș" - "Muncitor în construcții" - "Prințesă" - "Căpcăun japonez" - "Goblin japonez" - "Fantomă" - "Îngeraș" - "Extraterestru" - "Monstru extraterestru" - "Demon" - "Craniu" - "Persoană la ghișeul de informații" - "Paznic" - "Dansator" - "Ruj" - "Lac de unghii" - "Masaj facial" - "Tunsoare" - "Simbol pentru bărbier" - "Seringă" - "Pilulă" - "Semn de sărut" - "Scrisoare de dragoste" - "Inel" - "Piatră prețioasă" - "Sărut" - "Buchet" - "Cuplu cu inimă" - "Nuntă" - "Inimă bătând" - "Inimă zdrobită" - "Două inimi" - "Inimă strălucitoare" - "Inimă care crește" - "Inimă cu sageată" - "Inimă albastră" - "Inimă verde" - "Inimă galbenă" - "Inimă violet" - "Inimăcu panglică" - "Inimi care se rotesc" - "Ornament inimă" - "Formă romboidală cu un punct înăuntru" - "Bec electric" - "Simbol pentru furie" - "Bombă" - "Simbol pentru somn" - "Simbol pentru accident" - "Simbol stropi de transpirație" - "Picătură" - "Simbol liniuță" - "Excremente" - "Biceps flexat" - "Simbol pentru amețeală" - "Balon de dialog" - "Balon de gândire" - "Floare albă" - "Simbol pentru o sută de puncte" - "Sac cu bani" - "Schimb valutar" - "Semn dolar îngroșat" - "Card de credit" - "Bancnotă cu simbolul yen" - "Bancnotă cu simbolul dolar" - "Bancnotă cu simbolul euro" - "Bancnotă cu simbolul liră" - "Bani cu aripi" - "Diagramă reprezentând o tendință crescătoare și simbolul yen" - "Loc" - "Computer" - "Servietă" - "Minidisc" - "Dischetă" - "Disc optic" - "DVD" - "Dosar cu fișiere" - "Dosar deschis" - "Pagină îndoită" - "Pagină orientată în sus" - "Calendar" - "Calendar cu file detașabile" - "Index cărți de vizită" - "Diagramă reprezentând o tendință crescătoare" - "Diagramă reprezentând o tendință descrescătoare" - "Diagramă cu bare" - "Clipboard" - "Piuneză" - "Piuneză rotundă" - "Agrafă de birou" - "Riglă dreaptă" - "Riglă triunghiulară" - "File de marcaj" - "Registru" - "Blocnotes" - "Blocnotes cu copertă decorativă" - "Carte închisă" - "Carte deschisă" - "Carte verde" - "Carte albastră" - "Carte portocalie" - "Cărți" - "Insignă cu numele" - "Sul" - "Notă" - "Receptor de telefon" - "Pager" - "Fax" - "Antenă satelit" - "Megafon" - "Megafon" - "Tavă de ieșiri" - "Tavă de intrări" - "Pachet" - "Simbolul E-mail" - "Plic primit" - "Plic cu săgeată în jos deasupra" - "Cutie poștală închisă cu steag coborât" - "Cutie poștală închisă cu steag ridicat" - "Cutie poștală deschisă cu steag ridicat" - "Cutie poștală deschisă cu steag coborât" - "Cutie poștală" - "Simbolul poștal" - "Ziar" - "Telefon mobil" - "Telefon mobil cu săgeată spre dreapta la stânga" - "Modul vibrații" - "Telefon mobil închis" - "Telefoanele mobile interzise" - "Antenă cu bare" - "Cameră foto" - - - "Cameră video" - "Emisiuni TV" - "Radio" - "Casetă video" - - - - - "Săgeți răsucite spre dreapta" - "Săgeți în formă de cerc deschis, orientate spre dreapta și spre stânga, în sensul acelor de ceasornic" - "Săgeți în formă de cerc deschis, orientate spre dreapta și spre stânga, în sensul acelor de ceasornic, cu suprapunerea cifrei 1 într-un cerc" - "Săgeți în formă de cerc deschis, orientate în sus și în jos, în sens orar" - "Săgeți în formă de cerc deschis, orientate în sus și în jos, în sens antiorar" - "Simbol de luminozitate scăzută" - "Simbol de luminozitate ridicată" - "Difuzor cu simbol de anulare" - "Difuzor" - "Difuzor cu un val de sunet" - "Difuzor cu trei valuri de sunet" - "Baterie" - "Alimentare electrică" - "Lupă orientată spre stânga" - "Lupă orientată spre dreapta" - "Lacăt cu stilou" - "Lacăt închis cu cheie" - "Cheie" - "Lacăt" - "Lacăt deschis" - "Clopoțel" - "Clopoțel cu simbol de anulare" - "Marcaj" - "Simbol lanț" - "Buton radio" - "„BACK” cu săgeată spre stânga deasupra" - "„END” cu săgeată spre stânga deasupra" - "„ON” cu semn de exclamare și cu săgeată stânga-dreapta deasupra" - "„SOON” cu săgeată spre dreapta deasupra" - "„TOP” cu săgeată în sus deasupra" - "Simbolul „Interzis sub optsprezece ani”" - "Tastă zece" - "Simbol de introducere a majusculelor latine" - "Simbol de introducere a literelor mici latine" - "Simbol de introducere a cifrelor" - "Simbol de introducere a simbolurilor" - "Simbol de introducere a literelor latine" - "Foc" - "Lanternă" - "Cheie" - "Ciocan" - "Piuliță și șurub" - "Hocho" - "Pistol" - "Microscop" - "Telescop" - "Glob de cristal" - "Stea cu șase colțuri cu punct în mijloc" - "Simbolul japonez pentru începători" - "Emblemă trident" - "Buton negru pătrat" - "Buton alb pătrat" - "Cerc mare roșu" - "Cerc mare albastru" - "Romb mare portocaliu" - "Romb mare albastru" - "Romb mic portocaliu" - "Romb mic albastru" - "Triunghi roșu, îndreptat în sus" - "Triunghi roșu, îndreptat în jos" - "Triunghi mic roșu, îndreptat în sus" - "Triunghi mic roșu, îndreptat în jos" - - - - - - - - - - - - - "Ceas cu ora unu" - "Ceas cu ora două" - "Ceas cu ora trei" - "Ceas cu ora patru" - "Ceas cu ora cinci" - "Ceas cu ora șase" - "Ceas cu ora șapte" - "Ceas cu ora opt" - "Ceas cu ora nouă" - "Ceas cu ora zece" - "Ceas cu ora unsprezece" - "Ceas cu ora douăsprezece" - "Ceas cu ora unu și jumătate" - "Ceas cu ora două și jumătate" - "Ceas cu ora trei și jumătate" - "Ceas cu ora patru și jumătate" - "Ceas cu ora cinci și jumătate" - "Ceas cu ora șase și jumătate" - "Ceas cu ora șapte și jumătate" - "Ceas cu ora opt și jumătate" - "Ceas cu ora nouă și jumătate" - "Ceas cu ora zece și jumătate" - "Ceas cu ora unsprezece și jumătate" - "Ceas cu ora douăsprezece și jumătate" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Muntele Fuji" - "Turnul Tokyo" - "Statuia Libertății" - "Conturul Japoniei" - "Moyai" - "Față rânjind" - "Față rânjind cu ochi zâmbitori" - "Față cu lacrimi de bucurie" - "Față zâmbitoare cu gura deschisă" - "Față zâmbitoare cu gura deschisă și ochi zâmbitori" - "Față zâmbitoare, cu gura deschisă și sudoare rece" - "Față zâmbitoare cu gura deschisă și ochii închiși" - "Față zâmbitoare cu aură" - "Față zâmbitoare cu coarne" - "Față care face cu ochiul" - "Față zâmbitoare, cu ochii zâmbitori" - "Față savurând mâncare delicioasă" - "Față ușurată" - "Față zâmbitoare, cu ochii în formă de inimă" - "Față zâmbitoare cu ochelari de soare" - "Față zâmbind șiret" - "Față neutră" - "Față fără expresie" - "Față serioasă" - "Față cu sudoare rece" - "Față meditativă" - "Față confuză" - "Față confuză" - "Față care sărută" - "Față care trimite bezele" - "Față care sărută cu ochi zâmbitori" - "Față care sărută cu ochii închiși" - "Față care scoate limba" - "Față care scoate limba și face cu ochiul" - "Față care scoate limba, cu ochii închiși" - "Față dezamăgită" - "Față îngrijorată" - "Față furioasă" - "Față bosumflată" - "Față care plânge" - "Față perseverentă" - "Față cu privire triumfătoare" - "Față dezamăgită dar ușurată" - "Față încruntată cu gura deschisă" - "Față chinuită" - "Față înfricoșată" - "Față obosită" - "Față somnoroasă" - "Față obosită" - "Față cu grimasă" - "Față plângând în hohote" - "Față cu gura deschisă" - "Față redusă la tăcere" - "Față cu gura deschisă și sudoare rece" - "Față țipând de frică" - "Față uimită" - "Față congestionată" - "Față care doarme" - "Față amețită" - "Față fără gura" - "Față cu mască medicală" - "Față de pisică rânjind, cu ochi zâmbitori" - "Față de pisică cu lacrimi de bucurie" - "Față zâmbitoare de pisică, cu gura deschisă" - "Față zâmbitoare pisică, cu ochii în formă de inimă" - "Față de pisică cu zâmbet crispat" - "Față de pisică sărutând cu ochii închiși" - "Față de pisică bosumflată" - "Față de pisică plângând" - "Față de pisică obosită" - - - - - - - - - "Față cu gest „nu are niciun rost”" - "Față cu gest „OK”" - "Persoană care face plecăciuni" - "Maimuță care-și acoperă ochii" - "Maimuță care-și acoperă urechile" - "Maimuță care-și acoperă gura" - "Persoană fericită, ridicând o mână" - "Persoană fericită ridicând ambele mâini de bucurie" - "Persoană încruntată" - "Persoană cu fața bosumflată" - "Persoană cu mâinile împreunate" - "Rachetă" - "Elicopter" - "Locomotivă cu abur" - "Vagon de tren" - "Tren de mare viteză" - "Tren de mare viteză cu vârf ascuțit" - "Tren" - "Metrou" - "Metrou ușor" - "Stație" - "Tramvai" - "Vagon de tramvai" - "Autobuz" - "Autobuz sosind din față" - "Troleibuz" - "Stație de autobuz" - "Maxi-taxi" - "Ambulanță" - "Mașină de pompieri" - "Mașină de poliție" - "Mașină de poliție sosind din față" - "Taxi" - "Taxi sosind din față" - "Automobil" - "Automobil sosind din față" - "Vehicul de agrement" - "Camion pentru livrări" - "Camion cu remorcă" - "Tractor" - "Monoșină" - "Cale ferată montană" - "Cale ferată suspendată" - "Teleferic montan" - "Tramvai aerian" - "Vapor" - "Barcă cu vâsle" - "Barcă cu motor" - "Semafor orizontal" - "Semafor vertical" - "Semn de construcție" - "Sirena de la mașina de poliție" - "Stâlp cu steag triunghiular" - "Ușă" - "Semn Intrarea oprită" - "Simbol Fumatul permis" - "Simbol Fumatul interzis" - "Simbol Aruncați gunoiul în locuri amenajate" - "Simbol Păstrați curățenia" - "Simbol Apă potabilă" - "Simbol Apă care nu este potabilă" - "Bicicletă" - "Interzis accesul cu bicicleta" - "Biciclist" - "Biciclist pe trasee montane" - "Pieton" - "Accesul pietonilor interzis" - "Copii traversând" - "Simbol Bărbați" - "Simbol Femei" - "Toaletă" - "Simbol Bebeluș" - "Toaletă" - "WC" - "Duș" - "Baie" - "Cadă" - "Control pașapoarte" - "Vamă" - "Revendicarea bagajului" - "Bagaj în custodie" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-ro/strings-letter-descriptions.xml b/app/src/main/res/values-ro/strings-letter-descriptions.xml deleted file mode 100644 index cb42529286..0000000000 --- a/app/src/main/res/values-ro/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "Indicator de ordine feminin" - "Semnul miu" - "Indicator de ordine masculin" - "S ascuțit" - "A, accent grav" - "A, accent ascuțit" - "A, accent circumflex" - "A, tildă" - "A, tremă" - "A, cerc deasupra" - "A, E, ligatură" - "C, sedilă" - "E, accent grav" - "E, accent ascuțit" - "E, accent circumflex" - "E, tremă" - "I, accent grav" - "I, accent ascuțit" - "I, accent circumflex" - "I, tremă" - "Eth" - "N, tildă" - "O, accent grav" - "O, accent ascuțit" - "O, accent circumflex" - "O, tildă" - "O, tremă" - "O, tăiat cu linie" - "U, accent grav" - "U, accent ascuțit" - "U, accent circumflex" - "U, tremă" - "Y, accent ascuțit" - "Thorn" - "Y, tremă" - "A, macron" - "A, căciulă" - "A, ogonek" - "C, accent ascuțit" - "C, accent circumflex" - "C, punct deasupra" - "C, caron" - "D, caron" - "D, tăiat cu linie" - "E, macron" - "E, căciulă" - "E, punct deasupra" - "E, ogonek" - "E, caron" - "G, accent circumflex" - "G, căciulă" - "G, punct deasupra" - "G, sedilă" - "H, accent circumflex" - "H, tăiat cu linie" - "I, tildă" - "I, macron" - "I, căciulă" - "I, ogonek" - "I fără punct" - "I, J, ligatură" - "J, accent circumflex" - "K, sedilă" - "Kra" - "L, accent ascuțit" - "L, sedilă" - "L, caron" - "L, punct la mijloc" - "L, tăiat cu linie" - "N, accent ascuțit" - "N, sedilă" - "N, caron" - "N, precedat de apostrof" - "Eng" - "O, macron" - "O, căciulă" - "O, accent ascuțit dublu" - "O, E, ligatură" - "R, accent ascuțit" - "R, sedilă" - "R, caron" - "S, accent ascuțit" - "S, accent circumflex" - "S, sedilă" - "S, caron" - "T, sedilă" - "T, caron" - "T, tăiat cu linie" - "U, tildă" - "U, macron" - "U, căciulă" - "U, cerc deasupra" - "U, accent ascuțit dublu" - "U, ogonek" - "W, accent circumflex" - "Y, accent circumflex" - "Z, accent ascuțit" - "Z, punct deasupra" - "Z, caron" - "S lung" - "O, corn" - "U, corn" - "S, virgulă dedesubt" - "T, virgulă dedesubt" - "Schwa" - "A, punct dedesubt" - "A, cârlig deasupra" - "A, accent circumflex și ascuțit" - "A, accent circumflex și grav" - "A, accent circumflex și cârlig deasupra" - "A, accent circumflex și tildă" - "A, accent circumflex și punct dedesubt" - "A, căciulă și accent ascuțit" - "A, căciulă și accent grav" - "A, căciulă și cârlig deasupra" - "A, căciulă și tildă" - "A, căciulă și punct dedesubt" - "E, punct dedesubt" - "E, cârlig deasupra" - "E, tildă" - "E, accent circumflex și ascuțit" - "E, accent circumflex și grav" - "E, accent circumflex și cârlig deasupra" - "E, accent circumflex și tildă" - "E, accent circumflex și punct dedesubt" - "I, cârlig deasupra" - "I, punct dedesubt" - "O, punct dedesubt" - "O, cârlig deasupra" - "O, accent circumflex și ascuțit" - "O, accent circumflex și grav" - "O, accent circumflex și cârlig deasupra" - "O, accent circumflex și tildă" - "O, accent circumflex și punct dedesubt" - "O, corn și accent ascuțit" - "O, corn și accent grav" - "O, corn și cârlig deasupra" - "O, corn și tildă" - "O, corn și punct dedesubt" - "U, punct dedesubt" - "U, cârlig deasupra" - "U, corn și accent ascuțit" - "U, corn și accent grav" - "U, corn și cârlig deasupra" - "U, corn și tildă" - "U, corn și punct dedesubt" - "Y, accent grav" - "Y, punct dedesubt" - "Y, cârlig deasupra" - "Y, tildă" - "Semnul exclamării inversat" - "Ghilimele unghiulare duble la stânga" - "Punct la mijloc" - "Unu exponent" - "Ghilimele unghiulare duble la dreapta" - "Semnul întrebării inversat" - "Ghilimele simple la stânga" - "Ghilimele simple la dreapta" - "Ghilimele simple jos" - "Ghilimele duble la stânga" - "Ghilimele duble la dreapta" - "Cruce" - "Cruce dublă" - "Semnul la mie" - "Prim" - "Prim dublu" - "Ghilimele unghiulare simple la stânga" - "Ghilimele unghiulare simple la dreapta" - "Patru exponent" - "n latin exponent" - "Semnul peso" - "În atenția" - "Săgeată la dreapta" - "Săgeată în jos" - "Mulțime vidă" - "Increment" - "Mai mic sau egal cu" - "Mai mare sau egal cu" - "Stea neagră" - diff --git a/app/src/main/res/values-ro/strings-talkback-descriptions.xml b/app/src/main/res/values-ro/strings-talkback-descriptions.xml index edfe1eabe3..8b1beb6f5b 100644 --- a/app/src/main/res/values-ro/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-ro/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "Conectați un set căști-microfon pentru a auzi tastele apăsate când introduceți parola." - "Textul curent este %s" - "Nu a fost introdus text" - "%1$s corectează %2$s cu %3$s" - "%1$s efectuează corectare automată" - "Nicio sugestie" - "Caracter necunoscut" - "Shift" - "Mai multe simboluri" - "Shift" - "Simboluri" - "Shift" - "Ștergeți" - "Simboluri" - "Litere" - "Cifre" - "Setări" - "Tab" - "Tasta Space" - "Intrare vocală" - "Emoticonuri" - "Return" - "Căutați" - "Bulină" - "Schimbați limba" - "Înai." - "Înapoi" - "Tasta Shift a fost activată" - "Tasta Caps Lock este activată" - "Modul Simboluri" - "Modul Mai multe simboluri" - "Modul Alfanumeric" - "Modul Telefon" - "Modul Telefon cu simboluri" - "Tastatura este ascunsă" - "Se afișează tastatura pentru %s" - "data" - "date și ore" - "adrese de e-mail" - "mesaje" - "numere" - "telefoane" - "text" - "ore" - "adrese URL" - "Recente" - "Persoane" - "Obiecte" - "Natură" - "Locații" - "Simboluri" - "Steaguri" - "Emoticonuri și persoane" - "Animale și natură" - "Mâncare și băutură" - "Călătorii și locații" - "Activitate" - "Emoticonuri" - "%s mare" - "I mare" - "I mare, punct deasupra" - "Simbol necunoscut" - "Emoji necunoscut" - "Față plictisită" - "Față jenată" - "Față cu ochelari de soare" - "Față surprinsă" - "Față care sărută" - "Față încruntată" - "Sunt disponibile caractere alternative" - "S-au închis caracterele alternative" - "Sunt disponibile sugestii alternative" - "S-au închis sugestiile alternative" + + + "Conectați un set căști-microfon pentru a auzi tastele apăsate când introduceți parola." + "Textul curent este %s" + "Nu a fost introdus text" + "%1$s corectează %2$s cu %3$s" + "%1$s efectuează corectare automată" + "Nicio sugestie" + "Caracter necunoscut" + "Shift" + "Mai multe simboluri" + "Shift" + "Simboluri" + "Shift" + "Ștergeți" + "Simboluri" + "Litere" + "Cifre" + "Setări" + "Tab" + "Tasta Space" + "Intrare vocală" + "Emoticonuri" + "Return" + "Căutați" + "Bulină" + "Schimbați limba" + "Înai." + "Înapoi" + "Tasta Shift a fost activată" + "Tasta Caps Lock este activată" + "Modul Simboluri" + "Modul Mai multe simboluri" + "Modul Alfanumeric" + "Modul Telefon" + "Modul Telefon cu simboluri" + "Tastatura este ascunsă" + "Se afișează tastatura pentru %s" + "data" + "date și ore" + "adrese de e-mail" + "mesaje" + "numere" + "telefoane" + "text" + "ore" + "adrese URL" + "Recente" + "Obiecte" + "Simboluri" + "Steaguri" + "Emoticonuri și persoane" + "Animale și natură" + "Mâncare și băutură" + "Călătorii și locații" + "Activitate" + "Emoticonuri" + "%s mare" + "I mare" + "I mare, punct deasupra" + "Sunt disponibile caractere alternative" + "S-au închis caracterele alternative" + "Sunt disponibile sugestii alternative" + "S-au închis sugestiile alternative" diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 015b0b5378..b5604d66c6 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -1,193 +1,432 @@ - - - - - "Opțiuni de introducere text" - "Verificare nume în agendă" - "Verificatorul ortografic utilizează intrări din lista de contacte" - "Vibrare la apăsarea tastei" - "Sunet la apăsarea tastei" - "Pop-up la apăsarea tastei" - "Preferințe" - "Conturi și confidențialitate" - "Aspect" - "Tastare gestuală" - "Corectarea textului" - "Avansate" - "Temă" - "Activați tastatura divizată" - "Comut. alte metode de introd." - "Tasta de comutare între limbi include și alte metode de introd." - "Tastă comutare limbi" - "Afișați când sunt activate mai multe limbi de intrare" - "Închidere pop-up taste" - "Fără întârziere" - "Prestabilit" - "%s msec." - "Valoare prestabilită" - "Sugerați nume din Agendă" - "Utilizați numele din Agendă pentru sugestii și corecții" - "Sugestii personalizate" - "Îmbunătățiți %s" - "Inserează punct spațiu" - "Dubla atingere a barei de spațiu inserează punct urmat de spațiu" - "Scriere automată cu majuscule" - "Scrie cu majusculă primul cuvânt din fiecare propoziție" - "Dicționar personal" - "Dicționare suplimentare" - "Dicționar principal" - "Afișați sugestii de corectare" - "Afișează sugestii de cuvinte în timpul introducerii textului" - "Blocați cuvintele jignitoare" - "Nu se sugerează cuvinte potențial jignitoare" - "Autocorectare" - "Corectare automată cuvinte prin bară spațiu/semne punctuație" - "Dezactivată" - "Moderată" - "Exigentă" - "Foarte agresivă" - "Sugestii pentru cuvântul următor" - "Utilizează cuvântul anterior pentru sugestii" - "Activați tastarea gestuală" - "Introduceți un cuvânt glisând ușor între litere" - "Se afișează urma gestului" - "Sugestie flotantă dinamică" - "Afișați cuvântul sugerat când utilizați gesturi" - "Gest expresie" - "Introduceți spații în timpul gesturilor, glisând pe tasta spațiu" - "Tastă pentru intrarea vocală" - "Nicio metodă de intrare vocală activată. Verificați setările din „Limbi și introducerea textului”." - "Configurați metodele de intrare" - "Limbi" - "Ajutor și feedback" - "Limbi" - "Atingeți din nou pentru a salva" - "Atingeți aici pentru a salva" - "Dicționar disponibil" - "Temă pentru tastatură" - "Comutați între conturi" - "Niciun cont selectat" - "Acum utilizați %1$s" - "OK" - "Anulați" - "Deconectați-vă" - "Selectați un cont de utilizat" - "engleză (Regatul Unit)" - "engleză (S.U.A.)" - "spaniolă (S.U.A.)" - "Hinglish" - "Sârbă (caractere latine)" - "Engleză (Regatul Unit) (%s)" - "Engleză (S.U.A.) (%s)" - "Spaniolă (S.U.A.) (%s)" - "Hinglish (%s)" - "Sârbă (%s)" - "%s (tradițională)" - "%s (Compact)" - "Nicio limbă (alfabet)" - "Alfabet (QWERTY)" - "Alfabet (QWERTZ)" - "Alfabet (AZERTY)" - "Alfabet (Dvorak)" - "Alfabet (Colemak)" - "Alfabet (PC)" - "Emoji" - "Temă pentru tastatură" - "Stiluri personalizate" - "Stil" - "Adăugați" - "Eliminați" - "Salvați" - "Limbă" - "Aspect" - "Stilul de introducere personalizat trebuie să fie activat pentru a-l utiliza. Îl activați acum?" - "Activați" - "Nu acum" - "Același stil de introducere există deja: %s" - "Vibrare după apăsarea tastei" - "Sunet la apăsarea tastelor" - "Timpul apăsării lungi a tastei" - "Emoji pentru tastatura fizică" - "Tasta fizică Alt afișează panoul de emoji" - "Prestabilit" - "Bun venit la %s" - "cu Tastarea gestuală" - "Începeți" - "Pasul următor" - "Configurarea %s" - "Activați %s" - "Bifați „%s” în „Limbi și introducerea textului”. Astfel, o veți autoriza să ruleze pe dispozitiv." - "%s este activată deja în „Limbi și introducerea textului”, deci ați finalizat pasul. Treceți la următorul!" - "Activați în Setări" - "Comutați la %s." - "Apoi, selectați „%s” ca metodă de introducere a textului activă." - "Comutați între metodele de introducere a textului" - "Felicitări, sunteți gata!" - "Acum, puteți introduce text în toate aplicațiile preferate, utilizând %s." - "Configurați limbi suplimentare" - "Finalizat" - "Afișați pictograma aplicației" - "Afișați pictograma aplicației în lansator" - "Furnizor dicționar" - "Furnizor dicționar" - "Serviciu dicționar" - "Informații privind actualizarea dicționarului" - "Dicționare suplimentare" - "Setări pentru dicționare" - "Dicționarele utilizatorului" - "Dicționarul utilizatorului" - "Dicționar disponibil" - "Se descarcă acum" - "Instalat" - "Instalat, dezactivat" - "Eroare conectare la serviciu dicționar" - "Niciun dicționar" - "Actualizați" - "Data ultimei modificări" - "Se verifică existența actualizărilor" - "Se încarcă..." - "Dicționar principal" - "Anulați" - "Setări" - "Instalați" - "Anulați" - "Ștergeți" - "Versiunea %1$s" - "Adăugați" - "Adăugați în dicționar" - "Expresie" - "Alte opțiuni" - "Puține opțiuni" - "OK" - "Cuvânt:" - "Comandă rapidă:" - "Limbă:" - "Introduceți un cuvânt" - "Comandă rapidă opțională" - "Editați cuvântul" - "Editați" - "Ștergeți" - "Nu aveți niciun cuvânt în dicționarul utilizatorului. Pentru a adăuga un cuvânt, atingeți butonul Adăugați (+)." - "Pentru toate limbile" - "Mai multe limbi…" - "Ștergeți" - " AĂÂBCDEFGHIÎJKLMNOPQRSȘTȚUVWXYZ" + + + "Verificare nume în agendă" + "Vibrare la apăsarea tastei" + "Sunet la apăsarea tastei" + "Pop-up la apăsarea tastei" + "Preferințe" + "Tastare gestuală" + "Corectarea textului" + "Avansate" + "Temă" + Activează tastatura divizată + Comută la alte metode de introducere + "Tastă comutare limbi" + %s ms + "Valoare prestabilită" + Utilizează numele din Agendă pentru sugestii și corecții + "Sugestii personalizate" + "Inserează punct spațiu" + "Dubla atingere a barei de spațiu inserează punct urmat de spațiu" + "Scriere automată cu majuscule" + "Scrie cu majusculă primul cuvânt din fiecare propoziție" + "Dicționar personal" + "Dicționar principal" + Afișează sugestii de corectare + "Afișează sugestii de cuvinte în timpul introducerii textului" + Blochează cuvintele jignitoare + "Nu se sugerează cuvinte potențial jignitoare" + "Autocorectare" + "Corectare automată cuvinte prin bară spațiu/semne punctuație" + "Dezactivată" + "Moderată" + "Exigentă" + "Foarte agresivă" + "Sugestii pentru cuvântul următor" + "Utilizează cuvântul anterior pentru sugestii" + Activează tastarea gestuală + Introdu un cuvânt glisând ușor între litere + "Se afișează urma gestului" + "Sugestie flotantă dinamică" + "Gest expresie" + Introdu spații în timpul gesturilor, glisând pe tasta spațiu + "engleză (Regatul Unit)" + "engleză (S.U.A.)" + "spaniolă (S.U.A.)" + "Hinglish" + "Sârbă (caractere latine)" + "%s (tradițională)" + "%s (Compact)" + "Nicio limbă" + "Emoji" + Adaugă + Elimină + Salvează + "Limbă" + "Aspect" + "Vibrare după apăsarea tastei" + "Sunet la apăsarea tastelor" + "Timpul apăsării lungi a tastei" + "Emoji pentru tastatura fizică" + "Tasta fizică Alt afișează panoul de emoji" + "Prestabilit" + "Bun venit la %s" + "cu Tastarea gestuală" + Începe + Se configurează %s + Activează %s + Bifează %s în „Limbi și introducerea textului”. Astfel, o vei autoriza să ruleze pe dispozitiv. + Activează în Setări + Comută la %s + Apoi, selectează \"%s\" ca metodă de introducere a textului. + Comută între metodele de introducere a textului + Felicitări, ai finalizat! + Acum, poți introduce text în toate aplicațiile preferate, utilizând %s. + "Finalizat" + Afișează pictograma aplicației + Afișează pictograma aplicației în lansator + "Dicționare suplimentare" + "Dicționar disponibil" + "Setări" + Șterge + Versiune %s + "Comandă rapidă:" + "Limbă:" + Introdu un cuvânt + "Comandă rapidă opțională" + Editează cuvântul + "Pentru toate limbile" + "Mai multe limbi…" + "Alege metoda de introducere de text" + "Aspect" + Anulează + Refă + "Utilizează mesajele și datele introduse pt. a îmbunătăți sugestiile" + "Start" + Înainte + Înapoi + "Gata" + Trimite + Caută + "Pauză" + Așteaptă + Setări HeliBoard + Chei suplimentare + Corectări + Sugestii + Experimental + Diverse + Distanță divizare + Comută ambele + Tasta Emoji + %s min + Fără limită + Adaugă cuvinte în dicționarul personal + Utilizează dicționarul personal al dispozitivului pentru a stoca cuvintele învățate + Afișează sugestii întotdeauna + Mai multă auto-corecție + Încrederea în corecție automată + Timpul de păstrare a istoricului + Introducere + Verificator ortografic HeliBoard + Setări pentru verificarea ortografică HeliBoard + Istoric clipboard + Activează istoricul clipboardului + Avertisment: dezactivarea acestei setări va șterge datele învățate + Ignoră solicitarea altor aplicații de a dezactiva sugestiile (poate cauza probleme) + Corectează automat chiar și atunci când nu este solicitat în mod explicit de câmpul de intrare + Dacă este dezactivată, tasta de clipboard va lipi conținutul clipboardului, dacă acesta există + Comută limba + Salvează sau încarcă din fișier. Avertisment: restaurarea va suprascrie datele existente + Eroare copie de rezervă: %s + Eroare la restaurarea copiei de rezervă: %s + Copie de rezervă + Ștergere prin glisare + Efectuează o glisare de la tasta de ștergere pentru a selecta și a elimina simultan porțiuni mai mari de text + Copie de rezervă și restaurare + Selectează ordinea tastelor pop-up + Rând de numere + Se afișează întotdeauna rândul de numere + Localizează rândul de numere + Preferă numerele localizate în detrimentul celor latine + Se afișează indicii tastelor + Afișare sugestii la apăsarea lungă + Restaurare + Tastare multilingvă + Încarcă biblioteca de tastare prin gesturi + Furnizează o bibliotecă nativă pentru a activa tastarea prin gesturi + Adaugă variante comune + Adaugă toate variantele disponibile + Detectare URL + Încearcă să detectezi adrese URL și similare ca un singur cuvânt + Forțează modul incognito + Dezactivează învățarea cuvintelor noi + Mai multe taste + Limbi și aspecte + Rând de numere + Limbă (prioritate) + Aspect + Simboluri + Clipboard + Șterge clipboardul + Introducere vocală + Modul cu o singură mână + Selectare cuvânt + Stânga + Dreapta + Sus + Jos + Afișează sugestii dacă apăsarea lungă a unei taste declanșează funcționalități suplimentare + Schimbă metoda de introducere cu tasta spațiu + Goluri înguste ale tastelor + Vei avea nevoie de biblioteca pentru „%s”. Bibliotecile incompatibile se pot bloca atunci când utilizezi tastarea prin gesturi. +\n +\nAtenție: încărcarea codului extern poate reprezenta un risc de securitate. Utilizează doar o bibliotecă dintr-o sursă în care ai încredere. + Selectează tastele barei de instrumente + Afișează sugestii funcționale + Selectează sursa indicilor + Apăsarea lungă a tastei spațiu va solicita meniul de selectare a metodei de introducere + Inversează direcția când este selectat un subtip de tastatură de la dreapta la stânga + Direcție variabilă a barei de instrumente + Apasă lung tasta simbol pentru tastatura numerică + Adaugă un aspect personalizat + Selectează un fișier într-un format compatibil. Informațiile despre formate sunt disponibile %s. + Încarcă fișierul + Nu se poate citi fișierul + Atinge pentru a edita aspectul brut + Simboluri + Simboluri (Arabă) + Mai multe simboluri + Telefon + Simboluri ale telefonului + Numere + Tastatură numerică + Tastatură numerică (peisaj) + Selectează limba + Înlocuiește dicționarul + Elimini cu adevărat dicționarul adăugat de utilizator „%s”? + Nu mai afișa din nou + aici + Eroare: fișierul selectat nu este un fișier de dicționar valid + Neagră + Culori dinamice + Gri albastru + Maro + Ciocolată + Noros + Pădure + Indigo + Fundalul tastaturii + Descrierea caracteristicilor ascunse + Afișează caracteristici care pot trece neobservate + Gest de glisare pe bara de spațiu orizontală + Kaitag + %s (experimental) + Eroare la încărcarea fișierului dicționar + Eroare: scriptul nu este compatibil cu această tastatură + Adaugă un cuvânt + Acest cuvânt este deja prezent în dicționarul utilizatorului %s. Introdu altul. + Culori + Bară de navigare colorată + Luminoasă + Holo alb + Culori (noapte) + Chenar taste + Mod automat zi/noapte + Aspectul va urma setările sistemului + Roz + Nisip + Afișează toate culorile + Alege culoarea automat + Licență GNU General Public v3.0 + Eroare de aspect: %s + Violet + Adaugă dicționar din fișier + Ștergi cu adevărat aspectul personalizat %s? + "Fără un dicționar, vei primi doar sugestii pentru textele introduse anterior.<br>\n Poți descărca dicționare %1$s sau poți verifica dacă un dicționar pentru \"%2$s\" poate fi descărcat direct %3$s." + Greutate: + Definită de utilizator + Dicționare + Dicționar principal intern + Ocean + Text bandă de sugestii + stocarea protejată a dispozitivului + Înlocuiești cu adevărat dicționarul adăugat de utilizator „%1$s”? \n \nDicționarul curent: \n%2$s \n \nDicționarul nou: \n%3$s + Mai întunecată + Afișează numai culorile principale + Rotunjit + Stil + Introducere prin gesturi + Despre + Versiune + Accent + Fișier de bibliotecă necunoscut. Ești sigur că l-ai luat dintr-o sursă de încredere și este pentru „%s”? + Încarcă biblioteca + Șterge biblioteca + Spațiu automat după punctuație + Se introduce automat spațiu după semnul de punctuație atunci când introduci un cuvânt nou + Afișează mai multe litere cu semne diacritice în pop-up + Afișează variantele definite în limbile tastaturii + Scala de înălțime a tastaturii + Scala de umplere inferioară + Stânga integral + Dreapta integral + %s (Akkhor) + Selectează un dicționar de adăugat. Dicționarele în format .dict pot fi descărcate %s. + Întunecată + %s (Probhat) + %s (Sebeolsik 390) + %s (Sebeolsik Final) + Setează imaginea de fundal + Setezi imaginea pentru modul zi sau noapte? + Zi + Noapte + Configurează tastatura + Închide + Atinge limba pentru a deschide setările + Textul tastelor + Textul indicilor tastelor + Fundal taste + Fundal tastă funcțională + Fundal bară de spațiu + Text bară de spațiu + Vezi pe GitHub + Salvează jurnalul + Licență open-source + Gest de glisare pe bara de spațiu verticală + Fără + Mută cursorul + %s (Student) + Începe întotdeauna instantaneu + Text personalizat pe bara de spațiu + Afișare automată bară de instrumente + Personalizează monedele + Setează simboluri valutare principale și până la 6 secundare, separate prin spațiu + Aceasta va dezactiva alte acțiuni de apăsare lungă pentru tastele barei de instrumente care nu sunt fixate + Bara de instrumente + Folosește întotdeauna sugestia de mijloc + La apăsarea pe spațiu sau pe semnul de punctuație, va fi introdusă sugestia din mijloc + Rândul Emoji de jos + Rândul de jos al clipboardului + Ascundere automată a barei de instrumente + Ascunde bara de instrumente când sugestiile devin disponibile + %s (Extins) + Copiază în clipboard + Încarcă + Salvează în fișier + Emoji + Începutul paginii + Afișează bara de instrumente dacă începe introducerea sau este selectat un text + Vibrare în modul nu deranjați + Comportamentul tastei comutatorului de limbă + Afișează cuvântul sugerat când utilizezi gesturi + Mută previzualizarea în timpul unui gest + Durata de viață a traseului gesturilor + Selectează tastele fixate din bara de instrumente + Rând de numere + %s (Fonetic) + Dargwa (Urakhi) + Cod tastă + Cod apăsare lungă + Conținut copiat + Personalizează pictogramele + Suprascrie versiunea Emoji + Previzualizare plutitoare + Stilul pictogramei + Personalizează codurile tastelor din bara de instrumente + Sugerează conținut din clipboard + Afișează conținutul clipboardului copiat recent ca sugestie + Sfârșitul paginii + Cuvântul din stânga + Cuvântul din dreapta + Pagină sus + Pagină jos + Fixează tasta din bara de instrumente la apăsarea lungă + Închide istoricul clipboardului + Selectează tastele barei de instrumente clipboard + Comutare la tastatura principală după… + Se selectează emoji în vizualizarea emoji + Selectarea unei intrări din istoricul clipboardului + Apăsând enter sau spațiu după alte taste în vizualizarea simbolurilor + Comută tastatura numerică + Adaugă variante foarte comune (implicit) + Elimină ferestrele pop-up redundante + Mansi + Arată mai multe culori + Această setare expune toate culorile care sunt utilizate intern. Lista de culori se poate schimba în orice moment. Culoarea implicită este aleatorie, iar numele nu vor fi traduse. + Taste funcționale + Taste funcționale (Simboluri) + Taste funcționale (Mai multe simboluri) + Enter + Tab + Şterge + Shift + Shift (activat) + Caps lock + Spațiu (dispunerea numerelor) + Încheie modul cu o singură mână + Redimensionează modul cu o singură mână + Schimbă partea modului cu o singură mână + Introducere vocală dezactivată + Afișează/ascunde bara de instrumente + Resetezi cu adevărat toate pictogramele personalizate? + Subtip personalizat + Nume greșit + %s (Baishakhi) + Limbi cu dicționare + Tastatură împărțită + AVERTIZARE: Aspectul este utilizat în prezent + Setează imaginea de fundal (peisaj) + Dacă nu este setat, se va folosi imaginea portret + Poți găsi și împărtăși aspecte în %s. + Îmbinare fără spațiu + Ștergi cu adevărat toate codurile cheie personalizate? + Activează tastatura divizată (peisaj) + Timp de restabilire a tastării rapide + Comenzi rapide corectare automată + Dacă este activat, comenzile rapide pot fi extinse prin corecție automată + Chiar ștergi %s? + Setează font personalizat din fișier + Suprimă tastele pop-up care sunt deja prezente pe aspectul de bază + Taste funcționale (ecran mare) + Aspecte secundare + Scală font tastatură + Scală font vizualizare emoji + Coș + Scală umplutură laterală + Afișează indicii pe rândul cu numere + Distanța de deplasare pentru comutarea limbii + Poți găsi și împărtăși culori în %s. + secțiunea de discuții + Nu afișa întotdeauna sugestii pentru câmpurile de editare web + Câmpurile de editare web (mai ales în browser-e) sunt o cauză foarte frecventă pentru problemele cu setarea de afișare a sugestiilor întotdeauna + Format pentru tasta Timestamp + Afișează tastele pop-up TLD + Backspace anulează autocorectarea + Spațiu automat după tastarea unui cuvânt prin gesturi + Fără spațiu automat la apăsarea tastei Shift + Shift elimină în spațiul automat în așteptare + Folosește numele aplicațiilor + Spațiu automat după ce s-a ales o sugestie + Spațiu + Spațiu automat înainte de tastarea unui cuvânt prin gesturi + Rândul cu numere (de bază) + Scalarea dimensiunii tastelor emoji împreună cu dimensiunea fontului + Copie de rezervă restabilită + Apăsarea tastei Enter sau a barei de spațiu după alte taste de pe tastatura numerică + Utilizează numele aplicațiilor instalate pentru sugestii și corecții + Tonul implicit al pielii pentru emoji + Neutru + Ascunde tastatura + Înlocuiește pop-up-urile tastei punct cu domenii de nivel superior atunci când scrii URL-uri și adrese de e-mail + Sugerează emoji-uri + Afișează descrierea emoji-urilor la apăsare lungă + Utilizează dicționarul de emoji-uri în sugestiile normale + Sugestii de punctuație + Afișează semnele de punctuație când nu sunt disponibile alte sugestii + Ordinea tastelor pop-up și sursa de indicii + Mod bară de instrumente + Taste bară de instrumente și sugestii + Doar tastele barei de instrumente + Doar sugestii + Ascuns + Ascunde și barele de instrumente pentru clipboard și emoji-uri + Mergi la Wiki + Wiki-ul poate fi îmbunătățit de orice utilizator GitHub! + Peisaj + Separare fără spațiu diff --git a/app/src/main/res/values-ru/bools.xml b/app/src/main/res/values-ru/bools.xml index 840d20c218..8693f6e1ec 100644 --- a/app/src/main/res/values-ru/bools.xml +++ b/app/src/main/res/values-ru/bools.xml @@ -1,21 +1,7 @@ - - - "ОК" - "Далее" - "Назад" - "Готово" - "Отправить" - "Поиск" - "Пауза" - "Пауза" - diff --git a/app/src/main/res/values-ru/strings-config-important-notice.xml b/app/src/main/res/values-ru/strings-config-important-notice.xml deleted file mode 100644 index 5e6999c1fc..0000000000 --- a/app/src/main/res/values-ru/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "Устройство будет запоминать то, что вы вводите чаще всего" - diff --git a/app/src/main/res/values-ru/strings-emoji-descriptions.xml b/app/src/main/res/values-ru/strings-emoji-descriptions.xml deleted file mode 100644 index 1c6f4e07ad..0000000000 --- a/app/src/main/res/values-ru/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "Знак охраны авторского права." - "Символ охраны товарного знака." - "Два восклицательных знака." - "Восклицательный и вопросительный знаки." - "Символ торгового знака." - "Информация." - "Стрелка влево и вправо." - "Стрелка вверх и вниз." - "Стрелка северо-запад." - "Стрелка северо-восток." - "Стрелка юго-восток." - "Стрелка юго-запад." - "Стрелка влево с закруглением." - "Стрелка вправо с закруглением." - "Часы." - "Песочные часы." - - - - - "Два черных треугольника, указывающие вправо." - "Два черных треугольника, указывающие влево." - "Два черных треугольника, указывающие вверх." - "Два черных треугольника, указывающие вниз." - - - - - - - "Будильник." - - - - - "Песочные часы с сыплющимся песком." - - - - - - - "Заглавная буква М в круге." - "Маленький черный квадрат." - "Маленький белый квадрат." - "Черный треугольник, указывающий вправо." - "Черный треугольник, указывающий влево." - "Белый квадрат средних размеров." - "Черный квадрат средних размеров." - "Небольшой белый квадрат." - "Небольшой черный квадрат." - "Черное солнце с лучами." - "Облако." - - - - - - - "Черный телефон." - "Галочка в квадрате." - "Зонт и капли дождя." - "Горячий напиток." - - - "Белая рука с указательным пальцем вверх." - - - - - - - - - - - - - - - - - - - "Белый смайлик." - "Овен." - "Телец." - "Близнецы." - "Рак." - "Лев." - "Дева." - "Весы." - "Скорпион." - "Стрелец." - "Козерог." - "Водолей." - "Рыбы." - "Черные пики." - "Черные трефы." - "Черные червы." - "Черные бубны." - "Термальные источники." - "Черный универсальный знак повторной переработки." - "Инвалидная коляска." - - - "Якорь." - - - - - - - - - - - - - "Знак предупреждения." - "Знак высокого напряжения." - "Белый круг средних размеров." - "Черный круг средних размеров." - - - - - "Футбольный мяч." - "Бейсбольный мяч." - "Снеговик." - "Солнце за облаком." - - - "Змееносец." - - - - - - - "Входа нет." - - - "Церковь." - - - - - "Фонтан." - "Флаг в лунке." - - - "Парусник." - - - - - - - "Палатка." - "Бензоколонка." - "Черные ножницы." - "Жирная белая галочка." - "Самолет." - "Конверт." - "Поднятый кулак." - "Поднятая ладонь." - "Знак победы." - - - "Карандаш." - "Черное перо." - "Жирная галочка." - "Жирный знак умножения." - - - - - "Мерцание." - "Звездочка с восемью лучами." - "Черная звездочка с восемью лучами." - "Снежинка." - "Искра." - "Крест." - "Белый крест на черном фоне." - "Фигурный черный вопросительный знак." - "Фигурный белый вопросительный знак." - "Фигурный белый восклицательный знак." - "Жирный восклицательный знак." - - - "Черное сердце." - "Жирный знак плюса." - "Жирный знак минуса." - "Жирный знак деления." - "Черная стрелка вправо." - "Петля." - "Двойная петля." - "Стрелка, указывающая вправо, затем вверх." - "Стрелка, указывающая вправо, затем вниз." - "Черная стрелка влево." - "Черная стрелка вверх." - "Черная стрелка вниз." - "Большой черный квадрат." - "Большой белый квадрат." - "Белая звезда средних размеров." - "Большой жирный круг." - "Волнистое тире." - "Начало вокальной партии." - "Иероглиф поздравления, обведенный кругом." - "Иероглиф Секрет, обведенный кругом." - "Кость для маджонга Красный дракон." - "Игральная карта Черный джокер." - "Вторая группа крови." - "Третья группа крови." - "Первая группа крови." - "Автомобильная стоянка." - "Четвертая группа крови." - "Квадратный значок очистки." - "Квадратный значок Классно." - "Квадратный значок Бесплатно." - "Квадратный значок идентификатора." - "Квадратный значок Новый." - "Квадратный значок Нехорошо." - "Квадратный значок Окей." - "Квадратный значок СОС." - "Квадратный значок обновления с восклицательным знаком." - "Квадратный значок Против." - "Квадратный значок Здесь, катакана." - "Квадратный значок сервиса, катакана." - "Иероглиф отсутствия." - "Иероглиф забронированного места." - "Иероглиф Запрещено." - "Иероглиф Свободно." - "Иероглиф Принято." - "Иероглиф Заполнено." - "Иероглиф обладания." - "Иероглиф Ежемесячно." - "Иероглиф заявления." - "Иероглиф скидки." - "Иероглиф Открыто." - "Иероглиф выгодного предложения." - "Иероглиф Принять." - "Ураган." - "Туман." - "Сложенный зонт." - "Звездная ночь." - "Восход солнца над горами." - "Восход." - "Городской пейзаж на закате." - "Закат над зданиями." - "Радуга." - "Ночной пейзаж с мостом." - "Волна." - "Вулкан." - "Млечный путь." - "Европа и Африка на глобусе." - "Америка на глобусе." - "Азия и Австралия на глобусе." - "Глобус с меридианами." - "Новолуние." - "Растущий полумесяц." - "Луна в первой четверти." - "Растущая луна." - "Полнолуние." - "Убывающая Луна." - "Луна в последней четверти." - "Убывающий полумесяц." - "Месяц." - "Новолуние с лицом." - "Луна в первой четверти с лицом." - "Луна в последней четверти с лицом." - "Полная луна с лицом." - "Солнце с лицом." - "Светящаяся звезда." - "Падающая звезда." - - - - - - - - - - - - - - - - - - - - - - - - - - - "Каштан." - "Росток." - "Хвойное дерево." - "Лиственное дерево." - "Пальма." - "Кактус." - - - "Тюльпан." - "Цветок вишни." - "Роза." - "Гибискус." - "Подсолнечник." - "Цветок." - "Кукурузный початок." - "Колосья риса." - "Растение." - "Четырехлистный клевер." - "Кленовый лист." - "Опавший лист." - "Лист, кружащийся на ветру." - "Гриб." - "Помидор." - "Баклажан." - "Виноград." - "Дыня." - "Арбуз." - "Мандарин." - "Лимон." - "Банан." - "Ананас." - "Красное яблоко." - "Зеленое яблоко." - "Груша." - "Персик." - "Вишни." - "Клубника." - "Гамбургер." - "Кусок пиццы." - "Мясо на кости." - "Куриная ножка." - "Рисовое печенье." - "Рисовый шарик." - "Миска с рисом." - "Карри с рисом." - "Миска с лапшой." - "Спагетти." - "Хлеб." - "Картофель фри." - "Печеный батат." - "Данго." - "Одэн." - "Суши." - "Жареная креветка." - "Рыбная котлета со спиральным рисунком." - "Мягкое мороженое." - "Ледяная стружка." - "Мороженое." - "Пончик." - "Печенье." - "Шоколадная плитка." - "Конфета." - "Леденец." - "Заварной крем." - "Горшок с медом." - "Кусок торта." - "Упаковка бэнто." - "Еда в миске." - "Приготовление пищи." - "Вилка и нож." - "Чайная чашка без ручки." - "Бутылка саке и чашка." - "Бокал вина." - "Коктейль в бокале." - "Тропический коктейль." - "Пивная кружка." - "Чокающиеся пивные кружки." - "Детская бутылочка." - - - - - - - "Лента." - "Завернутый подарок." - "Торт на день рождения." - "Светильник-тыква." - "Наряженная елка." - "Санта-Клаус." - "Фейерверк." - "Бенгальский огонь." - "Воздушный шар." - "Хлопушка." - "Шар с конфетти." - "Танабата, ветка с тандзаку." - "Скрещенные флаги." - "Японское новогоднее украшение." - "Японские куклы." - "Вымпелы в виде карпов." - "Японский колокольчик фурин." - "Церемония созерцания луны." - "Школьный ранец." - "Шапочка выпускника." - - - - - - - - - - - - - - - "Карусель с лошадьми." - "Колесо обозрения." - "Американские горки." - "Удочка с пойманной рыбой." - "Микрофон." - "Кинокамера." - "Кино." - "Наушники." - "Палитра." - "Цилиндр." - "Цирковой шатер." - "Билет." - "Нумератор с хлопушкой." - "Театральные маски." - "Видеоигра." - "Прямое попадание." - "Игровой автомат." - "Бильярд." - "Игровые кости." - "Боулинг." - "Ханафуда." - "Музыкальная нота." - "Несколько музыкальных нот." - "Саксофон." - "Гитара." - "Клавишный инструмент." - "Труба." - "Скрипка." - "Скрипичный ключ на нотном стане." - "Майка бегуна." - "Теннисная ракетка и мяч." - "Лыжа с ботинком." - "Баскетбольный мяч и кольцо." - "Клетчатый флаг." - "Сноубордист." - "Бегун." - "Серфер." - - - "Кубок." - "Конный спорт." - "Американский футбол." - "Регби." - "Пловец." - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Дом." - "Дом с садом." - "Офисное здание." - "Японский почтамт." - "Европейский почтамт." - "Больница." - "Банк." - "Банкомат." - "Отель." - "Отель для встреч." - "Круглосуточный магазин." - "Школа." - "Супермаркет." - "Фабрика." - "Японский фонарь." - "Японский замок." - "Европейский замок." - - - - - - - - - - - - - - - - - - - - - - - - - "Крыса." - "Мышь." - "Бык." - "Буйвол." - "Корова." - - - "Леопард." - "Кролик." - "Кошка." - "Дракон." - "Крокодил." - "Кит." - "Улитка." - "Змея." - "Лошадь." - "Баран." - "Коза." - "Овца." - "Обезьяна." - "Петух." - "Курица." - "Собака." - "Свинья." - "Кабан." - "Слон." - "Осьминог." - "Ракушка." - "Сороконожка." - "Муравей." - "Пчела." - "Божья коровка." - "Рыба." - "Тропическая рыбка." - "Иглобрюх." - "Черепаха." - "Вылупившийся цыпленок." - "Цыпленок." - "Цыпленок анфас." - "Птица." - "Пингвин." - "Коала." - "Пудель." - "Одногорбый верблюд." - "Двугорбый верблюд." - "Дельфин." - "Голова мыши." - "Голова коровы." - "Голова тигра." - "Голова кролика." - "Голова кошки." - "Голова дракона." - "Кит, пускающий фонтан." - "Голова лошади." - "Голова обезьяны." - "Голова собаки." - "Голова свиньи." - "Голова лягушки." - "Голова хомяка." - "Голова волка." - "Голова медведя." - "Голова панды." - "Свиной пятачок." - "Отпечатки лап." - - - "Глаза." - - - "Ухо." - "Нос." - "Рот." - "Язык." - "Белая рука с указательным пальцем вверх с тыльной стороны." - "Белая рука с указательным пальцем вниз с тыльной стороны." - "Белая рука с указательным пальцем влево с тыльной стороны." - "Белая рука с указательным пальцем вправо с тыльной стороны." - "Кулак." - "Машущая раскрытая ладонь." - "Пальцы, сложенные знаком Окей." - "Большой палец вверх." - "Большой палец вниз." - "Аплодисменты." - "Раскрытые ладони." - "Корона." - "Женская шляпа." - "Очки." - "Галстук." - "Футболка." - "Джинсы." - "Платье." - "Кимоно." - "Бикини." - "Блузка." - "Кошелек." - "Женская сумка." - "Чехол." - "Мужская туфля." - "Кроссовка." - "Туфля на каблуке." - "Женская сандалия." - "Женские сапоги." - "Отпечатки босых ног." - "Силуэт головы и плеч." - "Силуэты голов и плеч." - "Мальчик." - "Девочка." - "Мужчина." - "Женщина." - "Семья." - "Мужчина и женщина, держащиеся за руки." - "Двое мужчин, держащихся за руки." - "Две женщины, держащиеся за руки." - "Полицейский." - "Женщина с кроличьими ушами." - "Невеста с фатой." - "Человек со светлыми волосами." - "Мужчина в традиционной китайской шапочке." - "Мужчина в тюрбане." - "Пожилой мужчина." - "Пожилая женщина." - "Младенец." - "Строитель." - "Принцесса." - "Японский демон они." - "Японский демон тэнгу." - "Привидение." - "Младенец ангел." - "Гуманоид." - "Инопланетный монстр." - "Имп." - "Череп." - "Сотрудник бюро информации." - "Часовой." - "Танцор." - "Помада." - "Лак для ногтей." - "Массаж лица." - "Стрижка." - "Указатель парикмахерской." - "Шприц." - "Таблетка." - "Отпечаток губ." - "Любовное письмо." - "Кольцо." - "Драгоценный камень." - "Поцелуй." - "Букет." - "Влюбленная пара." - "Свадьба." - "Бьющееся сердце." - "Разбитое сердце." - "Два сердца." - "Мерцающее сердце." - "Трепещущее сердце." - "Сердце, пронзенное стрелой." - "Голубое сердце." - "Зеленое сердце." - "Желтое сердце." - "Фиолетовое сердце." - "Сердце с лентой." - "Вращающиеся сердца." - "Украшение в виде сердца." - "Ромб с точкой в центре." - "Горящая лампочка." - "Сердится." - "Бомба." - "Сонный." - "Столкновение." - "Капли пота." - "Капля." - "Стремительное движение." - "Кучка экскрементов." - "Бицепс." - "Головокружение." - "Облачко реплики." - "Облачко мыслей." - "Белый цветок." - "Сто баллов." - "Мешок с деньгами." - "Обмен валюты." - "Широкий знак доллара." - "Кредитная карта." - "Банкнота со знаком иены." - "Купюра со знаком доллара." - "Банкнота со знаком евро." - "Банкнота со знаком фунта стерлингов." - "Пачка банкнот с крыльями." - "График, идущий вверх, и знак иены." - "Кресло." - "Компьютер." - "Портфель." - "Мини-диск." - "Дискета." - "Оптический диск." - "DVD." - "Папка." - "Открытая папка." - "Страница, скрученная снизу." - "Страница с загнутым углом." - "Календарь." - "Отрывной календарь." - "Картотека." - "График, идущий вверх." - "График, идущий вниз." - "Столбчатая диаграмма." - "Папка-планшет." - "Канцелярская кнопка." - "Канцелярская кнопка с круглой головкой." - "Скрепка." - "Линейка." - "Линейка треугольник." - "Закладки на страницах." - "Бухгалтерская книга." - "Блокнот." - "Блокнот с декоративной обложкой." - "Закрытая книга." - "Открытая книга." - "Зеленая книга." - "Синяя книга." - "Оранжевая книга." - "Книги." - "Нагрудная визитка." - "Свиток." - "Заметка." - "Телефонная трубка." - "Пейджер." - "Факсимильный аппарат." - "Спутниковая антенна." - "Громкоговоритель." - "Ручной мегафон." - "Лоток для исходящей почты." - "Лоток для входящей почты." - "Посылка." - "Значок электронной почты." - "Входящее письмо." - "Конверт со стрелкой вниз над ним." - "Закрытый почтовый ящик с опущенным флажком." - "Закрытый почтовый ящик с поднятым флажком." - "Открытый почтовый ящик с поднятым флажком." - "Открытый почтовый ящик с опущенным флажком." - "Почтовый ящик." - "Рожок, значок почтовой службы." - "Газета." - "Мобильный телефон." - "Мобильный телефон со стрелкой, указывающей на него." - "Режим вибрации." - "Отключенный мобильный телефон." - "Запрет на использование мобильного телефона." - "Значок антенны с индикатором уровня сигнала." - "Фотоаппарат." - - - "Видеокамера." - "Телевизор." - "Радио." - "Видеокассета." - - - - - "Перекрещенные стрелки вправо." - "Круговые стрелки, указывающие по часовой." - "Круговые стрелки, указывающие по часовой, и цифра один поверх них." - "Круговые стрелки, указывающие вверх и вниз по часовой." - "Круговые стрелки, указывающие вверх и вниз против часовой." - "Значок уменьшения яркости." - "Значок увеличения яркости." - "Перечеркнутый динамик." - "Динамик." - "Динамик с одной линией звука." - "Динамик с тремя линиями звука." - "Батарея." - "Штепсельная вилка." - "Увеличительное стекло, направленное влево." - "Увеличительное стекло, направленное вправо." - "Замок и перьевая ручка." - "Закрытый замок с ключом." - "Ключ." - "Замок." - "Открытый замок." - "Колокольчик." - "Перечеркнутый колокольчик." - "Закладка." - "Значок ссылки." - "Переключатель." - "Надпись Назад и стрелка влево над ней." - "Надпись Конец и стрелка влево над ней." - "Надпись Включено с восклицательным знаком и стрелки, указывающие вправо и влево, над ней." - "Надпись Скоро и стрелка вправо над ней." - "Надпись Вверх и стрелка вверх над ней." - "Значок Только после восемнадцати лет." - "Клавиша десять." - "Значок ввода латинских заглавных букв." - "Значок ввода латинских строчных букв." - "Значок ввода цифр." - "Знак ввода символов." - "Значок ввода латинских букв." - "Огонь." - "Электрический фонарь." - "Гаечный ключ." - "Молоток." - "Гайка и болт." - "Нож." - "Пистолет." - "Микроскоп." - "Телескоп." - "Магический шар." - "Шестиконечная звезда с точкой в центре." - "Японский символ новичка." - "Трезубец." - "Черная квадратная кнопка." - "Белая квадратная кнопка." - "Большой красный круг." - "Большой синий круг." - "Большой оранжевый ромб." - "Большой синий ромб." - "Маленький оранжевый ромб." - "Маленький синий ромб." - "Красный треугольник вершиной вверх." - "Красный треугольник вершиной вниз." - "Маленький красный треугольник вершиной вверх." - "Маленький красный треугольник вершиной вниз." - - - - - - - - - - - - - "Один час на циферблате." - "Два часа на циферблате." - "Три часа на циферблате." - "Четыре часа на циферблате." - "Пять часов на циферблате." - "Шесть часов на циферблате." - "Семь часов на циферблате." - "Восемь часов на циферблате." - "Девять часов на циферблате." - "Десять часов на циферблате." - "Одиннадцать часов на циферблате." - "Двенадцать часов на циферблате." - "Полвторого на циферблате." - "Полтретьего на циферблате." - "Полчетвертого на циферблате." - "Полпятого на циферблате." - "Полшестого на циферблате." - "Полседьмого на циферблате." - "Полвосьмого на циферблате." - "Полдевятого на циферблате." - "Полдесятого на циферблате." - "Пол-одиннадцатого на циферблате." - "Полдвенадцатого на циферблате." - "Полпервого на циферблате." - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Гора Фудзи." - "Токийская телебашня." - "Статуя Свободы." - "Очертания Японии." - "Моаи." - "Широкая улыбка." - "Широкая улыбка, глаза прищурены." - "Слезы радости." - "Улыбка, рот открыт." - "Улыбка, рот открыт, глаза прищурены." - "Открытая улыбка и испарина." - "Открытая улыбка, зажмуренные глаза." - "Улыбка, нимб над головой." - "Улыбающееся лицо, рога на голове." - "Подмигивание." - "Улыбка, глаза прищурены." - "Высунутый язык, один глаз прищурен." - "Облегчение." - "Улыбка, глаза в форме сердец." - "Улыбка, солнцезащитные очки." - "Самодовольная усмешка." - "Без эмоций." - "Лицо без выражения." - "Не впечатлен." - "Испарина." - "Глубокая печаль." - "Смущение." - "Готов расплакаться." - "Поцелуй." - "Воздушный поцелуй." - "Поцелуй, глаза прищурены." - "Поцелуй, глаза закрыты." - "Высунутый язык." - "Высунутый язык, подмигивание." - "Высунутый язык, зажмуренные глаза." - "Разочарование." - "Беспокойство." - "Сердитое лицо." - "Сердитое лицо с надутыми щеками." - "Плач." - "Упорство." - "Ликование." - "Разочарование, смешанное с чувством облегчения." - "Нахмуренное лицо, рот открыт." - "Страдающее лицо." - "Страх." - "Усталость." - "Сонное лицо." - "Утомление." - "Гримаса." - "Громкий плач." - "Открытый рот." - "Молчание." - "Открытый рот, испарина." - "Крик ужаса." - "Изумление." - "Смущение, красные щеки." - "Спящее лицо." - "Головокружение." - "Лицо безо рта." - "Лицо в медицинской маске." - "Улыбающийся кот с прищуренными глазами." - "Кот со слезами радости." - "Улыбающийся кот, рот открыт." - "Улыбающийся кот, глаза в форме сердец." - "Кот с кривой ухмылкой." - "Целующий кот, глаза закрыты." - "Сердитый кот с надутыми щеками." - "Плачущий кот." - "Усталый кот." - - - - - - - - - "Запрет." - "Разрешение." - "Низкий поклон." - "Обезьяна с закрытыми глазами." - "Обезьяна с закрытыми ушами." - "Обезьяна с закрытым ртом." - "Радость, одна рука поднята." - "Торжествующий человек с поднятыми руками." - "Огорчение." - "Сердитый человек." - "Сложенные руки." - "Ракета." - "Вертолет." - "Паровоз." - "Вагон." - "Скоростной поезд." - "Скоростной поезд-пуля." - "Поезд." - "Метро." - "Электричка." - "Станция." - "Трамвай." - "Вагон трамвая." - "Автобус." - "Приближающийся автобус." - "Троллейбус." - "Автобусная остановка." - "Микроавтобус." - "Скорая помощь." - "Пожарная машина." - "Полицейская машина." - "Приближающаяся полицейская машина." - "Такси." - "Приближающееся такси." - "Автомобиль." - "Приближающийся автомобиль." - "Жилой автофургон." - "Малотоннажный грузовик." - "Грузовик с прицепом." - "Трактор." - "Монорельс." - "Горная железная дорога." - "Подвесная железная дорога." - "Горная канатная дорога." - "Фуникулер." - "Корабль." - "Лодка с веслами." - "Быстроходный катер." - "Горизонтальный светофор." - "Вертикальный светофор." - "Ограждение дорожных работ." - "Маячок полицейской машины." - "Треугольный флаг на шесте." - "Дверь." - "Знак Входа нет." - "Знак Курение разрешено." - "Знак Не курить." - "Знак мусорной корзины." - "Знак Не сорить." - "Знак Питьевая вода." - "Знак Непитьевая вода." - "Велосипед." - "Велосипедам проезд запрещен." - "Велосипедист." - "Горный велосипед." - "Пешеход." - "Знак Проход воспрещен." - "Дети, переходящие дорогу." - "Мужской туалет." - "Женский туалет." - "Туалет." - "Младенец." - "Туалет." - "Туалет." - "Душ." - "Ванная." - "Ванна." - "Паспортный контроль." - "Таможня." - "Выдача багажа." - "Камера хранения." - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-ru/strings-letter-descriptions.xml b/app/src/main/res/values-ru/strings-letter-descriptions.xml deleted file mode 100644 index bbc4974775..0000000000 --- a/app/src/main/res/values-ru/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "Женский порядковый индикатор." - "Знак микро." - "Мужской порядковый индикатор." - "Эсцет." - "Латинская A с грависом." - "Латинская A с акутом." - "Латинская A с циркумфлексом." - "Латинская A с тильдой." - "Латинская A с умляутом." - "Латинская A с кружком сверху." - "Лигатура из латинских A и E." - "Латинская C с седилью." - "Латинская E с грависом." - "Латинская E с акутом." - "Латинская E с циркумфлексом." - "Латинская E с умляутом." - "Латинская I с грависом." - "Латинская I с акутом." - "Латинская I с циркумфлексом." - "Латинская I с умляутом." - "Eth." - "Латинская N с тильдой." - "Латинская O с грависом." - "Латинская O с акутом." - "Латинская O с циркумфлексом." - "Латинская O с тильдой." - "Латинская O с умляутом." - "Латинская O, диагонально перечеркнутая." - "Латинская U с грависом." - "Латинская U с акутом." - "Латинская U с циркумфлексом." - "Латинская U с умляутом." - "Латинская Y с акутом." - "Торн." - "Латинская Y с умляутом." - "Латинская A с макроном." - "Латинская A с бревисом." - "Латинская A с огонэком." - "Латинская C с акутом." - "Латинская C с циркумфлексом." - "Латинская C с точкой сверху." - "Латинская C с гачеком." - "Латинская D с гачеком." - "Латинская D с чертой." - "Латинская E с макроном." - "Латинская E с бревисом." - "Латинская E с точкой сверху." - "Латинская E с огонэком." - "Латинская E с гачеком." - "Латинская G с циркумфлексом." - "Латинская G с бревисом." - "Латинская G с точкой сверху." - "Латинская G с седилью." - "Латинская H с циркумфлексом." - "Латинская H с чертой." - "Латинская I с тильдой." - "Латинская I с макроном." - "Латинская I с бревисом." - "Латинская I с огонэком." - "Латинская I без точки." - "Лигатура из латинских I и J." - "Латинская J с циркумфлексом." - "Латинская K с седилью." - "Кра" - "Латинская L с акутом." - "Латинская L с седилью." - "Латинская L с гачеком." - "Латинская L с точкой сбоку." - "Латинская L с чертой." - "Латинская N с акутом." - "Латинская N с седилью." - "Латинская N с гачеком." - "Латинская N с апострофом слева." - "Энг" - "Латинская O с макроном." - "Латинская O с бревисом." - "Латинская O с двойным акутом." - "Лигатура из латинских O и E" - "Латинская R с акутом" - "Латинская R с седилью." - "Латинская R с гачеком." - "Латинская S с акутом." - "Латинская S с циркумфлексом." - "Латинская S с седилью." - "Латинская S с гачеком." - "Латинская T с седилью." - "Латинская T с гачеком." - "Латинская T с чертой." - "Латинская U с тильдой." - "Латинская U с макроном." - "Латинская U с бревисом." - "Латинская U с кружком сверху." - "Латинская U с двойным акутом." - "Латинская U с огонэком." - "Латинская W с циркумфлексом." - "Латинская Y с циркумфлексом." - "Латинская Z с акутом." - "Латинская Z с точкой сверху." - "Латинская Z с гачеком." - "Латинская S длинная." - "Латинская O с крючком." - "Латинская U с крючком." - "Латинская S с запятой снизу." - "Латинская T с запятой снизу." - "Шва." - "Латинская A с точкой снизу." - "Латинская A с крючком сверху." - "Латинская A с циркумфлексом и акутом." - "Латинская A с циркумфлексом и грависом." - "Латинская A с крючком сверху и циркумфлексом." - "Латинская A с циркумфлексом и тильдой." - "Латинская A с точкой снизу и циркумфлексом." - "Латинская A с бревисом и акутом." - "Латинская A с бревисом и грависом." - "Латинская A с крючком сверху и бревисом." - "Латинская A с бревисом и тильдой." - "Латинская A с точкой снизу и бревисом." - "Латинская E с точкой снизу." - "Латинская E с крючком сверху." - "Латинская E с тильдой." - "Латинская E с циркумфлексом и акутом." - "Латинская E с циркумфлексом и грависом." - "Латинская E с крючком сверху и циркумфлексом." - "Латинская E с циркумфлексом и тильдой." - "Латинская E с точкой снизу и циркумфлексом." - "Латинская I с крючком сверху." - "Латинская I с точкой снизу." - "Латинская O с точкой снизу." - "Латинская O с крючком сверху." - "Латинская O с циркумфлексом и акутом." - "Латинская O с циркумфлексом и грависом." - "Латинская O с крючком сверху и циркумфлексом." - "Латинская O с циркумфлексом и тильдой." - "Латинская O с точкой снизу и циркумфлексом." - "Латинская O с рожком и акутом." - "Латинская O с рожком и грависом." - "Латинская O с крючком сверху и рожком." - "Латинская O с крючком и тильдой." - "Латинская O с точкой снизу и крючком." - "Латинская U с точкой снизу." - "Латинская U с крючком сверху." - "Латинская U с крючком и акутом." - "Латинская U с крючком и грависом." - "Латинская U с крючком и крючком сверху." - "Латинская U с крючком и тильдой." - "Латинская U с точкой снизу и крючком." - "Латинская Y с грависом." - "Латинская Y с точкой снизу." - "Латинская Y с крючком сверху." - "Латинская Y с тильдой." - "Перевернутый восклицательный знак." - "Открывающая двойная французская кавычка." - "Интерпункт." - "Единица в надстрочном начертании." - "Закрывающая двойная французская кавычка." - "Перевернутый вопросительный знак." - "Открывающая одиночная английская кавычка." - "Закрывающая одиночная английская кавычка." - "Одиночная нижняя кавычка." - "Открывающая двойная английская кавычка." - "Закрывающая двойная английская кавычка." - "Типографский крестик." - "Двойной крестик." - "Знак промилле." - "Штрих." - "Двойной штрих." - "Открывающая одиночная угловая кавычка." - "Закрывающая одиночная угловая кавычка." - "Четверка в надстрочном начертании." - "Строчная латинская n в надстрочном начертании." - "Знак песо." - "Знак Care of." - "Стрелка вправо." - "Стрелка вниз." - "Знак пустого множества." - "Дельта." - "Меньше или равно." - "Больше или равно." - "Черная звезда." - diff --git a/app/src/main/res/values-ru/strings-talkback-descriptions.xml b/app/src/main/res/values-ru/strings-talkback-descriptions.xml index ea124cc148..bbb2a8e460 100644 --- a/app/src/main/res/values-ru/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-ru/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "Подключите гарнитуру, чтобы услышать пароль." - "Введенный текст: %s." - "Текст не введен." - "При нажатии клавиши %1$s слово %2$s будет исправлено на %3$s." - "Клавиша %1$s выполняет автоисправление." - "Подсказки не найдены" - "Неизвестный символ." - "Клавиша верхнего регистра." - "Дополнительные символы." - "Клавиша верхнего регистра." - "Символы." - "Клавиша верхнего регистра." - "Удалить." - "Символы." - "Буквы." - "Цифры." - "Настройки." - "Клавиша Tab." - "Пробел." - "Голосовой ввод." - "Смайлики." - "Ввод." - "Поиск." - "Маркер списка." - "Сменить язык." - "Далее." - "Назад." - "Верхний регистр включен." - "Caps Lock включен." - "Режим добавления символов." - "Режим дополнительных символов." - "Режим ввода текста." - "Режим набора номера." - "Режим телефонных символов." - "Клавиатура скрыта." - "Включен режим %s." - "ввода даты" - "ввода даты и времени" - "ввода адреса электронной почты" - "ввода сообщения" - "ввода цифр" - "набора номера" - "ввода текста" - "ввода времени" - "ввода URL" - "Недавно использованные." - "Люди." - "Объекты." - "Природа." - "Места." - "Символы." - "Флаги." - "Смайлики и люди." - "Природа и животные." - "Еда и напитки." - "Путешествия и достопримечательности." - "Действия." - "Смайлики." - "Заглавная %s." - "Заглавная латинская I." - "Заглавная латинская I с точкой сверху." - "Неизвестный символ." - "Неизвестный смайлик." - "Скука." - "Смущение." - "Солнцезащитные очки." - "Удивление." - "Поцелуй." - "Хмурый взгляд." - "Доступны дополнительные символы." - "Дополнительные символы скрыты." - "Доступны дополнительные подсказки." - "Дополнительные подсказки скрыты." + + + "Подключите гарнитуру, чтобы услышать пароль." + "Введенный текст: %s." + "Текст не введен." + "При нажатии клавиши %1$s слово %2$s будет исправлено на %3$s." + "Клавиша %1$s выполняет автоисправление." + "Подсказки не найдены" + "Неизвестный символ." + "Клавиша верхнего регистра." + "Дополнительные символы." + "Клавиша верхнего регистра." + "Символы." + "Клавиша верхнего регистра." + "Удалить." + "Символы." + "Буквы." + "Цифры." + "Настройки." + "Клавиша Tab." + "Пробел." + "Голосовой ввод." + "Смайлики." + "Ввод." + "Поиск." + "Маркер списка." + "Сменить язык." + "Далее." + "Назад." + "Верхний регистр включен." + "Caps Lock включен." + "Режим добавления символов." + "Режим дополнительных символов." + "Режим ввода текста." + "Режим набора номера." + "Режим телефонных символов." + "Клавиатура скрыта." + "Включен режим %s." + "ввода даты" + "ввода даты и времени" + "ввода адреса электронной почты" + "ввода сообщения" + "ввода цифр" + "набора номера" + "ввода текста" + "ввода времени" + "ввода URL" + "Недавно использованные." + "Объекты." + "Символы." + "Флаги." + "Смайлики и люди." + "Природа и животные." + "Еда и напитки." + "Путешествия и достопримечательности." + "Действия." + "Смайлики." + "Заглавная %s." + "Заглавная латинская I." + "Заглавная латинская I с точкой сверху." + "Доступны дополнительные символы." + "Дополнительные символы скрыты." + "Доступны дополнительные подсказки." + "Дополнительные подсказки скрыты." diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 12da36dba0..f075a18de3 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -1,207 +1,445 @@ - - - - - "Настройки" - "Поиск в контактах" - "Использовать имена контактов при проверке правописания" - "Виброотклик клавиш" - "Звук клавиш" - "Увеличивать при нажатии" - "Настройки" - "Аккаунты" - "Вид и раскладки" - "Непрерывный ввод" - "Исправление текста" - "Дополнительные настройки" - "Тема" - "Включить разделенную клавиатуру" - "Смена способов ввода" - "Клавиша переключения языков также служит для смены способа ввода" - "Клавиша смены языка" - "Показывать, когда включено несколько раскладок" - "Задержка закрытия" - "Без задержки" - "По умолчанию" - "%s мс" - "По умолчанию" - "Подсказывать имена" - "Подсказывать исправления на основе имен из списка контактов" - "Пользовательские словари" - "Помочь улучшить приложение %s" - "Точки автоматически" - "Вводить точку с пробелом двойным нажатием пробела." - "Заглавные автоматически" - "Писать первое слово предложения с прописной буквы" - "Личный словарь" - "Дополнительные словари" - "Основной словарь" - "Варианты исправлений" - "Предлагать варианты слов во время ввода" - "Блокировка нецензурных слов" - "Не предлагать слова, которые могут быть сочтены оскорбительными" - "Автоисправление" - "Автоматическое исправление опечаток при вводе знака препинания или пробела" - "Отключено" - "Умеренное" - "Активно" - "Очень активно" - "Подсказывать слова" - "Предлагать подсказки на основе предыдущего слова" - "Включить функцию" - "Вводите слова, не отрывая пальца от клавиатуры" - "Рисовать линию" - "Показывать подсказки" - "Показывать подсказки при вводе текста" - "Непрерывный ввод фраз" - "Проводите по клавише пробела после каждого слова" - "Клавиша голосового ввода" - "Голосовой способ ввода не включен. Проверьте раздел настроек \"Язык и ввод\"." - "Настройка способов ввода" - "Выберите язык" - "Справка/отзыв" - "Язык" - "Чтобы сохранить, нажмите ещё раз" - "Чтобы сохранить, нажмите здесь" - "Доступен словарь" - "Тема клавиатуры" - "Сменить аккаунт" - "Аккаунт не выбран" - "Используется аккаунт %1$s" - "ОК" - "Отмена" - "Выйти" - "Выберите аккаунт" - "Английский (Великобритания)" - "Английский (США)" - "Испанский (США)" - "Хинглиш" - "Сербский (латиница)" - "Английский (Великобритания, %s)" - "Английский (США, %s)" - "Испанский (США, %s)" - "Хинглиш (%s)" - "Сербский (%s)" - "%s (классическая)" - "%s (компактная раскладка)" - "Язык не определен (латиница)" - "Латиница (QWERTY)" - "Латиница (QWERTZ)" - "Латиница (AZERTY)" - "Латиница (Dvorak)" - "Латиница (Colemak)" - "Латиница (ПК)" - "Эмодзи" - "Тема клавиатуры" - "Свои стили ввода" - "Добавить стиль" - "Добавить" - "Удалить" - "Сохранить" - "Язык" - "Раскладка" - "Необходимо включить персонализированный стиль ввода." - "Включить" - "Не сейчас" - "Такой стиль ввода уже существует: %s" - "Длительность вибро при нажатии" - "Громкость звука при нажатии" - "Долгое нажатие" - "Смайлики с внешней клавиатуры" - "Открывать список смайликов нажатием клавиши ALT" - "По умолчанию" - "Представляем приложение \"%s\"" - "с непрерывным вводом" - "Начать работу" - "Далее" - "%s: настройка" - "%s: включение" - "Чтобы включить приложение \"%s\", установите флажок рядом с его названием в настройках языка и ввода." - "Приложение \"%s\" уже включено в настройках языка и ввода. Перейдите к следующему шагу." - "Включить в настройках" - "%s: активация" - "Выберите приложение \"%s\" как текущий способ ввода." - "Другой способ ввода" - "Настройте дополнительные языки." - "Теперь вы можете использовать приложение \"%s\" для набора текста." - "Настроить дополнительные языки" - "Готово" - "Значок приложения" - "Отображать значок приложения среди других приложений." - "Поставщик словарей" - "Поставщик словарей" - "Служба словарей" - "Обновления словаря" - "Дополнительные словари" - "Настройки словарей" - "Пользовательские словари" - "Пользовательский словарь" - "Доступен словарь" - "Загрузка…" - "Установлен" - "Установлен, отключен" - "Сбой подключения" - "Словарей нет" - "Обновить" - "Последнее обновление" - "Проверка обновлений…" - "Загрузка…" - "Основной словарь" - "Отмена" - "Настройки" - "Установить" - "Отмена" - "Удалить" - "Версия %1$s" - "Добавить" - "Добавление в словарь" - "Фраза" - "Больше настроек" - "Меньше настроек" - "ОК" - "Слово:" - "Быстрые клавиши:" - "Язык:" - "Введите слово" - "Ярлык для фразы (необязательно)" - "Изменение слова" - "Изменить" - "Удалить" - "В пользовательском словаре пока ничего нет. Добавлять слова можно с помощью кнопки \"Добавить (+)\"." - "Для всех языков" - "Другой язык" - "Удалить" - " АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ" - "Ряд с цифрами" - "Всегда показывать отдельный ряд с цифрами." - "Подсказывать символы" - "Показывать символы на клавишах" - "Включить изменение размера клавиатуры" - "Масштабирование по высоте" - "Удаление жестом" - "Жест по пробелу" - "Включить быстрое удаление текста жестом по клавише удаления." - "Перемещать курсор жестом по клавише пробела." - "Ещё клавиши" - "Режим инкогнито" - "Не запоминать новые слова." - "Клавиша смайликов" + + + "Поиск в контактах" + "Виброотклик клавиш" + "Звук клавиш" + "Увеличивать при нажатии" + "Настройки" + Оформление + "Непрерывный ввод" + "Исправление текста" + Дополнительные + "Тема" + Включить разделение клавиатуры + Смена методов ввода + "Клавиша смены языка" + %s мс. + "По умолчанию" + Использовать имена из Контактов для предложений и исправлений + "Пользовательские словари" + "Точки автоматически" + Двойное нажатие на клавишу пробела вставляет точку и пробел + "Заглавные автоматически" + Автоматически ставить заглавную букву в начале предложений + "Личный словарь" + "Основной словарь" + Показывать варианты исправлений + "Предлагать варианты слов во время ввода" + Блокировать нецензурные слова + "Не предлагать слова, которые могут быть сочтены оскорбительными" + "Автоисправление" + "Автоматическое исправление опечаток при вводе знака препинания или пробела" + Откл. + "Умеренное" + Активное + Агрессивное + Предлагать следующее слово + Учитывать предыдущее слово при формировании предложений + "Включить функцию" + Набирайте текст, проводя по буквам и не отрывая палец от экрана + Рисовать линию + Показывать подсказки + Непрерывный ввод фраз + Умный пробел при жестах: вводите несколько слов, проводя пальцем через пробел + Английский (Великобритания) + Английский (США) + Испанский (США) + Хинглиш + Мансийский + Кайтагский + Сербский (Латиница) + %s (Традиционная) + %s (Компактная) + Стандартная + Эмодзи + Добавить + Удалить + Сохранить + Язык + Раскладка + Вибросигнал при нажатии клавиш + Звук при нажатии клавиш + Длительность долгого нажатия + Эмодзи для физической клавиатуры + Физическая клавиша Alt показывает все доступные эмодзи + По умолчанию + Добро пожаловать в %s + с непрерывным вводом + Начать работу + Настроить %s + Включить %s + Убедитесь, что приложение \"%s\" включено в настройках языка и ввода. Это позволит ему работать на вашем устройстве. + Включить в настройках + Переключитесь на %s + Теперь выберите \"%s\" в качестве активного метода ввода текста. + Другой способ ввода + Поздравляем, всё готово! + Теперь вы можете использовать приложение %s для набора текста. + Готово + Показывать значок приложения + Отображать значок приложения на панели запуска + Дополнительные словари + Доступный словарь + Настройки + Удалить + Версия %s + "Быстрые клавиши:" + "Язык:" + Введите слово + Ярлык для фразы (необязательно) + Изменение слова + Для всех языков + Другие языки… + Ряд с цифрами + Всегда показывать ряд с цифрами + Показывать дополнительные символы + Показывать дополнительные символы для ввода долгим нажатием + Увеличенные клавиши + Масштабирование по высоте + Обнаружение URL-адреса + Попытаться обнаружить URL-адреса и схожие конструкции как единое целое + Удаление жестом + Проведите пальцем от клавиши удаления, чтобы выделить и сразу удалить большие фрагменты текста + Резервное копирование и восстановление + Сохранение в файл или загрузка из него. Внимание: восстановление перезапишет текущие данные + Ошибка резервного копирования: %s + Ошибка восстановления из резервной копии: %s + Сохранить + Загрузить + Многоязычный набор текста + Загрузить библиотеку ввода жестами + Предоставьте встроенную библиотеку для включения ввода жестами + Больше клавиш + Включить режим инкогнито + Отключить запоминание новых слов + Клавиша эмодзи + История буфера обмена + Включить журнал буфера обмена + Проверка правописания HeliBoard + Настройки проверки правописания + %s мин. + Настройки HeliBoard + Без ограничения + Время хранения журнала буфера обмена + %s (Акхор) + Даргинский (Урахи) + Контуры клавиш + Использовать тему системы + Стиль темы + Закруглённый + Цвета темы + Цвета темы (тёмная тема) + Внешний вид будет следовать настройкам системы + Автоматически добавлять пробел после знаков препинания при вводе нового слова + Если отключено, клавиша буфера обмена вставит содержимое буфера обмена, если оно есть + Автоматически добавлять пробел после знаков препинания + Изменять метод ввода с помощью пробела + Экспериментальные + Другие настройки (разное) + Исправления + Настройки ввода + Дополнительные клавиши + Предложения + Долгое нажатие клавиши пробела вызовет меню выбора метода ввода + Цвет панели навигации + Точность автоисправления + Светлая + Тёмная + Серая + Чёрная + Пользовательская + Автоматический выбор цвета + Фон клавиатуры + Текст клавиш + Текст спецсимволов клавиш + Фон клавиш + Фон функциональных клавиш + Фон пробела + Текст пробела + Акцент + Справка + Версия + Посмотреть на GitHub + Лицензия с открытым исходным кодом + Стандартная общественная лицензия GNU v3.0 + Закрыть + Нажмите на язык для настроек + "Выберите метод ввода" + Описание скрытых функций + Показать функции, которые могут остаться незамеченными + "Отменить" + "Повторить" + Анализировать переписку и введённый текст для улучшения предложений + "ОК" + "Далее" + "Назад" + Готово + "Отправить" + "Поиск" + "Пауза" + Ждать + Всегда показывать предложения + Внутренний основной словарь + Показывать только основные цвета + Голосовой ввод + Динамические цвета + Показать функциональные подсказки + Выберите файл в совместимом формате. Информация о форматах доступна %s. + %s (Себольсик 390) + Использовать личный словарь устройства для хранения выученных слов + %s (Себольсик финальная) + Шоколад + Облачная + День + Язык (приоритет) + Добавить слова в личный словарь + Установить фоновое изображение + Нажмите, чтобы отредактировать базовую раскладку + Розовая + Языки и раскладки + хранилище, защищённое устройством + Лес + Вам понадобится библиотека для \'%s\'. Несовместимые библиотеки могут привести к сбою при использовании набора текста с помощью жестов. \n\nВнимание: загрузка внешнего кода может представлять угрозу безопасности. Используйте библиотеку только из источника, которому вы доверяете. + Удалить + Предпочитать локализованные латинские цифры + Неизвестный файл библиотеки. Вы уверены, что получили его из надёжного источника и оно предназначено для \'%s\'? + Серо-голубой + Добавить слово + Текст полосы предложений + Показать варианты, определённые в языках клавиатуры + Добавить распространённые варианты + Заменить словарь + Буфер обмена + Индиго + Ряд с цифрами + Выберите порядок всплывающих клавиш + Выберите источник подсказки + Выберите язык + Установить изображение для дневного или ночного режима? + Выбрать клавиши панели инструментов + Океан + Отображать подсказки, если долгое нажатие клавиши запускает дополнительную функцию + Песок + Выберите слово + Показывать все цвета + Действительно удалить пользовательскую раскладку %s? + Словари + Добавить собственную раскладку + Настройка клавиатуры + Символы + Добавить словарь из файла + Коричневый + Виолетта + Локализация ряда с цифрами + Добавить все доступные варианты + Больше автоисправлений + Расстояние разделения + Игнорировать запросы других приложений об отключении предложений (может вызвать проблемы) + Смена языка + Очистить буфер обмена + Ночь + Больше не показывать + Предупреждение: Отключение этого параметра приведёт к удалению изученных данных + Загрузить + Высота нижнего отступа + Ввод жестами + Показывать больше букв с диакритическими знаками в всплывающем окне + Режим одной руки + Сохранить журнал + Раскладка + Автоматически исправлять даже если поле ввода не требует этого + Holo Белая + Смена обоих + Вверх + Удалить пользовательский словарь «%s»? + Не получается прочитать файл + здесь + Выберите словарь для добавления. Словари в формате .dict можно загрузить %s. + Вправо + Ошибка загрузки файла словаря + Больше символов + Вниз + Полностью влево + Влево + Заменить пользовательский словарь \"%1$s\"?\n\nТекущий словарь:\n%2$s\n\nНовый словарь:\n%3$s + Полностью вправо + Вес: + Загрузить файл + Ошибка раскладки: %s + Это слово уже присутствует в пользовательском словаре %s. Пожалуйста, введите другое. + Ошибка: скрипт несовместим с этой клавиатурой + Ошибка: выбранный файл не является корректным словарем + "Без словаря вы будете получать предложения только для введенного ранее текста.<br>\n Вы можете загрузить словари %1$s или проверить, можно ли загрузить словарь для «%2$s» напрямую %3$s." + %s (экспериментальный) + Символы + Символы (арабские) + Числа + Числовая клавиатура + Числовая клавиатура (ландшафт) + Телефон + Символы телефона + ► Долгое нажатие на закреплённые клавиши панели инструментов открывает дополнительные функции:<br> \n\t• буфер обмена &#65515; вставить <br> \n\t• сдвинуть курсор влево/вправо &#65515; перейти на слово влево/вправо <br> \n\t• сдвинуть курсор вверх/вниз &#65515; перейти на страницу вверх/вниз <br> \n\t• слово левее/правее &#65515; перейти к началу/концу строки <br> \n\t• страница вверх/вниз &#65515; перейти к началу/концу страниц<br> \n\t• копировать &#65515; вырезать <br> \n\t• выделить слово &#8596; выделить всё <br> \n\t• отменить &#8596; повторить <br> <br> \n► Долгое нажатие на клавиши в панели инструментов полосы предложений - закрепляет их в полосе предложений. <br> <br> \n► Долгое нажатие на клавишу запятой - открывает Вид буфера обмена, Вид эмодзи, Режим одной руки, Настройки или Сменить язык: <br> \n\t• Вид эмодзи и Смена языка будут недоступны, если соответствующая клавиша уже включена; <br> \n\t• Для некоторых раскладок клавиатуры это не клавиша запятой, а клавиша, находящаяся в том же положении (например, это клавиша \"q\" для раскладки Dvorak). <br> <br> \n► Когда включен режим инкогнито, никакие слова не будут сохранены, и эмодзи не будут добавлены в список использованных. <br> <br> \n► Нажмите на иконку Инкогнито, чтобы получить доступ к панели инструментов.<br> <br> \n► Скользящий ввод клавиш: Проведите пальцем от клавиши Shift к другой клавише, чтобы ввести одну заглавную букву: <br> \n\t• Также это работает для клавиши \\\'?123\\\', чтобы ввести один символ из клавиатуры символов и для связанных с ней клавиш. <br> <br> \n► Удерживайте клавишу Shift или клавишу символа, нажмите одну или несколько клавиш и затем отпустите клавишу Shift или клавишу символа, чтобы переключиться обратно на предыдущую клавиатуру. <br> <br> \n► Долгое нажатие на предложение в полосе предложений показывает ещё больше предложений и клавишу удаления для удаления этого предложения. <br> <br> \n► Проведите пальцем вверх от предложения, чтобы показать больше предложений и отпустите на нужном, чтобы выбрать его. <br> <br> \n► Долгое нажатие на запись в истории буфера обмена закрепляет её (сохраняет в буфере обмена до тех пор, пока вы не отмените закрепление). <br> <br> \n► Проведите пальцем влево в просмотре буфера обмена, чтобы удалить запись (кроме случаев, когда она закреплена). <br> <br> \n► Выделите текст и нажмите клавишу Shift, чтобы переключаться между прописными, строчными буквами и капитализацией слов. <br> <br> \n► Вы можете добавить словари, открыв их в файловом менеджере: <br> \n\t• Это работает только с <i>content-uris</i> и не работает с <i>file-uris</i>, поэтому это может не работать с некоторыми файловыми менеджерами. <br> <br> \n► Для пользователей, создающих резервные копии вручную с правами суперпользователя (root): <br> \n\t• Начиная с Android 7, файл общих настроек находится в другом месте, поскольку приложение использует %s. Это необходимо, чтобы настройки можно было прочитать до разблокировки устройства, например, при запуске; <br> \n\t• Файл находится в /data/user_de/0/package_id/shared_prefs/, хотя это может зависеть от устройства и версии Android. <br> <br> \n<i><b>Режим отладки / отладочная версия APK</b></i> <br> <br> \n► Долгое нажатие на подсказку показывает исходный словарь. <br> <br> \n► Когда используется отладочная версия APK, можно найти в Настройки отладки в разделе Расширенные настройки, хотя их полезность ограничена, за исключением выгрузки словарей в журнал. <br> \n\t• Для релизной версии APK необходимо несколько раз нажать на версию в разделе <i>О программе</i>, затем можно найти настройки отладки в разделе <i>Расширенные настройки</i>. <br> \n\t• Когда включена опция <i>Показать информацию о подсказках</i>, подсказки будут иметь небольшие цифры вверху, которые показывают некоторые внутренние баллы и исходный словарь. <br> <br> \n► В случае аварийного завершения работы приложения, вам будет предложено, получить журналы ошибок, когда вы откроете раздел Настройки. <br> <br> \n► Когда используется многоязычный ввод, клавиша пробела будет показывать значение достоверности, которое используется для определения текущего используемого языка. <br> <br> \n► Предложения будут иметь небольшие цифры вверху, которые показывают некоторые внутренние баллы и исходный словарь (это можно отключить). + Обратное направление, если выбран подтип клавиатуры с письмом справа налево + Переменное направление панели инструментов + %s (Пробхат) + Горизонтальный свайп по пробелу + Вертикальный свайп по пробелу + Бездействие + Перемещение курсора + Долгое нажатие клавиши символов для цифровой клавиатуры + %s (Студенческая) + Действие клавиши смены языка + Эмодзи + Выбрать закреплённые клавиши панели инструментов + При этом отключатся остальные функции долгого нажатия для незакреплённых кнопок панели + Закреплять клавиши панели инструментов при долгом нажатии + Контент скопирован + Показывать панель инструментов автоматически + Скрывать панель инструментов автоматически + Всегда использовать среднее предложение + При нажатии пробела или знака препинания будет использовано среднее предложение + Закрыть буфер обмена + Выбрать клавиши панели буфера обмена + %s (Расширенная) + Скрывать панель инструментов при появлении предложений + Панель инструментов + Показывать панель инструментов при вводе или при выборе текста + Показать больше цветов + Эта настройка показывает все цвета, используемые внутри приложения. Список цветов может меняться. Цвет по умолчанию является случайным, и имена не будут переведены. + Функциональные клавиши (Дополнительные символы) + Функциональные клавиши + Функциональные клавиши (Символы) + Всегда начинать немедленно + Время восстановления быстрой печати + Настройка валют + Укажите основные и до 6 доп. символов валют через пробел + Загрузить + Сохранить в файл + Копировать в буфер обмена + Начало страницы + Конец страницы + Слово левее + Слово правее + Страница вверх + Страница вниз + Предложить содержимое буфера обмена + Показать недавно скопированное содержимое буфера обмена в качестве предложения + Переключить цифровую клавиатуру + Вернуться к основной клавиатуре после… + Выбора эмодзи в режиме просмотра + Выбора записи из истории буфера обмена + Нажатия Enter или пробела после других клавиш в режиме символов + Добавить самые распространённые варианты (по умолчанию) + Удалить лишние всплывающие окна + Убрать всплывающие клавиши, присутствующие в базовой раскладке + Ряд с цифрами + Показывать предложенное слово во время набора жестами + Время жизни следа жеста + Пользовательский текст на клавише пробела + Строка буфера обмена внизу + Плавающий предпросмотр + Перемещать предпросмотр во время набора жестами + Строка эмодзи внизу + Стиль иконок + Ввод + Изменить размер режима работы одной рукой + Переключить сторону режима работы одной рукой + Табуляция + Удалить + Пробел (раскладка цифр) + Shift + Shift (нажат) + Caps lock + Голосовой ввод отключён + Показать / скрыть панель инструментов + Соединитель нулевой ширины + Настроить коды клавиш панели инструментов + Код клавиши + Код долгого нажатия + Настроить иконки + Разъединитель нулевой ширины + Выход из режима работы одной рукой + Действительно сбросить все настроенные иконки? + Корзина + Вибрация в режиме Не беспокоить + %s (Фонетика) + Автоисправление сокращений + Установить пользовательский шрифт из файла + Масштаб шрифта клавиатуры + Масштаб шрифта отображения эмодзи + Масштаб бокового отступа + Если включено, автоисправление превратит сокращения в полные слова + Вы действительно хотите удалить все настроенные коды клавиш? + Переопределить версию эмодзи + Если не установлено, будет использоваться портретное изображение + Установить фоновое изображение (ландшафт) + Показывать подсказки в ряду с цифрами + Расстояние смахивания для переключения языка + Включить разделение клавиатуры (ландшафт) + Разделение клавиатуры + Пользовательский подтип + %s (Байсахи) + Предупреждение: раскладка в данный момент используется + Действительно удалить %s? + Дополнительные раскладки + Функциональные клавиши (большой экран) + Языки со словарями + Найти и поделиться цветами в %s. + Найти и поделиться раскладками в %s. + обсуждения + Недопустимое имя + Показать всплывающие клавиши TLD + При вводе URL и адресов электронной почты заменить всплывающие подсказки клавиши точки на подсказки с доменами верхнего уровня + Нажатия Enter или пробела после других клавиш на цифровой клавиатуре + Поля ввода на веб-страницах (в основном в браузерах) часто вызывают проблемы с настройкой постоянного отображения подсказок + Ряд с цифрами (основной) + Не всегда показывать подсказки для полей ввода на веб-страницах + Пробел + Автопробел после ручного выбора предложения + Автопробел после набора слова жестами + Автопробел отключается при нажатии Shift + Нажатие Shift убирает запланированный автопробел + Автопробел перед набором слова жестами + Нажатие Backspace отменяет автоисправление + Формат ключа временной метки + Дагбани + Сесото + Масштабировать размер клавиш эмодзи вместе с размером шрифта + Резервная копия восстановлена + Использовать названия приложений + Использовать названия установленных приложений для предложений и исправлений + Тон кожи эмодзи по умолчанию + Нейтральный + %1$s (%2$s) + Клавиши и предложения в панели инструментов + Режим панели инструментов + Только клавиши в панели инструментов + Только предложения + Скрыто + Скрыть панели инструментов буфера обмена и эмодзи + Порядок всплывающих клавиш и источник подсказок + Ландшафт + Показывать описание эмодзи при долгом нажатии + Предложить эмодзи + Использовать словарь эмодзи в обычных предложениях + Предложения по пунктуации + Показывать пунктуацию, когда другие предложения недоступны + Скрыть клавиатуру + Перейти на Wiki + Любой пользователь GitHub может улучшить Wiki! + Запоминать язык для каждого приложения + %s (Кипро) + Показывать закрепленные элементы вверху + Прямой поиск эмодзи + Предлагать только эмодзи, когда слово предшествует двоеточию + Для работы этой функции требуется словарь эмодзи. Словари в формате .dict можно загрузить по ссылке %s. + Луговомарийский (Лугововосточный марийский) + Нижний ряд эмодзи с кнопкой действия + Панель буфера обмена внизу с кнопкой действия + Показывать ряд цифр в режиме символов + Указать пользовательский шрифт эмодзи из файла diff --git a/app/src/main/res/values-sc-rIT/strings.xml b/app/src/main/res/values-sc-rIT/strings.xml new file mode 100644 index 0000000000..9bc9a9a4ca --- /dev/null +++ b/app/src/main/res/values-sc-rIT/strings.xml @@ -0,0 +1,9 @@ + + + + Càmbia su tecladu + diff --git a/app/src/main/res/values-si/strings-action-keys.xml b/app/src/main/res/values-si/strings-action-keys.xml deleted file mode 100644 index 2271ce956a..0000000000 --- a/app/src/main/res/values-si/strings-action-keys.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - "යන්න" - "මීළඟ" - "පෙර" - "හරි" - "යවන්න" - "සොයන්න" - "විරාමය" - "රැඳීම" - diff --git a/app/src/main/res/values-si/strings-config-important-notice.xml b/app/src/main/res/values-si/strings-config-important-notice.xml deleted file mode 100644 index b13f724d32..0000000000 --- a/app/src/main/res/values-si/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "යෝජනා දියුණුවට, ඔබගේ සන්නිවේදන සහ ටයිප් කළ දත්තවලින් ඉගෙන ගන්න" - diff --git a/app/src/main/res/values-si/strings-emoji-descriptions.xml b/app/src/main/res/values-si/strings-emoji-descriptions.xml deleted file mode 100644 index 06e85702c7..0000000000 --- a/app/src/main/res/values-si/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "ප්‍රකාශන හිමිකම් ලකුණ" - "ලියාපදිංචි කළ ලකුණ" - "Double exclamation mark" - "Exclamation question mark" - "Trade mark සලකුණ" - "Information source" - "Left right ඊතලය" - "Up down ඊතලය" - "North west ඊතලය" - "North east ඊතලය" - "South east ඊතලය" - "South west ඊතලය" - "Leftwards ඊතලය සමඟ hook" - "Rightwards ඊතලය සමඟ hook" - "නරඹන්න" - "Hourවීදුරුව" - - - - - "කළු right-pointing double triangle" - "කළු left-pointing double triangle" - "කළු up-pointing double triangle" - "කළු down-pointing double triangle" - - - - - - - "සීනු ඔරලෝසුව" - - - - - "Hourවීදුරුව සමඟ flowing sසහ" - - - - - - - "කව කළ latin capital letter m" - "කළු small square" - "සුදු small square" - "කළු right-pointing triangle" - "කළු left-pointing triangle" - "සුදු මධ්‍යම square" - "කළු මධ්‍යම square" - "සුදු මධ්‍යම small square" - "කළු මධ්‍යමකුඩා" - "රැස් සමඟ කළු ඉරු" - "වලාකුළ" - - - - - - - "කළු දුරකථනය" - "හරි සමඟ ඡන්ද පෙට්ටිය" - "වැහි බිංදු සමඟ කුඩය" - "උණුසුම් බීම" - - - "ඉහළට දිගුකර සිටින සුචිය" - - - - - - - - - - - - - - - - - - - "සුදු සිනාසෙන මුහුණ" - "මේෂ" - "වෘෂභ" - "මිථුන" - "කටක" - "සිංහ" - "කන්‍යා" - "තුලා" - "වෘශ්චික" - "ධනු" - "මකර" - "කුම්භ" - "මීන" - "කළු ඉස්කෝප්ප කට්ටළය" - "කළු කලාබර කට්ටළය" - "කළු හරත කට්ටළය" - "කළු දියමන්ති කට්ටළය" - "උණුසුම් දුනු" - "කළු පොදු ප්‍රතිචක්‍රකරණය කිරීමේ සංකේතය" - "රෝද පුටුවේ සංකේතය" - - - "නැංගුරම" - - - - - - - - - - - - - "අනතුරු ඇඟවීමේ සලකුණ" - "ඉහළ වෝල්ටියතා සලකුණ" - "මධ්‍යම සුදු කවය" - "මධ්‍යම කළු කවය" - - - - - "පාපන්දුබෝලය" - "බේස්බෝල්" - "හිම නොමැතිව හිමෙන් සෑදු මිනිසා" - "වලාකුළු වලට පිටුපසින් ඉර" - - - "ඔෆිචුස්" - - - - - - - "ඇතුළත් වීමට බෑ" - - - "දේවස්ථානය" - - - - - "ජලාශය" - "හිල තුළ කොඩිය" - - - "රුවල් බෝට්ටුව" - - - - - - - "කූඩාරම" - "ඉන්ධන පොම්පය" - "කළු කතුර" - "සුදු විශාල හරි ලකුණ" - "ගුවන් යානය" - "ලියුම් කවරය" - "ඉහළට එසවූ අතේ මිට" - "ඉහළට එසවූ අත" - "ජයග්‍රහි අත" - - - "පැන්සල" - "කළු තුඩ" - "විශාල හරි x" - "විශාල වැඩි කිරීමේ x" - - - - - "දිලිසෙනවා" - "ගරාදිය අටක් ඇති තරු ලකුණ" - "ලක්ෂ අටක් ඇති කළු තුරු" - "හිම මල්" - "දිලිසෙනවා" - "හරස් ලකුණ" - "ඍණ සමචතුරස‍්‍රගත හරස් ලකුණ" - "කළු ප්‍රශ්නාර්ථ ලකුණු සැරසිල්ල" - "සුදු ප්‍රශ්නාර්ථ ලකුණු සැරසිල්ල" - "සුදු විශාල අසිර්වද ලකුණු සැරසිල්ල" - "විශාල අසිර්වද ලකුණු සංකේතය" - - - "අධික කළු හෘදය" - "විශාල ධන සංඥාව" - "විශාල ඍණ සංඥාව" - "විශාල බෙදීමේ සංඥාව" - "කළු දකුණට ඇති ඊතලය" - "වක්‍ර ලූපය" - "ද්විත්ව වක්‍ර ලූපය" - "ඊතලය දකුණට ඉලක්කගතව ඉන් පසු ඉහළට වක්‍රවේ" - "ඊතලය දකුණට ඉලක්කගතව ඉන් පසු පහළට වක්‍රවේ" - "වමට කළු ඊතලය" - "ඉහළට කළු ඊතලය" - "පහළට ඇති කළු ඊතලය" - "කළු විශාල කොටුව" - "සුදු විශාල කොටුව" - "සුදු මධ්‍යම තුරු" - "බර විශාල රවුම" - "රැලි ඉර" - "කොටස් ප්‍රත්‍යාවර්තන ලකුණ" - "කව කළ භාවලේඛය සතුට පළ කිරීම" - "කව කළ භාවලේඛය රහස" - "මහ්ජෝන් ටයිල් රතු මකරා" - "කළු කවටයා කාඩ් ක්‍රීඩා කරමින්" - "ලේ වර්ගය A" - "ලේ වර්ගය B" - "ලේ වර්ගය O" - "වාහන නැවැත් වීමේ තැන" - "ලේ වර්ගය AB" - "සමචතුරස‍්‍රගත CL" - "සමචතුරස‍්‍රගත සිසිල්" - "සමචතුරස‍්‍රගත නිදහස්" - "සමචතුරස‍්‍රගත ID" - "සමචතුරස‍්‍රගත අලුත්" - "සමචතුරස‍්‍රගත N G" - "සමචතුරස‍්‍රගත හරි" - "සමචතුරස‍්‍රගත SOS" - "කෑගැසීමේ ලකුණ සමඟ සමචතුරස‍්‍රගත ඉහළ" - "සමචතුරස‍්‍රගත vs" - "මෙතැන සමචතුරස‍්‍රගත කටකන" - "සමචතුරස‍්‍රගත කටකන සේවාව" - "සමචතුරස‍්‍රගත භාවලේඛය අය කිරීම් වලින්-නිදහස්" - "සමචතුරස‍්‍රගත භාවලේඛය වෙන් කළ-ආසනය" - "සමචතුරස‍්‍රගත භාවලේඛය තහනම් කරනවා" - "සමචතුරස‍්‍රගත භාවලේඛය පුරප්පාඩුව" - "සමචතුරස‍්‍රගත භාවලේඛය පිළිගැනීම" - "සමචතුරස‍්‍රගත භාවලේඛය සම්පූර්ණ පදිංචි කාලය" - "සමචතුරස‍්‍රගත භාවලේඛය ගෙවන ලද" - "සමචතුරස‍්‍රගත භාවලේඛය මාස්පතා" - "සමචතුරස‍්‍රගත භාවලේඛය ඉල්ලුම් පත්‍රය" - "සමචතුරස‍්‍රගත භාවලේඛය වට්ටම" - "සමචතුරස‍්‍රගත භාවලේඛය තුළ ව්‍යාපාර" - "කව කළ භාවලේඛය වාසිය" - "කව කළ භාවලේඛය පිළිගන්නවා" - "සුළි සුළඟ" - "මීදුමෙන් වැසුණු" - "වසන ලද කුඩය" - "තරු සමඟ රාත්‍රිය" - "කදු මුදුන් වලට උඩින් හිරු උදාව" - "හිරු උදාව" - "සන්ධ්‍යාවේ නගර භූ දර්ශනය" - "ගොඩනැගිලි වලට උඩින් හිරු උදාව" - "දේදුන්න" - "රාත්‍රියට පාලම උඩ" - "ජල රැල්ල" - "යමහල්" - "ක්ෂීර පථය" - "පෘථිවිය ගෝලය යුරෝපය-අප්‍රිකාව" - "පෘථිවිය ගෝලය අමෙරිකාව" - "පෘථිවිය ගෝලය ආසියාව-ඕස්ටෙ‍්‍රලියාව" - "මධ්‍යහ්න රේඛාව සමඟ පෘථිවිය" - "නව සඳ සංකේතය" - "පුරපක්ෂයේ අඬ සඳ සංකේතය" - "මුල් කාර්තුවේ සඳ සංකේතය" - "පුරපක්ෂයේ කුදු සඳ සංකේතය" - "පූර්ණ සඳ සංකේතය" - "අවපක්ෂයේ කුදු සඳ සංකේතය" - "අවසාන කාර්තුවේ සඳ සංකේතය" - "අවපක්ෂයේ අඬ සඳ සංකේතය" - "අඬ සඳ" - "නව සඳ සමඟ මුහුණ" - "මුල් කාර්තුවේ සඳ සමඟ මුහුණ" - "අවසාන කාර්තුවේ සඳ සමඟ මුහුණ" - "පූර්ණ සඳ සමඟ මුහුණ" - "ඉරු සමඟ මුහුණ" - "ජ්වලිත තුරු" - "උල්කාපාත තුරු" - - - - - - - - - - - - - - - - - - - - - - - - - - - "චෙස්ට්නට්" - "බීජ පැළය" - "සදාහරිත ගස" - "පතනශිල ගස" - "තාල ගස" - "පතොක්" - - - "ටියුලිප්" - "චෙරි මල" - "රෝස" - "වද මල" - "සූරියකාන්ත" - "මල" - "බඩ ඉරිඟු කරල" - "වී කරල" - "ඖෂධ" - "කොළ හතරේ කොළය" - "මේපල් කොළය" - "වැටුණු කොළය" - "සුළගේ කොළය වැනීම" - "හතු" - "තක්කාලි" - "වම්බටු" - "මිදි" - "කොමඩු" - "දිය කොමඩු" - "දොඩම්" - "දෙහි" - "කෙසෙල්" - "අන්නාසි" - "රතු ඇපල්" - "කොළ ඇපල්" - "පෙයර්" - "පීච්" - "චෙරි" - "ස්ට්‍රෝබෙරි" - "හැම්බර්ගර්" - "පීසා කැල්ල" - "මස් කටු" - "කුකුළු කකුල" - "හාල් විස්කෝතු" - "බත් බෝල" - "උයන ලද හාල්" - "ව්‍යංජනය සහ බත්" - "හුමාලය භාජනය" - "ස්පැගටි" - "පාන්" - "ෆ්‍රේන්ච් ෆ්‍රියිස්" - "කර කරන ලද රසවත් අර්තාපල්" - "ඩෑන්ගෝ" - "ඔඩින්" - "සුෂි" - "බදින ලද කූනිස්සා" - "මාළු කේක් සමඟ දිය සුළි මෝස්තරය" - "මෘදු අයිස් ක්‍රීම්" - "සහින ලද අයිස්" - "අයිස් ක්‍රීම්" - "ඩෝනට්" - "කුකීය" - "චොකලට් බාරය" - "පැණිරස" - "Lollipop" - "කස්ටට්" - "මී පැණි මුට්ටිය" - "ෂොට් කේක්" - "බෙන්ටෝ පෙට්ටිය" - "කෑම හැළිය" - "කෑම පිසීම" - "ගෑරුප්පුව සහ පිහිය" - "හැඬලය නැතිව තේ කෝප්පය" - "සකේ බෝතලය සහ කෝප්පය" - "වයින් වීදුරුව" - "කොක්ටේල් වීදුරුව" - "නිවර්තන බීම" - "බීර ජෝගුව" - "බීර ජෝගු ගැට්ට වීම" - "බිළිඳාගේ බෝතලය" - - - - - - - "රිබනය" - "කවර කරන ලද තෑග්ග" - "උපන් දින කේක්" - "Jack-o-ලන්තෑරුම" - "නත්තල් ගස" - "නත්තල් සීයා" - "ගිනිකෙළි" - "ගිනිකෙළි දියමන්තිය" - "බැලුන" - "සාද ලොකු බොත්තම" - "සරුවපිත්තල බෝල" - "ටනබාටා ගස" - "කතිර කළ කොඩි" - "සරල සැරසිලි" - "ජපන් බෝනික්කා" - "කාපියා ධජය" - "සුළං ඝණ්ටානාදය" - "සඳ බැලීමේ උත්සවය" - "පාසල් බෑගය" - "උපාධි තොප්පිය" - - - - - - - - - - - - - - - "කැරෝසල් අශ්වයා" - "කතුරු ඔංචිල්ලාව" - "රෝලර් යාත්‍රාව" - "බිලීපිත්ත සහ මාඑ" - "මයික්‍රෝෆෝනය" - "චිත්‍රපට කැමරාව" - "සිනමාව" - "හෙඩ්ෆෝන්" - "චිත්‍ර ශිල්පියාගේ වර්ණ එලකය" - "උස් තොප්පිය" - "සර්කස් කූඩාරම" - "ප්‍රවේශපත්‍ර" - "ටකපෝරුව" - "අභිවාහ්‍ය කලා" - "වීඩියෝ ක්‍රීඩා" - "ඉලක්කයට වැදීම" - "තව් යන්ත්‍රය" - "බිලියර්ඩ්" - "සූදු දාදු කැටය" - "බොලින් ක්‍රීඩාව" - "මල් ක්‍රීඩා කරන කාඩ්පත්" - "සංගීත ස්වරය" - "බහු සංගීත ස්වර" - "සැක්සෆෝනය" - "ගිටාරය" - "සංගීතය යතුරු පුවරුව" - "ට්‍රම්පටය" - "වයලීනය" - "සංගීත විභ්නය" - "දුවන කමිසය සමඟ සැෂ්" - "ටෙනිස් පිත්ත සහ බෝලය" - "ස්කි සහ ස්කි සපත්තුව" - "පැසිපන්දු සහ වළල්ල" - "අල්ලි වැටුණු කොඩිය" - "හිම මත ලිස්සා යන්නා" - "ධාවකයා" - "සර්ෆ" - - - "කුසලාන" - "අශ්වයින් තරඟයට දිවීම" - "ඇමරිකානු පාපන්දු" - "රග්බි පාපන්දු" - "පීනන්නා" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "නිවාස ගොඩනැඟිල්ල" - "නිවාස සමඟ ගෙවත්ත" - "කාර්යාලය ගොඩනැඟිල්ල" - "ජපන් තැපැල් කාර්යාලය" - "යුරෝපීය තැපැල් කාර්යාලය" - "රෝහල" - "බැංකුව" - "ස්වයංක‍්‍රියකෘත ටෙලර් යන්ත‍්‍රය" - "හෝටලය" - "ආදර හෝටලය" - "පහසු වෙළඳසල" - "පාසල" - "දෙපාර්තමේන්තුව වෙළඳසල" - "කර්මාන්තශාලාව" - "ලැසකායා ලන්තෑරුම" - "ජපන් මාළිගාව" - "යුරෝපීය මාළිගාව" - - - - - - - - - - - - - - - - - - - - - - - - - "මීයා" - "මීයා" - "ඔක්ස්" - "මී හරකා" - "එළදෙන" - - - "දිවියා" - "හාවා" - "පූසා" - "මකරා" - "කිඹුලා" - "තල්මසා" - "ගොළුබෙල්ලා" - "සර්පයා" - "අශ්වයා" - "බැටළුවා" - "එළුවා" - "බැටළුවා" - "වඳුරා" - "කුකුළා" - "කුකුල් පැටියා" - "බල්ලා" - "ඌරා" - "ඌරා" - "අලියා" - "බූවල්ලා" - "සර්පිල සිප්පිය" - "මකුණා" - "කුහුඹියා" - "මී මැස්සා" - "ගැහැණු කුරුමිණියා" - "මාළුවා" - "නිවර්තන මාළුවා" - "බ්ලොව්ෆිෂ්" - "කැස්බෑවා" - "කුකුළු පැටවා බිහිවන" - "බිළිදු කුකුළු පැටවා" - "ඉදිරියට-මුහුණ දමා සිටින බිළිදු කුකුළු පැටවා" - "කුරුල්ලා" - "පෙන්ගුවින්" - "කොවාලා" - "පූඩ්ල්" - "මොල්ලික් ඇති ඔටුවා" - "මොල්ලි දෙකක් ඇති ඔටුවා" - "ඩොල්ෆින්" - "ඩොල්ෆින් මුහුණ" - "ගව මුහුණ" - "කොටි මුහුණ" - "හා මුහුණ" - "පූස් මුහුණ" - "මකර මුහුණ" - "දිය විදින තල්මසා" - "අශ්ව මුහුණ" - "වඳුරු මුහුණ" - "බලු මුහුණ" - "ඌරා මුහුණ" - "ගෙබි මුහුණ" - "හම්ස්ටර් මුහුණ" - "වෘක මුහුණ" - "වලස් මුහුණ" - "පැන්ඩාගේ මුහුණ" - "ඌරා නහය" - "අඩි මුද්‍රණය" - - - "ඇස්" - - - "කන්" - "නහය" - "කට" - "දිව" - "පිටි අතේ ඇගිල්ල ඉහළට දිගුකර සිටින සුචිය" - "පිටි අතේ ඇගිල්ල පහළට දිගුකර සිටින සුචිය" - "පිටි අතේ ඇගිල්ල වමට දිගුකර සිටින සුචිය" - "පිටි අතේ ඇගිල්ල දකුණට දිගුකර සිටින සුචිය" - "අත මිට මොළවා සිටින සලකුණ" - "අත වනන සලකුණ" - "හරි අත් සලකුණ" - "ඇගිල්ල ඉහළට දමන සලකුණ" - "ඇගිල්ල පහළට දමන සලකුණ" - "අත්පොළසන් දෙන අත් සලකුණ" - "විවෘත අත් සලකුණ" - "ඔටුන්න" - "කාන්තා හිස්වැස්ම" - "ඇස් කණ්නාඩි" - "කරපටිය" - "ටී-ෂර්ටය" - "ඩෙනිම් කලිසම" - "ඇඳුම" - "කිමෝනෝව" - "බිකිනි" - "කාන්තා ඇදුම්" - "පසුම්බිය" - "අත්බෑග්ය" - "පැස" - "පිරිමි සපත්තුව" - "ධාවන සපත්තුව" - "අඩි උස සපත්තුව" - "කාන්තා සෙරෙප්පුව" - "කාන්තා අඩි උස සපත්තුව" - "පා සළකුණු" - "කැලිසේයාව තුළ උඩුකය" - "කැලිසේයාව තුළ උඩුකයන්" - "කොල්ලා" - "කෙල්ල" - "පිරිමියා" - "ගැහැනිය" - "පවුල" - "පිරිමියා සහ ගැහැනිය අත් අල්ලා ගෙන සිටි" - "පිරිමි දෙන්නෙක් අත් අල්ලා ගෙන සිටි" - "ගැහැනු දෙන්නෙක් අත් අල්ලා ගෙන සිටි" - "පොලිස් නිලධාරියා" - "ගැහැනියක් හා කන් පැළඳ සිටි" - "වේල් සමඟ මනමාලිය" - "තඹවන් කොණ්ඩය සමඟ පුද්ගලයා" - "ගුආ පි මාඕ සමඟ පිරිමියා" - "තලප්පාව සමඟ පිරිමියා" - "වයසක පිරිමියා" - "වයසක ගැහැනිය" - "බිළිඳා" - "ඉදි කිරීමේ කම්කරුවා" - "කුමාරිකාව" - "ජපන් රාක්ෂසයා" - "ජපන් පිශාචයා" - "භූතයා" - "බිළිදු දෙව්දුව" - "පාරභෞම පරදේශියා" - "පරදේශී රාක්ෂසයා" - "Imp" - "හිස්කබල" - "තොරතුරු මේසයේ පුද්ගලයා" - "රාජ්‍යාරක්ෂක භටයා" - "නැට්ටුවා" - "තොල් සායම්" - "නිය ඔපදමනවා" - "මුහුණ සම්බාහනය" - "කොණ්ඩා මෝස්තරය" - "කරණවෑමි කණුව" - "නළය" - "ගුලිය" - "හාදු ලකුණ" - "ආදර හසුන" - "රිංග් කරන්න" - "මැණික් ගල්" - "සිප ගැනීම" - "මල් පොකුර" - "හදවත සමඟ යුවළ" - "විවාහ" - "තැළීණු හදවත" - "කැඩුණු හදවත" - "හදවත් දෙකක්" - "දීප්තිමත් හදවත" - "වැඩෙන හදවත" - "ඊතලය සමඟ හදවත" - "නිල් හදවත" - "කොළ හදවත" - "කහ හදවත" - "දම් හදවත" - "පීත්ත පටිය සමඟ හදවත" - "කැරකෙන හදවත්" - "හදවත් සැරසිල්ල" - "ඇතුළත තිත සමඟ දියමන්ති හැඩය" - "විදුලි ආලෝක බල්බය" - "කෝප සංකේතය" - "බෝම්බය" - "නිඳන සංකේතය" - "හැප්පීම සංකේතය" - "වැගිරීමේ දහඩිය සංකේතය" - "බිඳිත්ත" - "ඉරි සංකේතය" - "පයිල් ඔෆ් පූ" - "නමන ලද ද්වීමූර්ධකය" - "ඉස කරකැවෙන සංකේතය" - "කථන බැලූනය" - "සිතුවිලි බැලූනය" - "සුදු මල්" - "ශතකයේ ලකුණු සංකේතය" - "මුදල් බෑගය" - "මුදල් හුවමාරුව" - "අධික ඩොලර ලකුණ" - "ණය පත" - "යෙන් ලකුණ සමඟ බැංකු නෝට්ටුව" - "ඩොලරය ලකුණ සමඟ බැංකු නෝට්ටුව" - "යුරෝ ලකුණ සමඟ බැංකු නෝට්ටුව" - "පවුම් ලකුණ සමඟ බැංකු නෝට්ටුව" - "මුදල් සමඟ පියාපත" - "යෙන් ලකුණ සහ ඉහළට නැඹුරුතාව සමඟ ප්‍රස්තාරය" - "ආසනය" - "පෞද්ගලික පරිගණකය" - "ලිපි කොපුව" - "කුඩා තැටිය" - "නම්‍ය ඩිස්කය" - "ප්‍රකාශ තැටිය" - "Dvd" - "ගොනුවේ ෆෝල්ඩරය" - "ගොනුව ෆෝල්ඩරය විවෘත කරන්න" - "රැල්ල සමඟ පිටුව" - "උඩුකුරු පිටුව" - "දින දර්ශනය" - "ඉරෙන දින දර්ශනය" - "කාඩ්පත් සුචිය" - "ඉහළට නැඹුරුතාව සමඟ ප්‍රස්තාරය" - "පහළට නැඹුරුතාව සමඟ ප්‍රස්තාරය" - "තීර ප්‍රස්ථාර" - "පසුරු පුවරුව" - "Pushpin" - "Round pushpin" - "Paperclip" - "Straight ruler" - "Triangular ruler" - "Bookmark tabs" - "ලෙජරය" - "නෝට්බුක්" - "Notebook සමඟ decorative cover" - "Closed book" - "Open book" - "Green book" - "Blue book" - "Orange book" - "ග්‍රන්ථ" - "Name badge" - "අනුචලනය කරන්න" - "Memo" - "Telephone receiver" - "පේජරය" - "Fax machine" - "Satellite කුහුඹියාenna" - "Public address loudspeaker" - "Cheering megaphone" - "Outbox tray" - "Inbox tray" - "පැකේජය" - "ඊ-තැපැල් සංකේතය" - "Incoming envelope" - "Envelope සමඟ downwards ඊතලය above" - "Closed mailbox සමඟ lowered flag" - "Closed mailbox සමඟ raised flag" - "Open mailbox සමඟ raised flag" - "Open mailbox සමඟ lowered flag" - "Postbox" - "Postal horn" - "Newspaper" - "Mobile phone" - "Mobile phone සමඟ rightwards ඊතලය at left" - "Vibration mode" - "Mobile phone off" - "No mobile phones" - "කුහුඹියාenna සමඟ bars" - "කැමරාව" - - - "Video camera" - "රූපවාහිනිය" - "රේඩියෝව" - "Videocassette" - - - - - "Twisted rightwards ඊතලයs" - "Clockwise rightwards සහ leftwards open කවය ඊතලයs" - "Clockwise rightwards සහ leftwards open කවය ඊතලයs සමඟ කව කළ one overlay" - "Clockwise downwards සහ upwards open කවය ඊතලයs" - "කුහුඹියාiclockwise downwards සහ upwards open කවය ඊතලයs" - "Low brightness සංකේතය" - "High brightness සංකේතය" - "Speaker සමඟ cancellation stroke" - "නාදකය" - "Speaker සමඟ one sound wave" - "Speaker සමඟ three sound waves" - "බැටරිය" - "Electric plug" - "Left-pointing magnifying වීදුරුව" - "Right-pointing magnifying වීදුරුව" - "Lock සමඟ ink pen" - "Closed lock සමඟ key" - "Key" - "අඟුළුලන්න" - "Open lock" - "Bell" - "Bell සමඟ cancellation stroke" - "Bookmark" - "Link සංකේතය" - "Radio button" - "Back සමඟ leftwards ඊතලය above" - "End සමඟ leftwards ඊතලය above" - "On සමඟ exclamation mark සමඟ left right ඊතලය above" - "Soon සමඟ rightwards ඊතලය above" - "Top සමඟ upwards ඊතලය above" - "No one under eighteen සංකේතය" - "Keycap ten" - "Input සංකේතය for latin capital letters" - "Input සංකේතය for latin small letters" - "Input සංකේතය for numbers" - "සංකේත සඳහා ආදාන සංකේතය" - "Input සංකේතය for latin letters" - "ගින්න" - "Electric torch" - "Wrench" - "Hammer" - "Nut සහ bolt" - "Hocho" - "Pistol" - "Microscope" - "Telescope" - "Crystal ball" - "මැද තිත සමඟ තුඩු හයක් කළ තරුව" - "ජපන් සංකේතය for beginner" - "Trident emblem" - "කළු square button" - "සුදු square button" - "Large red කවය" - "Large blue කවය" - "Large orange diamond" - "Large blue diamond" - "Small orange diamond" - "Small blue diamond" - "Up-pointing red triangle" - "Down-pointing red triangle" - "Up-pointing small red triangle" - "Down-pointing small red triangle" - - - - - - - - - - - - - "Clock මුහුණ one oclock" - "Clock මුහුණ two oclock" - "Clock මුහුණ three oclock" - "Clock මුහුණ four oclock" - "Clock මුහුණ five oclock" - "Clock මුහුණ six oclock" - "Clock මුහුණ seven oclock" - "Clock මුහුණ eight oclock" - "Clock මුහුණ nine oclock" - "Clock මුහුණ ten oclock" - "Clock මුහුණ eleven oclock" - "Clock මුහුණ twelve oclock" - "Clock මුහුණ one-thirty" - "Clock මුහුණ two-thirty" - "Clock මුහුණ three-thirty" - "Clock මුහුණ four-thirty" - "Clock මුහුණ five-thirty" - "Clock මුහුණ six-thirty" - "Clock මුහුණ seven-thirty" - "Clock මුහුණ eight-thirty" - "Clock මුහුණ nine-thirty" - "Clock මුහුණ ten-thirty" - "Clock මුහුණ eleven-thirty" - "Clock මුහුණ twelve-thirty" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Mount fuji" - "Tokyo tower" - "Statue of liberty" - "Silhouette of japan" - "Moyai" - "Grinning මුහුණ" - "Grinning මුහුණ සමඟ smiling eyes" - "මුහුණ සමඟ tears of joy" - "Smiling මුහුණ සමඟ open කට" - "Smiling මුහුණ සමඟ open කට සහ smiling eyes" - "Smiling මුහුණ සමඟ open කට සහ cold sweat" - "Smiling මුහුණ සමඟ open කට සහ tightly-closed eyes" - "Smiling මුහුණ සමඟ halo" - "Smiling මුහුණ සමඟ horns" - "Winking මුහුණ" - "Smiling මුහුණ සමඟ smiling eyes" - "මුහුණ savouring delicious food" - "Relieved මුහුණ" - "Smiling මුහුණ සමඟ heart-shaped eyes" - "Smiling මුහුණ සමඟ ඉරුවීදුරුවes" - "Smirking මුහුණ" - "Neutral මුහුණ" - "Expressionless මුහුණ" - "Unamused මුහුණ" - "මුහුණ සමඟ cold sweat" - "Pensive මුහුණ" - "Confused මුහුණ" - "Confounded මුහුණ" - "Kissing මුහුණ" - "මුහුණ throwing a kiss" - "Kissing මුහුණ සමඟ smiling eyes" - "Kissing මුහුණ සමඟ closed eyes" - "මුහුණ සමඟ stuck-out දිව" - "මුහුණ සමඟ stuck-out දිව සහ winking eye" - "මුහුණ සමඟ stuck-out දිව සහ tightly-closed eyes" - "Disappointed මුහුණ" - "Worried මුහුණ" - "Angry මුහුණ" - "Pouting මුහුණ" - "Crying මුහුණ" - "Persevering මුහුණ" - "මුහුණ සමඟ look of triumph" - "Disappointed but relieved මුහුණ" - "Frowning මුහුණ සමඟ open කට" - "Anguished මුහුණ" - "Fearful මුහුණ" - "Weary මුහුණ" - "Sleepy මුහුණ" - "Tired මුහුණ" - "Grimacing මුහුණ" - "Loudly crying මුහුණ" - "මුහුණ සමඟ open කට" - "Hushed මුහුණ" - "මුහුණ සමඟ open කට සහ cold sweat" - "මුහුණ screaming in fear" - "Astonished මුහුණ" - "Flushed මුහුණ" - "Sleeping මුහුණ" - "Dizzy මුහුණ" - "මුහුණ සමඟout කට" - "මුහුණ සමඟ medical mask" - "Grinning පූසා මුහුණ සමඟ smiling eyes" - "පූසා මුහුණ සමඟ tears of joy" - "Smiling පූසා මුහුණ සමඟ open කට" - "Smiling පූසා මුහුණ සමඟ heart-shaped eyes" - "පූසා මුහුණ සමඟ wry smile" - "Kissing පූසා මුහුණ සමඟ closed eyes" - "Pouting පූසා මුහුණ" - "Crying පූසා මුහුණ" - "Weary පූසා මුහුණ" - - - - - - - - - "මුහුණ සමඟ no good gesture" - "මුහුණ සමඟ ok gesture" - "Person bowing deeply" - "See-no-evil වඳුරා" - "Hear-no-evil වඳුරා" - "Speak-no-evil වඳුරා" - "Happy person raising one hසහ" - "සමරන විට පුද්ගලයන් ඇත දෙකම ඔසවයි" - "Person frowning" - "Person සමඟ pouting මුහුණ" - "Person සමඟ folded hසහs" - "Rocket" - "Helicopter" - "Steam locomotive" - "Railway car" - "High-speed train" - "High-speed train සමඟ bullet නහය" - "Train" - "Metro" - "Light rail" - "Station" - "Tබැටළුවා" - "Tබැටළුවා car" - "Bus" - "Oncoming bus" - "Trolleybus" - "Bus stop" - "Minibus" - "Ambulance" - "Fire engine" - "Police car" - "Oncoming police car" - "Taxi" - "Oncoming taxi" - "Automobile" - "Oncoming automobile" - "Recreational vehicle" - "Delivery truck" - "ඈඳූ ලොරිය" - "Tractor" - "Monorail" - "Mountain railway" - "Suspension railway" - "Mountain cableway" - "Aerial tබැටළුවාway" - "Ship" - "Rowboat" - "Speedboat" - "තිරස් මාර්ග තදබද පහන" - "Vertical traffic light" - "Construction සලකුණ" - "Police cars revolving light" - "Triangular flag on post" - "Door" - "No entry සලකුණ" - "Smoking සංකේතය" - "දුම්පානය කරන්න එපා සංකේතය" - "Put litter in its place සංකේතය" - "Do not litter සංකේතය" - "Potable water සංකේතය" - "Non-potable water සංකේතය" - "Bicycle" - "No bicycles" - "Bicyclist" - "Mountain bicyclist" - "Pedestrian" - "No pedestrians" - "Children crossing" - "Mens සංකේතය" - "Womens සංකේතය" - "Restroom" - "Baby සංකේතය" - "Toilet" - "Water closet" - "Shower" - "Bath" - "Bathtub" - "Passport control" - "Customs" - "Baggage claim" - "Left luggage" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-si/strings-letter-descriptions.xml b/app/src/main/res/values-si/strings-letter-descriptions.xml deleted file mode 100644 index 0673e19ff6..0000000000 --- a/app/src/main/res/values-si/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "ස්ත්‍රී ක්‍රමාංකය දර්ශකය" - "මයික්‍රො ලකුණ" - "පුරුෂ ක්‍රමාංකය දර්ශකය" - "සියුම් S" - "A, ගම්භීර" - "A, තියුණු" - "A, වකුටු" - "A, නාසික්‍ය" - "A, ස්වර" - "A, වළල්ලට ඉහළ" - "A, E, බැම්ම" - "C, සකාර ලකුණ" - "E, ගම්භීර" - "E, තියුණු" - "E, වකුටු" - "E, ස්වර" - "I, ගම්භීර" - "I, තියුණු" - "I, වකුටු" - "I, ස්වර" - "එත්" - "N, නාසික්‍ය" - "O, ගම්භීර" - "O, තියුණු" - "O, වකුටු" - "O, නාසික්‍ය" - "O, ස්වර" - "O, වාරය" - "U, ගම්භීර" - "U, තියුණු" - "U, වකුටු" - "U, ස්වර" - "Y, තියුණු" - "කටුව" - "Y, ස්වර" - "A, මුද්‍රිත" - "A, බ්‍රේව්" - "A, ඔගොනෙක්" - "C, තියුණු" - "C, වකුටු" - "C, ඉහළින් තිත" - "C, කරෝන්" - "D, කරෝන්" - "D, වාරය" - "E, මුද්‍රිත" - "E, බ්‍රේව්" - "E, ඉහළින් තිත" - "E, ඔගොනෙක්" - "E, කරෝන්" - "G, වකුටු" - "G, බ්‍රේව්" - "G, ඉහළින් තිත" - "G, සකාර ලකුණ" - "H, වකුටු" - "H, වාරය" - "I, නාසික්‍ය" - "I, මුද්‍රිත" - "I, බ්‍රේව්" - "I, ඔගොනෙක්" - "තිත නැති I" - "I, J, බැම්ම" - "J, වකුටු" - "K, සකාර ලකුණ" - "ක්‍ර" - "L, තියුණු" - "L, සකාර ලකුණ" - "L, කරෝන්" - "L, මැද තිත" - "L, වාරය" - "N, තියුණු" - "N, සකාර ලකුණ" - "N, කරෝන්" - "N, පෙර මඟින් ආමන්ත්‍රණයක්" - "එන්ග්" - "O, මුද්‍රිත" - "O, බ්‍රේව්" - "O, ද්විත්ව තියුණු" - "O, E, බැම්ම" - "R, තියුණු" - "R, සකාර ලකුණ" - "R, කරෝන්" - "S, තියුණු" - "S, වකුටු" - "S, සකාර ලකුණ" - "S, කරෝන්" - "T, සකාර ලකුණ" - "T, කරෝන්" - "T, වාරය" - "U, නාසික්‍ය" - "U, මුද්‍රිත" - "U, බ්‍රේව්" - "U, වළල්ලට ඉහළ" - "U, ද්විත්ව තියුණු" - "U, ඔගොනෙක්" - "W, වකුටු" - "Y, වකුටු" - "Z, තියුණු" - "Z, ඉහළින් තිත" - "Z, කරෝන්" - "දිග S" - "O, අං" - "U, අං" - "S, පහළ කොමාව" - "T, පහළ කොමාව" - "ස්චාව" - "A, පහළ තිත" - "A, ඉහළ කොක්ක" - "A, වකුටු සහ තියුණු" - "A, වකුටු සහ ගම්භීර" - "A, වකුටු සහ ඉහළ කොක්ක" - "A, වකුටු සහ නාසික්‍ය" - "A, වකුටු සහ පහළ තිත" - "A, බ්‍රේව් සහ තියුණු" - "A, බ්‍රේව් සහ ගම්භීර" - "A, බ්‍රේව් සහ පහළ කොක්ක" - "A, බ්‍රේව් සහ නාසික්‍ය" - "A, බ්‍රේව් සහ පහළ තිත" - "E, පහළ තිත" - "E, ඉහළ කොක්ක" - "E, නාසික්‍ය" - "E, වකුටු සහ තියුණු" - "E, වකුටු සහ ගම්භීර" - "E, වකුටු සහ ඉහළ කොක්ක" - "E, වකුටු සහ නාසික්‍ය" - "E, වකුටු සහ පහළ තිත" - "I, ඉහළ කොක්ක" - "I, පහළ තිත" - "O, පහළ තිත" - "O, ඉහළ කොක්ක" - "O, වකුටු සහ තියුණු" - "O, වකුටු සහ ගම්භීර" - "O, වකුටු සහ ඉහළ කොක්ක" - "O, වකුටු සහ නාසික්‍ය" - "O, වකුටු සහ පහළ තිත" - "O, අං සහ තියුණු" - "O, අං සහ ගම්භීර" - "O, අං සහ ඉහළ කොක්ක" - "O, අං සහ නාසික්‍ය" - "O, අං සහ පහළ තිත" - "U, පහළ තිත" - "U, ඉහළ කොක්ක" - "U, අං සහ තියුණු" - "U, අං සහ ගම්භීර" - "U, අං සහ ඉහළ කොක්ක" - "U, අං සහ නාසික්‍ය" - "U, අං සහ පහළ තිත" - "Y, ගම්භීර" - "Y, පහළ තිත" - "Y, ඉහළ කොක්ක" - "Y, නාසික්‍ය" - "යටිකුරු කළ හර්ෂදී ලකුණ" - "වමට-ලක්ෂ ගත ද්විත්ව අනාත කළ උද්ධෘත ලකුණ" - "මැද තිත" - "උඩු ලකුණු එක" - "දකුණට-ලක්ෂ ගත ද්විත්ව අනාත කළ උද්ධෘත ලකුණ" - "යටිකුරු කළ ප්‍රශ්ණාර්ථ ලකුණ" - "වම් ද්විත්ව උද්ධෘත ලකුණ" - "දකුණු තනි උද්ධෘත ලකුණ" - "තනි 9-අඩු උද්ධෘත ලකුණ" - "වම් ද්විත්ව උද්ධෘත ලකුණ" - "දකුණු ද්විත්ව උද්ධෘත ලකුණ" - "සිරිය" - "ද්විත්ව සිරිය" - "මිල්ලේ ලකුණ" - "මූලික" - "ද්විත්ව මූලික" - "තනි වමට-ලක්ෂ ගත අනාත කළ උද්ධෘත ලකුණ" - "තනිව දකුණට-ලක්ෂ ගත අනාත කළ උද්ධෘත ලකුණ" - "උඩු ලකුණු හතර" - "උඩු ලකුණු ලතින් කුඩා n අකුර" - "පෙසෝ ලකුණ" - "බාරේ" - "දකුණට ඇති ඊතලය" - "කළු ඊතලය" - "හිස් කුලකය" - "වැඩිවීම" - "කුඩා හෝ සමානයි" - "විශාලයි හෝ සමානයි" - "කළු තුරු" - diff --git a/app/src/main/res/values-si/strings-talkback-descriptions.xml b/app/src/main/res/values-si/strings-talkback-descriptions.xml index 42bb9586f6..87dc720470 100644 --- a/app/src/main/res/values-si/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-si/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "මුරපදයේ යතුරු හඬ හොඳින් ඇසීමට හෙඩ්සෙටය සම්බන්ධ කරන්න." - "වර්තමාන පෙළ %s ය" - "පෙළ ඇතුළු කර නැත" - "%1$s %2$s සිට %3$s වෙත නිවැරදි කරයි" - "%1$s ස්වයං-නිවැරදි කිරීම සිදු කරයි" - "යෝජනා නොමැත" - "නොදන්නා අකුර" - "ෂිෆ්ට්" - "තව සංකේත" - "ෂිෆ්ට්" - "සංකේත" - "ෂිෆ්ට්" - "මකන්න" - "සංකේත" - "අකුරු" - "අංක" - "සැකසීම්" - "ටැබය" - "ස්පේස්" - "හඬ ආදානය" - "ඉමොජි" - "ආපසු එවන්න" - "සොයන්න" - "තිත" - "භාෂාව මාරු කරන්න" - "මීළඟ" - "පෙර" - "ෂිෆ්ට් සබල කර ඇත" - "කැප්ස් ලොක් සබල කර ඇත" - "සංකේත ආකාරය" - "තව සංකේත ආකාර" - "අකුරු ආකාරය" - "දුරකථන ආකාරය" - "දුරකථන සංකේත ආකාරය" - "යතුරු පුවරුව සැඟවී ඇත" - "%s යතුරුපුවරුව පෙන්වමින්" - "දිනය" - "දිනය සහ වේලාව" - "ඊ-තැපෑල" - "පණිවිඩ යැවීම" - "අංකය" - "දුරකථනය" - "පෙළ" - "කාලය" - "URL" - "මෑත" - "පුද්ගලයින්" - "වස්තුව" - "සොබාදහම" - "ස්ථාන" - "සංකේත" - "ලකුණු කිරීම්" - "භාව සහ පුද්ගලයන්" - "සතුන් සහ ස්වභාව ධර්මය" - "ආහාරපාන" - "සංචාර සහ ස්ථාන" - "ක්‍රියාකාරකම" - "ඉමෝටිකොන්" - "ලොකු %s" - "ලොකු I" - "ලොකු I, ඉහළින් තිත" - "නොදන්නා සංකේතය" - "නොදන්නා ඉමොජි" - "කම්මැලි මුහුණ" - "අපහසුවට පත් කළ මුහුණ" - "අව් කණ්නාඩි පැළදි මුහුණ" - "පුදුමයට පත් වුණු මුහුණ" - "සිපගන්නා මුහුණ" - "රවන මුහුණ" - "විකල්ප අකුරු තිබේ" - "විකල්ප අකුරු අස් කරන ලදි" - "විකල්ප යෝජනා තිබේ" - "විකල්ප යෝජනා අස් කරන ලදි" + + + "මුරපදයේ යතුරු හඬ හොඳින් ඇසීමට හෙඩ්සෙටය සම්බන්ධ කරන්න." + "වර්තමාන පෙළ %s ය" + "පෙළ ඇතුළු කර නැත" + "%1$s %2$s සිට %3$s වෙත නිවැරදි කරයි" + "%1$s ස්වයං-නිවැරදි කිරීම සිදු කරයි" + "යෝජනා නොමැත" + "නොදන්නා අකුර" + "ෂිෆ්ට්" + "තව සංකේත" + "ෂිෆ්ට්" + "සංකේත" + "ෂිෆ්ට්" + "මකන්න" + "සංකේත" + "අකුරු" + "අංක" + "සැකසීම්" + "ටැබය" + "ස්පේස්" + "හඬ ආදානය" + "ඉමොජි" + "ආපසු එවන්න" + "සොයන්න" + "තිත" + "භාෂාව මාරු කරන්න" + "මීළඟ" + "පෙර" + "ෂිෆ්ට් සබල කර ඇත" + "කැප්ස් ලොක් සබල කර ඇත" + "සංකේත ආකාරය" + "තව සංකේත ආකාර" + "අකුරු ආකාරය" + "දුරකථන ආකාරය" + "දුරකථන සංකේත ආකාරය" + "යතුරු පුවරුව සැඟවී ඇත" + "%s යතුරුපුවරුව පෙන්වමින්" + "දිනය" + "දිනය සහ වේලාව" + "ඊ-තැපෑල" + "පණිවිඩ යැවීම" + "අංකය" + "දුරකථනය" + "පෙළ" + "කාලය" + "URL" + "මෑත" + "වස්තුව" + "සංකේත" + "ලකුණු කිරීම්" + "භාව සහ පුද්ගලයන්" + "සතුන් සහ ස්වභාව ධර්මය" + "ආහාරපාන" + "සංචාර සහ ස්ථාන" + "ක්‍රියාකාරකම" + "ඉමෝටිකොන්" + "ලොකු %s" + "ලොකු I" + "ලොකු I, ඉහළින් තිත" + "විකල්ප අකුරු තිබේ" + "විකල්ප අකුරු අස් කරන ලදි" + "විකල්ප යෝජනා තිබේ" + "විකල්ප යෝජනා අස් කරන ලදි" diff --git a/app/src/main/res/values-si/strings.xml b/app/src/main/res/values-si/strings.xml index 48f9ef9898..52d3897b9b 100644 --- a/app/src/main/res/values-si/strings.xml +++ b/app/src/main/res/values-si/strings.xml @@ -1,193 +1,107 @@ - - - - - "ආදාන විකල්ප" - "සබඳතා නම් විමසන්න" - "අක්ෂර වින්‍යාස පරික්ෂකය ඔබගේ සබඳතා ලැයිස්තුව වෙතින් ඇතුළත් කිරීම් භාවිතා කරයි" - "යතුර ඔබන විට කම්පනය" - "යතුරු එබිම මත හඬ" - "යතුරු එබීම මත උත්පතනය" - "අභිරුචි" - "ගිණුම් සහ රහස්‍යතාව" - "පෙනුම සහ පිරිසැලසුම්" - "ඉංගිත ටයිප් කිරීම" - "පෙළ නිවැරදි කිරීම" - "උසස්" - "තේමාව" - "බෙදු යතුරු පුවරුව සබල කරන්න" - "වෙනත් ආදාන ක්‍රම වෙත මාරුවන්න" - "භාෂා මාරු යතුර වෙනත් ආදාන ක්‍රමද ආවරණය කරයි" - "භාෂා මාරු යතුර" - "බහුවිධ ආදාන භාෂා සබල කර ඇති විට පෙන්වන්න" - "යතුරු උත්පතන ඉවත් කිරීමේ ප්‍රමාදය" - "ප්‍රමාද නැත" - "සුපුරුදු" - "%sms" - "පද්ධති සුපුරුදු" - "සබඳතා නම් යෝජනා කරන්න" - "යෝජනා සහ නිවැරදි කිරීම් සඳහා සබඳතා වෙතින් නම් භාවිතා කරන්න" - "පෞද්ගලීකරණය කළ යෝජනා" - "දියුණු %s" - "දෙවරක්-ඉඩ නැවතීමේ ලකුණ" - "ඉඩ යතුර මත දෙවරක් තට්ටු කිරීම හිස් තැනකට අනුගාමිව නැවතීමේ ලකුණක් ඇතුළත් කරයි." - "ස්වයං-ලොකු අකුරු කරණය" - "එක් එක් වාක්‍යයේ පළමු වචනය ලොකු අකුරු කරන්න" - "පුද්ගලික ශබ්ද කෝෂය" - "ඈඳුම් ශබ්දකෝෂ" - "ප්‍රධාන ශබ්ද කෝෂය" - "නිවැරදි කිරීම් යෝජනා පෙන්වන්න" - "ටයිප් කරන අතරතුර යෝජිත වචන දර්ශනය කරන්න" - "අප්‍රසන්න වචන අවහිර කරන්න" - "විභව්‍යව අප්‍රසන්න වචන යෝජනා නොකරන්න" - "ස්වයං-නිවැරදි කිරීම" - "ඉඩ යතුර සහ විරාම ලකුණ වැරදියට ටයිප් කළ වචන ස්වයංක්‍රියව නිවැරදි කරයි" - "අක්‍රියයි" - "මධ්‍යස්" - "ආක්‍රමණකාරී" - "ඉතා ආක්‍රමණකාරී" - "ඊළඟ-වචනයේ යෝජනා" - "යෝජනා කිරීමේදී පෙර වචනය භාවිතා කරන්න" - "ඉංගිතයෙන් ටයිප් කිරීම සබල කරන්න" - "අකුරු ඔස්සේ සර්පණය කිරීමෙන් වචනයක් ආදානය කරන්න" - "ඉංගිතයෙන් මඟ පෙන්වන්න" - "ගතිකව ඉපිලෙන පෙරදසුන" - "ඉංගිතය කරන අතරතුර යෝජිත වචන බලන්න" - "ජේද ඉංගිතය" - "ඉංගිතයන් අතරතුර space යතුර වෙත ලිස්සීම මඟින් ඉඩ ඇතුල් කරන්න" - "හඬ ආදාන යතුර" - "හඬ ආදාන ක්‍රම සබල කර නැත. භාෂාව සහ ආදාන සැකසීම් පරීක්ෂා කරන්න." - "ආදාන ක්‍රම වින්‍යාස කරන්න" - "භාෂා" - "උදවු සහ ප්‍රතිපෝෂණ" - "භාෂා" - "සුරැකීමට නැවත තට්ටු කරන්න" - "සුරැකීමට මෙහි තට්ටු කරන්න" - "ශබ්ද කෝෂය ලබාගත හැක" - "යතුරු පුවරු තේමාව" - "ගිණුම් මාරු කරන්න" - "ගිණුම් තෝරා නැත" - "%1$s දැනට භාවිතා කරමින්" - "හරි" - "අවලංගු කරන්න" - "වරනය වන්න" - "භාවිතා කිරීමට ගිණුමක් තෝරන්න" - "ඉංග්‍රීසි (UK)" - "ඉංග්‍රීසි (US)" - "ස්පාඤ්ඤ (US)" - "හින්ග්ලිෂ්" - "සර්බියානු (ලතින්)" - "ඉංග්‍රීසි (එ.රා) (%s)" - "ඉංග්‍රීසි (එ.ජ) (%s)" - "ස්පාඤ්ඤ (එ.ජ) (%s)" - "හින්ග්ලිෂ් (%s)" - "සර්බියානු (%s)" - "%s (සාම්ප්‍රදායික)" - "%s (සංයුක්ත)" - "භාෂාවක් නැත (අකාරාදිය)" - "අකාරාදිය (QWERTY)" - "අකාරාදිය (QWERTZ)" - "අකාරාදිය (AZERTY)" - "අකාරාදිය (Dvorak)" - "අකාරාදිය (Colemak)" - "අකාරාදිය (PC)" - "ඉමොජි" - "යතුරු පුවරු තේමාව" - "අභිරුචි ආදාන විලාස" - "විලාසය එක් කරන්න" - "එක් කරන්න" - "ඉවත් කරන්න" - "සුරකින්න" - "භාෂාව" - "පිරිසැලසුම" - "ඔබ එය භාවිතය ආරම්භ කිරීමට පෙර ඔබගේ අභිරුචි ආදාන විලාසය සබල කිරීමට අවශ්‍යය. ඔබට එය දැන් සබල කිරීමට අවශ්‍යද?" - "සබල කරන්න" - "දැන් නොවේ" - "සමාන ආදාන විලාසය දැනටමත් පවතී: %s" - "යතුරු එබිම් කම්පන කාලපරිච්ඡේදය" - "යතුරු එබීම් හඬ තීව්‍රතාවය" - "යතුරු දිගු එබීම් ප්‍රමාදය" - "භෞතික යතුරුපුවරුව සඳහා ඉමොජි" - "භෞතික Alt යතුර ඉමොජි පෙන්වයි" - "සුපුරුදු" - "%s වෙත සාදරයෙන් පිළිගනිමු" - "ඉංගිත ටයිප් කිරීම් සමග" - "අරඹන්න" - "ඊළඟ පියවර" - "%s සැකසෙමින් පවතී" - "%s සබල කරන්න" - "කරණාකර ඔබගේ භාෂාව සහ ආදාන සැකසීම් තුළ \"%s\" පරීක්ෂා කරන්න. මෙය ඔබගේ උපාංගය මත එයට ධාවනය වීමට අනුමැතිය දෙනු ඇත." - "%s දැනටමත් ඔබගේ භාෂාව සහ ආදාන සැකසීම් තුළ සබල කර ඇත, එම නිසා මෙම පියවර නිමයි. ඊළඟ එක වෙතට!" - "සැකසීම් තුළ සබල කරන්න" - "%s වෙත මාරුවන්න" - "ඊළඟට, ඔබගේ සක්‍රිය පෙළ-ආදාන ක්‍රමය ලෙස \"%s\" තෝරන්න." - "ආදාන ක්‍රම මාරු කරන්න" - "සුබපැතුම්, ඔබ සියල්ල පිහිටුවා ඇත!" - "දැන් ඔබට %s සමගින් ඔබගේ සියළුම ප්‍රියතම යෙදුම් වලින් ටයිප් කළ හැක." - "අතිරේක භාෂා වින්‍යාස කරන්න" - "අවසන්" - "යෙදුම් නිරූපකය පෙන්වන්න" - "දියත්කරනය තුළ යෙදුම් නිරූපකය දර්ශනය කරන්න" - "ශබ්දකෝෂ සැපයුම්කරු" - "ශබ්දකෝෂ සැපයුම්කරු" - "ශබ්ද කෝෂ සේවාව" - "ශබ්ද කෝෂ යාවත්කාලීන තොරතුරු" - "ඈඳුම් ශබ්ද කෝෂ" - "ශබ්ද කෝෂ සඳහා සැකසීම්" - "පරිශීලක ශබ්ද කෝෂ" - "පරිශීලක ශබ්ද කෝෂය" - "ශබ්දකෝෂය ලබාගත හැක" - "දැනට බාගැනේ" - "ස්ථාපිතයි" - "ස්ථාපනය කළ, අබල කළ" - "ශබ්දකෝෂ සේවාව වෙත සම්බන්ධ වීමට ගැටලුවක්ද" - "ශබ්ද කෝෂ ලබාගත නොහැක" - "නැවුම් කරන්න" - "අවසන් වරට යාවත්කාලීන කළේ" - "යාවත්කාලීන සඳහා පරික්ෂා කෙරේ" - "පූරණය වෙමින්..." - "ප්‍රධාන ශබ්ද කෝෂය" - "අවලංගු කරන්න" - "සැකසීම්" - "ස්ථාපනය" - "අවලංගු කරන්න" - "මකන්න" - "%1$s අනුවාදය" - "එක් කරන්න" - "ශබ්ද කෝෂය වෙත එක් කරන්න" - "වාක්‍ය ඛණ්ඩය" - "තවත් විකල්ප" - "අඩු විකල්ප" - "හරි" - "වචනය:" - "කෙටිමග:" - "භාෂාව:" - "වචනයක් ටයිප් කරන්න" - "විකල්පමය කෙටිමග" - "වචනය සංස්කරණය කරන්න" - "සංස්කරණය" - "මකන්න" - "ඔබට පරිශීලක ශබ්ද කෝෂය තුළ වචන කිසිවක් නැත. වචනයක් එක් කිරීමට, එක් කිරීමේ (+) බොත්තම තට්ටු කරන්න." - "සියලු භාෂාවන් සඳහා" - "තවත් භාෂා…" - "මකන්න" - " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + + "සබඳතා නම් විමසන්න" + "යතුර ඔබන විට කම්පනය" + "යතුරු එබිම මත හඬ" + "යතුරු එබීම මත උත්පතනය" + "අභිරුචි" + "ඉංගිත ටයිප් කිරීම" + "පෙළ නිවැරදි කිරීම" + "උසස්" + "තේමාව" + "බෙදු යතුරු පුවරුව සබල කරන්න" + "වෙනත් ආදාන ක්‍රම වෙත මාරුවන්න" + "භාෂා මාරු යතුර" + "%sms" + "පද්ධති සුපුරුදු" + "යෝජනා සහ නිවැරදි කිරීම් සඳහා සබඳතා වෙතින් නම් භාවිතා කරන්න" + "පෞද්ගලීකරණය කළ යෝජනා" + "දෙවරක්-ඉඩ නැවතීමේ ලකුණ" + "ඉඩ යතුර මත දෙවරක් තට්ටු කිරීම හිස් තැනකට අනුගාමිව නැවතීමේ ලකුණක් ඇතුළත් කරයි." + "ස්වයං-ලොකු අකුරු කරණය" + "එක් එක් වාක්‍යයේ පළමු වචනය ලොකු අකුරු කරන්න" + "පුද්ගලික ශබ්ද කෝෂය" + "ප්‍රධාන ශබ්ද කෝෂය" + "නිවැරදි කිරීම් යෝජනා පෙන්වන්න" + "ටයිප් කරන අතරතුර යෝජිත වචන දර්ශනය කරන්න" + "අප්‍රසන්න වචන අවහිර කරන්න" + "විභව්‍යව අප්‍රසන්න වචන යෝජනා නොකරන්න" + "ස්වයං-නිවැරදි කිරීම" + "ඉඩ යතුර සහ විරාම ලකුණ වැරදියට ටයිප් කළ වචන ස්වයංක්‍රියව නිවැරදි කරයි" + "අක්‍රියයි" + "මධ්‍යස්" + "ආක්‍රමණකාරී" + "ඉතා ආක්‍රමණකාරී" + "ඊළඟ-වචනයේ යෝජනා" + "යෝජනා කිරීමේදී පෙර වචනය භාවිතා කරන්න" + "ඉංගිතයෙන් ටයිප් කිරීම සබල කරන්න" + "අකුරු ඔස්සේ සර්පණය කිරීමෙන් වචනයක් ආදානය කරන්න" + "ඉංගිතයෙන් මඟ පෙන්වන්න" + "ගතිකව ඉපිලෙන පෙරදසුන" + "ජේද ඉංගිතය" + "ඉංගිතයන් අතරතුර space යතුර වෙත ලිස්සීම මඟින් ඉඩ ඇතුල් කරන්න" + "ඉංග්‍රීසි (UK)" + "ඉංග්‍රීසි (US)" + "ස්පාඤ්ඤ (US)" + "හින්ග්ලිෂ්" + "සර්බියානු (ලතින්)" + "%s (සාම්ප්‍රදායික)" + "%s (සංයුක්ත)" + "භාෂාවක් නැත" + "ඉමොජි" + "එක් කරන්න" + "ඉවත් කරන්න" + "සුරකින්න" + "භාෂාව" + "පිරිසැලසුම" + "යතුරු එබිම් කම්පන කාලපරිච්ඡේදය" + "යතුරු එබීම් හඬ තීව්‍රතාවය" + "යතුරු දිගු එබීම් ප්‍රමාදය" + "භෞතික යතුරුපුවරුව සඳහා ඉමොජි" + "භෞතික Alt යතුර ඉමොජි පෙන්වයි" + "සුපුරුදු" + %s වෙත සාදරයෙන් පිළිගනිමු\" + "ඉංගිත ටයිප් කිරීම් සමග" + "අරඹන්න" + %s සැකසෙමින් පවතී\" + %s සබල කරන්න\" + "කරණාකර ඔබගේ භාෂාව සහ ආදාන සැකසීම් තුළ \"%s\" පරීක්ෂා කරන්න. මෙය ඔබගේ උපාංගය මත එයට ධාවනය වීමට අනුමැතිය දෙනු ඇත." + "සැකසීම් තුළ සබල කරන්න" + %s වෙත මාරුවන්න\" + "ඊළඟට, ඔබගේ සක්‍රිය පෙළ-ආදාන ක්‍රමය ලෙස \"%s\" තෝරන්න." + "ආදාන ක්‍රම මාරු කරන්න" + "සුබපැතුම්, ඔබ සියල්ල පිහිටුවා ඇත!" + "දැන් ඔබට %s සමගින් ඔබගේ සියළුම ප්‍රියතම යෙදුම් වලින් ටයිප් කළ හැක." + "අවසන්" + "යෙදුම් නිරූපකය පෙන්වන්න" + "දියත්කරනය තුළ යෙදුම් නිරූපකය දර්ශනය කරන්න" + "ඈඳුම් ශබ්ද කෝෂ" + "ශබ්දකෝෂය ලබාගත හැක" + "සැකසීම්" + "මකන්න" + "%1$s අනුවාදය" + "කෙටිමග:" + "භාෂාව:" + "වචනයක් ටයිප් කරන්න" + "විකල්පමය කෙටිමග" + "වචනය සංස්කරණය කරන්න" + "සියලු භාෂාවන් සඳහා" + "තවත් භාෂා…" + "ආදාන ක්‍රමයක් තෝරන්න" + "පෙනුම" + "අස් කරන්න" + "යළි කරන්න" + "යෝජනා දියුණුවට, ඔබගේ සන්නිවේදන සහ ටයිප් කළ දත්තවලින් ඉගෙන ගන්න" + "යන්න" + "මීළඟ" + "පෙර" + "හරි" + "යවන්න" + "සොයන්න" + "විරාමය" + "රැඳීම" diff --git a/app/src/main/res/values-sk/bools.xml b/app/src/main/res/values-sk/bools.xml index 840d20c218..8693f6e1ec 100644 --- a/app/src/main/res/values-sk/bools.xml +++ b/app/src/main/res/values-sk/bools.xml @@ -1,21 +1,7 @@ - - - "Ísť" - "Ďalej" - "Pred." - "OK" - "Posl." - "Hľadať" - "Pauza" - "Čakať" - diff --git a/app/src/main/res/values-sk/strings-config-important-notice.xml b/app/src/main/res/values-sk/strings-config-important-notice.xml deleted file mode 100644 index 9b15ac992b..0000000000 --- a/app/src/main/res/values-sk/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "Zlepšovať návrhy na základe komunikácie a zadaných údajov" - diff --git a/app/src/main/res/values-sk/strings-emoji-descriptions.xml b/app/src/main/res/values-sk/strings-emoji-descriptions.xml deleted file mode 100644 index f703687fcb..0000000000 --- a/app/src/main/res/values-sk/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "Znak copyright" - "Znak registrovanej ochrannej známky" - "Dvojitý výkričník" - "Výkričník s otáznikom" - "Znak ochrannej známky" - "Zdroj informácií" - "Dvojsmerná šípka doľava a doprava" - "Dvojsmerná šípka nahor a nadol" - "Šípka na severozápad" - "Šípka na severovýchod" - "Šípka na juhovýchod" - "Šípka na juhozápad" - "Šípka doľava s hákom" - "Šípka doprava s hákom" - "Náramkové hodinky" - "Presýpacie hodiny" - - - - - "Čierny dvojitý trojuholník smerujúci doprava" - "Čierny dvojitý trojuholník smerujúci doľava" - "Čierny dvojitý trojuholník smerujúci nahor" - "Čierny dvojitý trojuholník smerujúci nadol" - - - - - - - "Budík" - - - - - "Presýpacie hodiny s pieskom" - - - - - - - "Zakrúžkované veľké písmeno M v latinke" - "Malý čierny štvorec" - "Malý biely štvorec" - "Čierny trojuholník smerujúci doprava" - "Čierny trojuholník smerujúci doľava" - "Stredný biely štvorec" - "Stredný čierny štvorec" - "Biely stredne malý štvorec" - "Čierny stredne malý štvorec" - "Čierne slnko s lúčmi" - "Oblak" - - - - - - - "Čierny telefón" - "Začiarknuté políčko" - "Dáždnik s dažďovými kvapkami" - "Horúci nápoj" - - - "Biely ukazovák ukazujúci smerom nahor" - - - - - - - - - - - - - - - - - - - "Biela usmievajúca sa tvár" - "Baran" - "Býk" - "Blíženci" - "Rak" - "Lev" - "Panna" - "Váhy" - "Škorpión" - "Strelec" - "Kozorožec" - "Vodnár" - "Ryby" - "Čierna pika" - "Čierny kríž" - "Čierne srdce" - "Čierny kosoštvorec" - "Horúce pramene" - "Čierny univerzálny symbol recyklácie" - "Symbol invalidného vozíka" - - - "Kotva" - - - - - - - - - - - - - "Výstražná značka" - "Značka vysokého napätia" - "Stredný biely kruh" - "Stredný čierny kruh" - - - - - "Futbalová lopta" - "Bejzbalová loptička" - "Snehuliak bez snehu" - "Slnko za oblakom" - - - "Hadonos" - - - - - - - "Zákaz vstupu" - - - "Kostol" - - - - - "Fontána" - "Vlajka v jamke" - - - "Plachetnica" - - - - - - - "Stan" - "Čerpacia stanica" - "Čierne nožnice" - "Biely tučný znak začiarknutia" - "Lietadlo" - "Obálka" - "Zdvihnutá päsť" - "Zdvihnutá ruka" - "Ruka s víťazným gestom" - - - "Ceruzka" - "Čierny hrot pera" - "Tučný znak začiarknutia" - "Tučný znak násobenia x" - - - - - "Iskry" - "Hviezdička s ôsmymi ramenami" - "Čierna hviezda s ôsmymi cípmi" - "Snehová vločka" - "Iskra" - "Krížik" - "Negatív krížika v štvorci" - "Ozdoba s čiernym otáznikom" - "Ozdoba s bielym otáznikom" - "Ozdoba s bielym výkričníkom" - "Symbol tučného výkričníka" - - - "Čierne srdce" - "Tučné znamienko plus" - "Tučné znamienko mínus" - "Tučné znamienko delenia" - "Čierna šípka doprava" - "Vlnitá slučka" - "Dvojitá vlnitá slučka" - "Šípka doprava s následným zatočením nahor" - "Šípka doprava s následným zatočením nadol" - "Čierna šípka doľava" - "Čierna šípka nahor" - "Čierna šípka nadol" - "Veľký čierny štvorec" - "Veľký biely štvorec" - "Biela stredná hviezda" - "Tučný veľký kruh" - "Vlnovka" - "Znak zmeny časti" - "Zakrúžkovaný ideogram gratulácie" - "Zakrúžkovaný ideogram tajomstva" - "Kameň hry Mahjong – červený drak" - "Hracia karta – čierny žolík" - "Krvná skupina A" - "Krvná skupina B" - "Krvná skupina 0" - "Parkovisko" - "Krvná skupina AB" - "Štvorcový znak CL (vymazať)" - "Štvorcový znak Cool (super)" - "Štvorcový znak Free (zadarmo)" - "Štvorcový znak ID" - "Štvorcový znak New (nové)" - "Štvorcový znak N G (nejde to)" - "Štvorcový znak OK" - "Štvorcový znak SOS" - "Štvorcový znak UP (hore) s výkričníkom" - "Štvorcový znak VS (verzus)" - "Štvorcový znak katakany – tu" - "Štvorcový znak katakany – služba" - "Štvorcový ideogram – bez poplatku" - "Štvorcový ideogram – rezervované miesto" - "Štvorcový ideogram – zákaz" - "Štvorcový ideogram – voľná izba" - "Štvorcový ideogram – akceptovanie" - "Štvorcový ideogram – úplne obsadené" - "Štvorcový ideogram – zaplatené" - "Štvorcový ideogram – mesačné" - "Štvorcový ideogram – žiadosť" - "Štvorcový ideogram – zľava" - "Štvorcový ideogram – v prevádzke" - "Kruhový ideogram – výhoda" - "Kruhový ideogram – prijať" - "Cyklón" - "Hmla" - "Zložený dáždnik" - "Noc s hviezdami" - "Východ slnka nad horami" - "Východ slnka" - "Panoráma mesta pri stmievaní" - "Západ slnka nad budovami" - "Dúha" - "Most v noci" - "Vodná vlna" - "Sopka" - "Mliečna dráha" - "Zemeguľa – Európa a Afrika" - "Zemeguľa – Amerika" - "Zemeguľa – Ázia a Austrália" - "Zemeguľa s poludníkmi" - "Symbol novy mesiaca" - "Symbol dorastajúceho kosáčika mesiaca" - "Symbol prvej štvrte mesiaca" - "Symbol druhej štvrte mesiaca" - "Symbol splnu mesiaca" - "Symbol tretej štvrte mesiaca" - "Symbol poslednej štvrte mesiaca" - "Symbol ubúdajúceho kosáčika mesiaca" - "Dorastajúci mesiac" - "Nov mesiaca s tvárou" - "Prvá štvrť mesiaca s tvárou" - "Posledná štvrť mesiaca s tvárou" - "Spln s tvárou" - "Slnko s tvárou" - "Žiarivá hviezda" - "Padajúca hviezda" - - - - - - - - - - - - - - - - - - - - - - - - - - - "Gaštan" - "Sadenica" - "Ihličnatý strom" - "Strom s každoročným opadávaním lístia" - "Palma" - "Kaktus" - - - "Tulipán" - "Čerešňový kvet" - "Ruža" - "Ibištek" - "Slnečnica" - "Kvet" - "Kukuričný klas" - "Ryžový klas" - "Bylinka" - "Štvorlístok" - "Javorový list" - "Spadnutý list" - "Padajúci list vo vetre" - "Hríb" - "Paradajka" - "Baklažán" - "Hrozno" - "Dyňa" - "Červený melón" - "Mandarínka" - "Citrón" - "Banán" - "Ananás" - "Červené jablko" - "Zelené jablko" - "Hruška" - "Broskyňa" - "Čerešne" - "Jahoda" - "Hamburger" - "Kúsok pizzy" - "Mäso na kosti" - "Hydinové stehno" - "Ryžový kreker" - "Ryžová guľka" - "Varená ryža" - "Kari a ryža" - "Rezancová polievka" - "Špagety" - "Chlieb" - "Hranolčeky" - "Pečený sladký zemiak" - "Dango" - "Oden" - "Sushi" - "Pražená kreveta" - "Vírový rybací koláč" - "Točená zmrzlina" - "Havajská zmrzlina" - "Zmrzlina" - "Šiška" - "Keks" - "Čokoládová tyčinka" - "Cukrík" - "Lízatko" - "Vaječný krém" - "Nádoba s medom" - "Koláč s čerstvým ovocím" - "Obedový balík Bentó" - "Nádoba s jedlom" - "Varenie" - "Vidlička a nôž" - "Čajový hrnček bez uška" - "Šálka a fľaša so Saké" - "Vínový pohár" - "Koktejlový pohár" - "Tropický nápoj" - "Pivový pohár" - "Štrngajúce pivové poháre" - "Detská fľaša" - - - - - - - "Stuha" - "Zabalený darček" - "Narodeninová torta" - "Tekvicový lampáš so sviečkou" - "Vianočný stromček" - "Dedo Mráz" - "Ohňostroj" - "Prskavka" - "Balón" - "Konfety" - "Guľa s konfetami" - "Strom Tanabata" - "Prekrížené vlajky" - "Okrasa z čečiny" - "Japonské bábiky" - "Japonské šarkany" - "Veterný gong" - "Ceremónia sledovania splnu" - "Školská aktovka" - "Promočný klobúk" - - - - - - - - - - - - - - - "Kolotočový koník" - "Ruské koleso" - "Horská dráha" - "Udica a ryba" - "Mikrofón" - "Filmová kamera" - "Kino" - "Slúchadlá" - "Maliarska paleta" - "Cylinder" - "Cirkusový stan" - "Lístok" - "Klapka" - "Múzické umenie" - "Videohra" - "Priamy zásah" - "Herný automat" - "Biliard" - "Hracia kocka" - "Bowling" - "Hracie karty s kvetmi" - "Hudobná nota" - "Hudobné noty" - "Saxofón" - "Gitara" - "Hudobné klávesy" - "Trúbka" - "Husle" - "Hudobný zápis" - "Bežecké tričko so šerpou" - "Tenisová raketa a loptička" - "Lyža s lyžiarkou" - "Basketbalová lopta a kôš" - "Cieľová vlajka" - "Snoubordista" - "Bežec" - "Surfista" - - - "Víťazný pohár" - "Konské dostihy" - "Americký futbal" - "Ragby" - "Plavec" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Stavanie domov" - "Dom so záhradou" - "Administratívna budova" - "Japonská pošta" - "Európska pošta" - "Nemocnica" - "Banka" - "Bankomat" - "Hotel" - "Hotel lásky" - "Obchod so zmiešaným tovarom" - "Škola" - "Obchodný dom" - "Továreň" - "Lampáš Izakaya" - "Japonský hrad" - "Európsky hrad" - - - - - - - - - - - - - - - - - - - - - - - - - "Potkan" - "Myš" - "Vôl" - "Byvol vodný" - "Krava" - - - "Leopard" - "Králik" - "Mačka" - "Drak" - "Krokodíl" - "Veľryba" - "Slimák" - "Had" - "Kôň" - "Cap" - "Koza" - "Ovca" - "Opica" - "Kohút" - "Kurča" - "Pes" - "Prasa" - "Diviak" - "Slon" - "Chobotnica" - "Špirálová ulita" - "Chrobák" - "Mravec" - "Včela medonosná" - "Lienka" - "Ryba" - "Tropická ryba" - "Štvorzubec" - "Korytnačka" - "Liahnuce sa kuriatko" - "Kuriatko" - "Kuriatko z prednej strany" - "Vták" - "Tučniak" - "Koala" - "Pudlík" - "Dromedár" - "Ťava dvojhrbá" - "Delfín" - "Tvár myši" - "Tvár kravy" - "Tvár tigra" - "Tvár králika" - "Tvár mačky" - "Tvár draka" - "Striekajúca veľryba" - "Tvár koňa" - "Tvár opice" - "Tvár psa" - "Tvár prasaťa" - "Tvár žaby" - "Tvár škrečka" - "Tvár vlka" - "Tvár medveďa" - "Tvár pandy" - "Nos prasaťa" - "Stopy prasaťa" - - - "Oči" - - - "Ucho" - "Nos" - "Ústa" - "Jazyk" - "Nahor ukazujúci biely ukazovák z pohľadu zadnej strany ruky" - "Nadol ukazujúci biely ukazovák z pohľadu zadnej strany ruky" - "Doľava ukazujúci biely ukazovák z pohľadu zadnej strany ruky" - "Doprava ukazujúci biely ukazovák z pohľadu zadnej strany ruky" - "Znak zovretej päste" - "Znak mávajúcej ruky" - "Znak gesta OK" - "Znak gesta palec hore" - "Znak gesta palec dole" - "Znak tlieskajúcich rúk" - "Znak otvorených rúk" - "Koruna" - "Dámsky klobúk" - "Okuliare" - "Kravata" - "Tričko" - "Rifle" - "Šaty" - "Kimono" - "Bikini" - "Dámske oblečenie" - "Dámska peňaženka" - "Kabelka" - "Kapsička" - "Pánska topánka" - "Atletická topánka" - "Topánka na vysokom podpätku" - "Dámsky sandál" - "Dámske čižmy" - "Stopy" - "Silueta busty" - "Siluety búst" - "Chlapec" - "Dievča" - "Muž" - "Žena" - "Rodina" - "Muž a žena držiaci sa za ruky" - "Dvaja muži držiaci sa za ruky" - "Dve ženy držiace sa za ruky" - "Policajt" - "Žena so zajačími ušami" - "Nevesta so závojom" - "Osoba s blond vlasmi" - "Muž s pokrývkou hlavy Gua pi mao" - "Muž s turbanom" - "Starší muž" - "Staršia žena" - "Bábätko" - "Stavbár" - "Princezná" - "Japonský obor" - "Japonský škriatok" - "Duch" - "Anjelik" - "Mimozemšťan" - "Mimozemská príšera" - "Čertík" - "Lebka" - "Informátor" - "Strážnik" - "Tanečník" - "Rúž" - "Lak na nechty" - "Masáž tváre" - "Účes" - "Značka holičstva" - "Striekačka" - "Pilulka" - "Odtlačok bozku" - "Ľúbostný list" - "Prsteň" - "Drahokam" - "Bozk" - "Kytica" - "Pár so srdcom" - "Svadba" - "Bijúce srdce" - "Zlomené srdce" - "Dve srdcia" - "Trblietajúce sa srdce" - "Rastúce srdce" - "Srdce so šípom" - "Modré srdce" - "Zelené srdce" - "Žlté srdce" - "Fialové srdce" - "Srdce so stuhou" - "Otáčajúce sa srdcia" - "Ozdoba so srdcom" - "Diamantový tvar s bodkou uprostred" - "Elektrická žiarovka" - "Symbol hnevu" - "Bomba" - "Symbol spánku" - "Symbol kolízie" - "Kvapky potu" - "Kvapka" - "Symbol rýchleho behu" - "Kôpka stolice" - "Flektovaný biceps" - "Symbol závratu" - "Bublina s rečou" - "Bublina s myšlienkou" - "Biely kvet" - "Symbol 100 bodov" - "Vrece s peniazmi" - "Prevod mien" - "Zvýraznený znak dolára" - "Kreditná karta" - "Bankovka so znakom jenu" - "Dolárová bankovka" - "Bankovka so znakom eura" - "Bankovka so znakom britskej libry" - "Peniaze s krídlami" - "Graf so vzostupujúcim trendom a znakom jenu" - "Sedadlo" - "Osobný počítač" - "Kufrík" - "Minidisk" - "Disketa" - "Optický disk" - "DVD" - "Priečinok so súbormi" - "Otvorený priečinok so súbormi" - "Strana so skrúteným okrajom" - "Strana otočená nahor" - "Kalendár" - "Trhací kalendár" - "Otočný vizitkár" - "Graf so vzostupujúcim trendom" - "Graf so zostupujúcim trendom" - "Pruhový graf" - "Podložka na písanie s klipom" - "Pripináčik" - "Guľatý pripináčik" - "Papierová sponka" - "Rovné pravítko" - "Trojuholníkové pravítko" - "Záložkové karty" - "Účtovná kniha" - "Zápisník" - "Zápisník s okrasným obalom" - "Zavretá kniha" - "Otvorená kniha" - "Zelená kniha" - "Modrá kniha" - "Oranžová kniha" - "Knihy" - "Menovka" - "Zvitok" - "Oznam" - "Telefónne slúchadlo" - "Pager" - "Fax" - "Satelitná anténa" - "Reproduktor verejného rozhlasu" - "Megafón na povzbudzovanie" - "Priehradka na odchádzajúcu poštu" - "Priehradka na doručenú poštu" - "Balík" - "Symbol e-mailu" - "Prichádzajúca obálka" - "Obálka so šípkou smerujúcou nadol umiestnenou nad obálkou" - "Zavretá poštová schránka so spustenou vlajkou" - "Zavretá poštová schránka so zdvihnutou vlajkou" - "Otvorená poštová schránka so zdvihnutou vlajkou" - "Otvorená poštová schránka so spustenou vlajkou" - "Poštová schránka" - "Poštový lesný roh" - "Noviny" - "Mobilný telefón" - "Mobilný telefón so šípkou smerujúcou doprava umiestnenou vľavo od telefónu" - "Režim vibrovania" - "Vypnutý mobilný telefón" - "Zákaz mobilných telefónov" - "Anténa s indikátorom sily signálu" - "Fotoaparát" - - - "Videokamera" - "Televízor" - "Rádio" - "Videokazeta" - - - - - "Pokrivené šípky doprava" - "Doprava a doľava smerujúce šípky v otvorenom kruhu v smere hodinových ručičiek" - "Doprava a doľava smerujúce šípky v otvorenom kruhu s prekrytím zakrúžkovanej jednotky" - "Nadol a nahor smerujúce šípky v otvorenom kruhu v smere hodinových ručičiek" - "Nadol a nahor smerujúce šípky v otvorenom kruhu proti smeru hodinových ručičiek" - "Symbol nízkeho jasu" - "Symbol vysokého jasu" - "Preškrtnutý symbol reproduktora" - "Reproduktor" - "Reproduktor s jednou zvukovou vlnou" - "Reproduktor s troma zvukovými vlnami" - "Batéria" - "Elektrická zásuvka" - "Lupa naklonená doľava" - "Lupa naklonená doprava" - "Zámka s atramentovým perom" - "Zavretá zámka s kľúčom" - "Kľúč" - "Zámka" - "Otvorená zámka" - "Zvonček" - "Preškrtnutý symbol zvončeka" - "Záložka" - "Symbol odkazu" - "Prepínač" - "Nápis Back so šípkou doľava umiestnenou nad nápisom" - "Nápis End so šípkou doľava umiestnenou nad nápisom" - "Nápis On s výkričníkom s obojsmernou šípkou umiestnenou nad nápisom" - "Nápis Soon so šípkou doprava umiestnenou nad nápisom" - "Nápis Top so šípkou nahor umiestnenou nad nápisom" - "Symbol zákazu osobám mladším ako 18 rokov" - "Kláves s číslom 10" - "Symbol vstupu pre veľké písmená v latinke" - "Symbol vstupu pre malé písmená v latinke" - "Symbol vstupu pre čísla" - "Symbol vstupu pre symboly" - "Symbol vstupu pre písmená v latinke" - "Oheň" - "Elektrický lampáš" - "Kľúč" - "Kladivo" - "Skrutka s maticou" - "Japonský nôž" - "Pištoľ" - "Mikroskop" - "Teleskop" - "Krištáľová guľa" - "Šesťcípa hviezda s bodkou uprostred" - "Japonský symbol pre začiatočníka" - "Emblém s trojzubcom" - "Čierne štvorcové tlačidlo" - "Biele štvorcové tlačidlo" - "Veľký červený kruh" - "Veľký modrý kruh" - "Veľký oranžový diamant" - "Veľký modrý diamant" - "Malý oranžový diamant" - "Malý modrý diamant" - "Červený trojuholník smerujúci nahor" - "Červený trojuholník smerujúci nadol" - "Malý červený trojuholník smerujúci nahor" - "Malý červený trojuholník smerujúci nadol" - - - - - - - - - - - - - "Hodiny ukazujúce jednu hodinu" - "Hodiny ukazujúce dve hodiny" - "Hodiny ukazujúce tri hodiny" - "Hodiny ukazujúce štyri hodiny" - "Hodiny ukazujúce päť hodín" - "Hodiny ukazujúce šesť hodín" - "Hodiny ukazujúce sedem hodín" - "Hodiny ukazujúce osem hodín" - "Hodiny ukazujúce deväť hodín" - "Hodiny ukazujúce desať hodín" - "Hodiny ukazujúce jedenásť hodín" - "Hodiny ukazujúce dvanásť hodín" - "Hodiny ukazujúce pol druhej" - "Hodiny ukazujúce pol tretej" - "Hodiny ukazujúce pol štvrtej" - "Hodiny ukazujúce pol piatej" - "Hodiny ukazujúce pol šiestej" - "Hodiny ukazujúce pol siedmej" - "Hodiny ukazujúce pol ôsmej" - "Hodiny ukazujúce pol deviatej" - "Hodiny ukazujúce pol desiatej" - "Hodiny ukazujúce pol jedenástej" - "Hodiny ukazujúce pol dvanástej" - "Hodiny ukazujúce pol jednej" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Hora Fudži" - "Tokijská veža" - "Socha slobody" - "Silueta Japonska" - "Moyai" - "Tvár s úškrnom" - "Tvár s úškľabom a smejúcimi sa očami" - "Tvár so slzami šťastia" - "Usmievajúca sa tvár s otvorenými ústami" - "Usmievajúca sa tvár s otvorenými ústami a usmiatymi očami" - "Usmievajúca sa tvár s otvorenými ústami a studeným potom" - "Usmievajúca sa tvár s otvorenými ústami a pevne zavretými očami" - "Usmievajúca sa tvár so svätožiarou" - "Usmievajúca sa tvár s rohmi" - "Žmurkajúca tvár" - "Usmievajúca sa tvár s usmiatymi očami" - "Tvár pochutnávajúca si na lahodnom jedle" - "Uvoľnená tvár" - "Usmievajúca sa tvár so srdiečkovými očami" - "Usmievajúca sa tvár so slnečnými okuliarmi" - "Škeriaca sa tvár" - "Neutrálna tvár" - "Tvár bez výrazu" - "Nudná tvár" - "Tvár so studeným potom" - "Zamyslená tvár" - "Zmätená tvár" - "Čertovská tvár" - "Bozkávajúca sa tvár" - "Tvár posielajúca bozk" - "Bozkávajúca tvár s usmiatymi očami" - "Bozkávajúca tvár so zavretými očami" - "Tvár s vyplazeným jazykom" - "Tvár s vyplazeným jazykom a prižmúreným okom" - "Tvár s vyplazeným jazykom a pevne zavretými očami" - "Sklamaná tvár" - "Znepokojená tvár" - "Nahnevaná tvár" - "Tvár s našpúleným výrazom" - "Plačúca tvár" - "Urputná tvár" - "Tvár z výrazom víťazstva" - "Sklamaná, ale uvoľnená tvár" - "Zamračená tvár s otvorenými ústami" - "Úzkostná tvár" - "Ustrašená tvár" - "Ustatá tvár" - "Ospalá tvár" - "Unavená tvár" - "Tvár s grimasou" - "Jačiaca tvár" - "Tvár s otvorenými ústami" - "Utíšená tvár" - "Tvár s otvorenými ústami a studeným potom" - "Tvár jačiaca od strachu" - "Udivená tvár" - "Začervenaná tvár" - "Spiaca tvár" - "Tvár so závratom" - "Tvár bez úst" - "Tvár s lekárskou maskou" - "Tvár mačky s úškľabom a smejúcimi sa očami" - "Tvár mačky so slzami šťastia" - "Usmievajúca sa tvár mačky s otvorenými ústami" - "Usmievajúca sa tvár mačky so srdiečkovými očami" - "Tvár mačky s krivým úsmevom" - "Bozkávajúca tvár mačky so zavretými očami" - "Tvár mačky s našpúleným výrazom" - "Plačúca tvár mačky" - "Ustatá tvár mačky" - - - - - - - - - "Tvár s gestom Nie" - "Tvár s gestom OK" - "Hlboko sa klaňajúca osoba" - "Opica zakrývajúca si oči pred zlom" - "Opica zakrývajúca si uši pred zlom" - "Opica zakrývajúca si oči pred zlom" - "Šťastná osoba zdvíhajúca jednu ruku" - "Oslavujúca osoba so zdvihnutými rukami" - "Zamračená osoba" - "Osoba s našpúleným výrazom" - "Osoba so zloženými rukami" - "Raketa" - "Helikoptéra" - "Parná lokomotíva" - "Železničný vozeň" - "Vysokorýchlostný vlak" - "Vysokorýchlostný vlak s prednou časťou v tvare projektilu" - "Vlak" - "Metro" - "Ľahká železnica" - "Stanica" - "Električka" - "Vozeň električky" - "Autobus" - "Prichádzajúci autobus" - "Trolejbus" - "Autobusová zastávka" - "Minibus" - "Sanitka" - "Hasičské auto" - "Policajné auto" - "Prichádzajúce policajné auto" - "Taxík" - "Prichádzajúci taxík" - "Automobil" - "Prichádzajúci automobil" - "Rekreačné vozidlo" - "Prepravné nákladné auto" - "Nákladné auto s prívesom" - "Traktor" - "Jednokoľajová železnica" - "Horská železnica" - "Závesná železnica" - "Horská lanovka" - "Kabínková lanovka" - "Loď" - "Veslica" - "Pretekársky čln" - "Vodorovný semafor" - "Zvislý semafor" - "Značka stavby" - "Maják policajného auta" - "Trojuholníková vlajka na tyči" - "Dvere" - "Značka zákazu vstupu" - "Symbol fajčenia" - "Symbol zákazu fajčenia" - "Symbol zahadzovania odpadkov do koša" - "Symbol zákazu vyhadzovania odpadkov" - "Symbol pitnej vody" - "Symbol nepitnej vody" - "Bicykel" - "Zákaz bicyklov" - "Cyklista" - "Horský cyklista" - "Chodec" - "Zákaz chodcov" - "Prechod pre deti" - "Symbol muža" - "Symbol ženy" - "Záchody" - "Symbol bábätka" - "Záchod" - "WC" - "Sprcha" - "Kúpeľ" - "Vaňa" - "Pasová kontrola" - "Clo" - "Výdaj batožiny" - "Úschova batožiny" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-sk/strings-letter-descriptions.xml b/app/src/main/res/values-sk/strings-letter-descriptions.xml deleted file mode 100644 index e6bba4a8a4..0000000000 --- a/app/src/main/res/values-sk/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "Indikátor radovej číslovky ženského rodu" - "Znak mikro" - "Indikátor radovej číslovky mužského rodu" - "Ostré S" - "A s opačným dĺžňom" - "A s dĺžňom" - "A s vokáňom" - "A s vlnovkou" - "A s dvoma bodkami" - "A s krúžkom" - "Ligatúra písmen A, E" - "C s háčikom pod písmenom" - "E s opačným dĺžňom" - "E s dĺžňom" - "E s vokáňom" - "E s dvoma bodkami" - "I s opačným dĺžňom" - "I s dĺžňom" - "I s vokáňom" - "I s dvoma bodkami" - "Eth" - "N s vlnovkou" - "O s opačným dĺžňom" - "O s dĺžňom" - "O s vokáňom" - "O s vlnovkou" - "O s dvoma bodkami" - "Prečiarknuté O" - "U s opačným dĺžňom" - "U s dĺžňom" - "U s vokáňom" - "U s dvoma bodkami" - "Y s dĺžňom" - "Thorn" - "Y s dvoma bodkami" - "A s vodorovnou čiarkou" - "A s oblúčikom" - "A s nožičkou" - "C s dĺžňom" - "C s vokáňom" - "C s bodkou nad písmenom" - "C s mäkčeňom" - "D s mäkčeňom" - "Prečiarknuté D" - "E s vodorovnou čiarkou" - "E s oblúčikom" - "E s bodkou nad písmenom" - "E s nožičkou" - "E s mäkčeňom" - "G s vokáňom" - "G s oblúčikom" - "G s bodkou nad písmenom" - "G s háčikom pod písmenom" - "H s vokáňom" - "Prečiarknuté H" - "I s vlnovkou" - "I s vodorovnou čiarkou" - "I s oblúčikom" - "I s nožičkou" - "I bez bodky" - "Ligatúra písmen I, J" - "J s vokáňom" - "K s háčikom pod písmenom" - "Kra" - "L s dĺžňom" - "L s háčikom pod písmenom" - "L s mäkčeňom" - "L s bodkou uprostred" - "Prečiarknuté L" - "N s dĺžňom" - "N s háčikom pod písmenom" - "N s mäkčeňom" - "N s apostrofom na začiatku" - "Eng" - "O s vodorovnou čiarkou" - "O s oblúčikom" - "O s dvoma dĺžňami" - "Ligatúra písmen O, E" - "R s dĺžňom" - "R s háčikom pod písmenom" - "R s mäkčeňom" - "S s dĺžňom" - "S s vokáňom" - "S s háčikom pod písmenom" - "S s mäkčeňom" - "T s háčikom pod písmenom" - "T s mäkčeňom" - "Prečiarknuté T" - "U s vlnovkou" - "U s vodorovnou čiarkou" - "U s oblúčikom" - "U s krúžkom" - "U s dvoma dĺžňami" - "U s nožičkou" - "W s vokáňom" - "Y s vokáňom" - "Z s dĺžňom" - "Z s bokou nad písmenom" - "Z s mäkčeňom" - "Dlhé S" - "O s rohom" - "U s rohom" - "S s čiarkou pod písmenom" - "T s čiarkou pod písmenom" - "Schwa" - "A s bodkou pod písmenom" - "A s háčikom nad písmenom" - "A s vokáňom aj dĺžňom" - "A s vokáňom aj opačným dĺžňom" - "A s vokáňom aj háčikom nad písmenom" - "A s vokáňom aj vlnovkou" - "A s vokáňom aj bodkou pod písmenom" - "A s oblúčikom aj dĺžňom" - "A s oblúčikom aj opačným dĺžňom" - "A s oblúčikom aj háčikom nad písmenom" - "A s oblúčikom aj vlnovkou" - "A s oblúčikom aj bodkou pod písmenom" - "E s bodkou pod písmenom" - "E s háčikom nad písmenom" - "E s vlnovkou" - "E s vokáňom aj dĺžňom" - "E s vokáňom aj opačným dĺžňom" - "E s vokáňom aj háčikom nad písmenom" - "E s vokáňom aj vlnovkou" - "E s vokáňom aj bodkou pod písmenom" - "I s háčikom nad písmenom" - "I s bodkou pod písmenom" - "O s bodkou pod písmenom" - "O s háčikom nad písmenom" - "O s vokáňom aj dĺžňom" - "O s vokáňom aj opačným dĺžňom" - "O s vokáňom aj háčikom nad písmenom" - "O s vokáňom aj vlnovkou" - "O s vokáňom aj bodkou pod písmenom" - "O s rohom aj dĺžňom" - "O s rohom aj opačným dĺžňom" - "O s rohom aj háčikom nad písmenom" - "O s rohom aj vlnovkou" - "O s rohom aj bodkou pod písmenom" - "U s bodkou pod písmenom" - "U s háčikom nad písmenom" - "U s rohom aj dĺžňom" - "U s rohom aj opačným dĺžňom" - "U s rohom aj háčikom nad písmenom" - "U s rohom aj vlnovkou" - "U s rohom aj bodkou pod písmenom" - "Y s opačným dĺžňom" - "Y s bodkou pod písmenom" - "Y s háčikom nad písmenom" - "Y s vlnovkou" - "Obrátený výkričník" - "Lomené ľavé dvojité úvodzovky" - "Bodka uprostred" - "Jednotka v hornom indexe" - "Lomené pravé dvojité úvodzovky" - "Obrátený otáznik" - "Ľavé jednoduché úvodzovky" - "Pravé jednoduché úvodzovky" - "Dolné jednoduché úvodzovky" - "Ľavé dvojité úvodzovky" - "Pravé dvojité úvodzovky" - "Krížik" - "Dvojitý krížik" - "Znak promile" - "Indexová čiarka" - "Dvojitá indexová čiarka" - "Jednoduché ľavé úvodzovky" - "Jednoduché pravé úvodzovky" - "Štvorka v hornom indexe" - "Latinka – malé písmeno n v hornom indexe" - "Znak pesa" - "Malé písmená c a o oddelené lomkou" - "Šípka vpravo" - "Šípka nadol" - "Prázdna množina" - "Prírastok" - "Menšie alebo rovné ako" - "Väčšie alebo rovné ako" - "Čierna hviezda" - diff --git a/app/src/main/res/values-sk/strings-talkback-descriptions.xml b/app/src/main/res/values-sk/strings-talkback-descriptions.xml index 51198aff13..63918f0a73 100644 --- a/app/src/main/res/values-sk/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-sk/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "Ak si chcete pri zadávaní hesla vypočuť nahlas vyslovené klávesy, pripojte náhlavnú súpravu." - "Aktuálny text je %s" - "Nie je zadaný žiadny text" - "Klávesom %1$s opravíte slovo %2$s na %3$s" - "Klávesom %1$s spustíte automatické opravy" - "Žiaden návrh" - "Neznámy znak" - "Shift" - "Ďalšie symboly" - "Shift" - "Symboly" - "Shift" - "Odstrániť" - "Symboly" - "Písmená" - "Čísla" - "Nastavenia" - "Karta" - "Medzerník" - "Hlasový vstup" - "Emoji" - "Enter" - "Hľadať" - "Bodka" - "Prepnúť jazyk" - "Ďalej" - "Naspäť" - "Kláves Shift je povolený" - "Kláves Caps Lock je povolený" - "Režim symbolov" - "Režim ďalších symbolov" - "Režim písmen" - "Režim telefónu" - "Režim telefónnych symbolov" - "Klávesnica je skrytá" - "Je zobrazená klávesnica %s" - "dátum" - "dátum a čas" - "e-mail" - "odosielanie správ" - "číslo" - "telefón" - "text" - "čas" - "Webová adresa" - "Nedávne" - "Ľudia" - "Predmety" - "Príroda" - "Miesta" - "Symboly" - "Vlajky" - "Smajlíky a ľudia" - "Zvieratá a príroda" - "Jedlo a nápoje" - "Cestovanie a miesta" - "Aktivita" - "Emotikony" - "Veľké písmeno – %s" - "Veľké I" - "Veľké I s bodkou nad písmenom" - "Neznámy symbol" - "Neznámy symbol Emodži" - "Znudená tvár" - "Rozpačitá tvár" - "Tvár so slnečnými okuliarmi" - "Prekvapená tvár" - "Bozkávajúca sa tvár" - "Zamračená tvár" - "Alternatívne znaky sú dostupné" - "Alternatívne znaky boli zrušené" - "Alternatívne návrhy sú dostupné" - "Alternatívne návrhy boli zrušené" + + + "Ak si chcete pri zadávaní hesla vypočuť nahlas vyslovené klávesy, pripojte náhlavnú súpravu." + "Aktuálny text je %s" + "Nie je zadaný žiadny text" + "Klávesom %1$s opravíte slovo %2$s na %3$s" + "Klávesom %1$s spustíte automatické opravy" + "Žiaden návrh" + "Neznámy znak" + "Shift" + "Ďalšie symboly" + "Shift" + "Symboly" + "Shift" + "Odstrániť" + "Symboly" + "Písmená" + "Čísla" + "Nastavenia" + "Karta" + "Medzerník" + "Hlasový vstup" + "Emoji" + "Enter" + "Hľadať" + "Bodka" + "Prepnúť jazyk" + "Ďalej" + "Naspäť" + "Kláves Shift je povolený" + "Kláves Caps Lock je povolený" + "Režim symbolov" + "Režim ďalších symbolov" + "Režim písmen" + "Režim telefónu" + "Režim telefónnych symbolov" + "Klávesnica je skrytá" + "Je zobrazená klávesnica %s" + "dátum" + "dátum a čas" + "e-mail" + "odosielanie správ" + "číslo" + "telefón" + "text" + "čas" + "Webová adresa" + "Nedávne" + "Predmety" + "Symboly" + "Vlajky" + "Smajlíky a ľudia" + "Zvieratá a príroda" + "Jedlo a nápoje" + "Cestovanie a miesta" + "Aktivita" + "Emotikony" + "Veľké písmeno – %s" + "Veľké I" + "Veľké I s bodkou nad písmenom" + "Alternatívne znaky sú dostupné" + "Alternatívne znaky boli zrušené" + "Alternatívne návrhy sú dostupné" + "Alternatívne návrhy boli zrušené" diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 9c75a0f0cc..dce17b2eb3 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -1,193 +1,124 @@ - - - - - "Možnosti zadávania textu a údajov" - "Hľadať mená kontaktov" - "Kontrola pravopisu používa záznamy z vášho zoznamu kontaktov" - "Pri stlačení klávesu vibrovať" - "Zvuk pri stlačení klávesu" - "Detail znaku pri stlačení" - "Predvoľby" - "Účty a ochrana osobných údajov" - "Vzhľad a rozloženie" - "Písanie gestami" - "Oprava textu" - "Rozšírené" - "Motív" - "Povoliť rozdelenie klávesnice" - "Prepnúť na iné metódy vstupu" - "Kláves na prepnutie jazyka pokrýva aj ďalšie metódy vstupu" - "Kľúč na prepínanie jazyka" - "Zobraziť, keď je povolených viac jazykov vstupu" - "Oneskorenie detailu znaku" - "Bez oneskorenia" - "Predvolené" - "%s ms" - "Predvolené" - "Navrhovať mená kontaktov" - "Používať mená z kontaktov na návrhy a opravy" - "Prispôsobené návrhy" - "Zlepšovať apl. %s" - "Bodka dvojitým medzerníkom" - "Dvojitým klepnutím na medzerník vložíte bodku a medzeru." - "Veľké písmená automaticky" - "Písanie prvého slova v každej vete veľkým písmenom" - "Osobný slovník" - "Doplnkové slovníky" - "Hlavný slovník" - "Zobrazovať návrhy opráv" - "Zobrazovať navrhované slová počas písania" - "Blokovať urážlivé slová" - "Nenavrhovať potenciálne urážlivé slová" - "Automatické opravy" - "Medzerník s klávesom interpunkcie automaticky opraví chybné slovo" - "Vypnuté" - "Mierne" - "Agresívne" - "Veľmi agresívne" - "Navrhovať ďalšie slovo" - "Návrhy podľa predchádzajúceho slova" - "Povoliť písanie gestami" - "Zadávanie slov prejdením prstom po písmenách" - "Zobrazovať stopu gesta" - "Dynamická plávajúca ukážka" - "Zobrazenie navrhovaného slova pri písaní gestami" - "Frázové gestá" - "Zadávanie medzier prechádzaním cez kláves medzerníka" - "Kláves hlasového vstupu" - "Nie sú povolené žiadne metódy hlasového vstupu. Skontrolujte nastavenia Jazyky a vstup." - "Konfigurovať metódy vstupu" - "Jazyky" - "Pomocník a spätná väzba" - "Jazyky" - "Uložte slovo opätovným klepnutím" - "Uložte klepnutím tu" - "K dispozícii je slovník" - "Motív klávesnice" - "Prepnúť účty" - "Nie sú vybrané žiadne účty" - "Momentálne sa používa účet %1$s" - "OK" - "Zrušiť" - "Odhlásiť sa" - "Výber účtu, ktorý chcete použiť" - "angličtina (Veľká Británia)" - "angličtina (USA)" - "španielčina (USA)" - "Hinglish" - "srbčina (latinka)" - "angličtina (VB) (%s)" - "angličtina (USA) (%s)" - "španielčina (USA) (%s)" - "Hinglish (%s)" - "srbčina (%s)" - "%s (tradičná)" - "%s (kompaktná)" - "Žiadny jazyk (latinka)" - "latinka (QWERTY)" - "Latinka (QWERTZ)" - "Latinka (AZERTY)" - "Latinka (Dvorak)" - "Latinka (Colemak)" - "Latinka (PC)" - "Emoji" - "Motív klávesnice" - "Vlastné štýly vstupu" - "Pridať štýl" - "Pridať" - "Odstrániť" - "Uložiť" - "Jazyk" - "Rozloženie" - "Pred použitím vlastného štýlu vstupu ho musíte povoliť. Chcete ho povoliť?" - "Povoliť" - "Teraz nie" - "Rovnaký štýl vstupu už existuje: %s" - "Dĺžka vibrácie klávesu" - "Hlasitosť stlačenia klávesu" - "Oneskorenie dlhého stlačenia" - "Emodži pre fyzickú klávesnicu" - "Paletu emodži zobrazíte stlačením fyzického klávesa Alt." - "Predvolené" - "Vitajte v aplikácii %s" - "s funkciou Písanie gestami" - "Začať" - "Ďalší krok" - "Nastavenie aplikácie %s" - "Povoľte aplikáciu %s" - "V nastaveniach Jazyky a vstup začiarknite políčko %s. Týmto aplikácii povolíte spustenie v zariadení." - "Aplikácia %s je už v nastaveniach Jazyky a vstup povolená. Prejdite na ďalší krok." - "Povoliť v Nastaveniach" - "Prepnite na aplikáciu %s." - "Potom vyberte aplikáciu %s ako aktívnu metódu textového vstupu." - "Prepnúť metódu vstupu" - "Blahoželáme, všetko je nastavené!" - "Pomocou aplikácie %s teraz môžete zadávať text vo všetkých obľúbených aplikáciách." - "Nakonfigurujte ďalšie jazyky" - "Hotovo" - "Zobraziť ikonu aplikácie" - "Zobrazenie ikony aplikácie v spúšťači" - "Poskytovateľ slovníka" - "Poskytovateľ slovníka" - "Služba slovníka" - "Informácie aktualizácie slovníka" - "Doplnkové slovníky" - "Nastavenia pre slovníky" - "Používateľské slovníky" - "Používateľský slovník" - "K dispozícii je slovník" - "Aktuálne sa sťahuje" - "Nainštalované" - "Nainštalovaný, zakázaný" - "Probl. s prip. k sl." - "Slovníky sú nedostupné" - "Obnoviť" - "Posledná aktualizácia" - "Prebieha kontrola aktualizácií" - "Načítava sa…" - "Hlavný slovník" - "Zrušiť" - "Nastavenia" - "Inštalovať" - "Zrušiť" - "Odstrániť" - "Verzia %1$s" - "Pridať" - "Pridať do slovníka" - "Fráza" - "Ďalšie možnosti" - "Menej možností" - "OK" - "Slovo:" - "Klávesová skratka" - "Jazyk:" - "Zadajte slovo" - "Voliteľná skratka" - "Upraviť slovo" - "Upraviť" - "Odstrániť" - "V používateľskom slovníku nie sú žiadne slová. Slovo pridáte klepnutím na tlačidlo Pridať (+)." - "pre všetky jazyky" - "Ďalšie jazyky…" - "Odstrániť" - " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + + "Hľadať mená kontaktov" + "Pri stlačení klávesu vibrovať" + "Zvuk pri stlačení klávesu" + "Detail znaku pri stlačení" + "Predvoľby" + "Písanie gestami" + "Oprava textu" + "Rozšírené" + "Motív" + "Povoliť rozdelenie klávesnice" + "Prepnúť na iné metódy vstupu" + "Kľúč na prepínanie jazyka" + "%s ms" + "Predvolené" + "Používať mená z kontaktov na návrhy a opravy" + "Prispôsobené návrhy" + "Bodka dvojitým medzerníkom" + "Dvojitým klepnutím na medzerník vložíte bodku a medzeru." + "Veľké písmená automaticky" + "Písanie prvého slova v každej vete veľkým písmenom" + "Osobný slovník" + "Hlavný slovník" + "Zobrazovať návrhy opráv" + "Zobrazovať navrhované slová počas písania" + "Blokovať urážlivé slová" + "Nenavrhovať potenciálne urážlivé slová" + "Automatické opravy" + "Medzerník s klávesom interpunkcie automaticky opraví chybné slovo" + "Vypnuté" + "Mierne" + "Agresívne" + "Veľmi agresívne" + "Navrhovať ďalšie slovo" + "Návrhy podľa predchádzajúceho slova" + "Povoliť písanie gestami" + "Zadávanie slov prejdením prstom po písmenách" + "Zobrazovať stopu gesta" + "Dynamická plávajúca ukážka" + "Frázové gestá" + "Zadávanie medzier prechádzaním cez kláves medzerníka" + "angličtina (Veľká Británia)" + "angličtina (USA)" + "španielčina (USA)" + Indická angličtina + "srbčina (latinka)" + "%s (tradičná)" + "%s (kompaktná)" + "Žiadny jazyk" + "Emoji" + "Pridať" + "Odstrániť" + "Uložiť" + "Jazyk" + "Rozloženie" + "Dĺžka vibrácie klávesu" + "Hlasitosť stlačenia klávesu" + "Oneskorenie dlhého stlačenia" + "Emodži pre fyzickú klávesnicu" + "Paletu emodži zobrazíte stlačením fyzického klávesa Alt." + "Predvolené" + "Vitajte v aplikácii %s" + "s funkciou Písanie gestami" + "Začať" + "Nastavenie aplikácie %s" + "Povoľte aplikáciu %s" + V nastaveniach Jazyky a vstup začiarknite políčko%s. Týmto aplikácii povolíte spustenie v zariadení.\" + "Povoliť v Nastaveniach" + "Prepnite na aplikáciu %s." + Potom vyberte aplikáciu%s ako aktívnu metódu textového vstupu.\" + "Prepnúť metódu vstupu" + "Blahoželáme, všetko je nastavené!" + "Pomocou aplikácie %s teraz môžete zadávať text vo všetkých obľúbených aplikáciách." + "Hotovo" + "Zobraziť ikonu aplikácie" + "Zobrazenie ikony aplikácie v spúšťači" + "Doplnkové slovníky" + "K dispozícii je slovník" + "Nastavenia" + "Odstrániť" + "Verzia %1$s" + "Klávesová skratka" + "Jazyk:" + "Zadajte slovo" + "Voliteľná skratka" + "Upraviť slovo" + "pre všetky jazyky" + "Ďalšie jazyky…" + Ak vypnuté, klávesa schránky vloží jej obsah ak sa tam nejaký nachádza + Doba zachovania histórie + História schránky + Bez limitu + Povoliť históriu schránky + Vypnúť učenie nových slov + Viac kláves + HeliBoard Kontrola Pravopisu + Nastavenia kontroly pravopisu HeliBoard + Emoji klávesa + Vynútiť režim inkognito + Vstup + HeliBoard Nastavenia + Dodatočné klávesy + Korekcie + Návrhy + Experimentálne + Ostatné + "Zvoliť metódu vstupu" + "Späť" + "Znova" + "Zlepšovať návrhy na základe komunikácie a zadaných údajov" + "Ísť" + "Ďalej" + "Pred." + "OK" + "Posl." + "Hľadať" + "Pauza" + "Čakať" diff --git a/app/src/main/res/values-sl/bools.xml b/app/src/main/res/values-sl/bools.xml index 840d20c218..8693f6e1ec 100644 --- a/app/src/main/res/values-sl/bools.xml +++ b/app/src/main/res/values-sl/bools.xml @@ -1,21 +1,7 @@ - - - "Pojdi" - "Napr." - "Prej." - "Konec" - "Pošl." - "Iskanje" - "Zaus." - "Čakaj" - diff --git a/app/src/main/res/values-sl/strings-config-important-notice.xml b/app/src/main/res/values-sl/strings-config-important-notice.xml deleted file mode 100644 index d5bed6fd88..0000000000 --- a/app/src/main/res/values-sl/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "Vaša sporočila in vnesene podatke uporabi za boljše predloge" - diff --git a/app/src/main/res/values-sl/strings-emoji-descriptions.xml b/app/src/main/res/values-sl/strings-emoji-descriptions.xml deleted file mode 100644 index 74b792bff9..0000000000 --- a/app/src/main/res/values-sl/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "Znak za avtorsko zaščito" - "Znak za registriranost" - "Dvojni klicaj" - "Klicaj vprašaj" - "Znak za registrirano blagovno znamko" - "Vir informacij" - "Puščica levo desno" - "Puščica navzgor navzdol" - "Puščica, ki kaže proti severozahodu" - "Puščica, ki kaže proti severovzhodu" - "Puščica, ki kaže proti jugovzhodu" - "Puščica, ki kaže proti jugozahodu" - "Puščica levo z zanko" - "Puščica desno z zanko" - "Ura" - "Peščena ura" - - - - - "Črn dvojni trikotnik, ki kaže desno" - "Črn dvojni trikotnik, ki kaže levo" - "Črn dvojni trikotnik, ki kaže navzgor" - "Črn dvojni trikotnik, ki kaže navzdol" - - - - - - - "Budilka" - - - - - "Peščena ura s pretakajočim se peskom" - - - - - - - "Obkrožena velika latinska črka m" - "Črn majhen kvadrat" - "Bel majhen kvadrat" - "Črn trikotnik, ki kaže desno" - "Črn trikotnik, ki kaže levo" - "Bel srednji kvadrat" - "Črn srednji kvadrat" - "Bel srednje majhen kvadrat" - "Črn srednje majhen kvadrat" - "Črno sonce z žarki" - "Oblak" - - - - - - - "Črn telefon" - "Polje na glasovnici s kljukico" - "Dežnik z dežnimi kapljami" - "Topel napitek" - - - "Bel kazalec, ki kaže navzgor" - - - - - - - - - - - - - - - - - - - "Bel nasmejan obraz" - "Oven" - "Bik" - "Dvojčka" - "Rak" - "Lev" - "Devica" - "Tehtnica" - "Škorpijon" - "Strelec" - "Kozorog" - "Vodnar" - "Ribi" - "Črna barva pika" - "Črna barva križa" - "Črna barva srca" - "Črna barva kare" - "Termalni vrelci" - "Črn univerzalni simbol za recikliranje" - "Simbol za invalidski voziček" - - - "Sidro" - - - - - - - - - - - - - "Opozorilni znak" - "Znak za visoko napetost" - "Srednji bel krog" - "Srednji črn krog" - - - - - "Nogometna žoga" - "Bejzbol" - "Snežak brez snega" - "Sonce za oblakom" - - - "Kačenosec" - - - - - - - "Ni vstopa" - - - "Cerkev" - - - - - "Izvir" - "Zastavica v luknji" - - - "Jadrnica" - - - - - - - "Šotor" - "Bencinska črpalka" - "Črne škarje" - "Bela poudarjena kljukica" - "Letalo" - "Kuverta" - "Dvignjena pest" - "Dvignjena dlan" - "Dlan z znakom za zmago" - - - "Svinčnik" - "Črna konica" - "Poudarjena kljukica" - "Poudarjen znak za množenje" - - - - - "Iskrice" - "Zvezdica z osmimi paličicami" - "Osmerokraka črna zvezda" - "Snežinka" - "Iskrica" - "Križec" - "Negativ križca v kvadratu" - "Črn okrasni vprašaj" - "Bel okrasni vprašaj" - "Bel okrasni klicaj" - "Poudarjen simbol klicaja" - - - "Poudarjeno črno srce" - "Poudarjen znak za seštevanje" - "Poudarjen znak za odštevanje" - "Poudarjen znak za deljenje" - "Črna puščica desno" - "Zavita zanka" - "Dvojno zavita zanka" - "Puščica, ki kaže desno, nato zavije navzgor" - "Puščica, ki kaže desno, nato zavije navzdol" - "Črna puščica levo" - "Črna puščica navzgor" - "Črna puščica navzdol" - "Črn velik kvadrat" - "Bel velik kvadrat" - "Bela srednja zvezda" - "Poudarjen velik krog" - "Valovit pomišljaj" - "Znak za začetek skladbe" - "Obkrožen ideogram za čestitke" - "Obkrožen ideogram za skrivnost" - "Ploščica za mahjong rdeči zmaj" - "Igralna karta črni joker" - "Krvna skupina A" - "Krvna skupina B" - "Krvna skupina O" - "Parkirišče" - "Krvna skupina AB" - "CL v kvadratu" - "Cool v kvadratu" - "Free v kvadratu" - "ID v kvadratu" - "New v kvadratu" - "NG v kvadratu" - "OK v kvadratu" - "SOS v kvadratu" - "Up s klicajem v kvadratu" - "Vs v kvadratu" - "Tukaj v katakani v kvadratu" - "Storitev v katakani v kvadratu" - "Ideogram za brezplačno v kvadratu" - "Ideogram za rezerviran sedež v kvadratu" - "Ideogram za prepoved v kvadratu" - "Ideogram za nezasedeno v kvadratu" - "Ideogram za sprejem v kvadratu" - "Ideogram za polno zasedenost v kvadratu" - "Ideogram za plačano v kvadratu" - "Ideogram za mesečno v kvadratu" - "Ideogram za prijavo v kvadratu" - "Ideogram za popust v kvadratu" - "Ideogram za poslovanje v kvadratu" - "Ideogram za prednost v krogu" - "Ideogram za sprejem v krogu" - "Ciklon" - "Megleno" - "Zaprt dežnik" - "Zvezdna noč" - "Sončni vzhod nad planinami" - "Sončni vzhod" - "Mestna veduta ob polmraku" - "Sončni zahod nad stavbami" - "Mavrica" - "Most ponoči" - "Vodni val" - "Vulkan" - "Rimska cesta" - "Globus Evropa–Afrika" - "Globus Ameriki" - "Globus Azija–Avstralija" - "Globus s poldnevniki" - "Simbol za mlado luno" - "Simbol za prvi krajec" - "Simbol za polovično osvetljeno luno v prvem krajcu" - "Simbol za več kot polovično osvetljen prvi krajec" - "Simbol za polno luno" - "Simbol za več kot polovično osvetljen zadnji krajec" - "Simbol za polovično osvetljeno luno v zadnjem krajcu" - "Simbol za zadnji krajec" - "Lunin srp" - "Mlada luna z obrazom" - "Polovično osvetljena luna v prvem krajcu z obrazom" - "Polovično osvetljena luna v zadnjem krajcu z obrazom" - "Polna luna z obrazom" - "Sonce z obrazom" - "Žareča zvezda" - "Utrinek" - - - - - - - - - - - - - - - - - - - - - - - - - - - "Kostanj" - "Sadika" - "Zimzeleno drevo" - "Listnato drevo" - "Palma" - "Kaktus" - - - "Tulipan" - "Japonska češnja" - "Vrtnica" - "Hibiskus" - "Sončnica" - "Cvet" - "Koruzno klasje" - "Riževo klasje" - "Zelišče" - "Štiriperesna deteljica" - "Javorjev list" - "Odpadli list" - "V vetru plahutajoč list" - "Goba" - "Paradižnik" - "Jajčevec" - "Grozdje" - "Melona" - "Lubenica" - "Mandarina" - "Limona" - "Banana" - "Ananas" - "Rdeče jabolko" - "Zeleno jabolko" - "Hruška" - "Breskev" - "Češnje" - "Jagoda" - "Hamburger" - "Kos pice" - "Meso s kostjo" - "Piščančja krača" - "Rižev kreker" - "Kepica riža" - "Kuhan riž" - "Kari z rižem" - "Vroča skleda" - "Špageti" - "Kruh" - "Ocvrt krompirček" - "Pečena batata" - "Dango" - "Oden" - "Suši" - "Ocvrti rakci" - "Ribji kolač s spiralastim vzorcem" - "Točen sladoled" - "Granita" - "Sladoled" - "Krof" - "Piškot" - "Čokoladka" - "Bombon" - "Lizika" - "Vaniljev puding" - "Kozarec za med" - "Sladica s sadnim prelivom in smetano" - "Škatla za malico bento" - "Posoda s hrano" - "Kuhanje" - "Vilice in nož" - "Skodelica za čaj brez ročaja" - "Steklenica sakeja in skodelica" - "Kozarec za vino" - "Kozarec za koktajl" - "Tropska pijača" - "Vrček za pivo" - "Trkajoča vrčka za pivo" - "Steklenička za dojenčka" - - - - - - - "Pentlja" - "Zavito darilo" - "Torta za rojstni dan" - "Izrezljana buča s svečo" - "Božični drevešček" - "Božiček" - "Ognjemet" - "Pirotehnična iskrica" - "Balon" - "Pokalica za zabave" - "Krogla s konfeti" - "Drevo želja tanabata" - "Prekrižani zastavi" - "Borov novoletni okrasek" - "Japonski lutki" - "Japonski barvni trakovi v obliki ribe" - "Vetrni zvončki" - "Opazovanje jesenske polne lune" - "Usnjena šolska torba s poklopcem" - "Maturantska kapa" - - - - - - - - - - - - - - - "Konjiček na vrtiljaku" - "Panoramsko kolo" - "Vlak smrti" - "Ribiška palica in riba" - "Mikrofon" - "Filmska kamera" - "Kino" - "Slušalka" - "Slikarska paleta" - "Cilinder" - "Cirkuški šotor" - "Vstopnica" - "Klapa" - "Odrske umetnosti" - "Videoigra" - "Zadetek v polno" - "Igralni avtomat" - "Biljard" - "Igralna kocka" - "Kegljanje" - "Igralne karte hanafuda" - "Nota" - "Več not" - "Saksofon" - "Kitara" - "Klaviatura" - "Trobenta" - "Violina" - "Partitura" - "Majica za tek z lento" - "Teniški lopar in žogica" - "Smučke in smučarski čevelj" - "Košarkarska žoga in obroč" - "Karirasta zastava" - "Deskar na snegu" - "Tekač" - "Deskar" - - - "Pokal" - "Konjske dirke" - "Ameriški nogomet" - "Ragbi" - "Plavalec" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Gradnja hiše" - "Hiša z vrtom" - "Pisarniški blok" - "Japonski poštni urad" - "Evropski poštni urad" - "Bolnišnica" - "Banka" - "Bankomat" - "Hotel" - "Hotel za zaljubljene" - "Trgovina z mešanim blagom" - "Šola" - "Veleblagovnica" - "Tovarna" - "Laterna izakaya" - "Japonski grad" - "Evropski grad" - - - - - - - - - - - - - - - - - - - - - - - - - "Podgana" - "Miš" - "Vol" - "Indijski bivol" - "Krava" - - - "Leopard" - "Zajec" - "Mačka" - "Zmaj" - "Krokodil" - "Kit" - "Polž" - "Kača" - "Konj" - "Oven" - "Koza" - "Ovca" - "Opica" - "Petelin" - "Piščanec" - "Pes" - "Prašič" - "Divji prašič" - "Slon" - "Hobotnica" - "Spiralasta školjka" - "Žužek" - "Mravlja" - "Domača čebela" - "Pikapolonica" - "Riba" - "Tropska riba" - "Napihovalka" - "Želva" - "Valeče se pišče" - "Pišče" - "Pišče od spredaj" - "Ptica" - "Pingvin" - "Koala" - "Koder" - "Enogrba kamela" - "Dvogrba kamela" - "Delfin" - "Mišji obraz" - "Kravji obraz" - "Tigrov obraz" - "Zajčji obraz" - "Mačji obraz" - "Zmajev obraz" - "Kit, ki brizga vodo" - "Konjski obraz" - "Opičji obraz" - "Pasji obraz" - "Prašičji obraz" - "Žabji obraz" - "Hrčkov obraz" - "Volčji obraz" - "Medvedji obraz" - "Pandin obraz" - "Prašičji rilec" - "Odtisi šap" - - - "Oči" - - - "Uho" - "Nos" - "Usta" - "Jezik" - "Bel kazalec, ki kaže navzgor (s hrbtom dlani)" - "Bel kazalec, ki kaže navzdol (s hrbtom dlani)" - "Bel kazalec, ki kaže levo (s hrbtom dlani)" - "Bel kazalec, ki kaže desno (s hrbtom dlani)" - "Znak za stisnjeno pest" - "Znak za mahajočo roko" - "Znak z roko za odobravanje" - "Znak za palec navzgor" - "Znak za palec navzdol" - "Znak za ploskanje" - "Znak za razprte dlani" - "Krona" - "Ženski klobuk" - "Očala" - "Kravata" - "Majica" - "Kavbojke" - "Obleka" - "Kimono" - "Bikini" - "Ženska oblačila" - "Denarnica" - "Torbica" - "Mošnja" - "Moški čevelj" - "Športni copat" - "Čevelj z visoko peto" - "Ženski sandal" - "Ženski škornji" - "Stopinje" - "Silhueta doprsne podobe" - "Silhueta doprsnih podob" - "Fant" - "Dekle" - "Moški" - "Ženska" - "Družina" - "Moški in ženska, ki se držita za roke" - "Moška, ki se držita za roke" - "Ženski, ki se držita za roke" - "Policist" - "Ženska z zajčjimi ušesi" - "Nevesta s tančico" - "Oseba svetlih las" - "Moški s čepico gua pi mao" - "Moški s turbanom" - "Starejši moški" - "Starejša ženska" - "Dojenček" - "Gradbeni delavec" - "Princesa" - "Japonski velikan" - "Japonski škratelj" - "Duh" - "Angelček" - "Zunajzemeljsko bitje" - "Vesoljska pošast" - "Škrat" - "Lobanja" - "Uslužbenka na informacijah" - "Gardist" - "Plesalka" - "Rdečilo za ustnice" - "Lak za nohte" - "Obrazna masaža" - "Striženje las" - "Brivski izvesek" - "Brizga" - "Pilula" - "Sledi ustnic po poljubu" - "Ljubezensko pismo" - "Prstan" - "Dragulj" - "Poljub" - "Šopek" - "Par s srcem" - "Poroka" - "Utripajoče srce" - "Počeno srce" - "Dve srci" - "Svetlikajoče se srce" - "Rastoče srce" - "Srce s puščico" - "Modro srce" - "Zeleno srce" - "Rumeno srce" - "Vijolično srce" - "Srce s pentljo" - "Vrteči se srci" - "Okrasek v obliki srca" - "Rombasta podoba s piko na sredini" - "Električna žarnica" - "Simbol za jezo" - "Bomba" - "Simbol za spanje" - "Simbol za trk" - "Simbol za potne kaplje" - "Kapljica" - "Simbol za brzenje" - "Kakec" - "Napet biceps" - "Simbol za omotico" - "Oblaček z govorom" - "Oblaček z mislimi" - "Bela roža" - "Simbol za sto točk" - "Vreča denarja" - "Menjava valut" - "Poudarjen znak za dolar" - "Kreditna kartica" - "Bankovec z znakom za jen" - "Bankovec z dolarskim znakom" - "Bankovec z znakom za evro" - "Bankovec z znakom za funt" - "Denar s krili" - "Graf z gibanjem navzgor in znakom za jen" - "Sedež" - "Namizni računalnik" - "Aktovka" - "Minidisk" - "Disketa" - "Optični disk" - "DVD" - "Datotečna mapa" - "Odprta datotečna mapa" - "Zavihana stran" - "Prav obrnjena stran" - "Koledar" - "Koledar z listi, ki jih je mogoče odtrgati" - "Organizator vizitk" - "Graf z gibanjem navzgor" - "Graf z gibanjem navzdol" - "Grafikon s stolpci" - "Odložišče" - "Risalni žebljiček" - "Okrogel risalni žebljiček" - "Sponka" - "Ravnilo" - "Geotrikotnik" - "Zavihki z zaznamki" - "Glavna knjiga" - "Beležnica" - "Beležnica z okrasno platnico" - "Zaprta knjiga" - "Odprta knjiga" - "Zelena knjiga" - "Modra knjiga" - "Oranžna knjiga" - "Knjige" - "Značka z imenom" - "Zvitek" - "Zabeležka" - "Telefonska slušalka" - "Pozivnik" - "Faksirna naprava" - "Satelitska antena" - "Zvočnik za javne objave" - "Megafon za spodbujanje" - "Pladenj za poslana sporočila" - "Pladenj za prejeta sporočila" - "Paket" - "Simbol za e-pošto" - "Dohodna kuverta" - "Kuverta s puščico navzdol zgoraj" - "Zaprt pisemski nabiralnik s spuščeno zastavico" - "Zaprt pisemski nabiralnik z dvignjeno zastavico" - "Odprt pisemski nabiralnik z dvignjeno zastavico" - "Odprt pisemski nabiralnik s spuščeno zastavico" - "Poštni nabiralnik" - "Poštni rog" - "Časopis" - "Mobilni telefon" - "Mobilni telefon s puščico, ki kaže desno, na levi" - "Način vibriranja" - "Mobilni telefon je izklopljen" - "Ni mobilnih telefonov" - "Antena s črticami" - "Fotoaparat" - - - "Videokamera" - "Televizor" - "Radio" - "Videokaseta" - - - - - "Prepleteni puščici, ki kažeta desno" - "Puščici, ki kažeta desno in levo v smeri urinega kazalca ter tvorita nesklenjen krog" - "Puščici, ki kažeta desno in levo v smeri urinega kazalca ter skupaj z enko v krogcu tvorita nesklenjen krog" - "Puščici, ki kažeta dol in gor v smeri urinega kazalca ter tvorita nesklenjen krog" - "Puščici, ki kažeta dol in gor v obratni smeri urinega kazalca ter tvorita nesklenjen krog" - "Simbol za nizko vrednost svetlosti" - "Simbol za visoko vrednost svetlosti" - "Zvočnik s potezo za ukinitev" - "Zvočnik" - "Zvočnik z enim zvočnim valom" - "Zvočnik s tremi zvočnimi valovi" - "Akumulator" - "Električni vtič" - "Lupa, ki kaže levo" - "Lupa, ki kaže desno" - "Ključavnica z nalivnim peresom" - "Zaprta ključavnica s ključem" - "Ključ" - "Ključavnica" - "Odprta ključavnica" - "Zvonec" - "Zvonec s potezo za ukinitev" - "Zaznamek" - "Simbol za verigo" - "Radijski gumb" - "Back s puščico levo zgoraj" - "End s puščico levo zgoraj" - "On s klicajem ter puščico levo desno zgoraj" - "Soon s puščico desno zgoraj" - "Top s puščico navzgor zgoraj" - "Simbol, da ni dovoljeno za mlajše od 18 let" - "Tipka deset" - "Simbol vnosa za latinske velike črke" - "Simbol vnosa za latinske majhne črke" - "Simbol vnosa za številke" - "Simbol vnosa za simbole" - "Simbol vnosa za latinske črke" - "Ogenj" - "Električna svetilka" - "Ključ" - "Kladivo" - "Vijak in matica" - "Japonski nož hocho" - "Pištola" - "Mikroskop" - "Teleskop" - "Kristalna krogla" - "Šesterokraka zvezda s piko na sredini" - "Japonski simbol za začetnika" - "Simbol trizoba" - "Črn kvadratni gumb" - "Bel kvadratni gumb" - "Velik rdeč krog" - "Velik moder krog" - "Velik oranžen romb" - "Velik moder romb" - "Majhen oranžen romb" - "Majhen moder romb" - "Rdeč trikotnik, ki kaže navzgor" - "Rdeč trikotnik, ki kaže navzdol" - "Majhen rdeč trikotnik, ki kaže navzgor" - "Majhen rdeč trikotnik, ki kaže navzdol" - - - - - - - - - - - - - "Številčnica ure ob enih" - "Številčnica ure ob dveh" - "Številčnica ure ob treh" - "Številčnica ure ob štirih" - "Številčnica ure ob petih" - "Številčnica ure ob šestih" - "Številčnica ure ob sedmih" - "Številčnica ure ob osmih" - "Številčnica ure ob devetih" - "Številčnica ure ob desetih" - "Številčnica ure ob enajstih" - "Številčnica ure ob dvanajstih" - "Številčnica ure ob pol dveh" - "Številčnica ure ob pol treh" - "Številčnica ure ob pol štirih" - "Številčnica ure ob pol petih" - "Številčnica ure ob pol šestih" - "Številčnica ure ob pol sedmih" - "Številčnica ure ob pol osmih" - "Številčnica ure ob pol devetih" - "Številčnica ure ob pol desetih" - "Številčnica ure ob pol enajstih" - "Številčnica ure ob pol dvanajstih" - "Številčnica ure ob pol enih" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Gora Fuji" - "Tokyo Tower" - "Kip svobode" - "Silhueta Japonske" - "Moyai" - "Režeč se obraz" - "Režeč se obraz s smejočimi očmi" - "Obraz s solzami sreče" - "Nasmejan obraz z odprtimi usti" - "Nasmejan obraz z odprtimi usti in smejočimi očmi" - "Nasmejan obraz z odprtimi usti in mrzlim potom" - "Nasmejan obraz z odprtimi usti in tesno zaprtimi očmi" - "Nasmejan obraz s sijem" - "Nasmejan obraz z rogovi" - "Mežikajoč obraz" - "Nasmejan obraz s smejočimi očmi" - "Obraz, ki uživa v slastni hrani" - "Olajšan obraz" - "Nasmejan obraz z očmi oblike src" - "Nasmejan obraz s sončnimi očali" - "Obraz s privoščljivim nasmehom" - "Ravnodušen obraz" - "Brezizrazen obraz" - "Hladen obraz" - "Obraz z mrzlim potom" - "Otožen obraz" - "Zbegan obraz" - "Zmeden obraz" - "Obraz našobljenih ustnic za poljub" - "Obraz, ki pošilja poljub" - "Obraz našobljenih ustnic za poljub s smejočimi očmi" - "Obraz našobljenih ustnic za poljub z zaprtimi očmi" - "Obraz z molečim jezikom" - "Mežikajoč obraz z molečim jezikom" - "Obraz z molečim jezikom in tesno zaprtimi očmi" - "Razočaran obraz" - "Zaskrbljen obraz" - "Jezen obraz" - "Našobljen obraz" - "Objokan obraz" - "Nepopustljiv obraz" - "Obraz z zmagovitim pogledom" - "Razočaran, vendar olajšan obraz" - "Namrščen obraz z odprtimi usti" - "Trpeč obraz" - "Prestrašen obraz" - "Naveličan obraz" - "Zaspan obraz" - "Utrujen obraz" - "Skremžen obraz" - "Obraz, ki toči solze" - "Obraz z odprtimi usti" - "Pritajen obraz" - "Obraz z odprtimi usti in mrzlim potom" - "Obraz, ki kriči od strahu" - "Začuden obraz" - "Zardel obraz" - "Speč obraz" - "Omotičen obraz" - "Obraz brez ust" - "Obraz s higiensko masko" - "Režeč se mačji obraz s smejočimi očmi" - "Mačji obraz s solzami sreče" - "Nasmejan mačji obraz z odprtimi usti" - "Nasmejan mačji obraz z očmi oblike src" - "Mačji obraz s porogljivim nasmeškom" - "Mačji obraz našobljenih ustnic za poljub z zaprtimi očmi" - "Našobljen mačji obraz" - "Objokan mačji obraz" - "Naveličan mačji obraz" - - - - - - - - - "Obraz z gesto neodobravanja" - "Obraz z gesto odobravanja" - "Oseba z globokim priklonom" - "Opica, ki ničesar ne vidi" - "Opica, ki ničesar ne sliši" - "Opica, ki ničesar ne pove" - "Vesela oseba z dvignjeno roko" - "Oseba, ki proslavlja z obema rokama v zraku" - "Namrščena oseba" - "Oseba z našobljenim obrazom" - "Oseba s sklenjenimi rokami" - "Raketa" - "Helikopter" - "Parna lokomotiva" - "Železniški vagon" - "Hitri vlak" - "Hitri vlak s koničastim nosom" - "Vlak" - "Podzemna železnica" - "Mestna železnica" - "Postaja" - "Tramvaj" - "Vagon tramvaja" - "Avtobus" - "Nasproti vozeč avtobus" - "Trolejbus" - "Avtobusno postajališče" - "Minibus" - "Reševalno vozilo" - "Gasilski avtomobil" - "Policijski avtomobil" - "Nasproti vozeč policijski avtomobil" - "Taksi" - "Nasproti vozeč taksi" - "Avtomobil" - "Nasproti vozeč avtomobil" - "Rekreativno vozilo" - "Tovornjak za dostavo" - "Polpriklopnik" - "Traktor" - "Enotirna železnica" - "Gorska železnica" - "Viseča železnica" - "Gorska vzpenjača" - "Nadzemna železnica" - "Ladja" - "Čoln na vesla" - "Dirkalni čoln" - "Vodoravni semafor" - "Navpični semafor" - "Znak za gradbena dela" - "Rotacijska luč policijskega avtomobila" - "Trikotna zastavica na drogu" - "Vrata" - "Znak, da ni vstopa" - "Simbol za dovoljeno kajenje" - "Simbol za prepovedano kajenje" - "Simbol za odlaganje smeti v koš" - "Simbol za prepovedano odlaganje smeti" - "Simbol za pitno vodo" - "Simbol za nepitno vodo" - "Kolo" - "Prepovedano za kolesa" - "Kolesar" - "Gorski kolesar" - "Pešec" - "Prepovedano za pešče" - "Otroci na cesti" - "Simbol za moške" - "Simbol za ženske" - "Javno stranišče" - "Simbol za dojenčke" - "Stranišče" - "Toaleta" - "Prha" - "Kopel" - "Banja" - "Kontrola potnih listov" - "Carina" - "Prevzem prtljage" - "Zapuščena prtljaga" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-sl/strings-letter-descriptions.xml b/app/src/main/res/values-sl/strings-letter-descriptions.xml deleted file mode 100644 index 6415c997c8..0000000000 --- a/app/src/main/res/values-sl/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "Kazalec ženskega vrstilnika" - "Znak »mikro«" - "Kazalec moškega vrstilnika" - "Ostri S" - "A s krativcem" - "A z ostrivcem" - "A s cirkumfleksom" - "A s tildo" - "A z dierezo" - "A s krogcem" - "Ligatura AE" - "C s sedijem" - "E s krativcem" - "E z ostrivcem" - "E s cirkumfleksom" - "E z dierezo" - "I s krativcem" - "I z ostrivcem" - "I s cirkumfleksom" - "I z dierezo" - "Latinska črka Eth" - "N s tildo" - "O s krativcem" - "O z ostrivcem" - "O s cirkumfleksom" - "O s tildo" - "O z dierezo" - "O s črtico" - "U s krativcem" - "U z ostrivcem" - "U s cirkumfleksom" - "U z dierezo" - "Y z ostrivcem" - "Latinska črka Thorn" - "Y z dierezo" - "A z dolžino" - "A s polkrogcem" - "A z repkom spodaj" - "C z ostrivcem" - "C s cirkumfleksom" - "C s piko zgoraj" - "C s strešico" - "D s strešico" - "D s črtico" - "E z dolžino" - "E s polkrogcem" - "E s piko zgoraj" - "E z repkom spodaj" - "E s strešico" - "G s cirkumfleksom" - "G s polkrogcem" - "G s piko zgoraj" - "G s sedijem" - "H s cirkumfleksom" - "H s črtico" - "I s tildo" - "I z dolžino" - "I s polkrogcem" - "I z repkom spodaj" - "I brez pike" - "Ligatura IJ" - "J s cirkumfleksom" - "K s sedijem" - "Latinska črka Kra" - "L z ostrivcem" - "L s sedijem" - "L s strešico" - "L s srednjo piko" - "L s črtico" - "N z ostrivcem" - "N s sedijem" - "N s strešico" - "N z opuščajem spredaj" - "Latinska črka Eng" - "O z dolžino" - "O s polkrogcem" - "O z dvojnim ostrivcem" - "Ligatura OE" - "R z ostrivcem" - "R s sedijem" - "R s strešico" - "S z ostrivcem" - "S s cirkumfleksom" - "S s sedijem" - "S s strešico" - "T s sedijem" - "T s strešico" - "T s črtico" - "U s tildo" - "U z dolžino" - "U s polkrogcem" - "U s krogcem zgoraj" - "U z dvojnim ostrivcem" - "U z repkom spodaj" - "W s cirkumfleksom" - "Y s cirkumfleksom" - "Z z ostrivcem" - "Z s piko zgoraj" - "Z s strešico" - "Dolgi S" - "O z buckastim ostrivcem" - "U z buckastim ostrivcem" - "S z vejico spodaj" - "T z vejico spodaj" - "Latinska črka Schwa" - "A s piko spodaj" - "A z zanko zgoraj" - "A s cirkumfleksom in ostrivcem" - "A s cirkumfleksom in krativcem" - "A s cirkumfleksom in zanko zgoraj" - "A s cirkumfleksom in tildo" - "A s cirkumfleksom in piko spodaj" - "A s polkrogcem in ostrivcem" - "A s polkrogcem in krativcem" - "A s polkrogcem in zanko zgoraj" - "A s polkrogcem in tildo" - "A s polkrogcem in piko spodaj" - "E s piko spodaj" - "E z zanko zgoraj" - "E s tildo" - "E s cirkumfleksom in ostrivcem" - "E s cirkumfleksom in krativcem" - "E s cirkumfleksom in zanko zgoraj" - "E s cirkumfleksom in tildo" - "E s cirkumfleksom in piko spodaj" - "I z zanko zgoraj" - "I s piko spodaj" - "O s piko spodaj" - "O z zanko zgoraj" - "O s cirkumfleksom in ostrivcem" - "O s cirkumfleksom in krativcem" - "O s cirkumfleksom in zanko zgoraj" - "O s cirkumfleksom in tildo" - "O s cirkumfleksom in piko spodaj" - "O z buckastim ostrivcem in ostrivcem" - "O z buckastim ostrivcem in krativcem" - "O z buckastim ostrivcem in zanko zgoraj" - "O z buckastim ostrivcem in tildo" - "O z buckastim ostrivcem in piko spodaj" - "U s piko spodaj" - "U z zanko zgoraj" - "U z buckastim ostrivcem in ostrivcem" - "U z buckastim ostrivcem in krativcem" - "U z buckastim ostrivcem in zanko zgoraj" - "U z buckastim ostrivcem in tildo" - "U z buckastim ostrivcem in piko spodaj" - "Y s krativcem" - "Y s piko spodaj" - "Y z zanko zgoraj" - "Y s tildo" - "Obrnjeni klicaj" - "Desni sredinski narekovaj" - "Srednja pika" - "Nadpisana enka" - "Levi sredinski narekovaj" - "Obrnjeni vprašaj" - "Levi enojni zgornji narekovaj" - "Desni enojni zgornji narekovaj" - "Enojni spodnji narekovaj" - "Levi dvojni zgornji narekovaj" - "Desni dvojni zgornji narekovaj" - "Križec" - "Dvojni križec" - "Znak za promile" - "Simbol za označevanje minut ali čevljev" - "Dvojni simbol za označevanje minut ali čevljev" - "Enojni desni sredinski narekovaj" - "Enojni levi sredinski narekovaj" - "Nadpisana štirica" - "Nadpisana latinska majhna črka n" - "Znak za pesos" - "Znak za »Care of«" - "Puščica desno" - "Puščica navzdol" - "Prazna množica" - "Prirastek" - "Manj od ali enako" - "Več od ali enako" - "Črna zvezda" - diff --git a/app/src/main/res/values-sl/strings-talkback-descriptions.xml b/app/src/main/res/values-sl/strings-talkback-descriptions.xml index 8a9af2c0a1..34509770e3 100644 --- a/app/src/main/res/values-sl/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-sl/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "Priključite slušalke, če želite slišati izgovorjene tipke gesla." - "Trenutno besedilo je %s" - "Ni vnesenega besedila" - "Tipka %1$s popravi %2$s v %3$s" - "Tipka %1$s izvede samopopravek" - "Ni predlogov" - "Neznan znak" - "Shift" - "Več simbolov" - "Shift" - "Simboli" - "Shift" - "Izbriši" - "Simboli" - "Črke" - "Števila" - "Nastavitve" - "Tab" - "Preslednica" - "Glasovni vnos" - "Emodžiji" - "Return" - "Iskanje" - "Pika" - "Preklop jezika" - "Naprej" - "Nazaj" - "Način »Shift« je omogočen" - "Funkcija »Caps Lock« je omogočena" - "Način simbolov" - "Način za več simbolov" - "Način črk" - "Način telefona" - "Način simbolov telefona" - "Tipkovnica je skrita" - "Prikaz tipkovnice %s" - "datum" - "datum in ura" - "e-pošta" - "sporočila" - "števila" - "telefon" - "besedilo" - "ura" - "URL" - "Nedavni" - "Osebe" - "Predmeti" - "Narava" - "Mesta" - "Simboli" - "Zastave" - "Čustveni simboli in ljudje" - "Živali in narava" - "Hrana in pijača" - "Potovanje in mesta" - "Dejavnost" - "Čustveni simboli" - "Velika črka %s" - "Velika črka I" - "Velika črka I s piko zgoraj" - "Neznan simbol" - "Neznan emodži" - "Zdolgočasen obraz" - "Obraz v zadregi" - "Obraz s sončnimi očali" - "Presenečen obraz" - "Obraz našobljenih ustnic za poljub" - "Namrščen obraz" - "Nadomestni znaki so na voljo" - "Nadomestni znaki se ne upoštevajo" - "Nadomestni predlogi so na voljo" - "Nadomestni predlogi se ne upoštevajo" + + + "Priključite slušalke, če želite slišati izgovorjene tipke gesla." + "Trenutno besedilo je %s" + "Ni vnesenega besedila" + "Tipka %1$s popravi %2$s v %3$s" + "Tipka %1$s izvede samopopravek" + "Ni predlogov" + "Neznan znak" + "Shift" + "Več simbolov" + "Shift" + "Simboli" + "Shift" + "Izbriši" + "Simboli" + "Črke" + "Števila" + "Nastavitve" + "Tab" + "Preslednica" + "Glasovni vnos" + "Emodžiji" + "Return" + "Iskanje" + "Pika" + "Preklop jezika" + "Naprej" + "Nazaj" + "Način »Shift« je omogočen" + "Funkcija »Caps Lock« je omogočena" + "Način simbolov" + "Način za več simbolov" + "Način črk" + "Način telefona" + "Način simbolov telefona" + "Tipkovnica je skrita" + "Prikaz tipkovnice %s" + "datum" + "datum in ura" + "e-pošta" + "sporočila" + "števila" + "telefon" + "besedilo" + "ura" + "URL" + "Nedavni" + "Predmeti" + "Simboli" + "Zastave" + "Čustveni simboli in ljudje" + "Živali in narava" + "Hrana in pijača" + "Potovanje in mesta" + "Dejavnost" + "Čustveni simboli" + "Velika črka %s" + "Velika črka I" + "Velika črka I s piko zgoraj" + "Nadomestni znaki so na voljo" + "Nadomestni znaki se ne upoštevajo" + "Nadomestni predlogi so na voljo" + "Nadomestni predlogi se ne upoštevajo" diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index fc1408d345..ad489b245f 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -1,193 +1,140 @@ - - - - - "Možnosti vnosa" - "Iskanje imen stikov" - "Črkovalnik uporablja vnose s seznama stikov" - "Vibriranje ob pritisku tipke" - "Zvok ob pritisku tipke" - "Povečaj črko ob pritisku" - "Nastavitve" - "Računi in zasebnost" - "Videz in postavitve" - "Pisanje s kretnjami" - "Popravki besedila" - "Dodatno" - "Tema" - "Omogoči razdeljeno tipkovnico" - "Prekl. na drug nač. vnosa" - "Tipka za preklop jezika, ki vključuje tudi druge načine vnosa" - "Tipka za preklop med jeziki" - "Pokaži, ko je omogočenih več jezikov vnosa" - "Trajanje povečanja tipke" - "Brez zakasnitve" - "Privzeto" - "%s ms" - "Sistemsko privzeto" - "Predlagaj imena stikov" - "Uporaba imen iz stikov za predloge in popravke" - "Prilagojeni predlogi" - "Izboljšava aplikacije %s" - "Dva presl. za vnos pike" - "Z dvojnim dotikom preslednice vstavite piko in za njo presledek" - "Samod. velike začetnice" - "Prvo besedo stavka piši z veliko začetnico" - "Osebni slovar" - "Dodatni slovarji" - "Glavni slovar" - "Pokaži predloge popravkov" - "Pokaži predlagane besede med tipkanjem" - "Blokiraj žaljive besede" - "Ne predlagaj potencialno žaljivih besed" - "Samodejni popravek" - "Preslednica in ločila samodejno popravijo napačno vtipkane besede" - "Izklopljeno" - "Zmerno" - "Agresivno" - "Zelo agresivno" - "Predlogi za naslednjo besedo" - "Pri predlogu upoštevaj prejšnjo besedo" - "Omogoči vnos s potezo" - "Vnos besede s podrsavanjem od črke do črke" - "Prikaži pot poteze" - "Dinamični plavajoči predogled" - "Prikaz predlagane besede med vnosom s prstom" - "Vnos besed s potezami" - "Vnos presledkov pri vnašanju s potezami z drsenjem po preslednici" - "Tipka za glasovni vnos" - "Ni omogočenih glasovnih načinov vnosa. Preverite nastavitve v razdelku »Jeziki in vnos«." - "Nastavitev načinov vnosa" - "Jeziki" - "Pomoč in povratne informacije" - "Jeziki" - "Znova se dotaknite, če želite shraniti" - "Dotaknite se tukaj, če želite shraniti" - "Slovar je na voljo" - "Tema tipkovnice" - "Preklop med računi" - "Ni izbranih računov" - "Trenutno uporabljate račun %1$s" - "V redu" - "Prekliči" - "Odjava" - "Izbira računa za uporabo" - "angleščina (Združeno kraljestvo)" - "angleščina (ZDA)" - "španščina (ZDA)" - "Hindujska angleščina" - "Srbščina (latinica)" - "angleščina (VB) (%s)" - "angleščina (ZDA) (%s)" - "španščina (ZDA) (%s)" - "Hindujska angleščina (%s)" - "Srbščina (%s)" - "%s (tradicionalna)" - "%s (kompaktna)" - "Brez jezika (latinice)" - "Latinica (QWERTY)" - "Latinica (QWERTZ)" - "Latinica (AZERTY)" - "Latinica (Dvorak)" - "Latinica (Colemak)" - "Latinica (PC)" - "Emodžiji" - "Tema za tipkovnico" - "Slogi vnosa po meri" - "Dodaj slog" - "Dodaj" - "Odstrani" - "Shrani" - "Jezik" - "Postavitev" - "Slog vnosa po meri morate omogočiti. Ali ga želite omogočiti?" - "Omogoči" - "Ne zdaj" - "Isti slog vnosa že obstaja: %s" - "Trajanje vibr. ob prit. tipke" - "Glasn. zvoka ob pritisku tipke" - "Zakasn. za dolg pritisk tipke" - "Emodžiji za fizično tipkovnico" - "Fizična tipka Alt prikaže nabor emodžijev" - "Privzeto" - "Pozdravljeni v aplikaciji %s" - "s pisanjem s kretnjami" - "Začnite" - "Naslednji korak" - "Nastavitev aplikacije %s" - "Omogočanje aplikacije %s" - "V nastavitvah »Jeziki in vnos« izberite aplikacijo »%s«. S tem ji omogočite izvajanje v napravi." - "Aplikacija %s je že omogočena v nastavitvah »Jeziki in vnos«, zato je to že opravljeno. Nadaljujte." - "Omogoči v nastavitvah" - "Preklop na aplikacijo %s" - "Nato izberite aplikacijo »%s« kot aktivni način vnosa besedila." - "Preklopi način vnosa" - "Čestitamo, pripravljeni ste." - "Zdaj lahko z aplikacijo %s tipkate v vseh svojih priljubljenih aplikacijah." - "Konfiguracija dodatnih jezikov" - "Končano" - "Pokaži ikono aplikacije" - "Prikaz ikone aplikacije v zaganjalniku" - "Ponudnik slovarja" - "Ponudnik slovarja" - "Storitev slovarja" - "Podatki o posodobitvi slovarja" - "Dodatni slovarji" - "Nastavitve za slovarje" - "Uporabniški slovarji" - "Uporabniški slovar" - "Slovar je na voljo" - "Trenutno se prenaša" - "Nameščen" - "Nameščen, onemogočen" - "Težava s povezavo" - "Ni slovarjev" - "Osveži" - "Nazadnje posodobljeno" - "Iskanje posodobitev" - "Nalaganje …" - "Glavni slovar" - "Prekliči" - "Nastavitve" - "Namesti" - "Prekliči" - "Izbriši" - "Različica %1$s" - "Dodaj" - "Dodaj v slovar" - "Besedna zveza" - "Več možnosti" - "Manj možnosti" - "V redu" - "Beseda:" - "Bližnjica:" - "Jezik:" - "Vnesite besedo" - "Izbirna bližnjica" - "Uredi besedo" - "Uredi" - "Izbriši" - "V uporabniškem slovarju ni besed. Če želite dodati besedo, se dotaknite gumba za dodajanje (+)." - "Za vse jezike" - "Več jezikov ..." - "Izbriši" - " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + + "Iskanje imen stikov" + "Vibriranje ob pritisku tipke" + "Zvok ob pritisku tipke" + "Povečaj črko ob pritisku" + "Nastavitve" + "Pisanje s kretnjami" + "Popravki besedila" + "Dodatno" + "Tema" + "Omogoči razdeljeno tipkovnico" + "Prekl. na drug nač. vnosa" + "Tipka za preklop med jeziki" + "%s ms" + "Sistemsko privzeto" + "Uporaba imen iz stikov za predloge in popravke" + "Prilagojeni predlogi" + "Dva presl. za vnos pike" + "Z dvojnim dotikom preslednice vstavite piko in za njo presledek" + "Samod. velike začetnice" + "Prvo besedo stavka piši z veliko začetnico" + "Osebni slovar" + "Glavni slovar" + "Pokaži predloge popravkov" + "Pokaži predlagane besede med tipkanjem" + "Blokiraj žaljive besede" + "Ne predlagaj potencialno žaljivih besed" + "Samodejni popravek" + "Preslednica in ločila samodejno popravijo napačno vtipkane besede" + "Izklopljeno" + "Zmerno" + "Agresivno" + "Zelo agresivno" + "Predlogi za naslednjo besedo" + "Pri predlogu upoštevaj prejšnjo besedo" + "Omogoči vnos s potezo" + "Vnos besede s podrsavanjem od črke do črke" + "Prikaži pot poteze" + "Dinamični plavajoči predogled" + "Vnos besed s potezami" + "Vnos presledkov pri vnašanju s potezami z drsenjem po preslednici" + "angleščina (Združeno kraljestvo)" + "angleščina (ZDA)" + "španščina (ZDA)" + "Hindujska angleščina" + "Srbščina (latinica)" + "%s (tradicionalna)" + "%s (kompaktna)" + "Brez jezika" + "Emodžiji" + "Dodaj" + "Odstrani" + "Shrani" + "Jezik" + "Postavitev" + "Trajanje vibr. ob prit. tipke" + "Glasn. zvoka ob pritisku tipke" + "Zakasn. za dolg pritisk tipke" + "Emodžiji za fizično tipkovnico" + "Fizična tipka Alt prikaže nabor emodžijev" + "Privzeto" + "Pozdravljeni v aplikaciji %s" + "s pisanjem s kretnjami" + "Začnite" + "Nastavitev aplikacije %s" + "Omogočanje aplikacije %s" + V nastavitvah »Jeziki in vnos« izberite aplikacijo %s«. S tem ji omogočite izvajanje v napravi.\" + "Omogoči v nastavitvah" + "Preklop na aplikacijo %s" + Nato izberite aplikacijo %s« kot aktivni način vnosa besedila.\" + "Preklopi način vnosa" + "Čestitamo, pripravljeni ste." + "Zdaj lahko z aplikacijo %s tipkate v vseh svojih priljubljenih aplikacijah." + "Končano" + "Pokaži ikono aplikacije" + "Prikaz ikone aplikacije v zaganjalniku" + "Dodatni slovarji" + "Slovar je na voljo" + "Nastavitve" + "Izbriši" + "Različica %1$s" + "Bližnjica:" + "Jezik:" + "Vnesite besedo" + "Izbirna bližnjica" + "Uredi besedo" + "Za vse jezike" + "Več jezikov …" + "Izberite način vnosa" + Interval zaupanja samodejnih popravkov + Podrsaj z vračalke, da izbereš in izbrišeš večje dele besedila naenkrat + Vsiljen prikriti način + Vedno pokaži vrstico s številkami + Prikaži namige tipk + Spremeni način vnosa s preslednico + Robovi tipk + Zgodovina odložišča + Popravki + Predlogi + Razno + Brez omejitve + %smin. + Omogoči tipko odložišča + Čas shranjevanja zgodovine + Onemogočite, da boste s tipko odložišča lahko prilepili vsebino + Več tipk + Nastavitve pregledovalnika črkovanja HeliBoard + Samodejni dnevni/nočni način + Spremeni višino tipkovnice + Poskusne možnosti + Pregledovalnik črkovanja HeliBoard + Nastavitve HeliBoard + Dodatne tipke + Vnos + Samodejni presledek za ločilom + Samodejno vstavi presledek za ločilom ob pisanju nove besede + Onemogoči učenje novih besed + Vrstica s številkami + Tipka za emotikone + Podrsaj za izbris + Prikaži namige z dolgim pritiskom + Izgled bo sledil sistemskim nastavitvam + Dolg pritisk na preslednico bo priklical meni za izbiro načina vnosa + "Razveljavi" + "Uveljavi" + "Vaša sporočila in vnesene podatke uporabi za boljše predloge" + "Pojdi" + "Napr." + "Prej." + "Konec" + "Pošl." + "Iskanje" + "Zaus." + "Čakaj" diff --git a/app/src/main/res/values-sq/strings-action-keys.xml b/app/src/main/res/values-sq/strings-action-keys.xml deleted file mode 100644 index 799f905b38..0000000000 --- a/app/src/main/res/values-sq/strings-action-keys.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - "Shko" - "Përpara" - "Prapa" - "U krye!" - "Dërgo" - "Kërko" - "Pauzë" - "Prit!" - diff --git a/app/src/main/res/values-sq/strings-config-important-notice.xml b/app/src/main/res/values-sq/strings-config-important-notice.xml deleted file mode 100644 index 7d576d9a36..0000000000 --- a/app/src/main/res/values-sq/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "Mëso nga komunikimet dhe të dhënat e shkruara për të përmirësuar sugjerimet" - diff --git a/app/src/main/res/values-sq/strings-emoji-descriptions.xml b/app/src/main/res/values-sq/strings-emoji-descriptions.xml deleted file mode 100644 index a2cf922a92..0000000000 --- a/app/src/main/res/values-sq/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "Shenja e të drejtës së autorit" - "Shenja e regjistruar" - "Dy pikëçuditje" - "Pikëçuditje dhe pikëpyetje" - "Shenjë marke tregtare" - "Burim informacioni" - "Shigjetë majtas-djathtas" - "Shigjetë lart-poshtë" - "Shigjetë veriperëndim" - "Shigjetë verilindje" - "Shigjetë juglindje" - "Shigjetë jugperëndim" - "Shigjetë majtas me grremç" - "Shigjetë djathtas me grremç" - "Orë" - "Orë qelqi" - - - - - "Trekëndësh i dyfishtë i zi me drejtim djathtas" - "Trekëndësh i dyfishtë i zi me drejtim majtas" - "Trekëndësh i dyfishtë i zi me drejtim lart" - "Trekëndësh i dyfishtë i zi me drejtim poshtë" - - - - - - - "Orë me zile" - - - - - "Orë me rërë" - - - - - - - "Germa e madhe latine e rrethuar M" - "Katror i vogël i zi" - "Katror i vogël i bardhë" - "Trekëndësh i zi me drejtim djathtas" - "Trekëndësh i zi me drejtim majtas" - "Katror mesatar i bardhë" - "Katror mesatar i zi" - "Katror i vogël mesatar i bardhë" - "Katror i vogël mesatar i zi" - "Diell i zi me rreze" - "Re" - - - - - - - "Telefon i zi" - "Kuti votimi e verifikuar" - "Çadër me pika shiu" - "Pije e nxehtë" - - - "Indeks i bardhë me drejtim lart" - - - - - - - - - - - - - - - - - - - "Fytyrë e bardhë e buzëqeshur" - "Dashi" - "Demi" - "Binjakët" - "Gaforrja" - "Luani" - "Virgjëresha" - "Peshorja" - "Akrepi" - "Shigjetari" - "Bricjapi" - "Ujori" - "Peshqit" - "Lulja maç i zi" - "Lulja spathi i zi" - "Lulja kupë e zezë" - "Lulja karo e zezë" - "Burime termale" - "Simboli i zi i riciklimit universal" - "Simboli i karriges me rrota" - - - "Spirancë" - - - - - - - - - - - - - "Tabelë paralajmërimi" - "Tabela \"Tension i lartë\"" - "Rreth mesatar i bardhë" - "Rreth mesatar i zi" - - - - - "Top futbolli" - "Bejsboll" - "Burrë dëbore pa dëborë" - "Diell mbrapa reve" - - - "Ofjukus (mbajtësi i gjarprit)" - - - - - - - "Ndalohet hyrja" - - - "Kishë" - - - - - "Burim" - "Flamur në vrimë" - - - "Varkë lundrimi" - - - - - - - "Tendë" - "Pompë karburanti" - "Gërshërë të zeza" - "Shenjë e bardhë e rënduar verifikimi" - "Aeroplan" - "Zarf" - "Grusht i ngritur" - "Dorë e ngritur" - "Dorë fitoreje" - - - "Laps" - "Majë pene e zezë" - "Shenjë e rënduar verifikimi" - "X e rënduar e shumëzimit" - - - - - "Xixëllima" - "Yllth me tetë cepa" - "Yll i zi me tetë cepa" - "Flok dëbore" - "Xixë" - "Shenjë kryqëzimi" - "Shenjë kryqëzimi i negatives në katror" - "Zbukurim i pikëpyetjes së zezë" - "Zbukurim i pikëpyetjes së bardhë" - "Zbukurim i pikëçuditjes së bardhë" - "Simbol i pikëçuditjes së rënduar" - - - "Zemër e zezë e rënduar" - "Shenjë e plusit të rënduar" - "Shenjë e minusit të rënduar" - "Shenjë e pjesëtimit të rënduar" - "Shigjetë e zezë djathtas" - "Lak i përdredhur" - "Lak i përdredhur dy herë" - "Shigjetë me drejtim djathtas pastaj lart" - "Shigjetë me drejtim djathtas pastaj poshtë" - "Shigjetë e zezë majtas" - "Shigjetë e zezë lart" - "Shigjetë e zezë poshtë" - "Katror i madh i zi" - "Katror i madh i bardhë" - "Yll mesatar i bardhë" - "Rreth i madh i rënduar" - "Vizë lidhëse e dallgëzuar" - "Shenjë alternimi të pjesës" - "Hieroglif i rrethuar përgëzimi" - "Hieroglif i rrethuar sekreti" - "Dragoi i kuq i pllakës \"Mahjong\"" - "Xholi i zi në lojën me letra" - "Grupi i gjakut A" - "Grupi i gjakut B" - "Grupi i gjakut O" - "Vend parkimi" - "Grupi i gjakut AB" - "\"CL\" në katror" - "\"Elegant\" në katror" - "\"I lirë\" në katror" - "\"ID\" në katror" - "\"I ri\" në katror" - "\"Jo mirë\" në katror" - "\"Në rregull!\" në katror" - "\"SOS\" në katror" - "\"Pikëçuditje\" në katror" - "\"vs\" në katror" - "\"Katakana\" në katror" - "\"Shërbimi katakana\" në katror" - "\"Hieroglifi pa pagesë\" në katror" - "\"Hieroglifi e rezervuar\" në katror" - "\"Hieroglifi e ndaluar\" në katror" - "\"Hieroglifi boshe\" në katror" - "\"Hieroglifi pranimi\" në katror" - "\"Hieroglifi zënie e plotë\" në katror" - "\"Hieroglifi e paguar\" në katror" - "\"Hieroglifi mujore\" në katror" - "\"Hieroglifi aplikacioni\" në katror" - "\"Hieroglifi zbritjeje\" në katror" - "\"Hieroglifi në biznes\" në katror" - "\"Hieroglifi avantazhi\" në rreth" - "\"Hieroglifi pranimi\" në rreth" - "Ciklon" - "Mjegull" - "Çadër e mbyllur" - "Natë me yje" - "Lindje dielli mbi male" - "Lindje dielli" - "Peizazhi qyteti në muzg" - "Perëndim mbi ndërtesa" - "Ylber" - "Urë natën" - "Dallgë uji" - "Vullkan" - "Rruga e Qumështit" - "Toka, Evropë-Afrikë" - "Toka, Amerikat" - "Toka, Azi-Australi" - "Globi me meridianë" - "Simboli i hënës së re" - "Simboli i gjysmëhënës së zbehur" - "Simboli i hënës së tremujorit të parë" - "Simboli i hënës gungaçe të zbehur" - "Simboli i hënës së plotë" - "Simboli i hënës gungaçe të venitur" - "Simboli i hënës së tremujorit të fundit" - "Simboli i gjysmëhënës së venitur" - "Gjysmëhënë" - "Hënë e re me fytyrë" - "Hëna e tremujorit të parë me fytyrë" - "Hëna e tremujorit të fundit me fytyrë" - "Hëna e plotë me fytyrë" - "Dielli me fytyrë" - "Yll i përflakur" - "Meteor" - - - - - - - - - - - - - - - - - - - - - - - - - - - "Gështenjë" - "Filiz" - "Pemë me gjelbërim të përhershëm" - "Pemë gjetherënëse" - "Palmë" - "Kaktus" - - - "Tulipan" - "Qershi e lulëzuar" - "Trëndafil" - "Hibiskus" - "Luledielli" - "Lulëzim" - "Misër" - "Oriz" - "Bar" - "Tërfil me katër gjethe" - "Gjethe panje" - "Gjethe e rënë" - "Gjethe duke u valëvitur në erë" - "Këpurdhë" - "Domate" - "Patëllxhan" - "Verige rrushi" - "Pjepër" - "Shalqi" - "Mandarinë" - "Limon" - "Banane" - "Ananas" - "Mollë e kuqe" - "Mollë e gjelbër" - "Dardhë" - "Pjeshkë" - "Qershi" - "Luleshtrydhe" - "Hamburger" - "Copë pice" - "Mish në kockë" - "Këmbë pule" - "Biskotë me oriz" - "Top orizi" - "Oriz i gatuar" - "Mish me oriz" - "Tas që avullon" - "Makarona" - "Bukë" - "Patate të skuqura" - "Patate të pjekura" - "Dango" - "Oden" - "Sushi" - "Karkalec i skuqur" - "Kek peshku me formë vorbulle" - "Akullore e butë" - "Akull i shkrirë" - "Akullore" - "Petull e ëmbël" - "Biskotë" - "Çokollatë" - "Karamele" - "Lëpirëse" - "Krem karamel" - "Vazo me mjaltë" - "Kek i shkurtër" - "Tabaka ushqimi" - "Tenxhere ushqimi" - "Gatim" - "Pirun dhe thikë" - "Filxhan çaji pa bisht" - "Shishe sake dhe filxhan" - "Gotë vere" - "Gotë kokteji" - "Pije tropikale" - "Krikëll" - "Kriklla duke u trokitur" - "Biberon" - - - - - - - "Fjongo" - "Dhuratë e mbështjellë" - "Kek ditëlindjeje" - "Kungull hallouni" - "Pemë Krishtlindjesh" - "Babagjyshi i Vitit të Ri" - "Fishekzjarrë" - "Fishekzjarr xixëllues" - "Tullumbace" - "Sustë fishekzjarrësh" - "Top konfeti" - "Pemë tanabata" - "Flamuj të kryqëzuar" - "Dekorim pishe" - "Kukulla japoneze" - "Shirit gjarpërues krapi" - "Zile ere" - "Ceremonia e shikimit të hënës" - "Çantë shkolle" - "Kapele diplomimi" - - - - - - - - - - - - - - - "Kalë karuseli" - "Karusel" - "Tren elektrik" - "Grep peshkimi dhe peshk" - "Mikrofon" - "Kamerë filmimi" - "Kinema" - "Kufje" - "Paletë piktori" - "Kapelë e lartë" - "Tendë cirku" - "Biletë" - "Tabelë sinkronizimi" - "Arte interpretimi" - "Videolojë" - "Goditje e drejtpërdrejtë" - "Makineri me monedhë" - "Bilardo" - "Zara loje" - "Lojë me birila" - "Letra bixhozi me lule" - "Notë muzikore" - "Nota të shumta muzikore" - "Saksofon" - "Kitarë" - "Tastierë muzikore" - "Trumpetë" - "Violinë" - "Pentagram muzikor" - "Bluzë vrapimi me shirit" - "Raketë tenisi dhe top" - "Ski dhe çizme skish" - "Basketboll dhe kosh" - "Flamur me katrorë" - "Dërrasë skie" - "Vrapues" - "Sërfist" - - - "Trofe" - "Gara me kuaj" - "Futboll amerikan" - "Futboll \"ragbi\"" - "Notues" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Shtëpi" - "Shtëpi me kopsht" - "Zyrë" - "Zyrë postare japoneze" - "Zyrë postare evropiane" - "Spital" - "Bankë" - "Bankomat" - "Hotel" - "Hotel të dashuruarish" - "Dyqan" - "Shkollë" - "Mapo industriale" - "Fabrikë" - "Fanar \"izakaja\"" - "Kështjellë japoneze" - "Kështjellë evropiane" - - - - - - - - - - - - - - - - - - - - - - - - - "Mi i madh" - "Mi" - "Dem" - "Buall uji" - "Lopë" - - - "Leopard" - "Lepur" - "Mace" - "Dragua" - "Krokodil" - "Balenë" - "Kërmill" - "Gjarpër" - "Kalë" - "Dash" - "Dhi" - "Dele" - "Majmun" - "Gjel" - "Pulë" - "Qen" - "Derr" - "Derr i egër" - "Elefant" - "Oktapod" - "Guaskë spirale" - "Tartabiq" - "Milingonë" - "Bletë" - "Nusepashkë" - "Peshk" - "Peshk tropikal" - "Peshk i fryrë" - "Breshkë" - "Zog që del nga veza" - "Zog pule" - "Zog pule me pamje nga para" - "Zog" - "Pinguin" - "Koala" - "Qen qimedredhur" - "Gamile" - "Deve baktriane" - "Delfin" - "Fytyrë miu" - "Fytyrë lope" - "Fytyrë tigri" - "Fytyrë lepuri" - "Fytyrë maceje" - "Fytyrë dragoi" - "Balenë gufuese" - "Fytyrë kali" - "Fytyrë majmuni" - "Fytyrë qeni" - "Fytyrë derri" - "Fytyrë bretkose" - "Fytyrë brejtësi" - "Fytyrë ujku" - "Fytyrë ariu" - "Fytyrë pande" - "Hundë derri" - "Gjurmë putrash" - - - "Sy" - - - "Vesh" - "Hundë" - "Gojë" - "Gjuhë" - "Gisht tregues për lart" - "Gisht tregues për poshtë" - "Gisht tregues majtas" - "Gisht tregues djathtas" - "Shenja e grushtit" - "Shenja e dorës së valëzuar" - "Shenja e dorës \"Në rregull\"" - "Shenja e \"Gishtit lart\"" - "Shenja e \"Gishtit poshtë\"" - "Shenja e duarve në duartrokitje" - "Shenja e duarve të hapura" - "Kurorë" - "Kapelë gruaje" - "Syze" - "Kravatë" - "Bluzë" - "Xhinse" - "Fustan" - "Kimono" - "Bikini" - "Veshje grash" - "Kuletë" - "Çantë dore" - "Çantë e vogël" - "Këpucë burrash" - "Atlete" - "Këpucë me takë të lartë" - "Sandale grash" - "Çizme grash" - "Gjurmë këmbësh" - "Bust në siluetë" - "Buste në siluetë" - "Djalë" - "Vajzë" - "Burrë" - "Grua" - "Familje" - "Burrë e grua kapur për duarsh" - "Dy burra kapur për duarsh" - "Dy gra kapur për duarsh" - "Oficer policie" - "Grua me veshë lepuri" - "Nuse me vello" - "Njeri flokëverdhë" - "Burrë me qeleshe \"gua pi mao\"" - "Burrë me çallmë" - "Burrë i moshuar" - "Grua e moshuar" - "Bebe" - "Punëtor ndërtimi" - "Princeshë" - "Maskë japoneze" - "Krijesë djallëzore japoneze" - "Fantazmë" - "Bebe engjëll" - "Jashtëtokësor" - "Përbindësh jashtëtokësor" - "Demon" - "Kafkë" - "Personi i zyrës së informacionit" - "Rojë" - "Kërcimtar" - "Buzëkuq" - "Lustër thonjsh" - "Masazh fytyre" - "Prerje flokësh" - "Simboli i berberit" - "Shiringë" - "Pilulë" - "Shenjë puthjeje" - "Letër dashurie" - "Unazë" - "Gur i çmuar" - "Puthje" - "Buqetë" - "Çift me zemër" - "Dasmë" - "Zemër që rreh" - "Zemër e thyer" - "Dy zemra" - "Zemër xixëlluese" - "Zemër në rritje" - "Zemër me shigjetë" - "Zemër e kaltër" - "Zemër e gjelbër" - "Zemër e verdhë" - "Zemër vjollcë" - "Zemër me fjongo" - "Zemra rrotulluese" - "Zbukurim zemre" - "Formë diamanti me një pikë brenda" - "Llambë elektrike" - "Simboli i zemërimit" - "Bombë" - "Simboli i gjumit" - "Simboli i përplasjes" - "Simboli i fshirjes së djersës" - "Pikëz" - "Simboli i vizës lidhëse" - "Grumbull jashtëqitjeje" - "Muskul i tendosur" - "Simboli me trullosje" - "Tullumbace ligjërate" - "Tullumbace mendimi" - "Lule e bardhë" - "Simboli i një qind pikëve" - "Çantë parash" - "Këmbim valutor" - "Shenja e dollarit të rëndë" - "Kart krediti" - "Kartëmonedhë me shenjën e jenit" - "Kartëmonedhë me shenjën e dollarit" - "Kartëmonedhë me shenjën e euros" - "Kartëmonedhë me shenjën e sterlinës" - "Para me krahë" - "Grafik me tendencë rritjeje dhe shenjën e jenit" - "Ndenjëse" - "Kompjuter personal" - "Valixhe" - "Minidisk" - "Disketë" - "Disk optik" - "DVD" - "Dosje skedari" - "Dosje skedari e hapur" - "Faqe me përdredhje" - "Faqe me pamje nga para" - "Kalendar" - "Kalendar që griset" - "Kartë indeksi" - "Grafik me tendencë rritjeje" - "Grafik me tendencë zbritjeje" - "Grafik me shtylla" - "Kujtesa e fragmenteve" - "Gjilpërë me kokë" - "Gjilpërë e rrumbullakët me kokë" - "Kapëse letrash" - "Vizore drejtimi" - "Vizore drejtkëndore" - "Lidhëse faqeshënuesi" - "Libër llogarish" - "Fletore" - "Fletore me kopertinë dekorative" - "Libër i mbyllur" - "Libër i hapur" - "Libër i gjelbër" - "Libër i kaltër" - "Libër portokalli" - "Libra" - "Distinktiv emri" - "Dorëshkrim i mbledhur rrotull" - "Memorandum" - "Receptor" - "Biper" - "Makineri faksi" - "Antenë satelitore" - "Altoparlant për adresimin e publikut" - "Megafon për brohoritje" - "Kutia e postës dalëse" - "Kutia e postës hyrëse" - "Paketë" - "Simboli i mail-it" - "Zarf në ardhje" - "Zarf me shigjetë sipër" - "Kuti e mbyllur postare me flamur të ulur" - "Kuti e mbyllur postare me flamur të ngritur" - "Kuti e hapur postare me flamur të ngritur" - "Kuti e hapur postare me flamur të ulur" - "Kuti postare" - "Briri postar" - "Gazetë" - "Celular" - "Celular me shigjetë djathtas në të majtë" - "Modalitet dridhjeje" - "Celular i fikur" - "Ndalohen celularët" - "Antenë me sinjal me vija" - "Kamerë" - - - "Video-kamerë" - "Televizor" - "Radio" - "Videokasetë" - - - - - "Shigjeta të përdredhura me drejtim djathtas" - "Shigjeta me rreth të hapur me drejtim djathtas e majtas të akrepit të orës" - "Shigjeta me rreth të hapur e të mbushur me drejtim djathtas e majtas të akrepit të orës" - "Shigjeta me rreth të hapur me drejtim poshtë e lart të akrepit të orës" - "Shigjeta me rreth të hapur me drejtim të kundërt poshtë e lart të akrepit të orës" - "Simbol i ndriçimit të ulët" - "Simboli i ndriçimit të lartë" - "Altoparlant me vizë anulimi" - "Altoparlant" - "Altoparlant me një valë zëri" - "Altoparlant me tre valë zëri" - "Bateri" - "Spinë" - "Lupë me drejtim majtas" - "Lupë me drejtim djathtas" - "Kyç me stilograf" - "Kyç i mbyllur me çelës" - "Çelës" - "Kyç" - "Kyç i hapur" - "Zile" - "Zile me vizë anulimi" - "Faqeshënues" - "Simbol i lidhjes" - "Butoni i radios" - "Prapa me shigjetë majtas sipër" - "Fund me shigjetë majtas sipër" - "Aktivizuar me pikëçuditje dhe me shigjetë majtas-djathtas sipër" - "Së shpejti me shigjetë djathtas sipër" - "Majë me shigjetë lart sipër" - "Simboli \"Ndalohet nën moshën 18 vjeç\"" - "Butoni dhjetë i mbuluar" - "Simbol hyrës për germa të mëdha latine" - "Simbol hyrës për germa të vogla latine" - "Simbol hyrës për numra" - "Simbol hyrës për simbole" - "Simbol hyrës për germa latine" - "Zjarr" - "Elektrik" - "Çelës anglez" - "Çekiç" - "Dado dhe bulon" - "Thikë hoço" - "Pistoletë" - "Mikroskop" - "Teleskop" - "Sferë kristali" - "Yll me gjashtë cepa me pikë në mes" - "Simbol japonez për fillestarët" - "Emblemë sfurku tredhëmbësh" - "Butoni i katrorit të zi" - "Butoni i katrorit të bardhë" - "Rreth i madh i kuq" - "Rreth i madh i kaltër" - "Diamant i madh portokalli" - "Diamant i madh i kaltër" - "Diamant i vogël portokalli" - "Diamant i vogël i kaltër" - "Trekëndësh i kuq me drejtim lart" - "Trekëndësh i kuq me drejtim poshtë" - "Trekëndësh i vogël i kuq me drejtim lart" - "Trekëndësh i vogël i kuq me drejtim poshtë" - - - - - - - - - - - - - "Orë që tregon orën një" - "Orë që tregon orën dy" - "Orë që tregon orën tre" - "Orë që tregon orën katër" - "Orë që tregon orën pesë" - "Orë që tregon orën gjashtë" - "Orë që tregon orën shtatë" - "Orë që tregon orën tetë" - "Orë që tregon orën nëntë" - "Orë që tregon orën dhjetë" - "Orë që tregon orën njëmbëdhjetë" - "Orë që tregon orën dymbëdhjetë" - "Orë që tregon orën një e tridhjetë" - "Orë që tregon orën dy e tridhjetë" - "Orë që tregon orën tre e tridhjetë" - "Orë që tregon orën katër e tridhjetë" - "Orë që tregon orën pesë e tridhjetë" - "Orë që tregon orën gjashtë e tridhjetë" - "Orë që tregon orën shtatë e tridhjetë" - "Orë që tregon orën tetë e tridhjetë" - "Orë që tregon orën nëntë e tridhjetë" - "Orë që tregon orën dhjetë e tridhjetë" - "Orë që tregon orën njëmbëdhjetë e tridhjetë" - "Orë që tregon orën dymbëdhjetë e tridhjetë" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Mali Fuxhi" - "Kulla e Tokios" - "Statuja e Lirisë" - "Siluetë e Japonisë" - "Statuja e Mojait" - "Fytyrë e qeshur" - "Fytyrë e qeshur me sy të qeshur" - "Fytyrë me lot gëzimi" - "Fytyrë e buzëqeshur me gojë hapur" - "Fytyrë e buzëqeshur me gojë hapur dhe sy të qeshur" - "Fytyrë e buzëqeshur me gojë hapur dhe djersë të ftohta" - "Fytyrë e buzëqeshur me gojë hapur dhe sy të mbyllur fort" - "Fytyrë e buzëqeshur me aureolë" - "Fytyrë e buzëqeshur me brirë" - "Fytyrë me shkelje syri" - "Fytyrë e buzëqeshur me sy të qeshur" - "Fytyrë duke provuar ushqim të shijshëm" - "Fytyrë e çliruar" - "Fytyrë e buzëqeshur me sy në formë zemre" - "Fytyrë e buzëqeshur me syze" - "Fytyrë me buzëqeshje të vetëkënaqur" - "Fytyrë neutrale" - "Fytyrë pa shprehje" - "Fytyrë jo e kënaqur" - "Fytyrë me djersë të ftohta" - "Fytyrë e menduar" - "Fytyrë e hutuar" - "Fytyrë e inatosur" - "Fytyrë puthëse" - "Fytyrë duke dhënë puthje" - "Fytyrë puthëse me sy të qeshur" - "Fytyrë puthëse me sy të mbyllur" - "Fytyrë me gjuhë të nxjerrë" - "Fytyrë me gjuhë të nxjerrë dhe sy të shkelur" - "Fytyrë me gjuhë të nxjerrë dhe sy të mbyllur fort" - "Fytyrë e zhgënjyer" - "Fytyrë e shqetësuar" - "Fytyrë e nxehur" - "Fytyrë e varur" - "Fytyrë që qan" - "Fytyrë këmbëngulëse" - "Fytyrë me pamje triumfi" - "Fytyrë e zhgënjyer, por e çliruar" - "Fytyrë e vrenjtur me gojë hapur" - "Fytyrë në ankth" - "Fytyrë e frikësuar" - "Fytyrë e lodhur" - "Fytyrë e përgjumur" - "Fytyrë e lodhur" - "Fytyrë e ngërdheshur" - "Fytyrë duke qarë me të madhe" - "Fytyrë me gojë hapur" - "Fytyrë e heshtur" - "Fytyrë me gojë hapur dhe djersë të ftohta" - "Fytyrë që ulërin në frikë" - "Fytyrë e habitur" - "Fytyrë e skuqur" - "Fytyrë e përgjumur" - "Fytyrë e trullosur" - "Fytyrë pa gojë" - "Fytyrë me maskë mjekësore" - "Fytyrë e qeshur maceje me sy të qeshur" - "Fytyrë maceje me lot gëzimi" - "Fytyrë e buzëqeshur maceje me gojë hapur" - "Fytyrë e buzëqeshur maceje me sy në formë zemre" - "Fytyrë maceje me buzëqeshje të sforcuar" - "Fytyrë puthëse maceje me sy të mbyllur" - "Fytyrë e varur maceje" - "Fytyrë maceje në qarje" - "Fytyrë e lodhur maceje" - - - - - - - - - "Fytyrë pa gjest të mirë" - "Fytyrë me gjest të mirë" - "Njeri që përkulet thellësisht" - "Majmuni që nuk shikon" - "Majmuni që nuk dëgjon" - "Majmuni që nuk flet" - "Njeri i lumtur duke ngritur dorën" - "Njeri duke ngritur të dy duart në festim" - "Njeri i vrenjtur" - "Njeri me fytyrë të varur" - "Njeri me duar të palosura" - "Raketë" - "Helikopter" - "Lokomotivë me avull" - "Vagon hekurudhor" - "Tren i shpejtësisë së lartë" - "Tren i shpejtësisë së lartë me hundë plumbi" - "Tren" - "Metro" - "Hekurudhë për trafik jo të ngarkuar" - "Stacion" - "Tramvaj" - "Vagon tramvaji" - "Autobus" - "Autobus në ardhje" - "Autobus elektrik" - "Stacioni autobusi" - "Mikrobus" - "Ambulancë" - "Zjarrfikës" - "Makinë policie" - "Makinë policie në ardhje" - "Taksi" - "Taksi në ardhje" - "Automobil" - "Automobil në ardhje" - "Rulotë" - "Kamion furnizimi" - "Kamion me rimorkio" - "Traktor" - "Hekurudhë me një shinë" - "Hekurudhë në mal" - "Hekurudhë e varur" - "Teleferik mali" - "Tramvaj në ajër" - "Anije" - "Varkë për vozitje" - "Motoskaf" - "Semafor horizontal" - "Semafor vertikal" - "Tabelë ndërtimi" - "Makina policie me sirenë ndezur" - "Flamur trekëndësh në shtizë" - "Derë" - "Tabelë \"Ndalohet hyrja\"" - "Simboli i duhanpirjes" - "Simboli \"Ndalohet duhani\"" - "Simboli \"Hidhini mbeturinat në vendin e duhur\"" - "Simboli \"Mos hidhni mbeturina\"" - "Simboli \"Ujë i pijshëm\"" - "Simboli \"Ujë jo i pijshëm\"" - "Biçikletë" - "Ndalohen biçikletat" - "Çiklist" - "Çiklist mali" - "Këmbësor" - "Ndalohen këmbësorët" - "Fëmijë duke kaluar rrugën" - "Simboli i burrave" - "Simboli i grave" - "Banjë" - "Simboli i bebes" - "Tualet" - "WC" - "Dush" - "Banjë" - "Vaskë" - "Kontroll i pasaportave" - "Doganë" - "Marrja e bagazheve" - "Bagazhet e mbetura" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-sq/strings-letter-descriptions.xml b/app/src/main/res/values-sq/strings-letter-descriptions.xml deleted file mode 100644 index c14cb76732..0000000000 --- a/app/src/main/res/values-sq/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "Tregues rendor femëror" - "Shenjë mikro" - "Tregues rendor mashkullor" - "S e thekshme" - "A jo e mprehtë" - "A e mprehtë" - "A me theks lakor" - "A me tildë" - "A hiat" - "A me unazë sipër" - "A, E, me vizë bashkuese" - "C me bisht" - "E jo e mprehtë" - "E e mprehtë" - "E me theks lakor" - "E hiat" - "I jo e mprehtë" - "I e mprehtë" - "I me theks lakor" - "I hiat" - "Eth" - "N me tildë" - "O jo e mprehtë" - "O e mprehtë" - "O me theks lakor" - "O me tildë" - "O hiat" - "O me prerje" - "U jo e mprehtë" - "U e mprehtë" - "U me theks lakor" - "U hiat" - "Y e mprehtë" - "Gjemb" - "Y hiat" - "A me vijë sipër" - "A e shkurtër" - "A me bisht të vogël" - "C e mprehtë" - "C me hark lakor" - "C me pikë sipër" - "C me çengel sipër" - "D me çengel sipër" - "D me prerje" - "E me vijë sipër" - "E e shkurtër" - "E me pikë sipër" - "E me bisht të vogël" - "E me çengel sipër" - "G me hark lakor" - "G e shkurtër" - "G me pikë sipër" - "G me bisht" - "H me hark lakor" - "H me prerje" - "I me tildë" - "I me vijë sipër" - "I e shkurtër" - "I me bisht të vogël" - "I pa pikë" - "I, J me vizë bashkuese" - "J me hark lakor" - "K me bisht" - "Kra" - "L e mprehtë" - "L me bisht" - "L me çengel sipër" - "L me pikë në mes" - "L me prerje" - "N e mprehtë" - "N me bisht" - "N me çengel sipër" - "N e paraprirë nga apostrofa" - "Ang" - "O me vijë sipër" - "O e shkurtër" - "O, dyfish e mprehtë" - "O, E me vizë bashkuese" - "R e mprehtë" - "R me bisht" - "R me çengel sipër" - "S e mprehtë" - "S me hark lakor" - "S me bisht" - "S me çengel sipër" - "T me bisht" - "T me çengel sipër" - "T me prerje" - "U me tildë" - "U me vijë sipër" - "U e shkurtër" - "U me unazë sipër" - "U, dyfish e mprehtë" - "U me bisht të vogël" - "W me hark lakor" - "Y me hark lakor" - "Z e mprehtë" - "Z me pikë sipër" - "Z me çengel sipër" - "S e gjatë" - "O me bri" - "U me bri" - "S me presje sipër" - "T me presje sipër" - "Schwa (e, e përmbysur)" - "A me pikë sipër" - "A me grremç sipër" - "A me hark lakor dhe e mprehtë" - "A me hark lakor dhe jo e mprehtë" - "A me hark lakor dhe me grremç sipër" - "A me hark lakor dhe me tildë" - "A me hark lakor dhe pikë sipër" - "A e shkurtër dhe e mprehtë" - "A shkurtër dhe jo e mprehtë" - "A e shkurtër dhe me grremç sipër" - "A e shkurtër dhe me tildë" - "A e shkurtër dhe me pikë sipër" - "E me pikë sipër" - "E me grremç sipër" - "E me tildë" - "E me hark lakor dhe e mprehtë" - "E me hark lakor dhe jo e mprehtë" - "E me hark lakor dhe me grremç sipër" - "E me hark lakor dhe me tildë" - "E me hark lakor dhe me pikë sipër" - "I me grremç sipër" - "I me pikë sipër" - "O me pikë sipër" - "O me grremç sipër" - "O me hark lakor dhe e mprehtë" - "O me hark lakor dhe jo e mprehtë" - "O me hark lakor dhe me grremç sipër" - "O me hark lakor dhe me tildë" - "O me hark lakor dhe pikë sipër" - "O me bri dhe e mprehtë" - "O me bri dhe jo e mprehtë" - "O me bri dhe grremç sipër" - "O me bri dhe me tildë" - "O me bri dhe pikë sipër" - "U me pikë sipër" - "U me grremç sipër" - "U me bri dhe e mprehtë" - "U me bri dhe jo e mprehtë" - "U me bri dhe grremç sipër" - "U me bri dhe me tildë" - "U me bri dhe pikë sipër" - "Y jo e mprehtë" - "Y me pikë sipër" - "Y me grremç sipër" - "Y me tildë" - "Pikëçuditje e kthyer përmbys" - "Shenjë citimi me kënd të dyfishtë me drejtim majtas" - "Pikë në mes" - "Një, i indeksuar sipër" - "Shenjë citimi me kënd të dyfishtë me drejtim djathtas" - "Shenjë citimi kthyer përmbys" - "Shenjë e vetme citimi majtas" - "Shenjë e vetme citimi djathtas" - "Shenjë e vetme citimi në formë 9 të ulët" - "Shenjë e dyfishtë citimi majtas" - "Shenjë e dyfishtë citimi djathtas" - "Kryq" - "Kryq i dyfishtë" - "Shenja për mijë" - "Numër prim" - "Numër i dyfishtë prim" - "Shenjë citimi me kënd të dyfishtë me drejtim majtas" - "Shenjë citimi me kënd të dyfishtë me drejtim djathtas" - "Katër, e indeksuar sipër" - "Germa e vogël latine n e indeksuar sipër" - "shenja e pesos" - "Në ngarkim të" - "Shigjetë majtas" - "Shigjetë poshtë" - "Komplet bosh" - "Rritje" - "Më e vogël ose baras me" - "Më e madhe ose baras me" - "Yll i zi" - diff --git a/app/src/main/res/values-sq/strings-talkback-descriptions.xml b/app/src/main/res/values-sq/strings-talkback-descriptions.xml index 23f5a7ef33..f93e9f7d63 100644 --- a/app/src/main/res/values-sq/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-sq/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "Fut kufjet për të dëgjuar me zë të lartë tastet e fjalëkalimit" - "Teksti aktual është %s" - "Nuk ka tekst" - "%1$s korrigjon %2$s%3$s" - "%1$s kryen auto-korrigjim" - "Nuk ka asnjë sugjerim" - "Karakter i panjohur" - "Shift" - "Shumë simbole" - "Shift" - "Simbole" - "Shift" - "Fshi" - "Simbole" - "Shkronja" - "Numra" - "Cilësimet" - "Tab" - "Hapësirë" - "Të dhëna zanore" - "\"Emoji\"" - "Kthehu prapa" - "Kërko" - "Pikë" - "Ndrysho gjuhën" - "Përpara" - "Prapa" - "Shifti është i aktivizuar" - "Kapitalizimi është i aktivizuar" - "Modaliteti i simboleve" - "Modaliteti i shumë simboleve" - "Modaliteti i shkronjave" - "Modaliteti i telefonit" - "Modaliteti i simboleve të telefonit" - "Tastiera është e fshehur" - "Po shfaq %s e tastierës" - "datën" - "datën dhe orën" - "mail-in" - "mesazhet" - "numrin" - "telefonin" - "tekstin" - "orën" - "URL-në" - "Të fundit" - "Njerëz" - "Objekte" - "Natyrë" - "Vende" - "Simbole" - "Flamuj" - "Buzëqeshje dhe persona" - "Kafshët dhe natyra" - "Pije dhe ushqime" - "Udhëtime dhe vende" - "Aktivitet" - "Ikonat e emocioneve" - "Kapitalja e %s" - "I e madhe" - "I e madhe me pikë sipër" - "Simbol i panjohur" - "\"Emoji\" i panjohur" - "Fytyrë e mërzitur" - "Fytyrë e turpëruar" - "Fytyrë me syze" - "Fytyrë e çuditur" - "Fytyrë puthëse" - "Fytyrë e vrenjtur" - "Karaktere alternative mundësohen gjithashtu" - "Karakteret alternative hiqen" - "Sugjerime alternative mundësohen gjithashtu" - "Sugjerimet alternative hiqen" + + + "Fut kufjet për të dëgjuar me zë të lartë tastet e fjalëkalimit" + "Teksti aktual është %s" + "Nuk ka tekst" + "%1$s korrigjon %2$s%3$s" + "%1$s kryen auto-korrigjim" + "Nuk ka asnjë sugjerim" + "Karakter i panjohur" + "Shift" + "Shumë simbole" + "Shift" + "Simbole" + "Shift" + "Fshi" + "Simbole" + "Shkronja" + "Numra" + "Cilësimet" + "Tab" + "Hapësirë" + "Të dhëna zanore" + "\"Emoji\"" + "Kthehu prapa" + "Kërko" + "Pikë" + "Ndrysho gjuhën" + "Përpara" + "Prapa" + "Shifti është i aktivizuar" + "Kapitalizimi është i aktivizuar" + "Modaliteti i simboleve" + "Modaliteti i shumë simboleve" + "Modaliteti i shkronjave" + "Modaliteti i telefonit" + "Modaliteti i simboleve të telefonit" + "Tastiera është e fshehur" + "Po shfaq %s e tastierës" + "datën" + "datën dhe orën" + "mail-in" + "mesazhet" + "numrin" + "telefonin" + "tekstin" + "orën" + "URL-në" + "Të fundit" + "Objekte" + "Simbole" + "Flamuj" + "Buzëqeshje dhe persona" + "Kafshët dhe natyra" + "Pije dhe ushqime" + "Udhëtime dhe vende" + "Aktivitet" + "Ikonat e emocioneve" + "Kapitalja e %s" + "I e madhe" + "I e madhe me pikë sipër" + "Karaktere alternative mundësohen gjithashtu" + "Karakteret alternative hiqen" + "Sugjerime alternative mundësohen gjithashtu" + "Sugjerimet alternative hiqen" diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml index b594170058..4f124a6a29 100644 --- a/app/src/main/res/values-sq/strings.xml +++ b/app/src/main/res/values-sq/strings.xml @@ -1,193 +1,107 @@ - - - - "Opsionet e hyrjes" - "Kërko emra kontakti" - "Kontrolluesi drejtshkrimor përdor fjalë të futura nga kontaktet e tua" - "Lësho dridhje kur shtyp tastin" - "Lësho tingull kur shtyp tastin" - "Zmadhim germe kur shtyp" - "Preferencat" - "Llogaritë dhe privatësia" - "Pamja dhe struktura" - "Shkrimi me gjeste" - "Korrigjim teksti" - "I përparuar" - "Tema" - "Aktivizo tastierën e ndarë" - "Kalo në metoda të tjera hyrjeje" - "Tasti i ndryshimit të gjuhës mbulon edhe metoda të tjera hyrjeje" - "Tasti i ndryshimit të gjuhës" - "Shfaq kur janë të aktivizuara shumë gjuhë hyrjeje" - "Vonesa e heqjes së zmadhimit të tastit" - "Pa vonesë" - "I parazgjedhur" - "%s milisek." - "Parazgjedhja e sistemit" - "Sugjero emra te \"Kontaktet\"" - "Përdor emra nga \"Kontaktet\" për sugjerime dhe korrigjime" - "Sugjerime të personalizuara" - "Përmirëso apl. \"%s\"" - "Pikë me hapësirë të dyfishtë" - "Trokitja dy herë në tastin e hapësirës vendos një pikë të pasuar nga një hapësirë" - "Kapitalizim automatik" - "Kapitalizo fjalën e parë të çdo fjalie" - "Fjalor personal" - "Fjalorët shtesë" - "Fjalori kryesor" - "Shfaq sugjerimet e korrigjimit" - "Shfaq fjalë sugjeruese kur shkruan" - "Blloko fjalë ofenduese" - "Mos sugjero fjalë që mund të jetë ofenduese" - "Auto-korrigjim" - "Hapësira ose pikësimi korrigjojnë automatikisht fjalët e gabuara" - "Çaktivizuar" - "Modest" - "I rreptë" - "Shumë i rreptë" - "Sugjerimet për fjalën e radhës" - "Përdor fjalën e mëparshme për të ofruar sugjerime" - "Aktivizo shkrimin me gjeste" - "Fut një fjalë duke rrëshqitur përmes shkronjave" - "Shfaq trajektoren e gjesteve" - "Shikim paraprak dinamik" - "Shiko fjalën e sugjeruar kur bën me gjeste" - "Gjest fraze" - "Hapësirat e hyrjes gjatë gjesteve duke kaluar në tastin e hapësirës" - "Tasti i hyrjes zanore" - "Nuk është aktivizuar asnjë metodë e hyrjes zanore. Kontrollo \"Cilësimet e gjuhës dhe hyrjes\"." - "Konfiguro metodat e hyrjes" - "Gjuhët" - "Ndihmë dhe komente" - "Gjuhët" - "Trokit përsëri për të ruajtur" - "Trokit këtu për të ruajtur" - "Fjalor i përdorshëm" - "Tema e tastierës" - "Ndrysho llogaritë" - "Nuk u përzgjodh asnjë llogari" - "Aktualisht po përdor %1$s" - "Në rregull!" - "Anulo" - "Dil" - "Zgjidh një llogari për përdorim" - "anglisht (MB)" - "anglisht (SHBA)" - "spanjisht (SHBA)" - "hinglisht" - "serbisht (latin)" - "anglisht (MB) (%s)" - "anglisht (SHBA) (%s)" - "spanjisht (SHBA) (%s)" - "hinglisht (%s)" - "serbisht (%s)" - "%s (tradicionale)" - "%s (kompakte)" - "nuk ka gjuhë (alfabeti)" - "alfabeti (QWERTY)" - "alfabeti (QWERTZ)" - "alfabeti (AZERTY)" - "alfabeti (dvorak)" - "alfabeti (Colemak)" - "alfabeti (PC)" - "\"Emoji\"" - "Tema e tastierës" - "Stile të personalizuara hyrjeje" - "Shto stilizimin" - "Shto" - "Hiq" - "Ruaj" - "Gjuha" - "Struktura" - "Stili yt i hyrjes ka nevojë të aktivizohet para se të fillosh përdorimin e tij. Dëshiron ta aktivizosh tani?" - "Aktivizo" - "Jo tani!" - "I njëjti stil hyrjesh ekziston tashmë: %s" - "Kohëzgjatja e dridhjes nga shtypja e tastit" - "Volumi i tingullit të tastit" - "Vonesa e shtypjes së gjatë të tastit" - "Emoji për tastierën fizike" - "Tasti fizik Alt shfaq paletën me emoji" - "I parazgjedhur" - "Mirë se erdhe në %s" - "me \"Shkrimin me gjeste\"" - "Fillo" - "Hapi tjetër" - "Po konfiguron %s" - "Aktivizo %s" - "Kontrollo \"%s\" te \"Cilësimet e gjuhës dhe hyrjes\". Kjo do ta autorizojë atë që të ekzekutohet në pajisjen tënde." - "%s është i aktivizuar tashmë te \"Cilësimet e gjuhës dhe të hyrjes\", kështu që ky hap ka mbaruar. Vazhdo me hapin tjetër!" - "Aktivizo te \"Cilësimet\"" - "Kalo në %s" - "Më pas, përzgjidh \"%s\" si metodën tënde aktive të hyrjes së tekstit." - "Ndrysho metodat e hyrjes" - "Urime, tani je gati!" - "Tani mund të shkruash të gjitha aplikacionet e tua të preferuara me %s." - "Konfiguro gjuhë shtesë" - "U përfundua" - "Shfaq ikonën e aplikacionit" - "Shfaq ikonën e aplikacionit në mekanizimin e nisjes" - "Ofrues fjalori" - "Ofrues fjalori" - "Shërbim fjalori" - "Informacion mbi përditësimin e fjalorit" - "Fjalorë shtesë" - "Cilësimet për fjalorët" - "Fjalorë përdoruesi" - "Fjalori i përdoruesit" - "Fjalor i përdorshëm" - "Po shkarkohet aktualisht" - "I instaluar" - "I instaluar po i çaktivizuar" - "Problem në lidhjen me shërbimin e fjalorit" - "Nuk mund të përdoret asnjë fjalor" - "Rifresko" - "Përditësimi i fundit" - "Po kontrollon për përditësime" - "Po ngarkohet..." - "Fjalori kryesor" - "Anulo" - "Cilësimet" - "Instalo" - "Anulo" - "Fshi" - "Versioni %1$s" - "Shto" - "Shto në fjalor" - "Frazë" - "Më shumë opsione" - "Më pak opsione" - "Në rregull!" - "Fjala:" - "Shkurtorja:" - "Gjuha:" - "Shkruaj një fjalë" - "Shkurtore opsionale" - "Redakto fjalën" - "Redakto" - "Fshi" - "Nuk ke asnjë fjalë në fjalorin e përdoruesit. Për të shtuar një fjalë, trokit te butoni \"Shto (+)\"." - "Për të gjitha gjuhët" - "Gjuhë të tjera…" - "Fshi" - " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + + "Kërko emra kontakti" + "Lësho dridhje kur shtyp tastin" + "Lësho tingull kur shtyp tastin" + "Zmadhim germe kur shtyp" + "Preferencat" + "Shkrimi me gjeste" + "Korrigjim teksti" + "I përparuar" + "Tema" + "Aktivizo tastierën e ndarë" + "Kalo në metoda të tjera hyrjeje" + "Tasti i ndryshimit të gjuhës" + "%s milisek." + "Parazgjedhja e sistemit" + "Përdor emra nga \"Kontaktet\" për sugjerime dhe korrigjime" + "Sugjerime të personalizuara" + "Pikë me hapësirë të dyfishtë" + "Trokitja dy herë në tastin e hapësirës vendos një pikë të pasuar nga një hapësirë" + "Kapitalizim automatik" + "Kapitalizo fjalën e parë të çdo fjalie" + "Fjalor personal" + "Fjalori kryesor" + "Shfaq sugjerimet e korrigjimit" + "Shfaq fjalë sugjeruese kur shkruan" + "Blloko fjalë ofenduese" + "Mos sugjero fjalë që mund të jetë ofenduese" + "Auto-korrigjim" + "Hapësira ose pikësimi korrigjojnë automatikisht fjalët e gabuara" + "Çaktivizuar" + "Modest" + "I rreptë" + "Shumë i rreptë" + "Sugjerimet për fjalën e radhës" + "Përdor fjalën e mëparshme për të ofruar sugjerime" + "Aktivizo shkrimin me gjeste" + "Fut një fjalë duke rrëshqitur përmes shkronjave" + "Shfaq trajektoren e gjesteve" + "Shikim paraprak dinamik" + "Gjest fraze" + "Hapësirat e hyrjes gjatë gjesteve duke kaluar në tastin e hapësirës" + "anglisht (MB)" + "anglisht (SHBA)" + "spanjisht (SHBA)" + "hinglisht" + "serbisht (latin)" + "%s (tradicionale)" + "%s (kompakte)" + "nuk ka gjuhë" + "\"Emoji\"" + "Shto" + "Hiq" + "Ruaj" + "Gjuha" + "Struktura" + "Kohëzgjatja e dridhjes nga shtypja e tastit" + "Volumi i tingullit të tastit" + "Vonesa e shtypjes së gjatë të tastit" + "Emoji për tastierën fizike" + "Tasti fizik Alt shfaq paletën me emoji" + "I parazgjedhur" + "Mirë se erdhe në %s" + "me \"Shkrimin me gjeste\"" + "Fillo" + "Po konfiguron %s" + "Aktivizo %s" + "Kontrollo \"%s\" te \"Cilësimet e gjuhës dhe hyrjes\". Kjo do ta autorizojë atë që të ekzekutohet në pajisjen tënde." + "Aktivizo te \"Cilësimet\"" + "Kalo në %s" + "Më pas, përzgjidh \"%s\" si metodën tënde aktive të hyrjes së tekstit." + "Ndrysho metodat e hyrjes" + "Urime, tani je gati!" + "Tani mund të shkruash të gjitha aplikacionet e tua të preferuara me %s." + "U përfundua" + "Shfaq ikonën e aplikacionit" + "Shfaq ikonën e aplikacionit në mekanizimin e nisjes" + "Fjalorë shtesë" + "Fjalor i përdorshëm" + "Cilësimet" + "Fshi" + "Versioni %1$s" + "Shkurtorja:" + "Gjuha:" + "Shkruaj një fjalë" + "Shkurtore opsionale" + "Redakto fjalën" + "Për të gjitha gjuhët" + "Gjuhë të tjera…" + "Zgjidh metodën e hyrjes" + "Zhbëj" + "Ribëj" + "Mëso nga komunikimet dhe të dhënat e shkruara për të përmirësuar sugjerimet" + "Shko" + "Përpara" + "Prapa" + "U krye!" + "Dërgo" + "Kërko" + "Pauzë" + "Prit!" diff --git a/app/src/main/res/values-sr/bools.xml b/app/src/main/res/values-sr/bools.xml index 840d20c218..8693f6e1ec 100644 --- a/app/src/main/res/values-sr/bools.xml +++ b/app/src/main/res/values-sr/bools.xml @@ -1,21 +1,7 @@ - - - "Иди" - "След" - "Претх" - "Готов" - "Шаљи" - "Тражи" - "Пауза" - "Чекај" - diff --git a/app/src/main/res/values-sr/strings-config-important-notice.xml b/app/src/main/res/values-sr/strings-config-important-notice.xml deleted file mode 100644 index 943135cfd9..0000000000 --- a/app/src/main/res/values-sr/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "Користи комуникације и унете податке ради побољшања предлога" - diff --git a/app/src/main/res/values-sr/strings-emoji-descriptions.xml b/app/src/main/res/values-sr/strings-emoji-descriptions.xml deleted file mode 100644 index 5a6dab25ec..0000000000 --- a/app/src/main/res/values-sr/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "Знак за ауторска права" - "Знак за регистровани бренд" - "Двоструки знак узвика" - "Знак узвика и знак питања" - "Знак жига" - "Извор информација" - "Стрелица налево и надесно" - "Стрелица нагоре и надоле" - "Стрелица северозапад" - "Стрелица североисток" - "Стрелица југоисток" - "Стрелица југозапад" - "Закривљена стрелица налево" - "Закривљена стрелица надесно" - "Ручни сат" - "Пешчани сат" - - - - - "Црни двоструки троугао усмерен надесно" - "Црни двоструки троугао усмерен налево" - "Црни двоструки троугао усмерен нагоре" - "Црни двоструки троугао усмерен надоле" - - - - - - - "Аларм" - - - - - "Пешчани сат са песком који тече" - - - - - - - "Заокружено велико латинично слово м" - "Мали црни квадрат" - "Мали бели квадрат" - "Црни троугао усмерен надесно" - "Црни троугао усмерен налево" - "Средњи бели квадрат" - "Средњи црни квадрат" - "Средње мали бели квадрат" - "Средње мали црни квадрат" - "Црно сунце са зрацима" - "Облак" - - - - - - - "Црни телефон" - "Опција са знаком потврде" - "Кишобран са кишним капима" - "Врућ напитак" - - - "Бели подигнути кажипрст" - - - - - - - - - - - - - - - - - - - "Бело насмејано лице" - "Ован" - "Бик" - "Близанци" - "Рак" - "Лав" - "Девица" - "Вага" - "Шкорпија" - "Стрелац" - "Јарац" - "Водолија" - "Рибе" - "Црни пик" - "Црни треф" - "Црни херц" - "Црни каро" - "Термални извори" - "Црни универзални симбол за рециклажу" - "Симбол инвалидских колица" - - - "Сидро" - - - - - - - - - - - - - "Знак упозорења" - "Знак за високи напон" - "Средњи бели круг" - "Средњи црни круг" - - - - - "Фудбалска лопта" - "Бејзбол" - "Снешко без снега" - "Сунце иза облака" - - - "Змијоноша" - - - - - - - "Забрањен улаз" - - - "Црква" - - - - - "Фонтана" - "Застава у рупи" - - - "Једрењак" - - - - - - - "Шатор" - "Пумпа за гориво" - "Црне маказе" - "Бели попуњени знак потврде" - "Авион" - "Коверта" - "Подигнута песница" - "Подигнута рука" - "Знак победе" - - - "Оловка" - "Црно перо" - "Попуњени знак потврде" - "Попуњен знак за множење x" - - - - - "Искре" - "Осмокрака звезда" - "Осмокрака црна звезда" - "Пахуљица" - "Искра" - "Знак x" - "Инверзни знак x" - "Орнамент са црним знаком питања" - "Орнамент са белим знаком питања" - "Орнамент са белим знаком узвика" - "Попуњен симбол знака узвика" - - - "Потпуно црно срце" - "Попуњен знак плус" - "Попуњен знак минус" - "Попуњен знак дељења" - "Црна стрелица надесно" - "Петља" - "Двострука петља" - "Стрелица усмерена надесно па нагоре" - "Стрелица усмерена надесно па надоле" - "Црна стрелица налево" - "Црна стрелица нагоре" - "Црна стрелица надоле" - "Велики црни квадрат" - "Велики бели квадрат" - "Средња бела звезда" - "Попуњени велики круг" - "Таласаста цртица" - "Знак за раздвајање делова" - "Заокружени идеограф за честитање" - "Заокружени идеограф за тајну" - "Mahjong плочица са црвеним змајем" - "Карта за играње са црним џокером" - "Крвна група А" - "Крвна група Б" - "Нулта крвна група" - "Паркинг" - "Крвна група АБ" - "CL у квадрату" - "„Cool“ у квадрату" - "„Free“ у квадрату" - "„ID“ у квадрату" - "„New“ у квадрату" - "„N G“ у квадрату" - "„OK“ у квадрату" - "„SOS“ у квадрату" - "„Up“ са узвичником у квадрату" - "„VS“ у квадрату" - "Катакана знак за „овде“ у квадрату" - "Катакана знак за услугу у квадрату" - "Идеограф „Бесплатно“ у квадрату" - "Идеограф „Резервисано место“ у квадрату" - "Идеограф „Забрана“ у квадрату" - "Идеограф „Слободно место“ у квадрату" - "Идеограф „Прихватање“ у квадрату" - "Идеограф „Све је попуњено“ у квадрату" - "Идеограф „Плаћено“ у квадрату" - "Идеограф „Месечно“ у квадрату" - "Идеограф „Пријава“ у квадрату" - "Идеограф „Попуст“ у квадрату" - "Идеограф „Радимо“ у квадрату" - "Заокружени идеограф „Предност“" - "Заокружени идеограф „Прихвати“" - "Циклон" - "Магла" - "Затворени кишобран" - "Звездана ноћ" - "Излазак сунца изнад планина" - "Излазак сунца" - "Град у сумрак" - "Залазак сунца изнад зграда" - "Дуга" - "Мост ноћу" - "Водени талас" - "Вулкан" - "Млечни пут" - "Земаљска кугла са Европом и Африком" - "Земаљска кугла са Америкама" - "Земаљска кугла са Азијом и Аустралијом" - "Земаљска кугла са меридијанима" - "Симбол младог месеца" - "Симбол месечевог српа у порасту" - "Симбол прве четврти месеца" - "Симбол месеца између прве четврти и пуног месеца" - "Симбол пуног месеца" - "Симбол месеца између пуног месеца и последње четврти" - "Симбол последње четврти месеца" - "Симбол месечевог српа у опадању" - "Месечев срп" - "Млад месец са лицем" - "Прва четврт месеца са лицем" - "Последња четврт месеца са лицем" - "Пун месец са лицем" - "Сунце са лицем" - "Сјајна звезда" - "Звезда падалица" - - - - - - - - - - - - - - - - - - - - - - - - - - - "Кестен" - "Младица" - "Зимзелено дрво" - "Листопадно дрво" - "Палма" - "Кактус" - - - "Лала" - "Цвет трешње" - "Ружа" - "Хибискус" - "Сунцокрет" - "Цват" - "Клип кукуруза" - "Стабљика пиринча" - "Биље" - "Детелина са четири листа" - "Јаворов лист" - "Опали лист" - "Опали лист лепрша на ветру" - "Печурка" - "Парадајз" - "Патлиџан" - "Грожђе" - "Диња" - "Лубеница" - "Мандарина" - "Лимун" - "Банана" - "Ананас" - "Црвена јабука" - "Зелена јабука" - "Крушка" - "Бресква" - "Трешње" - "Јагода" - "Хамбургер" - "Парче пице" - "Месо са коском" - "Батак" - "Пиринчани крекер" - "Куглица од пиринча" - "Кувани пиринач" - "Пиринач са каријем" - "Врућа чинија" - "Шпагете" - "Хлеб" - "Помфрит" - "Печени слатки кромпир" - "Данго" - "Оден" - "Суши" - "Пржени шкампи" - "Рибља пљескавица са шаром вртлога" - "Течни сладолед" - "Ломљени лед" - "Сладолед" - "Крофна" - "Колачић" - "Чоколадица" - "Бомбона" - "Лизалица" - "Крем" - "Ћуп са медом" - "Тортица" - "Кутија са ручком" - "Чинија хране" - "Кување" - "Виљушка и нож" - "Шољица без дршке" - "Флаша сакеа и чаша" - "Чаша вина" - "Чаша коктела" - "Тропско пиће" - "Кригла пива" - "Кригле пива које се куцају" - "Флашица за бебе" - - - - - - - "Трака" - "Упакован поклон" - "Рођенданскa тортa" - "Изрезбарена бундева" - "Новогодишња јелка" - "Божић Бата" - "Ватромет" - "Прскалица" - "Балон" - "Журка" - "Конфете" - "Дрво танабата" - "Укрштене заставе" - "Украс за јелку" - "Јапанске лутке" - "Ветроказ у облику шарана" - "Висећи метални звончићи" - "Церемонија гледања месеца" - "Школска торба" - "Капа за дипломце" - - - - - - - - - - - - - - - "Коњ са вртешке" - "Панорамски точак" - "Луна-парк" - "Штап за пецање и риба" - "Микрофон" - "Филмска камера" - "Биоскоп" - "Слушалице" - "Сликарска палета" - "Цилиндар" - "Циркуски шатор" - "Карта" - "Режисерска табла" - "Уметнички наступ" - "Видео игра" - "Директан погодак" - "Слот-машина" - "Билијар" - "Коцкица за игру" - "Куглање" - "Карте за играње са цветом" - "Музичка нота" - "Више музичких нота" - "Саксофон" - "Гитара" - "Клавијатура" - "Труба" - "Виолина" - "Нотни запис" - "Спортска мајица са траком" - "Тениски рекет и лоптица" - "Скија и скијашка чизма" - "Кошаркашка лопта и обруч" - "Застава за крај трке" - "Сноубордер" - "Тркач" - "Сурфер" - - - "Трофеј" - "Коњске трке" - "Амерички фудбал" - "Рагби" - "Пливач" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Кућа" - "Кућа са баштом" - "Пословна зграда" - "Јапанска пошта" - "Европска пошта" - "Болница" - "Банка" - "Банкомат" - "Хотел" - "Романтични хотел" - "Продавница" - "Школа" - "Робна кућа" - "Фабрика" - "Изакаја лампа" - "Јапански дворац" - "Европски дворац" - - - - - - - - - - - - - - - - - - - - - - - - - "Пацов" - "Миш" - "Во" - "Водени биво" - "Крава" - - - "Леопард" - "Зец" - "Мачка" - "Змај" - "Крокодил" - "Кит" - "Пуж" - "Змија" - "Коњ" - "Ован" - "Коза" - "Овца" - "Мајмун" - "Петао" - "Кокошка" - "Пас" - "Прасе" - "Вепар" - "Слон" - "Октопод" - "Спирална шкољка" - "Буба" - "Мрав" - "Пчела" - "Бубамара" - "Риба" - "Тропска риба" - "Надувана риба" - "Корњача" - "Пиле које се испилило" - "Пиле" - "Пиле спреда" - "Птица" - "Пингвин" - "Коала" - "Пудлица" - "Једногрба камила" - "Двогрба камила" - "Делфин" - "Лице миша" - "Лице краве" - "Лице тигра" - "Лице зеца" - "Лице мачке" - "Лице змаја" - "Кит који је изронио" - "Лице коња" - "Лице мајмуна" - "Лице пса" - "Лице прасета" - "Лице жабе" - "Лице хрчка" - "Лице вука" - "Лице медведа" - "Лице панде" - "Њушка прасета" - "Отисци шапа" - - - "Очи" - - - "Уво" - "Нос" - "Уста" - "Језик" - "Спољни део беле шаке са кажипрстом нагоре" - "Спољни део беле шаке са кажипрстом надоле" - "Спољни део беле шаке са кажипрстом налево" - "Спољни део беле шаке са кажипрстом надесно" - "Песница" - "Рука која маше" - "Знак руком „Потврди“" - "Палац окренут нагоре" - "Палац окренут надоле" - "Тапшање" - "Отворене шаке" - "Круна" - "Женски шешир" - "Наочаре" - "Кравата" - "Мајица" - "Фармерке" - "Хаљина" - "Кимоно" - "Бикини" - "Женска гардероба" - "Ташница" - "Ташна" - "Торбица" - "Мушка ципела" - "Патика" - "Ципела са високом штиклом" - "Женска сандала" - "Женске чизме" - "Отисци стопала" - "Силуета бисте" - "Силуета бисти" - "Дечак" - "Девојчица" - "Мушкарац" - "Жена" - "Породица" - "Мушкарац и жена се држе за руке" - "Двојица мушкараца се држе за руке" - "Две жене се држе за руке" - "Полицајац" - "Жена са зечјим ушима" - "Невеста са велом" - "Плавокоса особа" - "Мушкарац са гуа пи мао капом" - "Мушкарац са турбаном" - "Старији човек" - "Старија жена" - "Беба" - "Радник на градилишту" - "Принцеза" - "Јапански џин" - "Јапански гоблин" - "Дух" - "Беба анђео" - "Ванземаљац" - "Чудовиште ванземаљац" - "Ђаволчић" - "Лобања" - "Особа која даје информације" - "Чувар" - "Плесач" - "Кармин" - "Лак за нокте" - "Масажа лица" - "Фризура" - "Берберски знак" - "Шприц" - "Пилула" - "Отисак пољупца" - "Љубавно писмо" - "Прстен" - "Драгуљ" - "Пољубац" - "Букет" - "Пар са срцем" - "Венчање" - "Срце које куца" - "Сломљено срце" - "Два срца" - "Светлуцаво срце" - "Срце које расте" - "Срце прободено стрелом" - "Плаво срце" - "Зелено срце" - "Жуто срце" - "Љубичасто срце" - "Срце са траком" - "Срца која се окрећу" - "Украс у облику срца" - "Облик дијаманта са тачком у средини" - "Електрична сијалица" - "Симбол љутње" - "Бомба" - "Симбол спавања" - "Симбол судара" - "Симбол капи зноја" - "Капљица" - "Симбол црте" - "Гомила измета" - "Стегнути бицепс" - "Симбол вртоглавице" - "Облачић за говор" - "Балончић за размишљање" - "Бели цвет" - "Симбол за сто поена" - "Врећа новца" - "Мењачница" - "Попуњен симбол долара" - "Кредитна картица" - "Новчаница са знаком јена" - "Новчаница са знаком долара" - "Новчаница са знаком евра" - "Новчаница са знаком фунте" - "Новац са крилима" - "Дијаграм са растућим трендом и знаком јена" - "Седиште" - "Лични рачунар" - "Актен-ташна" - "Мини-диск" - "Дискета" - "Оптички диск" - "DVD" - "Директоријум датотеке" - "Отворени директоријум датотеке" - "Увијена страница" - "Страница окренута нагоре" - "Календар" - "Календар са листовима који се цепају" - "Индекс картица" - "Дијаграм са растућим трендом" - "Дијаграм са опадајућим трендом" - "Тракасти графикон" - "Табла за поруке" - "Прибадача" - "Округла прибадача" - "Спајалица" - "Прав лењир" - "Троугаони лењир" - "Обележивачи страница" - "Главна књига" - "Бележница" - "Бележница са декоративном корицом" - "Затворена књига" - "Отворена књига" - "Зелена књига" - "Плава књига" - "Наранџаста књига" - "Књиге" - "Значка са именом" - "Свитак" - "Меморандум" - "Телефонска слушалица" - "Пејџер" - "Факс" - "Сателитска антена" - "Разглас" - "Навијачки мегафон" - "Документи за слање" - "Примљени документи" - "Пакет" - "Симбол имејла" - "Долазна порука" - "Стрелица надоле изнад коверте" - "Затворено поштанско сандуче са спуштеном заставом" - "Затворено поштанско сандуче са подигнутом заставом" - "Отворено поштанско сандуче са подигнутом заставом" - "Отворено поштанско сандуче са спуштеном заставом" - "Поштанско сандуче" - "Поштански рог" - "Новине" - "Мобилни телефон" - "Мобилни телефон са стрелицом надесно са леве стране" - "Режим вибрације" - "Мобилни телефон је искључен" - "Без мобилних телефона" - "Антена са тракама" - "Камера" - - - "Видео камера" - "Телевизор" - "Радио" - "Видео касета" - - - - - "Укрштене стрелице надесно" - "Кружне стрелице надесно и налево у смеру казаљки на сату" - "Кружне стрелице надесно и налево у смеру казаљки на сату преко којих стоји уоквирен број један" - "Кружне стрелице надоле и нагоре у смеру казаљки на сату" - "Кружне стрелице надоле и нагоре у смеру супротном казаљки на сату" - "Симбол слабог осветљења" - "Симбол јаког осветљења" - "Прецртани звучник" - "Звучник" - "Звучник са једним звучним таласом" - "Звучник са три звучна таласа" - "Батерија" - "Електрични утикач" - "Лупа окренута налево" - "Лупа окренута надесно" - "Катанац са пером" - "Затворен катанац са кључем" - "Кључ" - "Катанац" - "Отворени катанац" - "Звоно" - "Прецртано звоно" - "Обележивач" - "Симбол везе" - "Дугме за избор" - "Стрелица налево изнад „Back“" - "Стрелица налево изнад „End“" - "Стрелица налево и надесно изнад „On“ са узвичником" - "Стрелица надесно изнад „Soon“" - "Стрелица нагоре изнад „Top“" - "Забрањено за особе млађе од 18 година" - "Тастер са бројем 10" - "Симбол уноса за велика латинична слова" - "Симбол уноса за мала латинична слова" - "Симбол уноса за бројеве" - "Улазни симбол за симболе" - "Симбол уноса за латинична слова" - "Пожар" - "Батеријска лампа" - "Француски кључ" - "Чекић" - "Шраф и завртањ" - "Хочо" - "Пиштољ" - "Микроскоп" - "Телескоп" - "Кристална кугла" - "Шестокрака звезда са тачком у средини" - "Јапански симбол за почетника" - "Амблем трозупца" - "Дугме са црним квадратом" - "Дугме са белим квадратом" - "Велики црвени круг" - "Велики плави круг" - "Велики наранџасти дијамант" - "Велики плави дијамант" - "Мали наранџасти дијамант" - "Мали плави дијамант" - "Црвени троугао усмерен нагоре" - "Црвени троугао усмерен надоле" - "Мали црвени троугао усмерен нагоре" - "Мали црвени троугао усмерен надоле" - - - - - - - - - - - - - "Бројчаник који показује један сат" - "Бројчаник који показује два сата" - "Бројчаник који показује три сата" - "Бројчаник који показује четири сата" - "Бројчаник који показује пет сати" - "Бројчаник који показује шест сати" - "Бројчаник који показује седам сати" - "Бројчаник који показује осам сати" - "Бројчаник који показује девет сати" - "Бројчаник који показује десет сати" - "Бројчаник који показује једанаест сати" - "Бројчаник који показује дванаест сати" - "Бројчаник који показује пола два" - "Бројчаник који показује пола три" - "Бројчаник који показује пола четири" - "Бројчаник који показује пола пет" - "Бројчаник који показује пола шест" - "Бројчаник који показује пола седам" - "Бројчаник који показује пола осам" - "Бројчаник који показује пола девет" - "Бројчаник који показује пола десет" - "Бројчаник који показује пола једанаест" - "Бројчаник који показује пола дванаест" - "Бројчаник који показује пола један" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Планина Фуџи" - "Токијски торањ" - "Кип слободе" - "Силуета Јапана" - "Мојаи" - "Лице са широким осмехом" - "Лице са широким осмехом и насмејаним очима" - "Лице са сузама радосницама" - "Насмејано лице са отвореним устима" - "Насмејано лице са отвореним устима и насмејаним очима" - "Насмејано лице са отвореним устима, обливено хладним знојем" - "Насмејано лице са отвореним устима и чврсто затвореним очима" - "Насмејано лице са ореолом" - "Насмејано лице са роговима" - "Лице које намигује" - "Насмејано лице са насмејаним очима" - "Лице које ужива у укусној храни" - "Лице са изразом олакшања" - "Насмејано лице са очима у облику срца" - "Насмејано лице са наочарима за сунце" - "Лице које се злобно смешка" - "Лице са неутралним изразом" - "Безизражајно лице" - "Лице коме није забавно" - "Лице обливено хладним знојем" - "Замишљено лице" - "Збуњено лице" - "Лице у недоумици" - "Лице које љуби" - "Лице које шаље пољубац" - "Лице које љуби са насмејаним очима" - "Лице које љуби са затвореним очима" - "Лице са исплаженим језиком" - "Лице које се плази и намигује" - "Лице које се плази са чврсто затвореним очима" - "Разочарано лице" - "Забринуто лице" - "Љутито лице" - "Надурено лице" - "Уплакано лице" - "Истрајно лице" - "Лице са победничким изразом" - "Разочарано лице коме је лакнуло" - "Намрштено лице са отвореним устима" - "Намучено лице" - "Уплашено лице" - "Опрезно лице" - "Поспано лице" - "Уморно лице" - "Лице са гримасом" - "Лице које плаче наглас" - "Лице са отвореним устима" - "Лице које ућуткује" - "Лице са отвореним устима, обливено хладним знојем" - "Лице које вришти у страху" - "Запањено лице" - "Зајапурено лице" - "Успавано лице" - "Лице коме се врти" - "Лице без уста" - "Лице са медицинском маском" - "Лице мачке са широким осмехом и насмејаним очима" - "Лице мачке са сузама радосницама" - "Насмејано лице мачке са отвореним устима" - "Насмејано лице мачке са очима у облику срца" - "Лице мачке са киселим осмехом" - "Лице мачке које љуби са затвореним очима" - "Надурено лице мачке" - "Уплакано лице мачке" - "Уморно лице мачке" - - - - - - - - - "Лице са изразом „нешто није у реду“" - "Лице са изразом одобравања" - "Особа која се дубоко клања" - "Мајмун који не види ништа лоше" - "Мајмун који не чује ништа лоше" - "Мајмун који не говори ништа лоше" - "Срећна особа са подигнутом руком" - "Особа која је из радости подигла руке" - "Намрштена особа" - "Надурена особа" - "Особа са спојеним рукама" - "Ракета" - "Хеликоптер" - "Парна локомотива" - "Вагон" - "Брзи воз" - "Брзи воз са заобљеним врхом" - "Воз" - "Метро" - "Градска железница" - "Станица" - "Трамвај" - "Вагон трамваја" - "Аутобус" - "Аутобус који стиже" - "Тролејбус" - "Аутобуско стајалиште" - "Минибус" - "Хитна помоћ" - "Ватрогасна кола" - "Полицијски ауто" - "Полицијски ауто који стиже" - "Такси" - "Такси који стиже" - "Аутомобил" - "Аутомобил који стиже" - "Камп-возило" - "Камион за испоруку" - "Камион са приколицом" - "Трактор" - "Пруга са једним колосеком" - "Планинска пруга" - "Висећа железница" - "Планинска жичара" - "Висећи трамвај" - "Брод" - "Чамац" - "Брзи моторни чамац" - "Хоризонтални семафор" - "Вертикални семафор" - "Знак за грађевинске радове" - "Ротационо светло полицијског аутомобила" - "Троугласта застава на стубу" - "Врата" - "Симбол за забрањен улаз" - "Симбол за пушење" - "Симбол забрањеног пушења" - "Симбол који упозорава где треба бацати отпад" - "Симбол забране бацања отпада" - "Симбол воде за пиће" - "Симбол воде која није за пиће" - "Бицикл" - "Забрањено за бицикле" - "Бициклиста" - "Планински бициклиста" - "Пешак" - "Забрањено за пешаке" - "Деца прелазе" - "Симбол мушког тоалета" - "Симбол женског тоалета" - "Тоалет" - "Симбол за бебе" - "Тоалет" - "WC" - "Туш" - "Купатило" - "Када" - "Пасошка контрола" - "Царина" - "Преузимање пртљага" - "Остављени пртљаг" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-sr/strings-letter-descriptions.xml b/app/src/main/res/values-sr/strings-letter-descriptions.xml deleted file mode 100644 index 51cabc3b88..0000000000 --- a/app/src/main/res/values-sr/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "Знак за редни број у женском роду" - "Знак микро" - "Знак за редни број у мушком роду" - "Оштро с" - "Краткоузлазно а" - "Дугоузлазно а" - "А са циркумфлексом" - "А са тилдом" - "А са умлаутом" - "А са кружићем изнад" - "Лигатура а и е" - "Ц са седиљом" - "Краткоузлазно е" - "Дугоузлазно е" - "Е са циркумфлексом" - "Е са умлаутом" - "Краткоузлазно и" - "Дугоузлазно и" - "И са циркумфлексом" - "И са умлаутом" - "Ет" - "Н са тилдом" - "Краткоузлазно о" - "Дугоузлазно о" - "О са циркумфлексом" - "О са тилдом" - "О са умлаутом" - "Прецртано о" - "Краткоузлазно у" - "Дугоузлазно у" - "У са циркумфлексом" - "У са умлаутом" - "Дугоузлазни ипсилон" - "Торн" - "Ипсилон са умлаутом" - "А са макроном" - "А са бревом" - "А са огонеком" - "Дугоузлазно ц" - "Ц са циркумфлексом" - "Ц са тачком изнад" - "Ч" - "Д са квачицом" - "Ђ" - "Е са макроном" - "Е са бревом" - "Е са тачком изнад" - "Е са огонеком" - "Е са квачицом" - "Г са циркумфлексом" - "Г са бревом" - "Г са тачком изнад" - "Г са седиљом" - "Х са циркумфлексом" - "Прецртано х" - "И са тилдом" - "И са макроном" - "И са бревом" - "И са огонеком" - "И без тачке" - "Лигатура и и ј" - "Ј са циркумфлексом" - "К са седиљом" - "Кра" - "Дугоузлазно л" - "Л са седиљом" - "Л са квачицом" - "Л са тачком на средини" - "Прецртано л" - "Дугоузлазно н" - "Н са седиљом" - "Н са квачицом" - "Н коме претходи апостроф" - "Ангма" - "О са макроном" - "О са бревом" - "О са двоструким акутним акцентом" - "Лигатура о и е" - "Дугоузлазно р" - "Р са седиљом" - "Р са квачицом" - "Дугоузлазно с" - "С са циркумфлексом" - "С са седиљом" - "Ш" - "Т са седиљом" - "Т са квачицом" - "Прецртано т" - "У са тилдом" - "У са макроном" - "У са бревом" - "У са кружићем изнад" - "У са двоструким акутним акцентом" - "У са огонеком" - "Дупло ве са циркумфлексом" - "Ипсилон са циркумфлексом" - "Дугоузлазно з" - "З са тачком изнад" - "Ж" - "Дуго с" - "О са рогом" - "У са рогом" - "С са зарезом испод" - "Т са зарезом испод" - "Шва" - "А са тачком испод" - "А са куком изнад" - "А са циркумфлексом, дугоузлазно" - "А са циркумфлексом, краткоузлазно" - "А са циркумфлексом и куком изнад" - "А са циркумфлексом и тилдом" - "А са циркумфлексом и тачком испод" - "А са бревом, дугоузлазно" - "А са бревом, краткоузлазно" - "А са бревом и куком изнад" - "А са бревом и тилдом" - "А са бревом и тачком испод" - "Е са тачком испод" - "Е са куком изнад" - "Е са тилдом" - "Е са циркумфлексом, дугоузлазно" - "Е са циркумфлексом, краткоузлазно" - "Е са циркумфлексом и куком изнад" - "Е са циркумфлексом и тилдом" - "Е са циркумфлексом и тачком испод" - "И са куком изнад" - "И са тачком испод" - "О са тачком испод" - "О са куком изнад" - "О са циркумфлексом, дугоузлазно" - "О са циркумфлексом, краткоузлазно" - "О са циркумфлексом и куком изнад" - "О са циркумфлексом и тилдом" - "О са циркумфлексом и тачком испод" - "О са рогом, дугоузлазно" - "О са рогом, краткоузлазно" - "О са рогом и куком изнад" - "О са рогом и тилдом" - "О са рогом и тачком испод" - "У са тачком испод" - "У са куком изнад" - "У са рогом, дугоузлазно" - "У са рогом, краткоузлазно" - "У са рогом и куком изнад" - "У са рогом и тилдом" - "У са рогом и тачком испод" - "Краткоузлазни ипсилон" - "Ипсилон са тачком испод" - "Ипсилон са куком изнад" - "Ипсилон са тилдом" - "Обрнути знак узвика" - "Леви двоструки угласти наводници" - "Тачка на средини" - "Један у експонентном тексту" - "Десни двоструки угласти наводници" - "Обрнути знак питања" - "Леви једноструки наводник" - "Десни једноструки наводник" - "Једноструки доњи отворени наводник" - "Леви двоструки наводник" - "Десни двоструки наводник" - "Обелиск" - "Двоструки обелиск" - "Знак за промил" - "Прим" - "Дупли прим" - "Леви једноструки угласти наводник" - "Десни једноструки угласти наводник" - "Четири у експонентном тексту" - "Мало латинично н у експонентном тексту" - "Знак за пезо" - "За" - "Стрелица надесно" - "Стрелица надоле" - "Празан скуп" - "Повећање" - "Мање или једнако" - "Веће или једнако" - "Црна звездица" - diff --git a/app/src/main/res/values-sr/strings-talkback-descriptions.xml b/app/src/main/res/values-sr/strings-talkback-descriptions.xml index e1728bf45d..37539b5521 100644 --- a/app/src/main/res/values-sr/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-sr/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "Укључите слушалице да бисте чули наглас изговорене тастере за лозинку." - "Тренутни текст је %s" - "Текст није унет" - "%1$s исправља %2$s у %3$s" - "%1$s обавља аутоматско исправљање" - "Нема предлога" - "Непознати знак" - "Shift" - "Још симбола" - "Shift" - "Симболи" - "Shift" - "Избриши" - "Симболи" - "Слова" - "Бројеви" - "Подешавања" - "Картица" - "Размак" - "Гласовни унос" - "Емоџи" - "Return" - "Претражи" - "Тачка" - "Пребаци језик" - "Претходно" - "Назад" - "Shift је омогућен" - "Caps lock је омогућен" - "Режим симбола" - "Режим Још симбола" - "Режим слова" - "Режим телефона" - "Режим симбола телефона" - "Тастатура је сакривена" - "Приказујемо тастатуру у режиму %s" - "датум" - "датум и време" - "имејл" - "размена порука" - "број" - "телефон" - "текст" - "време" - "URL" - "Недавни контакти" - "Људи" - "Предмети" - "Природа" - "Места" - "Симболи" - "Заставе" - "Смајлији и људи" - "Животиње и природа" - "Храна и пиће" - "Путовања и места" - "Активности" - "Емотикони" - "Велико %s" - "Велико И" - "Велико И са тачком изнад" - "Непознат симбол" - "Непознати емоџи" - "Лице коме је досадно" - "Постиђено лице" - "Лице са наочарима за сунце" - "Изненађено лице" - "Лице које љуби" - "Намрштено лице" - "Доступни су алтернативни знаци" - "Алтернативни знаци су одбачени" - "Доступни су алтернативни предлози" - "Алтернативни предлози су одбачени" + + + "Укључите слушалице да бисте чули наглас изговорене тастере за лозинку." + "Тренутни текст је %s" + "Текст није унет" + "%1$s исправља %2$s у %3$s" + "%1$s обавља аутоматско исправљање" + "Нема предлога" + "Непознати знак" + "Shift" + "Још симбола" + "Shift" + "Симболи" + "Shift" + "Избриши" + "Симболи" + "Слова" + "Бројеви" + "Подешавања" + "Картица" + "Размак" + "Гласовни унос" + "Емоџи" + "Return" + "Претражи" + "Тачка" + "Пребаци језик" + "Претходно" + "Назад" + "Shift је омогућен" + "Caps lock је омогућен" + "Режим симбола" + "Режим Још симбола" + "Режим слова" + "Режим телефона" + "Режим симбола телефона" + "Тастатура је сакривена" + "Приказујемо тастатуру у режиму %s" + "датум" + "датум и време" + "имејл" + "размена порука" + "број" + "телефон" + "текст" + "време" + "URL" + "Недавни контакти" + "Предмети" + "Симболи" + "Заставе" + "Смајлији и људи" + "Животиње и природа" + "Храна и пиће" + "Путовања и места" + "Активности" + "Емотикони" + "Велико %s" + "Велико И" + "Велико И са тачком изнад" + "Доступни су алтернативни знаци" + "Алтернативни знаци су одбачени" + "Доступни су алтернативни предлози" + "Алтернативни предлози су одбачени" diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 86e076e5d9..3f834fca94 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -1,193 +1,151 @@ - - - - - "Опције уноса" - "Потражи имена контаката" - "Контролор правописа користи уносе са листе контаката" - "Вибрирај на притисак тастера" - "Звук на притисак тастера" - "Искачући прозор приликом притиска тастера" - "Подешавања" - "Налози и приватност" - "Изглед и распореди" - "Куцање покретима" - "Исправљање текста" - "Напредно" - "Тема" - "Омогући подељену тастатуру" - "Пребаци на друге методе уноса" - "Тастер за пребацивање језика обухвата и друге методе уноса" - "Тастер за пребацивање језика" - "Прикажи када је омогућено више језика уноса" - "Одложи одбацивање искачућег прозора тастера" - "Без одлагања" - "Подразумевано" - "%s ms" - "Подразумевано" - "Предложи имена контаката" - "Користи имена из Контаката за предлоге и исправке" - "Персонализовани предлози" - "Побољшајте апликацију %s" - "Тачка и размак" - "Двоструким додиром размака умеће се тачка праћена размаком" - "Аутоматски унос великих слова" - "Писање великог слова на почетку сваке реченице" - "Лични речник" - "Помоћни речници" - "Главни речник" - "Прикажи предлоге за исправку" - "Приказивање предложених речи током уноса текста" - "Блокирај увредљиве речи" - "Нема предлагања потенцијално увредљивих речи" - "Аутом. исправљање" - "Размак и интерпункција аутоматски исправљају грешке у куцању" - "Искључи" - "Умерено" - "Агресивно" - "Веома агресивно" - "Предлози за следећу реч" - "Користи претходну реч при давању предлога" - "Омогући унос покретом" - "Унесите реч превлачењем прста преко од слова до слова на екрану" - "Прикажи траг покрета" - "Динамички плутајући преглед" - "Приказује предложену реч при уносу покретом" - "Покрет за фразе" - "Уносите размаке током покрета преласком до тастера за размак" - "Тастер за гласовни унос" - "Ниједан метод гласовног уноса није омогућен. Проверите Подешавања језика и уноса." - "Конфигурисање метода уноса" - "Језици" - "Помоћ и повратне информације" - "Језици" - "Додирните поново да бисте сачували" - "Додирните овде да бисте сачували" - "Речник је доступан" - "Тема тастатуре" - "Промените налог" - "Није изабран ниједан налог" - "Тренутно користите %1$s" - "Потврди" - "Откажи" - "Одјави ме" - "Изаберите налог који ћете користити" - "енглески (УК)" - "енглески (САД)" - "шпански (САД)" - "хенглески" - "српски (латиница)" - "енглески (УК) (%s)" - "енглески (САД) (%s)" - "шпански (САД) (%s)" - "хенглески (%s)" - "српски (%s)" - "%s (традиционални)" - "%s (компактна)" - "Нема језика (абецеда)" - "абецеда (QWERTY)" - "абецеда (QWERTZ)" - "абецеда (AZERTY)" - "абецеда (Dvorak)" - "абецеда (Colemak)" - "абецеда (PC)" - "Емотикони" - "Тема тастатуре" - "Прилагођени стилови уноса" - "Додајте стил" - "Додај" - "Уклони" - "Сачувај" - "Језик" - "Распоред" - "Прилагођени стил уноса треба да буде омогућен да бисте почели да га користите. Желите ли да га омогућите сада?" - "Омогући" - "Не сада" - "Исти стил уноса већ постоји: %s" - "Трајање вибрације при притиску" - "Јачина звука при притиску" - "Задржавање при дугом притиску" - "Емоџи за физичку тастатуру" - "Физички тастер Alt показује палету емоџија" - "Подразумевано" - "Добро дошли у %s" - "помоћу Куцања покретима" - "Започнимо" - "Следећи корак" - "Подешавање апликације %s" - "Омогућите апликацију %s" - "Потврдите апликацију „%s“ у Подешавањима језика и уноса. Тако јој одобравате покретање на уређају." - "Апликација %s је већ омогућена у Подешавањима језика и уноса, па је овај корак готов. Пређимо на следећи!" - "Омогући у Подешавањима" - "Пребаците на %s" - "Затим изаберите „%s“ као активни метод уноса текста." - "Пребаци методе уноса" - "Честитамо, све је спремно!" - "Сада можете да куцате у свим омиљеним апликацијама помоћу %s." - "Конфигуриши додатне језике" - "Завршено" - "Прикажи икону апликације" - "Икона апликације се приказује у покретачу" - "Добављач речника" - "Добављач речника" - "Услуга речника" - "Информације о ажурирању речника" - "Помоћни речници" - "Подешавања за речнике" - "Кориснички речници" - "Кориснички речник" - "Речник је доступан" - "Тренутно се преузима" - "Инсталиран је" - "Инсталиран је и онемогућен" - "Проблем при повезивању с услугом речника" - "Нема доступних речника" - "Освежи" - "Последње ажурирање" - "Траже се ажурирања" - "Учитава се…" - "Главни речник" - "Откажи" - "Подешавања" - "Инсталирај" - "Откажи" - "Избриши" - "Верзија %1$s" - "Додај" - "Додавање у речник" - "Фраза" - "Више опција" - "Мање опција" - "Потврди" - "Реч:" - "Пречица:" - "Језик:" - "Унесите реч" - "Опционална пречица" - "Измена речи" - "Измени" - "Избриши" - "Немате ниједну реч у корисничком речнику. Да бисте додали реч, додирните дугме Додај (+)." - "За све језике" - "Још језика..." - "Избриши" - " АБВГДЂЕЖЗИЈКЛЉМНЊОПРСТЋУФХЦЧЏШ" + + + "Потражи имена контаката" + "Вибрирај на притисак тастера" + "Звук на притисак тастера" + "Искачући прозор приликом притиска тастера" + "Подешавања" + "Куцање покретима" + "Исправљање текста" + "Напредно" + "Тема" + "Омогући подељену тастатуру" + "Пребаци на друге методе уноса" + "Тастер за пребацивање језика" + %s мс + "Подразумевано" + "Користи имена из Контаката за предлоге и исправке" + "Персонализовани предлози" + Дупли размак тачка + "Двоструким додиром размака умеће се тачка праћена размаком" + "Аутоматски унос великих слова" + "Писање великог слова на почетку сваке реченице" + "Лични речник" + "Главни речник" + "Прикажи предлоге за исправку" + "Приказивање предложених речи током уноса текста" + "Блокирај увредљиве речи" + "Нема предлагања потенцијално увредљивих речи" + "Аутом. исправљање" + "Размак и интерпункција аутоматски исправљају грешке у куцању" + "Искључи" + "Умерено" + "Агресивно" + "Веома агресивно" + "Предлози за следећу реч" + "Користи претходну реч при давању предлога" + "Омогући унос покретом" + "Унесите реч превлачењем прста преко од слова до слова на екрану" + "Прикажи траг покрета" + "Динамички плутајући преглед" + "Покрет за фразе" + "Уносите размаке током покрета преласком до тастера за размак" + "енглески (УК)" + "енглески (САД)" + "шпански (САД)" + "хенглески" + "српски (латиница)" + %s (традиционални) + %s (компактна) + "Нема језика" + "Емотикони" + "Додај" + "Уклони" + "Сачувај" + "Језик" + "Распоред" + "Трајање вибрације при притиску" + "Јачина звука при притиску" + "Задржавање при дугом притиску" + "Емоџи за физичку тастатуру" + "Физички тастер Alt показује палету емоџија" + "Подразумевано" + Добро дошли у %s + "помоћу Куцања покретима" + "Започнимо" + Подешавање апликације %s + Омогућите апликацију %s + Потврдите апликацију %s“ у Подешавањима језика и уноса. Тако јој одобравате покретање на уређају.\" + "Омогући у Подешавањима" + "Пребаците на %s" + Затим изаберите %s“ као активни метод уноса текста.\" + "Пребаци методе уноса" + "Честитамо, све је спремно!" + "Сада можете да куцате у свим омиљеним апликацијама помоћу %s." + "Завршено" + "Прикажи икону апликације" + "Икона апликације се приказује у покретачу" + "Помоћни речници" + "Речник је доступан" + "Подешавања" + "Избриши" + "Верзија %1$s" + "Пречица:" + "Језик:" + "Унесите реч" + "Опционална пречица" + "Измена речи" + "За све језике" + "Још језика…" + "Избор метода уноса" + ХелиБоард провера правописа + ХелиБоард подешавања провере правописа + ХелиБоард подешавања + Унос + Додатни кључеви + Поузданост ауто-корекције + Аутоматски размак после интерпункције + Увек прикажи ред са бројевима + Прикажи кључне савете + Историја међуспремника + Исправке + Експерименталне карактеристике + Ако је онемогућено, тастер међумеморије ће налепити садржај међуспремника ако га има + Превуците прстом од тастера за брисање да бисте одједном изабрали и уклонили веће делове текста + Омогући режим без архивирања + Ред бројева + Промените начин уноса помоћу тастера за размак + Дуг притисак на тастер за размак ће приказати мени за избор метода уноса + Аутоматски режим дан/ноћ + Изглед ће пратити подешавања система + %s (Акхор) + Без лимита + Омогући историју међуспремника + Време задржавања историје + Висина тастатуре + %sмин + Прикажи савете за дуги притисак + Уклањање превлачењем + Емоји кључ + Кључне обрисе + Онемогућите учење нових речи + Аутоматски убаци размак после интерпункције када куцате нову реч + Додатни кључеви + Предлози + Остало + "Опозови" + "Понови" + "Користи комуникације и унете податке ради побољшања предлога" + "Иди" + "След" + "Претх" + "Готов" + "Шаљи" + "Тражи" + "Пауза" + "Чекај" + Променити обоје + Додати речи у лични речник + Користити лични речник уређаја за чување научених речи + Увек приказати сугестије + Више ауткорекције + Аутокорекција чак и кад није експлицитно захтевана од поља за унос + Локализуј ред бројева + Додај уобичајене варијанте + Промена језика + Упозорење: онемогућавање овог подешавања ће обрисати научене податке diff --git a/app/src/main/res/values-sv/bools.xml b/app/src/main/res/values-sv/bools.xml index 840d20c218..8693f6e1ec 100644 --- a/app/src/main/res/values-sv/bools.xml +++ b/app/src/main/res/values-sv/bools.xml @@ -1,21 +1,7 @@ - - - "Kör" - "Nästa" - "Föreg" - "Klart" - "Sänd" - "Sökning" - "Pausa" - "Vänta" - diff --git a/app/src/main/res/values-sv/strings-config-important-notice.xml b/app/src/main/res/values-sv/strings-config-important-notice.xml deleted file mode 100644 index 9b9b92e46c..0000000000 --- a/app/src/main/res/values-sv/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "Få bättre förslag genom att använda tidigare angiven data och annan kommunikation" - diff --git a/app/src/main/res/values-sv/strings-emoji-descriptions.xml b/app/src/main/res/values-sv/strings-emoji-descriptions.xml deleted file mode 100644 index 2c06107ebb..0000000000 --- a/app/src/main/res/values-sv/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "Upphovsrättssymbol" - "Symbol för registrerat varumärke" - "Dubbelt utropstecken" - "Utropstecken och frågetecken" - "Varumärkessymbol" - "Informationskälla" - "Vänster/höger-pil" - "Upp/ned-pil" - "Nordvästpil" - "Nordostpil" - "Sydostpil" - "Sydvästpil" - "Vänsterpil med krok" - "Högerpil med krok" - "Armbandsur" - "Timglas" - - - - - "Svart dubbeltriangel som pekar åt höger" - "Svart dubbeltriangel som pekar åt vänster" - "Svart dubbeltriangel som pekar uppåt" - "Svart dubbeltriangel som pekar nedåt" - - - - - - - "Väckarklocka" - - - - - "Timglas med sand som rinner" - - - - - - - "Stort M med cirkel runt" - "Liten svart ruta" - "Liten vit ruta" - "Svart triangel som pekar mot höger" - "Svart triangel som pekar åt vänster" - "Medelstor vit ruta" - "Medelstor svart ruta" - "Medelliten vit ruta" - "Medelliten svart ruta" - "Svart sol med strålar" - "Moln" - - - - - - - "Svart telefon" - "Röstningsruta med bock" - "Paraply med regndroppar" - "Varm dryck" - - - "Vitt pekfinger som pekar uppåt" - - - - - - - - - - - - - - - - - - - "Vitt leende ansikte" - "Väduren" - "Oxen" - "Tvillingarna" - "Kräftan" - "Lejonet" - "Jungfrun" - "Vågen" - "Skorpionen" - "Skytten" - "Stenbocken" - "Vattumannen" - "Fiskarna" - "Svart spader" - "Svart klöver" - "Svart hjärter" - "Svart ruter" - "Varma källor" - "Svart återvinningssymbol" - "Rullstolssymbol" - - - "Ankare" - - - - - - - - - - - - - "Varningsskylt" - "Högspänningsskylt" - "Medelstor vit cirkel" - "Medelstor svart cirkel" - - - - - "Fotboll" - "Baseboll" - "Snögubbe utan snö" - "Sol bakom moln" - - - "Ormbäraren" - - - - - - - "Inträde förbjudet" - - - "Kyrka" - - - - - "Fontän" - "Flagga i hålet" - - - "Segelbåt" - - - - - - - "Tält" - "Bensinpump" - "Svart sax" - "Vit tjock kryssmarkering" - "Flygplan" - "Kuvert" - "Höjd knuten näve" - "Handflata" - "Segerhand" - - - "Blyertspenna" - "Svart pennspets" - "Tjock kryssmarkering" - "Tjockt multiplikationstecken" - - - - - "Glitter" - "Asterisk med åtta streck" - "Åttauddig stjärna" - "Snöflinga" - "Glitter" - "Kryss" - "Negativ kryssmarkering i fyrkant" - "Svart frågetecken med utsmyckning" - "Vitt frågetecken med utsmyckning" - "Vitt utropstecken med utsmyckning" - "Tjockt utropstecken" - - - "Tungt svart hjärta" - "Tjockt plustecken" - "Tjockt minustecken" - "Tjockt divisionstecken" - "Svart högerpil" - "Ögla" - "Dubbla öglor" - "Högerpil som böjer sig uppåt" - "Högerpil som böjer sig nedåt" - "Svart vänsterpil" - "Svart uppåtpil" - "Svart nedåtpil" - "Stor svart ruta" - "Stor vit ruta" - "Medelstor vit stjärna" - "Tjock stor cirkel" - "Vågigt streck" - "Musikaliskt tecken för inledning av ny del" - "Cirkelformat ideogram för gratulation" - "Cirkelformat ideogram för hemlighet" - "Mahjongbricka röd drake" - "Spelkort svart joker" - "Blodgrupp A" - "Blodgrupp B" - "Blodgrupp O" - "Parkeringsplats" - "Blodgrupp AB" - "CL i fyrkant" - "Cool i fyrkant" - "Free i fyrkant" - "ID i fyrkant" - "New i fyrkant" - "NG i fyrkant" - "OK i fyrkant" - "SOS i fyrkant" - "Up! i fyrkant" - "VS i fyrkant" - "Katakana i fyrkant (här)" - "Katakana i fyrkant (tjänst)" - "Fyrkantigt ideogram för avgiftsfri" - "Fyrkantigt ideogram för reserverad plats" - "Fyrkantigt ideogram för förbud" - "Fyrkantigt ideogram för rum finns" - "Fyrkantigt ideogram för godkännande" - "Fyrkantigt ideogram för fullbokat" - "Fyrkantigt ideogram för betalat" - "Fyrkantigt ideogram för månadsvis" - "Fyrkantigt ideogram för ansökan" - "Fyrkantigt ideogram för rabatt" - "Fyrkantigt ideogram för öppet" - "Cirkelformat ideogram för fördel" - "Cirkelformat ideogram för acceptera" - "Cyklon" - "Dimma" - "Stängt paraply" - "Stjärnklar natt" - "Soluppgång över berg" - "Soluppgång" - "Stadssilhuett i skymningen" - "Solnedgång över byggnader" - "Regnbåge" - "Bro på natten" - "Vattenvåg" - "Vulkan" - "Vintergatan" - "Jordglob Europa–Afrika" - "Jordglob Nord- och Sydamerika" - "Jordglob Asien–Australien" - "Glob med meridianer" - "Symbolen Nymåne" - "Symbolen Tilltagande månskära" - "Symbolen Måne första kvarteret" - "Symbolen Tilltagande halvmåne" - "Symbolen Fullmåne" - "Symbolen Avtagande halvmåne" - "Symbolen Måne sista kvarteret" - "Symbolen Avtagande månskära" - "Månskära" - "Nymåne med ansikte" - "Måne första kvarteret med ansikte" - "Måne sista kvarteret med ansikte" - "Fullmåne med ansikte" - "Sol med ansikte" - "Glödande stjärna" - "Stjärnfall" - - - - - - - - - - - - - - - - - - - - - - - - - - - "Kastanj" - "Groddplanta" - "Vintergrönt träd" - "Lövfällande träd" - "Palm" - "Kaktus" - - - "Tulpan" - "Körsbärsblomma" - "Ros" - "Hibiskus" - "Solros" - "Blomma" - "Majskolv" - "Risvippa" - "Ört" - "Fyrklöver" - "Lönnlöv" - "Fallet löv" - "Blad som fladdrar i vinden" - "Svamp" - "Tomat" - "Aubergine" - "Vindruvor" - "Melon" - "Vattenmelon" - "Tangerin" - "Citron" - "Banan" - "Ananas" - "Rött äpple" - "Grönt äpple" - "Päron" - "Persika" - "Körsbär" - "Jordgubbe" - "Hamburgare" - "Pizzabit" - "Kött på ben" - "Kyklingklubba" - "Riskex" - "Risboll" - "Kokt ris" - "Curry och ris" - "Ångande skål" - "Spagetti" - "Bröd" - "Pommes frites" - "Rostad sötpotatis" - "Dango" - "Oden" - "Sushi" - "Friterde räkor" - "Fiskkaka med virvelmönster" - "Mjukglass" - "Shaved ice" - "Glass" - "Munk" - "Småkaka" - "Chokladkaka" - "Godis" - "Lollipop" - "Vaniljkräm" - "Honungsburk" - "Sockerkaka" - "Bentolåda" - "Kastrull med mat" - "Matlagning" - "Gaffel och kniv" - "Tekopp utan handtag" - "Sakeflaska och kopp" - "Vinglas" - "Cocktailglas" - "Tropisk drink" - "Ölglas" - "Klirrande ölglas" - "Nappflaska" - - - - - - - "Band" - "Inslagen present" - "Födelsedagstårta" - "Jack-O-Lantern" - "Julgran" - "Jultomten" - "Fyrverkerier" - "Tomtebloss" - "Ballong" - "Konfettibomb" - "Konfettiboll" - "Tanabata-träd" - "Korsade flaggor" - "Bambudekoration" - "Japanska dockor" - "Koinobori" - "Vindspel" - "Tsukimi-ceremoni" - "Skolväska" - "Examenshatt" - - - - - - - - - - - - - - - "Karusellhäst" - "Pariserhjul" - "Berg-och-dal-bana" - "Fiskespö och fisk" - "Mikrofon" - "Filmkamera" - "Bio" - "Hörlur" - "Palett" - "Cylinderhatt" - "Cirkustält" - "Biljett" - "Klappa" - "Scenkonst" - "Tv-spel" - "Direktträff" - "Enarmad bandit" - "Biljard" - "Speltärning" - "Bowling" - "Japanska spelkort" - "Nottecken" - "Flera nottecken" - "Saxofon" - "Gitarr" - "Klaviatur" - "Trumpet" - "Fiol" - "Klav" - "Löpartröja med band" - "Tennisracket och boll" - "Skida och pjäxa" - "Basketboll och korg" - "Schackrutig flagga" - "Snowboardåkare" - "Löpare" - "Surfare" - - - "Trofé" - "Hästkapplöpning" - "Amerikansk fotboll" - "Rugbyboll" - "Simmare" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Hus" - "Hus med trädgård" - "Kontorsbyggnad" - "Japanskt postkontor" - "Europeiskt postkontor" - "Sjukhus" - "Bank" - "Bankomat" - "Hotell" - "Kärlekshotell" - "Närbutik" - "Skola" - "Varuhus" - "Fabrik" - "Izakaya-lampa" - "Japanskt slott" - "Europeiskt slott" - - - - - - - - - - - - - - - - - - - - - - - - - "Råtta" - "Mus" - "Oxe" - "Vattenbuffel" - "Ko" - - - "Leopard" - "Hare" - "Katt" - "Drake" - "Krokodil" - "Val" - "Snigel" - "Orm" - "Häst" - "Bagge" - "Get" - "Får" - "Apa" - "Tupp" - "Höna" - "Hund" - "Gris" - "Galt" - "Elefant" - "Bläckfisk" - "Spiralformat snäckskal" - "Larv" - "Myra" - "Bi" - "Nyckelpiga" - "Fisk" - "Tropisk fisk" - "Blåsfisk" - "Sköldpadda" - "Kyckling som kläcks" - "Kyckling" - "Kyckling framifrån" - "Fågel" - "Pingvin" - "Koala" - "Pudel" - "Dromedar" - "Kamel" - "Delfin" - "Mushuvud" - "Kohuvud" - "Tigerhuvud" - "Harhuvud" - "Katthuvud" - "Drakhuvud" - "Val som sprutar vatten" - "Hästhuvud" - "Aphuvud" - "Hundhuvud" - "Grishuvud" - "Grodhuvud" - "Hamsteransikte" - "Varghuvud" - "Björnhuvud" - "Pandahuvud" - "Gristryne" - "Tassavtryck" - - - "Ögon" - - - "Öra" - "Näsa" - "Mun" - "Tunga" - "Vit handrygg med pekfinger som pekar uppåt" - "Vit handrygg med pekfinger som pekar nedåt" - "Vit handrygg med pekfinger som pekar åt vänster" - "Vit handrygg med pekfinger som pekar åt höger" - "Knuten näve-tecken" - "Hand som vinkar-tecken" - "Handtecknet OK" - "Tummen upp-tecken" - "Tummen ned-tecken" - "Applåd-tecken" - "Öppna händer-tecken" - "Krona" - "Damhatt" - "Glasögon" - "Slips" - "T-shirt" - "Jeans" - "Klänning" - "Kimono" - "Bikini" - "Damkläder" - "Plånbok" - "Handväska" - "Sminkväska" - "Herrsko" - "Sportsko" - "Högklackad sko" - "Damsandal" - "Damstövlar" - "Fotavtryck" - "Silhuett av byst" - "Silhuett av byster" - "Pojke" - "Flicka" - "Man" - "Kvinna" - "Familj" - "Man och kvinna som håller hand" - "Två män som håller hand" - "Två kvinnor som håller hand" - "Polis" - "Kvinna med kaninöron" - "Brud med slöja" - "Person med blont hår" - "Man med gua pi mao" - "Man med turban" - "Gammal man" - "Gammal kvinna" - "Baby" - "Byggarbetare" - "Prinsessa" - "Japansk demon" - "Japansk Tengu" - "Spöke" - "Babyängel" - "Utomjording" - "Utomjordiskt monster" - "Vätte" - "Dödskalle" - "Person i informationen" - "Vakt med björnskinnsmössa" - "Dansare" - "Läppstift" - "Nagellack" - "Ansiktsmassage" - "Frisyr" - "Barberarstolpe" - "Spruta" - "Piller" - "Pussmärke" - "Kärleksbrev" - "Ring" - "Ädelsten" - "Puss" - "Bukett" - "Par med hjärta" - "Bröllop" - "Hjärta som slår" - "Brustet hjärta" - "Två hjärtan" - "Glittrande hjärta" - "Hjärta som växer" - "Hjärta med pil" - "Blått hjärta" - "Grönt hjärta" - "Gult hjärta" - "Lila hjärta" - "Hjärta med rosett" - "Hjärtan som cirklar runt varandra" - "Hjärtdekoration" - "Romb med punkt inuti" - "Glödlampa" - "Symbol för ilska" - "Bomb" - "Symbol för sömn" - "Symbol för krock" - "Symbolen Svett som stänker" - "Liten droppe" - "Symbol för fart" - "Bajskorv" - "Spända biceps" - "Symbol för yrhet" - "Pratbubbla" - "Tankebubbla" - "Vit blomma" - "Hundra poäng-symbol" - "Påse med pengar" - "Valutaväxling" - "Tjockt dollartecken" - "Kreditkort" - "Sedel med yentecken" - "Sedel med dollartecken" - "Sedel med eurotecken" - "Sedel med pundtecken" - "Pengar med vingar" - "Uppåtgående diagram och yentecken" - "Säte" - "PC" - "Portfölj" - "Minidisk" - "Diskett" - "Optisk skiva" - "Dvd" - "Filmapp" - "Öppen filmapp" - "Sida som rullar upp sig" - "Uppåtvänd sida" - "Kalender" - "Blockkalender" - "Kortregister" - "Uppåtgående diagram" - "Nedåtgående diagram" - "Stapeldiagram" - "Skrivunderlägg" - "Kartnål" - "Rund kartnål" - "Gem" - "Rak linjal" - "Vinkelhake" - "Märkflikar" - "Liggare" - "Anteckningsbok" - "Anteckningsbok med snyggt omslag" - "Stängd bok" - "Öppen bok" - "Grön bok" - "Blå bok" - "Orange bok" - "Böcker" - "Namnskylt" - "Rulle" - "Anteckning" - "Telefonlur" - "Personsökare" - "Fax" - "Satellitantenn" - "Högtalare för offentliga meddelanden" - "Megafon" - "Utkorg" - "Inkorg" - "Paket" - "E-postsymbol" - "Inkommande kuvert" - "Kuvert med pil som pekar nedåt ovanför" - "Stängd brevlåda med flaggan nere" - "Stängd brevlåda med flaggan uppe" - "Öppen brevlåda med flaggan uppe" - "Öppen brevlåda med flaggan nere" - "Brevlåda" - "Posthorn" - "Tidning" - "Mobiltelefon" - "Mobiltelefon med pil som pekar åt höger på vänster sida" - "Vibrationsläge" - "Mobiltelefonen av" - "Mobiltelefoner förbjudna" - "Antenn med staplar" - "Kamera" - - - "Videokamera" - "Tv" - "Radio" - "Videokassett" - - - - - "Tvinnade högerpilar" - "Öppna cirkelpilar åt höger och vänster i riktning medurs" - "Öppna cirkelpilar åt höger och vänster i riktning medurs med en etta i cirkel som överlägg" - "Öppna cirkelpilar nedåt och uppåt i riktning medurs" - "Öppna cirkelpilar nedåt och uppåt i riktning moturs" - "Symbol för låg ljusstyrka" - "Symbol för hög ljusstyrka" - "Högtalare med annulleringsstreck" - "Högtalare" - "Högtalare med en ljudvåg" - "Högtalare med tre ljudvågor" - "Batteri" - "Elkontakt" - "Förstoringsglas riktat åt vänster" - "Förstoringsglas riktat åt höger" - "Hänglås med bläckpenna" - "Stängt hänglås med nyckel" - "Nyckel" - "Hänglås" - "Öppet hänglås" - "Klocka" - "Klocka med annulleringsstreck" - "Bokmärke" - "Länksymbol" - "Radioknapp" - "Back (bakåt) med vänsterpil ovanför" - "End (slut) med vänsterpil ovanför" - "On (på) med utropstecken och vänster-höger-pil ovanför" - "Soon (snart) med högerpil ovanför" - "Top (till toppen) med uppåtpil ovanför" - "Symbol för 18 års åldersgräns" - "Tangent 10" - "Inmatningssymbol för latinska stora bokstäver" - "Inmatningssymbol för latinska små bokstäver" - "Inmatningssymbol för siffror" - "Inmatningssymbol för symboler" - "Inmatningssymbol för latinska bokstäver" - "Eld" - "Ficklampa" - "Skiftnyckel" - "Hammare" - "Mutter och skruv" - "Hocho" - "Pistol" - "Mikroskop" - "Teleskop" - "Kristallkula" - "Sexuddig stjärna med mittprick" - "Japansk symbol för nybörjare" - "Trident-symbol" - "Svart fyrkantig knapp" - "Vit fyrkantig knapp" - "Stor röd cirkel" - "Stor blå cirkel" - "Stor orange romb" - "Stor blå romb" - "Liten orange romb" - "Liten blå romb" - "Röd triangel som pekar uppåt" - "Röd triangel som pekar nedåt" - "Liten röd triangel som pekar uppåt" - "Liten röd triangel som pekar nedåt" - - - - - - - - - - - - - "Urtavla klockan ett" - "Urtavla klockan två" - "Urtavla klockan tre" - "Urtavla klockan fyra" - "Urtavla klockan fem" - "Urtavla klockan sex" - "Urtavla klockan sju" - "Urtavla klockan åtta" - "Urtavla klockan nio" - "Urtavla klockan tio" - "Urtavla klockan elva" - "Urtavla klockan tolv" - "Urtavla halv två" - "Urtavla halv tre" - "Urtavla halv fyra" - "Urtavla halv fem" - "Urtavla halv sex" - "Urtavla halv sju" - "Urtavla halv åtta" - "Urtavla halv nio" - "Urtavla halv tio" - "Urtavla halv elva" - "Urtavla halv tolv" - "Urtavla halv ett" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Fuji" - "Tokyo tower" - "Frihetsgudinnan" - "Silhuett av Japan" - "Moyai" - "Storleende ansikte" - "Storleende ansikte med leende ögon" - "Ansikte med glädjetårar" - "Leende ansikte med öppen mun" - "Leende ansikte med öppen mun och leende ögon" - "Leende ansikte med öppen mun och kallsvett" - "Leende ansikte med öppen mun och ihopknipna ögon" - "Leende ansikte med gloria" - "Leende ansikte med horn" - "Ansikte som blinkar med ena ögat" - "Leende ansikte med leende ögon" - "Ansikte som äter något gott" - "Lättat ansikte" - "Leende ansikte med hjärtformade ögon" - "Leende ansikte med solglasögon" - "Ansikte med snett leende" - "Neutralt ansikte" - "Uttryckslöst ansikte" - "Ansikte som inte är roat" - "Ansikte med kallsvett" - "Eftertänksamt ansikte" - "Förvirrat ansikte" - "Förbryllat ansikte" - "Kyssande ansikte" - "Ansikte som blåser iväg en kyss" - "Kyssande ansikte med leende ögon" - "Kyssande ansikte med stängda ögon" - "Ansikte som sticker ut tungan" - "Ansikte som sticker ut tungan och blinkar med ena ögat" - "Ansikte som sticker ut tungan och kniper ihop ögonen" - "Besviket ansikte" - "Oroligt ansikte" - "Argt ansikte" - "Tjurigt ansikte" - "Ansikte som gråter" - "Ihärdigt ansikte" - "Triumferande ansikte" - "Ansikte som ser besviket men lättat ut" - "Missnöjt ansikte med öppen mun" - "Plågat ansikte" - "Ängsligt ansikte" - "Trött och slitet ansikte" - "Sömnigt ansikte" - "Trött ansikte" - "Grimaserande ansikte" - "Ansikte som gråter högt" - "Ansikte med öppen mun" - "Tystat ansikte" - "Ansikte med öppen mun och kallsvett" - "Ansikte som skriker av rädsla" - "Överraskat ansikte" - "Rodnande ansikte" - "Sovande ansikte" - "Yrt ansikte" - "Ansikte utan mun" - "Ansikte med kirurgmask" - "Storleende kattansikte med leende ögon" - "Kattansikte med glädjetårar" - "Leende kattansikte med öppen mun" - "Leende kattansikte med hjärtformade ögon" - "Kattansikte med snett leende" - "Kyssande kattansikte med stängda ögon" - "Tjurigt kattansikte" - "Gråtande kattansikte" - "Trött och slitet kattansikte" - - - - - - - - - "Ansikte med \"sluta\"-gest" - "Ansikte med OK-gest" - "Person som bugar djupt" - "Ser inget-apa" - "Hör inget-apa" - "Säger inget-apa" - "Glad person som lyfter en hand" - "Person som höjer båda händerna i en segergest" - "Person som ser bister ut" - "Person med tjurigt ansikte" - "Person med knäppta händer" - "Raket" - "Helikopter" - "Ånglok" - "Järnvägsvagn" - "Höghastighetståg" - "Höghastighetståg med rund nos" - "Tåg" - "Tunnelbana" - "Snabbspårväg" - "Station" - "Spårvagn" - "Spårvagn" - "Buss" - "Buss som närmar sig" - "Trådbuss" - "Busshållplats" - "Minibuss" - "Ambulans" - "Brandbil" - "Polisbil" - "Polisbil som närmar sig" - "Taxi" - "Taxi som närmar sig" - "Bil" - "Bil som närmar sig" - "Stadsjeep" - "Skåpbil" - "Långtradare" - "Traktor" - "Monorail" - "Bergbana" - "Hängbana" - "Linbana" - "Kabinbana" - "Färja" - "Roddbåt" - "Racerbåt" - "Horisontellt trafikljus" - "Vertikalt trafikljus" - "Vägbyggskylt" - "Polissiren" - "Vimpel på stång" - "Dörr" - "Inträde förbjudet-skylt" - "Röksymbol" - "Rökförbudssymbol" - "Släng skräp här-symbol" - "Nedskräpning förbjuden-symbol" - "Dricksvattensymbol" - "Ej drickbart vatten-symbol" - "Cykel" - "Cyklar förbjudna" - "Cyklist" - "Mountainbikeåkare" - "Fotgängare" - "Inga fotgängare" - "Barn" - "Herrsymbol" - "Damsymbol" - "Toalett" - "Babysymbol" - "Toalett" - "WC" - "Dusch" - "Badrum" - "Badkar" - "Passkontroll" - "Tull" - "Bagageutlämning" - "Effektförvaring" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-sv/strings-letter-descriptions.xml b/app/src/main/res/values-sv/strings-letter-descriptions.xml deleted file mode 100644 index a0a594fef7..0000000000 --- a/app/src/main/res/values-sv/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "Feminin ordningsindikator" - "Mikrotecken" - "Maskulin ordningsindikator" - "Dubbel-s" - "A, grav accent" - "A, akut accent" - "A, cirkumflex accent" - "A, tilde" - "A, trema" - "A, ring ovanför" - "A, E, ligatur" - "C, cedilj" - "E, grav accent" - "E, akut accent" - "E, cirkumflex accent" - "E, trema" - "I, grav accent" - "I, akut accent" - "I, cirkumflex" - "I, trema" - "Eth" - "N, tilde" - "O, grav accent" - "O, akut accent" - "O, cirkumflex" - "O, tilde" - "O, trema" - "O, snedstreck" - "U, grav accent" - "U, akut accent" - "U, cirkumflex" - "U, trema" - "Y, akut accent" - "Thorn" - "Y, trema" - "A, streck ovanför" - "A, brevis" - "A, svans" - "C, akut accent" - "C, cirkumflex" - "C, punkt ovanför" - "C, hake" - "D, hake" - "D, snedstreck" - "E, streck ovanför" - "E, brevis" - "E, punkt ovanför" - "E, svans" - "E, hake" - "G, cirkumflex" - "G, brevis" - "G, punkt ovanför" - "G, cedilj" - "H, cirkumflex" - "H, snedstreck" - "I, tilde" - "I, streck ovanför" - "I, brevis" - "I, svans" - "I utan punkt" - "I, J, ligatur" - "J, cirkumflex" - "K, cedilj" - "Kra" - "L, akut accent" - "L, cedilj" - "L, hake" - "L, halvhög punkt" - "L, snedstreck" - "N, akut accent" - "N, cedilj" - "N, hake" - "N, med apostrof före" - "Eng" - "O, diakritiskt tecken" - "O, brevis" - "O, dubbel akut accent" - "O, E, ligatur" - "R, akut accent" - "R, cedilj" - "R, hake" - "S, akut accent" - "S, cirkumflex" - "S, cedilj" - "S, hake" - "T, cedilj" - "T, hake" - "T, snedstreck" - "U, tilde" - "U, streck ovanför" - "U, brevis" - "U, ring ovanför" - "U, dubbel akut accent" - "U, svans" - "W, cirkumflex" - "Y, cirkumflex" - "Z, akut accent" - "Z, punkt ovanför" - "Z, hake" - "Långt s" - "O, horn" - "U, horn" - "S, komma nedanför" - "T, komma nedanför" - "Schwa" - "A, punkt nedanför" - "A, hake ovanför" - "A, cirkumflex och akut accent" - "A, cirkumflex och grav accent" - "A, cirkumflex och hake ovanför" - "A, cirkumflex och tilde" - "A, cirkumflex och punkt nedanför" - "A, brevis och akut accent" - "A, brevis och grav accent" - "A, brevis och hake ovanför" - "A, brevis och tilde" - "A, brevis och punkt nedanför" - "E, punkt nedanför" - "E, hake ovanför" - "E, tilde" - "E, cirkumflex och akut accent" - "E, cirkumflex och grav accent" - "E, cirkumflex och hake ovanför" - "E, cirkumflex och tilde" - "E, cirkumflex och punkt nedanför" - "I, hake ovanför" - "I, punkt nedanför" - "O, punkt nedanför" - "O, hake ovanför" - "O, cirkumflex och akut accent" - "O, cirkumflex och grav accent" - "O, cirkumflex och hake ovanför" - "O, cirkumflex och tilde" - "O, cirkumflex och punkt nedanför" - "O, horn och akut accent" - "O, horn och grav accent" - "O, horn och hake ovanför" - "O, horn och tilde" - "O, horn och punkt nedanför" - "U, punkt nedanför" - "U, hake ovanför" - "U, horn och akut accent" - "U, horn och grav accent" - "U, horn och hake ovanför" - "U, horn och tilde" - "U, horn och punkt nedanför" - "Y, grav accent" - "Y, punkt nedanför" - "Y, hake ovanför" - "Y, tilde" - "Upp och nedvänt utropstecken" - "Gåsögon som pekar åt vänster" - "Halvhög punkt" - "Upphöjt läge (ett)" - "Gåsögon som pekar åt höger" - "Upp och nedvänt frågetecken" - "Vänsterställt enkelt citattecken" - "Högerställt enkelt citattecken" - "Enkelt lågt 9-citattecken" - "Vänsterställt dubbelt citattecken" - "Högerställt dubbelt citattecken" - "Kors" - "Dubbelkors" - "Promilletecken" - "Primtecken" - "Dubbelprimtecken" - "Vänsterställt enkelt vinkelcitationstecken" - "Högerställt enkelt vinkelcitationstecken" - "Upphöjt läge (fyra)" - "Upphöjt läge, litet latinskt n" - "Pesotecken" - "c/o" - "Högerpil" - "Nedåtpil" - "Tomma mängden" - "Öka" - "Mindre än eller lika med" - "Större än eller lika med" - "Svart stjärna" - diff --git a/app/src/main/res/values-sv/strings-talkback-descriptions.xml b/app/src/main/res/values-sv/strings-talkback-descriptions.xml index 2bbe41ce74..7822a05218 100644 --- a/app/src/main/res/values-sv/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-sv/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "Anslut hörlurar om du vill att lösenordet ska läsas upp." - "Nuvarande text är %s" - "Ingen text har angetts" - "Om du trycker på %1$s rättas %2$s till %3$s" - "Om du trycker på %1$s utförs autokorrigering" - "Inga förslag" - "Okänt tecken" - "Skift" - "Fler symboler" - "Skift" - "Symboler" - "Skift" - "Ta bort" - "Symboler" - "Bokstäver" - "Siffror" - "Inställningar" - "Tabb" - "Blanksteg" - "Röstindata" - "Emoji" - "Retur" - "Sökning" - "Punkt" - "Byt språk" - "Nästa" - "Föregående" - "Skift aktiverat" - "Caps Lock är aktiverat" - "Symbolläge" - "Läge med fler symboler" - "Bokstavsläge" - "Telefonläge" - "Telefonsymbolläge" - "Tangentbordet är dolt" - "Tangentbord för %s visas" - "datum" - "datum och tid" - "e-post" - "sms/mms" - "siffror" - "telefonnummer" - "text" - "klockslag" - "webbadresser" - "Senaste" - "Personer" - "Föremål" - "Natur" - "Platser" - "Symboler" - "Flaggor" - "Känslor och personer" - "Djur och natur" - "Mat och dryck" - "Resor och platser" - "Aktivitet" - "Uttryckssymboler" - "Versalt %s" - "Versalt I" - "Versalt I, punkt ovanför" - "Okänd symbol" - "Okänd emoji" - "Uttråkat ansikte" - "Generat ansikte" - "Ansikte med solglasögon" - "Förvånat ansikte" - "Kyssande ansikte" - "Ansikte med rynkad panna" - "Alternativa tecken är tillgängliga" - "Alternativa tecken avvisas" - "Alternativa förslag är tillgängliga" - "Alternativa förslag avvisas" + + + "Anslut hörlurar om du vill att lösenordet ska läsas upp." + "Nuvarande text är %s" + "Ingen text har angetts" + "Om du trycker på %1$s rättas %2$s till %3$s" + "Om du trycker på %1$s utförs autokorrigering" + "Inga förslag" + "Okänt tecken" + "Skift" + "Fler symboler" + "Skift" + "Symboler" + "Skift" + "Ta bort" + "Symboler" + "Bokstäver" + "Siffror" + "Inställningar" + "Tabb" + "Blanksteg" + "Röstindata" + "Emoji" + "Retur" + "Sökning" + "Punkt" + "Byt språk" + "Nästa" + "Föregående" + "Skift aktiverat" + "Caps Lock är aktiverat" + "Symbolläge" + "Läge med fler symboler" + "Bokstavsläge" + "Telefonläge" + "Telefonsymbolläge" + "Tangentbordet är dolt" + "Tangentbord för %s visas" + "datum" + "datum och tid" + "e-post" + "sms/mms" + "siffror" + "telefonnummer" + "text" + "klockslag" + "webbadresser" + "Senaste" + "Föremål" + "Symboler" + "Flaggor" + "Känslor och personer" + "Djur och natur" + "Mat och dryck" + "Resor och platser" + "Aktivitet" + "Uttryckssymboler" + "Versalt %s" + "Versalt I" + "Versalt I, punkt ovanför" + "Alternativa tecken är tillgängliga" + "Alternativa tecken avvisas" + "Alternativa förslag är tillgängliga" + "Alternativa förslag avvisas" diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index a3c02cf73a..aed8336937 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -1,193 +1,260 @@ - - - - - "Inmatningsalternativ" - "Slå upp kontaktnanmn" - "I stavningskontrollen används poster från kontaktlistan" - "Vibrera vid tangenttryck" - "Ljud vid tangenttryck" - "Popup vid tangenttryck" - "Inställningar" - "Konton och sekretess" - "Utseende och layouter" - "Svepskrivning" - "Textkorrigering" - "Avancerat" - "Tema" - "Aktivera delat tangentbord" - "Byt till annan inmatning" - "Språkbytesknappen omfattar även andra inmatningsmetoder" - "Knapp för att byta språk" - "Visa när flera inmatningsspråk är aktiverade" - "Ta bort popup-fördröjning" - "Fördröj inte" - "Standard" - "%s millisek." - "Standardinställning" - "Föreslå kontaktnamn" - "Använd namn från Kontakter för förslag och korrigeringar" - "Anpassade förslag" - "Förbättra %s" - "Dubbelt blanksteg = punkt" - "Dubbelt blanksteg ger en punkt följt av mellanslag" - "Automatiska versaler" - "Inled varje mening med stor bokstav" - "Personlig ordlista" - "Tilläggsordlistor" - "Huvudordlistan" - "Visa rättningsförslag" - "Visar ordförslag när du skriver" - "Blockera stötande ord" - "Visa inte förslag på ord som kan verka stötande" - "Autokorrigering" - "Blanksteg/skiljetecken rättar felstavning" - "Av" - "Måttlig" - "Aggressivt" - "Mycket aggressivt" - "Föreslå nästa ord" - "Ge förslag utifrån föregående ord" - "Aktivera svepskrivning" - "Skriv genom att dra från tecken till tecken utan att lyfta handen" - "Visa spår efter rörelse" - "Visa ordförslag vid svepskrivning" - "Ordförslaget visas i rörelsen medan du skriver" - "Frasrörelse" - "Infoga blanksteg genom att dra fingret över blankstegstangenten" - "Röstinmatningsknapp" - "Ingen röstinmatningsmetod har aktiverats. Kontrollera språk- och inmatningsinställningarna." - "Konfigurera inmatningsmetoder" - "Språk" - "Hjälp och feedback" - "Språk" - "Tryck igen om du vill spara" - "Tryck här om du vill spara" - "En ordlista är tillgänglig" - "Tangentbordstema" - "Byt konto" - "Du har inte valt något konto" - "Du använder nu %1$s" - "OK" - "Avbryt" - "Logga ut" - "Välj ett konto" - "Engelska (brittisk)" - "Engelska (amerikansk)" - "spanska (USA)" - "Hindi/engelska" - "Serbiska (latinsk)" - "Engelska (Storbritannien) %s" - "Engelska (USA) (%s)" - "Spanska (USA (%s)" - "Hindi/engelska (%s)" - "Serbiska (%s)" - "%s (traditionell)" - "%s (kompakt)" - "Inget språk (alfabet)" - "Alfabet (QWERTY)" - "Alfabet (QWERTZ)" - "Alfabet (AZERTY)" - "Alfabet (Dvorak)" - "Alfabet (Colemak)" - "Alfabet (PC)" - "Humörsymbol" - "Tangentbordstema" - "Anpassade indatastilar" - "Ny stil" - "Lägg till" - "Ta bort" - "Spara" - "Språk" - "Layout" - "Din anpassade indatatyp måste aktiveras innan du börjar använda den. Vill du aktivera den nu?" - "Aktivera" - "Inte nu" - "Samma indatastil finns redan: %s" - "Vibrationslängd vid tangenttryck" - "Volym vid tangenttryck" - "Fördröjning vid långt tryck" - "Emoji för fysiskt tangentbord" - "Den fysiska Alt-tangenten visar emoji-paletten" - "Standard" - "Välkommen till %s" - "med svepskrivning" - "Kom igång" - "Nästa steg" - "Konfigurera %s" - "Aktivera %s" - "Markera %s i inställningarna för Språk och inmatning så att appen kan köras." - "%s har redan aktiverats i inställningarna för Språk och inmatning och det här steget är färdigt. Fortsätt till nästa steg." - "Aktivera i inställningarna" - "Byt till %s" - "Välj sedan %s som din aktiva textinmatningsmetod." - "Byt inmatningsmetod" - "Grattis! Nu är det klart." - "Nu kan du skriva i alla dina favoritappar med %s." - "Konfigurera ytterligare språk" - "Slutförda" - "Visa appikon" - "Visa appikonen i startprogrammet" - "Dictionary Provider" - "Dictionary Provider" - "Ordlistetjänst" - "Uppdateringsinformation för ordlista" - "Tilläggsordlistor" - "Inställningar för ordlistor" - "Egna ordlistor" - "Egen ordlista" - "En ordlista är tillgänglig" - "Hämtar för närvarande" - "Installerad" - "Installerad, inaktiverad" - "Problem med att ansluta till ordlistetjänsten" - "Inga ordlistor finns" - "Uppdatera" - "Informationen uppdaterades senast" - "Söker efter uppdateringar" - "Läser in …" - "Huvudordlista" - "Avbryt" - "Inställningar" - "Installera" - "Avbryt" - "Ta bort" - "Version %1$s" - "Lägg till" - "Lägg till i ordlista" - "Fras" - "Fler alternativ" - "Färre alternativ" - "OK" - "Ord:" - "Genväg:" - "Språk:" - "Skriv ett ord" - "Valfri genväg" - "Redigera ord" - "Redigera" - "Ta bort" - "Du har inga ord i din egen ordlista. Tryck på knappen Lägg till (+) om du vill lägga till ett ord." - "För alla språk" - "Fler språk ..." - "Ta bort" - " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + + Slå upp kontaktnamn + "Vibrera vid tangenttryck" + "Ljud vid tangenttryck" + "Popup vid tangenttryck" + Alternativ + "Svepskrivning" + "Textkorrigering" + "Avancerat" + "Tema" + "Aktivera delat tangentbord" + Byt till andra inmatningssätt + Språkbytestangent + %sms + "Standardinställning" + "Använd namn från Kontakter för förslag och korrigeringar" + "Anpassade förslag" + Dubbelt blanksteg-punkt + "Dubbelt blanksteg ger en punkt följt av mellanslag" + "Automatiska versaler" + "Inled varje mening med stor bokstav" + "Personlig ordlista" + "Huvudordlistan" + "Visa rättningsförslag" + "Visar ordförslag när du skriver" + "Blockera stötande ord" + "Visa inte förslag på ord som kan verka stötande" + "Autokorrigering" + "Blanksteg/skiljetecken rättar felstavning" + "Av" + Måttligt + "Aggressivt" + "Mycket aggressivt" + "Föreslå nästa ord" + "Ge förslag utifrån föregående ord" + "Aktivera svepskrivning" + "Skriv genom att dra från tecken till tecken utan att lyfta handen" + "Visa spår efter rörelse" + Dynamisk flytande förhandsvis. + "Frasrörelse" + "Infoga blanksteg genom att dra fingret över blankstegstangenten" + Engelska (UK) + Engelska (USA) + Spanska (USA) + Hingelska + "Serbiska (latinsk)" + %s (traditionell) + %s (kompakt) + "Inget språk" + Emoji + "Lägg till" + "Ta bort" + "Spara" + "Språk" + "Layout" + "Vibrationslängd vid tangenttryck" + "Volym vid tangenttryck" + Fördröjning för långt tangenttryck + "Emoji för fysiskt tangentbord" + "Den fysiska Alt-tangenten visar emoji-paletten" + "Standard" + Välkommen till %s + "med svepskrivning" + "Kom igång" + Konfigurerar %s + Aktivera %s + Markera \"%s\" i dina Språk & inmatning-inställningar. Detta kommer att tillåta att den körs på din enhet. + Aktivera i Inställningar + Byt till %s + Välj sedan \"%s\" som din aktiva textinmatningsmetod. + "Byt inmatningsmetod" + Grattis, nu är allt klart! + Nu kan du skriva i alla dina favoritappar med %s. + Slutförd + "Visa appikon" + "Visa appikonen i startprogrammet" + "Tilläggsordlistor" + Ordlista tillgänglig + "Inställningar" + "Ta bort" + Version %1$s + "Genväg:" + "Språk:" + "Skriv ett ord" + "Valfri genväg" + "Redigera ord" + "För alla språk" + "Fler språk …" + Korrigeringar + Förslag + Experimentella + Diverse + %s min + Ingen gräns + Långtryckning på mellanslagstangenten öppnar menyn för val av inmatningsmetod + Ändra inmatningsmetod med mellanslagstangenten + HeliBoards stavningskontroll + Inställningar för HeliBoards stavningskontroll + Sifferrad + Visa alltid sifferraden + Emoji-tangent + HeliBoard-inställningar + Visa tips för långtryckning + Ytterligare tangenter + Urklippshistorik + Visa tangenttips + Tvinga inkognitoläge + Inaktivera inlärningen av nya ord + Inmatning + Aktivera urklippshistorik + Om inaktiverad, kommer urklippstangenten att klistra in eventuellt urklippsinnehåll + Lagringstid för historik + Backstegssvepning + Gör en svepning från backstegstangenten för att markera och ta bort större mängder text på en gång + Infoga automatiskt mellanslag efter skiljetecken när ett nytt ord skrivs + Automatiskt mellanslag efter skiljetecken + Fler tangenter + Skala för tangentbordets höjd + %s (akkhor) + Kantlinjer runt tangenter + Automatiskt dag-/nattläge + Utseendet kommer att följa systeminställningarna + Förtroende för automatisk korrigering + "Välj inmatningsmetod" + "Ångra" + "Gör om" + "Få bättre förslag genom att använda tidigare angiven data och annan kommunikation" + "Kör" + "Nästa" + "Föreg" + "Klart" + "Sänd" + "Sökning" + "Pausa" + "Vänta" + Språk & layouter + Ställ in bakgrundsbild + Symboler + Symboler (arabiska) + Telefonsymboler + Se på GitHub + Spara logg + Licens för öppen källkod + GNU General Public License v3.0 + Version + Säkerhetskopiera + Återställ + Ladda svepskrivningsbibliotek + Tillhandahåll ett ursprungligt bibliotek för att aktivera svepskrivning + Visa varianter definierade i tangentbordsspråk + Lägg till vanliga varianter + Lägg till alla tillgängliga varianter + URL-detektering + Försök att upptäcka URL:er och liknande som ett enda ord + Utseende + Om + Fler symboler + Visa fler bokstäver med diakriter i popup + Visa funktioner som kan gå obemärkta förbi + Beskrivning av dolda funktioner + Säkerhetskopiering och återställning + Stäng + Lägg till ett ord + Byt båda + Lägg till ord i personlig ordbok + Använd enhetens personliga ordbok för lagring av inlärda ord + Visa alltid förslag + Mer autokorrigering + Spara till eller ladda från fil. Varning: Återställning kommer att skriva över befintliga data + Byt språk + Ignorera andra appars begäran om att inaktivera förslag (kan orsaka problem) + Visa alla färger + Autokorrigera även när det inte uttryckligen begärs av inmatningsfältet + Varning: Inaktivering av denna inställning kommer att rensa inlärda data + Tryck på språket för att öppna inställningar + Blågrått + Brunt + Ljust + Dynamiska färger + Mörkt + Mörkare + Svart + Choklad + Molnigt + Skog + Indigo + Stil + Avrundad + Färger + Färger (natt) + Rosa + Hav + Sand + Violett + Användardefinierat + Smala tangentmellanrum + Skala för avstånd till nederkant + Delningsavstånd + Visa endast huvudfärger + Färga navigeringsfält + Intern huvudordlista + Välj ordning på popup-tangenter + Välj tipskälla + Natt + Lägg till ordlista från fil + Välj en ordlista att lägga till. Ordlistor i .dict-format kan laddas ner %s. + Välj språk + här + Dag + Flerspråkigt skrivande + Tangenttipstext + Ordlistor + Vänster + Höger + Språk (prioriterat) + Sifferrad + Symboler + Layout + Välj verktygsfältstangenter + Stäng urklippshistorik + Välj verktygsfältstangenter för urklipp + Visa tips om långtryck på en tangent aktiverar ytterligare funktionalitet + Visa funktionalitetstips + Urklipp + Rensa urklipp + Röstinmatning + Markera ord + Enhandsläge + Upp + Ner + Längst åt vänster + Längst åt höger + Lägg till mycket vanliga varianter (standard) + Visa verktygsfält automatiskt + Visa verktygsfältet om inmatning påbörjas eller text markeras + Språkbytestangentens beteende + Verktygsfält + Växlande riktning för verktygsfält + Vänd på riktningen när en höger-till-vänster-tangentbordsundertyp är vald + Sidslut + Ord höger + Sida upp + Sidstart + Dölj verktygsfältet när förslag blir tillgängliga + Ord vänster + Dölj verktygsfält automatiskt + Detta kommer att inaktivera andra långtryckningsåtgärder för verktygsfältstangenter som inte är fästa + Välj fästa verktygsfältstangenter + Fäst verktygsfältstangent genom långtryckning + Konfigurera tangentbordet + Sida ner + Ta bort överflödiga popuper + Dämpa popup-tangenter som finns i grundlayouten + Ingen diff --git a/app/src/main/res/values-sw/bools.xml b/app/src/main/res/values-sw/bools.xml index 840d20c218..8693f6e1ec 100644 --- a/app/src/main/res/values-sw/bools.xml +++ b/app/src/main/res/values-sw/bools.xml @@ -1,21 +1,7 @@ - - - "Nenda" - "Inayofuata" - "Nyuma" - "Nimemaliza" - "Tuma" - "Tafuta" - "Sitisha" - "Subiri" - diff --git a/app/src/main/res/values-sw/strings-config-important-notice.xml b/app/src/main/res/values-sw/strings-config-important-notice.xml deleted file mode 100644 index efc283d430..0000000000 --- a/app/src/main/res/values-sw/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "Tumia mawasiliano yako na data unayocharaza, kujifunza ili kuboresha mapendekezo" - diff --git a/app/src/main/res/values-sw/strings-emoji-descriptions.xml b/app/src/main/res/values-sw/strings-emoji-descriptions.xml deleted file mode 100644 index 7010dd6d63..0000000000 --- a/app/src/main/res/values-sw/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "Ishara ya hakimiliki" - "Ishara ya usajili" - "Emoji ya alama mbili za mshangao" - "Emoji ya alama ya mshangao na kuuliza" - "Emoji ya alama ya nembo ya biashara" - "Emoji ya chanzo cha habari" - "Emoji ya mshale unaoonyesha kushoto-kulia" - "Emoji ya mshale unaoonyesha juu-chini" - "Emoji ya mshale unaoonyesha upande wa kaskazini magharibi" - "Emoji ya mshale unaoonyesha upande wa kaskazini mashariki" - "Emoji ya mshale unaoonyesha upande wa kusini mashariki" - "Emoji ya mshale unaoonyesha upande wa kusini magharibi" - "Emoji ya mshale unaoonyeshea kushoto ukiwa umejikunja kwa juu kama ndoano" - "Emoji ya mshale unaoonyeshea kulia ukiwa umejikunja kwa juu kama ndoano" - "Emoji ya saa ya kuonyeshea wakati" - "Emoji ya chupa inayopima muda kwa mtiririko wa mchanga" - - - - - "Emoji ya pembetatu zilizoongozana zinazoonyeshea upande wa kulia" - "Emoji ya pembetatu zilizoongozana zinazoonyeshea upande wa kushoto" - "Emoji ya pembetatu zilizoongozana zinazoonyeshea juu" - "Emoji ya pembetatu zilizoongozana zinazoonyeshea chini" - - - - - - - "Emoji ya saa ya kengele" - - - - - "Emoji ya chupa inayopima muda kwa mtiririko wa mchanga na mchanga ukitiririka" - - - - - - - "Emoji ya herufi m iliyozungushiwa duara" - "Emoji ya mraba mdogo mweusi" - "Emoji ya mraba mdogo mweupe" - "Emoji ya pembetatu inayoonyeshea upande wa kulia" - "Emoji ya pembetatu inayoonyeshea upande wa kushoto" - "Emoji ya mraba mweupe" - "Emoji ya mraba mweusi" - "Emoji ya mraba mdogo mweupe" - "Emoji ya mraba mdogo mweusi" - "Emoji ya jua lenye rangi nyeusi na miale" - "Emoji ya wingu" - - - - - - - "Emoji ya simu ya nyeusi ya mezani" - "Emoji ya kisanduku cha kupigia kura na alama ya tiki" - "Emoji ya mwavuli na manyunyu ya mvua" - "Emoji ya kinywaji moto" - - - "Ishara ya mkono ukiwa umenyoosha kidole kuelekea juu" - - - - - - - - - - - - - - - - - - - "Emoji ya uso unaoonyesha tabasamu la kawaida" - "Emoji inayoonyesha alama inayowakilisha nyota ya Kondoo" - "Emoji inayoonyesha alama inayowakilisha nyota ya Ng\'ombe" - "Emoji inayoonyesha alama inayowakilisha nyota ya Mapacha" - "Emoji inayoonyesha alama inayowakilisha nyota ya Kaa" - "Emoji inayoonyesha alama inayowakilisha nyota ya Simba" - "Emoji inayoonyesha alama inayowakilisha nyota ya Mashuke" - "Emoji inayoonyesha alama inayowakilisha nyota ya Mizani" - "Emoji inayoonyesha alama inayowakilisha nyota ya Ng\'e" - "Emoji inayoonyesha alama inayowakilisha nyota ya Mshale" - "Emoji inayoonyesha alama inayowakilisha nyota ya Mbuzi" - "Emoji inayoonyesha alama inayowakilisha nyota ya Ndoo" - "Emoji inayoonyesha alama inayowakilisha nyota ya Samaki" - "Emoji ya karata nyeusi ya jembe au shupaza" - "Emoji ya karata nyeusi ya mavi au ua" - "Emoji ya karata nyeusi ya kopa au moyo" - "Emoji ya karata nyeusi ya almasi au kisu" - "Emoji inayoonyesha chemchemi hai ya maji ya moto" - "Emoji ya alama nyeusi ya kimataifa ya urejelezaji" - "Emoji ya alama ya kiti cha magurudumu aghalabu kinachotumiwa na watu wenye ulemavu wa miguu" - - - "Emoji ya Nanga" - - - - - - - - - - - - - "Emoji ya alama ya tahadhari" - "Emoji ya alama inayonyesha umeme wenye msongo mkubwa" - "Emoji ya kiwambo chenye duara ya rangi nyeupe kati kati" - "Emoji ya kiwambo chenye duara ya rangi nyeusi kati kati" - - - - - "Emoji ya mpira wa soka" - "Emoji ya mpira wa besiboli" - "Emoji ya mwanatheluji bila theluji" - "Emoji ya jua nyuma ya mawingu" - - - "Emoji ya alama inayowakilisha nyota ya Nyoka, mtu akiwa amembeba nyoka" - - - - - - - "Emoji ya duara na msitari uliokingama umepita kati kati, ikiwa ni ishara ya katazo la kuingia katika eneo hilo" - - - "Emoji ya kanisa" - - - - - "Emoji ya mashine inayorusha maji kama chemchemi" - "Emoji ya bendera katika shimo, aghalabu hutumiwa kama kiashiria kwenye michezo" - - - "Emoji ya mashua" - - - - - - - "Emoji ya Hema" - "Emoji ya pampu ya mafuta" - "Emoji ya mkasi mweusi" - "Emoji ya alama nyeupe ya tiki iliyokolezwa" - "Emoji ya ndege" - "Emoji ya bahasha" - "Emoji ya mkono uliokunja ngumi umeinuliwa" - "Emoji ya mkono umeinuliwa" - "Emoji ya mkono umeinuliwa kama ishara ya ushindi" - - - "Emoji ya penseli" - "Emoji ya nibu nyeusi" - "Emoji ya alama ya tiki iliyokolezwa sana" - "Emoji ya alama ya kuzidisha iliyokolezwa sana" - - - - - "Emoji ya vimuli muli" - "Emoji ya alama ya nyota yenye pembe nane" - "Emoji ya nyota nyeusi yenye pembe nane" - "Emoji ya tone la maji lililobadilika kua barafu wakati likianguka kutoka mawinguni" - "Emoji ya alama inayowakilisha tone la maji lililobadilika kua barafu wakati likianguka kutoka mawinguni" - "Emoji ya alama ya msalaba" - "Emoji ya alama ya msalaba iliyogeuka na kua kama alama ya kuzidisha" - "Emoji ya pambo la alama nyeusi ya kuuliza" - "Emoji ya pambo la alama nyeupe ya kuuliza" - "Emoji ya pambo la alama nyeupe ya mshangao" - "Emoji ya alama ya mshangao iliyokolezwa sana" - - - "Emoji ya ua la moyo wenye rangi nyeusi iliyokolezwa sana" - "Emoji ya alama ya kujumlisha iliyokolezwa sana" - "Emoji ya alama ya kutoa iliyokolezwa sana" - "Emoji ya alama ya kugawanya iliyokolezwa sana" - "Emoji ya mshale mweusi unaoonyeshea kulia" - "Emoji ya kitanzi kilichojikunja" - "Emoji ya kitanzi kilichokunjwa mara mbili" - "Emoji ya mshale unaoonyeshea kulia kisha unajikunja kuelekea juu" - "Emoji ya mshale unaoonyeshea kulia kisha unajikunja kuelekea chini" - "Emoji ya mshale mweusi unaoonyeshea kushoto" - "Emoji ya mshale mweusi unaoonyeshea juu" - "Emoji ya mshale mweusi unaoonyeshea chini" - "Emoji ya mraba mkubwa wa rangi nyeusi" - "Emoji ya mraba mkubwa wa rangi nyeupe" - "Emoji ya nyota nyeupe ya wastani" - "Emoji ya duara kubwa lililokolezwa sana" - "Emoji ya kistari chenye mawimbi" - "Emoji ya alama ya kiuandishi ya kijapani inayotumika kuonyeshea sehemu ya kuanzia mwimbaji hasa katika wimbo ambao pengine haufahamu vizuri, pia hutumika kama herufi M kwenye alfabeti za kigiriki" - "Emoji ya lugha ya alama ya asili inayomaanisha hongera" - "Emoji ya lugha ya alama ya asili inayomaanisha siri" - "Kigae cha Mahjong chenye ishara inayowakilisha joka jekundu" - "Jokari mweusi wa kadi za kucheza" - "Aina A ya damu" - "Aina B ya damu" - "Aina O ya damu" - "Maegesho" - "Aina AB ya damu" - "Herufi CL ndani ya mraba" - "Neno cool ndani ya mraba" - "Neno free ndani ya mraba" - "Herufi ID ndani ya mraba" - "Neno new ndani ya mraba" - "Herufi NG ndani ya mraba" - "OK Ndani ya mraba" - "SOS Ndani ya mraba" - "Neno up likiwa na alama ya mshangao ndani ya mraba" - "Herufi vs ndani ya mraba" - "Alama mbili ndani ya mraba zinazowakilisha maneno katakana koko inapatikana hapa" - "Alama moja ya ndani ya mraba inayowakilisha maneno huduma ya katakana sa" - "Alama ya mfumo wa asili wa pamoja wa China, Japan na Korea ikiwa ndani ya mraba ikiwakilisha bila malipo" - "Alama ya mfumo wa asili wa pamoja wa China, Japan na Korea ikiwa ndani ya mraba ikiwakilisha nafasi iliyohifadhiwa" - "Alama ya mfumo wa asili wa pamoja wa China, Japan na Korea ikiwa ndani ya mraba ikiwakilisha marufuku au katazo" - "Alama ya mfumo wa asili wa pamoja wa China, Japan na Korea ikiwa ndani ya mraba ikiwakilisha uwepo wa nafasi za wazi" - "Alama ya mfumo wa asili wa pamoja wa China, Japan na Korea ikiwa ndani ya mraba ikiwakilisha kukubaliwa" - "Alama ya mfumo wa asili wa pamoja wa China, Japan na Korea ikiwa ndani ya mraba ikiwakilisha umiliki kamili" - "Alama ya mfumo wa asili wa pamoja wa China, Japan na Korea ikiwa ndani ya mraba ikiwakilisha malipo yamekwisha fanyika" - "Alama ya mfumo wa asili wa pamoja wa China, Japan na Korea ikiwa ndani ya mraba ikiwakilisha jambo ambalo hufanyika kila mwezi" - "Alama ya mfumo wa asili wa pamoja wa China, Japan na Korea ikiwa ndani ya mraba ikiwakilisha maombi" - "Alama ya mfumo wa asili wa pamoja wa China, Japan na Korea ikiwa ndani ya mraba ikiwakilisha punguzo la bei" - "Alama ya mfumo wa asili wa pamoja wa China, Japan na Korea ikiwa ndani ya mraba ikiwakilisha shughuli zinaendelea kama vile biashara" - "Alama ya mfumo wa asili wa pamoja wa China, Japan na Korea ikiwa ndani ya mduara ikiwakilisha upekee" - "Alama ya mfumo wa asili wa pamoja wa China, Japan na Korea ikiwa ndani ya mduara ikiwakilisha ombi la kupokea au kupokelewa" - "Kimbunga" - "Hali ya ukungu" - "Mwavuli uliofungwa" - "Usiku wenye nyota" - "Maawio ya jua juu ya milima" - "Mapambazuko" - "Mji mkubwa wakati wa machweo ya jua" - "Machweo ya jua juu ya majengo" - "Upinde wa mvua" - "Daraja wakati wa usiku" - "Wimbi la maji" - "Volkano" - "Kilimia" - "Dunia kama inavyoonekana kutoka angani ikionyesha bara Ulaya na Afrika" - "Dunia kama inavyoonekana kutoka angani ikionyesha mabara yote ya Amerika" - "Dunia kama inavyoonekana kutoka angani ikionyesha bara Asia na Australia" - "Dunia ikionyesha mistari yake ya meridiani" - "Alama ya mwezi mpya" - "Alama ya mwezi mpevu" - "Alama inayoonesha hatua ya tatu ya kuonekana kwa mwezi ambapo nusu ya mwezi upande wa kulia huonekana" - "Alama inayoonesha hatua ya nne ya kuonekana kwa mwezi ambapo robo tatu ya mwezi upande wa kulia huonekana" - "Alama inayoonesha hatua ya tano ya kuonekana kwa mwezi ambapo mwezi wote huonekana" - "Alama inayoonesha hatua ya sita ya kuonekana kwa mwezi ambapo robo tatu ya mwezi upande wa kushoto huonekana" - "Alama inayoonesha hatua ya saba ya kuonekana kwa mwezi ambapo nusu ya mwezi upande wa kushoto huonekana" - "Hatua ya nane na ya mwisho ya kuonekana kwa mwezi ambapo sehemu ndogo ya upande wa kushoto huonekana." - "Mwezi mpevu" - "Mwezi mpya wenye uso wa mtu" - "Nusu ya mwezi upande wa kulia wenye uso wa mtu" - "Nusu ya mwezi upande wa kushoto wenye uso wa mtu" - "Mwezi mzima wenye uso wa mtu" - "Jua lenye uso wa mtu" - "Nyota ing\'arayo" - "Kimondo" - - - - - - - - - - - - - - - - - - - - - - - - - - - "Karanga za Kichina" - "Mche ukichipuka" - "Mti wa kijani kibichi" - "Mti wa jamii ya mwaloni" - "Mnazi" - "Kakati dungusi" - - - "Ua la Tulip" - "Ua dogo la rangi ya waridi au jeupe lililochanua ambalo kutokea kwake huchukuliwa kama ishara ya kumalizika kwa majira ya baridi" - "Waridi" - "Haibiskasi" - "Ua la alizeti" - "Ua lililochanua" - "Ganda ambalo halijamaliziwa kutolewa kutoka kwenye mhindi" - "Suke la mpunga" - "Mmea wenye majani" - "Jamii ya mimea adimu yenye majani ya pande nne" - "Jani la mti jamii ya mwaloni utoao juisi yenye sukari" - "Jani lililoanguka" - "Jani likipeperushwa na upepo" - "Uyoga" - "Nyanya" - "Bilinganya" - "Zabibu" - "Tikiti" - "Tikitimaji" - "Chenza" - "Emoji ya Limao" - "Ndizi" - "Nanasi" - "Tufaha jekundu" - "Tufaha la kijani" - "Pea" - "Pichi" - "Mizabibu mwitu" - "Stroberi" - "Mkate mwembamba unaoliwa kwa kuwekwa vyakula vingine kati kati yake kama nyama na mboga mboga" - "Kipande cha pizza" - "Nyama iliyoshikiliwa kwenye mfupa" - "Paja la nyama kuku" - "Biskuti ngumu kiasi iliyotengenezwa kwa unga wa mchele" - "Tonge la ubwabwa" - "Wali" - "Mchuzi mzito na wali" - "Bakuli linalofuka mvuke" - "Spageti, aina fulani ya tambi" - "Mkate" - "Viazi vya Kifaransa vilivyokatwa kwa urefu na wembamba kisha kukaangwa na kukaushwa sana" - "Kiazi cha kuokwa" - "Dango, chakula cha asili cha kijapani ambapo hua na matonge ya wali yaliyoshikizwa kwenye kijiti" - "Oden, chakula cha asili cha kijapani ambapo hua na vyakula aina mbali mbali vimeshikizwa kwenye kijiti" - "Sushi, chakula cha asili cha kijapani ambapo hua na aina mbali mbali za vyakula vya asili hasa vya baharini vikichanganywa na wali na kuundwa kiustadi kufuata umbo maalum" - "Uduvi wa kukaangwa" - "Kipande cha samaki aliyetengenezwa kama keki kikiwa na mchoro unaowakilisha kimbunga katikati." - "Aiskrimu laini" - "Kipande cha barafu tamu iliyotengenezwa kilichokatwa katika umbo maalum" - "Aiskrimu" - "Donati" - "Biskuti" - "Mchi wa chokoleti" - "Peremende" - "Lollipop" - "Faluda au Kastadi" - "Emoji ya chungu cha asali" - "Keki tamu yenye vitandamlo inayofanana na biskuti" - "Chakula cha asili ya kijapan kinachobebwa kwenye kijisanduku maalum" - "Chakula cha asili ya kijapani kinachowekwa kwenye chungu maalum, pia huitwa nabemono" - "Upishi" - "Uma na kisu" - "Emoji ya kikombe cha chai kisicho na mshikio" - "Chupa ya mvinyo wa kijapani wa mchele na kikombe" - "Glasi ya mvinyo" - "Glass maalum yenye umbo la V na kitako cha duara, aghalabu hutumika kunywea pombe kali" - "Kinywaji cha mchanganyiko wa matunda ya kitropiki" - "Kombe la kunywea bia" - "Makombe mawili yaliyojaa bia yakigonganishwa kwa mtindo wa kusherehekea" - "Chupa maalum ya mtoto" - - - - - - - "Utepe" - "Zawadi iliyofungwa kwenye karatasi maalum" - "Keki ya siku ya kuzaliwa" - "Emoji ya boga lililochongwa kiustadi kama sura ya mtu na mshumaa kuwekwa ndani kulifanya liwe na mwanga" - "Mkrismasi, pia Mvinje" - "Baba Krismasi" - "Fataki" - "Cheche za fataki" - "Puto" - "Kifaa cha kufyatua vikaratasi kwa mpigo, aghalabu kwa ajili ya kusherehekea" - "Mpira maalum uliowekwa chengechenge za rangi mbalimbali, ambapo ukifunguliwa hutoka na kuleta mwako aghalabu katika sherehe ya harusi" - "Tawi la mwanzi maalum uliofungwa vijikaratasi vyenye matilaba au matamanio ya watu" - "Bendera zilizokingamanishwa" - "Urembo wa asili ya kijapani wa misonobari na matawi ya mianzi ambao huwekwa mlangoni kuwakilisha heri na bahati, aghalabu hutumika kwenye sherehe za mwaka mpya" - "Emoji ya midoli ya kijapani" - "Pia Koinobori, vibango maalum vyenye picha za samaki ambavyo hupambwa au kushikwa kwenye siku ya watoto huko Japan, ambapo samaki wakubwa huwakilisha wazazi na wadogo kwa idadi ya watoto katika familia." - "Kifaa kilichofanyizwa kutoa sauti upepo unapovuma" - "Sherehe za kutazama mwezi" - "Kibegi maalum cha kubebea vifaa vya shule vya mtoto" - "Kofia ya Mahafali" - - - - - - - - - - - - - - - "Kifani cha farasi wa kuendeshwa kwenye sehemu ya michezo na burudani" - "Gurudumu kubwa la mduara ambalo hua na vijumba maalum ambapo watu hukaa na huzungushwa na mitambo ili kutoa burudani" - "Mfano wa reli ndefu ambamo hua na vijumba maalum vilivyoungwa kama treni ambapo watu hukaa na kuendeshwa kwa kwasi na mitambo ili kutoa burudani" - "Ndoano na samaki" - "Kipaza sauti" - "Kamera ya filamu" - "Sinema" - "Kifaa cha sauti" - "Ubao wa msanii ambao hua na rangi mbali mbali za kuchorea" - "Kofia ya pama" - "Hema kubwa sana la mduara, aghalabu la kufanyia michezo ya jukwaani" - "Tiketi" - "Ubao maalum wa milia ambao hutumika kutoa ishara ya mahali na kuanza kitendo wakati wa kurekodi filamu" - "Sanaa ya maonyesho" - "Mchezo wa video" - "Ubao maalum wenye miduara huku ukiwa na kishale kimejikita kati kati kuwakilisha lengo la moja kwa moja la mtupa vishale" - "Mashine ya kuchezea michezo ya kubahatisha" - "Biliadi" - "Kete ya mchezo, aghalabu hua na umba la mchi mraba" - "Mchezo wa kuviringisha matufe chini" - "Kadi ya mchezo wa Hanafuda wa Kijapan inayowakilisha mwezi wa nane, kati ya kadi kumi na mbili, moja kwa kila mwezi" - "Nota ya muziki" - "Nota nyingi za muziki" - "Saksafoni" - "Emoji ya Gitaa" - "Kibodi ya Muziki" - "Tarumbeta" - "Fidla" - "Alama ya muziki ambayo hutambulisha kwa mistari ya nota kiwango cha juu cha sauti kinachotakiwa kwa muziki husika" - "Nguo maalum kwa ajili ya mbio likiwa na utepe maalum wa utambulisho" - "Emoji ya raketi na mpira wa tenisi" - "Relitheluji na mabuti ya skii" - "Mpira wa kikapu wa rangi ya kahawia nyepesi ukiwa chini" - "Ruwaza yenye miraba ya rangi nyeusi na nyeupe ambayo huinuliwa mwazo au mwisho wa mashindano, aghalabu huambatana na mshindi" - "Emoji ya mtu akiteleza juu ya barafu kwa kibao maalum" - "Mkimbiaji" - "Emoji ya mtu akiteleza katika mawimbi meupe kwa ubao" - - - "Kombe, aghalabu taji kwa ajili ya mshindi kwa mashindano husika" - "Mashindano ya mbio za farasi" - "Mpira wa miguu wa kimarekani" - "Mpira wa ragbi" - "Mwogeleaji" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Jengo la nyumba" - "Nyumba yenye bustani" - "Jengo la ofisi" - "Ofisi ya posta ya kijapani" - "Ofisi ya posta ya Ulaya" - "Emoji ya Hospitali" - "Benki" - "Machine ya kutolea pesa ya kiotomatiki" - "Hoteli" - "Emoji ya jengo la hoteli ikiwa na ua la upendo" - "Maduka yanayofikiwa kwa urahisi" - "Emoji ya Shule" - "Duka kuu" - "Kiwanda" - "Alama ya asili ya kijapani yenye mfano wa taa iliyo ndani ya chombo kilichofungwa pande zote ikiwakilisha sehemu ya biashara au mahali panapouzwa chakula na mvinyo" - "Kasri la kijapani" - "Kasri la Ulaya" - - - - - - - - - - - - - - - - - - - - - - - - - "Panya buku" - "Panya" - "Maksai" - "Nyati wa majini" - "Emoji ya Ng\'ombe" - - - "Chui" - "Sungura" - "Paka" - "Joka, aghalabu kwenye hadithi za asili za China,Japan na Korea" - "Mamba" - "Nyangumi" - "Konokono" - "Nyoka" - "Farasi" - "Kondoo Mume, aghalabu mwenye uwezo wa kuzalisha" - "Mbuzi" - "Kondoo" - "Tumbili" - "Jogoo" - "Kuku" - "Mbwa" - "Nguruwe" - "Nguruwe dume, aghalabu mwenye uwezo wa kuzalisha" - "Tembo" - "Pweza" - "Jumba la konokono au viumbe wengine wa jamii hiyo ambalo limejikunja kama duara inayoanzia ndani kuelekea nje" - "Mdudu" - "Chungu chungu" - "Nyuki wa asali" - "Kombamwiko jike" - "Samaki" - "Samaki wa kitropiki" - "Samaki mwenye miiba mwenye tabia ya kufutuka au kufura anapohisi hatari" - "Kobe" - "Kifaranga wa kuku akitotolewa kwenye yai" - "Kifaranga wa kuku mdogo" - "Kifaranga wa kuku anayeangalia mbele" - "Ndege" - "Pengwini, ndege mnene wa majini mwenye rangi nyeusi na nyeupe na miguu mifupi asiyeweza kuruka angani" - "Koala, dubu mdogo wa Australia migodini" - "Emoji ya jibwa lenye asili ya manyoya mengi sana yaliyojikunja" - "Ngamia wa asili ya mashariki ya kati mwnye nundu moja" - "Ngamia wa asili ya Asia ya kati mwenye nundu mbili" - "Pomboo" - "Uso wa panya" - "Uso wa ng\'ombe" - "Uso wa Duma" - "Uso wa sungura" - "Uso wa paka" - "Uso wa joka" - "Nyangumi anayevurumisha maji juu" - "Uso wa farasi" - "Uso wa tumbili" - "Uso wa mbwa" - "Uso wa nguruwe" - "Uso wa chura" - "Emoji ya uso wa panya buku" - "Uso wa mbwa mwitu" - "Uso wa dubu" - "Uso wa panda, aina ya dubu wa rangi nyeusi na nyeupe apatikanaye Tibeti" - "Pua ya nguruwe" - "Alama za uwayo wa mnyama" - - - "Macho" - - - "Sikio" - "Pua" - "Mdomo" - "Ulimi" - "Ishara ya mkono unaoonekana kwa nyuma ukiwa umenyoosha kidole kuelekea juu" - "Ishara ya mkono unaoonekana kwa nyuma ukiwa umenyoosha kidole kuelekea chini" - "Ishara ya mkono unaoonekana kwa nyuma ukiwa umenyoosha kidole kuelekea kushoto" - "Ishara ya mkono unaoonekana kwa nyuma ukiwa umenyoosha kidole kuelekea kulia" - "Ishara ya mkono uliokunja ngumi" - "Ishara ya mkono ukipunga" - "Ishara ya mkono ikimaanisha Sawa" - "Ishara ya kidole gumba kuinuliwa juu ikiwakilisha mambo bomba" - "Ishara ya kidole gumba kuinamishwa chini ikiwakilisha mambo sio safi" - "Ishara ya mikono inapiga makofi" - "Ishara ya mikono ikiwa wazi" - "Taji" - "Kofia ya mwanamke" - "Miwani" - "Tai" - "Fulana" - "Jinzi au Dengrizi" - "Gauni" - "Vazi la kike kama gauni refu lenye mikono mirefu la asili ya kijapani ambalo huvaliwa na mkanda mpana kiunoni" - "Bikini" - "Mavazi ya kike" - "Mfuko wa fedha" - "Begi dogo la mkononi" - "Pochi" - "Kiatu cha kiume" - "Kiatu cha riadha" - "Emoji ya kiatu chenye kisigino kirefu" - "Kiatu cha wazi cha kike" - "Mabuti ya kike" - "Alama za nyayo" - "Taswira ya umbo au kivuli cha mtu aliyepenya au kuvunja mahali" - "Taswira mbili za maumbo au vivuli vya watu waliopenya au kuvunja mahali" - "Mvulana" - "Msichana" - "Mwanaume" - "Mwanamke" - "Familia" - "Mwanaume na mwanamke wameshikana mikono" - "Wanaume wawili wameshikana mikono" - "Wanawake wawili wameshikana mikono" - "Afisa wa polisi" - "Mwanamke aliyevalia kama sungura aghalabu anayehudumia kwenye baa" - "Mwanamwali au bi harusi aliyevaa shela" - "Mtu mwenye nywele zenye rangi ya shaba au rangi ya kimanjano" - "Mwanaume akiwa amevaa kofia maalum ya kichina" - "Mwanaume aliyevaa kilemba" - "Mwanaume mzee" - "Mwanamke mzee" - "Mtoto" - "Mfanyakazi wa shughuli za ujenzi akiwa na kofia ngumu ya manjano" - "Binti Mfalme" - "Kinyago cha shetani mwekundu wa kijapani" - "Kinyago cha zimwi jekundu lenye mfano wa ndege la kijapani" - "Mzimu" - "Emoji ya malaika mtoto mwenye mbawa na duara ya mwangaza wa samawati kichwani" - "Emoji ya kiumbe mgeni kutoka sayari nyingine tofauti na dunia" - "Emoji ya jinamizi la kigeni, aghalabu kwenye hadithi za wavamizi kutika nje ya dunia waliokua na teknolojia kubwa" - "Emoji ya shetani mdogo mwenye pembe aliyekasirika" - "Fuvu" - "Emoji ya mtu wa dawati la maelezo" - "Mlinzi" - "Mcheza dansi" - "Rangi ya midomo" - "Rangi ya kucha" - "Emoji ya mtu akichuliwa au kusingwa uso" - "Emoji ya mtu akikata nywele" - "Emoji ya ufito wa kinyozi" - "Sindano aghalabu ya kutumika kuchomea dawa kwa mtu au myama" - "Kidonge" - "Alama ya busu" - "Barua ya kimapenzi" - "Pete" - "Jiwe la kito" - "Busu" - "Maua mazuri yaliyofungwa pamoja" - "Emoji ya wanandoa na kifani cha moyo" - "Harusi" - "Emoji ya moyo unaodunda" - "Emoji ya moyo uliovunjika" - "Emoji ya mioyo miwili" - "Emoji ya moyo unaong\'aa" - "Emoji ya moyo unaokua" - "Emoji ya moyo na mshale" - "Emoji ya moyo wa rangi ya samawati" - "Emoji ya moyo wa rangi ya kijani" - "Emoji ya moyo wa rangi ya manjano" - "Emoji ya moyo wa rangi ya zambarau" - "Emoji ya moyo uliofungwa utepe" - "Emoji ya mioyo inayozunguka" - "Emoji ya kitufe kilichopambwa ua la moyo" - "Umbo la almasi ikiwa na kidoa kati kati" - "Taa ya balbu ya umeme" - "Emoji ya ishara ya hasira" - "Emoji ya Bomu" - "Emoji ya ishara ya hali tuli au kulala" - "Emoji ya ishara ya mgongano" - "Emoji ya alama ya jasho likitiririka" - "Emoji ya tone aghalabu la maji" - "Emoji ya ishara ya kitu kilichoondoka kwa ghafla sana kutimua vumbi nyumba" - "Rundo la kinyesi" - "Emoji ya mkono uliotunisha msuli" - "Emoji ya ishara ya kizunguzungu" - "Emoji ya kiputo kinachoashiria mtu alikua anasema" - "Emoji ya kiputo kinachoashiria mtu alikua anawaza" - "Emoji ya ua jeupe" - "Emoji ya alama mia ya mia" - "Emoji ya mfuko wa pesa" - "Emoji ya mbadilishano wa sarafu" - "Emoji ya alama ya dola iliyokolezwa" - "Emoji ya kadi ya mkopo" - "Emoji ya noti ya benki yenye alama ya fedha ya japan yaani yen" - "Emoji ya noti ya benki yenye alama ya dola" - "Emoji ya noti ya benki yenye alama ya fedha ya ulaya yaani yuro" - "Emoji ya noti ya benki yenye alama ya fedha ya uingereza yaani pauni" - "Emoji ya pesa iliyo na mbawa" - "Emoji ya chati yenye alama ya yen na ikionesha kupanda aghalabu thamani" - "Emoji ya kiti cha kukalia aghalabu kwenye ndege" - "Emoji ya kompyuta ya mezani" - "Emoji ya mkoba" - "Emoji ya diski iliyohifadhiwa kwenye kasha maalum" - "Emoji ya diski tepe" - "Emoji ya diski yenye uwezo wa kuhifadhi picha" - "Emoji ya diski ya dijitali ya video" - "Emoji ya folda la faili" - "Emoji ya folda la faili lililofunguliwa" - "Emoji ya ukurasa uliojikunja" - "Emoji ya ukurasa unaoangalia juu" - "Kalenda" - "Emoji ya kalenda maalum ya kufuatilia aghalabu hutumiwa na mashirika ambapo tukio la tarehe maalum inayofuatiliwa likikamilika, karatasi lenye tarehe husika huondolewa kwa kuchanwa" - "Emoji ya kifaa maalum cha kuhifadhia kadi zenye anwani na mawasiliano ya watu" - "Emoji ya chati inayoonesha grafu ikipanda" - "Emoji ya chati inayoonesha grafu ikishuka" - "Emoji ya chati inayotumia miche kuwakilisha data zake" - "Ubao wa kunakili" - "Emoji ya kipini maalum kinachotumika kushikizia karatasi ukutani" - "Emoji ya kipini chenye kichwa cha mduara kinachotumika kushikizia karatasi kwenye kuta maalum zinazoweza kutumika na vipini hivyo" - "Emoji ya kibanio cha karatasi" - "Emoji ya rula nyoofu" - "Emoji ya rula ya pembetatu" - "Emoji ya vichupo vya alamisho" - "Emoji ya leja" - "Emoji ya daftari" - "Emoji ya daftari yenye jalada lenye urembo" - "Emoji ya kitabu kimefungwa" - "Emoji ya kitabu kimefunguliwa" - "Emoji ya kitabu cha rangi ya kijani" - "Emoji ya kitabu cha rangi ya samawati" - "Emoji ya kitabu cha rangi ya manjano" - "Emoji ya vitabu" - "Emoji ya beji ya jina" - "Emoji ya hati ndefu ya kukunja kwa kuvingirisha hasa zile za zamani" - "Emoji ya kikaratasi cha kuchukulia taarifa muhimu au kumbukumbu" - "Emoji ya risiva ya simu" - "Emoji ya kifaa maalum ambacho kinataarifa za vikumbusho mbali mbali kama kupiga simu" - "Emoji ya mashine ya faksi" - "Emoji ya antena ya setilaiti" - "Emoji ya kipaza sauti cha kuzungumzia kwenye umma" - "Emoji ya kifaa mfano wa tarumbeta kwa ajili ya kushangilia aghalabu huitwa vuvuzela kwenye baadhi ya maeneo" - "Emoji ya kikasha toezi cha kuhifadhia aghalabu jumbe au barua zinazopaswa kuelekea mahali husika" - "Emoji ya kikasha hifadhi ambacho hua na jumbe au barua zilizowasili" - "Emoji ya kifurushi" - "Emoji ya alama ya barua pepe" - "Emoji ya bahasha ikishuka, ishara ya barua au ujumbe unaongia" - "Emoji ya bahasha ikiwa na mshale kwa juu unaoangalia chini, ishara ya tuma kwenye barua pepe" - "Emoji ya kisanduku cha barua ambacho bendera yake imeshushwa, ikimaanisha hakuna barua au vifurushi vya kuondoka" - "Emoji ya kisanduku cha barua ambacho bendera yake imeinuliwa, ikimaanisha kuna barua au vifurushi vya kuondoka" - "Emoji ya kisanduku cha barua kilichowazi ambacho bendera yake imeinuliwa, ikimaanisha kuna barua au vifurushi vya kuondoka" - "Emoji ya kisanduku cha barua kilichowazi ambacho bendera yake imeshushwa, ikimaanisha hakuna barua au vifurushi vya kuondoka" - "Emoji ya sanduku la posta" - "Emoji ya king\'ora maalum au honi ipigwayo kuomba njia ili kuwahisha barua au vifurushi mahali husika" - "Emoji ya Gazeti" - "Emoji ya simu ya mkononi" - "Emoji ya simu ya mkononi ikiwa na mshale upande wa kushoto unaooneshea kulia au uelekeo wa simu ilipo, ikiwakilisha tuma kwenye simu" - "Emoji inayowakilisha hali ya mtetemo pekee, aghalabu kwenye maeneo kama maktaba, majumba ya ibada nk" - "Emoji ya picha ya simu ikiwa katika hali ya kuzimwa" - "Emoji ya simu ikiwa ndani ya duara na msitari umepita kati kati, ikimaanisha matumizi ya simu hayaruhusiwi kwenye eneo hilo" - "Emoji ya michi kwenye sehemu ya kijisanduku cha mnara wa simu, kikiwakilisha nguvu ya mawimbi yaliyopo" - "Emoji ya kamera" - - - "Emoji ya kamera ya kuchukulia video" - "Emoji ya televisheni" - "Emoji ya redio" - "Emoji ya kanda ya video" - - - - - "Emoji ya mishale inayoelekea kulia ikiwa imepishana" - "Emoji ya mishale iliyochorwa kufuata mwendo saa kama duara mmoja ukielekea kulia na mwingine kushoto, ikimaanisha kujirudia kwa tendo husika" - "Emoji ya mishale iliyochorwa kufuata mwendo saa kama duara mmoja ukielekea kulia na mwingine kushoto, huku kukiwa na namba moja iliyondani ya duara juu yake ikimaanisha kujirudia mara moja tu kwa tendo husika" - "Emoji ya mishale iliyochorwa kufuata mwendo saa kama duara mmoja ukielekea juu na mwingine chini, ikimaanisha rudia tena tendo husika aghalabu kwenye kupakia programu za vifaa" - "Emoji ya mishale iliyochorwa kwa mwendo wa kinyume saa kama duara mmoja ukielekea juu na mwingine chini, ambayo huwakilisha kurudia kwa tendo husika" - "Emoji ya mduara uliozungukwa na vistari vifupi ikimaanisha ung\'avu kiasi kidogo, aghalabu kwenye kompyuta au simu ya mkononi humaanisha matumizi ya mwangaza kidogo wa skrini" - "Emoji ya mduara uliozungukwa na vistari virefu ikimaanisha ung\'avu sana, aghalabu kwenye kompyuta au simu ya mkononi humaanisha matumizi ya mwangaza mkubwa wa skrini" - "Emoji ya spika ikiwa na alama ya mstari wa kukata, aghalabu kwenye matumizi ya simu au kompyuta humaanisha kuzima matumizi ya sauti" - "Emoji ya spika" - "Emoji ya spika ikiwa na alama ya wimbi moja la sauti, aghalabu kwenye matumizi ya simu au kompyuta humaanisha matumizi ya sauti ya chini" - "Emoji ya spika ikiwa na alama ya mawimbi matatu ya sauti, aghalabu kwenye matumizi ya simu au kompyuta humaanisha matumizi ya sauti ya juu" - "Emoji ya betri" - "Emoji ya plagi ya umeme" - "Emoji ya lenzi ikiwa imeegemea upande wa kushoto" - "Emoji ya lenzi ikiwa imeegemea upande wa kulia" - "Emoji ya kufuli na kalamu ya wino, aghalabu kwenye nyaraka za kielectroniki humaanisha ni inayolindwa na imefungwa" - "Emoji ya kufuli na ufunguo" - "Emoji ya ufunguo" - "Emoji ya kufuli" - "Emoji ya kufuli lililofunguliwa" - "Emoji ya kengele" - "Emoji ya kengele ikiwa na alama ya mstari wa kukata, aghalabu kwenye matumizi ya simu au kompyuta humaanisha kuzima matumizi ya sauti" - "Emoji ya alamisho" - "Emoji ya kiungo" - "Kitufe cha mviringo" - "Emoji yenye neno back na mshale unaoonesha kushoto ukiwa juu yake, aghalabu ikimaanisha rudi nyuma, nenda mwanzo wa wimbo, filamu, hadithi nk" - "Emoji yenye neno end na mshale unaoonesha kushoto ukiwa juu yake, ikimaanisha nenda mwisho wa jambo, ingawa yaweza pia kumaanisha rudi nyuma, nenda mwanzo wa wimbo, filamu, hadithi nk kwenye matumizi ya hangout na android" - "Emoji ya neno On na mshale unaoonesha pande zote ukiwa juu yake, ikimaanisha uamuzi wa kusonga mbele kwa furaha, au njia zote zitakufikisha kwenye lengo iwe ya kushoto au kulia" - "Emoji yenye neno Soon na mshale unaoonyesha upande wa kulia ukiwa juu yake, ikimaanisha jambo, au tukio litatokea baada ya muda mfupi" - "Emoji yenye neno Top na mshale unaoonyesha juu ukiwa juu yake, ikimaanisha nenda juu aghalabu kwenye kurasa za tovuti nk" - "Emoji ya namba kumi na nane ikiwa ndani ya duara na msitari umepita kati kati, ikimaanisha matumizi ya kitu husika hayaruhusiwi kwa mtu wa chini ya umri wa miaka kumi na minane" - "Emoji ya kitufe cha kibodi chenye namba kumi" - "Emoji ya kitufe cha kibodi kwa ajili ya kugeuza herufi kuwa kubwa" - "Emoji ya kitufe cha kibodi kwa ajili ya kugeuza herufi kuwa ndogo" - "Emoji ya kitufe cha kibodi kwa ajili ya kupata uandishi wa namba" - "Emoji ya kitufe cha kibodi kwa ajili ya kupata uandishi wa alama" - "Emoji ya kitufe cha kibodi kwa ajili ya kupata uandishi wa herufi" - "Emoji ya moto" - "Emoji ya tochi ya umeme" - "Emoji ya spana inayorekebishika kuweza kufunga nati za ukubwa mbali mbali" - "Emoji ya nyundo" - "Emoji ya nati na bolti" - "Emoji ya kisu cha jikoni" - "Emoji ya bastola" - "Emoji ya hadubini" - "Emoji ya darubini maalum aghalabu kwa kuangalizia anga za mbali" - "Emoji ya tufe la kioo" - "Emoji ya nyota yenye pembe sita ikiwa na alama ya kitone kati kati" - "Emoji ya alama ya kijapani inayowakilisha mtu ambaye bado hana uzoefu kama vile dereva ambaye bado anajifunza" - "Emoji ya nembo ya nanga" - "Emoji ya kitufe cha umbo la mraba cha rangi nyeusi" - "Emoji ya kitufe cha umbo la mraba cha rangi nyeupe" - "Emoji ya duara kubwa la rangi nyekundu" - "Emoji ya duara kubwa la rangi ya samawati" - "Emoji ya almasi kubwa ya rangi ya manjano" - "Emoji ya almasi kubwa ya rangi ya samawati" - "Emoji ya almasi ndogo ya rangi ya manjano" - "Emoji ya almasi ndogo ya rangi ya samawati" - "Emoji ya pembetatu ya rangi nyekundu inayoangalia juu" - "Emoji ya pembetatu ya rangi nyekundu inayoangalia chini" - "Emoji ya pembetatu ndogo ya rangi nyekundu inayoangalia juu" - "Emoji ya pembetatu ndogo ya rangi nyekundu inayoangalia chini" - - - - - - - - - - - - - "Emoji ya uso wa saa inayoonesha saa saba kamili" - "Emoji ya uso wa saa inayoonesha saa nane kamili" - "Emoji ya uso wa saa inayoonesha saa tisa kamili" - "Emoji ya uso wa saa inayoonesha saa tisa kamili" - "Emoji ya uso wa saa inayoonesha saa kumi na moja kamili" - "Emoji ya uso wa saa inayoonesha saa kumi na mbili kamili" - "Emoji ya uso wa saa inayoonesha saa moja kamili" - "Emoji ya uso wa saa inayoonesha saa mbili kamili" - "Emoji ya uso wa saa inayoonesha saa tatu kamili" - "Emoji ya uso wa saa inayoonesha saa nne kamili" - "Emoji ya uso wa saa inayoonesha saa tano kamili" - "Emoji ya uso wa saa inayoonesha saa sita kamili" - "Emoji ya uso wa saa inayoonesha saa saba na nusu" - "Emoji ya uso wa saa inayoonesha saa nane na nusu" - "Emoji ya uso wa saa inayoonesha saa tisa na nusu" - "Emoji ya uso wa saa inayoonesha saa kumi na nusu" - "Emoji ya uso wa saa inayoonesha saa kumi na moja na nusu" - "Emoji ya uso wa saa inayoonesha saa kumi na mbili na nusu" - "Emoji ya uso wa saa inayoonesha saa moja na nusu" - "Emoji ya uso wa saa inayoonesha saa mbili na nusu" - "Emoji ya uso wa saa inayoonesha saa tatu na nusu" - "Emoji ya uso wa saa inayoonesha saa nne na nusu" - "Emoji ya uso wa saa inayoonesha saa tano na nusu" - "Emoji ya uso wa saa inayoonesha saa sita na nusu" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Emoji ya mlima Fuji" - "Emoji ya mnara wa Tokyo" - "Emoji ya Sanamu ya uhuru" - "Emoji ya ramani ya Japan kama inavyoonekana katika bahari ya Pasifiki" - "Emoji ya Moyai, sanamu ya kuchonga iliyopo katika mji wa Tokyo huko Japani kwenye kituo cha Shibuya, mahali ambapo hufikiwa na watu wengi wanaoitembelea nchi hiyo" - "Emoji ya uso unaoonyesha furaha kwa tabasamu pana" - "Emoji ya uso unaoonyesha furaha na macho ya tabasamu" - "Emoji ya uso wenye machozi ya furaha" - "Emoji ya uso wa tabasamu kwa kinywa wazi" - "Emoji ya uso wa tabasamu kwa kinywa wazi na macho yaliyosinzia kwa tabasamu" - "Emoji ya uso wa tabasamu kwa kinywa wazi na kijasho chembamba" - "Emoji ya uso wa tabasamu kwa kinywa wazi na macho yaliyofinywa kwa nguvu" - "Emoji ya uso wa tabasamu na duara ya mwangaza inayozunguka kichwa ikiwakilisha malaika" - "Emoji ya uso wa tabasamu wenye pembe kichwani" - "Emoji ya uso unaokonyeza" - "Emoji ya uso wa tabasamu na macho yaliyosinzia kwa tabasamu" - "Emoji ya uso wa kutamani chakula kitamu, pia aliyemaliza kula chakula kitamu hivyo anajilamba midomo" - "Emoji ya uso unaoonesha hali ya kufarijika au kuridhishwa na hali ya mambo" - "Uso wa tabasamu na macho yaliyoumbwa kama ua la moyo, ishara ya mapenzi mazito juu ya mtu au kitu kinachotazamwa" - "Emoji ya uso wa tabasamu ukiwa umevaa miwani ya jua" - "Emoji ya uso wa kicheko cha dharau" - "Emoji ya uso wa kawaida" - "Emoji ya uso usioonyesha hisia yoyote" - "Emoji ya uso unaoonyesha kutoridhishwa na hali ya mambo" - "Emoji ya uso wenye kijasho chembamba" - "Emoji ya uso unaoonyesha mtu aliyezama katika lindi la mawazo" - "Emoji ya uso unaoonyesha mtu aliyechanganyikiwa pengine kutokana na mambo kutokueleweka au kutokua katika utaratibu" - "Emoji ya uso unaoonyesha hasira, kuuma midomo na kukunja sura pengine kutokana na mambo kutokuelewaeka au kutokua katika utaratibu" - "Emoji ya uso unaoonyesha busu" - "Emoji ya uso unaotupia busu" - "Emoji ya uso ukibusu na macho ya tabasamu kwa hisia" - "Emoji ya uso ukibusu na macho yaliyosinzia kwa hisia" - "Emoji ya uso uliotoa ulimi nje" - "Emoji ya uso uliotoa ulimi nje na macho ya kukonyeza" - "Emoji ya uso uliotoa ulimi nje na macho yaliyofumbwa kwa nguvu" - "Emoji ya uso unaoonyesha hali ya kukatishwa tamaa" - "Emoji ya uso wa wasiwasi" - "Emoji ya uso wa hasira" - "Emoji ya uso uliokunja sura kwa manung\'uniko" - "Emoji ya uso unaolia machozi" - "Emoji ya uso unaoonyesha hali ya kuvumilia" - "Emoji ya uso unaoonyesha ushindi" - "Emoji ya uso unaoonyesha kukatishwa tamaa lakini umeamua kuridhika na hali ya mambo" - "Emoji ya uso unaoonyesha hali ya kutopendezwa na jambo" - "Emoji ya uso unaoonyesha hali ya uchungu" - "Emoji inayoonyesha uso wa woga" - "Emoji inayoonyesha uso wa uchovu wa hali ya juu" - "Emoji inaoonyesha uso wa kusinzia" - "Emoji ya uso unaoonyesha uchovu" - "Emoji ya uso unaoonyesha kukunja sura kwa maumivu au kuchekesha meno yote yakionekana" - "Emoji inayoonyesha uso wa kulia kwa nguvu" - "Emoji ya uso ukiwa kinywa wazi" - "Emoji ya uso unaosubiri kimya, kwa utulivu na subira" - "Emoji ya uso ukiwa kinywa wazi na kijasho chembamba" - "Emoji ya uso unaopiga kelele za woga" - "Emoji ya uso unaoonyesha hali ya kushangazwa sana" - "Emoji ya uso uliotumbua macho" - "Emoji inayoonyesha uso wa mtu aliye katika hali tuli fofofo" - "Emoji inayoonyesha uso wenye kizunguzungu" - "Emoji inayoonyesha uso usio na mdomo" - "Emoji ya uso uliovaa barakoa ya kitabibu" - "Emoji ya uso wa paka unaoonyesha furaha na macho ya tabasamu" - "Emoji ya uso wa paka wenye machozi ya furaha" - "Emoji ya uso wa paka wenye tabasamu pana na mdomo wazi" - "Uso wa paka wenye tabasamu na macho yaliyoumbwa kama ua la moyo, ishara ya mapenzi mazito juu ya mtu au kitu kinachotazamwa" - "Emoji ya uso wa paka unaoonyesha hali ya dharau au mzaha" - "Emoji ya uso wa paka ukibusu na macho yaliyosinzia kwa hisia" - "Emoji ya uso wa paka uliokunja sura kwa manung\'uniko" - "Emoji ya uso wa paka alieangua kilio" - "Emoji ya uso wa paka unaoonyesha uchovu wa hali ya juu" - - - - - - - - - "Emoji ya uso pamoja na ishara ya kuonyesha kutokukubaliana na kinachoendelea au kukataza kisiendelee, aghalabu hua na mtu aliyepishanisha mikono ili kufanya alama ya x" - "Emoji ya uso na ishara ya sawa, kukubaliana na kinachofanyika au kukubali" - "Emoji ya mtu aliyeinama sana, karibu na kusujudu" - "Emoji ya tumbili aliyeaficha uso wake, hujulikana kama asiyetaka kuona mabaya yatakayotendeka" - "Emoji ya tumbili aliyeziba masikio yake, hujulikana kama asiyetaka kusikia mabaya yatakayosemwa" - "Emoji ya tumbili aliyefumba kinywa kwa mikono yake, hujulikana kama asiyetaka kunena baya lolote" - "Emoji ya mtu mwenye furaha akiwa amenyanyua mkono mmoja" - "Emoji ya mtu anayeshangilia akiwa amenyanyua mikono yote" - "Emoji ya mtu anayeonyesha hali ya kutopendezwa na jambo" - "Emoji ya mtu aliyekunja sura kwa manung\'uniko" - "Emoji ya mtu amekunja mikono" - "Emoji ya Roketi" - "Emoji ya Helikopta" - "Emoji ya Garimoshi" - "Emoji ya gari linaloendeshwa kwenye reli maalum" - "Emoji ya Treni iendayo kasi" - "Emoji ya Treni iendayo kasi ikiwa na kichwa kilichotengenezwa kwa mfano wa risasi" - "Emoji ya Treni" - "Emoji ya metro, neno litalotumika aghalabu kuelezea mfumo wa usafirishaji watu kwenye miji kwa kutumia treni hasa ziendazo kasi za ardhini" - "Emoji ya treni ya usafirishaji watu na mizigo miepesi kwenye miji kwa mwendo kasi" - "Emoji ya Kituo" - "Emoji ya treni ambayo hufanya kazi ndogo ndogo za kusafirisha abairia kwenye umbali mfupi" - "Emoji ya behewa la treni ambayo hufanya kazi ndogo ndogo za kusafirisha abairia kwenye umbali mfupi" - "Emoji ya basi" - "Emoji ya basi linaloonekana kuja" - "Trolleybus" - "Emoji ya basi linaloendeshwa kwa nguvu za umeme" - "Emoji ya basi dogo" - "Emoji ya gari la wagonjwa" - "Emoji ya gari lenye injini maalum kwa ajili ya kusukuma maji kwa mgandamizo kubwa ili kuzima moto" - "Emoji ya gari la polisi" - "Emoji ya gari la polisi linaloonekana kuja" - "Emoji ya teksi" - "Emoji ya teksi inayoonekana kuja" - "Emoji ya gari" - "Emoji ya gari inayoonekana kuja" - "Emoji ya gari kubwa uwezo mkubwa kidogo kuliko gari ya kawaida" - "Emoji ya gari ya usambazi mizigo" - "Emoji ya lori linalokokota tela au mtambaazi" - "Emoji ya trekta" - "Emoji ya reli moja, ambapo treni hupita kanakwamba imeivaa" - "Emoji ya reli inayoelekea mlimani" - "Emoji ya reli inayopita juu" - "Emoji ya waya ambapo gari maalum kusafirisha watu au mizigo kwenye eneo lenye mlima mkali hupita kwenye waya huo kwa kuning\'inia" - "Emoji ya muonekano wa mbali wa gari maalum la kusafirisha watu au mizigo kwenye eneo lenye mlima mkali na hupita kwenye waya" - "Emoji ya meli" - "Emoji ya mtumbwi" - "Emoji ya boti inayoendeshwa kwa injini hivyo kua na kasi zaidi" - "Emoji ya taa za trafiki zilizowekwa mlalo" - "Emoji ya taa za kuongozea magari zilizowima" - "Emoji inayoonyesha ishara ya kwamba ujenzi unaendelea" - "Emoji ya taa ya gari ya polisi ambayo huzunguka ili kutoa ishara" - "Emoji ya mti wa bendera ya pembetatu, aghalabu hutumika kama kiashiria" - "Emoji ya mlango" - "Emoji ya duara na msitari uliokingama umepita kati kati, ikiwa ni ishara ya katazo la kuingia katika eneo hilo" - "Emoji ya sigara iliyowashwa inayotoa moshi" - "Emoji ya duara lenye picha ya sigara ndani na msitari uliokatiza kati kati ya sigara, ikimaanisha uvutaji wa sigara hauruhusiwi kwenye eneo hilo" - "Emoji ya ishara ya maelekezo ya mahali maalum pa kutupia taka" - "Emoji ya ishara ya maelekezo ya kutotupa taka mahali hapo" - "Emoji ya ishara ya maji ya bomba lakini yaliyo salama kwa matumizi hasa kunywa" - "Emoji ya ishara ya maji ya bomba yasiyo salama kwa matumizi hasa kunywa" - "Emoji ya baiskeli" - "Emoji ya baiskeli ndani ya duara na msitari uliokingama umepita kati kati, ikiwa ni ishara ya katazo la baiskeli kuingia katika eneo hilo" - "Emoji ya mwendesha baiskeli" - "Emoji ya mwendesha baiskeli ya milimani" - "Emoji ya mwenda kwa miguu" - "Emoji ya mwenda kwa miguu ndani ya duara na msitari uliokingama umepita kati kati, ikiwa ni ishara ya katazo la waenda kwa miguu kuingia katika eneo hilo" - "Emoji ya kivuko cha watoto" - "Emoji ya ishara ya mwanaume, aghalabu kuashiria kua kitu au mahali husika ni maalum kwa ajili ya kutumiwa na wanaume" - "Emoji ya ishara ya mwanamke, aghalabu kuashiria kua kitu au mahali husika ni maalum kwa ajili ya kutumiwa na wanawake" - "Emoji inayoonesha picha ya mwanaume na mwanamke, aghalabu huwekwa kwenye maliwato ambazo zinaweza kutumika na watu wa jinsia zote" - "Emoji ya mtoto" - "Emoji ya msala, nyumba maalum ya kujihifadhi kwa haja" - "Emoji ya neno WC, namna ya kiingereza kusema bafuni" - "Emoji ya bomba la maji ya kuoga yanayotoka kwa rasha rasha, aghalabu huitwa bomba la mvua" - "Emoji ya bafu" - "Emoji ya hodhi la kuogea" - "Emoji ya eneo linalodhibitiwa na pasipoti" - "Emoji ya mamlaka ya forodha" - "Emoji ya sehemu ya madai ya mizigo" - "Emoji inayoonyesha mahali ambapo wanaweza kuchukua mizigo waliyoisahau" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-sw/strings-letter-descriptions.xml b/app/src/main/res/values-sw/strings-letter-descriptions.xml deleted file mode 100644 index 2265817d1b..0000000000 --- a/app/src/main/res/values-sw/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "Alama ya herufi \"a\" inayowekwa sehemu ya juu ya nambari kama ishara ya nambari zinazowakilisha nafasi au mtiririko" - "Ishara ndogo" - "Alama ya herufi \"o\" inayowekwa sehemu ya juu ya nambari kama ishara ya nambari zinazowakilisha nafasi au mtiririko" - "S inayotamkwa kwa sauti ya shada, yaani SS" - "A, inayotamkwa kwa sauti ya chini nyembamba" - "A, inayotamkwa kwa sauti ya juu inayopazwa" - "A, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda" - "A, ya kutamkwa kwa sauti ya mwendelezo wenye kiwimbi" - "A, yenye nukta mbili juu ikiwa ni msisitizo wa kuitamka kama ilivyo bila kuiunganisha kama silabi" - "A, inayotamkwa kwa kuumba mdomo kama o" - "A, E, zinazotamkwa kama neno moja" - "C, sedila" - "E, inayotamkwa kwa sauti ya chini nyembamba" - "E, inayotamkwa kwa sauti ya juu inayopazwa" - "E, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda" - "E, yenye nukta mbili juu ikiwa ni msisitizo wa kuitamka kama ilivyo bila kuiunganisha kama silabi" - "I, inayotamkwa kwa sauti ya chini nyembamba" - "I, inayotamkwa kwa sauti ya juu inayopazwa" - "I, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda" - "I, yenye nukta mbili juu ikiwa ni msisitizo wa kuitamka kama ilivyo bila kuiunganisha kama silabi" - "Eth" - "N, ya kutamkwa kwa sauti ya mwendelezo yenye wimbi" - "O, inayotamkwa kwa sauti ya chini nyembamba" - "O, inayotamkwa kwa sauti ya juu inayopazwa" - "O, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda" - "O, ya kutamkwa kwa sauti ya mwendelezo yenye wimbi" - "O, yenye nukta mbili juu ikiwa ni msisitizo wa kuitamka kama ilivyo bila kuiunganisha kama silabi" - "O, iliyokatwa kwa kijistari kilicholala kuelekea upande wa kulia inayotamkwa kwa kuumba mdomo kama o na kumalizia kama e." - "U, inayotamkwa kwa sauti ya chini nyembamba" - "U, inayotamkwa kwa sauti ya juu inayopazwa" - "U, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda" - "U, yenye nukta mbili juu ikiwa ni msisitizo wa kuitamka kama ilivyo bila kuiunganisha kama silabi" - "Y, inayotamkwa kwa sauti ya juu inayopazwa" - "Alama ya Kilatini inayofanana na p yenye kistari kilichopitiliza kwenda upande wa juu" - "Y, yenye nukta mbili juu ikiwa ni msisitizo wa kuitamka kama ilivyo bila kuiunganisha kama silabi" - "A, alama ya kijistari juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kuvuta" - "A, alama ya kijistari cha kujikunja juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kukata" - "A, alama ya koma iliyogeuzwa inayowekwa sehemu ya chini ya irabu" - "C, inayotamkwa kwa sauti ya juu inayopazwa" - "C, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda" - "C, alama ya kitone inayowekwa sehemu ya juu ya herufi katika alfabeti za Kilatini na Kivietnamu" - "C,inayotamkwa kwa sauti yenye mwelekeo wa kuanzia juu kisha kushuka na kupanda tena" - "D, inayotamkwa kwa sauti yenye mwelekeo wa kuanzia juu kisha kushuka na kupanda tena" - "D, iliyokatwa kwa kijistari kilicholala kuelekea upande wa kulia inayotamkwa kwa kuumba mdomo kama o na kumalizia kama e." - "E, alama ya kijistari juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kuvuta" - "E, alama ya kijistari cha kujikunja juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kukata" - "E, alama ya kitone inayowekwa sehemu ya juu ya herufi katika alfabeti za Kilatini na Kivietnamu" - "E, alama ya koma iliyogeuzwa inayowekwa sehemu ya chini ya irabu" - "E, inayotamkwa kwa sauti yenye mwelekeo wa kuanzia juu kisha kushuka na kupanda tena" - "G, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda" - "G, alama ya kijistari cha kujikunja juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kukata" - "G, alama ya kitone inayowekwa sehemu ya juu ya herufi katika alfabeti za Kilatini na Kivietnamu" - "G, inayotamkwa kwa sauti nyororo" - "H, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda" - "H, iliyokatwa kwa kijistari kilicholala kuelekea upande wa kulia inayotamkwa kwa kuumba mdomo kama o na kumalizia kama e" - "I, ya kutamkwa kwa sauti ya mwendelezo yenye wimbi" - "I, alama ya kijistari juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kuvuta" - "I, yenye kijistari kilichojikunja kuelekea juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida ya kukatiza" - "I, alama ya koma iliyogeuzwa inayowekwa sehemu ya chini ya irabu" - "I isiyokuwa na kitone sehemu ya juu" - "I, J, zinazotamkwa kama neno moja" - "J, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda" - "K, inayotamkwa kwa sauti nyororo" - "Alama inayofanana herufi \"k\" lakini inayotamkwa kama herufi \"g\" katika alfabeti ya Grinlandi" - "L, inayotamkwa kwa sauti ya juu inayopazwa" - "L, inayotamkwa kwa sauti nyororo" - "L, inayotamkwa kwa sauti yenye mwelekeo wa kuanzia juu kisha kushuka na kupanda tena" - "L, yenye alama ya kitone sehemu ya kati kati" - "L, iliyokatwa kwa kijistari kilicholala kuelekea upande wa kulia inayotamkwa kwa kuumba mdomo kama o na kumalizia kama e." - "N, inayotamkwa kwa sauti ya juu inayopazwa" - "N, inayotamkwa kwa sauti nyororo" - "N, inayotamkwa kwa sauti yenye mwelekeo wa kuanzia juu kisha kushuka na kupanda tena" - "N, inayotanguliwa na alama ya koma katika kona ya juu kushoto" - "Alama ya herufi \"n\" ndogo katika alfabeti ya Kilatini" - "O, alama ya kijistari juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kuvuta" - "O, alama ya kijistari cha kujikunja juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kukata" - "O, inayotamkwa kwa sauti ya shada inayopazwa" - "O, E, zinazotamkwa kama neno moja" - "R, inayotamkwa kwa sauti ya juu inayopazwa" - "R, inayotamkwa kwa sauti nyororo" - "R, inayotamkwa kwa sauti yenye mwelekeo wa kuanzia juu kisha kushuka na kupanda tena" - "S, inayotamkwa kwa sauti ya juu inayopazwa" - "S, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda" - "S, inayotamkwa kwa sauti nyororo" - "S, inayotamkwa kwa sauti yenye mwelekeo wa kuanzia juu kisha kushuka na kupanda tena" - "T, inayotamkwa kwa sauti nyororo" - "T, inayotamkwa kwa sauti yenye mwelekeo wa kuanzia juu kisha kushuka na kupanda tena" - "T, iliyokatwa kwa kijistari kilicholala kuelekea upande wa kulia inayotamkwa kwa kuumba mdomo kama o na kumalizia kama e" - "U, ya kutamkwa kwa sauti ya mwendelezo yenye wimbi" - "U, alama ya kijistari juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kuvuta" - "U, yenye kijistari kilichojikunja kuelekea juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida ya kukatiza" - "U, inayotamkwa kwa kuumba mdomo kama o" - "U, inayotamkwa kwa sauti ya shada inayopazwa" - "U, inayowekewa kijimkia kwa upande wa kulia chini ikisisitiza irabu kutamkwa kwa sauti ya kubanwa puani" - "W, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda" - "Y, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda" - "Z, inayotamkwa kwa sauti ya juu inayopazwa" - "Z, alama ya kitone inayowekwa sehemu ya juu ya herufi katika alfabeti za Kilatini na Kivietnamu" - "Z, inayotamkwa kwa sauti yenye mwelekeo wa kuanzia juu kisha kushuka na kupanda tena" - "Herufi ya \"Z\" yenye alama ya \"v\" upande wa juu wa herufi inayotamkwa kwa sauti yenye mwelekeo wa kuanzia juu kisha kushuka na kupanda tena" - "O, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu" - "U, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu" - "S, alama ya koma inayowekwa kwenye sehemu ya chini ya baadhi ya herufi katika alfabeti ya Kilatini" - "T, alama ya koma inayowekwa kwenye sehemu ya chini ya baadhi ya herufi katika alfabeti ya Kilatini" - "Alama ya herufi \"e\" iliyogeuzwa inayotumiwa katika baadhi ya irabu" - "A, alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu" - "A, alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti" - "A, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda pamoja na inayotamkwa kwa sauti ya juu inayopazwa" - "A, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda pamoja na inayotamkwa kwa sauti ya chini nyembamba" - "A, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti" - "A, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na ya kutamkwa kwa sauti ya mwendelezo yenye wimbi" - "A, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu" - "A, alama ya kijistari cha kujikunja juu ya irabu kuifanya itamkwe kwa sauti ya kawaida lakini ya kukatana kwa sauti iliyopazwa" - "A, alama ya kijistari cha kujikunja juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kukata na inayotamkwa kwa sauti ya chini nyembamba" - "A, alama ya kijistari cha kujikunja juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kukata na alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti" - "A, alama ya kijistari cha kujikunja juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kukata na ya kutamkwa kwa sauti ya mwendelezo yenye wimbi" - "A, alama ya kijistari cha kujikunja juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kukata na alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu" - "E, alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu" - "E, alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti" - "E, ya kutamkwa kwa sauti ya mwendelezo yenye wimbi" - "E, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na inayotamkwa kwa sauti ya kupazwa" - "E, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na inayotamkwa kwa sauti ya chini nyembamba" - "E, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti" - "E, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na ya kutamkwa kwa sauti ya mwendelezo yenye wimbi" - "E, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu" - "I, alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti" - "I, alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu" - "O, alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu" - "O, alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti" - "O, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na inayotamkwa kwa sauti ya kupazwa" - "O, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na inayotamkwa kwa sauti ya chini nyembamba" - "O, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti" - "O, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na kwa sauti ya mwendelezo yenye wimbi" - "O, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu" - "O, inayotofautisha matamshi kwa sauti ya kupaza" - "O, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu na inayotamkwa kwa sauti ya chini nyembamba" - "O, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu na alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti" - "O, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu na ya kutamkwa kwa sauti ya mwendelezo yenye wimbi" - "O, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu na alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu" - "U, alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu" - "U, alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti" - "U, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu na inayotamkwa kwa sauti ya juu kali" - "U, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu na inayotamkwa kwa sauti ya chini nyembamba" - "U, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu na alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti" - "U, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu na ya kutamkwa kwa sauti ya mwendelezo yenye wimbi" - "U, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu na alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu" - "Y, inayotamkwa kwa sauti ya chini nyembamba" - "Y, alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu" - "Y, alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti" - "Y, ya kutamkwa kwa sauti ya mwendelezo wa kiwimbi" - "Alama hisi iliyogeuzwa juu chini" - "Alama ya kunukuu yenye pembe mbili zinazoelekea kushoto" - "Kitone cha kati" - "Nambari moja iliyoandikwa kwa juu kidogo" - "Alama ya kunukuu yenye pembe mbili zinazoelekeza kulia" - "Kiulizi kilichogeuzwa juu chini" - "Alama moja ya kunukuu ya kushoto" - "Alama moja ya kunukuu ya kulia" - "Alama moja ya koma inayowekwa sehemu ya chini ya baadhi ya herufi" - "Alama mbili za kunukuu za kushoto" - "Alama mbili za kunukuu za kulia" - "Alama ya kurejea" - "Alama mbili za kurejea" - "Alama ya kuonyesha sehemu moja ya elfu" - "Alama inayofanana alama ya koma inayotumiwa kuonyesha aina tofauti za vipimo" - "Alama mbili zinazofanana alama za koma inayotumiwa kuonyesha aina tofauti za vipimo" - "Alama moja ya kunukuu yenye pembe inayoelekeza kushoto" - "Alama moja ya kunukuu yenye pembe inayoelekeza kulia" - "Nambari \"4\" inayotumika kama alama inayowekwa kona ya juu kulia ya baadhi ya herufi" - "Herufi ndogo ya \"n\" ya kilatini inayowekwa kona ya juu kulia ya baadhi ya herufi" - "Alama ya Peso" - "Kupitia kwa" - "Kishale kinachoelekeza kulia" - "Kishale kinachoelekeza chini" - "Seti isiyokuwa na kitu chochote" - "Ongezeko" - "Ndogo kuliko au sawa na" - "Kubwa kuliko au sawa na" - "Nyota Nyeusi" - diff --git a/app/src/main/res/values-sw/strings-talkback-descriptions.xml b/app/src/main/res/values-sw/strings-talkback-descriptions.xml index a22ff877e5..23068fd8be 100644 --- a/app/src/main/res/values-sw/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-sw/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "Chomeka kifaa cha sauti ili usikie vitufe vya nenosiri vikitamkwa kwa sauti." - "Maandishi ya sasa ni %s" - "Hakuna maandishi yaliyoingizwa" - "%1$s hurekebisha %2$s kuwa %3$s" - "%1$s hufanya marekebisho otomatiki" - "Hakuna pendekezo" - "Herufi isiyojulikana" - "Shift" - "Alama zaidi" - "Shift" - "Alama" - "Shift" - "Futa" - "Alama" - "Herufi" - "Nambari" - "Mipangilio" - "Kichupo" - "Nafasi" - "Kuweka data kwa kutamka" - "Emoji" - "Rudi" - "Utafutaji" - "Nukta" - "Badilisha lugha" - "Linalofuata" - "Iililotangulia" - "Shift imewashwa" - "Caps lock imewashwa" - "Hali ya alama" - "Hali ya alama zaidi" - "Hali ya herufi" - "Hali ya simu" - "Hali ya alama za simu" - "Kibodi imefichwa" - "Inaonyesha kibodi ya %s" - "tarehe" - "tarehe na wakati" - "barua pepe" - "kutuma ujumbe" - "nambari" - "simu" - "maandishi" - "wakati" - "URL" - "Zilizotumika majuzi" - "Watu" - "Vitu" - "Maumbile" - "Maeneo" - "Alama" - "Bendera" - "Kicheshi na Watu" - "Wanyama na Asili" - "Vyakula na Vinywaji" - "Usafiri na Maeneo" - "Shughuli" - "Vikaragosi" - "Herufi kubwa %s" - "Herufi I kubwa" - "Herufi I kubwa, alama ya kitone inayowekwa sehemu ya juu ya herufi katika alfabeti za Kilatini na Kivietnamu" - "Alama isiyojulikana" - "Emoji isiyojulikana" - "Kikaragosi cha uso uliochoka" - "Kikaragosi cha uso ulio tahayari" - "Kikaragosi cha uso uliovaa miwani ya jua" - "Kikaragosi cha uso unaoonyesha kushangaa" - "Kikaragosi cha uso unaoonyesha busu" - "Kikaragosi cha uso uliokunja ndita" - "Herufi mbadala zinapatikana" - "Herufi mbadala huondolewa" - "Mapendekezo mbadala yanapatikana" - "Mapendekezo mbadala huondolewa" + + + "Chomeka kifaa cha sauti ili usikie vitufe vya nenosiri vikitamkwa kwa sauti." + "Maandishi ya sasa ni %s" + "Hakuna maandishi yaliyoingizwa" + "%1$s hurekebisha %2$s kuwa %3$s" + "%1$s hufanya marekebisho otomatiki" + "Hakuna pendekezo" + "Herufi isiyojulikana" + "Shift" + "Alama zaidi" + "Shift" + "Alama" + "Shift" + "Futa" + "Alama" + "Herufi" + "Nambari" + "Mipangilio" + "Kichupo" + "Nafasi" + "Kuweka data kwa kutamka" + "Emoji" + "Rudi" + "Utafutaji" + "Nukta" + "Badilisha lugha" + "Linalofuata" + "Iililotangulia" + "Shift imewashwa" + "Caps lock imewashwa" + "Hali ya alama" + "Hali ya alama zaidi" + "Hali ya herufi" + "Hali ya simu" + "Hali ya alama za simu" + "Kibodi imefichwa" + "Inaonyesha kibodi ya %s" + "tarehe" + "tarehe na wakati" + "barua pepe" + "kutuma ujumbe" + "nambari" + "simu" + "maandishi" + "wakati" + "URL" + "Zilizotumika majuzi" + "Vitu" + "Alama" + "Bendera" + "Kicheshi na Watu" + "Wanyama na Asili" + "Vyakula na Vinywaji" + "Usafiri na Maeneo" + "Shughuli" + "Vikaragosi" + "Herufi kubwa %s" + "Herufi I kubwa" + "Herufi I kubwa, alama ya kitone inayowekwa sehemu ya juu ya herufi katika alfabeti za Kilatini na Kivietnamu" + "Herufi mbadala zinapatikana" + "Herufi mbadala huondolewa" + "Mapendekezo mbadala yanapatikana" + "Mapendekezo mbadala huondolewa" diff --git a/app/src/main/res/values-sw/strings.xml b/app/src/main/res/values-sw/strings.xml index 9eb443522a..3b2ac7c1d0 100644 --- a/app/src/main/res/values-sw/strings.xml +++ b/app/src/main/res/values-sw/strings.xml @@ -1,193 +1,107 @@ - - - - "Chaguo za uingizaji" - "Angalia majina ya unaowasiliana nao" - "Kikagua maendelezo hutumia majina yaliyoingizwa katika orodha yako ya anwani" - "Tetema unabofya kitufe" - "Toa sauti unapobofya kitufe" - "Ibuka kitufe kinapobonyezwa" - "Mapendeleo" - "Akaunti na Faragha" - "Mwonekano na Mipangilio" - "Kuandika kwa Ishara" - "Masahihisho ya maandishi" - "Mahiri" - "Mandhari" - "Washa muundo wa kibodi inayogawanyika" - "Badilisha hadi kwa mbinu zingine za ingizo" - "Ufunguo wa kubadilisha lugha unashughulikia mbinu zingine za ingizo pia" - "Kitufe cha kubadilisha lugha" - "Onyesha wakati lugha ingizo mbalimbali zinapowezeshwa" - "Kuchelewesha kutupa kitufe ibukizi" - "Hakuna kuchelewa" - "Chaguomsingi" - "Milisekunde %s" - "Chaguomsingi la mfumo" - "Pendekeza majini ya Anwani" - "Tumia majina kutoka kwa Anwani kama mapendekezo na marekebisho" - "Mapendekezo yaliyobadilishwa kukufaa" - "Boresha %s" - "Kitone baada ya nafasi mbili" - "Kugonga mara mbili kwenye upau nafasi kunaingiza kitone kikifuatiwa na nafasi" - "Uwekaji wa herufi kubwa kiotomatiki" - "Fanya herufi kubwa neno la kwanza la kila sentensi" - "Kamusi ya kibinafsi" - "Nyongeza za kamusi" - "Kamusi kuu" - "Onyesha mapendekezo ya marekebisho" - "Onyesha maneno yaliyopendekezwa wakati unachapa" - "Zuia maneno yanayokera" - "Usipendekeze maneno yanayoweza kukera" - "Sahihisha kiotomatiki" - "Kiaamba na kiakifishi hurekebisha maneno ambayo yamechapishwa vibaya" - "Zima" - "Ya wastani" - "Linalokaribia" - "Linalokaribia sana" - "Mapendekezo ya neno lifuatalo" - "Tumia nelo la awali katika kufanya mapendekezo" - "Washa kuandika kwa ishara" - "Ingiza neno kwa kutelezesha juu ya herufi" - "Onyesha njia ya ishara" - "Kihakiki kinachobadilika cha kuelea" - "Onyesha neno lililopendekezwa unapoonyesha ishara" - "Ishara ya fungu la maneno" - "Weka nafasi wakati wa ishara kwa kuelea katika kitufe cha nafasi" - "Kibao cha kuweka data kwa kutamka" - "Hujawasha mbinu ya kuweka data kwa kutamka. Angalia mipangilio ya Lugha na mbinu ya kuingiza data." - "Sanidi mbinu za uingizaji" - "Lugha" - "Usaidizi na maoni" - "Lugha" - "Gusa tena ili uhifadhi" - "Gusa hapa ili uhifadhi" - "Kamusi inapatikana" - "Maandhari ya kibodi" - "Badili akaunti" - "Hakuna akaunti zilizochaguliwa" - "Kwa sasa unatumia %1$s" - "SAWA" - "Ghairi" - "Toka" - "Chagua akaunti ya kutumia" - "Kiingereza cha (Uingereza)" - "Kiingereza cha (Marekani)" - "Kihispania (Marekani)" - "Hinglish" - "Kiserbia (Kilatino)" - "Kiingereza (UK) (%s)" - "Kiingereza (US) (%s)" - "Kihispania (US) (%s)" - "Hinglish (%s)" - "Kiserbia (%s)" - "%s (cha Jadi)" - "%s (Thabiti)" - "Hakuna lugha (Alfabeti)" - "Alfabeti (QWERTY)" - "Alfabeti (QWERTZ)" - "Alfabeti (AZERTY)" - "Alfabeti (Dvorak)" - "Alfabeti (Colemak)" - "Alfabeti (PC)" - "Emoji" - "Mandhari ya kibodi" - "Mitindo maalum ya kuingiza data" - "Ongeza mtindo" - "Ongeza" - "Ondoa" - "Hifadhi" - "Lugha" - "Mpangilio" - "Mtindo wa ingizo lako maalum unahitaji kuwa umewezeshwa kabla uanze kulitumia. Unataka kuuwesha sasa?" - "Washa" - "Sio sasa" - "Mfumo sawa wa maingizo tayari upo: %s" - "Bonyeza kitufe cha muda wa kutetema" - "Bonyeza kitufe cha kiwango cha sauti" - "Ucheleweshaji unapobofya kitufe na kushikilia" - "Emoji za kibodi halisi" - "Kitufe halisi cha Alt huonyesha kibao cha emoji" - "Chaguomsingi" - "Karibu kwenye %s" - "kwa Kuandika kwa ishara" - "Anza kutumia" - "Hatua inayofuata" - "Inasanidi %s" - "Washa %s" - "Tafadhali angalia \"%s\" katika mipangilio yako ya Lugha na mbinu ya kuingiza data. Hatua hii itairuhusu kutumika kwenye kifaa chako." - "%s tayari imewashwa katika mipangilio yako ya Lugha na kuingiza data, kwa hivyo hatua hii imekamilika. Nenda kwenye hatua inayofuata!" - "Washa katika Mipangilio" - "Badilisha kwenda %s" - "Kisha, chagua \"%s\" kama mbinu yako inayotumika ya kuingiza data ya maandishi." - "Badilisha mbinu za kuingiza data" - "Hongera, uko tayari!" - "Sasa unaweza kuchapa programu zako zote uzipendazo ukitumia %s." - "Sanidi lugha za ziada" - "Imemaliza" - "Onyesha aikoni ya programu" - "Onyesha aikoni ya programu kwenye kifungua programu" - "Programu ya kamusi" - "Programu ya kamusi" - "Huduma ya Kamusi" - "Maelezo ya kusasisha kamusi" - "Kamusi za nyongeza" - "Mipangilio ya kamusi" - "Kamusi ya mtumiaji" - "Kamusi ya mtumiaji" - "Kamusi inapatikana" - "Inapakua sasa" - "Imesakinishwa" - "Imesakinishwa, haitumiki" - "Tatizo wakati wa kuunganisha kwenye huduma ya kamusi" - "Hakuna kamusi inayopatikana" - "Onyesha upya" - "Ilibadilishwa mwisho" - "Inatafuta sasisho..." - "Inapakia…" - "Kamusi kuu" - "Ghairi" - "Mipangilio" - "Sakinisha" - "Ghairi" - "Futa" - "Toleo la %1$s" - "Ongeza" - "Ongeza kwenye kamusi" - "Fungu la maneno" - "Hiari zingine" - "Chaguo chache" - "Sawa" - "Neno:" - "Njia ya mkato:" - "Lugha:" - "Chapa neno" - "Njia ya mkato ya hiari" - "Badilisha neno" - "Hariri" - "Futa" - "Huna maneno yoyote katika kamusi ya mtumiaji. Gusa kitufe cha Ongeza (+) ili kuongeza neno." - "Ya lugha zote" - "Lugha zingine..." - "Futa" - " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + + "Angalia majina ya unaowasiliana nao" + "Tetema unabofya kitufe" + "Toa sauti unapobofya kitufe" + "Ibuka kitufe kinapobonyezwa" + "Mapendeleo" + "Kuandika kwa Ishara" + "Masahihisho ya maandishi" + "Mahiri" + "Mandhari" + "Washa muundo wa kibodi inayogawanyika" + "Badilisha hadi kwa mbinu zingine za ingizo" + "Kitufe cha kubadilisha lugha" + "Milisekunde %s" + "Chaguomsingi la mfumo" + "Tumia majina kutoka kwa Anwani kama mapendekezo na marekebisho" + "Mapendekezo yaliyobadilishwa kukufaa" + "Kitone baada ya nafasi mbili" + "Kugonga mara mbili kwenye upau nafasi kunaingiza kitone kikifuatiwa na nafasi" + "Uwekaji wa herufi kubwa kiotomatiki" + "Fanya herufi kubwa neno la kwanza la kila sentensi" + "Kamusi ya kibinafsi" + "Kamusi kuu" + "Onyesha mapendekezo ya marekebisho" + "Onyesha maneno yaliyopendekezwa wakati unachapa" + "Zuia maneno yanayokera" + "Usipendekeze maneno yanayoweza kukera" + "Sahihisha kiotomatiki" + "Kiaamba na kiakifishi hurekebisha maneno ambayo yamechapishwa vibaya" + "Zima" + "Ya wastani" + "Linalokaribia" + "Linalokaribia sana" + "Mapendekezo ya neno lifuatalo" + "Tumia nelo la awali katika kufanya mapendekezo" + "Washa kuandika kwa ishara" + "Ingiza neno kwa kutelezesha juu ya herufi" + "Onyesha njia ya ishara" + "Kihakiki kinachobadilika cha kuelea" + "Ishara ya fungu la maneno" + "Weka nafasi wakati wa ishara kwa kuelea katika kitufe cha nafasi" + "Kiingereza cha (Uingereza)" + "Kiingereza cha (Marekani)" + "Kihispania (Marekani)" + "Hinglish" + "Kiserbia (Kilatino)" + "%s (cha Jadi)" + "%s (Thabiti)" + "Hakuna lugha" + "Emoji" + "Ongeza" + "Ondoa" + "Hifadhi" + "Lugha" + "Mpangilio" + "Bonyeza kitufe cha muda wa kutetema" + "Bonyeza kitufe cha kiwango cha sauti" + "Ucheleweshaji unapobofya kitufe na kushikilia" + "Emoji za kibodi halisi" + "Kitufe halisi cha Alt huonyesha kibao cha emoji" + "Chaguomsingi" + "Karibu kwenye %s" + "kwa Kuandika kwa ishara" + "Anza kutumia" + "Inasanidi %s" + "Washa %s" + "Tafadhali angalia \"%s\" katika mipangilio yako ya Lugha na mbinu ya kuingiza data. Hatua hii itairuhusu kutumika kwenye kifaa chako." + "Washa katika Mipangilio" + "Badilisha kwenda %s" + "Kisha, chagua \"%s\" kama mbinu yako inayotumika ya kuingiza data ya maandishi." + "Badilisha mbinu za kuingiza data" + "Hongera, uko tayari!" + "Sasa unaweza kuchapa programu zako zote uzipendazo ukitumia %s." + "Imemaliza" + "Onyesha aikoni ya programu" + "Onyesha aikoni ya programu kwenye kifungua programu" + "Kamusi za nyongeza" + "Kamusi inapatikana" + "Mipangilio" + "Futa" + "Toleo la %1$s" + "Njia ya mkato:" + "Lugha:" + "Chapa neno" + "Njia ya mkato ya hiari" + "Badilisha neno" + "Ya lugha zote" + "Lugha zingine…" + "Chagua njia ya ingizo" + "Tendua" + "Rejesha" + "Tumia mawasiliano yako na data unayocharaza, kujifunza ili kuboresha mapendekezo" + "Nenda" + "Inayofuata" + "Nyuma" + "Nimemaliza" + "Tuma" + "Tafuta" + "Sitisha" + "Subiri" diff --git a/app/src/main/res/values-sw430dp/config-per-form-factor.xml b/app/src/main/res/values-sw430dp/config-per-form-factor.xml index 8868081c3e..fd997d7321 100644 --- a/app/src/main/res/values-sw430dp/config-per-form-factor.xml +++ b/app/src/main/res/values-sw430dp/config-per-form-factor.xml @@ -1,33 +1,17 @@ - true true - false - true true - - false - false + false + false diff --git a/app/src/main/res/values-sw430dp/config-screen-metrics.xml b/app/src/main/res/values-sw430dp/config-screen-metrics.xml index bc1c964af5..1f92a9d170 100644 --- a/app/src/main/res/values-sw430dp/config-screen-metrics.xml +++ b/app/src/main/res/values-sw430dp/config-screen-metrics.xml @@ -1,21 +1,7 @@ diff --git a/app/src/main/res/values-sw600dp-land/config.xml b/app/src/main/res/values-sw600dp-land/config.xml index 8be20d477d..448b73c0e1 100644 --- a/app/src/main/res/values-sw600dp-land/config.xml +++ b/app/src/main/res/values-sw600dp-land/config.xml @@ -1,21 +1,8 @@ @@ -25,12 +12,14 @@ 283.5dp 40%p - 81.9dp + 81.9dp 2.727%p - 0.0%p + 2.0%p 4.5%p 0.9%p + 4.5%p + 0.9%p 50% 50% @@ -47,13 +36,7 @@ 30.0% 4dp - - 3.20%p - 62% - 36% - 44dp - 180.0dp 54dp 5 50% diff --git a/app/src/main/res/values-sw600dp/config-per-form-factor.xml b/app/src/main/res/values-sw600dp/config-per-form-factor.xml index bb2eaa85ff..ac843734eb 100644 --- a/app/src/main/res/values-sw600dp/config-per-form-factor.xml +++ b/app/src/main/res/values-sw600dp/config-per-form-factor.xml @@ -1,33 +1,17 @@ - false false - false - false false - - false - false + false + false diff --git a/app/src/main/res/values-sw600dp/config-screen-metrics.xml b/app/src/main/res/values-sw600dp/config-screen-metrics.xml index d16c9253f1..fa14113b50 100644 --- a/app/src/main/res/values-sw600dp/config-screen-metrics.xml +++ b/app/src/main/res/values-sw600dp/config-screen-metrics.xml @@ -1,21 +1,7 @@ diff --git a/app/src/main/res/values-sw600dp/config.xml b/app/src/main/res/values-sw600dp/config.xml index f79ed0fa06..3fac28c125 100644 --- a/app/src/main/res/values-sw600dp/config.xml +++ b/app/src/main/res/values-sw600dp/config.xml @@ -1,21 +1,8 @@ @@ -31,18 +18,20 @@ 46%p -35.0%p - 63.0dp - 6dp + 63.0dp + 6dp - 98.3dp + 98.3dp 2.335%p 4.0%p 4.5%p 1.565%p + 4.5%p + 1.565%p - -31.5dp + -31.5dp 50% 42% @@ -61,13 +50,7 @@ 3dp 3dp - - 3.20%p - 52% - 27% - 44dp - 54dp 54dp 44dp 6 diff --git a/app/src/main/res/values-sw600dp/donottranslate-config-spacing-and-punctuations.xml b/app/src/main/res/values-sw600dp/donottranslate-config-spacing-and-punctuations.xml index 9cc555fbcc..60fff24b45 100644 --- a/app/src/main/res/values-sw600dp/donottranslate-config-spacing-and-punctuations.xml +++ b/app/src/main/res/values-sw600dp/donottranslate-config-spacing-and-punctuations.xml @@ -1,21 +1,7 @@ diff --git a/app/src/main/res/values-sw600dp/touch-position-correction.xml b/app/src/main/res/values-sw600dp/touch-position-correction.xml index 21c034052d..6ca2235ca3 100644 --- a/app/src/main/res/values-sw600dp/touch-position-correction.xml +++ b/app/src/main/res/values-sw600dp/touch-position-correction.xml @@ -1,24 +1,10 @@ - - 365.4dp + 270.4dp 35%p 1.896%p - 0.0%p + 3.690%p 3.690%p 1.030%p + 3.690%p + 1.030%p - 81.9dp + 81.9dp 43% 50% @@ -38,21 +27,15 @@ 60% 28% 32% - 23% - 23% + 30% + 30% 28% 20% 24% 24% - 24.00% + 30.00% - - 2.65%p - 53% - 30% - - 44dp - 340dp + 40dp 54dp 50% diff --git a/app/src/main/res/values-sw768dp/config-per-form-factor.xml b/app/src/main/res/values-sw768dp/config-per-form-factor.xml index 45ff0b1ffa..be00061839 100644 --- a/app/src/main/res/values-sw768dp/config-per-form-factor.xml +++ b/app/src/main/res/values-sw768dp/config-per-form-factor.xml @@ -1,33 +1,17 @@ - false false - false - false false - - true - false + true + false diff --git a/app/src/main/res/values-sw768dp/config-screen-metrics.xml b/app/src/main/res/values-sw768dp/config-screen-metrics.xml index 7769ad80db..10342db52b 100644 --- a/app/src/main/res/values-sw768dp/config-screen-metrics.xml +++ b/app/src/main/res/values-sw768dp/config-screen-metrics.xml @@ -1,21 +1,7 @@ diff --git a/app/src/main/res/values-sw768dp/config.xml b/app/src/main/res/values-sw768dp/config.xml index a50dac5ccd..578de4d85b 100644 --- a/app/src/main/res/values-sw768dp/config.xml +++ b/app/src/main/res/values-sw768dp/config.xml @@ -1,21 +1,8 @@ @@ -27,17 +14,19 @@ -35.0%p 2.335%p - 0.0%p + 3.312%p 3.312%p 1.066%p - - -31.5dp + 3.312%p + 1.066%p + + -31.5dp - 63.0dp - 12dp + 63.0dp + 12dp - - 98.3dp + + 98.3dp 50% 40% @@ -46,8 +35,8 @@ 60% 28% 32% - 23% - 23% + 25% + 25% 28% 20% 26% @@ -56,20 +45,14 @@ 3dp 3dp - - 2.95%p - 51% - 33% - - 44dp - 100dp + 40dp 54dp 44dp 6 90% 46dp 10dp - 22dp + 18dp 33dp diff --git a/app/src/main/res/values-ta/bools.xml b/app/src/main/res/values-ta/bools.xml index 130e52eab7..d88a136dae 100644 --- a/app/src/main/res/values-ta/bools.xml +++ b/app/src/main/res/values-ta/bools.xml @@ -1,21 +1,7 @@ - - - "செல்" - "அடுத்து" - "முன்" - "முடிந்தது" - "அனுப்பு" - "தேடு" - "இடைநிறுத்து" - "காத்திரு" - diff --git a/app/src/main/res/values-ta/strings-config-important-notice.xml b/app/src/main/res/values-ta/strings-config-important-notice.xml deleted file mode 100644 index ae9a4ca7be..0000000000 --- a/app/src/main/res/values-ta/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "தொடர்புகளிலிருந்தும், உள்ளிட்ட தரவிலிருந்தும் பரிந்துரைகளை மேம்படுத்த அறியவும்" - diff --git a/app/src/main/res/values-ta/strings-emoji-descriptions.xml b/app/src/main/res/values-ta/strings-emoji-descriptions.xml deleted file mode 100644 index b33b9d3088..0000000000 --- a/app/src/main/res/values-ta/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "பதிப்புரிமைச் சின்னம்" - "பதிவுசெய்த சின்னம்" - "இரட்டை ஆச்சரியக்குறி" - "வியப்புக் கேள்வி குறி" - "வர்த்தக முத்திரை சின்னம்" - "தகவல் மூலம்" - "இடது-வலது அம்புக்குறி" - "மேல்-கீழ் அம்புக்குறி" - "வடமேற்கு அம்புக்குறி" - "வட-கிழக்கு அம்புக்குறி" - "தென்-கிழக்கு அம்புக்குறி" - "தென்-மேற்கு அம்புக்குறி" - "தூண்டிலுடன் இடப்புறம் நோக்கிய அம்புக்குறி" - "தூண்டிலுடன் வலப்புறம் நோக்கிய அம்புக்குறி" - "வாட்ச்" - "மணற்கடிகாரம்" - - - - - "வலப்பக்கத்தைச் சுட்டிக்காட்டும் இரட்டை முக்கோணம்" - "இடப்பக்கத்தைச் சுட்டிக்காட்டும் இரட்டை முக்கோணம்" - "மேலே சுட்டிக்காட்டும் இரட்டை முக்கோணம்" - "கீழே சுட்டிக்காட்டும் இரட்டை முக்கோணம்" - - - - - - - "அலார கடிகாரம்" - - - - - "சரியும் மணலுடன் மணற்கடிகாரம்" - - - - - - - "வட்டத்திற்குள் பெரிய இலத்தீன் எழுத்து m" - "சிறிய கருப்பு சதுரம்" - "சிறிய வெள்ளைச் சதுரம்" - "வலப்பக்கத்தைச் சுட்டிக்காட்டும் முக்கோணம்" - "இடப்பக்கத்தைச் சுட்டிக்காட்டும் முக்கோணம்" - "நடுத்தர வெள்ளை சதுரம்" - "மிதமான கருப்பு சதுரம்" - "மிதமான வெள்ளைநிறத்தில் சிறிய சதுரம்" - "மிதமான கருப்புநிறத்தில் சிறிய சதுரம்" - "கதிர்களுடன் கூடிய சூரியன்" - "மேகம்" - - - - - - - "கருப்பு தொலைபேசி" - "டிக் செய்யப்பட்ட தேர்வுபெட்டி" - "மழைத்துளிகளுடன் குடை" - "சூடான பானம்" - - - "வெள்ளை நிறத்தில் விரலை மேல்நோக்கிக் காட்டு" - - - - - - - - - - - - - - - - - - - "கள்ளங்கபடமற்ற சிரித்த முகம்" - "மேஷம்" - "ரிஷபம்" - "மிதுனம்" - "கடகம்" - "சிம்மம்" - "கன்னி" - "துலாம்" - "விருச்சிகம்" - "தனுசு" - "மகரம்" - "கும்பம்" - "மீனம்" - "கருப்புநிற ஸ்பேட்" - "கருப்புநிற கிளப்" - "கருப்புநிற இதயம்" - "கருப்புநிற வைரம்" - "ஆவிபறக்கும் பானம்" - "மறுசுழற்சி சின்னம்" - "சக்கர நாற்காலி சின்னம்" - - - "நங்கூரம்" - - - - - - - - - - - - - "எச்சரிக்கை அறிகுறி" - "உயர் மின்னழுத்த சின்னம்" - "நடுத்தர வெள்ளை வட்டம்" - "நடுத்தர கருப்பு வட்டம்" - - - - - "கால்பந்து" - "பேஸ்பால்" - "பனிமனிதன்" - "மேகத்தின் பின்னால் மறைந்திருக்கும் சூரியன்" - - - "ஓஃபியாகெஸ்" - - - - - - - "அனுமதி இல்லை" - - - "தேவாலயம்" - - - - - "நீரூற்று" - "துளையில் கொடி" - - - "உலாப் படகு" - - - - - - - "கூடாரம்" - "எரிபொருள் குழாய்" - "கருப்பு கத்தரிக்கோல்" - "அடர்வெள்ளை நிற டிக் சின்னம்" - "விமானம்" - "கடிதஉறை" - "கைவிரலை மடக்குதல்" - "கைகளைக் காட்டுதல்" - "வெற்றி சின்னம்" - - - "பென்சில்" - "எழுதுமுனை" - "அடர்கருப்பில் டிக் சின்னம்" - "அடர்ந்த பெருக்கல் குறி" - - - - - "ஒளிரும் நட்சத்திரம்" - "எட்டு முனை நட்சத்திரம்" - "எட்டு முனை கருப்பு நட்சத்திரம்" - "ஸ்னோஃபிளாக்" - "ஸ்பார்க்கல்" - "பெருக்கல் குறி" - "சதுரத்திற்குள் பெருக்கல் குறி" - "அடர் நிற கேள்விக் குறி" - "வெள்ளை நிற கேள்விக்குறி" - "வெள்ளை நிற ஆச்சரியக்குறி" - "அடர் நிற ஆச்சரியக்குறி" - - - "ஆழமான காதலுடன் உள்ள இதயம்" - "அடர் கருப்பில் கூட்டல் குறி" - "அடர் கருப்பில் கழித்தல் குறி" - "அடர் கருப்பில் வகுத்தல் குறி" - "அடர் கருப்பில் வலப்பக்கம் அம்பு" - "சுருள் வளைவு" - "இரட்டை சுருள் வளைவு" - "வலப்புறமாக மேல்நோக்கி வளைந்த அம்புக்குறி" - "வலப்புறமாக கீழ்நோக்கி வளைந்த அம்புக்குறி" - "இடப்புறம் நோக்கிய கருப்பு அம்புக்குறி" - "மேல்நோக்கிய கருப்பு அம்புக்குறி" - "கீழ்நோக்கிய கருப்பு அம்புக்குறி" - "பெரிய கருப்பு சதுரம்" - "பெரிய வெள்ளை சதுரம்" - "நடுத்தர வெள்ளை நட்சத்திரம்" - "பெரிய வட்டம்" - "அலைகுறி" - "பார்ட் ஆல்டெர்னேஷன் மார்க்" - "வட்டத்திற்குள் வாழ்த்துகள் ஐடியோகிராஃப்" - "வட்டத்திற்குள் ரகசியம் குறித்த ஐடியோகிராஃப்" - "மஹ்ஜோங் டைலில் ரெட் டிராகன்" - "சீட்டு அட்டையில் கருப்பு ஜோக்கர்" - "இரத்த வகை A" - "இரத்த வகை B" - "இரத்த வகை O" - "பார்கிங் லாட்" - "இரத்த வகை AB" - "சதுரத்திற்குள் CL" - "சதுரத்திற்குள் cool" - "சதுரத்திற்குள் free" - "சதுரத்திற்குள் ID" - "சதுரத்திற்குள் new" - "சதுரத்திற்குள் N G" - "சதுரத்திற்குள் OK" - "சதுரத்திற்குள் SOS" - "சதுரத்திற்குள் up!" - "சதுரத்திற்குள் vs" - "சதுரத்திற்குள் கட்டகான கோகோ" - "சதுரத்திற்குள் கட்டகான சேவை" - "சதுரத்திற்குள் இலவச ஐடியோகிராஃப்" - "சதுரத்திற்குள் இடத்தைக் காட்டும் விரல் ஐடியோகிராஃப்" - "சதுரத்திற்குள் தடை ஐடியோகிராஃப்" - "சதுரத்திற்குள் காலியிடம் ஐடியோகிராஃப்" - "சதுரத்திற்குள் ஏற்றுக்கொள்ளல் ஐடியோகிராஃப்" - "சதுரத்திற்குள் முழுவதும் நிரம்பிய ஐடியோகிராஃப்" - "சதுரத்திற்குள் கட்டணம் செலுத்திய ஐடியோகிராஃப்" - "சதுரத்திற்குள் மாதந்திர ஐடியோகிராஃப்" - "சதுரத்திற்குள் விண்ணப்ப ஐடியோகிராஃப்" - "சதுரத்திற்குள் சலுகை ஐடியோகிராஃப்" - "சதுரத்திற்குள் வணிக ஐடியோகிராஃப்" - "வட்டத்திற்குள் நன்மைகள் ஐடியோகிராஃப்" - "வட்டத்திற்குள் ஐடியோகிராஃப் ஏற்றுக்கொள்ளல்" - "சூறாவளி" - "பனிமூட்டம்" - "மூடிய குடை" - "நட்சத்திரங்கள் சூழ்ந்த இரவு" - "மலைகளுக்கு இடையே சூரிய உதயம்" - "சூரிய உதயம்" - "அந்திப் பொழுதில் நகரமைப்பு" - "கட்டிடங்கள் மேல் சூரிய அஸ்தமனம்" - "வானவில்" - "இரவில் பாலம்" - "நீர் அலை" - "எரிமலை" - "பால்வெளி வீதி" - "உலக உருண்டையில் ஐரோப்பா ஆப்பிரிக்கா" - "உலக உருண்டையில் அமெரிக்கா" - "உலக உருண்டையில் ஆசியா ஆஸ்திரேலியா" - "தீர்க்க ரேகையுடன் உலக உருண்டை" - "அமாவாசை நிலவு" - "கால்பகுதி வளர்பிறை" - "அரைபாதி வளர்பிறை" - "முக்கால்பகுதி வளர்பிறை" - "முழு நிலவு" - "கால்பகுதி தேய்பிறை" - "அரைபாதி தேய்பிறை" - "முக்கால்பகுதி தேய்பிறை" - "பிறைவடிவம்" - "அமாவாசை நிலவு வடிவத்தில் முகம்" - "அரைபாதி வளர்பிறை வடிவத்தில் முகம்" - "அரைபாதி தேய்பிறை வடிவத்தில் முகம்" - "முழு நிலவு வடிவத்தில் முகம்" - "சூரியன் வடிவத்தில் முகம்" - "மின்னும் நட்சத்திரம்" - "வால்நட்சத்திரம்" - - - - - - - - - - - - - - - - - - - - - - - - - - - "பருப்பு வகையைச் சார்ந்த கொட்டை" - "நாற்று" - "பசுமையான மரம்" - "இலையுதிர் மரம்" - "பனைமரம்" - "சப்பாத்திக் கள்ளி" - - - "அல்லிப் பூ" - "செர்ரி மலர்" - "ரோஜா" - "செம்பருத்தி" - "சூரியகாந்தி" - "மலர்" - "தோலுரித்த மக்காச்சோளம்" - "நெற்பயிர்" - "மூலிகை" - "நான்கு இலை கொண்ட குளோவர்" - "மாப்பிள் இலை" - "மரத்திலிருந்து உதிர்ந்த இலை" - "காற்றில் அசைந்தாடும் இலை" - "காளான்" - "தக்காளி" - "கத்தரிக்காய்" - "திராட்சைகள்" - "முலாம்பழம்" - "தர்பூசணி" - "டேன்ஜெரின்" - "எலுமிச்சை" - "வாழைப் பழம்" - "அன்னாசிப்பழம்" - "சிவப்புநிற ஆப்பிள்" - "பச்சைநிற ஆப்பிள்" - "பேரி" - "பீச்சுப்பழம்" - "செர்ரி" - "ஸ்ட்ராபெரி" - "ஹம்பர்கர்" - "பீட்சாவின் ஒரு பகுதி" - "எலும்பைச் சுற்றிய இறைச்சி" - "கோழிக் கால்" - "அரிசி ரொட்டி" - "அரிசி பந்து" - "சமைத்த அரிசி" - "குழம்பும் சாதமும்" - "சூடான உணவுக் கிண்ணம்" - "பாஸ்தா" - "ரொட்டி" - "பிரெஞ்சு ஃபிரைஸ்" - "உருளைக்கிழங்கு வறுவல்" - "டாங்கோ" - "ஓடென்" - "சூஷி" - "இறால் வறுவல்" - "சுருள் வடிவ மீன் கேக்" - "வெண்ணிலா ஐஸ்கிரீம்" - "நுரைபொங்கும் ஐஸ்" - "ஐஸ்கிரீம்" - "டோனட்" - "குக்கீ" - "சாக்லேட் பார்" - "மிட்டாய்" - "லாலிபாப்" - "பாற்கூழ்" - "தேன் கிண்ணம்" - "சிறிய கேக்" - "உணவு பெட்டி" - "உணவு உள்ள கிண்ணம்" - "சமையல்" - "முட்கரண்டியும் கத்தியும்" - "கைப்பிடி இல்லாத தேநீர் கோப்பை" - "அரசி ஒயின் குடுவையும் கிண்ணமும்" - "ஒயின் டம்ளர்" - "மதுகலவை டம்ளர்" - "பழக்கலவைப் பானம்" - "பீர் குவளை" - "பீர் பொங்கும் குவளைகள்" - "குழந்தை பாட்டில்" - - - - - - - "ரிப்பன்" - "அழகாக மடித்த பரிசு" - "பிறந்த நாள் கேக்" - "சிரிக்கும் பூசணிக்காய் விளக்கு" - "கிறிஸ்துமஸ் மரம்" - "கிறிஸ்துமஸ் தாத்தா" - "வாணவேடிக்கைகள்" - "வானத்தில் வெடித்துசிதறும் பட்டாசு" - "பலூன்" - "விழாக்கால வண்ண வேடிக்கை" - "வண்ணக் காகிதங்களைத் தூவும் பந்து" - "தனபதா மரம்" - "குறுக்கே அமைந்த இரண்டு கொடிகள்" - "பைன் அலங்காரம்" - "ஜப்பான் பொம்மைகள்" - "மீன் வடிவ கொடிகள்" - "காற்றில் பறக்கும் மணி" - "முழுநிலவைக் கொண்டாடும் விழா" - "பள்ளிக்கூட பை" - "பட்டமளிப்புத் தொப்பி" - - - - - - - - - - - - - - - "கேராசூல் ஹார்ஸ்" - "பெர்ரிஸ் வீல்" - "ரோலர் கோஸ்டர்" - "மீன்பிடிக்கும் கருவியும் மீனும்" - "மைக்ரோஃபோன்" - "மூவி கேமரா" - "சினிமா" - "ஹெட்ஃபோன்" - "பெயிண்டிங் தட்டு" - "அரசு விழாக்களில் அணியப்படும் பிரிட்டிஷ் தொப்பி" - "சர்க்கஸ் கூடாரம்" - "டிக்கெட்" - "கிளாப்பர் பலகை" - "நிகழ் கலைகள்" - "வீடியோ கேம்" - "சரியான குறி" - "ஸ்லாட் இயந்திரம்" - "பில்லியர்ட்ஸ்" - "விளையாட்டுப் பகடை" - "பௌலிங்" - "அட்டைகள் விளையாட்டு" - "இசைக் குறிப்பு" - "பல இசைக் குறிப்புகள்" - "சாக்ஸோஃபோன்" - "கிட்டார்" - "இசை விசைப்பலகை" - "ட்ரம்பெட்" - "வயலின்" - "இசை ஸ்கோர்" - "ஓட்டப்பந்தய சட்டை" - "டென்னிஸ் மட்டை மற்றும் பந்து" - "பனிச்சறுக்கு பலகையும் கம்பும்" - "கூடைப்பந்து" - "சதுரங்க அமைப்பில் கொடி" - "பனிச்சறுக்குபவர்" - "ஓடுபவர்" - "அலையில் சாகசம் செய்பவர்" - - - "கோப்பை" - "குதிரைப் பந்தயம்" - "அமெரிக்க கால்பந்து" - "ரக்பி கால்பந்து" - "நீந்துபவர்" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "வீடு" - "தோட்டத்துடன் கூடிய வீடு" - "அலுவலகக் கட்டிடம்" - "ஜாப்பனீஸ் அஞ்சல் அலுவலகம்" - "ஐரோப்பிய அஞ்சல் அலுவலகம்" - "மருத்துவமனை" - "பேங்க்" - "தன்னியக்கக் காசளிப்பு எந்திரம்" - "ஹோட்டல்" - "காதலர்களுக்கான ஹோட்டல்" - "24 மணிநேரக் கடை" - "பள்ளி" - "பல்பொருள் அங்காடி" - "ஆலை" - "சிவப்பு நிற விளக்கு" - "ஜாப்பனீஸ் கோட்டை" - "ஐரோப்பிய கோட்டை" - - - - - - - - - - - - - - - - - - - - - - - - - "எலி" - "மௌஸ்" - "எருது" - "நீர் எருமை" - "பசு" - - - "சிறுத்தை" - "முயல்" - "பூனை" - "டிராகன்" - "முதலை" - "திமிங்கலம்" - "நத்தை" - "பாம்பு" - "குதிரை" - "செம்மறிக் கிடா" - "ஆடு" - "செம்மறியாடு" - "குரங்கு" - "சேவல்" - "கோழி" - "நாய்" - "பன்றி" - "ஆண் பன்றி" - "யானை" - "ஆக்டோபஸ்" - "கடல் சங்கு" - "மூட்டைப் பூச்சி" - "எறும்பு" - "தேனீ" - "பெண் வண்டு" - "மீன்" - "மஞ்சளும் நீலமும் கலந்த மீன்" - "பலூன் மீன்" - "கடல் ஆமை" - "முட்டை ஓட்டிலிருந்து வெளிவரும் குஞ்சு" - "கோழிக்குஞ்சு" - "உற்றுப் பார்க்கும் கோழிக்குஞ்சு" - "பறவை" - "பென்குயின்" - "கோலா" - "பூடில்" - "ஒற்றை திமில் கொண்ட ஒட்டகம்" - "இரண்டு திமில்கள் கொண்ட ஆசிய ஒட்டகம்" - "டால்பின்" - "எலி முகம்" - "பசு முகம்" - "புலி முகம்" - "முயல் முகம்" - "பூனை முகம்" - "டிராகன் முகம்" - "நீரில் விளையாடும் திமிங்கிலம்" - "குதிரை முகம்" - "குரங்கு முகம்" - "நாய் முகம்" - "பன்றி முகம்" - "தவளை முகம்" - "வெள்ளெலி முகம்" - "ஓநாய் முகம்" - "கரடி முகம்" - "பாண்டாகரடி முகம்" - "பன்றி மூக்கு" - "கால் தடங்கள்" - - - "கண்கள்" - - - "காது" - "மூக்கு" - "வாய்" - "நாக்கு" - "வெள்ளை நிறத்தில் விரலை மேல்நோக்கிக் காட்டுதல்" - "வெள்ளை நிறத்தில் விரலை கீழ்நோக்கிக் காட்டுதல்" - "வெள்ளை நிறத்தில் விரலை இடப்பக்கம் நோக்கிக் காட்டுதல்" - "வெள்ளை நிறத்தில் விரலை வலப்பக்கம் நோக்கிக் காட்டுதல்" - "கைமடக்கி குத்துதல்" - "கை அசைத்தல்" - "அருமை என்பதைக் குறிக்கும் கை சின்னம்" - "கட்டை விரலை உயர்த்துதல்" - "கட்டை விரலைத் தாழ்த்துதல்" - "கைதட்டல்" - "கைகளை விரித்தல்" - "கிரீடம்" - "பெண்கள் அணியும் தொப்பி" - "கண்கண்ணாடிகள்" - "டை" - "டி-சர்ட்" - "ஜீன்ஸ்" - "ஆடை" - "கிமோனோ" - "நீச்சலுடை" - "பெண்கள் ஆடைகள்" - "பணப்பை" - "கைப்பை" - "சிறு பை" - "ஆண்கள் ஷூ" - "தடகள வீரருக்கான ஷூக்கள்" - "ஹை ஹீல் செருப்பு" - "பெண்கள் செருப்பு" - "பெண்கள் ஷூக்கள்" - "கால் தடங்கள்" - "மார்பளவு வரை நிழல்" - "மார்பளவு வரை நிழல்கள்" - "சிறுவன்" - "இளம் பெண்" - "ஆண்" - "பெண்" - "குடும்பம்" - "கைகோர்த்த ஆண்களும் பெண்களும்" - "கைகோர்த்த இரண்டு ஆண்கள்" - "கைகோர்த்த இரண்டு பெண்கள்" - "போலீஸ் அதிகாரி" - "முயல் காதுகளுடன் பெண்கள்" - "முக்காடு அணிந்த மணமகள்" - "பொன் நிறத்தில் முடி கொண்டவர்" - "ஒட்டுத்தொப்பியுடன் கூடிய ஆண்" - "தலைப்பாகை அணிந்தவர்" - "வயதானவர்" - "வயதான பெண்மணி" - "பேபி" - "கட்டுமான தொழிலாளி" - "இளவரசி" - "ஜாப்பனீஸ் பயமுறுத்தும் முகம்" - "ஜாப்பனீஸ் பூதம்" - "பேய்" - "குட்டித் தேவதை" - "வேற்று கிரகவாசி" - "ஏலியன் மான்ஸ்டர்" - "வருத்தத்துடன் இருக்கும் பேய்" - "மண்டை ஓடு" - "வழிகாட்டுபவர்" - "பாதுகாவலர்" - "டான்சர்" - "லிப்ஸ்டிக்" - "நெயில்பாலிஷ்" - "முக மசாஜ்" - "முடித்திருத்தம்" - "பார்பர் ஃபோல்" - "மருந்தூசி" - "மாத்திரை" - "முத்தம்" - "காதல் கடிதம்" - "மோதிரம்" - "மாணிக்கக் கல்" - "கிஸ்" - "மலர்க்கொத்து" - "காதலில் திளைக்கும் ஜோடி" - "திருமணம்" - "துடிக்கும் இதயம்" - "உடைந்த இதயம்" - "இரண்டு இதயங்கள்" - "ஜொலிக்கும் இதயம்" - "விரிவடையும் இதயம்" - "அம்புடன் இதயம்" - "நீலநிற இதயம்" - "பச்சைநிற இதயம்" - "மஞ்சள்நிற இதயம்" - "பர்பிள்நிற இதயம்" - "ரிப்பன் கட்டிய இதயம்" - "சுற்றும் இதயங்கள்" - "அலங்கார இதயம்" - "நடுவில் புள்ளியுடன் கூடிய வைர வடிவம்" - "மின்சார ஒளி விளக்கு" - "ஆங்கர் சின்னம்" - "வெடிகுண்டு" - "தூங்கும் சின்னம்" - "வெடித்தல்" - "வியர்வைக் கொட்டும் சின்னம்" - "நீர் விழுதல்" - "காற்றடிக்கும் சின்னம்" - "பைல் ஆஃப் ஃபு" - "மடக்கிய கை" - "தலைச்சுற்றல்" - "பேச்சு வடிவ பலூன்" - "சிந்தனை கொண்ட பலூன்" - "வெள்ளைநிறப் பூ" - "நூறு மதிப்பெண்கள்" - "பணப்பை" - "நாணயப் பரிமாற்றம்" - "பெரிய டாலர் குறியீடு" - "கிரெடிட் கார்டு" - "யென் குறியீடுடன் கூடிய வங்கிநோட்டு" - "டாலர் குறியீடுடன் கூடிய வங்கிநோட்டு" - "யூரோ குறியீடுடன் கூடிய வங்கிநோட்டு" - "பவுண்டு குறியீடுடன் கூடிய வங்கிநோட்டு" - "இறக்கைகள் உள்ள பணம்" - "யென் குறியீட்டுடன் மேல்நோக்கிய போக்கைக் கொண்ட விளக்கப்படம்" - "இருக்கை" - "தனிப்பட்ட கணினி" - "குறும்பெட்டி" - "குறு வட்டு" - "நெகிழ் வட்டு" - "ஆப்டிகல் வட்டு" - "டிவிடி" - "கோப்புறை" - "கோப்பின் திறந்த கோப்புறை" - "கீழே சுருட்டிய பக்கம்" - "மேலே லேசாக மடித்த பக்கம்" - "கேலெண்டர்" - "கிழிக்கும் வகையிலான கேலெண்டர்" - "கார்டில் அட்டவணை" - "மேல்நோக்கிய போக்கைக் கொண்ட விளக்கப்படம்" - "கீழ்நோக்கிய போக்கைக் கொண்ட விளக்கப்படம்" - "பார் விளக்கப்படம்" - "கிளிப்போர்டு" - "பின்" - "வட்ட வடிவ பின்" - "பேப்பர் கிளிப்" - "நேர் ரூலர்" - "முக்கோண ரூலர்" - "புத்தகக்குறி தாவல்கள்" - "லெட்ஜர்" - "நோட்புக்" - "அலங்கார கவர் நோட்புக்" - "மூடிய புத்தகம்" - "திறந்த புத்தகம்" - "பச்சைநிற கவர் புத்தகம்" - "நீலநிற கவர் புத்தகம்" - "ஆரஞ்சுநிற கவர் புத்தகம்" - "புத்தகங்கள்" - "பெயர் பேட்ஜ்" - "உருட்டு" - "மெமோ" - "ஃபோன் ரிசீவர்" - "பேஜர்" - "தொலைநகல் இயந்திரம்" - "சேட்டிலைட் ஆன்டெனா" - "பொது ஒலிபெருக்கி" - "அதிக சத்தம் கொடுக்கும் மெகாஃபோன்" - "அவுட்பாக்ஸ் தட்டு" - "இன்பாக்ஸ் தட்டு" - "பரிசு" - "மின்னஞ்சல் சின்னம்" - "உள்வரும் கடித உறை" - "கடித உறைக்கும் மேலே கீழ்நோக்கிய அம்புக்குறி" - "கீழே ஃபிளாக் உடன் கூடிய மூடப்பட்ட அஞ்சல் பெட்டி" - "மேலே ஃபிளாக் உடன் கூடிய மூடப்பட்ட அஞ்சல் பெட்டி" - "மேலே ஃபிளாக் உடன் கூடிய திறந்த அஞ்சல் பெட்டி" - "கீழே ஃபிளாக் உடன் கூடிய திறந்த அஞ்சல் பெட்டி" - "தபால் பெட்டி" - "தபால் ஹார்ன்" - "செய்தித்தாள்" - "மொபைல்" - "இடப் பக்கத்தில் வலப் புறம் நோக்கிய மொபைல்" - "அதிர்வு முறை" - "மொபைல் ஆஃப்" - "மொபைல் பயன்படுத்தக்கூடாது" - "கோடுகளுடன் ஆன்டெனா" - "கேமரா" - - - "வீடியோ கேமரா" - "தொலைக்காட்சி" - "ரேடியோ" - "வீடியோ கேசட்" - - - - - "பிணைந்த வலப்புறம் நோக்கிய அம்புகள்" - "கடிகாரத்திசையில் வலம் மற்றும் இடப் புறம் நோக்கிய திறந்த வட்ட அம்புகள்" - "கடிகாரத்திசையில் வட்டத்திற்குள் ஒன்று என எழுதப்பட்டதுடன் வலம் மற்றும் இடப் புறம் நோக்கிய திறந்த வட்ட அம்புகள்" - "கடிகாரத்திசையில் கீழ் மற்றும் மேல் நோக்கிய திறந்த வட்ட அம்புகள்" - "எதிர்கடிகாரத்திசையில் கீழ் மற்றும் மேல் நோக்கிய திறந்த வட்ட அம்புகள்" - "ஒளிர்வு குறைவு சின்னம்" - "ஒளிர்வு அதிகம் சின்னம்" - "ரத்து என்னும் ஸ்ட்ரோக்குடன் ஸ்பீக்கர்" - "ஸ்பீக்கர்" - "ஒற்றை ஒலி அலையுடன் ஸ்பீக்கர்" - "மூன்று ஒலி அலைகளுடன் ஸ்பீக்கர்" - "பேட்டரி" - "மின்செருகி" - "இடது பக்கத்திலிருக்கும் உருப்பெருக்கி கண்ணாடி" - "வலது பக்கத்திலிருக்கும் உருப்பெருக்கி கண்ணாடி" - "மை பேனா மூலம் பூட்டுதல்" - "பூட்டிய பூட்டும் சாவியும்" - "சாவி" - "பூட்டு" - "திறந்த பூட்டு" - "மணி" - "ரத்து என்னும் ஸ்ட்ரோக்குடன் மணி" - "புக்மார்க்" - "இணைப்பு சின்னம்" - "ரேடியோ பட்டன்" - "மேலே பின்நோக்கிய இடப்புற அம்பு" - "End என்பதற்கு மேலே இடப்புறம் நோக்கிய அம்பு" - "On க்கு அடுத்து ஆச்சர்யக்குறியுடன், மேலே இடப்புற அம்பு" - "Soon க்கு மேலே வலப்புறம் நோக்கிய அம்பு" - "Top க்கு மேலே, மேல்நோக்கிய அம்பு" - "18 வயதுக்குட்பட்டவர்களுக்கு அனுமதி இல்லை" - "பெரிய எழுத்தில் பத்து" - "இலத்தீன் பெரிய எழுத்துகளுக்கான உள்ளீட்டு சின்னம்" - "இலத்தீன் சிறிய எழுத்துகளுக்கான உள்ளீட்டு சின்னம்" - "எண்களுக்கான உள்ளீட்டு சின்னம்" - "சின்னங்களுக்கான உள்ளீட்டுச் சின்னம்" - "இலத்தீன் எழுத்துகளுக்கான உள்ளீட்டு சின்னம்" - "நெருப்பு" - "டார்ச்" - "குறடு" - "சுத்தி" - "திருகும் அச்சாணியும்" - "கத்தி" - "துப்பாக்கி" - "நுண்பெருக்கி" - "தொலைநோக்கி" - "கண்ணாடி பந்து" - "ஒற்றைப் புள்ளியுடன் ஆறு பாகம் கொண்ட நட்சத்திரம்" - "தொடக்கத்திற்கான ஜாப்பனீஸ் சின்னம்" - "திரிசூல சின்னம்" - "கருப்பு சதுர பட்டன்" - "வெள்ளை சதுர பட்டன்" - "பெரிய சிவப்பு வட்டம்" - "பெரிய நீல வட்டம்" - "பெரிய ஆரஞ்சுநிற வைரம்" - "பெரிய நீலநிற வைரம்" - "சிறிய ஆரஞ்சுநிற வைரம்" - "சிறிய நீலநிற வைரம்" - "மேல்நோக்கிய சிவப்பு முக்கோணம்" - "கீழ்நோக்கிய சிவப்பு முக்கோணம்" - "மேல்நோக்கிய சிறிய சிவப்பு முக்கோணம்" - "கீழ்நோக்கிய சிறிய சிவப்பு முக்கோணம்" - - - - - - - - - - - - - "ஒரு மணியைக் காட்டும் கடிகாரம்" - "இரண்டு மணியைக் காட்டும் கடிகாரம்" - "மூன்று மணியைக் காட்டும் கடிகாரம்" - "நான்கு மணியைக் காட்டும் கடிகாரம்" - "ஐந்து மணியைக் காட்டும் கடிகாரம்" - "ஆறு மணியைக் காட்டும் கடிகாரம்" - "ஏழு மணியைக் காட்டும் கடிகாரம்" - "எட்டு மணியைக் காட்டும் கடிகாரம்" - "ஒன்பது மணியைக் காட்டும் கடிகாரம்" - "பத்து மணியைக் காட்டும் கடிகாரம்" - "பதினொரு மணியைக் காட்டும் கடிகாரம்" - "பன்னிரண்டு மணியைக் காட்டும் கடிகாரம்" - "ஒரு மணி, 30 நிமிடத்தைக் காட்டும் கடிகாரம்" - "இரண்டு மணி, 30 நிமிடத்தைக் காட்டும் கடிகாரம்" - "மூன்று மணி, 30 நிமிடத்தைக் காட்டும் கடிகாரம்" - "நான்கு மணி, 30 நிமிடத்தைக் காட்டும் கடிகாரம்" - "ஐந்து மணி, 30 நிமிடத்தைக் காட்டும் கடிகாரம்" - "ஆறு மணி, 30 நிமிடத்தைக் காட்டும் கடிகாரம்" - "ஏழு மணி, 30 நிமிடத்தைக் காட்டும் கடிகாரம்" - "எட்டு மணி, 30 நிமிடத்தைக் காட்டும் கடிகாரம்" - "ஒன்பது மணி, 30 நிமிடத்தைக் காட்டும் கடிகாரம்" - "பத்து மணி, 30 நிமிடத்தைக் காட்டும் கடிகாரம்" - "பதினொரு மணி, 30 நிமிடத்தைக் காட்டும் கடிகாரம்" - "பன்னிரண்டு மணி, 30 நிமிடத்தைக் காட்டும் கடிகாரம்" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "ஃபுஜி மலை" - "டோக்கியோ கோபுரம்" - "சுதந்திரத் தேவி சிலை" - "ஜப்பான் வரைபடத்தின் நிழல்" - "மொயாய்" - "புன்னகைக்கும் முகம்" - "சிரித்த கண்களுடன் புன்னகைக்கும் முகம்" - "ஆனந்தக் கண்ணீருடன் முகம்" - "திறந்த வாயுடன் சிரிக்கும் முகம்" - "திறந்த வாய்ப் புன்னகை, புன்னகைக்கும் கண்களுடன் முகம்" - "திறந்த வாய்ப் புன்னகையும் குளிர்ந்த வியர்வையும் உள்ள முகம்" - "திறந்த வாய்ப் புன்னகை, இறுக்கமாக மூடப்பட்ட கண்களுடன் முகம்" - "ஒளிவட்டத்துடன் சிரித்த முகம்" - "கொம்புகளுடன் சிரித்த முகம்" - "கண்ணடிக்கும் முகம்" - "சிரித்த கண்களுடன் சிரித்த முகம்" - "ருசியான உணவு சுவைக்கும் முகம்" - "நிம்மதி முகம்" - "இதய வடிவிலான கண்களுடன் சிரித்த முகம்" - "சூரியக்கண்ணாடிகள் அணிந்த சிரித்த முகம்" - "பகட்டாகச் சிரிக்கும் முகம்" - "வாயை நேராக இறுக்கமாக மூடிய முகம்" - "உணர்ச்சியற்ற முகம்" - "அதிருப்தியுடன் கூடிய முகம்" - "வியர்வைச் சொட்டும் முகம்" - "வருத்தமான முகம்" - "குழப்பமான முகம்" - "கண்களை மூடிக்கொண்டு அழும் முகம்" - "முத்தமிடும் முகம்" - "பறக்கும் முத்தம்" - "சிரித்த கண்களுடன் முத்தமிடும் முகம்" - "மூடிய கண்களுடன் முத்தமிடும் முகம்" - "நாக்கை வெளித்தள்ளிய முகம்" - "நாக்கை வெளித்தள்ளியதுடன் கண் சிமிட்டும் முகம்" - "நாக்கை வெளித்தள்ளி இறுக்கமாக மூடப்பட்ட கண்களுடன் முகம்" - "ஏமாற்றமடைந்த முகம்" - "கவலைதோய்ந்த முகம்" - "கோபமான முகம்" - "மஞ்சள்நிற கோப முகம்" - "அழும் முகம்" - "உதவியில்லாமல் இருப்பதை வெளிப்படுத்தும் முகம்" - "பெரும் மூச்சு விடும் முகம்" - "வியர்வை சொட்டும் சோக முகம்" - "கண்களும் வாயும் திறந்த நிலையில் இருக்கும் முகம்" - "கலங்கின முகம்" - "பயந்த முகம்" - "பயந்து அழும் முகம்" - "தூங்கும் முகம்" - "சோர்வான முகம்" - "பற்களைக் கடிக்கும் முகம்" - "சத்தமாக அழும் முகம்" - "திறந்த வாயுடன் முகம்" - "ஆச்சரியத்தை வெளிப்படுத்தும் முகம்" - "திறந்த வாயுடன், வியர்வைச் சொட்டும் முகம்" - "இரண்டு கைகளைக் கன்னத்தில் வைத்து கத்தும் முகம்" - "அதிர்ச்சியடைந்த முகம்" - "சிவந்த கன்னங்களுடன் அதிர்ச்சியடைந்த முகம்" - "தூங்கும் முகம்" - "தலைச்சுற்றும் முகம்" - "வாய் இல்லாத முகம்" - "மருத்துவ முகமூடி அணிந்த முகம்" - "சிரிக்கும் கண்களுடன் புன்னகைக்கும் பூனை முகம்" - "ஆனந்த கண்ணீருடன் பூனை முகம்" - "திறந்த வாய் கொண்ட சிரித்த முகத்துடன் பூனை" - "இதய வடிவிலான கண்களுடன் கூடிய சிரித்த முகப் பூனை" - "பகட்டு புன்னகையுடன் பூனை முகம்" - "மூடிய கண்களுடன் முத்தமிடும் பூனை முகம்" - "எரிச்சலான பூனை முகம்" - "அழும் பூனை முகம்" - "பயந்த பூனை முகம்" - - - - - - - - - "நல்ல பாவனை இல்லாத முகம்" - "சரி சொல்லும் பாவனையுடன் முகம்" - "மிகப் பணிவானவர்" - "தீயதைப் பார்க்காத குரங்கு" - "தீயதைக் கேட்காத குரங்கு" - "தீயதைப் பேசாத குரங்கு" - "மகிழ்ச்சியில் ஒரு கையை உயர்த்துபவர்" - "விழாவில் இரு கைகளையும் மேலே உயர்த்துதல்" - "வருத்தமாக இருப்பவர்" - "மஞ்சள்நிறத்தில் கோபமான முகம் கொண்டவர்" - "கைகளை மடக்கியவர்" - "ராக்கெட்" - "ஹெலிகாப்டர்" - "நீராவி ரயில்" - "ரயில்வே கார்" - "அதிவேக ரயில்" - "புல்லட் மூக்குடன் கூடிய அதிவேக ரயில்" - "ரயில்" - "மெட்ரோ" - "ஒளியுடன் கூடிய ரயில்" - "நிலையம்" - "டிராம்" - "டிராம் கார்" - "பேருந்து" - "வந்துகொண்டிருக்கும் பேருந்து" - "நகர்வூந்து" - "பேருந்து நிறுத்தும்" - "மினிபஸ்" - "ஆம்புலன்ஸ்" - "தீ வண்டி" - "போலீஸ் கார்" - "வந்துகொண்டிருக்கும் போலீஸ் கார்" - "டாக்ஸி" - "வந்துகொண்டிருக்கும் டாக்ஸி" - "வாகனம்" - "வந்துகொண்டிருக்கும் வாகனம்" - "கேளிக்கை வாகனம்" - "டெலிவரி வண்டி" - "கனரக லாரி" - "டிராக்டர்" - "மோனோரயில்" - "மலைப் பாதை ரயில்" - "சஸ்பென்ஸன் ரயில்பாதை" - "மலை கேபிள்வழி" - "ஏரியல் டிராம் வழி" - "கப்பல்" - "துடுப்பு படகு" - "விரைவுபடகு" - "கிடைமட்ட ட்ராஃபிக் விளக்கு" - "செங்குத்து ட்ராஃபிக் விளக்கு" - "கட்டுமான சின்னம்" - "போலீஸ் கார்களில் சுழலும் விளக்கு" - "கம்பத்தில் முக்கோண கொடி" - "கதவு" - "அனுமதி இல்லை சின்னம்" - "புகைச் சின்னம்" - "புகைபிடிக்கக்கூடாது சின்னம்" - "குப்பையை அதன் இடத்தில் போடும் சின்னம்" - "குப்பையைப் போடக்கூடாது சின்னம்" - "கிண்ணத்தில் குடிநீர் சின்னம்" - "குடிப்பதற்கான தண்ணீர் அல்ல" - "சைக்கிள்" - "சைக்கிளுக்கு அனுமதி இல்லை" - "சைக்கிள் ஓட்டுபவர்கள்" - "மலையில் சைக்கிள் ஓட்டுபவர்கள்" - "பாதசாரிகள்" - "பாதசாரிகளுக்கு அனுமதி இல்லை" - "குழந்தைகள் கடக்கும் வழி" - "ஆண்கள் சின்னம்" - "பெண்கள் சின்னம்" - "கழிவறை" - "குழந்தை சின்னம்" - "கழிப்பிடம்" - "வாட்டர் குளோசட்" - "பொழிவு" - "குளிப்பது" - "குளிக்கும் தொட்டி" - "பாஸ்போர்ட் கட்டுப்பாடு" - "சுங்கம்" - "உடைமை கோருமிடம்" - "உடைமை விடுமிடம்" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-ta/strings-letter-descriptions.xml b/app/src/main/res/values-ta/strings-letter-descriptions.xml deleted file mode 100644 index e1254aac9f..0000000000 --- a/app/src/main/res/values-ta/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "ஃபெமினைன் ஆர்டினல் இன்டிகேட்டர்" - "மைக்ரோ குறி" - "மாஸ்குலின் ஆர்டினல் இன்டிகேட்டர்" - "ஷார்ப் S" - "A, கிரேவ்" - "A, அக்யூட்" - "A, வளைவு" - "A, டில்டு" - "A, டையாரேசிஸ்" - "A, மேல் வளையம்" - "A, E, லிகஷர்" - "C, செடில்லா" - "E, கிரேவ்" - "E, அக்யூட்" - "E, வளைவு" - "E, டையாரேசிஸ்" - "I, கிரேவ்" - "I, அக்யூட்" - "I, வளைவு" - "I, டையாரேசிஸ்" - "ஈத்" - "N, டில்டு" - "O, கிரேவ்" - "O, அக்யூட்" - "O, வளைவு" - "O, டில்டு" - "O, டையாரேசிஸ்" - "O, ஸ்ட்ரோக்" - "U, கிரேவ்" - "U, அக்யூட்" - "U, வளைவு" - "U, டையாரேசிஸ்" - "Y, அக்யூட்" - "தோர்ன்" - "Y, டையாரேசிஸ்" - "A, மேக்ரான்" - "A, பிரீவ்" - "A, ஒகோனெக்" - "C, அக்யூட்" - "C, வளைவு" - "C, மேல் புள்ளி" - "C, கேரன்" - "D, கேரன்" - "D, ஸ்ட்ரோக்" - "E, மேக்ரான்" - "E, பிரீவ்" - "E, மேல் புள்ளி" - "E, ஒகோனேக்" - "E, கேரன்" - "G, வளைவு" - "G, பிரீவ்" - "G, மேல் புள்ளி" - "G, செடில்லா" - "H, வளைவு" - "H, ஸ்ட்ரோக்" - "I, டில்டு" - "I, மேக்ரான்" - "I, பிரீவ்" - "I, ஒகோனேக்" - "புள்ளியற்ற I" - "I, J, லிகஷர்" - "J, வளைவு" - "K, செடில்லா" - "க்ரா" - "L, அக்யூட்" - "L, செடில்லா" - "L, கேரன்" - "L, நடுப் புள்ளி" - "L, ஸ்ட்ரோக்" - "N, அக்யூட்" - "N, செடில்லா" - "N, கேரன்" - "N, தனிமேற்கோள் குறிக்கு அடுத்துவருவது" - "இங்க்" - "O, மேக்ரான்" - "O, பிரீவ்" - "O, டபுள் அக்யூட்" - "O, E, லிகஷர்" - "R, அக்யூட்" - "R, செடில்லா" - "R, கேரன்" - "S, அக்யூட்" - "S, வளைவு" - "S, செடில்லா" - "S, கேரன்" - "T, செடில்லா" - "T, கேரன்" - "T, ஸ்ட்ரோக்" - "U, டில்டு" - "U, மேக்ரான்" - "U, பிரீவ்" - "U, மேல் வளையம்" - "U, டபுள் அக்யூட்" - "U, ஒகோனேக்" - "W, வளைவு" - "Y, வளைவு" - "Z, அக்யூட்" - "Z, மேல் புள்ளி" - "Z, கேரன்" - "நீண்ட S" - "O, ஹார்ன்" - "U, ஹார்ன்" - "S, கீழ் காற்புள்ளி" - "T, கீழ் காற்புள்ளி" - "செச்சுவா" - "A, கீழ் புள்ளி" - "A, மேல் ஹூக்" - "A, வளைவு மற்றும் அக்யூட்" - "A, வளைவு மற்றும் கிரேவ்" - "A, வளைவு மற்றும் மேல் ஹூக்" - "A, வளைவு மற்றும் டில்டு" - "A, வளைவு மற்றும் கீழ் புள்ளி" - "A, பிரீவ் மற்றும் அக்யூட்" - "A, பிரீவ் மற்றும் கிரேவ்" - "A, பிரீவ் மற்றும் மேல் ஹூக்" - "A, பிரீவ் மற்றும் டில்டு" - "A, பிரீவ் மற்றும் கீழ் புள்ளி" - "E, கீழ் புள்ளி" - "E, மேல் ஹூக்" - "E, டில்டு" - "E, வளைவு மற்றும் அக்யூட்" - "E, வளைவு மற்றும் கிரேவ்" - "E, வளைவு மற்றும் மேல் ஹூக்" - "E, வளைவு மற்றும் டில்டு" - "E, வளைவு மற்றும் கீழ் புள்ளி" - "I, மேல் ஹூக்" - "I, கீழ் புள்ளி" - "O, கீழ் புள்ளி" - "O, மேல் ஹூக்" - "O, வளைவு மற்றும் அக்யூட்" - "O, வளைவு மற்றும் கிரேவ்" - "O, வளைவு மற்றும் மேல் ஹூக்" - "O, வளைவு மற்றும் டில்டு" - "O, வளைவு மற்றும் கீழ் புள்ளி" - "O, ஹார்ன் மற்றும் அக்யூட்" - "O, ஹார்ன் மற்றும் கிரேவ்" - "O, ஹார்ன் மற்றும் மேல் ஹூக்" - "O, ஹார்ன் மற்றும் டில்டு" - "O, ஹார்ன் மற்றும் கீழ் புள்ளி" - "U, கீழ் புள்ளி" - "U, மேல் ஹூக்" - "U, ஹார்ன் மற்றும் அக்யூட்" - "U, ஹார்ன் மற்றும் கிரேவ்" - "U, ஹார்ன் மற்றும் மேல் ஹூக்" - "U, ஹார்ன் மற்றும் டில்டு" - "U, ஹார்ன் மற்றும் கீழ் புள்ளி" - "Y, கிரேவ்" - "Y, கீழ் புள்ளி" - "Y, மேல் ஹூக்" - "Y, டில்டு" - "தலைகீழ் ஆச்சரியக் குறி" - "இடது பிரான்சிய வலது மேற்கோள்குறி" - "நடுப் புள்ளி" - "சூப்பர்ஸ்கிரிப்ட் ஒன்" - "வலது பிரான்சிய இரட்டை மேற்கோள்குறி" - "தலைகீழ் கேள்விக் குறி" - "இடது ஒற்றை மேற்கோள் குறி" - "வலது ஒற்றை மேற்கோள் குறி" - "ஒற்றை லோ-9 மேற்கோள் குறி" - "இடது இரட்டை மேற்கோள் குறி" - "வலது இரட்டை மேற்கோள் குறி" - "டேகர்" - "இரட்டை டேகர்" - "விழுக்காட்டுச் சின்னம்" - "அளவுக்குறி" - "இரட்டை அளவுக்குறி" - "இடது பிரான்சிய ஒற்றை மேற்கோள்குறி" - "வலது பிரான்சிய ஒற்றை மேற்கோள்குறி" - "சூப்பர்ஸ்கிரிப்ட் நான்கு" - "சூப்பர்ஸ்கிரிப்ட் லத்தீன் சிற்றெழுத்து n" - "பெஸோ குறி" - "கேர் ஆஃப்" - "வலது நோக்கிய அம்பு" - "கீழ் நோக்கிய அம்பு" - "வெற்று கணம்" - "இன்கிரிமென்ட்" - "குறைவு அல்லது சமம்" - "அதிகம் அல்லது சமம்" - "கருப்பு நட்சத்திரம்" - diff --git a/app/src/main/res/values-ta/strings-talkback-descriptions.xml b/app/src/main/res/values-ta/strings-talkback-descriptions.xml index be6735f4e9..b129d4e686 100644 --- a/app/src/main/res/values-ta/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-ta/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "சத்தமாகக் கூறப்படும் கடவுச்சொல் விசைகளைக் கேட்பதற்கு ஹெட்செட்டைச் செருகவும்." - "நடப்பு உரை %s" - "உரை எதுவும் உள்ளிடப்படவில்லை" - "%2$s இலிருந்து %3$s ஆக %1$s திருத்துகிறது" - "%1$s தன்னியக்க திருத்தத்தைச் செயல்படுத்துகிறது" - "பரிந்துரை எதுவுமில்லை" - "அறியப்படாத எழுத்துக்குறி" - "ஷிஃப்டு" - "கூடுதல் குறியீடுகள்" - "ஷிஃப்டு" - "குறியீடுகள்" - "ஷிஃப்டு" - "நீக்கு" - "சின்னங்கள்" - "எழுத்துகள்" - "எண்கள்" - "அமைப்பு" - "டேப்" - "ஸ்பேஸ்" - "குரல் உள்ளீடு" - "ஈமோஜி" - "திரும்பு" - "தேடல்" - "புள்ளி" - "மொழியை மாற்று" - "அடுத்து" - "முந்தையது" - "ஷிப்டு இயக்கப்பட்டது" - "பேரெழுத்தாக்கம் இயக்கப்பட்டது" - "குறியீடுகள் பயன்முறை" - "கூடுதல் குறியீடுகள் முறை" - "எழுத்துகள் பயன்முறை" - "ஃபோன் பயன்முறை" - "ஃபோன் குறியீடுகள் பயன்முறை" - "விசைப்பலகை மறைக்கப்பட்டது" - "%s விசைப்பலகையைக் காட்டுகிறது" - "தேதி" - "தேதி மற்றும் நேரம்" - "மின்னஞ்சல்" - "மெசேஜ்" - "எண்" - "ஃபோன்" - "உரை" - "நேரம்" - "URL" - "சமீபத்தியவை" - "நபர்கள்" - "பொருட்கள்" - "இயற்கை" - "இடங்கள்" - "சின்னங்கள்" - "கொடிகள்" - "ஸ்மைலியும் மக்களும்" - "விலங்குகளும் இயற்கையும்" - "உணவும் பானமும்" - "பயணமும் இடங்களும்" - "செயல்பாடு" - "எமோடிகான்ஸ்" - "பேரெழுத்து %s" - "பேரெழுத்து I" - "பேரெழுத்து I, மேல் புள்ளி" - "அறியப்படாத குறியீடு" - "அறியப்படாத ஈமோஜி" - "அலுத்துப்போன முகம்" - "சங்கடமான முகம்" - "குளிர்கண்ணாடி அணிந்த முகம்" - "ஆச்சரியமான முகம்" - "முத்தமிடும் முகம்" - "கோபமான முகம்" - "மாற்று எழுத்துக்குறிகள் உள்ளன" - "மாற்று எழுத்துக்குறிகள் நிராகரிக்கப்பட்டன" - "மாற்று பரிந்துரைகள் உள்ளன" - "மாற்று பரிந்துரைகள் நிராகரிக்கப்பட்டன" + + + "சத்தமாகக் கூறப்படும் கடவுச்சொல் விசைகளைக் கேட்பதற்கு ஹெட்செட்டைச் செருகவும்." + "நடப்பு உரை %s" + "உரை எதுவும் உள்ளிடப்படவில்லை" + "%2$s இலிருந்து %3$s ஆக %1$s திருத்துகிறது" + "%1$s தன்னியக்க திருத்தத்தைச் செயல்படுத்துகிறது" + "பரிந்துரை எதுவுமில்லை" + "அறியப்படாத எழுத்துக்குறி" + "ஷிஃப்டு" + "கூடுதல் குறியீடுகள்" + "ஷிஃப்டு" + "குறியீடுகள்" + "ஷிஃப்டு" + "நீக்கு" + "சின்னங்கள்" + "எழுத்துகள்" + "எண்கள்" + "அமைப்பு" + "டேப்" + "ஸ்பேஸ்" + "குரல் உள்ளீடு" + "ஈமோஜி" + "திரும்பு" + "தேடல்" + "புள்ளி" + "மொழியை மாற்று" + "அடுத்து" + "முந்தையது" + "ஷிப்டு இயக்கப்பட்டது" + "பேரெழுத்தாக்கம் இயக்கப்பட்டது" + "குறியீடுகள் பயன்முறை" + "கூடுதல் குறியீடுகள் முறை" + "எழுத்துகள் பயன்முறை" + "ஃபோன் பயன்முறை" + "ஃபோன் குறியீடுகள் பயன்முறை" + "விசைப்பலகை மறைக்கப்பட்டது" + "%s விசைப்பலகையைக் காட்டுகிறது" + "தேதி" + "தேதி மற்றும் நேரம்" + "மின்னஞ்சல்" + "மெசேஜ்" + "எண்" + "ஃபோன்" + "உரை" + "நேரம்" + "URL" + "சமீபத்தியவை" + "பொருட்கள்" + "சின்னங்கள்" + "கொடிகள்" + "ஸ்மைலியும் மக்களும்" + "விலங்குகளும் இயற்கையும்" + "உணவும் பானமும்" + "பயணமும் இடங்களும்" + "செயல்பாடு" + "எமோடிகான்ஸ்" + "பேரெழுத்து %s" + "பேரெழுத்து I" + "பேரெழுத்து I, மேல் புள்ளி" + "மாற்று எழுத்துக்குறிகள் உள்ளன" + "மாற்று எழுத்துக்குறிகள் நிராகரிக்கப்பட்டன" + "மாற்று பரிந்துரைகள் உள்ளன" + "மாற்று பரிந்துரைகள் நிராகரிக்கப்பட்டன" diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml index df500536e0..f35398ed2f 100644 --- a/app/src/main/res/values-ta/strings.xml +++ b/app/src/main/res/values-ta/strings.xml @@ -1,193 +1,443 @@ - - - - - "உள்ளீட்டு விருப்பங்கள்" - "தொடர்பு பெயர்களை ஆய்வுசெய்" - "உங்கள் தொடர்புபட்டியலில் இருந்து உள்ளீடுகளை பிழைத்திருத்தி பயன்படுத்துகிறது" - "விசையழுத்தின்போது அதிர்வுரு" - "விசையழுத்தத்தின்போது ஒலியெழுப்பு" - "விழை அழுத்தத்தின்போது பாப்அப் செய்" - "விருப்பங்கள்" - "கணக்குகள் & தனியுரிமை" - "தோற்றம் & தளவமைப்புகள்" - "ஸ்வைப் தட்டச்சு" - "உரை திருத்தம்" - "மேம்பட்டவை" - "தீம்" - "பிரிக்கப்பட்ட விசைப்பலகையை இயக்கு" - "பிற உள்ளீட்டு முறைகளுக்கு மாறு" - "மொழி மாற்றல் விசை பிற உள்ளீட்டு முறைகளையும் கட்டுப்படுத்துகிறது" - "மொழி மாற்ற விசை" - "பல உள்ளீட்டு மொழிகள் இயக்கப்பட்டிருக்கும்போது காட்டு" - "விசை பாப்அப் விலக்கின் தாமதம்" - "தாமதம் வேண்டாம்" - "இயல்புநிலை" - "%sமி.வி." - "அமைப்பின் இயல்புநிலை" - "தொடர்பு பெயர்களைப் பரிந்துரை" - "பரிந்துரைகள், திருத்தங்கள் ஆகியவற்றிற்கு தொடர்புகளிலிருந்து பெயர்களை பயன்படுத்து" - "தனிப்பட்ட பரிந்துரைகள்" - "%s ஐ மேம்படுத்து" - "புள்ளியைத் தொடர்ந்து இடைவெளியை உள்ளிடு" - "ஸ்பேஸ் பட்டியை இருமுறை தட்டுவது, புள்ளியை தொடர்ந்து இடைவெளியை உள்ளிடும்" - "தன்னியக்க பேரெழுத்தாக்கல்" - "வரியின் முதல் எழுத்தை பேரெழுத்தாக்கும்" - "தனிப்பட்ட அகராதி" - "துணை அகராதிகள்" - "முதன்மை அகராதி" - "திருத்துதல் விருப்பங்களைக் காட்டு" - "உள்ளிடும்போது பரிந்துரைக்கப்பட்ட வார்த்தைகளைக் காட்டும்" - "புண்படுத்தும் சொற்களைத் தடு" - "மனதைப் புண்படுத்தக் கூடிய சொற்களைப் பரிந்துரைக்க வேண்டாம்" - "தன்னியக்க திருத்தம்" - "ஸ்பேஸ்பாரும், நிறுத்தற்குறிகளும் தவறாக உள்ளிடப்பட்ட வார்த்தைகளை தானாக திருத்தும்" - "ஆஃப்" - "மிதமாக" - "தீவிரமாக" - "மிகத் தீவிரமாக" - "அடுத்த வார்த்தை பரிந்துரைகள்" - "பரிந்துரைகளை உருவாக்க முந்தைய வார்த்தைகளைப் பயன்படுத்தும்" - "ஸ்வைப் உள்ளீட்டை இயக்கு" - "எழுத்துகள் வழியாக இழுப்பதன் மூலம் வார்த்தையை உள்ளிடலாம்" - "ஸ்வைப் தடத்தைக் காட்டு" - "நிகழ்நேர மிதக்கும் மாதிரிக்காட்சி" - "சைகையிடும் போது பரிந்துரைக்கும் வார்த்தையைப் பார்க்கலாம்" - "சொற்றொடர் ஸ்வைப்" - "ஸ்பேஸ் விசைக்கு இழுப்பதன் மூலம் சைகைகளுக்கு இடையே இடைவெளிகளை உள்ளிடலாம்" - "குரல் உள்ளீட்டு விசை" - "குரல் உள்ளீட்டு முறைகள் இயக்கப்படவில்லை. மொழி & உள்ளீட்டு அமைப்புகளைச் சரிபார்க்கவும்." - "உள்ளீட்டு முறைகளை உள்ளமைத்தல்" - "மொழிகள்" - "உதவி & கருத்து" - "மொழிகள்" - "சேமிக்க, மீண்டும் தட்டவும்" - "சேமிக்க, இங்கே தட்டவும்" - "அகராதி உள்ளது" - "விசைப்பலகை தீம்" - "கணக்குகளை மாற்று" - "கணக்குகள் எதையும் தேர்வுசெய்யவில்லை" - "இப்போது %1$sஐப் பயன்படுத்துகிறீர்கள்" - "சரி" - "ரத்துசெய்" - "வெளியேறு" - "பயன்படுத்த, கணக்கைத் தேர்ந்தெடு" - "ஆங்கிலம் (யூகே)" - "ஆங்கிலம் (யூஎஸ்)" - "ஸ்பானிஷ் (யூஎஸ்)" - "ஹிங்கிலிஷ்" - "செர்பியன் (லத்தீன்)" - "ஆங்கிலம் (யூகே) (%s)" - "ஆங்கிலம் (யூஎஸ்) (%s)" - "ஸ்பானிஷ் (யூஎஸ்) (%s)" - "ஹிங்கிலிஷ் (%s)" - "செர்பியன் (%s)" - "%s (பாரம்பரியமானது)" - "%s (வசதியான)" - "மொழியில்லை (அகரவரிசை)" - "அகரவரிசை (க்வெர்டி)" - "அகரவரிசை (க்வெர்ட்ச்)" - "அகரவரிசை (எசெர்டி)" - "அகரவரிசை (ட்வொராக்)" - "அகரவரிசை (கொல்மக்)" - "அகரவரிசை (பிசி)" - "எமோஜி" - "விசைப்பலகை தீம்" - "தனிப்பயன் உள்ளீட்டு நடைகள்" - "நடையைச் சேர்" - "சேர்" - "அகற்று" - "சேமி" - "மொழி" - "தளவமைப்பு" - "உங்கள் தனிப்பயன் உள்ளீட்டு நடையை பயன்படுத்த தொடங்கும் முன்பு, அதை இயக்க வேண்டும். அதை இப்போது இயக்க விரும்புகிறீர்களா?" - "இயக்கு" - "இப்பொழுது வேண்டாம்" - "இதே உள்ளீட்டு நடை ஏற்கனவே உள்ளது: %s" - "விசையழுத்த அதிர்வின் காலஅளவு" - "விசையழுத்த ஒலியளவு" - "விசைக்கான நீண்ட அழுத்த நேரம்" - "கைமுறை விசைப்பலகைக்கான ஈமோஜி" - "ஈமோஜி பலகத்தைக் காட்டும் கைமுறை Alt விசை" - "இயல்புநிலை" - "%s பயன்பாட்டிற்கு வரவேற்கிறோம்" - "ஸ்வைப் உள்ளீடு மூலம்" - "தொடங்குக" - "அடுத்த கட்டம்" - "%s ஆப்ஸை அமைக்கிறது" - "%s ஆப்ஸை இயக்கவும்" - "மொழி & உள்ளீட்டு அமைப்புகளில் \"%s\" ஆப்ஸைத் தேர்வு செய்யவும். இதனால், சாதனத்தில் ஆப்ஸை இயக்கலாம்." - "மொழி & உள்ளீட்டு அமைப்புகளில் %s ஏற்கனவே இயக்கப்பட்டுள்ளதால் இப்படிமுறை முடிந்தது. அடுத்த படிமுறைக்குச் செல்லவும்!" - "அமைப்புகளில் இயக்கு" - "%s க்கு மாறவும்" - "அடுத்து, உங்கள் செயலில் உள்ள உரை உள்ளீட்டு முறையாக \"%s\" பயன்பாட்டைத் தேர்ந்தெடுக்கவும்." - "உள்ளீட்டு முறைகளை மாற்றவும்" - "வாழ்த்துகள், தயாராகிவிட்டீர்கள்!" - "%s ஆப்ஸ் மூலம் உங்களுக்கு விருப்பமான எல்லா ஆப்ஸ்களிலும் நீங்கள் உள்ளிடலாம்." - "கூடுதல் மொழிகளை உள்ளமை" - "முடிந்தது" - "ஆப்ஸ் ஐகானைக் காட்டு" - "துவக்கியில் ஆப்ஸ் ஐகானைக் காட்டும்" - "அகராதி வழங்கி" - "அகராதி வழங்கி" - "அகராதி சேவை" - "அகராதியின் புதுப்பிப்பு தகவல்" - "துணை அகராதிகள்" - "அகராதிகளுக்கான அமைப்பு" - "பயனர் அகராதிகள்" - "பயனர் அகராதி" - "அகராதி கிடைக்கிறது" - "தற்போது பதிவிறக்குகிறது" - "நிறுவப்பட்டது" - "நிறுவப்பட்டது, முடக்கப்பட்டது" - "அகராதி சேவையில் இணைப்பதில் பிரச்சனை ஏற்பட்டது" - "அகராதிகள் எதுவும் இல்லை" - "புதுப்பி" - "இறுதியாகப் புதுப்பித்தது" - "புதுப்பிப்புகளுக்காக சரிபார்கிறது" - "ஏற்றுகிறது..." - "முதன்மை அகராதி" - "ரத்துசெய்" - "அமைப்பு" - "நிறுவு" - "ரத்துசெய்" - "நீக்கு" - "%1$s பதிப்பு" - "சேர்" - "அகராதியில் சேர்" - "சொற்றொடர்" - "மேலும் விருப்பங்கள்" - "குறைவான விருப்பங்கள்" - "சரி" - "வார்த்தை:" - "ஷார்ட்கட்:" - "மொழி:" - "வார்த்தையை உள்ளிடவும்" - "விருப்பத்திற்குரிய ஷார்ட்கட்" - "வார்த்தையைத் திருத்து" - "திருத்து" - "நீக்கு" - "பயனர் அகராதியில் எந்தச் சொற்களும் இல்லை. சொல்லைச் சேர்க்க, சேர் (+) எனும் பொத்தானைத் தட்டவும்." - "எல்லா மொழிகளுக்கும்" - "மேலும் மொழிகள்..." - "நீக்கு" - " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + + "தொடர்பு பெயர்களை ஆய்வுசெய்" + "விசையழுத்தின்போது அதிர்வுரு" + "விசையழுத்தத்தின்போது ஒலியெழுப்பு" + "விழை அழுத்தத்தின்போது பாப்அப் செய்" + "விருப்பங்கள்" + "ஸ்வைப் தட்டச்சு" + "உரை திருத்தம்" + "மேம்பட்டவை" + "தீம்" + "பிரிக்கப்பட்ட விசைப்பலகையை இயக்கு" + "பிற உள்ளீட்டு முறைகளுக்கு மாறு" + "மொழி மாற்ற விசை" + %s மிவி + "அமைப்பின் இயல்புநிலை" + "பரிந்துரைகள், திருத்தங்கள் ஆகியவற்றிற்கு தொடர்புகளிலிருந்து பெயர்களை பயன்படுத்து" + "தனிப்பட்ட பரிந்துரைகள்" + "புள்ளியைத் தொடர்ந்து இடைவெளியை உள்ளிடு" + "ஸ்பேஸ் பட்டியை இருமுறை தட்டுவது, புள்ளியை தொடர்ந்து இடைவெளியை உள்ளிடும்" + "தன்னியக்க பேரெழுத்தாக்கல்" + "வரியின் முதல் எழுத்தை பேரெழுத்தாக்கும்" + "தனிப்பட்ட அகராதி" + "முதன்மை அகராதி" + "திருத்துதல் விருப்பங்களைக் காட்டு" + "உள்ளிடும்போது பரிந்துரைக்கப்பட்ட வார்த்தைகளைக் காட்டும்" + "புண்படுத்தும் சொற்களைத் தடு" + "மனதைப் புண்படுத்தக் கூடிய சொற்களைப் பரிந்துரைக்க வேண்டாம்" + "தன்னியக்க திருத்தம்" + "ஸ்பேஸ்பாரும், நிறுத்தற்குறிகளும் தவறாக உள்ளிடப்பட்ட வார்த்தைகளை தானாக திருத்தும்" + "ஆஃப்" + "மிதமாக" + "தீவிரமாக" + "மிகத் தீவிரமாக" + "அடுத்த வார்த்தை பரிந்துரைகள்" + "பரிந்துரைகளை உருவாக்க முந்தைய வார்த்தைகளைப் பயன்படுத்தும்" + "ஸ்வைப் உள்ளீட்டை இயக்கு" + "எழுத்துகள் வழியாக இழுப்பதன் மூலம் வார்த்தையை உள்ளிடலாம்" + "ஸ்வைப் தடத்தைக் காட்டு" + "நிகழ்நேர மிதக்கும் மாதிரிக்காட்சி" + "சொற்றொடர் ஸ்வைப்" + "ஸ்பேஸ் விசைக்கு இழுப்பதன் மூலம் சைகைகளுக்கு இடையே இடைவெளிகளை உள்ளிடலாம்" + "ஆங்கிலம் (யூகே)" + "ஆங்கிலம் (யூஎஸ்)" + "ஸ்பானிஷ் (யூஎஸ்)" + "ஹிங்கிலிஷ்" + "செர்பியன் (லத்தீன்)" + "%s (பாரம்பரியமானது)" + "%s (வசதியான)" + "மொழியில்லை" + "எமோஜி" + "சேர்" + "அகற்று" + "சேமி" + "மொழி" + "தளவமைப்பு" + "விசையழுத்த அதிர்வின் காலஅளவு" + "விசையழுத்த ஒலியளவு" + "விசைக்கான நீண்ட அழுத்த நேரம்" + "கைமுறை விசைப்பலகைக்கான ஈமோஜி" + "ஈமோஜி பலகத்தைக் காட்டும் கைமுறை Alt விசை" + "இயல்புநிலை" + %s பயன்பாட்டிற்கு வரவேற்கிறோம்\" + "ஸ்வைப் உள்ளீடு மூலம்" + "தொடங்குக" + %s ஆப்ஸை அமைக்கிறது\" + %s ஆப்ஸை இயக்கவும்\" + "மொழி & உள்ளீட்டு அமைப்புகளில் \"%s\" ஆப்ஸைத் தேர்வு செய்யவும். இதனால், சாதனத்தில் ஆப்ஸை இயக்கலாம்." + "அமைப்புகளில் இயக்கு" + %s க்கு மாறவும்\" + "அடுத்து, உங்கள் செயலில் உள்ள உரை உள்ளீட்டு முறையாக \"%s\" பயன்பாட்டைத் தேர்ந்தெடுக்கவும்." + "உள்ளீட்டு முறைகளை மாற்றவும்" + "வாழ்த்துகள், தயாராகிவிட்டீர்கள்!" + "%s ஆப்ஸ் மூலம் உங்களுக்கு விருப்பமான எல்லா ஆப்ஸ்களிலும் நீங்கள் உள்ளிடலாம்." + "முடிந்தது" + "ஆப்ஸ் ஐகானைக் காட்டு" + "துவக்கியில் ஆப்ஸ் ஐகானைக் காட்டும்" + "துணை அகராதிகள்" + "அகராதி கிடைக்கிறது" + "அமைப்பு" + "நீக்கு" + %s பதிப்பு + "ஷார்ட்கட்:" + "மொழி:" + "வார்த்தையை உள்ளிடவும்" + "விருப்பத்திற்குரிய ஷார்ட்கட்" + "வார்த்தையைத் திருத்து" + "எல்லா மொழிகளுக்கும்" + "மேலும் மொழிகள்…" + "உள்ளீட்டு முறையைத் தேர்வுசெய்க" + "செயல்தவிர்" + "மீண்டும்செய்" + "தொடர்புகளிலிருந்தும், உள்ளிட்ட தரவிலிருந்தும் பரிந்துரைகளை மேம்படுத்த அறியவும்" + "செல்" + "அடுத்து" + "முன்" + "முடிந்தது" + "அனுப்பு" + "தேடு" + "இடைநிறுத்து" + "காத்திரு" + எலிபோர்டு எழுத்துப்பிழை சரிபார்ப்பு + எலிபோர்டு அமைப்புகள் + எலிபோர்டு எழுத்துப்பிழை சரிபார்ப்பு அமைப்புகள் + தொந்தரவு செய்யாதே பயன்முறையில் அதிர்வு + ஈமோசிகளைப் பரிந்துரைக்கவும் + சாதாரண பரிந்துரைகளில் ஈமோசி அகராதியைப் பயன்படுத்தவும் + இன்லைன் ஈமோசி தேடல் + ஒரு வார்த்தைக்கு முன் பெருங்குடல் இருக்கும் போது ஈமோசிகளை மட்டும் பரிந்துரைக்கவும் + இந்த நற்பொருத்தம் செயல்பட ஈமோசி அகராதி தேவை. .dict வடிவத்தில் உள்ள அகராதிகளை %s பதிவிறக்கம் செய்யலாம். + நீண்ட நேரம் அழுத்தும்போது ஈமோசி விளக்கத்தைக் காட்டு + உள்ளீடு + கூடுதல் விசைகள் + இடைநிலைப்பலகை வரலாறு + திருத்தங்கள் + இடைவெளி + பரிந்துரைகள் + ஆய்வு + மற்றவை + பிளவு விசைப்பலகையை இயக்கு (இயற்கை) + பிளவு தூரம் + மொழியை மாற்றவும் + இரண்டையும் மாற்றவும் + மொழி மாறுதல் முக்கிய நடத்தை + ஈமோசி திறவுகோல் + %s மணித்துளி + வரம்பு இல்லை + பயன்பாட்டின் பெயர்களைப் பார்க்கவும் + பரிந்துரைகள் மற்றும் திருத்தங்களுக்கு நிறுவப்பட்ட பயன்பாடுகளின் பெயர்களைப் பயன்படுத்தவும் + எச்சரிக்கை: இந்த அமைப்பை முடக்கினால், கற்ற தரவு அழிக்கப்படும் + தனிப்பட்ட அகராதியில் வார்த்தைகளைச் சேர்க்கவும் + கற்ற சொற்களைச் சேமிக்க சாதனத்தின் தனிப்பட்ட அகராதியைப் பயன்படுத்தவும் + எப்போதும் பரிந்துரைகளைக் காட்டு + பரிந்துரைகளை முடக்குவதற்கான பிற பயன்பாடுகளின் கோரிக்கையை புறக்கணிக்கவும் (சிக்கல்களை ஏற்படுத்தலாம்) + இணையத் திருத்தப் புலங்களுக்கான பரிந்துரைகளை எப்போதும் காட்ட வேண்டாம் + எப்போதும் காட்டும் பரிந்துரைகள் அமைப்பில் உள்ள சிக்கல்களுக்கு இணையத் திருத்தப் புலங்கள் (பெரும்பாலும் உலாவிகளில் காணப்படுகின்றன) மிகவும் பொதுவான காரணமாகும் + மேலும் தானாக திருத்தம் + உள்ளீட்டு புலத்தால் வெளிப்படையாகக் கோரப்படாதபோதும் தானாகச் சரிசெய்தல் + தானாக திருத்தம் செய்யும் நம்பிக்கை + குறுக்குவழிகளைத் தானாகச் சரிசெய்யவும் + இயக்கப்படும் போது குறுக்குவழிகள் தானியங்கு திருத்தம் மூலம் விரிவாக்கப்படலாம் + பேக்ச்பேச் தானாகத் திருத்தத்தை மாற்றுகிறது + எப்போதும் நடுத்தர பரிந்துரையைப் பயன்படுத்தவும் + இடைவெளி அல்லது நிறுத்தற்குறியை அழுத்தினால், நடுப் பரிந்துரை உள்ளிடப்படும் + நிறுத்தற்குறி பரிந்துரைகள் + வேறு பரிந்துரைகள் எதுவும் இல்லாதபோது நிறுத்தற்குறிகளைக் காட்டு + இடைநிலைப்பலகை உள்ளடக்கத்தைப் பரிந்துரைக்கவும் + அண்மைக் காலத்தில் நகலெடுக்கப்பட்ட இடைநிலைப்பலகை உள்ளடக்கத்தை பரிந்துரையாகக் காட்டு + மிதக்கும் முன்னோட்டம் + சைகை செய்யும் போது பரிந்துரைக்கப்பட்ட வார்த்தையைப் பார்க்கவும் + சைகையின் போது முன்னோட்டத்தை நகர்த்தவும் + விரைவான தட்டச்சு குளிர்விப்பு + எப்போதும் உடனடியாகத் தொடங்குங்கள் + சைகை பாதையின் ஆயுட்காலம் + இடைநிலைப்பலகை வரலாற்றை இயக்கு + முடக்கப்பட்டிருந்தால், இடைநிலைப்பலகை விசை ஏதேனும் இருந்தால் இடைநிலைப்பலகை உள்ளடக்கத்தை ஒட்டும் + வரலாற்றைத் தக்கவைக்கும் நேரம் + பின் செய்யப்பட்ட பொருட்களை மேலே காட்டு + ச்வைப் செய்வதை நீக்கு + ஒரே நேரத்தில் உரையின் பெரிய பகுதிகளைத் தேர்ந்தெடுத்து அகற்ற, நீக்கு விசையிலிருந்து ச்வைப் செய்யவும் + காப்பு மற்றும் மீட்டமை + கோப்பிலிருந்து சேமிக்கவும் அல்லது ஏற்றவும். எச்சரிக்கை: மீட்டெடுப்பு ஏற்கனவே உள்ள தரவை மேலெழுதும் + காப்புப் பிழை: %s + காப்புப்பிரதியை மீட்டெடுப்பதில் பிழை: %s + காப்புப்பிரதி + மீட்டமை + காப்புப்பிரதி மீட்டெடுக்கப்பட்டது + நேர முத்திரை விசைக்கான வடிவம் + பன்மொழி தட்டச்சு + அகராதிகள் கொண்ட மொழிகள் + சைகை தட்டச்சு நூலகத்தை ஏற்றவும் + சைகை தட்டச்சு செய்வதை இயக்க, சொந்த நூலகத்தை வழங்கவும் + \'%s\'க்கான நூலகம் உங்களுக்குத் தேவைப்படும். சைகை தட்டச்சு செய்யும் போது பொருந்தாத நூலகங்கள் செயலிழக்கக்கூடும். \n\nஎச்சரிக்கை: வெளிப்புறக் குறியீட்டை ஏற்றுவது பாதுகாப்பு அபாயமாக இருக்கலாம். நீங்கள் நம்பும் மூலத்திலிருந்து மட்டுமே நூலகத்தைப் பயன்படுத்தவும். + அறியப்படாத நூலகக் கோப்பு. நம்பகமான மூலத்திலிருந்து அதைப் பெற்றுள்ளீர்கள், அது \'%s\'க்கானது என்பதில் உறுதியாக உள்ளீர்களா? + நூலகத்தை ஏற்றவும் + நூலகத்தை நீக்கு + நிறுத்தற்குறிக்குப் பிறகு ஆட்டோச்பேச் + புதிய சொல்லைத் தட்டச்சு செய்யும் போது நிறுத்தற்குறிக்குப் பிறகு தானாகவே இடத்தைச் செருகவும் + பரிந்துரையைத் தேர்ந்தெடுத்த பிறகு ஆட்டோச்பேச் + ஒரு வார்த்தையை சைகை தட்டச்சு செய்வதற்கு முன் ஆட்டோச்பேச் + சைகையில் ஒரு வார்த்தையைத் தட்டச்சு செய்த பிறகு ஆட்டோச்பேச் + சிப்டை அழுத்தும்போது ஆட்டோச்பேச் இல்லை + சிப்ட் நிலுவையில் உள்ள ஆட்டோச்பேசை நீக்குகிறது + பாப்அப்பில் டயக்ரிட்டிக்சுடன் அதிக எழுத்துக்களைக் காட்டு + விசைப்பலகை மொழிகளில் வரையறுக்கப்பட்ட மாறுபாடுகளைக் காட்டு + மிகவும் பொதுவான மாறுபாடுகளைச் சேர்க்கவும் (இயல்புநிலை) + பொதுவான மாறுபாடுகளைச் சேர்க்கவும் + கிடைக்கக்கூடிய அனைத்து வகைகளையும் சேர்க்கவும் + முகவரி கண்டறிதல் + URLகள் மற்றும் ஒரே வார்த்தையாகக் கண்டறிய முயற்சிக்கவும் + கட்டாய மறைநிலை பயன்முறை + புதிய சொற்களைக் கற்றுக்கொள்வதை முடக்கு + மேலும் விசைகள் + மொழிகள் & தளவமைப்புகள் + எண் வரிசை + எப்போதும் எண் வரிசையைக் காட்டு + எண் வரிசையை உள்ளூர்மயமாக்கு + லத்தீன் எண்களை விட உள்ளூர்மயமாக்கலை விரும்புங்கள் + எண் வரிசையில் குறிப்புகளைக் காட்டு + ஒவ்வொரு பயன்பாட்டிற்கும் மொழியை நினைவில் கொள்ளுங்கள் + முக்கிய குறிப்புகளைக் காட்டு + நீண்ட அழுத்த குறிப்புகளைக் காட்டு + மேல்தோன்றல் விசை வரிசை மற்றும் குறிப்புகள் சான்று + குறிப்பு மூலத்தைத் தேர்ந்தெடுக்கவும் + மேல்தோன்றல் விசை வரிசையைத் தேர்ந்தெடுக்கவும் + TLD மேல்தோன்றல் விசைகளைக் காட்டு + URLகள் மற்றும் மின்னஞ்சல் முகவரிகளைத் தட்டச்சு செய்யும் போது, பீரியட் கீ பாப்அப்களை மேல் நிலை டொமைன்களுடன் மாற்றவும் + எண் வரிசை + மொழி (முன்னுரிமை) + மனையமைவு + குறியிடுகள் + கருவிப்பட்டி முறை + கருவிப்பட்டி விசைகள் மற்றும் பரிந்துரைகள் + கருவிப்பட்டி விசைகள் மட்டுமே + பரிந்துரைகள் மட்டுமே + மறைக்கப்பட்டது + இடைநிலைப்பலகை மற்றும் ஈமோசி கருவிப்பட்டிகளையும் மறைக்கவும் + கருவிப்பட்டி விசைகளைத் தேர்ந்தெடுக்கவும் + இடைநிலைப் பலகை + கிளிப்போர்டை அழிக்கவும் + குரல் உள்ளீடு + வார்த்தையைத் தேர்ந்தெடுக்கவும் + ஒரு கை முறை + பிளவு விசைப்பலகை + முழு இடது + முழு உரிமை + பக்க துவக்கம் + பக்கம் முடிவு + இடது + வலது + மேலே + கீழே + சொல் விட்டு விட்டது + சொல் சரி + பக்கம் மேலே + பக்கம் கீழே + இடைநிலைப்பலகை வரலாற்றை மூடு + ஈமோசி + இடைநிலைப்பலகை கருவிப்பட்டி விசைகளைத் தேர்ந்தெடுக்கவும் + பின் செய்யப்பட்ட கருவிப்பட்டி விசைகளைத் தேர்ந்தெடுக்கவும் + நீண்ட அழுத்தத்தில் கருவிப்பட்டி விசையை பின் செய்யவும் + இது பின் செய்யப்படாத கருவிப்பட்டி விசைகளுக்கான பிற நீண்ட அழுத்த செயல்களை முடக்கும் + செயல்பாட்டு குறிப்புகளைக் காட்டு + விசையை நீண்ட நேரம் அழுத்துவது கூடுதல் செயல்பாட்டைத் தூண்டினால், குறிப்புகளைக் காட்டு + தேவையற்ற பாப்அப்களை அகற்று + அடிப்படை அமைப்பில் ஏற்கனவே இருக்கும் மேல்தோன்றல் விசைகளை அடக்கவும் + ச்பேச் கீ மூலம் உள்ளீட்டு முறையை மாற்றவும் + ச்பேச் விசையை நீண்ட நேரம் அழுத்தினால், உள்ளீட்டு முறை தேர்வு மெனுவைத் தூண்டும் + எண்பாடிற்கான சின்னங்கள் விசையை நீண்ட நேரம் அழுத்தவும் + குறுகிய முக்கிய இடைவெளிகள் + விசைப்பலகை உயர அளவு + கீழே திணிப்பு அளவு + பக்க திணிப்பு அளவுகோல் + விசைப்பலகை எழுத்துரு அளவு + ஈமோசி காட்சி எழுத்துரு அளவு + எழுத்துரு அளவுடன் ஈமோசி விசை அளவை அளவிடவும் + இயல்பு ஈமோசி தோல் தொனி + நடுநிலை + ச்பேச் பாரில் தனிப்பயன் உரை + கோப்பிலிருந்து தனிப்பயன் எழுத்துருவை அமைக்கவும் + மான்சி + காய்டாக் + டக்பானி + ஆங்கிலம் + தர்க்வா (உர்கி) + மாரி (கிழக்கு) + %1$s (%2$s) + %s (நீட்டிக்கப்பட்டது) + %s (எழுத்துக்கள்) + %s (காலை) + %s (பைசாகி) + %s (கிப்ரோ) + %s (ஒலிப்பு) + %s (செபியோல்சிக் 390) + %s (செபியோல்சிக் இறுதி) + %s (மாணவர்) + ஏற்றவும் + தனிப்பயன் அமைப்பைச் சேர்க்கவும் + இணக்கமான வடிவத்தில் கோப்பைத் தேர்ந்தெடுக்கவும். வடிவங்களைப் பற்றிய செய்தி %s இல் உள்ளது. + கோப்பை ஏற்றவும் + கோப்பில் சேமிக்கவும் + இடைநிலைப்பலகைக்கு நகலெடுக்கவும் + கோப்பைப் படிக்க முடியவில்லை + %s தனிப்பயன் தளவமைப்பை உண்மையில் நீக்கவா? + எச்சரிக்கை: தளவமைப்பு தற்போது பயன்பாட்டில் உள்ளது + தளவமைப்பு பிழை: %s + மூல தளவமைப்பைத் திருத்த தட்டவும் + இரண்டாம் நிலை தளவமைப்புகள் + செயல்பாட்டு விசைகள் + செயல்பாட்டு விசைகள் (பெரிய திரை) + செயல்பாட்டு விசைகள் (சின்னங்கள்) + செயல்பாட்டு விசைகள் (மேலும் சின்னங்கள்) + குறியிடுகள் + சின்னங்கள் (அரபு) + மேலும் சின்னங்கள் + தொலைபேசி + தொலைபேசி சின்னங்கள் + எண்கள் + எண்பலகை + எண்பலகை (நிலப்பரப்பு) + எண் வரிசை + எண் வரிசை (அடிப்படை) + ஈமோசி கீழ் வரிசை + செயல் விசையுடன் ஈமோசியின் கீழ் வரிசை + இடைநிலைப்பலகை கீழ் வரிசை + செயல் விசையுடன் இடைநிலைப்பலகை கீழ் வரிசை + பின்னணி படத்தை அமைக்கவும் + பின்னணி படத்தை அமைக்கவும் (இயற்கை) + அமைக்கப்படவில்லை என்றால், உருவப்படம் பயன்படுத்தப்படும் + நாணயங்களைத் தனிப்பயனாக்குங்கள் + முதன்மையான மற்றும் 6 இரண்டாம் நிலை நாணயச் சின்னங்களை இடத்துடன் பிரிக்கவும் + பிறகு முதன்மை விசைப்பலகைக்கு மாறவும்… + ஈமோசி பார்வையில் ஈமோசியைத் தேர்ந்தெடுக்கிறது + இடைநிலைப்பலகை வரலாறு உள்ளீட்டைத் தேர்ந்தெடுக்கிறது + குறியீடுகள் பார்வையில் மற்ற விசைகளுக்குப் பிறகு என்டர் அல்லது ச்பேசை அழுத்தவும் + எண்பேடில் உள்ள மற்ற விசைகளுக்குப் பிறகு என்டர் அல்லது ச்பேசை அழுத்தவும் + பகல் அல்லது இரவு பயன்முறைக்கு படத்தை அமைக்கவா? + நாள் + இரவு + ஈமோசி பதிப்பை மேலெழுதவும் + விசைப்பலகையை உள்ளமைக்கவும் + அகராதிகள் + உள் முக்கிய அகராதி + கோப்பிலிருந்து அகராதியைச் சேர்க்கவும் + மொழியைத் தேர்ந்தெடுக்கவும் + \"%1$s\" என்ற பயனர் சேர்த்த அகராதியை உண்மையில் மாற்றவா? \n\nதற்போதைய அகராதி: \n%2$s \n\nபுதிய அகராதி: \n%3$s + அகராதியை மாற்றவும் + பயனர் சேர்த்த அகராதி \"%s\" ஐ உண்மையில் அகற்றவா? + அகராதி இல்லாமல், நீங்கள் முன்பு உள்ளிட்ட உரைக்கான பரிந்துரைகளை மட்டுமே பெறுவீர்கள்.<br> \nநீங்கள் அகராதிகளை %1$s பதிவிறக்கம் செய்யலாம் அல்லது \"%2$s\"க்கான அகராதியை நேரடியாக %3$s பதிவிறக்க முடியுமா எனச் சரிபார்க்கலாம். + மீண்டும் காட்டாதே + சேர்க்க அகராதியைத் தேர்ந்தெடுக்கவும். .dict வடிவத்தில் உள்ள அகராதிகளை %s பதிவிறக்கம் செய்யலாம். + இங்கே + %s (சோதனை) + பிழை: தேர்ந்தெடுக்கப்பட்ட கோப்பு சரியான அகராதி கோப்பு அல்ல + பிழை: இந்த விசைப்பலகையுடன் ச்கிரிப்ட் இணக்கமாக இல்லை + அகராதி கோப்பை ஏற்றுவதில் பிழை + எடை: + இந்த சொல் ஏற்கனவே %s பயனர் அகராதியில் உள்ளது. தயவுசெய்து இன்னொன்றைத் தட்டச்சு செய்யவும். + ஒரு வார்த்தையைச் சேர்க்கவும் + சூல் தண்டு + படவுரு பாணி + வட்டமானது + நிறங்கள் + நிறங்கள் (இரவு) + முக்கிய எல்லைகள் + தானியங்கு பகல்/இரவு பயன்முறை + தோற்றம் கணினி அமைப்புகளைப் பின்பற்றும் + வண்ண வழிசெலுத்தல் பட்டி + ஒளி + ஓலோ ஒயிட் + இருள் + இருண்டது + கருப்பு + மாறும் நிறங்கள் + நீல சாம்பல் + பழுப்பு + சாக்லேட் + மேகமூட்டம் + காடு + இண்டிகோ + பெருங்கடல் + இளஞ்சிவப்பு + மணல் + வயலட் + பயனர் வரையறுக்கப்பட்ட + தானாக நிறத்தைத் தேர்ந்தெடுக்கவும் + முக்கிய வண்ணங்களை மட்டும் காட்டு + மேலும் வண்ணங்களைக் காட்டு + அனைத்து வண்ணங்களையும் காட்டு + இந்த அமைப்பு உள்நாட்டில் பயன்படுத்தப்படும் அனைத்து வண்ணங்களையும் வெளிப்படுத்துகிறது. வண்ணங்களின் பட்டியல் எந்த நேரத்திலும் மாறலாம். இயல்புநிலை நிறம் சீரற்றது, மேலும் பெயர்கள் மொழிபெயர்க்கப்படாது. + விசைப்பலகை பின்னணி + முக்கிய உரை + முக்கிய குறிப்பு உரை + பரிந்துரை துண்டு உரை + முக்கிய பின்னணி + செயல்பாட்டு விசை பின்னணி + ச்பேச் பார் பின்னணி + ச்பேச் பார் உரை + உச்சரிப்பு + சைகை உள்ளீடு + நீங்கள் %s இல் வண்ணங்களைக் கண்டறிந்து பகிரலாம். + நீங்கள் %s இல் தளவமைப்புகளைக் கண்டறிந்து பகிரலாம். + விவாதப் பகுதி + பற்றி + பதிப்பு + GitHub இல் காண்க + விக்கிக்குச் செல்லவும் + விக்கியை எந்த அறிவிலிமையம் பயனரும் மேம்படுத்தலாம்! + பதிவை சேமிக்கவும் + திறந்த மூல உரிமம் + குனு பொது பொதுமக்கள் உரிமம் v3.0 + மூடு + அமைப்புகளைத் திறக்க மொழியைத் தட்டவும் + தோற்றம் + கருவிப்பட்டி + மறைக்கப்பட்ட அம்சங்களின் விளக்கம் + கவனிக்கப்படாமல் போகக்கூடிய அம்சங்களைக் காட்டு + சாதனம் பாதுகாக்கப்பட்ட சேமிப்பு + ► பின் செய்யப்பட்ட கருவிப்பட்டி விசைகளை நீண்ட நேரம் அழுத்துவதன் மூலம் கூடுதல் செயல்பாடு கிடைக்கும்: <br> \n• இடைநிலைப்பலகை &#65515; <br> ஒட்டவும் \n• இடது/வலது நகர்த்து &#65515; சொல் இடது/வலது <br> \n• மேல்/கீழே நகர்த்து &#65515; பக்கம் மேலே/கீழே <br> \n• சொல் இடது/வலது &#65515; வரி தொடக்கம்/முடிவு <br> \n• பக்கம் மேல்/கீழ் &#65515; பக்கம் தொடக்கம்/முடிவு <br> \n• நகல் &#65515; <br> வெட்டு \n• வார்த்தையைத் தேர்ந்தெடு &#8596; <br> அனைத்தையும் தேர்ந்தெடுக்கவும் \n• செயல்தவிர் &#8596; <br> <br> மீண்டும் வெற்றி \n► பரிந்துரைப் பட்டை கருவிப்பட்டியில் நீண்ட நேரம் அழுத்தும் விசைகள், அவற்றைப் பரிந்துரைப் பட்டையுடன் இணைக்கும். <br> <br> \n► இடைநிலைப்பலகை பார்வை, ஈமோசி காட்சி, ஒரு கை முறை, அமைப்புகள் அல்லது மொழி மாறுவதற்கு கமா-விசையை நீண்ட நேரம் அழுத்தவும்: <br> \n• நீங்கள் தொடர்புடைய விசையை இயக்கியிருந்தால், ஈமோசி பார்வை மற்றும் மொழி மாறுதல் மறைந்துவிடும்; <br> \n• சில தளவமைப்புகளுக்கு இது கமா-விசை அல்ல, ஆனால் அதே நிலையில் உள்ள விசை (எ.கா. இது டுவோராக் தளவமைப்பிற்கான \\\'q\\\'). <br> <br> \n► மறைநிலை பயன்முறை இயக்கப்பட்டால், எந்த வார்த்தைகளும் கற்றுக்கொள்ளப்படாது, மேலும் சமீபத்தியவற்றில் எந்த ஈமோசிகளும் சேர்க்கப்படாது. <br> <br> \n► கருவிப்பட்டியை அணுக மறைநிலை ஐகானை அழுத்தவும். <br> <br> \n► ச்லைடிங் விசை உள்ளீடு: ஒரு பெரிய எழுத்து விசையைத் தட்டச்சு செய்ய சிப்டில் இருந்து மற்றொரு விசைக்கு ச்வைப் செய்யவும்: <br> \n• இது \\\'?123\\\' விசைக்கு, குறியீடுகள் விசைப்பலகையில் இருந்து ஒற்றைக் குறியீட்டைத் தட்டச்சு செய்வதற்கும், தொடர்புடைய விசைகளுக்கும் வேலை செய்கிறது. <br> <br> \n► சிப்ட் அல்லது குறியீட்டு விசையை பிடித்து, ஒன்று அல்லது அதற்கு மேற்பட்ட விசைகளை அழுத்தவும், பின்னர் முந்தைய விசைப்பலகைக்கு திரும்ப சிப்ட் அல்லது குறியீட்டு விசையை வெளியிடவும். <br> <br> \n► மேலும் பரிந்துரைகளைக் காட்ட, பரிந்துரைப் பட்டியில் உள்ள பரிந்துரையை நீண்ட நேரம் அழுத்தவும், மேலும் இந்தப் பரிந்துரையை அகற்ற நீக்கு பொத்தானை அழுத்தவும். <br> <br> \n► மேலும் பரிந்துரைகளைத் திறக்க ஒரு பரிந்துரையிலிருந்து மேல்நோக்கி ச்வைப் செய்யவும், அதைத் தேர்ந்தெடுப்பதற்கான பரிந்துரையை வெளியிடவும். <br> <br> \n► இடைநிலைப்பலகை வரலாற்றில் உள்ள பதிவை பின் செய்ய நீண்ட நேரம் அழுத்தவும் (அன்பின் செய்யும் வரை அதை கிளிப்போர்டில் வைத்திருங்கள்). <br> <br> \n► ஒரு உள்ளீட்டை அகற்ற இடைநிலைப்பலகை காட்சியில் இடதுபுறமாக ச்வைப் செய்யவும் (அது பின் செய்யப்பட்டதைத் தவிர) <br> <br> \n► உரையைத் தேர்ந்தெடுத்து, பெரிய எழுத்து, சிற்றெழுத்து மற்றும் பெரிய எழுத்துக்களுக்கு இடையில் மாறுவதற்கு உயர்த்து ஐ அழுத்தவும். <br> <br> \n► கோப்பு எக்ச்ப்ளோரரில் அவற்றைத் திறப்பதன் மூலம் அகராதிகளைச் சேர்க்கலாம்: <br> \n• இது <i>content-uris</i> உடன் மட்டுமே வேலை செய்யும், <i>file-uris</i> உடன் அல்ல, அதாவது சில கோப்பு எக்ச்ப்ளோரர்களுடன் இது வேலை செய்யாமல் போகலாம். <br> <br> \n► ரூட் அணுகலுடன் கைமுறையாக காப்புப் பிரதி எடுக்கும் பயனர்களுக்கு: <br> \n• ஆண்ட்ராய்டு 7 இல் தொடங்கி, பகிரப்பட்ட விருப்பத்தேர்வுகள் கோப்பு இயல்புநிலை இடத்தில் இல்லை, ஏனெனில் பயன்பாடு %s ஐப் பயன்படுத்துகிறது. சாதனம் திறக்கப்படுவதற்கு முன்பு அமைப்புகளைப் படிக்க இது தேவை, எ.கா. துவக்கத்தில்; <br> \n• கோப்பு /data/user_de/0/package_id/shared_prefs/ இல் உள்ளது, இருப்பினும் இது சாதனம் மற்றும் ஆண்ட்ராய்டு பதிப்பைப் பொறுத்தது. <br> <br> \n<i><b>பிழைத்திருத்த முறை / பிழைத்திருத்த APK</b></i> <br> <br> \n► மூல அகராதியைக் காட்ட, பரிந்துரையை நீண்ட நேரம் அழுத்தவும். <br> <br> \n► பிழைத்திருத்த APK ஐப் பயன்படுத்தும் போது, மேம்பட்ட விருப்பத்தேர்வுகளுக்குள் பிழைத்திருத்த அமைப்புகளைக் கண்டறியலாம், இருப்பினும் பதிவில் அகராதிகளை இடுவதைத் தவிர பயன் குறைவாகவே உள்ளது. <br> \n• வெளியீட்டு APKக்கு, <i>About</i> இல் உள்ள பதிப்பை நீங்கள் பல முறை தட்ட வேண்டும், பின்னர் <i>மேம்பட்ட விருப்பத்தேர்வுகளில்</i> பிழைத்திருத்த அமைப்புகளைக் காணலாம். <br> \n• <i>பரிந்துரைத் தகவலைக் காண்பி</i>ஐ இயக்கும் போது, சில உள் மதிப்பெண் மற்றும் மூல அகராதியைக் காட்டும் சில சிறிய எண்களை பரிந்துரைகளுக்கு மேல் இருக்கும். <br> <br> \n► பயன்பாடு செயலிழந்தால், நீங்கள் அமைப்புகளைத் திறக்கும்போது செயலிழப்பு பதிவுகள் வேண்டுமா என்று கேட்கப்படும். <br> <br> \n► பன்மொழி தட்டச்சு பயன்படுத்தும் போது, ச்பேச் பார் தற்போது பயன்படுத்தப்படும் மொழியைத் தீர்மானிக்கப் பயன்படுத்தப்படும் நம்பிக்கை மதிப்பைக் காட்டும். <br> <br> \n► பரிந்துரைகள் சில உள் மதிப்பெண் மற்றும் மூல அகராதியைக் காட்டும் (முடக்கப்படலாம்) சில சிறிய எண்களைக் கொண்டிருக்கும். + உள்ளிடவும் + தாவல் + நீக்கு + உயர்த்து + சிப்ட் (மாற்றப்பட்டது) + தொப்பி பூட்டு + இடம் (எண் தளவமைப்பு) + ஒரு கை பயன்முறையை முடிக்கவும் + ஒரு கை பயன்முறையின் அளவை மாற்றவும் + ஒரு கை பயன்முறை பக்கத்தை மாற்றவும் + குரல் உள்ளீடு முடக்கப்பட்டது + கருவிப்பட்டியைக் காட்டு / மறை + சீரோ-அகல இணைப்பான் + சீரோ-அகலம் அல்லாத இணைப்பான் + பின் + கிடைமட்ட ச்பேச்பார் ச்வைப் சைகை + செங்குத்து ச்பேச்பார் ச்வைப் சைகை + எதுவுமில்லை + கர்சரை நகர்த்தவும் + எண்பேடை நிலைமாற்று + விசைப்பலகையை மறை + மாறி கருவிப்பட்டி திசை + வலமிருந்து இடமாக விசைப்பலகை துணை வகை தேர்ந்தெடுக்கப்படும் போது தலைகீழ் திசை + மொழி ச்வைப் தூரத்தை மாற்றவும் + கருவிப்பட்டி முக்கிய குறியீடுகளைத் தனிப்பயனாக்குங்கள் + அனைத்து தனிப்பயனாக்கப்பட்ட முக்கிய குறியீடுகளையும் அழிக்கவா? + முக்கிய குறியீடு + குறியீட்டை நீண்ட நேரம் அழுத்தவும் + ஆட்டோ சோ கருவிப்பட்டி + உள்ளீடு தொடங்கினால் அல்லது உரை தேர்ந்தெடுக்கப்பட்டால் கருவிப்பட்டியைக் காட்டு + தானாக மறை கருவிப்பட்டி + பரிந்துரைகள் கிடைக்கும்போது கருவிப்பட்டியை மறைக்கவும் + உள்ளடக்கம் நகலெடுக்கப்பட்டது + ஐகான்களைத் தனிப்பயனாக்கு + அனைத்து தனிப்பயனாக்கப்பட்ட ஐகான்களையும் உண்மையில் மீட்டமைக்கவா? + உண்மையில் %s ஐ நீக்கவா? + தவறான பெயர் + தனிப்பயன் துணை வகை + நிலப்பரப்பு diff --git a/app/src/main/res/values-te/bools.xml b/app/src/main/res/values-te/bools.xml index 130e52eab7..d88a136dae 100644 --- a/app/src/main/res/values-te/bools.xml +++ b/app/src/main/res/values-te/bools.xml @@ -1,21 +1,7 @@ - - - "వెళ్లు" - "తర్వాత" - "మునుపటి" - "పూర్తి" - "పంపు" - "వెతుకు" - "పాజ్ చేయి" - "వేచి ఉ." - diff --git a/app/src/main/res/values-te/strings-config-important-notice.xml b/app/src/main/res/values-te/strings-config-important-notice.xml deleted file mode 100644 index 92ea8838b7..0000000000 --- a/app/src/main/res/values-te/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "సూచనలను మెరుగుపరచడానికి మీ కమ్యూనికేషన్‌లు మరియు టైప్ చేయబడిన డేటా నుండి తెలుసుకోండి" - diff --git a/app/src/main/res/values-te/strings-emoji-descriptions.xml b/app/src/main/res/values-te/strings-emoji-descriptions.xml deleted file mode 100644 index 96c7ef36e7..0000000000 --- a/app/src/main/res/values-te/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "కాపీరైట్ గుర్తు" - "రిజిష్టర్డ్ గుర్తు" - "డబుల్ ఆశ్చర్యార్థక గుర్తు" - "ఆశ్చర్యార్థక ప్రశ్నార్థక గుర్తు" - "వ్యాపారచిహ్నం గుర్తు" - "సమాచార మూలం" - "ఎడమ కుడి రెండువైపులా చూపే బాణం" - "ఎగువ దిగువ రెండువైపులా చూపే బాణం" - "వాయువ్య దిశవైపు చూపే బాణం" - "ఈశాన్య దిశవైపు చూపే బాణం" - "ఆగ్నేయ దిశవైపు చూపే బాణం" - "నైరుతి దిశవైపు చూపే బాణం" - "హుక్ గల ఎడమవైపుకి చూపే బాణం" - "హుక్ గల కుడివైపుకి చూపే బాణం" - "గడియారం" - "అవర్ గ్లాస్" - - - - - "నలుపు రంగులో కుడివైపుకి చూపే డబుల్ త్రిభుజం" - "నలుపు రంగులో ఎడమవైపుకి చూపే డబుల్ త్రిభుజం" - "నలుపు రంగులో పైకి చూపే డబుల్ త్రిభుజం" - "నలుపు రంగులో క్రిందికి చూపే డబుల్ త్రిభుజం" - - - - - - - "అలారం గడియారం" - - - - - "ఇసుకను ప్రవహింపచేసే అవర్ గ్లాస్" - - - - - - - "వలయంలో ఉన్న లాటిన్ క్యాపిటల్ అక్షరం m" - "నలుపు రంగు చిన్న చతురస్రం" - "తెలుపు రంగు చిన్న చతురస్రం" - "నలుపు రంగులో కుడివైపుకి చూపే త్రిభుజం" - "నలుపు రంగులో ఎడమవైపుకి చూపే త్రిభుజం" - "తెలుపు రంగు మధ్యస్థాయి చతురస్రం" - "నలుపు రంగు మధ్యస్థాయి చతురస్రం" - "తెలుపు రంగు మధ్యస్థాయి చిన్న చతురస్రం" - "నలుపు రంగు మధ్యస్థాయి చిన్న చతురస్రం" - "నలుపు రంగు సూర్యకిరణాలు" - "మేఘం" - - - - - - - "నలుపు రంగు టెలిఫోన్" - "ఎంచుకున్న బ్యాలెట్ పెట్టె" - "వర్షపు చినుకులు పడుతున్న గొడుగు" - "వేడి పానీయాలు" - - - "తెలుపు రంగులో చూపుడు వేలుని పైకి చూపుతున్నట్లు" - - - - - - - - - - - - - - - - - - - "తెలుపు రంగులో నవ్వుతున్న ముఖం" - "మేషం" - "వృషభం" - "మిథునం" - "కర్కాటకం" - "సింహం" - "కన్య" - "తులం" - "వృశ్చికం" - "ధనస్సు" - "మకరం" - "కుంభం" - "మీనం" - "నలుపు బ్లాక్ స్పేడ్ సూట్" - "నలుపు క్లబ్ సూట్" - "నలుపు హార్ట్ సూట్" - "నలుపు డైమండ్ సూట్" - "వేడి ఊటలు" - "నలుపు రంగు సార్వత్రిక పునర్వినియోగ చిహ్నం" - "చక్రాల కుర్చీ చిహ్నం" - - - "లంగరు" - - - - - - - - - - - - - "హెచ్చరిక చిహ్నం" - "అధిక వోల్టేజీ చిహ్నం" - "మధ్యలో తెలుపు రంగు వలయం" - "మధ్యలో నలుపు రంగు వలయం" - - - - - "సాకర్ బాల్" - "బేస్‌బాల్" - "మంచు లేకుండా మంచుమనిషి" - "మేఘం వెనుక దాగిన సూర్యుడు" - - - "అఫ్యూకస్" - - - - - - - "ప్రవేశం లేదు" - - - "చర్చి" - - - - - "ఫౌంటైన్" - "రంధ్రంలో ఉంచిన జెండా" - - - "తెరచాప గల పడవ" - - - - - - - "గుడారం" - "ఇంధన పంపు" - "నలుపు రంగు కత్తెరలు" - "తెలుపు రంగు పెద్ద పరిమాణ ఎంపిక చేసుకునే గుర్తు" - "విమానం" - "ఎన్వలప్" - "పైకి ఎత్తి చూపుతున్న పిడికిలి" - "పైకి ఎత్తి చూపుతున్న చెయ్యి" - "విజయ సంకేతాన్ని చూపుతున్న చెయ్యి" - - - "పెన్సిల్" - "నలుపు రంగు పాళీ" - "పెద్ద పరిమాణంలో ఎంపిక చేసుకునే గుర్తు" - "పెద్ద పరిమాణంలో గుణకారం గుర్తు x" - - - - - "మెరుపులు" - "ఎనిమిది ఆకులు గల నక్షత్రం గుర్తు" - "ఎనిమిది వైపులకు చూపే నలుపు రంగు నక్షత్రం" - "స్నోఫ్లేక్" - "తళతళమని మెరిసే మెరుపు" - "క్రాస్ గుర్తు" - "నెగిటివ్ చతురస్రంలో ఉన్న క్రాస్ గుర్తు" - "నలుపు రంగు ప్రశ్నార్థక గుర్తు ఆర్నమెంట్" - "తెలుపు రంగు ప్రశ్నార్థక గుర్తు ఆర్నమెంట్" - "తెలుపు రంగు ఆశ్చర్యార్థక గుర్తు ఆర్నమెంట్" - "పెద్ద పరిమాణ ఆశ్చర్యార్థక చిహ్నం" - - - "ముదురు నలుపు రంగులో ఉన్న హృదయాకారం" - "పెద్ద పరిమాణ కూడిక గుర్తు" - "పెద్ద పరిమాణ తీసివేత గుర్తు" - "పెద్ద పరిమాణ భాగహారం గుర్తు" - "నలుపు రంగులో కుడివైపుకి చూపే బాణం" - "మెలితిరిగి ఉన్న వంపు" - "రెండుసార్లు మెలితిరిగి ఉన్న వంపు" - "కుడివైపుకి చూపుతూ ఆపై ఎగువకి వంగిన బాణం" - "కుడివైపు చూపుతూ ఆపై దిగువకి వంగిన బాణం" - "ఎడమవైపుకి చూపే నలుపు రంగు బాణం" - "ఎగువకి చూపే నలుపు రంగు బాణం" - "దిగువకి చూపే నలుపు రంగు బాణం" - "నలుపు రంగు పెద్ద పరిమాణ చతురస్రం" - "తెలుపు రంగు పెద్ద పరిమాణ చతురస్రం" - "తెలుపు రంగు మధ్యస్థ పరిమాణ నక్షత్రం" - "అత్యంత పెద్ద పరిమాణ వలయం" - "తరంగ రూపంలో ఉండే డాష్" - "పరివర్తన గుర్తు భాగం" - "వృత్తంలో ఉన్న అభినందన ఇడియోగ్రాఫ్" - "వృత్తంలో ఉన్న రహస్యం ఇడియోగ్రాఫ్" - "మహ్‌జాంగ్ టైల్ ఎరుపు రంగు డ్రాగన్" - "పేకాటలోని నలుపు రంగు జోకర్" - "రక్తం రకం A" - "రక్తం రకం B" - "రక్తం రకం O" - "పార్కింగ్ లాట్" - "రక్తం రకం AB" - "చతురస్రంలో ఉన్న CL" - "చతురస్రంలో ఉన్న కూల్" - "చతురస్రంలో ఉన్న ఫ్రీ" - "చతురస్రంలో ఉన్న ID" - "చతురస్రంలో ఉన్న న్యూ" - "చతురస్రంలో ఉన్న N G" - "చతురస్రంలో ఉన్న ఓకే" - "చతురస్రంలో ఉన్న SOS" - "ఆశ్చర్యార్థక గుర్తుతో చతురస్రంలో ఉన్న అప్" - "చతురస్రంలో ఉన్న వర్సెస్" - "చతురస్రంలో ఉన్న కటకానా హియర్" - "చతురస్రంలో ఉన్న కటకానా సర్వీస్" - "చతురస్రంలో ఉన్న ఛార్జ్-ఫ్రీ ఇడియోగ్రాఫ్" - "చతురస్రంలో ఉన్న రిజర్వ్ చేసిన సీటు ఇడియోగ్రాఫ్" - "చతురస్రంలో ఉన్న నిషేధ ఇడియోగ్రాఫ్" - "చతురస్రంలో ఉన్న ఖాళీ ఇడియోగ్రాఫ్" - "చతురస్రంలో ఉన్న ఆమోద ఇడియోగ్రాఫ్" - "చతురస్రంలో ఉన్న పూర్తి స్వాధీనత ఇడియోగ్రాఫ్" - "చతురస్రంలో ఉన్న చెల్లింపు ఇడియోగ్రాఫ్" - "చతురస్రంలో ఉన్న నెలవారీ ఇడియోగ్రాఫ్" - "చతురస్రంలో ఉన్న యాప్ ఇడియోగ్రాఫ్" - "చతురస్రంలో ఉన్న తగ్గింపు ఇడియోగ్రాఫ్" - "చతురస్రంలో ఉన్న వ్యాపారంలో ఇడియోగ్రాఫ్" - "వృత్తంలో ఉన్న ప్రయోజన ఇడియోగ్రాఫ్" - "వృత్తంలో ఉన్న ఆమోద ఇడియోగ్రాఫ్" - "తుఫాను" - "పొగమంచు పూరితం" - "మూసివేయబడిన గొడుగు" - "నక్షత్రాలతో కూడిన రాత్రి" - "పర్వతాల నడుమ సూర్యోదయం" - "సూర్యోదయం" - "సంధ్యా సమయంలో నగర ఆకాశహర్మ్యం" - "భవనాల నడుమ సూర్యాస్తమయం" - "ఇంద్రధనస్సు" - "రాత్రివేళలో కనబడే వంతెన" - "నీటి అల" - "అగ్నిపర్వతం" - "పాలపుంత" - "భూమిపై కనిపించే యూరప్-ఆఫ్రికా" - "భూమిపై కనిపించే అమెరికాలు" - "భూమిపై కనిపించే ఆసియా-ఆస్ట్రేలియా" - "ధృవరేఖలు గల భూమి" - "అమావాస్య చంద్రుని గుర్తు" - "నెల వంక వృద్ధి చెందుతున్న గుర్తు" - "మొదటి పావు భాగంలో ఉండే చంద్రుని గుర్తు" - "బోర్లించిన గిన్నె ఆకారంలో ఉండే చంద్రుని ఆకృతి వృద్ధి చెందుతున్న గుర్తు" - "పౌర్ణమి గుర్తు" - "బోర్లించిన గిన్నె ఆకారంలో ఉండే చంద్రుని ఆకృతి క్షీణిస్తున్న గుర్తు" - "చివరి పావు భాగంలో ఉండే చంద్రుని గుర్తు" - "నెల వంక క్షీణిస్తున్న గుర్తు" - "నెల వంక" - "ముఖం గల అమావాస్య చంద్రుడు" - "ముఖం గల మొదటి పావు భాగంలో ఉండే చంద్రుడు" - "ముఖం గల చివరి పావు భాగంలో ఉండే చంద్రుడు" - "ముఖం గల పౌర్ణమి చంద్రుడు" - "ముఖం గల సూర్యుడు" - "మెరుస్తున్న నక్షత్రం" - "ఉల్క" - - - - - - - - - - - - - - - - - - - - - - - - - - - "చెస్ట్‌నట్" - "మొలక" - "ఎప్పుడూ పచ్చగా ఉండే చెట్టు" - "ఆకులు రాల్చే చెట్టు" - "తాటి చెట్టు" - "కాక్టస్" - - - "తులిప్" - "చెర్రీ బ్లాసమ్" - "గులాబీ" - "మందారం" - "సూర్యకాంతి" - "బ్లాసమ్" - "మొక్కజొన్న కంకి" - "వరి వంగడం" - "మూలిక" - "నాలుగు ఆకుల క్లోవర్" - "మాపుల్ ఆకు" - "క్రింద పడే ఆకు" - "గాలికి ఊగుతున్న ఆకు" - "పుట్టగొడుగు" - "టమోట" - "వంకాయ" - "ద్రాక్షపళ్లు" - "ఖర్బూజాపండు" - "పుచ్చకాయ" - "నారింజ పండు" - "నిమ్మకాయ" - "అరటి పండు" - "అనాస పండు" - "ఎరుపు రంగు యాపిల్ పండు" - "పచ్చ యాపిల్ పండు" - "బేరీ పండు" - "పీచ్" - "చెర్రీలు" - "స్ట్రాబెర్రీ" - "హ్యాంబర్గర్" - "పిజ్జా ముక్క" - "ఎముక మాంసం" - "కోడి కాలు" - "రైస్ క్రాకర్" - "రైస్ బాల్" - "వండిన అన్నం" - "కూర మరియు అన్నం" - "స్టీమింగ్ బౌల్" - "స్పఘెట్టి" - "రొట్టె" - "ఫ్రెంచ్ ఫ్రైస్" - "కాల్చిన తీపి బంగాళాదుంప" - "డాంగో" - "ఓడెన్" - "సుషి" - "వేయించిన రొయ్య" - "సుడులు తిరిగినట్లు ఉండే ఆకారం గల చేప కేకు" - "మృదువైన ఐస్ క్రీమ్" - "షేవ్డ్ ఐస్" - "ఐస్ క్రీమ్" - "డోనట్" - "కుకీ" - "చాక్లెట్ బార్" - "క్యాండీ" - "లాలిపాప్" - "కస్టర్డ్" - "తేనె కలశం" - "కేకు ముక్క" - "బెంటో బాక్స్" - "ఆహారం గల పాత్ర" - "వంట" - "ఫోర్క్ మరియు కత్తి" - "హ్యాండిల్ లేని టీకప్పు" - "సేక్ సీసా మరియు కప్పు" - "వైన్ గ్లాసు" - "కాక్‌టెయిల్ గ్లాసు" - "ఉష్ణమండల పానీయం" - "బీరు కప్పు" - "క్లింక్‌మని శబ్దం చేస్తున్న బీరు కప్పులు" - "చిన్నపిల్లలు పాలు తాగే సీసా" - - - - - - - "రిబ్బన్" - "ప్యాక్ చేసిన బహుమతి" - "పుట్టినరోజు కేకు" - "గుమ్మడికాయ రూప లాంతరు" - "క్రిస్మస్ చెట్టు" - "ఫాదర్ క్రిస్మస్" - "బాణసంచా" - "బాణాసంచా మెరుపులు" - "బెలూన్" - "పార్టీ పాపర్" - "కాన్ఫెట్టి బాల్" - "టనబాటా చెట్టు" - "క్రాస్డ్ ఫ్లాగ్స్" - "దేవదారు వృక్షంతో చేసిన అలంకరణ" - "జపనీస్ బొమ్మలు" - "కార్ప్ స్ట్రీమర్" - "విండ్ చైమ్" - "చంద్రుణ్ణి చూస్తూ చేసుకునే వేడుక" - "పాఠశాలకు తీసుకెళ్లే సంచి" - "గ్రాడ్యుయేషన్ టోపీ" - - - - - - - - - - - - - - - "రంగులరాట్నంలోని గుర్రం" - "ఫెర్రిస్ వీల్" - "రోలర్ కోస్టర్" - "చేపలు పట్టడానికి వాడే పోల్ మరియు చేప" - "మైక్రోఫోన్" - "చలన చిత్రాలను తీసే కెమెరా" - "చలన చిత్రం" - "హెడ్‌ఫోన్" - "కళాకారుని రంగుల ఫలకం" - "పొడవాటి టోపీ" - "సర్కస్ గుడారం" - "టిక్కెట్" - "క్లాప్ కొట్టే పలక" - "ప్రదర్శక కళలు" - "వీడియో గేమ్" - "డైరెక్ట్ హిట్" - "స్లాట్ మెషీన్" - "బిలియర్డ్స్" - "ఆటకు ఉపయోగించే పాచిక" - "బౌలింగ్" - "ఫ్లవర్ ప్లేయింగ్ కార్డ్స్" - "సంగీత స్వరం" - "బహుళ సంగీత స్వరాలు" - "సాక్సోఫోన్" - "గిటార్" - "సంగీత కీబోర్డ్" - "ట్రంపెట్" - "వయోలిన్" - "సంగీత స్కోర్" - "సాష్ గల పరిగెత్తడానికి వాడే షర్టు" - "టెన్నిస్ రాకెట్ మరియు బంతి" - "స్కీ మరియు స్కీ బూటు" - "బాస్కెట్‌బాల్ మరియు హూప్" - "చదరపు గడుల జెండా" - "స్నోబోర్డర్" - "రన్నర్" - "సర్ఫర్" - - - "ట్రోఫీ" - "గుర్రపు పందెం" - "అమెరికన్ ఫుట్‌బాల్" - "రగ్బీ ఫుట్‌బాల్" - "ఈతగాడు" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "ఇంటి భవనం" - "ఉద్యానవనం ఉన్న ఇల్లు" - "కార్యాలయ భవనం" - "జపనీస్ తపాలా కార్యాలయం" - "యూరోపిన్ తపాలా కార్యాలయం" - "ఆసుపత్రి" - "బ్యాంక్" - "ఆటోమేటెడ్ టెల్లర్ మెషీన్" - "హోటల్" - "లవ్ హోటల్" - "వసతి దుకాణం" - "పాఠశాల" - "కిరాణా దుకాణం" - "కర్మాగారం" - "ఇజకాయా లాంతరు" - "జపనీస్ కోట" - "యూరోపియన్ కోట" - - - - - - - - - - - - - - - - - - - - - - - - - "ఎలుక" - "చిట్టెలుక" - "ఎద్దు" - "నీటి దున్నపోతు" - "ఆవు" - - - "చిరుతపులి" - "కుందేలు" - "పిల్లి" - "డ్రాగన్" - "మొసలి" - "తిమింగలం" - "నత్త" - "పాము" - "గుర్రం" - "పొట్టేలు" - "మేక" - "గొర్రె" - "కోతి" - "కోడిపుంజు" - "కోడి" - "కుక్క" - "పంది" - "అడవి పంది" - "ఏనుగు" - "ఆక్టోపస్" - "సర్పిలాకార గుల్ల" - "నల్లి" - "చీమ" - "తేనెటీగ" - "ఆడ పేడపురుగు" - "చేప" - "ఉష్ణమండల చేప" - "బ్లోఫిష్" - "సముద్రపు తాబేలు" - "పొదుగుతున్న కోడిపిల్ల" - "చిన్న కోడిపిల్ల" - "ముందువైపుకి ముఖాన్ని చూపుతున్న చిన్న కోడిపిల్ల" - "పక్షి" - "పెంగ్విన్" - "కోలా" - "పూడ్లే" - "డ్రోమేడరి క్యామెల్" - "బ్యాక్ట్రియాన్ క్యామెల్" - "డాల్ఫిన్" - "చిట్టెలుక ముఖం" - "ఆవు ముఖం" - "పులి ముఖం" - "కుందేలు ముఖం" - "పిల్లి ముఖం" - "డ్రాగన్ ముఖం" - "నీటిని చిమ్ముతున్న తిమింగలం" - "గుర్రం ముఖం" - "కోతి ముఖం" - "కుక్క ముఖం" - "పంది ముఖం" - "కప్ప ముఖం" - "చుంచు ముఖం" - "తోడేలు ముఖం" - "ఎలుగుబంటి ముఖం" - "పాండా ముఖం" - "పంది ముక్కు" - "జంతువుల పాదముద్రలు" - - - "కళ్లు" - - - "చెవి" - "ముక్కు" - "నోరు" - "నాలుక" - "తెలుపు రంగులో చూపుడు వేలుని వెనుకభాగంతో పాటు పైకి చూపుతున్నట్లు" - "తెలుపు రంగులో చూపుడు వేలుని వెనుకభాగంతో పాటు క్రిందికి చూపుతున్నట్లు" - "తెలుపు రంగులో చూపుడు వేలుని వెనుకభాగంతో పాటు ఎడమవైపుకి చూపుతున్నట్లు" - "తెలుపు రంగులో చూపుడు వేలుని వెనుకభాగంతో పాటు కుడివైపుకి చూపుతున్నట్లు" - "పిడికిలి బిగించి చూపే సంకేతం" - "చెయ్యి ఊపుతున్నట్లు చూపే సంకేతం" - "బాగుంది అని చూపే సంకేతం" - "విజయ సంకేతం" - "ఓటమి సంకేతం" - "చప్పట్లు కొడుతున్నట్లు చూపే సంకేతం" - "చేతులను తెరిచి చూపే సంకేతం" - "కిరీటం" - "ఆడవారు ధరించే టోపీ" - "కళ్లద్దాలు" - "నెక్‌టై" - "టి-షర్ట్" - "జీన్స్" - "డ్రెస్" - "కిమోనో" - "బికినీ" - "ఆడవారి దుస్తులు" - "పర్సు" - "హ్యాండ్‌బ్యాగ్" - "పౌచ్" - "మగవారి బూటు" - "అథ్లెటిక్ బూటు" - "ఎత్తైన మడమ గల బూట్లు" - "ఆడవారి చెప్పులు" - "ఆడవారి బూట్లు" - "పాదముద్రలు" - "నీడరూపంలో ఉండే ప్రతిమ" - "నీడరూపంలో ఉండే ప్రతిమలు" - "అబ్బాయి" - "అమ్మాయి" - "పురుషుడు" - "స్త్రీ" - "కుటుంబం" - "స్త్రీ, పురుషులు ఇరువురూ చేతులు పట్టుకున్నట్లు" - "ఇద్దరు పురుషులు చేతులు పట్టుకున్నట్లు" - "ఇద్దరు స్త్రీలు చేతులు పట్టుకున్నట్లు" - "పోలీసు అధికారి" - "కుందేలు చెవులను ధరించిన స్త్రీ" - "మేలి ముసుగు వేసుకున్న పెళ్లికూతురు" - "బంగారు రంగు జుట్టు గల వ్యక్తి" - "గ్వా పై మావో ధరించిన పురుషుడు" - "తలపాగా ధరించిన పురుషుడు" - "తాత" - "బామ్మ" - "శిశువు" - "నిర్మాణ కార్మికుడు" - "యువరాణి" - "జపనీస్ ఓగర్" - "జపనీస్ గాబ్లిన్" - "దెయ్యం" - "బేబీ ఏంజెల్" - "గ్రాహాంతర జీవి" - "గ్రహాంతర రాక్షస జీవి" - "ఇంప్" - "కపాలం" - "సమాచారం అందించే వ్యక్తి" - "కాపలాదారుడు" - "డాన్సర్" - "లిప్‌స్టిక్" - "గోళ్ల పాలిష్" - "ముఖ మర్దనం" - "హెయిర్‌కట్" - "బార్బర్ పోల్" - "సిరంజ్" - "మాత్ర" - "ముద్దు పెట్టినట్లు చూపే గుర్తు" - "ప్రేమ లేఖ" - "ఉంగరం" - "విలువైన రత్నం" - "ముద్దు పెడుతున్నట్లు" - "పుష్పగుచ్ఛం" - "హృదయాకారం గల జంట" - "పెళ్లి" - "స్పందిస్తున్న గుండె" - "పగిలిన గుండె" - "రెండు గుండెలు" - "తళతళమని మెరుస్తున్న గుండె" - "పెరుగుతున్న గుండె" - "బాణం గుర్తు గల గుండె" - "నీలి రంగు గుండె" - "పచ్చ రంగు గుండె" - "పసుపు రంగు గుండె" - "ఊదా రంగు గుండె" - "రిబ్బన్ కట్టిన గుండె" - "పరిభ్రమిస్తున్న గుండెలు" - "గుండె అలంకరణ" - "లోపల చుక్క ఉండే డైమండ్ ఆకారం" - "విద్యుత్ కాంతి బల్బు" - "కోపంగా ఉన్నట్లు చూపే చిహ్నం" - "బాంబ్" - "నిద్రపోతున్నట్లు చూపే చిహ్నం" - "ఘర్షణ కలిగినట్లు చూపే చిహ్నం" - "చిలకరించిన చెమట గుర్తు" - "నీటిబొట్టు" - "డాష్ చిహ్నం" - "పైల్ ఆఫ్ పూ" - "వంగడానికి వీలుగా ఉండే కండరపుష్టి" - "డిజ్జీ చిహ్నం" - "స్పీచ్ బెలూన్" - "ఆలోచన బెలూన్" - "తెలుపురంగు పువ్వు" - "వంద పాయింట్‌ల చిహ్నం" - "డబ్బు సంచి" - "కరెన్సీ మార్పిడి" - "ముదురు రంగులోని డాలర్ గుర్తు" - "క్రెడిట్ కార్డు" - "యెన్ గుర్తు గల బ్యాంక్ నోటు" - "డాలర్ గుర్తు గల బ్యాంక్ నోటు" - "యూరో గుర్తు గల బ్యాంక్ నోటు" - "పౌండ్ గుర్తు గల బ్యాంక్ నోటు" - "రెక్కలు గల డబ్బు" - "పైకి వెళ్తున్న ట్రెండ్‌తో పాటు యెన్ గుర్తుని చూపే చార్ట్" - "సీటు" - "వ్యక్తిగత కంప్యూటర్" - "బ్రీఫ్‌కేస్" - "మినిడిస్క్" - "ఫ్లాపీ డిస్క్" - "ఆప్టికల్ డిస్క్" - "Dvd" - "ఫైల్ ఫోల్డర్" - "తెరిచిన ఫైల్ ఫోల్డర్" - "మెలితిప్పి ఉన్న పేజీ" - "ఎగువన కొద్దిగా మడిచినట్లు ఉండే పేజీ" - "క్యాలండర్" - "టియర్-ఆఫ్ క్యాలెండర్" - "కార్డు సూచిక" - "పైకి వెళ్తున్న ట్రెండ్‌ని చూపే చార్ట్" - "క్రిందికి దిగుతున్న ట్రెండ్‌ని చూపే చార్ట్" - "బార్ చార్ట్" - "క్లిప్‌బోర్డ్" - "పుష్‌పిన్" - "వృత్తాకార పుష్‌పిన్" - "కాగితానికి వేసే క్లిప్" - "నేరుగా ఉండే రూలర్" - "త్రిభుజాకార రూలర్" - "బుక్‌మార్క్ ట్యాబ్‌లు" - "లెడ్జర్" - "నోటుపుస్తకం" - "కవర్‌ వేసిన నోటుపుస్తకం" - "మూసివేయబడిన పుస్తకం" - "తెరచిన పుస్తకం" - "పచ్చరంగు పుస్తకం" - "నీలిరంగు పుస్తకం" - "నారింజరంగు పుస్తకం" - "పుస్తకాలు" - "పేరు బ్యాడ్జి" - "స్క్రోల్" - "మెమో" - "టెలిఫోన్ రిసీవర్" - "పేజర్" - "ఫ్యాక్స్ మెషీన్" - "ఉపగ్రహ యాంటెన్నా" - "ప్రజలకు వినపడేలా ప్రతిధ్వనించే లౌడ్‌స్పీకర్" - "ప్రతిధ్వనిస్తున్న మెగాఫోన్" - "అవుట్‌బాక్స్ ట్రే" - "ఇన్‌బాక్స్ ట్రే" - "ప్యాకేజీ" - "ఇ-మెయిల్ సంకేతం" - "ఇన్‌కమింగ్ ఎన్వలప్" - "ఎన్వలప్‌కి ఎగువన క్రిందికి చూపే బాణం" - "క్రిందికి దించిన ఫ్లాగ్‌తో మూసివేయబడిన మెయిల్‌పెట్టె" - "పైకి ఎత్తిన ఫ్లాగ్‌తో మూసివేయబడిన మెయిల్‌పెట్టె" - "పైకి ఎత్తిన ఫ్లాగ్‌తో తెరిచిన మెయిల్‌పెట్టె" - "క్రిందికి దించిన ఫ్లాగ్‌తో తెరిచిన మెయిల్‌పెట్టె" - "తపాలాపెట్టె" - "పోస్టల్ హార్న్" - "వార్తా పత్రిక" - "మొబైల్ ఫోన్" - "మొబైల్ ఫోన్‌కి ఎడమవైపున కుడివైపుకి చూపే బాణం" - "వైబ్రేషన్ మోడ్" - "మొబైల్ ఫోన్ ఆఫ్" - "మొబైల్ ఫోన్‌లు నిషేధం" - "బార్‌లు ఉన్న యాంటెన్నా" - "కెమెరా" - - - "వీడియో కెమెరా" - "టెలివిజన్" - "రేడియో" - "వీడియో క్యాసెట్" - - - - - "మెలివేయబడి ఉన్న కుడివైపుకి చూపే బాణాలు" - "సవ్యదిశలో కుడివైపు మరియు ఎడమవైపు తెరవబడిన వృత్తాకార బాణాలు" - "వృత్తాకారంలో ఉన్న ఒకటి ఓవర్‌లేతో సవ్యదిశలో కుడివైపు మరియు ఎడమవైపు తెరవబడిన వృత్తాకార బాణాలు" - "సవ్యదిశలో క్రిందికి మరియు పైకి తెరవబడిన వృత్తాకార బాణాలు" - "అపసవ్యదిశలో క్రిందికి మరియు పైకి తెరవబడిన వృత్తాకార బాణాలు" - "తక్కువ ప్రకాశం గల చిహ్నం" - "అధిక ప్రకాశం గల చిహ్నం" - "స్పీకర్ రద్దు" - "స్పీకర్" - "ఒక ధ్వని తరంగం గల స్పీకర్" - "మూడు ధ్వని తరంగాలు గల స్పీకర్" - "బ్యాటరీ" - "విద్యుత్ ప్లగ్" - "ఎడమవైపుకి చూపే భూతద్దం" - "కుడివైపుకి చూపే భూతద్దం" - "ఇంక్ పెన్‌తో పాటు తాళం" - "తాళంచెవితో పాటు మూసివేయబడిన తాళం" - "తాళంచెవి" - "తాళం" - "తెరవబడిన తాళం" - "గంట" - "గంట రద్దు" - "బుక్‌మార్క్" - "లింక్ గుర్తు" - "రేడియో బటన్" - "బ్యాక్‌కి ఎగువన ఎడమవైపుకి చూపే బాణం" - "ఎండ్‌కి ఎగువన ఎడమవైపుకి చూపే బాణం" - "ఆశ్చర్యార్థక గుర్తు ఉన్న ఆన్‌కి ఎగువన ఎడమ, కుడి రెండువైపులకు చూపే బాణం" - "సూన్‌కి ఎగువన కుడివైపుకి చూపే బాణం" - "టాప్‌కి ఎగువన పైకి చూపే బాణం" - "పద్దెనిమిది కంటే తక్కువ వయస్సుగల వారు నిషిద్ధమని చూపే గుర్తు" - "కీ మీద పది" - "లాటిన్ క్యాపిటల్ అక్షరాల కోసం ఇన్‌పుట్ చిహ్నం" - "లాటిన్ చిన్న అక్షరాల కోసం ఇన్‌పుట్ చిహ్నం" - "సంఖ్యల కోసం ఇన్‌పుట్ చిహ్నం" - "గుర్తుల కోసం ఇన్‌పుట్ గుర్తు" - "లాటిన్ అక్షరాల కోసం ఇన్‌పుట్ చిహ్నం" - "నిప్పు" - "ఎలక్ట్రిక్ టార్చ్" - "రెంచి" - "సుత్తి" - "మర మరియు బోల్టు" - "హోషో" - "పిస్టల్" - "మైక్రోస్కోప్" - "టెలిస్కోప్" - "క్రిస్టల్ బాల్" - "మధ్య చుక్క గల ఆరు పాయింట్ల నక్షత్రం" - "ప్రారంభకుల కోసం జపనీస్ గుర్తు" - "త్రిశూల చిహ్నం" - "నలుపు రంగు చతురస్రాకార బటన్" - "తెలుపు రంగు చతురస్రాకార బటన్" - "పెద్ద ఎరుపు రంగు వృత్తం" - "పెద్ద నీలి రంగు వలయం" - "పెద్ద నారింజ రంగు డైమండ్" - "పెద్ద నీలి రంగు డైమండ్" - "చిన్న నారింజ రంగు డైమండ్" - "చిన్న నీలి రంగు డైమండ్" - "పైకి చూపే ఎరుపు రంగు త్రిభుజం" - "క్రిందికి చూపే ఎరుపు రంగు త్రిభుజం" - "పైకి చూపే చిన్న ఎరుపు రంగు త్రిభుజం" - "క్రిందికి చూపే చిన్న ఎరుపు రంగు త్రిభుజం" - - - - - - - - - - - - - "ఒంటి గంటను చూపే గడియారం రూపం" - "రెండు గంటలను చూపే గడియారం రూపం" - "మూడు గంటలను చూపే గడియారం రూపం" - "నాలుగు గంటలను చూపే గడియారం రూపం" - "ఐదు గంటలను చూపే గడియారం రూపం" - "ఆరు గంటలను చూపే గడియారం రూపం" - "ఏడు గంటలను చూపే గడియారం రూపం" - "ఎనిమిది గంటలను చూపే గడియారం రూపం" - "తొమ్మిది గంటలను చూపే గడియారం రూపం" - "పది గంటలను చూపే గడియారం రూపం" - "పదకొండు గంటలను చూపే గడియారం రూపం" - "పన్నెండు గంటలను చూపే గడియారం రూపం" - "ఒక గంట ముప్పై నిమిషాలను చూపే గడియారం రూపం" - "రెండు గంటల ముప్పై నిమిషాలను చూపే గడియారం రూపం" - "మూడు గంటల ముప్పై నిమిషాలను చూపే గడియారం రూపం" - "నాలుగు గంటల ముప్పై నిమిషాలను చూపే గడియారం రూపం" - "ఐదు గంటల ముప్పై నిమిషాలను చూపే గడియారం రూపం" - "ఆరు గంటల ముప్పై నిమిషాలను చూపే గడియారం రూపం" - "ఏడు గంటల ముప్పై నిమిషాలను చూపే గడియారం రూపం" - "ఎనిమిది గంటల ముప్పై నిమిషాలను చూపే గడియారం రూపం" - "తొమ్మిది గంటల ముప్పై నిమిషాలను చూపే గడియారం రూపం" - "పది గంటల ముప్పై నిమిషాలను చూపే గడియారం రూపం" - "పదకొండు గంటల ముప్పై నిమిషాలను చూపే గడియారం రూపం" - "పన్నెండు గంటల ముప్పై నిమిషాలను చూపే గడియారం రూపం" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "ఫ్యూజీ పర్వతం" - "టోక్యో టవర్" - "లిబర్టీ విగ్రహం" - "జపాన్ ఛాయాచిత్రం" - "మొయాయి" - "పళ్లు కనబడేలా నవ్వుతున్న ముఖం" - "నవ్వుతున్న కళ్లతో ఇకిలింత ముఖం" - "ఆనందభాష్పాలు గల ముఖం" - "నోరు తెరిచి నవ్వుతున్న ముఖం" - "నవ్వుతున్న కళ్లతో నోరు తెరిచి నవ్వుతున్న ముఖం" - "బిగ్గరగా నవ్వుతూ, భయంతో చెమటలు పట్టిన ముఖం" - "గట్టిగా మూసుకున్న కళ్లతో నోరు తెరిచి నవ్వుతున్న ముఖం" - "ప్రకాశ వలయం గల నవ్వుతున్న ముఖం" - "కొమ్ములు గల నవ్వుతున్న ముఖం" - "కనుసైగ చేస్తున్న ముఖం" - "నవ్వుతున్న కళ్లతో నవ్వుతున్న ముఖం" - "రుచికరమైన ఆహారాన్ని ఆస్వాదిస్తున్నట్లు చూపే ముఖం" - "ఉపశమనం పొందిన ముఖం" - "హృదయాకార కళ్లతో నవ్వుతున్న ముఖం" - "సన్‌గ్లాసులు ధరించి నవ్వుతున్న ముఖం" - "గర్వంగా నవ్వుతున్న ముఖం" - "నిష్పాక్షికంగా ఉండే ముఖం" - "భావరహిత ముఖం" - "రంజింపచేయని ముఖం" - "భయంతో చెమటలు పట్టిన ముఖం" - "దిగులుగా వున్న ముఖం" - "అయోమయంలో ఉండే ముఖం" - "కలవరపడిన ముఖం" - "ముద్దు పెడుతున్న ముఖం" - "గాలిలో ముద్దుని వదులుతున్న ముఖం" - "నవ్వుతున్న కళ్లతో ముద్దు పెడుతున్న ముఖం" - "మూసి ఉన్న కళ్లతో ముద్దు పెడుతున్న ముఖం" - "నాలుకను బయటకు చూపుతున్న ముఖం" - "నాలుకను బయటకు పెట్టి, కనుసైగ చేస్తున్న ముఖం" - "నాలుక బయటకు పెట్టి, గట్టిగా మూసుకున్న కళ్లతో ముఖం" - "నిరాశ చెందిన ముఖం" - "వ్యాకులత చెందిన ముఖం" - "కోపంతో ఉన్న ముఖం" - "అలిగిన ముఖం" - "ఏడుస్తున్న ముఖం" - "పట్టుదలతో ఉండే ముఖం" - "విజయోత్సాహం నిండి ఉన్న ముఖం" - "మనస్తాపం చెందినట్లు ఉన్నా ఉపశమనం పొందినట్లు ఉండే ముఖం" - "నోరు తెరిచి కోపంతో ఉన్న ముఖం" - "బాధాకరమైన ముఖం" - "భయంతో కూడిన ముఖం" - "విసుగు చెందిన ముఖం" - "నిద్ర పోతున్నట్లు ఉన్న ముఖం" - "అలసిన ముఖం" - "వెక్కిరిస్తున్నట్లు ఉండే ముఖం" - "బిగ్గరగా ఏడుస్తున్న ముఖం" - "నోరు తెరిచి ఉన్న ముఖం" - "నిశ్శబ్దంగా ఉండే ముఖం" - "నోరు తెరిచి, భయంతో చెమటలు పట్టిన ముఖం" - "భయంతో కేక పెడుతున్న ముఖం" - "ఆశ్చర్యపడిన ముఖం" - "ఉద్రేకించిన ముఖం" - "నిద్రపోతున్న ముఖం" - "అస్వస్థతతో ఉండే ముఖం" - "నోరు లేని ముఖం" - "వైద్య సంబంధిత ముసుగును ధరించిన ముఖం" - "నవ్వుతున్న కళ్లతో ఇకిలిస్తున్నట్లు ఉండే పిల్లి ముఖం" - "ఆనందభాష్పాలతో ఉండే పిల్లి ముఖం" - "నోరు తెరిచి నవ్వుతున్నట్లు ఉండే పిల్లి ముఖం" - "హృదయాకార కళ్లతో నవ్వుతున్నట్లు ఉండే పిల్లి ముఖం" - "వంకర నవ్వుతో పిల్లి ముఖం" - "మూసి ఉన్న కళ్లతో ముద్దు పెడుతున్నట్లు ఉండే పిల్లి ముఖం" - "అలిగినట్లు ఉండే పిల్లి ముఖం" - "ఏడుస్తున్నట్లు ఉండే పిల్లి ముఖం" - "విసుగు చెందినట్లు ఉండే పిల్లి ముఖం" - - - - - - - - - "ఎటువంటి మంచి సంజ్ఞ చేయని ముఖం" - "సరే సంజ్ఞతో ఉన్న ముఖం" - "వ్యక్తి వినమ్రంగా వంగడం" - "చెడు చూడకు అని సంజ్ఞ చేసే కోతి" - "చెడు వినకు అని సంజ్ఞ చేసే కోతి" - "చెడు మాట్లాడకు అని సంజ్ఞ చేసే కోతి" - "వ్యక్తి సంతోషంగా ఒక చేతిని పైకి ఎత్తడం" - "వేడుకలో రెండు చేతులు పైకెత్తిన వ్యక్తి" - "కోపంగా ఉన్న వ్యక్తి" - "అలిగిన ముఖంతో ఉండే వ్యక్తి" - "చేతులు కట్టుకున్న వ్యక్తి" - "రాకెట్" - "హెలికాప్టర్" - "ఆవిరితో నడిచే రైలు" - "రైల్వే కారు" - "అత్యంత వేగవంతమైన రైలు" - "బుల్లెట్ మొన గల అత్యంత వేగవంతమైన రైలు" - "రైలు" - "మెట్రో" - "లైట్ రైలు" - "స్టేషన్" - "ట్రామ్" - "ట్రామ్ కారు" - "బస్సు" - "రానున్న బస్సు" - "ట్రాలీబస్సు" - "బస్ స్టాప్" - "చిన్నబస్సు" - "అంబులెన్స్‌" - "అగ్నిమాపక యంత్రం" - "పోలీసు కారు" - "రానున్న పోలీసు కారు" - "ట్యాక్సీ" - "రానున్న ట్యాక్సీ" - "ఆటోమొబైల్" - "రానున్న ఆటోమొబైల్" - "వినోదభరిత వాహనం" - "డెలివరీ ట్రక్" - "జాయింట్లుగా కలపబడిన లారీ" - "ట్రాక్టర్" - "మోనోరైల్" - "పర్వత రైల్వే" - "సస్పెన్షన్ రైల్వే" - "మౌంటెయిన్ కేబుల్‌వే" - "ఏరియల్ ట్రామ్‌వే" - "ఓడ" - "చిన్న పడవ" - "వేగవంతమైన పడవ" - "సమతల ట్రాఫిక్ లైట్" - "లంబంగా ఉండే ట్రాఫిక్ లైట్" - "నిర్మాణం చిహ్నం" - "పోలీసు కార్లపై తిరిగే లైట్" - "పోస్ట్‌పై త్రిభుజాకార పతాకం" - "తలుపు" - "ప్రవేశం లేదు అని సూచించే చిహ్నం" - "స్మోకింగ్ చిహ్నం" - "ధూమపానం చేయవద్దు అని సూచించే గుర్తు" - "చెత్తను చెత్తకుండీలో వేయడానికి చిహ్నం" - "చెత్త వేయవద్దు అని సూచించే చిహ్నం" - "త్రాగునీరు చిహ్నం" - "నీరు రావడం లేదు చిహ్నం" - "సైకిల్" - "సైకిల్‌లు నిషిద్ధం" - "సైకిల్ నడిపేవారు" - "పర్వతంపై సైకిల్ నడిపేవారు" - "పాదచారి" - "పాదచారులు నిషిద్ధం" - "చిన్నపిల్లలు రహదారి దాటే కూడలి" - "పురుషుల చిహ్నం" - "స్త్రీల చిహ్నం" - "విశ్రాంతిగది" - "శిశువు చిహ్నం" - "మరుగుదొడ్డి" - "వాటర్ క్లోసెట్" - "షవర్" - "స్నానం" - "స్నానపు తొట్టె" - "పాస్‌పోర్ట్ నియంత్రణ" - "కస్టమ్స్" - "బ్యాగేజీ క్లెయిమ్" - "సామాను ఉంచు స్థలం" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-te/strings-letter-descriptions.xml b/app/src/main/res/values-te/strings-letter-descriptions.xml deleted file mode 100644 index a1d0258614..0000000000 --- a/app/src/main/res/values-te/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "ఫెమినైన్ ఆర్డినల్ సూచిక" - "సూక్ష్మ గుర్తు" - "మాస్క్యూలిన్ ఆర్డినల్ సూచిక" - "షార్ప్ S" - "A, గ్రేవ్" - "A, అక్యూట్" - "A, సర్కమ్‌ఫ్లెక్స్" - "A, టిల్డ్" - "A, డయేరిసిస్" - "A, ఎగువన రింగ్" - "A, E, లిగేచర్" - "C, సిడిల్లా" - "E, గ్రేవ్" - "E, అక్యూట్" - "E, సర్కమ్‌ఫ్లెక్స్" - "E, డయేరిసిస్" - "I, గ్రేవ్" - "I, అక్యూట్" - "I, సర్కమ్‌ఫ్లెక్స్" - "I, డయేరిసిస్" - "ఈథ్" - "N, టిల్డ్" - "O, గ్రేవ్" - "O, అక్యూట్" - "O, సర్కమ్‌ఫ్లెక్స్" - "O, టిల్డ్" - "O, డయేరిసిస్" - "O, స్ట్రోక్" - "U, గ్రేవ్" - "U, అక్యూట్" - "U, సర్కమ్‌ఫ్లెక్స్" - "U, డయేరిసిస్" - "Y, అక్యూట్" - "థార్న్" - "Y, డయేరిసిస్" - "A, మ్యాక్రాన్" - "A, బ్రీవ్" - "A, ఒగోనెక్" - "C, అక్యూట్" - "C, సర్కమ్‌ఫ్లెక్స్" - "C, ఎగువన చుక్క" - "C, క్యారాన్" - "D, క్యారాన్" - "D, స్ట్రోక్" - "E, మ్యాక్రాన్" - "E, బ్రీవ్" - "E, ఎగువన చుక్క" - "E, ఒగోనెక్" - "E, క్యారాన్" - "G, సర్కమ్‌ఫ్లెక్స్" - "G, బ్రీవ్" - "G, ఎగువన చుక్క" - "G, సిడిల్లా" - "H, సర్కమ్‌ఫ్లెక్స్" - "H, స్ట్రోక్" - "I, టిల్డ్" - "I, మ్యాక్రాన్" - "I, బ్రీవ్" - "I, ఒగోనెక్" - "డాట్‌లెస్ I" - "I, J, లిగేచర్" - "J, సర్కమ్‌ఫ్లెక్స్" - "K, సిడిల్లా" - "క్రా" - "L, అక్యూట్" - "L, సిడిల్లా" - "L, క్యారాన్" - "L, మధ్యలో చుక్క" - "L, స్ట్రోక్" - "N, అక్యూట్" - "N, సిడిల్లా" - "N, క్యారాన్" - "N, ముందు భాగంలో అపాస్ట్రఫీ" - "ఇంజి" - "O, మ్యాక్రాన్" - "O, బ్రీవ్" - "O, డబుల్ అక్యూట్" - "O, E, లిగేచర్" - "R, అక్యూట్" - "R, సిడిల్లా" - "R, క్యారాన్" - "S, అక్యూట్" - "S, సర్కమ్‌ఫ్లెక్స్" - "S, సిడిల్లా" - "S, క్యారాన్" - "T, సిడిల్లా" - "T, క్యారాన్" - "T, స్ట్రోక్" - "U, టిల్డ్" - "U, మ్యాక్రాన్" - "U, బ్రీవ్" - "U, ఎగువన రింగ్" - "U, డబుల్ అక్యూట్" - "U, ఒగోనెక్" - "W, సర్కమ్‌ఫ్లెక్స్" - "Y, సర్కమ్‌ఫ్లెక్స్" - "Z, అక్యూట్" - "Z, ఎగువన చుక్క" - "Z, క్యారాన్" - "పొడవైన S" - "O, హార్న్" - "U, హార్న్" - "S, దిగువన కామా" - "T, దిగువన కామా" - "ష్వా" - "A, దిగువన చుక్క" - "A, ఎగువన హుక్" - "A, సర్కమ్‌ఫ్లెక్స్ మరియు అక్యూట్" - "A, సర్కమ్‌ఫ్లెక్స్ మరియు గ్రేవ్" - "A, సర్కమ్‌‌ఫ్లెక్స్ మరియు ఎగువన హుక్" - "A, సర్కమ్‌ఫ్లెక్స్ మరియు టిల్డ్" - "A, సర్కమ్‌ఫ్లెక్స్ మరియు దిగువన చుక్క" - "A, బ్రీవ్ మరియు అక్యూట్" - "A, బ్రీవ్ మరియు గ్రేవ్" - "A, బ్రీవ్ మరియు ఎగువన హుక్" - "A, బ్రీవ్ మరియు టిల్డ్" - "A, బ్రీవ్ మరియు దిగువన చుక్క" - "E, దిగువన చుక్క" - "E, ఎగువన చుక్క" - "E, టిల్డ్" - "E, సర్కమ్‌ఫ్లెక్ మరియు అక్యూట్" - "E, సర్కమ్‌ఫ్లెక్స్ మరియు గ్రేవ్" - "E, సర్కమ్‌ఫ్లెక్స్ మరియు ఎగువన హుక్" - "E, సర్కమ్‌ఫ్లెక్స్ మరియు టిల్డ్" - "E, సర్కమ్‌ఫ్లెక్స్ మరియు దిగువన చుక్క" - "I, ఎగువన హుక్" - "I, దిగువన చుక్క" - "O, దిగువన చుక్క" - "O, ఎగువన హుక్" - "O, సర్కమ్‌ఫ్లెక్స్ మరియు అక్యూట్" - "O, సర్కమ్‌ఫ్లెక్స్ మరియు గ్రేవ్" - "O, సర్కమ్‌ఫ్లెక్స్ మరియు ఎగువన హుక్" - "O, సర్కమ్‌ఫ్లెక్స్ మరియు టిల్డ్" - "O, సర్కమ్‌ఫ్లెక్స్ మరియు దిగువన చుక్క" - "O, హార్న్ మరియు అక్యూట్" - "O, హార్న్ మరియు గ్రేవ్" - "O, హార్న్ మరియు ఎగువన హుక్" - "O, హార్న్ మరియు టిల్డ్" - "O, హార్న్ మరియు దిగువన చుక్క" - "U, దిగువన చుక్క" - "U, ఎగువన హుక్" - "U, హార్న్ మరియు అక్యూట్" - "U, హార్న్ మరియు గ్రేవ్" - "U, హార్న్ మరియు ఎగువన హుక్" - "U, హార్న్ మరియు టిల్డ్" - "U, హార్న్ మరియు దిగువన చుక్క" - "Y, గ్రేవ్" - "Y, దిగువన చుక్క" - "Y, ఎగువన హుక్" - "Y, టిల్డ్" - "విలోమ ఆశ్చర్యార్థక గుర్తు" - "ఎడమవైపుకి ఉండే డబుల్ యాంగిల్ కొటేషన్ గుర్తు" - "మధ్యలో చుక్క" - "సూపర్‌స్క్రిప్ట్ ఒకటి" - "కుడివైపుకి ఉండే డబుల్ యాంగిల్ కొటేషన్ గుర్తు" - "విలోమ ప్రశార్థక గుర్తు" - "ఎడమవైపు సింగిల్ కొటేషన్ గుర్తు" - "కుడివైపు సింగిల్ కొటేషన్ గుర్తు" - "ఒక దిగువ-9 కొటేషన్ గుర్తు" - "ఎడమవైపు డబుల్ కొటేషన్ గుర్తు" - "కుడివైపు డబుల్ కొటేషన్ గుర్తు" - "డ్యాగర్" - "డబుల్ డ్యాగర్" - "ఒక మిల్లేకి గుర్తు" - "ప్రైమ్" - "డబుల్ ప్రైమ్" - "ఒకటి ఎడమవైపుకి ఉండే యాంగిల్ కొటేషన్ గుర్తు" - "ఒకటి కుడివైపుకి ఉండే యాంగిల్ కొటేషన్ గుర్తు" - "సూపర్‌స్క్రిప్ట్ నాలుగు" - "సూపర్‌స్క్రిప్ట్ లాటిన్ చిన్న అక్షరం n" - "పెసో గుర్తు" - "కేరాఫ్" - "కుడివైపుకి ఉండే బాణం" - "దిగువకు ఉండే బాణం" - "శూన్య సమితి" - "వృద్ధి" - "దీని కంటే తక్కువ లేదా దీనికి సమానం" - "దీని కంటే ఎక్కువ లేదా దీనికి సమానం" - "నలుపు రంగు నక్షత్రం" - diff --git a/app/src/main/res/values-te/strings-talkback-descriptions.xml b/app/src/main/res/values-te/strings-talkback-descriptions.xml index 6719f1bab1..0c269f03f2 100644 --- a/app/src/main/res/values-te/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-te/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "బిగ్గరగా చదివి వినిపించే పాస్‌వర్డ్ కీలను వినడానికి హెడ్‌సెట్‌ను ప్లగిన్ చేయండి." - "ప్రస్తుత వచనం %s" - "వచనం ఏదీ నమోదు చేయబడలేదు" - "%1$s %2$sని %3$sగా సరి చేస్తుంది" - "%1$s స్వీయ-సవరణను అమలు చేస్తుంది" - "సూచన లేదు" - "తెలియని అక్షరం" - "షిప్ట్" - "మరిన్ని గుర్తులు" - "షిప్ట్" - "గుర్తులు" - "షిప్ట్" - "తొలగించు" - "గుర్తులు" - "అక్షరాలు" - "సంఖ్యలు" - "సెట్టింగ్‌లు" - "ట్యాబ్" - "స్పేస్" - "వాయిస్ ఇన్‌పుట్" - "ఎమోజి" - "తిరిగి వెళ్లు" - "వెతుకు" - "చుక్క" - "భాషను మార్చండి" - "తర్వాత" - "మునుపటి" - "షిఫ్ట్ ప్రారంభించబడింది" - "Caps lock ప్రారంభించబడింది" - "గుర్తుల మోడ్" - "మరిన్ని గుర్తుల మోడ్" - "అక్షరాల మోడ్" - "ఫోన్ మోడ్" - "ఫోన్ గుర్తుల మోడ్" - "కీబోర్డ్ దాచబడింది" - "%s కీబోర్డ్‌ను చూపుతోంది" - "తేదీ" - "తేదీ మరియు సమయం" - "ఇమెయిల్" - "సందేశం" - "సంఖ్య" - "ఫోన్" - "వచనం" - "సమయం" - "URL" - "ఇటీవలివి" - "వ్యక్తులు" - "ఆబ్జెక్ట్‌లు" - "ప్రకృతి" - "స్థలాలు" - "గుర్తులు" - "జెండాలు" - "నవ్వుతున్న ముఖం & వ్యక్తులు" - "జంతువులు & ప్రకృతి" - "ఆహారం & పానీయం" - "ప్రయాణం & స్థలాలు" - "కార్యకలాపం" - "ఎమోటికాన్‌లు" - "క్యాపిటల్ %s" - "క్యాపిటల్ I" - "క్యాపిటల్ I, ఎగువన చుక్క" - "తెలియని చిహ్నం" - "తెలియని ఎమోజీ" - "చికాకుగా ఉండే ముఖం" - "కలవరపడే ముఖం" - "కళ్లద్దాలు ధరించిన ముఖం" - "ఆశ్చర్యపడే ముఖం" - "ముద్దు పెడుతున్న ముఖం" - "కోపంతో ఉండే ముఖం" - "ప్రత్యామ్నాయ అక్షరాలు అందుబాటులో ఉన్నాయి" - "ప్రత్యామ్నాయ అక్షరాలు తీసివేయబడ్డాయి" - "ప్రత్యామ్నాయ సూచనలు అందుబాటులో ఉన్నాయి" - "ప్రత్యామ్నాయ సూచనలు తీసివేయబడ్డాయి" + + + "బిగ్గరగా చదివి వినిపించే పాస్‌వర్డ్ కీలను వినడానికి హెడ్‌సెట్‌ను ప్లగిన్ చేయండి." + "ప్రస్తుత వచనం %s" + "వచనం ఏదీ నమోదు చేయబడలేదు" + "%1$s %2$sని %3$sగా సరి చేస్తుంది" + "%1$s స్వీయ-సవరణను అమలు చేస్తుంది" + "సూచన లేదు" + "తెలియని అక్షరం" + "షిప్ట్" + "మరిన్ని గుర్తులు" + "షిప్ట్" + "గుర్తులు" + "షిప్ట్" + "తొలగించు" + "గుర్తులు" + "అక్షరాలు" + "సంఖ్యలు" + "సెట్టింగ్‌లు" + "ట్యాబ్" + "స్పేస్" + "వాయిస్ ఇన్‌పుట్" + "ఎమోజి" + "తిరిగి వెళ్లు" + "వెతుకు" + "చుక్క" + "భాషను మార్చండి" + "తర్వాత" + "మునుపటి" + "షిఫ్ట్ ప్రారంభించబడింది" + "Caps lock ప్రారంభించబడింది" + "గుర్తుల మోడ్" + "మరిన్ని గుర్తుల మోడ్" + "అక్షరాల మోడ్" + "ఫోన్ మోడ్" + "ఫోన్ గుర్తుల మోడ్" + "కీబోర్డ్ దాచబడింది" + "%s కీబోర్డ్‌ను చూపుతోంది" + "తేదీ" + "తేదీ మరియు సమయం" + "ఇమెయిల్" + "సందేశం" + "సంఖ్య" + "ఫోన్" + "వచనం" + "సమయం" + "URL" + "ఇటీవలివి" + "ఆబ్జెక్ట్‌లు" + "గుర్తులు" + "జెండాలు" + "నవ్వుతున్న ముఖం & వ్యక్తులు" + "జంతువులు & ప్రకృతి" + "ఆహారం & పానీయం" + "ప్రయాణం & స్థలాలు" + "కార్యకలాపం" + "ఎమోటికాన్‌లు" + "క్యాపిటల్ %s" + "క్యాపిటల్ I" + "క్యాపిటల్ I, ఎగువన చుక్క" + "ప్రత్యామ్నాయ అక్షరాలు అందుబాటులో ఉన్నాయి" + "ప్రత్యామ్నాయ అక్షరాలు తీసివేయబడ్డాయి" + "ప్రత్యామ్నాయ సూచనలు అందుబాటులో ఉన్నాయి" + "ప్రత్యామ్నాయ సూచనలు తీసివేయబడ్డాయి" diff --git a/app/src/main/res/values-te/strings.xml b/app/src/main/res/values-te/strings.xml index a6877a6389..3d5cfa4644 100644 --- a/app/src/main/res/values-te/strings.xml +++ b/app/src/main/res/values-te/strings.xml @@ -1,193 +1,125 @@ - - - - - "ఇన్‌పుట్ ఎంపికలు" - "పరిచయ పేర్లను వెతకండి" - "స్పెల్ చెకర్ మీ పరిచయ జాబితా నుండి నమోదులను ఉపయోగిస్తుంది" - "కీని నొక్కినప్పుడు వైబ్రేట్" - "కీని నొక్కినప్పుడు ధ్వని" - "కీని నొక్కినప్పుడు పాప్‌అప్ చూపు" - "ప్రాధాన్యతలు" - "ఖాతాలు & గోప్యత" - "కనిపించే తీరు & లేఅవుట్‌లు" - "సంజ్ఞ టైపింగ్" - "వచన సవరణ" - "అధునాతనం" - "థీమ్" - "విభజన కీబోర్డ్‌ను ప్రారంభించు" - "ఇతర ఇన్‌పుట్ పద్ధతులకు మారండి" - "భాష మార్పు కీ ఇతర ఇన్‌పుట్ పద్ధతులను కూడా కవర్ చేస్తుంది" - "భాష మార్పు కీ" - "బహుళ ఇన్‌పుట్ భాషలు ప్రారంభించబడినప్పుడు చూపు" - "కీ పాప్‌అప్ తీసివేత ఆలస్యం" - "ఆలస్యం లేదు" - "డిఫాల్ట్" - "%sమిసె" - "సిస్టమ్ డిఫాల్ట్" - "పరిచయ పేర్లను సూచించు" - "సూచనలు మరియు సవరణల కోసం పరిచయాల నుండి పేర్లను ఉపయోగించు" - "వ్యక్తిగతీకరించబడిన సూచనలు" - "%s మెరుగుపరచండి" - "రెండు-అంతరాల చుక్క గుర్తు" - "స్పేస్ బార్‌పై రెండుసార్లు నొక్కడం వలన చుక్క, దాని ప్రక్కన అంతరం చొప్పించబడుతుంది" - "స్వీయ-పెద్ద అక్షరాలు" - "ప్రతి వాక్యంలో మొదటి అక్షరాన్ని పెద్ద అక్షరం చేయి" - "వ్యక్తిగత నిఘంటువు" - "ఇతర నిఘంటువులు" - "ప్రధాన నిఘంటువు" - "సవరణ సూచనలను చూపు" - "టైప్ చేసేటప్పుడు సూచిత పదాలను ప్రదర్శించు" - "కించపరిచే పదాలను బ్లాక్ చేయి" - "కించ‌ప‌ర‌చ‌డానికి అవకాశం ఇచ్చే పదాలను సూచించవద్దు" - "స్వీయ-సవరణ" - "స్పేస్ బార్ మరియు విరామ చిహ్నాలు తప్పుగా టైప్ చేసిన పదాలను ఆటోమేటిక్‌గా సరి చేస్తాయి" - "ఆఫ్‌ చేయి" - "మధ్యస్థం" - "తీవ్రం" - "చాలా తీవ్రం" - "తర్వాతి-పదం సూచనలు" - "సూచనలను రూపొందించడంలో మునుపటి పదాన్ని ఉపయోగించు" - "సంజ్ఞ టైపింగ్‌ను ప్రారంభించండి" - "అక్షరాల గుండా స్లైడ్ చేయడం ద్వారా పదాన్ని ఇన్‌పుట్ చేయండి" - "సంజ్ఞ ట్రయిల్‌ను చూపు" - "డైనమిక్ ఫ్లోటింగ్ పరిదృశం" - "సంజ్ఞలు చేసేటప్పుడు సూచిత పదాన్ని చూడండి" - "పదబంధం సంజ్ఞ" - "స్పేస్ కీకి గ్లైడ్ చేయడం ద్వారా సంజ్ఞల సమయంలో అంతరాలను ఇన్‌పుట్ చేయండి" - "వాయిస్ ఇన్‌పుట్ కీ" - "వాయిస్ ఇన్‌పుట్ పద్ధతులు ఏవీ ప్రారంభించబడలేదు. భాషలు & ఇన్‌పుట్ సెట్టింగ్‌లను తనిఖీ చేయండి." - "ఇన్‌పుట్ పద్ధతులను కాన్ఫిగర్ చేయండి" - "భాషలు" - "సహాయం & అభిప్రాయం" - "భాషలు" - "సేవ్ చేయడానికి మళ్లీ నొక్కండి" - "సేవ్ చేయడానికి ఇక్కడ నొక్కండి" - "నిఘంటువు అందుబాటులో ఉంది" - "కీబోర్డ్ థీమ్" - "ఖాతాలు మార్చండి" - "ఖాతాలు ఏవీ ఎంచుకోబడలేదు" - "ప్రస్తుతం %1$sని ఉపయోగిస్తున్నారు" - "సరే" - "రద్దు చేయి" - "సైన్ అవుట్ చేయండి" - "ఉపయోగించడానికి ఖాతాను ఎంచుకోండి" - "ఆంగ్లం (యుకె)" - "ఆంగ్లం (యుఎస్)" - "స్పానిష్ (యుఎస్)" - "హింగ్లీష్" - "సెర్బియన్ (లాటిన్)" - "ఆంగ్లం (యుకె) (%s)" - "ఆంగ్లం (యుఎస్) (%s)" - "స్పానిష్ (యుఎస్) (%s)" - "హింగ్లీష్ (%s)" - "సెర్బియన్ (%s)" - "%s (సాంప్రదాయకం)" - "%s (కాంపాక్ట్)" - "భాష లేదు (ఆల్ఫాబెట్)" - "ఆల్ఫాబెట్ (QWERTY)" - "ఆల్ఫాబెట్ (QWERTZ)" - "ఆల్ఫాబెట్ (AZERTY)" - "ఆల్ఫాబెట్ (డ్వోరక్)" - "ఆల్ఫాబెట్ (కోల్‌మాక్)" - "ఆల్ఫాబెట్ (PC)" - "ఎమోజి" - "కీబోర్డ్ థీమ్" - "అనుకూల ఇన్‌పుట్ శైలులు" - "శైలిని జోడించండి" - "జోడించండి" - "తీసివేయి" - "సేవ్ చేయి" - "భాష" - "లేఅవుట్" - "మీరు మీ అనుకూల ఇన్‌పుట్ శైలిని ఉపయోగించడం ప్రారంభించడానికి ముందు దీన్ని ప్రారంభించాల్సి ఉంటుంది. మీరు ఇప్పుడు దీన్ని ప్రారంభించాలనుకుంటున్నారా?" - "ప్రారంభించండి" - "ఇప్పుడు కాదు" - "ఇదే ఇన్‌పుట్ శైలి ఇప్పటికే ఉంది: %s" - "కీని నొక్కినప్పుడు వైబ్రేషన్ వ్యవధి" - "కీని నొక్కినప్పుడు చేసే ధ్వని వాల్యూమ్" - "కీని ఎక్కువసేపు నొక్కి ఉంచాల్సిన సమయంలో ఆలస్యం" - "భౌతిక కీబోర్డ్ కోసం ఎమోజి" - "భౌతిక Alt కీ ఎమోజి ఫలకాన్ని చూపుతుంది" - "డిఫాల్ట్" - "%sకు స్వాగతం" - "సంజ్ఞ టైపింగ్‌తో" - "ప్రారంభించండి" - "తర్వాత దశ" - "%sని సెటప్ చేయడం" - "%sని ప్రారంభించండి" - "దయచేసి మీ భాషలు & ఇన్‌పుట్ సెట్టింగ్‌ల్లో \"%s\" తనిఖీ చేయండి. ఇది మీ పరికరంలో అమలు కావడానికి దీన్ని ప్రామాణీకరిస్తుంది." - "%s ఇప్పటికే మీ భాషలు & ఇన్‌పుట్ సెట్టింగ్‌ల్లో ప్రారంభించబడింది, కనుక ఈ దశ పూర్తయింది. తర్వాత దశకు వెళ్లండి!" - "సెట్టింగ్‌ల్లో ప్రారంభించండి" - "%sకు మారండి" - "తర్వాత, \"%s\"ని మీ సక్రియ వచన-ఇన్‌పుట్ పద్ధతిగా ఎంచుకోండి." - "ఇన్‌పుట్ పద్ధతులను మార్చు" - "అభినందనలు, మీరు అంతా పూర్తి చేసారు!" - "ఇప్పుడు మీరు %sతో మీకు ఇష్టమైన అన్ని అనువర్తనాల్లో టైప్ చేయవచ్చు." - "అదనపు భాషలను కాన్ఫిగర్ చేయండి" - "పూర్తయింది" - "యాప్‌ చిహ్నాన్ని చూపు" - "లాంచర్‌లో యాప్‌ చిహ్నాన్ని ప్రదర్శించు" - "నిఘంటువు ప్రదాత" - "నిఘంటువు ప్రదాత" - "నిఘంటువు సేవ" - "నిఘంటువు అప్‌డేట్ సమాచారం" - "ఇతర నిఘంటువులు" - "నిఘంటువుల కోసం సెట్టింగ్‌లు" - "వినియోగదారు నిఘంటువులు" - "వినియోగదారు నిఘంటువు" - "నిఘంటువు అందుబాటులో ఉంది" - "ప్రస్తుతం డౌన్‌లోడ్ చేస్తోంది" - "ఇన్‌స్టాల్ చేయబడింది" - "ఇన్‌స్టాల్ చేయబడింది, నిలిపివేయబడింది" - "నిఘంటువు సేవకు కనెక్ట్ చేయడంలో సమస్య" - "నిఘంటువులు ఏవీ అందుబాటులో లేవు" - "రీఫ్రెష్ చేయండి" - "చివరిగా నవీకరించబడినది" - "అప్‌డేట్‌ల కోసం తనిఖీ చేస్తోంది" - "లోడ్ చేస్తోంది…" - "ప్రధాన నిఘంటువు" - "రద్దు చేయి" - "సెట్టింగ్‌లు" - "ఇన్‌స్టాల్ చేయి" - "రద్దు చేయి" - "తొలగించు" - "వెర్షన్ %1$s" - "జోడించు" - "నిఘంటువుకి జోడించు" - "పదబంధం" - "మరిన్ని ఎంపికలు" - "తక్కువ ఎంపికలు" - "సరే" - "పదం:" - "షార్ట్‌కట్:" - "భాష:" - "పదాన్ని టైప్ చేయండి" - "ఐచ్ఛిక షార్ట్‌కట్" - "పదాన్ని సవరించు" - "సవరించు" - "తొలగించు" - "మీరు వినియోగదారు నిఘంటువులో పదాలు ఏవీ కలిగి లేరు. పదాన్ని జోడించడానికి, జోడించు (+) బటన్‌ను నొక్కండి." - "అన్ని భాషల కోసం" - "మరిన్ని భాషలు…" - "తొలగించు" - " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + + "పరిచయ పేర్లను వెతకండి" + "కీని నొక్కినప్పుడు వైబ్రేట్" + "కీని నొక్కినప్పుడు ధ్వని" + "కీని నొక్కినప్పుడు పాప్‌అప్ చూపు" + "ప్రాధాన్యతలు" + "సంజ్ఞ టైపింగ్" + "వచన సవరణ" + "అధునాతనం" + "థీమ్" + "విభజన కీబోర్డ్‌ను ప్రారంభించు" + "ఇతర ఇన్‌పుట్ పద్ధతులకు మారండి" + "భాష మార్పు కీ" + "%sమిసె" + "సిస్టమ్ డిఫాల్ట్" + "సూచనలు మరియు సవరణల కోసం పరిచయాల నుండి పేర్లను ఉపయోగించు" + "వ్యక్తిగతీకరించబడిన సూచనలు" + "రెండు-అంతరాల చుక్క గుర్తు" + "స్పేస్ బార్‌పై రెండుసార్లు నొక్కడం వలన చుక్క, దాని ప్రక్కన అంతరం చొప్పించబడుతుంది" + "స్వీయ-పెద్ద అక్షరాలు" + "ప్రతి వాక్యంలో మొదటి అక్షరాన్ని పెద్ద అక్షరం చేయి" + "వ్యక్తిగత నిఘంటువు" + "ప్రధాన నిఘంటువు" + "సవరణ సూచనలను చూపు" + "టైప్ చేసేటప్పుడు సూచిత పదాలను ప్రదర్శించు" + "కించపరిచే పదాలను బ్లాక్ చేయి" + "కించ‌ప‌ర‌చ‌డానికి అవకాశం ఇచ్చే పదాలను సూచించవద్దు" + "స్వీయ-సవరణ" + "స్పేస్ బార్ మరియు విరామ చిహ్నాలు తప్పుగా టైప్ చేసిన పదాలను ఆటోమేటిక్‌గా సరి చేస్తాయి" + "ఆఫ్‌ చేయి" + "మధ్యస్థం" + "తీవ్రం" + "చాలా తీవ్రం" + "తర్వాతి-పదం సూచనలు" + "సూచనలను రూపొందించడంలో మునుపటి పదాన్ని ఉపయోగించు" + "సంజ్ఞ టైపింగ్‌ను ప్రారంభించండి" + "అక్షరాల గుండా స్లైడ్ చేయడం ద్వారా పదాన్ని ఇన్‌పుట్ చేయండి" + "సంజ్ఞ ట్రయిల్‌ను చూపు" + "డైనమిక్ ఫ్లోటింగ్ పరిదృశం" + "పదబంధం సంజ్ఞ" + "స్పేస్ కీకి గ్లైడ్ చేయడం ద్వారా సంజ్ఞల సమయంలో అంతరాలను ఇన్‌పుట్ చేయండి" + "ఆంగ్లం (యుకె)" + "ఆంగ్లం (యుఎస్)" + "స్పానిష్ (యుఎస్)" + "హింగ్లీష్" + "సెర్బియన్ (లాటిన్)" + "%s (సాంప్రదాయకం)" + "%s (కాంపాక్ట్)" + "భాష లేదు" + "ఎమోజి" + "జోడించండి" + "తీసివేయి" + "సేవ్ చేయి" + "భాష" + "లేఅవుట్" + "కీని నొక్కినప్పుడు వైబ్రేషన్ వ్యవధి" + "కీని నొక్కినప్పుడు చేసే ధ్వని వాల్యూమ్" + "కీని ఎక్కువసేపు నొక్కి ఉంచాల్సిన సమయంలో ఆలస్యం" + "భౌతిక కీబోర్డ్ కోసం ఎమోజి" + "భౌతిక Alt కీ ఎమోజి ఫలకాన్ని చూపుతుంది" + "డిఫాల్ట్" + %sకు స్వాగతం\" + "సంజ్ఞ టైపింగ్‌తో" + "ప్రారంభించండి" + %sని సెటప్ చేయడం\" + %sని ప్రారంభించండి\" + "దయచేసి మీ భాషలు & ఇన్‌పుట్ సెట్టింగ్‌ల్లో \"%s\" తనిఖీ చేయండి. ఇది మీ పరికరంలో అమలు కావడానికి దీన్ని ప్రామాణీకరిస్తుంది." + "సెట్టింగ్‌ల్లో ప్రారంభించండి" + %sకు మారండి\" + "తర్వాత, \"%s\"ని మీ సక్రియ వచన-ఇన్‌పుట్ పద్ధతిగా ఎంచుకోండి." + "ఇన్‌పుట్ పద్ధతులను మార్చు" + "అభినందనలు, మీరు అంతా పూర్తి చేసారు!" + "ఇప్పుడు మీరు %sతో మీకు ఇష్టమైన అన్ని అనువర్తనాల్లో టైప్ చేయవచ్చు." + "పూర్తయింది" + "యాప్‌ చిహ్నాన్ని చూపు" + "లాంచర్‌లో యాప్‌ చిహ్నాన్ని ప్రదర్శించు" + "ఇతర నిఘంటువులు" + "నిఘంటువు అందుబాటులో ఉంది" + "సెట్టింగ్‌లు" + "తొలగించు" + "వెర్షన్ %1$s" + "షార్ట్‌కట్:" + "భాష:" + "పదాన్ని టైప్ చేయండి" + "ఐచ్ఛిక షార్ట్‌కట్" + "పదాన్ని సవరించు" + "అన్ని భాషల కోసం" + "మరిన్ని భాషలు…" + సంఖ్యల వరుసను ఎల్లప్పుడూ చూపండి + అజ్ఞాత పద్దతి ప్రయోగించండి + "ఇన్‌పుట్ పద్ధతిని ఎంచుకోండి" + కొత్త పదముల అభ్యాసమును ఆపండి + ఇన్పుట్ పద్దతి మార్చుటకు స్పేస్ కీ వాడండి + కీబోర్డ్ ఎత్తు కొలత + ఇన్పుట్ పద్దతి ఎంపిక కొరకు స్పేస్ కీ ని కొద్ది సేపు నొక్కి ఉంచండి + క్లిప్ బోర్డ్ హిస్టరీ + సూచనలు + ప్రయోగాత్మకము + సరిదిద్దుట + వివధములు + పరిమితి లేదు + మరికొన్ని కీస్ + సంఖ్యల వరుస + ఓపెన్ బోర్డ్ స్పెల్ల్ చెకర్ + ఓపెన్ బోర్డ్ స్పెల్ చెకర్ సెటింగ్స్ + కీ సూచనలు చూపండి + పరికరము యొక్క సాంకేతికతను బట్టి విద్యుత్ వినియోగము తగ్గించవచ్చు + అదనపు కీస్ + "చర్య రద్దు చేయి" + "చర్యను పునరావృతం చేయి" + "సూచనలను మెరుగుపరచడానికి మీ కమ్యూనికేషన్‌లు మరియు టైప్ చేయబడిన డేటా నుండి తెలుసుకోండి" + "వెళ్లు" + "తర్వాత" + "మునుపటి" + "పూర్తి" + "పంపు" + "వెతుకు" + "పాజ్ చేయి" + "వేచి ఉ." diff --git a/app/src/main/res/values-tg/strings.xml b/app/src/main/res/values-tg/strings.xml new file mode 100644 index 0000000000..0d9d4929d0 --- /dev/null +++ b/app/src/main/res/values-tg/strings.xml @@ -0,0 +1,8 @@ + + + Ғалатёби Имлоӣ HeliBoard + Танзимоти HeliBoard + Танзимоти Ғалатёби Имлоӣ HeliBoard + пайдо кардани иоми мухотабин + Тарҳзамина + \ No newline at end of file diff --git a/app/src/main/res/values-th/bools.xml b/app/src/main/res/values-th/bools.xml index 840d20c218..8693f6e1ec 100644 --- a/app/src/main/res/values-th/bools.xml +++ b/app/src/main/res/values-th/bools.xml @@ -1,21 +1,7 @@ diff --git a/app/src/main/res/values-th/strings-action-keys.xml b/app/src/main/res/values-th/strings-action-keys.xml deleted file mode 100644 index 1e828a1c00..0000000000 --- a/app/src/main/res/values-th/strings-action-keys.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - "เริ่ม" - "ถัดไป" - "ก่อน" - "เสร็จ" - "ส่ง" - "ค้นหา" - "หยุด" - "รอ" - diff --git a/app/src/main/res/values-th/strings-config-important-notice.xml b/app/src/main/res/values-th/strings-config-important-notice.xml deleted file mode 100644 index 3f0b6034a0..0000000000 --- a/app/src/main/res/values-th/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "เรียนรู้จากการสื่อสารและข้อมูลที่พิมพ์ของคุณเพื่อปรับปรุงคำแนะนำ" - diff --git a/app/src/main/res/values-th/strings-emoji-descriptions.xml b/app/src/main/res/values-th/strings-emoji-descriptions.xml deleted file mode 100644 index 6d1a9614c6..0000000000 --- a/app/src/main/res/values-th/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "เครื่องหมายลิขสิทธิ์" - "เครื่องหมายการค้าจดทะเบียน" - "เครื่องหมายอัศเจรีย์ 2 ตัว" - "เครื่องหมายอัศเจรีย์และคำถาม" - "สัญลักษณ์เครื่องหมายการค้า" - "แหล่งข้อมูล" - "ลูกศรชี้ซ้ายและขวา" - "ลูกศรชี้บนและล่าง" - "ลูกศรเฉียงบนซ้าย" - "ลูกศรเฉียงบนขวา" - "ลูกศรเฉียงล่างขวา" - "ลูกศรเฉียงล่างซ้าย" - "ลูกศรชี้ซ้ายงอเป็นตะขอ" - "ลูกศรชี้ขวางอเป็นตะขอ" - "นาฬิกา" - "นาฬิกาทราย" - - - - - "สามเหลี่ยมซ้อน 2 ชั้นปลายชี้ไปทางขวาสีดำ" - "สามเหลี่ยมซ้อน 2 ชั้นปลายชี้ไปทางซ้ายสีดำ" - "สามเหลี่ยมซ้อน 2 ชั้นปลายชี้ขึ้นสีดำ" - "สามเหลี่ยมซ้อน 2 ชั้นปลายชี้ลงสีดำ" - - - - - - - "นาฬิกาปลุก" - - - - - "นาฬิกาทรายที่ทรายกำลังไหล" - - - - - - - "ตัวอักษร M แบบละตินตัวพิมพ์ใหญ่มีวงกลมล้อมรอบ" - "สี่เหลี่ยมจัตุรัสเล็กสีดำ" - "สี่เหลี่ยมจัตุรัสเล็กสีขาว" - "สามเหลี่ยมปลายชี้ไปทางขวาสีดำ" - "สามเหลี่ยมปลายชี้ไปทางซ้ายสีดำ" - "สี่เหลี่ยมจัตุรัสขนาดกลางสีขาว" - "สี่เหลี่ยมจัตุรัสขนาดกลางสีดำ" - "สี่เหลี่ยมจัตุรัสเล็กปานกลางสีขาว" - "สี่เหลี่ยมจัตุรัสเล็กปานกลางสีดำ" - "พระอาทิตย์และรัศมีสีดำ" - "เมฆ" - - - - - - - "โทรศัพท์สีดำ" - "ช่องที่มีเครื่องหมายถูก" - "ร่มและหยดฝน" - "เครื่องดื่มร้อน" - - - "นิ้วชี้ชี้ขึ้นสีขาว" - - - - - - - - - - - - - - - - - - - "หน้ายิ้มสีขาว" - "ราศีเมษ" - "ราศีพฤษภ" - "ราศีเมถุน" - "ราศีกรกฎ" - "ราศีสิงห์" - "ราศีกันย์" - "ราศีตุลย์" - "ราศีพิจิก" - "ราศีธนู" - "ราศีมังกร" - "ราศีกุมภ์" - "ราศีมีน" - "ชุดไพ่รูปโพดำ" - "ชุดไพ่รูปดอกจิกสีดำ" - "ชุดไพ่รูปหัวใจสีดำ" - "ชุดไพ่รูปข้าวหลามตัดสีดำ" - "น้ำพุร้อน" - "สัญลักษณ์การรีไซเคิลสากลสีดำ" - "สัญลักษณ์รถเข็น" - - - "สมอ" - - - - - - - - - - - - - "ป้ายคำเตือน" - "สัญญาณแรงดันไฟฟ้าสูง" - "วงกลมสีขาวขนาดกลาง" - "วงกลมสีดำขนาดกลาง" - - - - - "ลูกฟุตบอล" - "เบสบอล" - "มนุษย์หิมะไม่มีหิมะ" - "ดวงอาทิตย์หลังเมฆ" - - - "ราศีคนแบกงู" - - - - - - - "ห้ามเข้า" - - - "โบสถ์" - - - - - "น้ำพุ" - "ธงปักในหลุม" - - - "เรือใบ" - - - - - - - "เต็นท์" - "ปั๊มน้ำมัน" - "กรรไกรสีดำ" - "เครื่องหมายเลือกสีขาวแบบหนา" - "เครื่องบิน" - "ซองจดหมาย" - "ยกกำปั้น" - "ยกมือ" - "มือชู 2 นิ้ว" - - - "ดินสอ" - "หัวปากกาสีดำ" - "เครื่องหมายถูกแบบหนา" - "เครื่องหมายคูณแบบหนา" - - - - - "ประกายระยิบระยับ" - "ดอกจัน 8 แฉก" - "ดาว 8 แฉกสีดำ" - "เกล็ดหิมะ" - "ประกาย" - "เครื่องหมายกากบาท" - "เครื่องหมายกากบาทในกรอบสี่เหลี่ยม" - "ตัวเครื่องหมายคำถามสีดำ" - "ตัวเครื่องหมายคำถามสีขาว" - "ตัวเครื่องหมายอัศเจรีย์สีขาว" - "เครื่องหมายอัศเจรีย์แบบหนา" - - - "หัวใจสีดำเข้ม" - "เครื่องหมายบวกแบบหนา" - "เครื่องหมายลบแบบหนา" - "เครื่องหมายหารแบบหนา" - "ลูกศรชี้ขวาสีดำ" - "เส้นม้วนเป็นห่วง" - "เส้นม้วนเป็นห่วง 2 ห่วง" - "ลูกศรโค้งขึ้นทางขวา" - "ลูกศรโค้งลงทางขวา" - "ลูกศรชี้ซ้ายสีดำ" - "ลูกศรขึ้นสีดำ" - "ลูกศรลงสีดำ" - "สี่เหลี่ยมจัตุรัสขนาดใหญ่สีดำ" - "สี่เหลี่ยมจัตุรัสขนาดใหญ่สีขาว" - "ดาวขนาดกลางสีขาว" - "วงกลมใหญ่หนา" - "ขีดคลื่น" - "เครื่องหมายบ่งบอกว่าคำพูดนี้มาจากเพลงหรือเป็นเพลง" - "ตัวอักษรหมายถึงแสดงความยินดีที่มีวงกลมล้อมรอบ" - "ตัวอักษรหมายถึงความลับที่มีวงกลมล้อมรอบ" - "ไพ่นกกระจอกรูปมังกรแดง" - "ไพ่โจกเกอร์สีดำ" - "กรุ๊ปเลือด A" - "กรุ๊ปเลือด B" - "กรุ๊ปเลือด O" - "ที่จอดรถ" - "กรุ๊ปเลือด AB" - "CL ในสี่เหลี่ยม" - "COOL ในสี่เหลี่ยม" - "FREE ในสี่เหลี่ยม" - "ID ในสี่เหลี่ยม" - "NEW ในสี่เหลี่ยม" - "NG ในสี่เหลี่ยม" - "OK ในสี่เหลี่ยม" - "SOS ในสี่เหลี่ยม" - "UP และอัศเจรีย์ในสี่เหลี่ยม" - "VS ในสี่เหลี่ยม" - "ตัวอักษรคาตาคานะ \"ที่นี่\" ในสี่เหลี่ยม" - "ตัวอักษรคาตาคานะ \"บริการ\" ในสี่เหลี่ยม" - "ตัวอักษรแสดงความหมาย \"ไม่มีค่าบริการ\" ในสี่เหลี่ยม" - "ตัวอักษรแสดงความหมาย \"ที่นั่งที่จองแล้ว\" ในสี่เหลี่ยม" - "ตัวอักษรแสดงความหมาย \"ข้อห้าม\" ในสี่เหลี่ยม" - "ตัวอักษรแสดงความหมาย \"ว่าง\" ในสี่เหลี่ยม" - "ตัวอักษรแสดงความหมาย \"การยอมรับ\" ในสี่เหลี่ยม" - "ตัวอักษรแสดงความหมาย \"เต็ม\" ในสี่เหลี่ยม" - "ตัวอักษรแสดงความหมาย \"จ่ายแล้ว\" ในสี่เหลี่ยม" - "ตัวอักษรแสดงความหมาย \"รายเดือน\" ในสี่เหลี่ยม" - "ตัวอักษรแสดงความหมาย \"แอปพลิเคชัน\" ในสี่เหลี่ยม" - "ตัวอักษรแสดงความหมาย \"ส่วนลด\" ในสี่เหลี่ยม" - "ตัวอักษรแสดงความหมาย \"มีธุระ\" ในสี่เหลี่ยม" - "ตัวอักษรแสดงความหมาย \"ข้อได้เปรียบ\" ในวงกลม" - "ตัวอักษรแสดงความหมาย \"ยอมรับ\" ในวงกลม" - "ไซโคลน" - "หมอก" - "ร่มหุบ" - "ค่ำคืนที่มีดาว" - "ดวงอาทิตย์ขึ้นเหนือภูเขา" - "ดวงอาทิตย์ขึ้น" - "ทิวทัศน์เมืองในยามค่ำ" - "ดวงอาทิตย์ตกเหนือสิ่งปลูกสร้าง" - "รุ้ง" - "สะพานยามค่ำคืน" - "คลื่นน้ำ" - "ภูเขาไฟ" - "ทางช้างเผือก" - "แผนที่โลกทวีปยุโรป-แอฟริกา" - "แผนที่โลกทวีปอเมริกา" - "แผนที่โลกทวีปเอเชีย-ออสเตรเลีย" - "แผนที่โลกมีเส้นเมริเดียน" - "สัญลักษณ์วันเดือนดับ" - "สัญลักษณ์ดวงจันทร์เสี้ยวข้างขึ้น" - "สัญลักษณ์ดวงจันทร์ครึ่งดวงครั้งแรก" - "สัญลักษณ์ดวงจันทร์ค่อนดวงข้างขึ้น" - "สัญลักษณ์ดวงจันทร์เต็มดวง" - "สัญลักษณ์ดวงจันทร์ค่อนดวงข้างแรม" - "สัญลักษณ์ดวงจันทร์ครึ่งดวงครั้งสุดท้าย" - "สัญลักษณ์ดวงจันทร์เสี้ยวข้างแรม" - "ดวงจันทร์เสี้ยว" - "จันทร์ดับมีรูปหน้า" - "ดวงจันทร์ครึ่งดวงข้างขึ้นมีรูปหน้า" - "ดวงจันทร์ครึ่งดวงข้างแรมมีรูปหน้า" - "ดวงจันทร์เต็มดวงมีรูปหน้า" - "ดวงอาทิตย์มีรูปหน้า" - "ดาวส่องแสง" - "ดาวตก" - - - - - - - - - - - - - - - - - - - - - - - - - - - "เกาลัด" - "ต้นกล้า" - "ต้นสน" - "ต้นไม้ผลัดใบ" - "ต้นปาล์ม" - "ต้นกระบองเพชร" - - - "ดอกทิวลิป" - "ดอกซากุระ" - "ดอกกุหลาบ" - "ดอกชบา" - "ดอกทานตะวัน" - "ดอกไม้บาน" - "ฝักข้าวโพด" - "รวงข้าว" - "สมุนไพร" - "ใบโคลเวอร์ 4 แฉก" - "ใบเมเปิ้ล" - "ใบไม้ร่วง" - "ใบไม้ปลิวในสายลม" - "เห็ด" - "มะเขือเทศ" - "มะเขือยาว" - "องุ่น" - "เมลอน" - "แตงโม" - "ส้มเขียวหวาน" - "มะนาว" - "กล้วย" - "สับปะรด" - "แอปเปิ้ลแดง" - "แอปเปิ้ลเขียว" - "ลูกแพร์" - "ลูกพีช" - "เชอร์รี่" - "สตรอเบอร์รี่" - "แฮมเบอร์เกอร์" - "ชิ้นพิซซ่า" - "เนื้อหุ้มกระดูก" - "น่องไก่" - "ข้าวอบกรอบ" - "ข้าวปั้น" - "ข้าวสวย" - "ข้าวราดแกง" - "ชามอาหารยังร้อน" - "สปาเก็ตตี้" - "ขนมปัง" - "มันฝรั่งทอด" - "มันเทศเผา" - "ดังโกะ" - "โอเด้ง" - "ซูชิ" - "กุ้งทอด" - "แผ่นลูกชิ้นปลาลายขด" - "ซอฟต์ไอศกรีม" - "น้ำแข็งใส" - "ไอศกรีม" - "โดนัท" - "คุกกี้" - "ช็อกโกแลตแท่ง" - "ลูกกวาด" - "อมยิ้ม" - "คัสตาร์ด" - "โถน้ำผึ้ง" - "ชอร์ตเค้ก" - "ข้าวกล่อง" - "หม้อต้มอาหาร" - "การทำอาหาร" - "ส้อมและมีด" - "ถ้วยน้ำชาไม่มีหู" - "ขวดเหล้าสาเกและถ้วย" - "แก้วไวน์" - "แก้วค็อกเทล" - "เครื่องดื่มคลายร้อน" - "แก้วเบียร์" - "ชนแก้วเบียร์" - "ขวดนมเด็ก" - - - - - - - "ริบบิ้น" - "กล่องของขวัญ" - "เค้กวันเกิด" - "โคมฟักทอง" - "ต้นคริสต์มาส" - "ซานตาคลอส" - "ดอกไม้ไฟ" - "ประกายดอกไม้ไฟ" - "ลูกโป่ง" - "พลุสายรุ้งสำหรับปาร์ตี้" - "ลูกบอลบรรจุกระดาษสี" - "ต้นทะนะบะตะ" - "ธงไขว้" - "เครื่องประดับไม้สน" - "ตุ๊กตาญี่ปุ่น" - "ธงปลาคาร์ฟ" - "กระดิ่งลม" - "พิธีชมจันทร์" - "กระเป๋านักเรียน" - "หมวกรับปริญญา" - - - - - - - - - - - - - - - "ม้าหมุน" - "ชิงช้าสวรรค์" - "รถไฟเหาะ" - "เบ็ดตกปลาและปลา" - "ไมโครโฟน" - "กล้องถ่ายภาพยนตร์" - "โรงภาพยนตร์" - "หูฟัง" - "จานสี" - "หมวกทรงสูง" - "เต็นท์ละครสัตว์" - "ตั๋ว" - "สเลท" - "ศิลปะการแสดง" - "เกมวิดีโอ" - "เข้าเป้า" - "เครื่องหยอดเหรียญเล่นพนัน" - "บิลเลียด" - "ลูกเต๋า" - "โบว์ลิ่ง" - "ไพ่ดอกไม้" - "โน้ตเพลง" - "โน้ตเพลงหลายตัว" - "แซ็กโซโฟน" - "กีตาร์" - "คีย์บอร์ดเล่นเพลง" - "ทรัมเป็ต" - "ไวโอลิน" - "โน้ตเพลง" - "เสื้อใส่วิ่งมีแถบเฉียง" - "ไม้และลูกเทนนิส" - "สกีและรองเท้าสกี" - "บาสเก็ตบอลและห่วง" - "ธงตราหมากรุก" - "นักเล่นสโนว์บอร์ด" - "นักวิ่ง" - "นักโต้คลื่น" - - - "ถ้วยรางวัล" - "การแข่งม้า" - "อเมริกันฟุตบอล" - "รักบี้" - "นักว่ายน้ำ" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "บ้าน" - "บ้านพร้อมสวน" - "อาคารสำนักงาน" - "ไปรษณีย์ญี่ปุ่น" - "ไปรษณีย์ยุโรป" - "โรงพยาบาล" - "ธนาคาร" - "ตู้เอทีเอ็ม" - "โรงแรม" - "โรงแรมสำหรับคู่รัก" - "ร้านสะดวกซื้อ" - "โรงเรียน" - "ห้างสรรพสินค้า" - "โรงงาน" - "โคมไฟญี่ปุ่น" - "ปราสาทญี่ปุ่น" - "ปราสาทยุโรป" - - - - - - - - - - - - - - - - - - - - - - - - - "หนูนา" - "หนู" - "วัว" - "ควาย" - "วัว" - - - "เสือดาว" - "กระต่าย" - "แมว" - "มังกร" - "จระเข้" - "ปลาวาฬ" - "หอยทาก" - "งู" - "ม้า" - "แกะตัวผู้" - "แพะ" - "แกะ" - "ลิง" - "ไก่ตัวผู้" - "ไก่" - "สุนัข" - "หมู" - "หมูป่าตัวผู้" - "ช้าง" - "ปลาหมึก" - "หอยโข่ง" - "แมลง" - "มด" - "ผึ้ง" - "แมลงเต่าทอง" - "ปลา" - "ปลาในเขตร้อน" - "ปลาปักเป้า" - "เต่า" - "ไข่ฟักตัว" - "ลูกเจี๊ยบ" - "ลูกเจี๊ยบหันหน้า" - "นก" - "เพนกวิน" - "โคอาลา" - "พุดเดิ้ล" - "อูฐหนอกเดียว" - "อูฐ 2 หนอก" - "ปลาโลมา" - "หน้าหนู" - "หน้าวัว" - "หน้าเสือ" - "หน้ากระต่าย" - "หน้าแมว" - "หน้ามังกร" - "ปลาวาฬพ่นน้ำ" - "หน้าม้า" - "หน้าลิง" - "หน้าสุนัข" - "หน้าหมู" - "หน้ากบ" - "หน้าหนูแฮมสเตอร์" - "หน้าหมาป่า" - "หน้าหมี" - "หน้าแพนด้า" - "จมูกหมู" - "รอยอุ้งเท้า" - - - "ตา" - - - "หู" - "จมูก" - "ปาก" - "ลิ้น" - "นิ้วชี้หลังมือสีขาวชี้ขึ้น" - "นิ้วชี้หลังมือสีขาวชี้ลง" - "นิ้วชี้หลังมือสีขาวชี้ไปทางซ้าย" - "นิ้วชี้หลังมือสีขาวชี้ไปทางขวา" - "เครื่องหมายกำปั้น" - "เครื่องหมายโบกมือ" - "เครื่องหมายทำท่า \"OK\"" - "เครื่องหมายยกนิ้วโป้งขึ้น" - "เครื่องหมายคว่ำนิ้วโป้งลง" - "เครื่องหมายปรบมือ" - "เครื่องหมายแบมือ" - "มงกุฎ" - "หมวกผู้หญิง" - "แว่นตา" - "เนกไท" - "เสื้อยืด" - "กางเกงยีนส์" - "เสื้อชุดสตรี" - "ชุดกิโมโน" - "บิกินี่" - "เสื้อผ้าสตรี" - "กระเป๋าสตางค์" - "กระเป๋าถือ" - "กระเป๋า" - "รองเท้าผู้ชาย" - "รองเท้านักกีฬา" - "รองเท้าส้นสูง" - "รองเท้าแตะผู้หญิง" - "รองเท้าบูทผู้หญิง" - "รอยเท้า" - "ภาพเงาคนจากหัวถึงช่วงหน้าอก" - "ภาพเงาคนหลายคนจากหัวถึงช่วงหน้าอก" - "เด็กชาย" - "เด็กหญิง" - "ผู้ชาย" - "ผู้หญิง" - "ครอบครัว" - "ผู้ชายและผู้หญิงจับมือกัน" - "ผู้ชาย 2 คนจับมือกัน" - "ผู้หญิง 2 คนจับมือกัน" - "เจ้าหน้าที่ตำรวจ" - "ผู้หญิงติดหูกระต่าย" - "เจ้าสาวมีผ้าคลุมหน้า" - "คนมีผมบลอนด์" - "ชายสวมหมวกแบบจีน" - "คนสวมผ้าโพกหัว" - "ผู้ชายอาวุโส" - "ผู้หญิงอาวุโส" - "ทารก" - "คนงานก่อสร้าง" - "เจ้าหญิง" - "ปีศาจญี่ปุ่น" - "ปีศาจญี่ปุ่น" - "ผี" - "ทูตสวรรค์น้อย" - "มนุษย์ต่างดาว" - "ปีศาจต่างดาว" - "ภูตน้อย" - "กะโหลกศีรษะ" - "ผู้ให้บริการข้อมูล" - "องครักษ์" - "นักเต้น" - "ลิปสติก" - "ยาทาเล็บ" - "การนวดหน้า" - "ตัดผม" - "ไฟหมุนหน้าร้านตัดผม" - "เข็มฉีดยา" - "ยา" - "เครื่องหมายจูบ" - "จดหมายรัก" - "แหวน" - "หินอัญมณี" - "จูบ" - "ช่อดอกไม้" - "คู่รักและรูปหัวใจ" - "การแต่งงาน" - "หัวใจเต้น" - "หัวใจแตกสลาย" - "หัวใจ 2 ดวง" - "หัวใจเป็นประกาย" - "หัวใจพองโต" - "หัวใจมีลูกศร" - "หัวใจสีฟ้า" - "หัวใจสีเขียว" - "หัวใจสีเหลือง" - "หัวใจสีม่วง" - "หัวใจพาดริบบิ้น" - "หัวใจหมุน" - "ลายรูปหัวใจ" - "รูปเพชรมีจุดภายใน" - "หลอดไฟฟ้า" - "สัญลักษณ์ความโกรธ" - "ระเบิด" - "สัญลักษณ์การนอนหลับ" - "สัญลักษณ์การชนกัน" - "สัญลักษณ์เหงื่อกระเด็น" - "หยดน้ำ" - "สัญลักษณ์ยัติภาค" - "กองอุจจาระ" - "เกร็งกล้ามแขนส่วนบน" - "สัญลักษณ์วิงเวียน" - "บอลลูนคำพูด" - "บอลลูนความคิด" - "ดอกไม้สีขาว" - "สัญลักษณ์ร้อยเต็ม" - "ถุงเงิน" - "แลกเปลี่ยนเงินตรา" - "เครื่องหมายดอลลาร์แบบหนา" - "บัตรเครดิต" - "ธนบัตรมีสัญลักษณ์เงินเยน" - "ธนบัตรมีสัญลักษณ์เงินดอลลาร์" - "ธนบัตรมีสัญลักษณ์เงินยูโร" - "ธนบัตรมีสัญลักษณ์เงินปอนด์" - "เงินมีปีก" - "แผนภูมิมีแนวโน้มขาขึ้นและสัญลักษณ์เงินเยน" - "ที่นั่ง" - "คอมพิวเตอร์ส่วนบุคคล" - "กระเป๋าเอกสาร" - "ดิสก์ขนาดเล็ก" - "ฟลอปปี้ดิสก์" - "จานแสง" - "ดีวีดี" - "โฟลเดอร์ไฟล์" - "โฟลเดอร์ไฟล์เปิดอยู่" - "หน้ากระดาษม้วนขึ้น" - "หน้าหงายขึ้น" - "ปฏิทิน" - "ปฏิทินแบบฉีก" - "ดัชนีบัตร" - "แผนภูมิมีแนวโน้มขาขึ้น" - "แผนภูมิมีแนวโน้มขาลง" - "กราฟแท่ง" - "คลิปบอร์ด" - "หมุดปัก" - "หมุดปักหัวกลม" - "คลิปหนีบกระดาษ" - "ไม้บรรทัดตรง" - "ไม้ฉาก" - "แถบคั่นหนังสือ" - "สมุดบัญชีแยกประเภท" - "สมุดบันทึก" - "สมุดบันทึกมีลายที่ปก" - "หนังสือปิดอยู่" - "หนังสือเปิดอยู่" - "หนังสือสีเขียว" - "หนังสือสีฟ้า" - "หนังสือสีส้ม" - "กองหนังสือ" - "ป้ายชื่อ" - "ม้วนกระดาษ" - "บันทึก" - "เครื่องรับโทรศัพท์" - "เพจเจอร์" - "เครื่องแฟกซ์" - "จานดาวเทียม" - "ตู้ลำโพงกลางแจ้ง" - "โทรโข่งเชียร์" - "ถาดกล่องขาออก" - "ถาดกล่องขาเข้า" - "พัสดุ" - "สัญลักษณ์อีเมล" - "ซองจดหมายเข้ามาใหม่" - "ซองจดหมายมีลูกศรชี้ลงอยู่ข้างบน" - "กล่องจดหมายปิดที่ธงคว่ำลง" - "กล่องจดหมายปิดที่ธงยกขึ้น" - "กล่องจดหมายเปิดที่ธงยกขึ้น" - "กล่องจดหมายเปิดที่ธงคว่ำลง" - "ตู้ไปรษณีย์" - "แตรไปรษณีย์" - "หนังสือพิมพ์" - "โทรศัพท์มือถือ" - "โทรศัพท์มือถือมีลูกศรชี้ไปทางขวาอยู่ด้านซ้าย" - "โหมดการสั่น" - "โทรศัพท์มือถือปิดเครื่อง" - "ไม่มีโทรศัพท์มือถือ" - "เสาอากาศมีแถบสัญญาณ" - "กล้องถ่ายรูป" - - - "กล้องวิดีโอ" - "โทรทัศน์" - "วิทยุ" - "วิดีโอเทป" - - - - - "ลูกศรบิดไปทางขวา" - "ลูกศรชี้ไปทางขวาและทางซ้ายตามเข็มนาฬิกาเป็นวงกลมเปิด" - "ลูกศรชี้ไปทางขวาและทางซ้ายตามเข็มนาฬิกาเป็นวงกลมเปิดที่มีเลข 1 ในวงกลม" - "ลูกศรชี้ลงและขึ้นตามเข็มนาฬิกาเป็นวงกลมเปิด" - "ลูกศรชี้ลงและขึ้นทวนเข็มนาฬิกาเป็นวงกลมเปิด" - "สัญลักษณ์ความสว่างต่ำ" - "สัญลักษณ์ความสว่างสูง" - "ลำโพงมีเส้นขีดทับ" - "ลำโพง" - "ลำโพงมีคลื่นเสียง 1 คลื่น" - "ลำโพงมีคลื่นเสียง 3 คลื่น" - "แบตเตอรี่" - "ปลั๊กไฟ" - "แว่นขยายส่องไปทางซ้าย" - "แว่นขยายส่องไปทางขวา" - "กุญแจและปากกาหมึกซึม" - "กุญแจล็อกและลูกกุญแจ" - "ลูกกุญแจ" - "กุญแจล็อก" - "กุญแจปลดล็อก" - "ระฆัง" - "ระฆังมีเส้นขีดทับ" - "ที่คั่นหนังสือ" - "สัญลักษณ์เชื่อมโยง" - "ปุ่มตัวเลือก" - "ข้อความ \"BACK\" และลูกศรชี้ซ้ายอยู่ด้านบน" - "ข้อความ \"END\" และลูกศรชี้ซ้ายอยู่ด้านบน" - "ข้อความ \"ON\" พร้อมอัศเจรีย์และลูกศรชี้ซ้ายและขวาอยู่ด้านบน" - "ข้อความ \"SOON\" และลูกศรชี้ขวาอยู่ด้านบน" - "ข้อความ \"TOP\" และลูกศรชี้ขึ้นอยู่ด้านบน" - "สัญลักษณ์ห้ามผู้มีอายุต่ำกว่า 18 ปี" - "ปุ่มกดเลข 10" - "สัญลักษณ์การป้อนข้อมูลตัวอักษรละตินพิมพ์ใหญ๋" - "สัญลักษณ์การป้อนข้อมูลตัวอักษรละตินพิมพ์เล็ก" - "สัญลักษณ์การป้อนข้อมูลตัวเลข" - "สัญลักษณ์การป้อนเครื่องหมาย" - "สัญลักษณ์การป้อนข้อมูลตัวอักษรละติน" - "ไฟ" - "ไฟฉาย" - "ประแจ" - "ค้อน" - "แป้นเกลียวและสลักเกลียว" - "มีดทำครัว" - "ปืนพก" - "กล้องจุลทรรศน์" - "กล้องโทรทรรศน์" - "ลูกแก้ว" - "ดาว 6 แฉกมีจุดตรงกลาง" - "สัญลักษณ์ญี่ปุ่นแทนการเริ่มต้น" - "สัญลักษณ์ตรีศูล" - "ปุ่มสี่เหลี่ยมสีดำ" - "ปุ่มสี่เหลี่ยมสีขาว" - "วงกลมสีแดงขนาดใหญ่" - "วงกลมสีฟ้าขนาดใหญ่" - "เพชรสีส้มขนาดใหญ่" - "เพชรสีฟ้าขนาดใหญ่" - "เพชรสีส้มขนาดเล็ก" - "เพชรสีฟ้าขนาดเล็ก" - "สามเหลี่ยมปลายชี้ขึ้นสีแดง" - "สามเหลี่ยมปลายชี้ลงสีแดง" - "สามเหลี่ยมเล็กปลายชี้ขึ้นสีแดง" - "สามเหลี่ยมเล็กปลายชี้ลงสีแดง" - - - - - - - - - - - - - "นาฬิกาบอกเวลา 1 นาฬิกา" - "นาฬิกาบอกเวลา 2 นาฬิกา" - "นาฬิกาบอกเวลา 3 นาฬิกา" - "นาฬิกาบอกเวลา 4 นาฬิกา" - "นาฬิกาบอกเวลา 5 นาฬิกา" - "นาฬิกาบอกเวลา 6 นาฬิกา" - "นาฬิกาบอกเวลา 7 นาฬิกา" - "นาฬิกาบอกเวลา 8 นาฬิกา" - "นาฬิกาบอกเวลา 9 นาฬิกา" - "นาฬิกาบอกเวลา 10 นาฬิกา" - "นาฬิกาบอกเวลา 11 นาฬิกา" - "นาฬิกาบอกเวลา 12 นาฬิกา" - "นาฬิกาบอกเวลา 1 นาฬิกา 30 นาที" - "นาฬิกาบอกเวลา 2 นาฬิกา 30 นาที" - "นาฬิกาบอกเวลา 3 นาฬิกา 30 นาที" - "นาฬิกาบอกเวลา 4 นาฬิกา 30 นาที" - "นาฬิกาบอกเวลา 5 นาฬิกา 30 นาที" - "นาฬิกาบอกเวลา 6 นาฬิกา 30 นาที" - "นาฬิกาบอกเวลา 7 นาฬิกา 30 นาที" - "นาฬิกาบอกเวลา 8 นาฬิกา 30 นาที" - "นาฬิกาบอกเวลา 9 นาฬิกา 30 นาที" - "นาฬิกาบอกเวลา 10 นาฬิกา 30 นาที" - "นาฬิกาบอกเวลา 11 นาฬิกา 30 นาที" - "นาฬิกาบอกเวลา 12 นาฬิกา 30 นาที" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "ภูเขาฟูจิ" - "หอคอยโตเกียว" - "อนุสาวรีย์เทพีเสรีภาพ" - "ภาพเงาประเทศญี่ปุ่น" - "โมอาย" - "หน้ายิ้มเห็นฟัน" - "หน้ายิ้มยิงฟันและตายิ้ม" - "หน้าที่มีน้ำตาแห่งความสุข" - "หน้ายิ้มและอ้าปาก" - "หน้ายิ้มอ้าปากและมีตายิ้ม" - "หน้ายิ้มอ้าปากและเหงื่อตก" - "หน้ายิ้มอ้าปากและหยีตา" - "หน้ายิ้มมีวงรัศมี" - "หน้ายิ้มมีเขา" - "หน้าขยิบตา" - "หน้ายิ้มและตายิ้ม" - "หน้าได้ลิ้มรสอาหารอร่อย" - "หน้าผ่อนคลาย" - "หน้ายิ้มและตาเป็นรูปหัวใจ" - "หน้ายิ้มใส่แว่นกันแดด" - "หน้ายิ้มเยาะ" - "หน้าเมินเฉย" - "หน้าไร้อารมณ์" - "หน้ารู้สึกรำคาญ" - "หน้ามีเหงื่อตก" - "หน้าหม่นหมอง" - "หน้าสับสน" - "หน้าอึดอัด" - "หน้าทำปากจูบ" - "หน้าส่งจูบ" - "หน้าทำปากจูบและมีตายิ้ม" - "หน้าทำปากจูบและปิดตา" - "หน้าแลบลิ้น" - "หน้าแลบลิ้นและขยิบตา" - "หน้าแลบลิ้นและทำตาหยี" - "หน้าผิดหวัง" - "หน้าวิตกกังวล" - "หน้าโกรธ" - "หน้ามุ่ย" - "หน้าร้องไห้" - "หน้าเอาจริงเอาจัง" - "หน้าต้องการเอาชนะ" - "หน้าผิดหวังแต่ผ่อนคลาย" - "หน้าบึ้งอ้าปาก" - "หน้าแสดงความเจ็บปวด" - "หน้าหวาดกลัว" - "หน้าเหนื่อยล้า" - "หน้าง่วงนอน" - "หน้าเหน็ดเหนื่อย" - "หน้าบูดบึ้ง" - "หน้าร้องไห้เสียงดัง" - "หน้าและปากอ้า" - "หน้าจุ๊ปาก" - "หน้าอ้าปากและเหงื่อตก" - "หน้ากรีดร้องด้วยความกลัว" - "หน้าประหลาดใจ" - "หน้าแดง" - "หน้ากำลังนอนหลับ" - "หน้าวิงเวียน" - "หน้าไม่มีปาก" - "หน้าใส่หน้ากากอนามัย" - "หน้าแมวยิ้มและตายิ้ม" - "หน้าแมวมีน้ำตาแห่งความสุข" - "หน้าแมวยิ้มปากเปิด" - "หน้าแมวยิ้มและตาเป็นรูปหัวใจ" - "หน้าแมวยิ้มมีเลศนัย" - "หน้าแมวทำปากจูบและปิดตา" - "หน้าแมวไม่พอใจ" - "หน้าแมวร้องไห้" - "หน้าแมวเหนื่อยล้า" - - - - - - - - - "หน้าและท่าทางว่าไม่ดี" - "หน้าและท่าทางว่าตกลง" - "คนโค้งคำนับ" - "ลิงปิดตา" - "ลิงปิดหู" - "ลิงปิดปาก" - "คนที่มีความสุขและชูมือ 1 ข้าง" - "คนยกมือทั้ง 2 ข้างเพื่อเฉลิมฉลอง" - "คนหน้าบึ้ง" - "คนหน้ามุ่ย" - "คนพนมมือ" - "จรวด" - "เฮลิคอปเตอร์" - "รถไฟหัวรถจักรไอน้ำ" - "รถไฟราง" - "รถไฟความเร็วสูง" - "รถไฟความเร็วสูงหัวกระสุน" - "รถไฟ" - "รถไฟใต้ดิน" - "รถไฟฟ้า" - "สถานี" - "รถราง" - "รถไฟราง" - "รถประจำทาง" - "รถประจำทางที่กำลังจะมา" - "รถโดยสารไฟฟ้า" - "ป้ายรถประจำทาง" - "รถประจำทางขนาดเล็ก" - "รถพยาบาล" - "รถดับเพลิง" - "รถตำรวจ" - "รถตำรวจที่กำลังจะมา" - "แท็กซี่" - "แท็กซี่ที่กำลังจะมา" - "รถยนต์" - "รถที่กำลังจะมา" - "รถบ้าน" - "รถบรรทุกส่งของ" - "รถบรรทุกพ่วง" - "แทรกเตอร์" - "รถไฟรางเดี่ยว" - "ทางรถไฟบนภูเขา" - "รถรางลอยฟ้า" - "เคเบิลขึ้นเขา" - "เคเบิล" - "เรือ" - "เรือพาย" - "เรือเร็ว" - "สัญญาณไฟจราจรแนวนอน" - "ไฟจราจรแนวตั้ง" - "สัญลักษณ์ก่อสร้าง" - "ไฟหมุนบนรถตำรวจ" - "ธงสามเหลี่ยมบนเสา" - "ประตู" - "ป้ายห้ามเข้า" - "ป้ายสูบบุหรี่" - "สัญลักษณ์ห้ามสูบบุหรี่" - "ป้ายทิ้งขยะในที่ทิ้ง" - "ป้ายห้ามทิ้งขยะ" - "ป้ายน้ำดื่มได้" - "ป้ายน้ำดื่มไม่ได้" - "รถจักรยาน" - "ห้ามรถจักรยาน" - "นักขี่จักรยาน" - "นักขี่จักรยานภูเขา" - "คนเดินเท้า" - "ห้ามเดินเท้า" - "เด็กข้ามถนน" - "สัญลักษณ์ผู้ชาย" - "สัญลักษณ์ผู้หญิง" - "ห้องน้ำ" - "สัญลักษณ์เด็กทารก" - "ห้องน้ำ" - "ห้องส้วม" - "ที่อาบน้ำฝักบัว" - "ห้องอาบน้ำ" - "อ่างอาบน้ำ" - "จุดตรวจหนังสือเดินทาง" - "ศุลกากร" - "จุดรับกระเป๋า" - "จุดวางกระเป๋า" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-th/strings-letter-descriptions.xml b/app/src/main/res/values-th/strings-letter-descriptions.xml deleted file mode 100644 index 84b9b2da80..0000000000 --- a/app/src/main/res/values-th/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "เครื่องหมายกำกับเลขลำดับนามเพศหญิง" - "สัญลักษณ์ไมโคร" - "เครื่องหมายกำกับเลขลำดับนามเพศชาย" - "S ชาร์ป" - "A เติมเกรฟ" - "A เติมอะคิวต์" - "A เติมเซอร์คัมเฟลกซ์" - "A เติมทิลเดอ" - "A เติมไดเอเรซิส" - "A เติมริงด้านบน" - "อักษรรวม A กับ E" - "C เติมซิดิลลา" - "E เติมเกรฟ" - "E เติมอะคิวต์" - "E เติมเซอร์คัมเฟลกซ์" - "E เติมไดเอเรซิส" - "I เติมเกรฟ" - "I เติมอะคิวต์" - "I เติมเซอร์คัมเฟลกซ์" - "I เติมไดเอเรซิส" - "Eth" - "N เติมทิลเดอ" - "O เติมเกรฟ" - "O เติมอะคิวต์" - "O เติมเซอร์คัมเฟลกซ์" - "O เติมทิลเดอ" - "O เติมไดเอเรซิส" - "O เติมสโตรก" - "U เติมเกรฟ" - "U เติมอะคิวต์" - "U เติมเซอร์คัมเฟลกซ์" - "U เติมไดเอเรซิส" - "Y เติมอะคิวต์" - "ธอร์น" - "Y เติมไดเอเรซิส" - "A เติมแมครอน" - "A เติมบรีฟ" - "A เติมออกอแนก" - "C เติมอะคิวต์" - "C เติมเซอร์คัมเฟลกซ์" - "C เติมจุดด้านบน" - "C เติมแครอน" - "D เติมแครอน" - "D เติมสโตรก" - "อี เติมแมครอน" - "อี เติมบรีฟ" - "E เติมจุดด้านบน" - "E เติมออกอแนก" - "E เติมแครอน" - "G เติมเซอร์คัมเฟลกซ์" - "G เติมบรีฟ" - "G เติมจุดด้านบน" - "G เติมซิดิลลา" - "H เติมเซอร์คัมเฟลกซ์" - "H เติมสโตรก" - "I เติมทิลเดอ" - "I เติมแมครอน" - "I เติมบรีฟ" - "I เติมออกอแนก" - "I ไม่มีจุด" - "อักษรรวม I กับ J" - "J เติมเซอร์คัมเฟลกซ์" - "K เติมซิดิลลา" - "Kra" - "L เติมอะคิวต์" - "L เติมซิดิลลา" - "L เติมแครอน" - "L เติมจุดตรงกลาง" - "L เติมสโตรก" - "N เติมอะคิวต์" - "N เติมซิดิลลา" - "N เติมแครอน" - "N นำหน้าด้วยเครื่องหมายอะพอสทรอฟี" - "Eng" - "O เติมแมครอน" - "O เติมบรีฟ" - "O เติมอะคิวต์คู่" - "อักษรรวม O กับ E" - "R เติมอะคิวต์" - "R เติมซิดิลลา" - "R เติมแครอน" - "S เติมอะคิวต์" - "S เติมเซอร์คัมเฟลกซ์" - "S เติมซิดิลลา" - "S เติมแครอน" - "T เติมซิดิลลา" - "T เติมแครอน" - "T เติมสโตรก" - "U เติมทิลเดอ" - "U เติมแมครอน" - "U เติมบรีฟ" - "U เติมริงด้านบน" - "U เติมอะคิวต์คู่" - "U เติมออกอแนก" - "W เติมเซอร์คัมเฟลกซ์" - "Y เติมเซอร์คัมเฟลกซ์" - "Z เติมอะคิวต์" - "Z เติมจุดด้านบน" - "Z เติมแครอน" - "S ยาว" - "O เติมฮอร์น" - "U เติมฮอร์น" - "S เติมจุลภาคด้านล่าง" - "T เติมจุลภาคด้านล่าง" - "ชวา" - "A เติมจุดด้านล่าง" - "A เติมฮุกด้านบน" - "A เติมเซอร์คัมเฟลกซ์และอะคิวต์" - "A เติมเซอร์คัมเฟลกซ์และเกรฟ" - "A เติมเซอร์คัมเฟลกซ์และฮุกด้านบน" - "A เติมเซอร์คัมเฟลกซ์และทิลเดอ" - "A เติมเซอร์คัมเฟลกซ์และจุดด้านล่าง" - "B เติมบรีฟและเกรฟ" - "A เติมบรีฟและเกรฟ" - "A เติมบรีฟและฮุกด้านบน" - "A เติมบรีฟและทิลเดอ" - "A เติมบรีฟและจุดด้านล่าง" - "E เติมจุดด้านล่าง" - "E เติมฮุกด้านบน" - "E เติมทิลเดอ" - "E เติมเซอร์คัมเฟลกซ์และอะคิวต์" - "E เติมเซอร์คัมเฟลกซ์และเกรฟ" - "E เติมเซอร์คัมเฟลกซ์และฮุกด้านบน" - "E เติมเซอร์คัมเฟลกซ์และทิลเดอ" - "E เติมเซอร์คัมเฟลกซ์และจุดด้านล่าง" - "I เติมฮุกด้านบน" - "I เติมจุดด้านล่าง" - "O เติมจุดด้านล่าง" - "O เติมฮุกด้านบน" - "O เติมเซอร์คัมเฟลกซ์และอะคิวต์" - "O เติมเซอร์คัมเฟลกซ์และเกรฟ" - "O เติมเซอร์คัมเฟลกซ์และฮุกด้านบน" - "O เติมเซอร์คัมเฟลกซ์และทิลเดอ" - "O เติมเซอร์คัมเฟลกซ์และจุดด้านล่าง" - "O เติมฮอร์นและอะคิวต์" - "O เติมฮอร์นและเกรฟ" - "O เติมฮอร์นและฮุกด้านบน" - "O เติมฮอร์นและทิวเดอ" - "O เติมฮอร์นและจุดด้านล่าง" - "U เติมจุดด้านล่าง" - "U เติมฮุกด้านบน" - "U เติมฮอร์นและอะคิวต์" - "U เติมฮอร์นและเกรฟ" - "U เติมฮอร์นและฮุกด้านบน" - "U เติมฮอร์นและทิลเดอ" - "U เติมฮอร์นและจุดด้านล่าง" - "Y เติมเกรฟ" - "Y เติมจุดด้านล่าง" - "Y เติมฮุกด้านบน" - "Y เติมทิลเดอ" - "เครื่องหมายอัศเจรีย์คว่ำ" - "เครื่องหมายคำพูดสองขีดชี้ไปทางด้านซ้าย" - "จุดตรงกลาง" - "เลขหนึ่งแบบตัวยก" - "เครื่องหมายคำพูดสองขีดชี้ไปทางด้านขวา" - "เครื่องหมายคำถามคว่ำ" - "เครื่องหมายคำพูดขีดเดียวทางด้านซ้าย" - "เครื่องหมายคำพูดขีดเดียวทางด้านขวา" - "เครื่องหมายคำพูดเลขเก้าต่ำขีดเดียว" - "เครื่องหมายคำพูดสองขีดทางด้านซ้าย" - "เครื่องหมายคำพูดสองขีดทางด้านขวา" - "เครื่องหมายกริช" - "เครื่องหมายกริชคู่" - "สัญลักษณ์พันละ" - "สัญลักษณ์ไพร์ม" - "สัญลักษณ์ไพร์มคู่" - "เครื่องหมายคำพูดขีดเดียวชี้ไปทางด้านซ้าย" - "เครื่องหมายคำพูดขีดเดียวชี้ไปทางด้านขวา" - "เลขสี่แบบตัวยก" - "อักษรละติน n เล็กแบบตัวยก" - "สัญลักษณ์เปโซ" - "Care of" - "ลูกศรชี้ไปทางขวา" - "ลูกศรชี้ลง" - "เซตว่าง" - "การเพิ่ม" - "น้อยกว่าหรือเท่ากับ" - "มากกว่าหรือเท่ากับ" - "ดาวสีดำ" - diff --git a/app/src/main/res/values-th/strings-talkback-descriptions.xml b/app/src/main/res/values-th/strings-talkback-descriptions.xml index 416af053b1..10899bd952 100644 --- a/app/src/main/res/values-th/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-th/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "เสียบชุดหูฟังเพื่อฟังเสียงเมื่อพิมพ์รหัสผ่าน" - "ข้อความปัจจุบันคือ %s" - "ไม่มีข้อความ" - "%1$s แก้ไข %2$s เป็น %3$s" - "%1$s ทำการแก้ไขอัตโนมัติ" - "ไม่มีคำแนะนำ" - "อักขระที่ไม่รู้จัก" - "Shift" - "สัญลักษณ์เพิ่มเติม" - "Shift" - "สัญลักษณ์" - "Shift" - "ลบ" - "สัญลักษณ์" - "ตัวอักษร" - "หมายเลข" - "การตั้งค่า" - "แท็บ" - "วรรค" - "การป้อนข้อมูลด้วยเสียง" - "อีโมจิ" - "ส่งคืน" - "ค้นหา" - "จุด" - "เปลี่ยนภาษา" - "ถัดไป" - "ก่อนหน้า" - "เปิดใช้งาน Shift แล้ว" - "เปิดใช้งาน Caps Lock แล้ว" - "โหมดสัญลักษณ์" - "โหมดสัญลักษณ์เพิ่มเติม" - "โหมดตัวอักษร" - "โหมดโทรศัพท์" - "โหมดสัญลักษณ์โทรศัพท์" - "ซ่อนแป้นพิมพ์แล้ว" - "กำลังแสดงแป้นพิมพ์ %s" - "วันที่" - "วันที่และเวลา" - "อีเมล" - "ข้อความ" - "หมายเลข" - "โทรศัพท์" - "ข้อความ" - "เวลา" - "URL" - "ล่าสุด" - "ผู้คน" - "วัตถุ" - "ธรรมชาติ" - "สถานที่" - "สัญลักษณ์" - "ธง" - "หน้ายิ้มและผู้คน" - "สัตว์เลี้ยงและธรรมชาติ" - "อาหารและเครื่องดื่ม" - "การเดินทางและสถานที่" - "กิจกรรม" - "ไอคอนสื่ออารมณ์" - "%s ตัวใหญ่" - "I ตัวใหญ่" - "I ตัวใหญ่เติมจุดด้านบน" - "สัญลักษณ์ที่ไม่รู้จัก" - "อีโมจิที่ไม่รู้จัก" - "หน้าเบื่อ" - "หน้าอาย" - "หน้าสวมแว่นกันแดด" - "หน้าประหลาดใจ" - "หน้าทำปากจูบ" - "หน้ามุ่ย" - "อักขระทางเลือกพร้อมใช้งาน" - "ปิดอักขระทางเลือกแล้ว" - "ข้อเสนอแนะทางเลือกพร้อมใช้งาน" - "ปิดข้อเสนอแนะทางเลือกแล้ว" + + + "เสียบชุดหูฟังเพื่อฟังเสียงเมื่อพิมพ์รหัสผ่าน" + "ข้อความปัจจุบันคือ %s" + "ไม่มีข้อความ" + "%1$s แก้ไข %2$s เป็น %3$s" + "%1$s ทำการแก้ไขอัตโนมัติ" + "ไม่มีคำแนะนำ" + "อักขระที่ไม่รู้จัก" + "Shift" + "สัญลักษณ์เพิ่มเติม" + "Shift" + "สัญลักษณ์" + "Shift" + "ลบ" + "สัญลักษณ์" + "ตัวอักษร" + "หมายเลข" + "การตั้งค่า" + "แท็บ" + "วรรค" + "การป้อนข้อมูลด้วยเสียง" + "อีโมจิ" + "ส่งคืน" + "ค้นหา" + "จุด" + "เปลี่ยนภาษา" + "ถัดไป" + "ก่อนหน้า" + "เปิดใช้งาน Shift แล้ว" + "เปิดใช้งาน Caps Lock แล้ว" + "โหมดสัญลักษณ์" + "โหมดสัญลักษณ์เพิ่มเติม" + "โหมดตัวอักษร" + "โหมดโทรศัพท์" + "โหมดสัญลักษณ์โทรศัพท์" + "ซ่อนแป้นพิมพ์แล้ว" + "กำลังแสดงแป้นพิมพ์ %s" + "วันที่" + "วันที่และเวลา" + "อีเมล" + "ข้อความ" + "หมายเลข" + "โทรศัพท์" + "ข้อความ" + "เวลา" + "URL" + "ล่าสุด" + "วัตถุ" + "สัญลักษณ์" + "ธง" + "หน้ายิ้มและผู้คน" + "สัตว์เลี้ยงและธรรมชาติ" + "อาหารและเครื่องดื่ม" + "การเดินทางและสถานที่" + "กิจกรรม" + "ไอคอนสื่ออารมณ์" + "%s ตัวใหญ่" + "I ตัวใหญ่" + "I ตัวใหญ่เติมจุดด้านบน" + "อักขระทางเลือกพร้อมใช้งาน" + "ปิดอักขระทางเลือกแล้ว" + "ข้อเสนอแนะทางเลือกพร้อมใช้งาน" + "ปิดข้อเสนอแนะทางเลือกแล้ว" diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index 07cc9010fb..ecba8216e2 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -1,193 +1,107 @@ - - - - "ตัวเลือกการป้อนข้อมูล" - "ค้นหารายชื่อติดต่อ" - "เครื่องตรวจตัวสะกดใช้รายการจากรายชื่อติดต่อของคุณ" - "สั่นเมื่อกดปุ่ม" - "ส่งเสียงเมื่อกดปุ่ม" - "ป๊อปอัปเมื่อกดแป้น" - "ค่ากำหนด" - "บัญชีและความเป็นส่วนตัว" - "ลักษณะที่ปรากฏและการจัดวาง" - "การป้อนข้อมูลด้วยท่าทาง" - "การแก้ไขข้อความ" - "ขั้นสูง" - "ธีม" - "เปิดใช้แป้นพิมพ์แยก" - "ใช้วิธีการป้อนข้อมูลอื่น" - "แป้นสลับภาษาครอบคลุมวิธีการป้อนข้อมูลอื่นๆ ด้วย" - "แป้นสลับภาษา" - "แสดงเมื่อเปิดใช้งานภาษาสำหรับอินพุตหลายภาษา" - "หน่วงเวลาก่อนปิดป๊อปอัพหลัก" - "ไม่มีการหน่วงเวลา" - "ค่าเริ่มต้น" - "%s มิลลิวิ" - "ค่าเริ่มต้นของระบบ" - "แนะนำชื่อผู้ติดต่อ" - "ใช้ชื่อจากรายชื่อติดต่อสำหรับคำแนะนำและการแก้ไข" - "คำแนะนำในแบบของคุณ" - "ปรับปรุง %s" - "เคาะวรรคสองครั้งเพื่อพิมพ์จุด" - "เคาะวรรคสองครั้งจะแทรกจุดตามด้วยช่องว่างหนึ่งช่อง" - "ปรับเป็นตัวพิมพ์ใหญ่อัตโนมัติ" - "ทำให้คำแรกของทุกประโยคเป็นตัวพิมพ์ใหญ่" - "พจนานุกรมส่วนตัว" - "พจนานุกรม Add-On" - "พจนานุกรมหลัก" - "แสดงคำแนะนำการแก้ไข" - "แสดงคำที่แนะนำขณะพิมพ์" - "บล็อกคำที่ไม่เหมาะสม" - "ไม่แนะนำคำที่อาจไม่เหมาะสม" - "การแก้ไขคำผิดอัตโนมัติ" - "กดเว้นวรรคและเครื่องหมายจะแก้คำผิดอัตโนมัติ" - "ปิด" - "ปานกลาง" - "เข้มงวด" - "เข้มงวดมาก" - "คำแนะนำสำหรับคำถัดไป" - "ใช้คำก่อนหน้าในการสร้างข้อเสนอแนะ" - "เปิดการป้อนข้อมูลด้วยท่าทาง" - "ป้อนคำด้วยการเลื่อนผ่านตัวอักษร" - "แสดงรูปแบบของท่าทางสัมผัส" - "ดูตัวอย่างลอยแบบไดนามิก" - "ดูคำแนะนำในขณะที่ใช้ท่าทางสัมผัส" - "ท่าทางสัมผัสสำหรับวลี" - "ใส่ช่องว่างระหว่างท่าทางสัมผัสโดยเลื่อนไปยังแป้นเคาะวรรค" - "แป้นการป้อนข้อมูลด้วยเสียง" - "ไม่ได้เปิดใช้วิธีป้อนข้อมูลด้วยเสียง โปรดตรวจสอบการตั้งค่าภาษาและการป้อนข้อมูล" - "กำหนดค่าวิธีการป้อนข้อมูล" - "ภาษา" - "ความช่วยเหลือและความคิดเห็น" - "ภาษา" - "แตะอีกครั้งเพื่อบันทึก" - "แตะที่นี่เพื่อบันทึก" - "มีพจนานุกรมให้ใช้งาน" - "ชุดรูปแบบแป้นพิมพ์" - "สลับบัญชี" - "ไม่ได้เลือกบัญชี" - "ปัจจุบันใช้ %1$s" - "ตกลง" - "ยกเลิก" - "ออกจากระบบ" - "เลือกบัญชีที่จะใช้" - "อังกฤษ (สหราชอาณาจักร)" - "อังกฤษ (อเมริกัน)" - "สเปน (สหรัฐอเมริกา)" - "ภาษาอังกฤษผสมกับฮินดู" - "เซอร์เบีย (ละติน)" - "อังกฤษ (สหราชอาณาจักร) (%s)" - "อังกฤษ (สหรัฐอเมริกา) (%s)" - "สเปน (สหรัฐอเมริกา) (%s)" - "ภาษาอังกฤษผสมกับฮินดู (%s)" - "เซอร์เบีย (%s)" - "%s (ดั้งเดิม)" - "%s (แบบกะทัดรัด)" - "ไม่มีภาษา (ตัวอักษรละติน)" - "ตัวอักษร (QWERTY)" - "ตัวอักษร (QWERTZ)" - "ตัวอักษร (AZERTY)" - "ตัวอักษร (Dvorak)" - "ตัวอักษร (Colemak)" - "ตัวอักษร (PC)" - "อีโมจิ" - "ธีมแป้นพิมพ์" - "รูปแบบอินพุตกำหนดเอง" - "เพิ่มสไตล์" - "เพิ่ม" - "ลบ" - "บันทึก" - "ภาษา" - "การจัดวาง" - "ต้องเปิดใช้รูปแบบอินพุตที่กำหนดเองก่อน เปิดใช้เลยไหม" - "เปิดใช้งาน" - "ข้ามไปก่อน" - "รูปแบบการป้อนข้อมูลเดียวกันนี้มีอยู่แล้ว: %s" - "ระยะเวลาการสั่นเมื่อกดแป้นพิมพ์" - "ระดับเสียงเมื่อกดแป้นพิมพ์" - "การหน่วงเวลาของการกดแป้นค้าง" - "อีโมจิสำหรับแป้นพิมพ์บนเครื่อง" - "แป้น Alt บนเครื่องแสดงชุดอีโมจิ" - "ค่าเริ่มต้น" - "ยินดีต้อนรับสู่ %s" - "พร้อมการป้อนข้อมูลด้วยท่าทาง" - "เริ่มต้นใช้งาน" - "ขั้นตอนถัดไป" - "การตั้งค่า %s" - "เปิดใช้งาน %s" - "โปรดตรวจสอบ \"%s\" ในการตั้งค่าภาษาและการป้อนข้อมูลของคุณ ซึ่งจะอนุญาตให้แอปทำงานบนอุปกรณ์ของคุณ" - "%s เปิดใช้ในการตั้งค่าภาษาและการป้อนข้อมูลของคุณอยู่แล้ว ขั้นตอนนี้จึงเสร็จสิ้นแล้ว ไปยังขั้นตอนถัดไปเลย!" - "เปิดใช้งานในการตั้งค่า" - "สลับไปใช้ %s" - "ถัดไป เลือก \"%s\" เป็นวิธีการป้อนข้อความที่ใช้งานของคุณ" - "สลับวิธีการป้อนข้อมูล" - "ยินดีด้วย คุณพร้อมใช้งานแล้ว!" - "ตอนนี้คุณสามารถพิมพ์ข้อมูลลงในแอปที่ชื่นชอบทั้งหมดด้วย %s" - "กำหนดค่าภาษาเพิ่มเติม" - "เสร็จสิ้น" - "แสดงไอคอนแอป" - "แสดงไอคอนแอปพลิเคชันในตัวเรียกใช้งาน" - "ผู้ให้บริการพจนานุกรม" - "ผู้ให้บริการพจนานุกรม" - "บริการพจนานุกรม" - "ข้อมูลอัปเดตสำหรับพจนานุกรม" - "พจนานุกรมส่วนเสริม" - "การตั้งค่าสำหรับพจนานุกรม" - "พจนานุกรมผู้ใช้" - "พจนานุกรมผู้ใช้" - "มีพจนานุกรมให้ใช้งาน" - "กำลังดาวน์โหลดอยู่" - "ติดตั้งแล้ว" - "ติดตั้งแล้วแต่ปิดใช้งาน" - "พบปัญหาขณะเชื่อมต่อ" - "ไม่มีพจนานุกรม" - "รีเฟรช" - "ปรับปรุงแก้ไขครั้งล่าสุด" - "กำลังตรวจสอบการอัปเดต" - "กำลังโหลด…" - "พจนานุกรมหลัก" - "ยกเลิก" - "การตั้งค่า" - "ติดตั้ง" - "ยกเลิก" - "ลบ" - "เวอร์ชัน %1$s" - "เพิ่ม" - "เพิ่มในพจนานุกรม" - "ข้อความ" - "ตัวเลือกอื่น" - "ลดตัวเลือก" - "ตกลง" - "คำ:" - "ทางลัด:" - "ภาษา:" - "พิมพ์คำ" - "ทางลัดที่ไม่บังคับ" - "แก้ไขคำ" - "แก้ไข" - "ลบ" - "คุณยังไม่มีคำในพจนานุกรมผู้ใช้ หากต้องการเพิ่มคำ ให้แตะปุ่มเพิ่ม (+)" - "สำหรับทุกภาษา" - "ภาษาเพิ่มเติม…" - "ลบ" - " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + + "ค้นหารายชื่อติดต่อ" + "สั่นเมื่อกดปุ่ม" + "ส่งเสียงเมื่อกดปุ่ม" + "ป๊อปอัปเมื่อกดแป้น" + "ค่ากำหนด" + "การป้อนข้อมูลด้วยท่าทาง" + "การแก้ไขข้อความ" + "ขั้นสูง" + "ธีม" + "เปิดใช้แป้นพิมพ์แยก" + "ใช้วิธีการป้อนข้อมูลอื่น" + "แป้นสลับภาษา" + "%s มิลลิวิ" + "ค่าเริ่มต้นของระบบ" + "ใช้ชื่อจากรายชื่อติดต่อสำหรับคำแนะนำและการแก้ไข" + "คำแนะนำในแบบของคุณ" + "เคาะวรรคสองครั้งเพื่อพิมพ์จุด" + "เคาะวรรคสองครั้งจะแทรกจุดตามด้วยช่องว่างหนึ่งช่อง" + "ปรับเป็นตัวพิมพ์ใหญ่อัตโนมัติ" + "ทำให้คำแรกของทุกประโยคเป็นตัวพิมพ์ใหญ่" + "พจนานุกรมส่วนตัว" + "พจนานุกรมหลัก" + "แสดงคำแนะนำการแก้ไข" + "แสดงคำที่แนะนำขณะพิมพ์" + "บล็อกคำที่ไม่เหมาะสม" + "ไม่แนะนำคำที่อาจไม่เหมาะสม" + "การแก้ไขคำผิดอัตโนมัติ" + "กดเว้นวรรคและเครื่องหมายจะแก้คำผิดอัตโนมัติ" + "ปิด" + "ปานกลาง" + "เข้มงวด" + "เข้มงวดมาก" + "คำแนะนำสำหรับคำถัดไป" + "ใช้คำก่อนหน้าในการสร้างข้อเสนอแนะ" + "เปิดการป้อนข้อมูลด้วยท่าทาง" + "ป้อนคำด้วยการเลื่อนผ่านตัวอักษร" + "แสดงรูปแบบของท่าทางสัมผัส" + "ดูตัวอย่างลอยแบบไดนามิก" + "ท่าทางสัมผัสสำหรับวลี" + "ใส่ช่องว่างระหว่างท่าทางสัมผัสโดยเลื่อนไปยังแป้นเคาะวรรค" + "อังกฤษ (สหราชอาณาจักร)" + "อังกฤษ (อเมริกัน)" + "สเปน (สหรัฐอเมริกา)" + "ภาษาอังกฤษผสมกับฮินดู" + "เซอร์เบีย (ละติน)" + "%s (ดั้งเดิม)" + "%s (แบบกะทัดรัด)" + "ไม่มีภาษา" + "อีโมจิ" + "เพิ่ม" + "ลบ" + "บันทึก" + "ภาษา" + "การจัดวาง" + "ระยะเวลาการสั่นเมื่อกดแป้นพิมพ์" + "ระดับเสียงเมื่อกดแป้นพิมพ์" + "การหน่วงเวลาของการกดแป้นค้าง" + "อีโมจิสำหรับแป้นพิมพ์บนเครื่อง" + "แป้น Alt บนเครื่องแสดงชุดอีโมจิ" + "ค่าเริ่มต้น" + "ยินดีต้อนรับสู่ %s" + "พร้อมการป้อนข้อมูลด้วยท่าทาง" + "เริ่มต้นใช้งาน" + "การตั้งค่า %s" + "เปิดใช้งาน %s" + "โปรดตรวจสอบ \"%s\" ในการตั้งค่าภาษาและการป้อนข้อมูลของคุณ ซึ่งจะอนุญาตให้แอปทำงานบนอุปกรณ์ของคุณ" + "เปิดใช้งานในการตั้งค่า" + "สลับไปใช้ %s" + "ถัดไป เลือก \"%s\" เป็นวิธีการป้อนข้อความที่ใช้งานของคุณ" + "สลับวิธีการป้อนข้อมูล" + "ยินดีด้วย คุณพร้อมใช้งานแล้ว!" + "ตอนนี้คุณสามารถพิมพ์ข้อมูลลงในแอปที่ชื่นชอบทั้งหมดด้วย %s" + "เสร็จสิ้น" + "แสดงไอคอนแอป" + "แสดงไอคอนแอปพลิเคชันในตัวเรียกใช้งาน" + "พจนานุกรมส่วนเสริม" + "มีพจนานุกรมให้ใช้งาน" + "การตั้งค่า" + "ลบ" + "เวอร์ชัน %1$s" + "ทางลัด:" + "ภาษา:" + "พิมพ์คำ" + "ทางลัดที่ไม่บังคับ" + "แก้ไขคำ" + "สำหรับทุกภาษา" + "ภาษาเพิ่มเติม…" + "เลือกวิธีการป้อนข้อมูล" + "เลิกทำ" + "ทำซ้ำ" + "เรียนรู้จากการสื่อสารและข้อมูลที่พิมพ์ของคุณเพื่อปรับปรุงคำแนะนำ" + "เริ่ม" + "ถัดไป" + "ก่อน" + "เสร็จ" + "ส่ง" + "ค้นหา" + "หยุด" + "รอ" diff --git a/app/src/main/res/values-tl/bools.xml b/app/src/main/res/values-tl/bools.xml index 840d20c218..8693f6e1ec 100644 --- a/app/src/main/res/values-tl/bools.xml +++ b/app/src/main/res/values-tl/bools.xml @@ -1,21 +1,7 @@ - - - "Go" - "Sunod" - "Nauna" - "Tapos" - "Send" - "Maghanap" - "Pause" - "Intay" - diff --git a/app/src/main/res/values-tl/strings-config-important-notice.xml b/app/src/main/res/values-tl/strings-config-important-notice.xml deleted file mode 100644 index d8dd9194a0..0000000000 --- a/app/src/main/res/values-tl/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "Pahusayin ang suhestiyon batay sa iyong pag-uusap at na-type na data" - diff --git a/app/src/main/res/values-tl/strings-emoji-descriptions.xml b/app/src/main/res/values-tl/strings-emoji-descriptions.xml deleted file mode 100644 index 4daf45e5e4..0000000000 --- a/app/src/main/res/values-tl/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "Simbolo ng copyright" - "Nakarehistrong simbolo" - "Dobleng tandang padamdam" - "Tandang padamdam at tandang pananong" - "Simbolo ng trade mark" - "Mapagkukunan ng impormasyon" - "Arrow na pakaliwa at pakanan" - "Arrow na pataas at pababa" - "Arrow na nakaturo sa hilagang-kanluran" - "Arrow na nakaturo sa hilagang-silangan" - "Arrow na nakaturo sa timog-silangan" - "Arrow na nakaturo sa timog-kanluran" - "Pakaliwang arrow na may hook" - "Pakanang arrow na may hook" - "Relo" - "Hourglass" - - - - - "Itim na dobleng tatsulok na nakaturo pakanan" - "Itim na dobleng tatsulok na nakaturo pakaliwa" - "Itim na dobleng tatsulok na nakaturo pataas" - "Itim na dobleng tatsulok na nakaturo pababa" - - - - - - - "Alarm clock" - - - - - "Hourglass na may dumadaloy na buhangin" - - - - - - - "Malaking latin na titik m na nasa bilog" - "Itim at maliit na parisukat" - "Puti at maliit na parisukat" - "Itim na tatsulok na nakaturo pakanan" - "Itim na tatsulok na nakaturo pakaliwa" - "Puti at katamtamang parisukat" - "Itim at katamtamang parisukat" - "Puting parisukat na may maliit na parisukat sa loob" - "Itim na parisukat na may maliit na parisukat sa loob" - "Itim na araw na may mga sinag" - "Ulap" - - - - - - - "Itim na telepono" - "Ballot box na may check" - "Payong na may mga patak ng ulan" - "Mainit na inumin" - - - "Puting hintuturo na nakaturo pataas" - - - - - - - - - - - - - - - - - - - "Puti at nakangiting mukha" - "Aries" - "Taurus" - "Gemini" - "Cancer" - "Leo" - "Virgo" - "Libra" - "Scorpius" - "Sagittarius" - "Capricorn" - "Aquarius" - "Pisces" - "Itim na spade suit" - "Itim na club suit" - "Itim na heart suit" - "Itim na diamond suit" - "Mga hot spring" - "Itim na simbolo ng universal recycling" - "Simbolo ng wheelchair" - - - "Angkla" - - - - - - - - - - - - - "Simbolo ng babala" - "Simbolo ng mataas na boltahe" - "Katamtaman at puting bilog" - "Katamtaman at itim na bilog" - - - - - "Soccer ball" - "Baseball" - "Snowman na walang snow" - "Araw sa likod ng ulap" - - - "Ophiuchus" - - - - - - - "Bawal pumasok" - - - "Simbahan" - - - - - "Fountain" - "Bandila sa butas" - - - "Sailboat" - - - - - - - "Tent" - "Fuel pump" - "Itim na gunting" - "Puti at makapal na check mark" - "Eroplano" - "Sobre" - "Nakataas na kamao" - "Nakataas na kamay" - "Kamay na sumisimbolo ng panalo" - - - "Lapis" - "Itim na nib" - "Makapal na check mark" - "Makapal na multiplication x" - - - - - "Mga Sparkle" - "Asterisk na may walong spoke" - "Itim na bituin na may walong punto" - "Snowflake" - "Sparkle" - "Markang krus" - "Negatibong marka ng krus na nasa parisukat" - "Ornament na itim na tandang pananong" - "Ornament na puting tandang pananong" - "Ornament na puting tandang padamdam" - "Makapal na simbolo ng tandang padamdam" - - - "Makapal at itim na puso" - "Makapal na simbolo ng plus" - "Makapal na simbolo ng minus" - "Makapal na simbolo ng division" - "Itim at pakanang arrow" - "Curly loop" - "Dobleng curly loop" - "Arrow na tumuturo pakanan pagkatapos ay kumukurba pataaas" - "Arrow na tumuturo pakanan pagkatapos ay kumukurba pababa" - "Pakaliwa at itim na arrow" - "Pataas at itim na arrow" - "Pababa at itim na arrow" - "Itim at malaking parisukat" - "Puti at malaking parisukat" - "Puti at katamtamang bituin" - "Makapal at malaking bilog" - "Wavy dash" - "Part alternation mark" - "Ideograph ng pagbati na nasa bilog" - "Ideograph ng lihim na nasa bilog" - "Pulang dragon sa tile ng mahjong" - "Itim na joker sa baraha" - "Blood type A" - "Blood type B" - "Blood type O" - "Paradahan" - "Blood type AB" - "CL na nasa parisukat" - "Cool na nasa parisukat" - "Free na nasa parisukat" - "ID na nasa parisukat" - "New na nasa parisukat" - "N G na nasa parisukat" - "OK na nasa parisukat" - "SOS na nasa parisukat" - "Up na may tandang padamdam na nasa parisukat" - "vs na nasa parisukat" - "Katakana ng dito na nasa parisukat" - "Katakana ng serbisyo na nasa parisukat" - "Ideograph ng walang singil na nasa parisukat" - "Ideograph ng nakareserbang upuan na nasa parisukat" - "Ideograph ng pagbabawal na nasa parisukat" - "Ideograph ng bakante na nasa parisukat" - "Ideograph ng pagtanggap na nasa parisukat" - "Nasa parisukat na ideograph ng puno na" - "Nasa parisukat na ideograph ng bayad na" - "Ideograph ng buwan-buwan na nasa parisukat" - "Ideograph ng application na nasa parisukat" - "Ideograph ng diskwento na nasa parisukat" - "Ideograph ng bukas ang negosyo na nasa parisukat" - "Ideograph ng bentahe na nasa bilog" - "Ideograph ng tanggapin na nasa bilog" - "Bagyo" - "Mahamog" - "Nakasarang payong" - "Gabi na may mga bituin" - "Sunrise sa mga bundok" - "Sunrise" - "Lungsod sa dapit-hapon" - "Sunset sa mga gusali" - "Bahaghari" - "Tulay sa gabi" - "Alon ng tubig" - "Bulkan" - "Milky way" - "Europe-africa sa globo ng mundo" - "Americas sa globo ng mundo" - "Asia-australia sa globo ng mundo" - "Globo na may mga meridian" - "Simbolo ng new moon" - "Simbolo ng waxing crescent moon" - "Simbolo ng first quarter moon" - "Simbolo ng waxing gibbous moon" - "Simbolo ng full moon" - "Simbolo ng waning gibbous moon" - "Simbolo ng last quarter moon" - "Simbolo ng waning crescent moon" - "Crescent moon" - "New moon na may mukha" - "First quarter moon na may mukha" - "Last quarter moon na may mukha" - "Full moon na may mukha" - "Araw na may mukha" - "Nagniningning na bituin" - "Bulalakaw" - - - - - - - - - - - - - - - - - - - - - - - - - - - "Kastanyas" - "Punla" - "Evergreen tree" - "Deciduous tree" - "Palm tree" - "Cactus" - - - "Tulip" - "Cherry blossom" - "Rosas" - "Gumamela" - "Sunflower" - "Blossom" - "Mais" - "Bigas" - "Herb" - "Four leaf clover" - "Dahon ng maple" - "Nalaglag na dahon" - "Dahong tinatangay ng hangin" - "Kabute" - "Kamatis" - "Aubergine" - "Ubas" - "Melon" - "Pakwan" - "Tangerine" - "Lemon" - "Saging" - "Pinya" - "Pulang mansanas" - "Berdeng mansanas" - "Peras" - "Peach" - "Mga Cherry" - "Strawberry" - "Hamburger" - "Slice ng pizza" - "Laman sa buto" - "Paa ng manok" - "Rice cracker" - "Rice ball" - "Kanin" - "Curry at kanin" - "Umuusok na mangkok" - "Spaghetti" - "Tinapay" - "French fries" - "Inihaw na kamote" - "Dango" - "Oden" - "Sushi" - "Pritong hipon" - "Fish cake na may swirl na disenyo" - "Soft ice cream" - "Kinaskas na yelo" - "Ice cream" - "Doughnut" - "Cookie" - "Chocolate bar" - "Candy" - "Lollipop" - "Custard" - "Honey pot" - "Shortcake" - "Bento box" - "Kaldero ng pagkain" - "Pagluluto" - "Tinidor at kutsilyo" - "Tasa na walang hawakan" - "Bote at tasa ng sake" - "Wine glass" - "Cocktail glass" - "Tropical drink" - "Beer mug" - "Pinagtunggang beer mug" - "Baby bottle" - - - - - - - "Ribbon" - "Nakabalot ng regalo" - "Birthday cake" - "Jack-o-lantern" - "Christmas tree" - "Father christmas" - "Mga Paputok" - "Lusis" - "Lobo" - "Party popper" - "Confetti ball" - "Tanabata tree" - "Magkakrus na bandila" - "Dekorasyong pine" - "Mga Japanese doll" - "Carp streamer" - "Wind chime" - "Seremonya ng pagtingin sa buwan" - "School satchel" - "Graduation cap" - - - - - - - - - - - - - - - "Carousel horse" - "Ferris wheel" - "Roller coaster" - "Bingwit at isda" - "Mikropono" - "Movie camera" - "Cinema" - "Headphone" - "Artist palette" - "Top hat" - "Circus tent" - "Ticket" - "Clapper board" - "Performing arts" - "Video game" - "Asintadong tira" - "Slot machine" - "Bilyar" - "Game die" - "Bowling" - "Mga barahang may bulaklak" - "Nota ng musika" - "Maraming nota ng musika" - "Saxophone" - "Gitara" - "Musical keyboard" - "Trumpeta" - "Violin" - "Musical score" - "Running shirt na may sash" - "Raketa at bola ng tennis" - "Ski at ski boot" - "Basketball at hoop" - "Chequered na bandila" - "Snowboarder" - "Runner" - "Surfer" - - - "Trophy" - "Karera ng kabayo" - "American football" - "Rugby football" - "Swimmer" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Pagtatayo ng bahay" - "Bahay na may hardin" - "Gusali ng opisina" - "Post office sa Japan" - "Post office sa Europe" - "Ospital" - "Bangko" - "Automated teller machine" - "Hotel" - "Love hotel" - "Convenience store" - "Paaralan" - "Department store" - "Pabrika" - "Izakaya lantern" - "Japanese castle" - "European castle" - - - - - - - - - - - - - - - - - - - - - - - - - "Daga" - "Daga" - "Ox" - "Kalabaw" - "Baka" - - - "Leopard" - "Kuneho" - "Pusa" - "Dragon" - "Buwaya" - "Balyena" - "Kuhol" - "Ahas" - "Kabayo" - "Ram" - "Kambing" - "Tupa" - "Unggoy" - "Tandang" - "Manok" - "Aso" - "Baboy" - "Baboy-ramo" - "Elepante" - "Pugita" - "Spiral shell" - "Salaginto" - "Langgam" - "Bubuyog" - "Salagubang" - "Isda" - "Tropical na isda" - "Blowfish" - "Pagong" - "Napisang sisiw" - "Maliit na sisiw" - "Maliit na sisiw na nakaharap" - "Ibon" - "Penguin" - "Koala" - "Poodle" - "Dromedary camel" - "Bactrian camel" - "Dolphin" - "Mukha ng daga" - "Mukha ng baka" - "Mukha ng tigre" - "Mukha ng kuneho" - "Mukha ng pusa" - "Mukha ng dragon" - "Bumubugang balyena" - "Mukha ng kabayo" - "Mukha ng unggoy" - "Mukha ng aso" - "Mukha ng baboy" - "Mukha ng palaka" - "Mukha ng hamster" - "Mukha ng lobo" - "Mukha ng oso" - "Mukha ng panda" - "Ilong ng baboy" - "Mga bakas ng paa ng hayop" - - - "Mga Mata" - - - "Tainga" - "Ilong" - "Bibig" - "Dila" - "Puting hintuturo na nakaturo pataas" - "Puting hintuturo na nakaturo pababa" - "Puting hintuturo na nakaturo pakaliwa" - "Puting hintuturo na nakaturo pakanan" - "Simbolo ng kamao" - "Simbolo ng kumakaway na kamay" - "Simbolo ng kamay na Ok" - "Simbolo ng thumbs up" - "Simbolo ng thumbs down" - "Simbolo ng pumapalakpak na kamay" - "Simbolo ng bukas na kamay" - "Korona" - "Sumbrero ng babae" - "Salamin sa mata" - "Kurbata" - "T-shirt" - "Jeans" - "Bestida" - "Kimono" - "Bikini" - "Damit na pambabae" - "Purse" - "Handbag" - "Pouch" - "Sapatos na panlalaki" - "Sapatos na pang-atleta" - "Sapatos na mataas ang takong" - "Sandal na pambabae" - "Boots na pambabae" - "Bakas ng paa" - "Anino ng tao" - "Mga anino ng tao" - "Batang Lalaki" - "Batang Babae" - "Lalaki" - "Babae" - "Pamilya" - "Lalaki at babae na magkahawak ang kamay" - "Dalawang lalaki na magkahawak ang kamay" - "Dalawang babae na magkahawak ang kamay" - "Pulis" - "Babaeng may bunny ears" - "Ikakasal na babaeng may belo" - "Taong may blond na buhok" - "Lalaking may gua pi mao" - "Lalaking may turban" - "Matandang lalaki" - "Matandang babae" - "Sanggol" - "Construction worker" - "Prinsesa" - "Japanese ogre" - "Japanese goblin" - "Multo" - "Anghel na sanggol" - "Extraterrestrial alien" - "Alien na halimaw" - "Imp" - "Bungo" - "Tauhan sa information desk" - "Guwardiya" - "Mananayaw" - "Lipstick" - "Nail polish" - "Face massage" - "Gupit" - "Barber pole" - "Iniksyon" - "Pill" - "Kiss mark" - "Love letter" - "Sing-sing" - "Hiyas" - "Halik" - "Bouquet" - "Magkasintahang may puso" - "Kasal" - "Tumitibok na puso" - "Biyak na puso" - "Dalawang puso" - "Nagniningning na puso" - "Lumalaking puso" - "Puso na may palaso" - "Asul na puso" - "Berdeng puso" - "Dilaw na puso" - "Purple na puso" - "Pusong may ribbon" - "Mga umiikot na puso" - "Dekorasyong puso" - "Hugis diamante na may tuldok sa loob" - "Electric light bulb" - "Simbolo ng galit" - "Bomba" - "Simbolo ng pagtulog" - "Simbolo ng banggaan" - "Simbolo ng tumataksik na pawis" - "Patak" - "Simbolong gitling" - "Dumi" - "Naka-flex na braso" - "Simbolo ng nahihilo" - "Speech balloon" - "Balloon ng iniisip" - "Puting bulaklak" - "Simbolo ng isandaang puntos" - "Money bag" - "Palitan ng currency" - "Makapal na simbolo ng dolyar" - "Credit card" - "Pera na may simbolo ng yen" - "Pera na may simbolo ng dolyar" - "Pera na may simbolo ng euro" - "Pera na may simbolo ng pound" - "Pera na may mga pakpak" - "Chart na may pataas na trend at simbolo ng yen" - "Upuan" - "Personal computer" - "Briefcase" - "Minidisc" - "Floppy disk" - "Optical disc" - "Dvd" - "Folder ng file" - "Nakabukas na folder ng file" - "Page na may curl" - "Page na nakaharap" - "Kalendaryo" - "Tear-off na kalendaryo" - "Index ng card" - "Chart na may pataas na trend" - "Chart na may pababang trend" - "Bar chart" - "Clipboard" - "Pushpin" - "Round pushpin" - "Paperclip" - "Straight ruler" - "Triangular ruler" - "Mga tab ng bookmark" - "Ledger" - "Kwaderno" - "Kwadernong may dekorasyon ang pabalat" - "Nakasarang aklat" - "Nakabukas na aklat" - "Berdeng aklat" - "Asul na aklat" - "Orange na aklat" - "Mga Aklat" - "Badge ng pangalan" - "Scroll" - "Memo" - "Receiver ng telepono" - "Pager" - "Fax machine" - "Satellite antenna" - "Public address loudspeaker" - "Cheering megaphone" - "Outbox tray" - "Inbox tray" - "Package" - "Simbolo ng e-mail" - "Papasok na sobre" - "Sobre na may pababang arrow sa itaas" - "Nakasarang mailbox na may nakaababang flag" - "Nakasarang mailbox na may nakataas na flag" - "Nakabukas na mailbox na may nakataas na flag" - "Nakabukas na mailbox na may nakababang flag" - "Postbox" - "Postal horn" - "Pahayagan" - "Mobile phone" - "Mobile phone na may pakanang arrow sa kaliwa" - "Vibration mode" - "I-off ang mobile phone" - "Walang mga mobile phone" - "Antenna na may mga bar" - "Camera" - - - "Video camera" - "Telebisyon" - "Radyo" - "Videocassette" - - - - - "Mga naka-twist na pakanang arrow" - "Mga pakanan at pakaliwang arrow sa pakanang oryentasyon na bumubuo ng bilog" - "Mga pakanan at pakaliwang arrow sa pakanang oryentasyon na bumubuo ng bilog na may overlay na numerong isa na nasa bilog" - "Mga pababa at pataas na arrow sa pakanang oryentasyon na bumubuo ng bilog" - "Mga pababa at pataas na arrow sa pakaliwang oryentasyon na bumubuo ng bilog" - "Simbolo ng mababang brightness" - "Simbolo ng mataas na brightness" - "Speaker na may stroke ng pagkansela" - "Speaker" - "Speaker na may isang sound wave" - "Speaker na may tatlong sound wave" - "Baterya" - "Electric plug" - "Magnifying glass na nakaturo pakaliwa" - "Magnifying glass na nakaturo pakanan" - "Lock na may ink pen" - "Nakasarang lock na may susi" - "Susi" - "Lock" - "Nakabukas na lock" - "Bell" - "Bell na may stroke ng pagkansela" - "Bookmark" - "Simbolo ng link" - "Radio button" - "Back na may pakaliwang arrow sa itaas" - "End na may pakaliwang arrow sa itaas" - "On na may tandang padamdam na may pakaliwa at pakanang arrow sa itaas" - "Soon na may pakanang arrow sa itaas" - "Top na may pataas na arrow sa itaas" - "Simbolo ng walang mas bata sa labinwalong taong gulang" - "Keycap ten" - "Simbolo ng pag-input para sa malalaking latin na titik" - "Simbolo ng pag-input para sa maliliit na latin na titik" - "Simbolo ng pag-input para sa mga numero" - "Simbolo ng pag-input para sa mga simbolo" - "Simbolo ng pag-input para sa mga latin na titik" - "Apoy" - "Electric torch" - "Wrench" - "Martilyo" - "Nut at bolt" - "Hocho" - "Baril" - "Microscope" - "Telescope" - "Crystal ball" - "Bituing may anim na punto na may tuldok sa gitna" - "Japanese na simbolo para sa baguhan" - "Emblem ng trident" - "Button na itim na parisukat" - "Button na puting parisukat" - "Malaking pulang bilog" - "Malaking asul na bilog" - "Malaking orange na diamante" - "Malaking asul na diamante" - "Maliit na orange na diamante" - "Maliit na asul na diamante" - "Pulang tatsulok na nakaturo pataas" - "Pulang tatsulok na nakaturo pababa" - "Maliit na pulang tatsulok na nakaturo pataas" - "Maliit na pulang tatsulok na nakaturo pababa" - - - - - - - - - - - - - "Ala una sa orasan" - "Alas dos sa orasan" - "Alas tres sa orasan" - "Alas kuwatro sa orasan" - "Alas singko sa orasan" - "Alas sais sa orasan" - "Alas kuwatro sa orasan" - "Alas otso sa orasan" - "Alas nuwebe sa orasan" - "Alas diyes sa orasan" - "Alas onse sa orasan" - "Alas dose sa orasan" - "Ala una y medya sa orasan" - "Alas dos y medya sa orasan" - "Alas tres y medya sa orasan" - "Alas kuwatro y medya sa orasan" - "Alas singko y medya sa orasan" - "Alas sais y medya sa orasan" - "Alas siyete y medya sa orasan" - "Alas otso y medya sa orasan" - "Alas nuwebe y medya sa orasan" - "Alas diyes y medya sa orasan" - "Alas onse y medya sa orasan" - "Alas dose y medya sa orasan" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Mount fuji" - "Tokyo tower" - "Statue of liberty" - "Anino ng japan" - "Moyai" - "Nakangising mukha" - "Nakangising mukha na may masasayang mata" - "Mukha na may mga luha ng kasiyahan" - "Nakangiting mukha na may nakabukas na bibig" - "Nakangiting mukha na may nakabukas na bibig at masasayang mata" - "Nakangiting mukha na may nakabukas na bibig at malamig na pawis" - "Nakangiting mukha na may nakabukas na bibig at mga nakapikit na mata" - "Nakangiting mukha na may halo" - "Nakangiting mukha na may mga sungay" - "Kumikindat na mukha" - "Nakangiting mukha na may masasayang mata" - "Mukha na numanamnam ng masarap na pagkain" - "Guminhawang mukha" - "Nakangiting mukha na may mga matang hugis-puso" - "Nakangiting mukha na may salamin" - "Nakangising mukha" - "Mukha na walang emosyon" - "Mukha na walang emosyon" - "Mukha na hindi natutuwa" - "Mukha na may malamig na pawis" - "Nag-iisip na mukha" - "Nalilitong mukha" - "Naguguluhang mukha" - "Humahalik na mukha" - "Mukha na humahalik" - "Humahalik na mukha na may masasayang mata" - "Humahalik na mukha na may mga nakapikit na mata" - "Mukha na nakadila" - "Mukha na nakadila at kumikindat" - "Mukha na nakadila at nakapikit ang mga mata" - "Nabigong mukha" - "Nag-aalalang mukha" - "Nagagalit na mukha" - "Naghihimutok na mukha" - "Umiiyak na mukha" - "Nagsisikap na mukha" - "Mukha ng nagtagumpay" - "Nabigo ngunit guminhawang mukha" - "Nakasimangot na mukha na may nakabukas na bibig" - "Nasasaktang mukha" - "Natatakot na mukha" - "Pagod na mukha" - "Inaantok na mukha" - "Pagod na mukha" - "Nakangiwing mukha" - "Mukha na umiiyak nang todo" - "Mukha na may nakabukas na bibig" - "Naghihintay na mukha" - "Mukha na may nakabukas na bibig at malamig na pawis" - "Mukha na sumisigaw sa takot" - "Nagulat na mukha" - "Nahihiyang mukha" - "Natutulog na mukha" - "Nahihilong mukha" - "Mukha na walang bibig" - "Mukha na may medical mask" - "Nakangising mukha ng pusa na may masasayang mata" - "Mukha ng pusa na may mga luha ng kasiyahan" - "Nakangiting mukha ng pusa na may nakabukas na bibig" - "Nakangiting mukha ng pusa na may mga mata na hugis-puso" - "Mukha ng pusa na nakangiti" - "Humahalik na mukha ng pusa na may mga nakapikit na mata" - "Naghihimutok na mukha ng pusa" - "Umiiyak na mukha ng pusa" - "Pagod na mukha ng pusa" - - - - - - - - - "Mukha na sumesenyas na hindi puwede" - "Mukha na sumesenyas na ok" - "Taong yumuyuko nang todo" - "Unggoy na ayaw makakita ng masamang bagay" - "Unggoy na ayaw makarinig ng masamang bagay" - "Unggoy na ayaw magsabi ng masamang bagay" - "Masayang tao na nagtataas ng isang kamay" - "Taong nagtataas ng dalawang kamay bilang selebrasyon" - "Nakasimangot na tao" - "Naghihimutok na tao" - "Tao na nakatiklop ang mga kamay" - "Rocket" - "Helicopter" - "Steam locomotive" - "Railway car" - "High-speed na tren" - "High-speed na tren na may bullet nose" - "Tren" - "Metro" - "Light rail" - "Istasyon" - "Tram" - "Tram car" - "Bus" - "Paparating na bus" - "Trolleybus" - "Sakayan ng bus" - "Minibus" - "Ambulansya" - "Fire engine" - "Sasakyan ng pulis" - "Paparating na sasakyan ng pulis" - "Taxi" - "Paparating na taxi" - "Sasakyan" - "Paparating na sasakyan" - "Recreational vehicle" - "Delivery truck" - "Articulated lorry" - "Traktora" - "Monorail" - "Mountain railway" - "Suspension railway" - "Mountain cableway" - "Aerial tramway" - "Barko" - "Bangka" - "Speedboat" - "Pahalang na ilaw-trapiko" - "Patayong ilaw-trapiko" - "Simbolo ng konstruksyon" - "Umiikot na ilaw ng mga sasakyan ng pulis" - "Tatsulok na bandila sa poste" - "Pinto" - "Simbolong bawal pumasok" - "Simbolo ng pwedeng manigarilyo" - "Simbolo ng bawal manigarilyo" - "Simbolo ng itapon ang basura sa tamang lugar" - "Simbolo ng huwag magkalat" - "Simbolo ng naiinom na tubig" - "Simbolo ng hindi naiinom na tubig" - "Bisikleta" - "Bawal ang mga bisikleta" - "Nagbibisikleta" - "Mountain bicyclist" - "Tumatawid" - "Bawal tumawid" - "Tawiran ng mga bata" - "Simbolo ng mga lalaki" - "Simbolo ng mga babae" - "Restroom" - "Simbolo ng sanggol" - "Palikuran" - "Inodoro" - "Shower" - "Paliguan" - "Bathtub" - "Kailangan ng pasaporte" - "Customs" - "Kuhaan ng bagahe" - "Naiwang bagahe" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-tl/strings-letter-descriptions.xml b/app/src/main/res/values-tl/strings-letter-descriptions.xml deleted file mode 100644 index 3f8b93ba25..0000000000 --- a/app/src/main/res/values-tl/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "Feminine ordinal indicator" - "Simbolo ng micro" - "Masculine ordinal indicator" - "Sharp S" - "A, grave" - "A, acute" - "A, circumflex" - "A, tilde" - "A, diaeresis" - "A, ring sa itaas" - "A, E, ligature" - "C, cedilla" - "E, grave" - "E, acute" - "E, circumflex" - "E, diaeresis" - "I, grave" - "I, acute" - "I, circumflex" - "I, diaeresis" - "Eth" - "N, tilde" - "O, grave" - "O, acute" - "O, circumflex" - "O, tilde" - "O, diaeresis" - "O, stroke" - "U, grave" - "U, acute" - "U, circumflex" - "U, diaeresis" - "Y, acute" - "Thorn" - "Y, diaeresis" - "A, macron" - "A, breve" - "A, ogonek" - "C, acute" - "C, circumflex" - "C, tuldok sa itaas" - "C, caron" - "D, caron" - "D, stroke" - "E, macron" - "E, breve" - "E, tuldok sa itaas" - "E, ogonek" - "E, caron" - "G, circumflex" - "G, breve" - "G, tuldok sa itaas" - "G, cedilla" - "H, circumflex" - "H, stroke" - "I, tilde" - "I, macron" - "I, breve" - "I, ogonek" - "Walang tuldok na I" - "I, J, ligature" - "J, circumflex" - "K, cedilla" - "Kra" - "L, acute" - "L, cedilla" - "L, caron" - "L, gitnang tuldok" - "L, stroke" - "N, acute" - "N, cedilla" - "N, caron" - "N, may kudlit sa unahan" - "Eng" - "O, macron" - "O, breve" - "O, double acute" - "O, E, ligature" - "R, acute" - "R, cedilla" - "R, caron" - "S, acute" - "S, circumflex" - "S, cedilla" - "S, caron" - "T, cedilla" - "T, caron" - "T, stroke" - "U, tilde" - "U, macron" - "U, breve" - "U, ring sa itaas" - "U, double acute" - "U, ogonek" - "W, circumflex" - "Y, circumflex" - "Z, acute" - "Z, tuldok sa itaas" - "Z, caron" - "Long S" - "O, horn" - "U, horn" - "S, kuwit sa ibaba" - "T, kuwit sa ibaba" - "Schwa" - "A, tuldok sa ibaba" - "A, hook sa itaas" - "A, circumflex at acute" - "A, circumflex at grave" - "A, circumflex at hook sa itaas" - "A, circumflex at tilde" - "A, circumflex at tuldok sa ibaba" - "A, breve at acute" - "A, breve at grave" - "A, breve at hook sa itaas" - "A, breve at tilde" - "A, breve at tuldok sa ibaba" - "E, tuldok sa ibaba" - "E, hook sa itaas" - "E, tilde" - "E, circumflex at acute" - "E, circumflex at grave" - "E, circumflex at hook sa itaas" - "E, circumflex at tilde" - "E, circumflex at tuldok sa ibaba" - "I, hook sa itaas" - "I, tuldok sa ibaba" - "O, tuldok sa ibaba" - "O, hook sa itaas" - "O, circumflex at acute" - "O, circumflex at grave" - "O, circumflex at hook sa itaas" - "O, circumflex at tilde" - "O, circumflex at tuldok sa ibaba" - "O, horn at acute" - "O, horn at grave" - "O, horn at hook sa itaas" - "O, horn at tilde" - "O, horn at tuldok sa ibaba" - "U, tuldok sa ibaba" - "U, hook sa itaas" - "U, horn at acute" - "U, horn at grave" - "U, horn at hook sa itaas" - "U, horn at tilde" - "U, horn at tuldok sa ibaba" - "Y, grave" - "Y, tuldok sa ibaba" - "Y, hook sa itaas" - "Y, tilde" - "Nakabaligtad na exclamation mark" - "Paniping nakaturo sa kaliwa at may double angle" - "Gitnang tuldok" - "Superscript one" - "Paniping nakaturo sa kanan at may double angle" - "Nakabaligtad na question mark" - "Isang kaliwang panipi" - "Isang kanang panipi" - "Isang low-9 na panipi" - "Dobleng kaliwang panipi" - "Dobleng kanang panipi" - "Dagger" - "Double dagger" - "Simbolong per mille" - "Prime" - "Double prime" - "Isang angle na paniping nakaturo sa kaliwa" - "Isang angle na paniping nakaturo sa kanan" - "Superscript four" - "Superscript latin maliit na titik n" - "Simbolo ng peso" - "Care of" - "Pakanang arrow" - "Pababang arrow" - "Empty set" - "Increment" - "Less-than or equal to" - "Greater-than or equal to" - "Black star" - diff --git a/app/src/main/res/values-tl/strings-talkback-descriptions.xml b/app/src/main/res/values-tl/strings-talkback-descriptions.xml index a0ca98aabe..8290913aa7 100644 --- a/app/src/main/res/values-tl/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-tl/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "Mag-plug in ng headset upang marinig ang mga password key na binabanggit nang malakas." - "Ang kasalukuyang teksto ay %s" - "Walang tekstong inilagay" - "Itinatama ng %1$s ang %2$s sa %3$s" - "Nagsasagawa ang %1$s ng auto-correction" - "Walang suhestyon" - "Hindi alam na character" - "Shift" - "Marami pang simbolo" - "Shift" - "Mga Simbolo" - "Shift" - "I-delete" - "Mga Simbolo" - "Mga Titik" - "Mga Numero" - "Mga Setting" - "Tab" - "Space" - "Input ng boses" - "Emoji" - "Bumalik" - "Maghanap" - "Tuldok" - "Magpalit ng wika" - "Sunod" - "Nauna" - "Naka-enable ang shift" - "Naka-enable ang caps lock" - "Symbols mode" - "Mode na marami pang simbolo" - "Letters mode" - "Phone mode" - "Phone symbols mode" - "Nakatago ang keyboard" - "Ipinapakita ang keyboard na %s" - "petsa" - "petsa at oras" - "email" - "pagmemensahe" - "numero" - "telepono" - "teksto" - "oras" - "URL" - "Mga Kamakailang Ginamit" - "Mga Tao" - "Mga Bagay" - "Kalikasan" - "Mga Lugar" - "Mga Simbolo" - "Mga Watawat" - "Smiley at Mga Tao" - "Mga Hayop at Kalikasan" - "Pagkain at Inumin" - "Paglalakbay at Mga Lugar" - "Aktibidad" - "Mga Emoticon" - "Capital %s" - "Capital I" - "Capital I, tuldok sa itaas" - "Hindi alam na simbolo" - "Hindi alam na emoji" - "Tinatamad na mukha" - "Nahihiya na mukha" - "Mukha na nakasuot ng salamin" - "Nagulat na mukha" - "Humahalik na mukha" - "Nakasimangot na mukha" - "Available ang mga alternatibong character" - "Dini-dismiss ang mga alternatibong character" - "Available ang mga alternatibong suhestyon" - "Dini-dismiss ang mga alternatibong suhestyon" + + + "Mag-plug in ng headset upang marinig ang mga password key na binabanggit nang malakas." + "Ang kasalukuyang teksto ay %s" + "Walang tekstong inilagay" + "Itinatama ng %1$s ang %2$s sa %3$s" + "Nagsasagawa ang %1$s ng auto-correction" + "Walang suhestyon" + "Hindi alam na character" + "Shift" + "Marami pang simbolo" + "Shift" + "Mga Simbolo" + "Shift" + "I-delete" + "Mga Simbolo" + "Mga Titik" + "Mga Numero" + "Mga Setting" + "Tab" + "Space" + "Input ng boses" + "Emoji" + "Bumalik" + "Maghanap" + "Tuldok" + "Magpalit ng wika" + "Sunod" + "Nauna" + "Naka-enable ang shift" + "Naka-enable ang caps lock" + "Symbols mode" + "Mode na marami pang simbolo" + "Letters mode" + "Phone mode" + "Phone symbols mode" + "Nakatago ang keyboard" + "Ipinapakita ang keyboard na %s" + "petsa" + "petsa at oras" + "email" + "pagmemensahe" + "numero" + "telepono" + "teksto" + "oras" + "URL" + "Mga Kamakailang Ginamit" + "Mga Bagay" + "Mga Simbolo" + "Mga Watawat" + "Smiley at Mga Tao" + "Mga Hayop at Kalikasan" + "Pagkain at Inumin" + "Paglalakbay at Mga Lugar" + "Aktibidad" + "Mga Emoticon" + "Capital %s" + "Capital I" + "Capital I, tuldok sa itaas" + "Available ang mga alternatibong character" + "Dini-dismiss ang mga alternatibong character" + "Available ang mga alternatibong suhestyon" + "Dini-dismiss ang mga alternatibong suhestyon" diff --git a/app/src/main/res/values-tl/strings.xml b/app/src/main/res/values-tl/strings.xml index 256668288d..858d70a4f3 100644 --- a/app/src/main/res/values-tl/strings.xml +++ b/app/src/main/res/values-tl/strings.xml @@ -1,193 +1,107 @@ - - - - "Mga pagpipilian sa input" - "Maghanap sa mga contact" - "Gumagamit ang Spell Checker ng entries mula sa iyong contact list." - "Mag-vibrate sa keypress" - "Tumunog sa keypress" - "Mag-popup sa keypress" - "Mga Kagustuhan" - "Mga Account at Privacy" - "Hitsura at Mga Layout" - "Gesture na Pagta-type" - "Pagwawasto ng text" - "Advanced" - "Tema" - "I-enable ang split keyboard" - "Lipat iba paraan ng input" - "Saklaw din ng key ng pagpalit ng wika ang ibang paraan ng input" - "Key ng panlipat ng wika" - "Ipakita kapag maraming wika ng input na pinagana" - "I-dismiss ang delay ng key popup" - "Walang delay" - "Default" - "%sms" - "Default ng system" - "Magmungkahi ng Contact" - "Gamitin ang pangalan mula sa Contact para sa mungkahi/pagtatama." - "Personalized na mungkahi" - "Pahusayin ang %s" - "Double-space period" - "Naglalagay ng tuldok na may puwang ang pag-double tap sa spacebar" - "Auto-capitalization" - "I-capitalize ang unang salita ng bawat pangungusap" - "Personal na diksyunaryo" - "Mga add-on na diksyunaryo" - "Pangunahing diksyunaryo" - "Ipakita ang mga suhestiyon sa pagwawasto" - "Ipakita ang mga iminumungkahing salita habang nagta-type" - "I-block ang masakit na salita" - "Huwag magmungkahi ng mga maaaring nakakapanakit na salita" - "Auto na pagwawasto" - "Awtomatikong tinatama ng spacebar at bantas ang maling na-type" - "Naka-off" - "Modest" - "Agresibo" - "Napaka-agresibo" - "Mga suhestiyon sa susunod na salita" - "Gamitin ang naunang salita sa paggawa ng mga suhestyon" - "I-enable ang gesture typing" - "Mag-input ng salita sa pamamagitan ng pag-slide sa mga titik" - "Ipakita ang trail ng gesture" - "Dynamic na floating preview" - "Tingnan ang iminungkahing salita habang gumagalaw" - "Phrase gesture" - "Maglagay ng espasyo sa pamamagitan ng pag-glide sa space key" - "Key sa voice input" - "Walang naka-enable na paraan ng pag-input gamit ang boses. Tingnan ang Mga setting ng wika at input." - "I-configure ang mga pamamaraan ng pag-input" - "Mga Wika" - "Tulong at feedback" - "Mga Wika" - "I-tap muli upang i-save" - "Mag-tap dito upang i-save" - "Available ang diksyunaryo" - "Tema ng keyboard" - "Lumipat ng account" - "Walang mga account na pinili" - "Kasalukuyang ginagamit ang %1$s" - "OK" - "Kanselahin" - "Mag-sign out" - "Pumili ng account na gagamitin" - "English (UK)" - "English (United States)" - "Spanish (US)" - "Hinglish" - "Serbian (Latin)" - "English (UK) (%s)" - "English (US) (%s)" - "Spanish (US) (%s)" - "Hinglish (%s)" - "Serbian (%s)" - "%s (Traditional)" - "%s (Compact)" - "Walang wika (Alpabeto)" - "Alpabeto (QWERTY)" - "Alpabeto (QWERTZ)" - "Alpabeto (AZERTY)" - "Alpabeto (Dvorak)" - "Alpabeto (Colemak)" - "Alpabeto (PC)" - "Emoji" - "Tema ng keyboard" - "Custom style ng input" - "Mag-add ng style" - "Idagdag" - "Alisin" - "I-save" - "Wika" - "Layout" - "Kailangan pinagana ang custom na istilo ng input bago simulang gamitin. Nais itong paganahin?" - "Paganahin" - "Hindi ngayon" - "Umiiral na ang parehong estilo ng input: %s" - "Tagal ng vibration ng keypress" - "Volume ng tunog ng keypress" - "Delay sa long press ng key" - "Emoji para sa pisikal na keyboard" - "Ipinapakita ng pisikal na Alt key ang emoji palette" - "Default" - "Maligayang pagdating sa %s" - "gamit ang Gesture na Pagta-type" - "Magsimula" - "Susunod na hakbang" - "Sine-set up ang %s" - "Paganahin ang %s" - "Pakitingnan ang \"%s\" sa iyong Mga setting ng wika at input. Papahintulutan nitong gumana ito sa iyong device." - "Naka-enable na ang %s sa iyong Mga setting ng wika at input, kaya tapos na ang hakbang na ito. Magpatuloy sa susunod!" - "I-enable sa Mga Setting" - "Lumipat sa %s" - "Susunod, piliin ang \"%s\" bilang iyong aktibong pamamaraan ng pag-input ng teksto." - "Magpalit ng pamamaraan ng pag-input" - "Binabati kita, handa ka na!" - "Ngayon, mata-type mo na ang lahat ng paborito mong apps gamit ang %s." - "Mag-configure ng mga karagdagang wika" - "Tapos na" - "Ipakita ang icon ng app" - "Ipakita ang icon ng application sa launcher" - "Provider ng Diksyunaryo" - "Provider ng Diksyunaryo" - "Serbisyo ng Diksyunaryo" - "Impormasyon ng update sa diksyunaryo" - "Mga add-on na diksyunaryo" - "Mga setting para sa mga diksyunaryo" - "Mga diksyunaryo ng user" - "Diksyunaryo ng user" - "Available ang diksyunaryo" - "Kasalukuyang dina-download" - "Na-install na" - "Naka-install, naka-disable" - "Di makakonekta sa serbisyong diksyunaryo" - "Walang mga diksyunaryo" - "I-refresh" - "Huling na-update" - "Tumitingin ng mga update" - "Naglo-load…" - "Pangunahing diksyunaryo" - "Kanselahin" - "Mga Setting" - "I-install" - "Kanselahin" - "I-delete" - "Bersyon %1$s" - "Idagdag" - "Idagdag sa diksyunaryo" - "Parirala" - "Higit pa" - "Mas kaunti" - "OK" - "Salita:" - "Shortcut:" - "Wika:" - "Mag-type ng salita" - "Opsyonal na shortcut" - "I-edit ang salita" - "I-edit" - "I-delete" - "Wala kang anumang salita sa diksyunaryo ng user. Para magdagdag ng salita, i-tap ang button na Magdagdag (+)." - "Para sa lahat ng wika" - "Higit pang mga wika..." - "I-delete" - " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + + "Maghanap sa mga contact" + "Mag-vibrate sa keypress" + "Tumunog sa keypress" + "Mag-popup sa keypress" + "Mga Kagustuhan" + "Gesture na Pagta-type" + "Pagwawasto ng text" + "Advanced" + "Tema" + "I-enable ang split keyboard" + "Lipat iba paraan ng input" + "Key ng panlipat ng wika" + "%sms" + "Default ng system" + "Gamitin ang pangalan mula sa Contact para sa mungkahi/pagtatama." + "Personalized na mungkahi" + "Double-space period" + "Naglalagay ng tuldok na may puwang ang pag-double tap sa spacebar" + "Auto-capitalization" + "I-capitalize ang unang salita ng bawat pangungusap" + "Personal na diksyunaryo" + "Pangunahing diksyunaryo" + "Ipakita ang mga suhestiyon sa pagwawasto" + "Ipakita ang mga iminumungkahing salita habang nagta-type" + "I-block ang masakit na salita" + "Huwag magmungkahi ng mga maaaring nakakapanakit na salita" + "Auto na pagwawasto" + "Awtomatikong tinatama ng spacebar at bantas ang maling na-type" + "Naka-off" + "Modest" + "Agresibo" + "Napaka-agresibo" + "Mga suhestiyon sa susunod na salita" + "Gamitin ang naunang salita sa paggawa ng mga suhestyon" + "I-enable ang gesture typing" + "Mag-input ng salita sa pamamagitan ng pag-slide sa mga titik" + "Ipakita ang trail ng gesture" + "Dynamic na floating preview" + "Phrase gesture" + "Maglagay ng espasyo sa pamamagitan ng pag-glide sa space key" + "English (UK)" + "English (United States)" + "Spanish (US)" + "Hinglish" + "Serbian (Latin)" + "%s (Traditional)" + "%s (Compact)" + "Walang wika" + "Emoji" + "Idagdag" + "Alisin" + "I-save" + "Wika" + "Layout" + "Tagal ng vibration ng keypress" + "Volume ng tunog ng keypress" + "Delay sa long press ng key" + "Emoji para sa pisikal na keyboard" + "Ipinapakita ng pisikal na Alt key ang emoji palette" + "Default" + "Maligayang pagdating sa %s" + "gamit ang Gesture na Pagta-type" + "Magsimula" + "Sine-set up ang %s" + "Paganahin ang %s" + "Pakitingnan ang \"%s\" sa iyong Mga setting ng wika at input. Papahintulutan nitong gumana ito sa iyong device." + "I-enable sa Mga Setting" + "Lumipat sa %s" + "Susunod, piliin ang \"%s\" bilang iyong aktibong pamamaraan ng pag-input ng teksto." + "Magpalit ng pamamaraan ng pag-input" + "Binabati kita, handa ka na!" + "Ngayon, mata-type mo na ang lahat ng paborito mong apps gamit ang %s." + "Tapos na" + "Ipakita ang icon ng app" + "Ipakita ang icon ng application sa launcher" + "Mga add-on na diksyunaryo" + "Available ang diksyunaryo" + "Mga Setting" + "I-delete" + "Bersyon %1$s" + "Shortcut:" + "Wika:" + "Mag-type ng salita" + "Opsyonal na shortcut" + "I-edit ang salita" + "Para sa lahat ng wika" + "Higit pang mga wika…" + "Pumili ng pamamaraan ng pag-input" + "I-undo" + "Gawing muli" + "Pahusayin ang suhestiyon batay sa iyong pag-uusap at na-type na data" + "Go" + "Sunod" + "Nauna" + "Tapos" + "Send" + "Maghanap" + "Pause" + "Intay" diff --git a/app/src/main/res/values-tr/bools.xml b/app/src/main/res/values-tr/bools.xml index 840d20c218..8693f6e1ec 100644 --- a/app/src/main/res/values-tr/bools.xml +++ b/app/src/main/res/values-tr/bools.xml @@ -1,21 +1,7 @@ - - - "Git" - "İleri" - "Geri" - "Bitti" - "Gönder" - "Arama" - "Dur" - "Bekle" - diff --git a/app/src/main/res/values-tr/strings-config-important-notice.xml b/app/src/main/res/values-tr/strings-config-important-notice.xml deleted file mode 100644 index 7d9f6ab12b..0000000000 --- a/app/src/main/res/values-tr/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "Önerileri iyileştirmek için iletşmlrmdn. ve yazılan verilerden öğren" - diff --git a/app/src/main/res/values-tr/strings-emoji-descriptions.xml b/app/src/main/res/values-tr/strings-emoji-descriptions.xml deleted file mode 100644 index 9016e8d4b5..0000000000 --- a/app/src/main/res/values-tr/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "Telif hakkı işareti" - "Tescil işareti" - "Çift ünlem işareti" - "Ünlemli soru işareti" - "Ticari marka işareti" - "Bilgi kaynağı" - "Sol ve sağ ok" - "Yukarı ve aşağı ok" - "Kuzey batı oku" - "Kuzey doğu oku" - "Güney doğu oku" - "Güney batı oku" - "Kancalı sol ok" - "Kancalı sağ ok" - "Kol saati" - "Kum saati" - - - - - "Sağa bakan siyah çift üçgen" - "Sola bakan siyah çift üçgen" - "Yukarı bakan siyah çift üçgen" - "Aşağı bakan siyah çift üçgen" - - - - - - - "Çalar saat" - - - - - "Kumu akan kum saati" - - - - - - - "Daire içinde büyük M harfi" - "Küçük siyah kare" - "Beyaz küçük kare" - "Sağa bakan siyah üçgen" - "Sola bakan siyah üçgen" - "Beyaz orta boy kare" - "Siyah orta boy kare" - "Beyaz orta boy küçük kare" - "Siyah orta boy küçük kare" - "Parlayan siyah güneş" - "Bulut" - - - - - - - "Siyah telefon" - "Onay işaretli kutu" - "Yağmur damlaları ve şemsiye" - "Sıcak içecek" - - - "Yukarı işaret eden beyaz işaret parmağı" - - - - - - - - - - - - - - - - - - - "Beyaz gülen yüz" - "Koç" - "Boğa" - "İkizler" - "Yengeç" - "Aslan" - "Başak" - "Terazi" - "Akrep" - "Yay" - "Oğlak" - "Kova" - "Balık" - "Siyah maça" - "Siyah sinek" - "Siyah kupa" - "Siyah karo" - "Sıcak kaynak" - "Siyah genel geri dönüşüm simgesi" - "Tekerlekli sandalye simgesi" - - - "Çapa" - - - - - - - - - - - - - "Dikkat işareti" - "Yüksek voltaj işareti" - "Orta boy beyaz daire" - "Orta boy siyah daire" - - - - - "Futbol topu" - "Beyzbol" - "Karsız kardan adam" - "Bulutun arkasında güneş" - - - "Yılancı" - - - - - - - "Girilmez" - - - "Kilise" - - - - - "Fıskiye" - "Delikteki bayrak" - - - "Yelkenli" - - - - - - - "Çadır" - "Yakıt pompası" - "Siyah makas" - "Büyük beyaz onay işareti" - "Uçak" - "Zarf" - "Havadaki yumruk" - "Havadaki el" - "Zafer işareti" - - - "Kalem" - "Siyah kelam ucu" - "Büyük onay işareti" - "Büyük çarpı işareti" - - - - - "Pırıltılar" - "Sekizli yıldız" - "Sekizli siyah yıldız" - "Kar tanesi" - "Parıltı" - "Çarpı işareti" - "Siyah kare içinde beyaz çarpı işareti" - "Siyah dekoratif soru işareti" - "Beyaz dekoratif soru işareti" - "Beyaz dekoratif ünlem işareti" - "Büyük ünlem işareti" - - - "Ağır kara yürek" - "Büyük artı işareti" - "Büyük eksi işareti" - "Büyük bölme işareti" - "Siyah sağ ok" - "Kıvrımlı döngü" - "Çift kıvrımlı döngü" - "Sağa ve ardından yukarı giden ok" - "Sağa ve ardından aşağı giden ok" - "Siyah sol ok" - "Siyah yukarı ok" - "Siyah aşağı ok" - "Siyah büyük kare" - "Beyaz büyük kare" - "Beyaz orta boy yıldız" - "Büyük daire" - "Dalga işareti" - "Sırayı belirten işaret" - "Daire içinde tebrik işareti" - "Daire içinde gizli işareti" - "Mahjong taşı kızıl ejderha" - "İskambil kartı siyah joker" - "Kan grubu A" - "Kan grubu B" - "Kan grubu O" - "Park yeri" - "Kan grubu AB" - "Kare içinde CL" - "Kare içinde havalı" - "Kare içinde özgür" - "Kare içinde kimlik" - "Kare içinde yeni" - "Kare içinde NG" - "Kare içinde OK" - "Kare içinde SOS" - "Kare içinde ünlem ile birlikte yukarı işareti" - "Kare içinde vs" - "Kare içinde katakana burada" - "Kare içinde katakana hizmet" - "Kare içinde ücretsiz işareti" - "Kare içinde ayrılmış koltuk işareti" - "Kare içinde yasak işareti" - "Kare içinde boş işareti" - "Kare içinde kabul işareti" - "Kare içinde dolu işareti" - "Kare içinde ödendi işareti" - "Kare içinde aylık işareti" - "Kare içinde uygulama işareti" - "Kare içinde indirim işareti" - "Kare içinde çalışıyor işareti" - "Daire içinde avantaj işareti" - "Daire içinde kabul işareti" - "Siklon" - "Sisli" - "Kapalı şemsiye" - "Yıldızlı gece" - "Dağların üzerinden gün doğuşu" - "Gün doğuşu" - "Akşam üstü şehir manzarası" - "Binaların üzerinden gün batışı" - "Gökkuşağı" - "Gece vakti köprü" - "Su dalgası" - "Yanardağ" - "Samanyolu" - "Dünya avrupa-afrika" - "Dünya amerika kıtası" - "Dünya asya-avustralya" - "Dünya boylamlar" - "Hilal simgesi" - "Hilalden sonraki evrede ay simgesi" - "İlk dördün ay simgesi" - "Şişkin ay simgesi" - "Dolunay simgesi" - "Küçülen ay simgesi" - "Son dördün ay simgesi" - "Küçülen hilal simgesi" - "Hilal" - "Yüzü olan yani ay" - "Yüzü olan ilk dördün ay" - "Yüzü olan son dördün ay" - "Yüzü olan dolunay" - "Yüzü olan güneş" - "Parlayan yıldız" - "Kayan yıldız" - - - - - - - - - - - - - - - - - - - - - - - - - - - "Kestane" - "Fide" - "Yaprak dökmeyen ağaç" - "Yaprak döken ağaç" - "Palmiye ağacı" - "Kaktüs" - - - "Lale" - "Kiraz çiçeği" - "Gül" - "Amber çiçeği" - "Ayçiçeği" - "Ağaç çiçeği" - "Mısır başağı" - "Pirinç başağı" - "Ot" - "Dört yapraklı yonca" - "Akçaağaç yaprağı" - "Düşen yaprak" - "Rüzgarda yaprak" - "Mantar" - "Domates" - "Patlıcan" - "Üzüm" - "Kavun" - "Karpuz" - "Mandalina" - "Limon" - "Muz" - "Ananas" - "Kırmızı elma" - "Yeşil elma" - "Armut" - "Şeftali" - "Kiraz" - "Çilek" - "Hamburger" - "Pizza dilimi" - "Kemikli et" - "Tavuk butu" - "Pirinç krakeri" - "Pirinç köftesi" - "Pilav" - "Körili pilav" - "Çanak" - "Spagetti" - "Ekmek" - "Patates kızartması" - "Kızarmış tatlı patates" - "Dango" - "Oden" - "Suşi" - "Karides tava" - "Rulo balık köftesi" - "Yumuşak dondurma" - "Meyveli buz" - "Dondurma" - "Halka çörek" - "Çerez" - "Çubuk çikolata" - "Şeker" - "Lolipop" - "Krema" - "Bal kabı" - "Kurabiye" - "Japon Bento paketi" - "Yiyecek kasesi" - "Yemek pişirme" - "Çatal ve bıçak" - "Kulpsuz çay fincanı" - "Sake şişesi ve fincanı" - "Şarap bardağı" - "Kokteyl bardağı" - "Tropikal içecek" - "Bira bardağı" - "Bira bardağı tokuşturma" - "Biberon" - - - - - - - "Kurdele" - "Paketli hediye" - "Doğum günü pastası" - "Balkabağından fener" - "Noel ağacı" - "Noel baba" - "Havai fişekler" - "Maytap" - "Balon" - "Parti konfetisi" - "Konfeti topu" - "Tanabata ağacı" - "Çapraz bayraklar" - "Çam süslemesi" - "Japon bebekler" - "Sazan balığı şekilli flama" - "Rüzgar çanı" - "Ay izleme töreni" - "Okul çantası" - "Mezuniyet kepi" - - - - - - - - - - - - - - - "Atlıkarınca" - "Dönme dolap" - "Lunapark hız treni" - "Kamış olta ve balık" - "Mikrofon" - "Film kamerası" - "Sinema" - "Kulaklık" - "Ressam paleti" - "Silindir şapka" - "Sirk çadırı" - "Bilet" - "Film çekim tahtası" - "Gösteri sanatları" - "Video oyunu" - "Tam isabet" - "Kumar makinesi" - "Bilardo" - "Oyun zarı" - "Bowling" - "Çiçekli oyun kartları" - "Müzik notası" - "Birden fazla müzik notası" - "Saksafon" - "Gitar" - "Müzik klavyesi" - "Trompet" - "Keman" - "Partisyon" - "Kuşaklı koşu tişörtü" - "Tenis raketi ve topu" - "Kayak ve kayak ayakkabısı" - "Basket topu ve pota" - "Damalı bayrak" - "Kar kayakçısı" - "Koşucu" - "Sörfçü" - - - "Kupa" - "At yarışı" - "Amerikan futbolu" - "Ragbi" - "Yüzücü" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Ev inşaatı" - "Bahçeli ev" - "Ofis binası" - "Japon postanesi" - "Avrupa postanesi" - "Hastane" - "Banka" - "ATM" - "Otel" - "Aşk oteli" - "Bakkal" - "Okul" - "Alışveriş merkezi" - "Fabrika" - "Izakaya feneri" - "Japon kalesi" - "Avrupa kalesi" - - - - - - - - - - - - - - - - - - - - - - - - - "Sıçan" - "Fare" - "Öküz" - "Manda" - "İnek" - - - "Leopar" - "Tavşan" - "Kedi" - "Ejderha" - "Timsah" - "Balina" - "Salyangoz" - "Yılan" - "At" - "Koç" - "Keçi" - "Koyun" - "Maymun" - "Horoz" - "Tavuk" - "Köpek" - "Domuz" - "Yaban domuzu" - "Fil" - "Ahtapot" - "Spiral deniz kabuğu" - "Böcek" - "Karınca" - "Bal arısı" - "Uğur böceği" - "Balık" - "Tropikal balık" - "Balon balığı" - "Kaplumbağa" - "Yumurtadan çıkan civciv" - "Civciv" - "Öne bakan civciv" - "Kuş" - "Penguen" - "Koala" - "Kaniş" - "Hecin devesi" - "Çift hörgüçlü deve" - "Yunus" - "Fare yüzü" - "İnek yüzü" - "Kaplan yüzü" - "Tavşan yüzü" - "Kedi yüzü" - "Ejderha yüzü" - "Su püskürten balina" - "At yüzü" - "Maymun yüzü" - "Köpek yüzü" - "Domuz yüzü" - "Kurbağa yüzü" - "Hamster yüzü" - "Kurt yüzü" - "Ayı yüzü" - "Panda yüzü" - "Domuz burnu" - "Pati izleri" - - - "Gözler" - - - "Kulak" - "Burun" - "Ağız" - "Dil" - "Yukarıyı işaret eden beyaz parmak" - "Aşağıyı işaret eden beyaz parmak" - "Solu işaret eden beyaz parmak" - "Sağı işaret eden beyaz parmak" - "Yumruk işareti" - "El sallama işareti" - "Tamam işareti" - "Beğendim işareti" - "Beğenmedim işareti" - "Alkış işareti" - "Açık eller işareti" - "Taç" - "Kadın şapkası" - "Gözlük" - "Kravat" - "Tişört" - "Kot pantolon" - "Elbise" - "Kimono" - "Bikini" - "Kadın elbiseleri" - "Cüzdan" - "El çantası" - "Kese" - "Erkek ayakkabısı" - "Spor ayakkabısı" - "Yüksek topuklu ayakkabı" - "Kadın sandaleti" - "Kadın çizmesi" - "Ayak izleri" - "Büst silüeti" - "Büst silüetleri" - "Erkek çocuk" - "Kız çocuk" - "Erkek" - "Kadın" - "Aile" - "Erkek ve kadın el ele" - "İki erkek el ele" - "İki kadın el ele" - "Polis memuru" - "Tavşan kulaklı kadın" - "Duvaklı gelin" - "Sarışın kişi" - "Gua pi mao şapkalı adam" - "Sarıklı adam" - "Yaşlı adam" - "Yaşlı kadın" - "Bebek" - "İnşaat işçisi" - "Prenses" - "Japon canavarı" - "Japon cini" - "Hayalet" - "Bebek melek" - "Uzaylı" - "Uzaylı canavar" - "Küçük şeytan" - "Kafatası" - "Danışma masası görevlisi" - "Muhafız" - "Dansçı" - "Ruj" - "Tırnak cilası" - "Yüz masajı" - "Saç kesme" - "Berber işareti" - "Şırınga" - "Hap" - "Öpücük izi" - "Aşk mektubu" - "Zil" - "Mücevher" - "Öpücük" - "Buket" - "Kalpli çift" - "Düğün" - "Çarpan kalp" - "Kırık kalp" - "İki kalp" - "Parlayan kalp" - "Büyüyen kalp" - "Oklu kalp" - "Mavi kalp" - "Yeşil kalp" - "Sarı kalp" - "Mor kalp" - "Kurdeleli kalp" - "Dönen kalpler" - "Kalpli süsleme" - "İçi noktalı elmas şekli" - "Ampul" - "Kızgınlık simgesi" - "Bomba" - "Uyuma simgesi" - "Çarpışma simgesi" - "Su gibi terleme simgesi" - "Damlacık" - "Hızla koşma simgesi" - "Pislik yığını" - "Sıkılmış pazılar" - "Şaşkın simgesi" - "Konuşma balonu" - "Düşünce balonu" - "Beyaz çiçek" - "Yüz puan simgesi" - "Para çantası" - "Döviz bozdurma" - "Koyu renk dolar işareti" - "Kredi kartı" - "Yen işaretli kağıt para" - "Dolar işaretli kağıt para" - "Avro işaretli kağıt para" - "Sterlin işaretli kağıt para" - "Kanatlı para" - "Yukarı giden grafik ve yen işareti" - "Koltuk" - "Kişisel bilgisayar" - "Evrak çantası" - "Mini disk" - "Disket" - "Optik disk" - "Dvd" - "Dosya klasörü" - "Dosya klasörü aç" - "Kıvrık sayfa" - "Yukarı bakan sayfa" - "Takvim" - "Yapraklı takvim" - "Kart fihristi" - "Yukarı giden grafik" - "Aşağı giden grafik" - "Çubuk grafik" - "Pano" - "Raptiye" - "Yuvarlak başlı raptiye" - "Ataş" - "Düz cetvel" - "Üçgen cetvel" - "Yer işaretleri" - "Ana Defter" - "Not Defteri" - "Süslü kapaklı not defteri" - "Kapalı kitap" - "Açık kitap" - "Yeşil kitap" - "Mavi kitap" - "Turuncu kitap" - "Kitaplar" - "İsim rozeti" - "Kaydırma" - "Not" - "Telefon alıcısı" - "Çağrı Cihazı" - "Faks cihazı" - "Uydu anteni" - "Megafon" - "Neşeli megafon" - "Giden kutusu" - "Gelen kutusu" - "Paket" - "E-posta simgesi" - "Gelen zarf" - "Üstünde aşağı ok bulunan zarf" - "İşareti indirilmiş kapalı posta kutusu" - "İşareti kaldırılmış kapalı posta kutusu" - "İşareti kaldırılmış açık posta kutusu" - "İşareti indirilmiş açık posta kutusu" - "Posta kutusu" - "Posta borusu" - "Gazete" - "Cep telefonu" - "Solunda sağ ok bulunan cep telefonu" - "Titreşim modu" - "Cep telefonu kapalı" - "Cep telefonu yasak" - "Çubuklu anten" - "Kamera" - - - "Video kamera" - "Televizyon" - "Radyo" - "Video Kaset" - - - - - "Bükülü sağ oklar" - "Saat yönünde sağ ve sol açık daire oklar" - "İçinde 1 rakamı olan daire ve saat yönünde sağ ve sol açık daire oklar" - "Saat yönünde aşağı ve yukarı açık daire oklar" - "Saat yönünün aksine aşağı ve yukarı açık daire oklar" - "Düşük parlaklık simgesi" - "Yüksek parlaklık simgesi" - "Hoparlör sesi kapalı" - "Hoparlör" - "Tek ses dalgalı hoparlör" - "Üç ses dalgalı hoparlör" - "Pil" - "Elektrik fişi" - "Sola bakan büyüteç" - "Sağa bakan büyüteç" - "Dolma kalem ucu ve kilit" - "Anahtar ve kapalı kilit" - "Anahtar" - "Kilit" - "Açık kilit" - "Zil" - "Zil sesi kapalı" - "Yer işareti" - "Bağlantı simgesi" - "Radyo düğmesi" - "Sol geri ok" - "Sol bitiş oku" - "Üstünde sağ ve sol ok bulunan, ünlem işaretli açık yazısı" - "Üstünde sağ ok bulunan yakında yazısı" - "Üstünde yukarı ok bulunan yukarı işareti" - "18 yaşından küçükler giremez işareti" - "Klavye tuşu 10" - "Latin büyük harf giriş simgesi" - "Latin küçük harf giriş simgesi" - "Rakam giriş simgesi" - "Simgeler için giriş simgesi" - "Latin harfi giriş simgesi" - "Ateş" - "Pilli fener" - "İngiliz anahtarı" - "Çekiç" - "Cıvata ve somun" - "Bıçak" - "Tabanca" - "Mikroskop" - "Teleskop" - "Kristal küre" - "Ortası noktalı, altı köşeli yıldız" - "Acemi anlamında Japon simgesi" - "Üç çatallı amblem" - "Siyah kare düğmesi" - "Beyaz kare düğmesi" - "Büyük kırmızı daire" - "Büyük mavi daire" - "Büyük turuncu baklava şekli" - "Büyük mavi baklava şekli" - "Küçük turuncu baklava şekli" - "Küçük mavi baklava şekli" - "Yukarıya işaret eden kırmızı üçgen" - "Aşağıya işaret eden kırmızı üçgen" - "Yukarıya işaret eden küçük kırmızı üçgen" - "Aşağıya işaret eden küçük kırmızı üçgen" - - - - - - - - - - - - - "Saat bir" - "Saat iki" - "Saat üç" - "Saat dört" - "Saat beş" - "Saat altı" - "Saat yedi" - "Saat sekiz" - "Saat dokuz" - "Saat on" - "Saat on bir" - "Saat on iki" - "Saat bir buçuk" - "Saat iki buçuk" - "Saat üç buçuk" - "Saat dört buçuk" - "Saat beş buçuk" - "Saat altı buçuk" - "Saat yedi buçuk" - "Saat sekiz buçuk" - "Saat dokuz buçuk" - "Saat on buçuk" - "Saat on bir buçuk" - "Saat yarım" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Fuji dağı" - "Tokyo kulesi" - "Özgürlük heykeli" - "Japonya silüeti" - "Moyai heykeli" - "Sırıtan yüz" - "Gözleri gülen, sırıtan yüz" - "Mutluluk gözyaşı döken yüz" - "Ağzı açık gülen yüz" - "Ağzı açık, gözleri gülen yüz" - "Soğuk soğuk terleyen, ağzı açık, gözleri gülen yüz" - "Gözleri sıkı kapalı, ağzı açık, gülen yüz" - "Başı haleli gülen yüz" - "Boynuzlu gülen yüz" - "Göz kırpan yüz" - "Gözleri gülen yüz" - "Lezzetli yemeğin tadını çıkaran yüz" - "Rahatlamış yüz" - "Gözleri kalp şeklinde gülen yüz" - "Gözlüklü gülen yüz" - "Yapmacık gülen yüz" - "Duygusuz yüz" - "İfadesiz yüz" - "Keyifsiz yüz" - "Soğuk soğuk terleyen yüz" - "Düşünceli yüz" - "Şaşkın yüz" - "Afallamış yüz" - "Öpen yüz" - "Öpücük gönderen yüz" - "Gözleri gülen, öpen yüz" - "Gözleri kapalı öpen yüz" - "Dili dışarıda yüz" - "Dili dışarıda göz kırpan yüz" - "Dili dışarıda, gözleri sımsıkı kapalı yüz" - "Üzgün yüz" - "Endişeli yüz" - "Kızgın yüz" - "Asık yüz" - "Ağlayan yüz" - "Azimli yüz" - "Zafer kazanmış yüz" - "Üzgün ancak rahatlamış yüz" - "Ağzı açık hoşnutsuz yüz" - "Üzüntülü yüz" - "Korkmuş yüz" - "Yorgun yüz" - "Uykulu yüz" - "Bitkin yüz" - "Ekşi yüz" - "Bağıra çağıra ağlayan yüz" - "Ağzı açık yüz" - "Susmuş yüz" - "Soğuk soğuk terleyen, ağzı açık yüz" - "Korkuyla bağıran yüz" - "Çok şaşırmış yüz" - "Kızarmış yüz" - "Uyuyan yüz" - "Sersemlemiş yüz" - "Ağzı olmayan yüz" - "Tıbbi maskeli yüz" - "Gülen gözlü, sırıtan kedi yüzü" - "Mutluluk gözyaşları döken kedi yüzü" - "Ağzı açık, gülen kedi yüzü" - "Gözleri kalp şeklinde gülen kedi yüzü" - "Acı acı gülen kedi yüzü" - "Gözleri kapalı, öpen kedi yüzü" - "Somurtmuş kedi yüzü" - "Ağlayan kedi yüzü" - "Yorgun kedi yüzü" - - - - - - - - - "İyi değil hareketi yapan yüz" - "Onaylayan ifadeye sahip yüz" - "Başıyla abartılı şekilde onaylayan kişi" - "Görmeyen maymun" - "Duymayan maymun" - "Konuşmayan maymun" - "Mutlu şekilde bir elini kaldırmış kişi" - "Kutlama için ellerini kaldırmış kişi" - "Hoşnutsuz kişi" - "Somurtkan yüzlü kişi" - "Ellerini birleştirmiş kişi" - "Roket" - "Helikopter" - "Buharlı lokomotif" - "Vagon" - "Yüksek hızlı tren" - "Mermi burunlu, yüksek hızlı tren" - "Tren" - "Metro" - "Hafif raylı sistem" - "İstasyon" - "Tramvay" - "Tramvay vagonu" - "Otobüs" - "Gelen otobüs" - "Troleybüs" - "Otobüs durağı" - "Minibüs" - "Cankurtaran" - "İtfaiye" - "Polis arabası" - "Gelen polis arabası" - "Taksi" - "Gelen taksi" - "Otomobil" - "Gelen otomobil" - "Eğlence taşıtı" - "Kamyon" - "Tır" - "Traktör" - "Tek raylı sistem" - "Dağ demiryolu" - "Hava ray sistemi" - "Teleferik" - "Hava tramvayı" - "Gemi" - "Tekne" - "Hız teknesi" - "Yatay trafik ışığı" - "Dikey trafik ışığı" - "İnşaat işareti" - "Polis arabası ışığı" - "Üçgen konum işareti" - "Kapı" - "Girilmez işareti" - "Sigara içilir işareti" - "Sigara içilmez simgesi" - "Çöpe atınız işareti" - "Yere çöp atmayınız işareti" - "İçilebilir su işareti" - "İçilemez su işareti" - "Bisiklet" - "Bisiklet giremez" - "Bisikletçi" - "Dağ bisikletçisi" - "Yaya" - "Yaya giremez" - "Okul geçidi" - "Erkekler için işareti" - "Kadınlar için işareti" - "Tuvalet" - "Bebek işareti" - "Tuvalet" - "Tuvalet" - "Duş" - "Banyo" - "Küvet" - "Pasaport kontrolü" - "Gümrük" - "Bagaj alma yeri" - "Kayıp bagaj" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-tr/strings-letter-descriptions.xml b/app/src/main/res/values-tr/strings-letter-descriptions.xml deleted file mode 100644 index f0b765ce3d..0000000000 --- a/app/src/main/res/values-tr/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "Dişil sıra göstergesi" - "Mikro işareti" - "Eril sıra göstergesi" - "Sert S" - "A, aksanlı" - "A, vurgulu" - "A, inceltme işaretli" - "A, dalga işaretli" - "A, iki noktalı" - "A, üstte halkalı" - "A, E, bağ işaretli" - "C, çengelli" - "E, aksanlı" - "E, vurgulu" - "E, inceltme işaretli" - "E, iki noktalı" - "I, aksanlı" - "I, vurgulu" - "I, inceltme işaretli" - "I, iki noktalı" - "Eth" - "N, dalga işaretli" - "O, aksanlı" - "O, vurgulu" - "O, inceltme işaretli" - "O, dalga işaretli" - "O, iki noktalı" - "O, orta çizgili" - "U, aksanlı" - "U, vurgulu" - "U, inceltme işaretli" - "U, iki noktalı" - "Y, vurgulu" - "Thorn" - "Y, iki noktalı" - "A, uzatma işaretli" - "A, kısaltma işaretli" - "A, kancalı" - "C, vurgulu" - "C, inceltme işaretli" - "C, üstte noktalı" - "C, yumuşatma işaretli" - "D, yumuşatma işaretli" - "D, orta çizgili" - "E, uzatma işaretli" - "E, kısaltma işaretli" - "E, üstte noktalı" - "E, kancalı" - "E, yumuşatma işaretli" - "G, inceltme işaretli" - "G, kısaltma işaretli" - "G, üstte noktalı" - "G, çengelli" - "H, inceltme işaretli" - "H, orta çizgili" - "I, dalga işaretli" - "I, uzatma işaretli" - "I, kısaltma işaretli" - "I, kancalı" - "Noktasız I" - "I, J, bağ işaretli" - "J, inceltme işaretli" - "K, çengelli" - "Kra" - "L, vurgulu" - "L, çengelli" - "L, yumuşatma işaretli" - "L, orta noktalı" - "L, orta çizgili" - "N, vurgulu" - "N, çengelli" - "N, yumuşatma işaretli" - "N, öncesinde üstten virgül" - "Eng" - "O, uzatma işaretli" - "O, kısaltma işaretli" - "O, çift vurgulu" - "O, E, bağ işaretli" - "R, vurgulu" - "R, çengelli" - "R, yumuşatma işaretli" - "S, vurgulu" - "S, inceltme işaretli" - "S, çengelli" - "S, yumuşatma işaretli" - "T, çengelli" - "T, yumuşatma işaretli" - "T, orta çizgili" - "U, dalga işaretli" - "U, uzatma işaretli" - "U, kısaltma işaretli" - "U, üstte halkalı" - "U, çift vurgulu" - "U, kancalı" - "W, inceltme işaretli" - "Y, inceltme işaretli" - "Z, vurgulu" - "Z, üstte nokta" - "Z, yumuşatma işaretli" - "Uzun S" - "O, duyarga işaretli" - "U, duyarga işaretli" - "S, alt virgüllü" - "T, alt virgüllü" - "Schwa" - "A, alt noktalı" - "A, üst çengelli" - "A, inceltme işaretli ve vurgulu" - "A, inceltme işaretli ve aksanlı" - "A, inceltme işaretli ve üst çengelli" - "A, inceltme işaretli ve uzatma işareti" - "A, inceltme işaretli ve alt noktalı" - "A, kısaltma işaretli ve vurgulu" - "A, kısaltma işaretli ve aksanlı" - "A, kısaltma işaretli ve üst çengelli" - "A, kısaltma işaretli ve dalga işaretli" - "A, kısaltma işaretli ve alt noktalı" - "E, alt noktalı" - "E, üst çengelli" - "E, dalga işaretli" - "E, inceltme işaretli ve vurgulu" - "E, inceltme işaretli ve aksanlı" - "E, inceltme işaretli ve üst çengelli" - "E, inceltme işaretli ve dalga işaretli" - "E, inceltme işaretli ve alt noktalı" - "I, üst çengelli" - "I, alt noktalı" - "O, alt noktalı" - "O, üst çengelli" - "O, inceltme işaretli ve vurgulu" - "O, inceltme işaretli ve aksanlı" - "O, inceltme işaretli ve üst çengelli" - "O, inceltme işaretli ve dalga işaretli" - "O, inceltme işaretli ve alt noktalı" - "O, duyarga işaretli ve vurgulu" - "O, duyarga işaretli ve aksanlı" - "O, duyarga işaretli ve üst çengelli" - "O, duyarga işaretli ve dalga işaretli" - "O, duyarga işaretli ve alt noktalı" - "U, alt noktalı" - "U, üst çengelli" - "U, duyarga işaretli ve vurgulu" - "U, duyarga işaretli ve aksanlı" - "U, duyarga işaretli ve üst çengelli" - "U, duyarga işaretli ve dalga işaretli" - "U, duyarga işaretli ve alt noktalı" - "Y, aksanlı" - "Y, alt noktalı" - "Y, üst çengelli" - "Y, dalga işaretli" - "Ters soru işareti" - "Sola bakan açılı çift tırnak işareti" - "Orta noktalı" - "Üst simge bir" - "Sağa bakan açılı çift tırnak işareti" - "Ters soru işareti" - "Sol tekli tırnak işareti" - "Sağ tekli tırnak işareti" - "Tekli alt 9 tırnak işareti" - "Sol çift tırnak işareti" - "Sağ çift tırnak işareti" - "Kama" - "Çift kama" - "Per mille işareti" - "Üs" - "Çift üs" - "Sola bakan açılı tek tırnak işareti" - "Sağa bakan açılı tek tırnak işareti" - "Üst simge dört" - "Üst simge latin küçük harf n" - "Pezo işareti" - "Yüzde işareti" - "Sağa bakan ok" - "Aşağı bakan ok" - "Boş küme" - "Artış işareti" - "Küçüktür veya eşittir" - "Büyüktür veya eşittir" - "Siyah yıldız" - diff --git a/app/src/main/res/values-tr/strings-talkback-descriptions.xml b/app/src/main/res/values-tr/strings-talkback-descriptions.xml index 03ee19b7d7..43f3bf106a 100644 --- a/app/src/main/res/values-tr/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-tr/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "Şifre tuşlarının sesli okunmasını dinlemek için kulaklık takın." - "Mevcut metin: %s" - "Metin girilmedi" - "%1$s, %2$s kelimesini %3$s olarak düzeltir" - "%1$s otomatik düzeltme yapar" - "Öneri yok" - "Bilinmeyen karakter" - "Üst karakter" - "Diğer simgeler" - "Üst karakter" - "Simgeler" - "Üst karakter" - "Sil" - "Simgeler" - "Harfler" - "Rakamlar" - "Ayarlar" - "Sekme" - "Boşluk çubuğu" - "Ses girişi" - "Emoji" - "Enter" - "Arama" - "Nokta" - "Dili değiştir" - "Sonraki" - "Önceki" - "Üst karakter etkin" - "Büyük harf etkin" - "Sembol modu" - "Diğer simgeler modu" - "Harf modu" - "Telefon modu" - "Telefon sembolleri modu" - "Klavye gizli" - "%s klavyesi görüntüleniyor" - "tarih" - "tarih ve saat" - "e-posta" - "mesajlaşma" - "rakam" - "telefon" - "metin" - "saat" - "URL" - "Son Kullanılanlar" - "Kişiler" - "Nesneler" - "Doğa" - "Yerler" - "Simgeler" - "Bayraklar" - "Smiley ve İnsanlar" - "Hayvanlar ve Doğa" - "Yiyecek ve İçecek" - "Seyahat ve Yerler" - "Etkinlik" - "İfadeler" - "Büyük Harf %s" - "Büyük Harf I" - "Büyük Harf I, üst noktalı" - "Bilinmeyen simge" - "Bilinmeyen emoji" - "Sıkılmış yüz" - "Utanmış yüz" - "Güneş gözlüğü takan yüz" - "Şaşırmış yüz" - "Öpen yüz" - "Çatık kaşlı yüz" - "Alternatif karakterler kullanılabilir" - "Alternatif karakterler yoksayılır" - "Alternatif öneriler kullanılabilir" - "Alternatif öneriler yoksayılır" + + + "Şifre tuşlarının sesli okunmasını dinlemek için kulaklık takın." + "Mevcut metin: %s" + "Metin girilmedi" + "%1$s, %2$s kelimesini %3$s olarak düzeltir" + "%1$s otomatik düzeltme yapar" + "Öneri yok" + "Bilinmeyen karakter" + "Üst karakter" + "Diğer simgeler" + "Üst karakter" + "Simgeler" + "Üst karakter" + "Sil" + "Simgeler" + "Harfler" + "Rakamlar" + "Ayarlar" + "Sekme" + "Boşluk çubuğu" + "Ses girişi" + "Emoji" + "Enter" + "Arama" + "Nokta" + "Dili değiştir" + "Sonraki" + "Önceki" + "Üst karakter etkin" + "Büyük harf etkin" + "Sembol modu" + "Diğer simgeler modu" + "Harf modu" + "Telefon modu" + "Telefon sembolleri modu" + "Klavye gizli" + "%s klavyesi görüntüleniyor" + "tarih" + "tarih ve saat" + "e-posta" + "mesajlaşma" + "rakam" + "telefon" + "metin" + "saat" + "URL" + "Son Kullanılanlar" + "Nesneler" + "Simgeler" + "Bayraklar" + "Smiley ve İnsanlar" + "Hayvanlar ve Doğa" + "Yiyecek ve İçecek" + "Seyahat ve Yerler" + "Etkinlik" + "İfadeler" + "Büyük Harf %s" + "Büyük Harf I" + "Büyük Harf I, üst noktalı" + "Alternatif karakterler kullanılabilir" + "Alternatif karakterler yoksayılır" + "Alternatif öneriler kullanılabilir" + "Alternatif öneriler yoksayılır" diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index d95069fe3e..6b55458063 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -1,193 +1,448 @@ - - - - - "Giriş seçenekleri" - "Kişi adlarını denetle" - "Yazım denetleyici, kişi listenizdeki girişleri kullanır" - "Tuşa basıldığında titret" - "Tuşa basıldığında ses çıkar" - "Tuşa basıldığında pop-up aç" - "Tercihler" - "Hesaplar ve Gizlilik" - "Görünüm ve Düzenler" - "Hareketle Yazma" - "Metin düzeltme" - "Gelişmiş" - "Tema" - "Bölünmüş klavyeyi etkinleştir" - "Diğer giriş yöntemine geç" - "Dil geçiş tuşu diğer giriş yöntemlerini de kapsar" - "Dil değiştirme tuşu" - "Birden fazla giriş dili etkin olduğunda göster" - "Tuş popup\'ının kapatılmasını geciktirme" - "Gecikme yok" - "Varsayılan" - "%s ms" - "Sistem varsayılanı" - "Kişi Adları öner" - "Öneri ve düzeltmeler için Kişiler\'deki adları kullan" - "Kişisel öneriler" - "%s uygulamasını iyileştir" - "Çift boşlukla nokta ekle" - "Boşluk çubuğuna iki kez dokunmak nokta ve ardından bir boşluk ekler" - "Otomatik büyük harf yap" - "Her cümlenin ilk harfini büyük harf yapar" - "Kişisel sözlük" - "Ek sözlükler" - "Ana sözlük" - "Düzeltme önerilerini göster" - "Yazarken, önerilen kelimeleri görüntüle" - "Rahatsız edici kelimeleri engelle" - "Rahatsız edici olabilecek kelimeleri önermez" - "Otomatik düzelt" - "Boşluk tuşu ve noktalama işaretleri yanlış yazılan kelimeleri otomatikman düzeltir" - "Kapalı" - "Ölçülü" - "Geniş ölçekte" - "Çok geniş ölçekte" - "Sonraki kelime önerileri" - "Öneride bulunurken önceki kelimeyi kullanır" - "Hareketle yazmayı etkinleştir" - "Kelime girmek için parmağınızı harflerin üzerinde kaydırın" - "Hareket izini göster" - "Dinamik kayan önizleme" - "Hareket sırasında önerilen kelimeyi göster" - "Kelime öbeği hareketi" - "Hareketle girişte boşlukları, boşluk tuşuna kaydırarak girin" - "Ses girişi tuşu" - "Hiçbir ses girişi yöntemi etkinleştirilmedi. Dil ve giriş ayarlarını kontrol edin." - "Giriş yöntemlerini yapılandır" - "Diller" - "Yardım ve geri bildirim" - "Diller" - "Kaydetmek için tekrar dokunun" - "Kaydetmek için buraya dokunun" - "Sözlük kullanılabilir" - "Klavye teması" - "Hesap değiştir" - "Hiçbir hesap seçilmedi" - "Şu anda %1$s kullanılıyor" - "Tamam" - "İptal" - "Oturumu kapat" - "Kullanmak için bir hesap seçin" - "İngilizce (BK)" - "İngilizce (ABD)" - "İspanyolca (ABD)" - "Hingilizce" - "Sırpça (Latin alfabesi)" - "İngilizce (İngiltere) (%s)" - "İngilizce (ABD) (%s)" - "İspanyolca (ABD) (%s)" - "Hingilizce (%s)" - "Sırpça (%s)" - "%s (Geleneksel)" - "%s (Kompakt)" - "Dil yok (Alfabe)" - "Alfabe (QWERTY)" - "Alfabe (QWERTZ)" - "Alfabe (AZERTY)" - "Alfabe (Dvorak)" - "Alfabe (Colemak)" - "Alfabe (PC)" - "Emoji" - "Klavye teması" - "Özel giriş stilleri" - "Stil ekle" - "Ekle" - "Kaldır" - "Kaydet" - "Dil" - "Düzen" - "Kullanmaya başlamadan önce özel giriş stilinizin etkinleştirilmesi gerekiyor. Şimdi etkinleştirmek ister misiniz?" - "Etkinleştir" - "Şimdi değil" - "Aynı giriş stili zaten var: %s" - "Tuşa basma titreşim süresi" - "Tuşa basma ses seviyesi" - "Tuşa uzun basma gecikmesi" - "Fiziksel klavye için emoji" - "Fiziksel Alt tuşu, emoji paletini gösterir" - "Varsayılan" - "%s uygulamasına hoş geldiniz" - "Hareketle Yazmayı içerir" - "Başlayın" - "Sonraki adım" - "%s uygulamasını kurma" - "%s uygulamasını etkinleştirin" - "Lütfen \"%s\" uygulamasını Dil ve giriş ayarlarınızda işaretleyin. Bu, uygulamaya cihazınızda çalışma yetkisi verecektir." - "%s, Dil ve giriş ayarlarınızda önceden etkinleştirildiği için bu adım tamamlandı. Bir sonraki adıma ilerleyin!" - "Ayarlarda etkinleştir" - "%s uygulamasına geçin" - "Sonra, \"%s\" uygulamasını etkin metin giriş yönteminiz olarak seçin." - "Giriş yöntemini değiştir" - "Tebrikler, bitirdiniz!" - "Artık %s ile tüm favori uygulamalarınızda yazabilirsiniz." - "Ek dilleri yapılandırın" - "Tamamlandı" - "Uygulama simgesini göster" - "Uygulama simgesini başlatıcıda gösterir" - "Sözlük Sağlayıcı" - "Sözlük Sağlayıcı" - "Sözlük Hizmeti" - "Sözlük güncelleme bilgileri" - "Ek sözlükler" - "Sözlükler için ayarlar" - "Kullanıcı sözlükleri" - "Kullanıcı sözlüğü" - "Sözlük mevcut" - "Şu anda indiriliyor" - "Yüklendi" - "Yüklendi, devre dışı bırakıldı" - "Sözlük hizmetine bağlantı sorunu" - "Kullanılabilir sözlük yok" - "Yenile" - "Son güncelleme tarihi" - "Güncellemeler denetleniyor" - "Yükleniyor…" - "Ana sözlük" - "İptal" - "Ayarlar" - "Yükle" - "İptal" - "Sil" - "Sürüm %1$s" - "Ekle" - "Sözlüğe ekle" - "Kelime öbeği" - "Daha çok seçenek" - "Daha az seçenek" - "Tamam" - "Kelime:" - "Kısayol:" - "Dil:" - "Bir kelime yazın" - "İsteğe bağlı kısayol" - "Kelimeyi düzenle" - "Düzenle" - "Sil" - "Kullanıcı sözlüğünde kelime yok. Kelime eklemek için Ekle (+) düğmesine dokunun." - "Tüm diller için" - "Diğer diller…" - "Sil" - " ABCÇDEFGĞHIİJKLMNOÖPQRSŞTUÜVWXYZ" + + + "Kişi adlarını denetle" + "Tuşa basıldığında titret" + "Tuşa basıldığında ses çıkar" + Tuşa basıldığında açılır pencere aç + Tercihler + Hareketle yazma + "Metin düzeltme" + "Gelişmiş" + "Tema" + "Bölünmüş klavyeyi etkinleştir" + "Diğer giriş yöntemine geç" + "Dil değiştirme tuşu" + "%s ms" + "Sistem varsayılanı" + "Öneri ve düzeltmeler için Kişiler\'deki adları kullan" + "Kişisel öneriler" + "Çift boşlukla nokta ekle" + "Boşluk çubuğuna iki kez dokunmak nokta ve ardından bir boşluk ekler" + "Otomatik büyük harf yap" + "Her cümlenin ilk harfini büyük harf yapar" + "Kişisel sözlük" + "Ana sözlük" + "Düzeltme önerilerini göster" + "Yazarken, önerilen kelimeleri görüntüle" + "Rahatsız edici kelimeleri engelle" + "Rahatsız edici olabilecek kelimeleri önermez" + "Otomatik düzelt" + Boşluk tuşu ve noktalama işaretleri yanlış yazılan kelimeleri otomatik düzeltir + "Kapalı" + "Ölçülü" + "Geniş ölçekte" + "Çok geniş ölçekte" + "Sonraki kelime önerileri" + "Öneride bulunurken önceki kelimeyi kullanır" + "Hareketle yazmayı etkinleştir" + "Kelime girmek için parmağınızı harflerin üzerinde kaydırın" + "Hareket izini göster" + "Dinamik kayan önizleme" + "Kelime öbeği hareketi" + "Hareketle girişte boşlukları, boşluk tuşuna kaydırarak girin" + "İngilizce (BK)" + "İngilizce (ABD)" + "İspanyolca (ABD)" + "Hingilizce" + "Sırpça (Latin alfabesi)" + %s (Geleneksel) + %s (Kompakt) + "Dil yok" + "Emoji" + "Ekle" + "Kaldır" + "Kaydet" + "Dil" + "Düzen" + "Tuşa basma titreşim süresi" + "Tuşa basma ses seviyesi" + "Tuşa uzun basma gecikmesi" + "Fiziksel klavye için emoji" + "Fiziksel Alt tuşu, emoji paletini gösterir" + "Varsayılan" + %s uygulamasına hoş geldiniz + "Hareketle Yazmayı içerir" + "Başlayın" + %s uygulamasını kurma + %s uygulamasını etkinleştirin + Lütfen \"%s\" uygulamasını Dil ve giriş ayarlarınızda işaretleyin. Bu, uygulamaya cihazınızda çalışma yetkisi verecektir. + "Ayarlarda etkinleştir" + %s uygulamasına geçin + Sonra, \"%s\" uygulamasını etkin metin giriş yönteminiz olarak seçin. + "Giriş yöntemini değiştir" + Tebrikler, artık hazırsın! + Artık %s ile tüm favori uygulamalarınızda yazabilirsiniz. + "Tamamlandı" + "Uygulama simgesini göster" + "Uygulama simgesini başlatıcıda gösterir" + "Ek sözlükler" + "Sözlük mevcut" + "Ayarlar" + "Sil" + Sürüm %1$s + "Kısayol:" + "Dil:" + Bir kelime yaz + "İsteğe bağlı kısayol" + "Kelimeyi düzenle" + "Tüm diller için" + "Diğer diller…" + Pano geçmişi + Düzeltmeler + Deneysel + Çeşitli + Sınır yok + Gizli modu zorla + Yeni sözcüklerin öğrenilmesini devre dışı bırak + Sayı satırı + Boşluk tuşuna uzun süre basmak, giriş yöntemi seçim menüsünü gösterecektir + HeliBoard yazım denetleyicisi ayarları + Klavye yükseklik ölçeği + Kadırarak silme + Tuş kenarlıkları + Otomatik gündüz/gece modu + HeliBoard yazım denetleyicisi + %sdak. + Öneriler + Emoji tuşu + Pano geçmişini etkinleştir + Devre dışı bırakılırsa, pano tuşu varsa pano içeriğini yapıştıracaktır + Geçmiş saklama süresi + Her zaman sayı satırını göster + Diğer tuşlar + Tuş ipuçlarını göster + Uzun basma ipuçlarını göster + Boşluk tuşuyla giriş yöntemini değiştir + %s (Akkhor) + Bir kerede metnin daha büyük bölümlerini seçmek ve silmek için silme tuşundan hızlıca kaydırın + Görünüm sistem ayarlarını takip edecektir + HeliBoard ayarları + Giriş + Ek tuşlar + Noktalama işaretlerinden sonra otomatik boşluk + Yeni bir sözcük yazarken noktalama işaretlerinden sonra otomatik olarak boşluk ekle + Otomatik düzeltme güveni + "Giriş yöntemini seçin" + "Geri al" + "Yeniden yap" + Önerileri geliştirmek için kişilerden ve yazdığın verilerden bilgi edin + "Git" + "İleri" + "Geri" + "Bitti" + "Gönder" + "Arama" + "Dur" + "Bekle" + Uyarı: Bu ayarı devre dışı bırakmak öğrenilmiş verileri temizler + Kişisel sözlüğe kelime ekle + Her zaman önerileri göster + İkisini de değiştir + Yedekle + Yedekle ve geri yükle + Yedekleme hatası: %s + Yedeklemeyi yüklerken hata: %s + Dili değiştir + Geri yükle + Çok dilli yazma + Kitaplığı yükle + Kitaplığı sil + Diller ve Düzenler + Daha fazla otomatik düzeltme + Öğrenilmiş kelimeleri depolamak için cihaz kişisel sözlüğünü kullan + Sayı satırını yerelleştir + Gölgeli + İçerik kopyalandı + Bilinmeyen kitaplık dosyası. Bunun güvenilir bir kaynaktan geldiğine ve \'%s\' için olduğuna emin misin? + Kayan önizleme + Kaydırırken önerilen kelimeyi gör + Hızlı yazma bekleme süresi + Bir hareket sırasında önizlemeyi taşı + Hareket izi ömrü + Bağlantı vb. tek kelime olarak tespit etmeye çalış + Sayı satırı + Dil (öncelikli) + Düzen + Semboller + Araç çubuğu tuşlarını seç + Pano + Panoyu temizle + İşlevsel tuşlar + İşlevsel tuşlar (Semboller) + İşlevsel tuşlar (Daha fazla sembol) + Semboller (Arapça) + Daha fazla sembol + Telefon + Telefon sembolleri + Sayılar + Sayısal tuş takımı + Arka plan görseli ayarla + Sayısal tuş takımı (yatay) + Bir daha gösterme + %s (deneysel) + Siyah + Giriş başlarsa veya metin seçilirse araç çubuğunu göster + Araç çubuğunu otomatik gizle + Öneriler mevcut olduğunda araç çubuğunu gizle + Araç çubuğunu otomatik göster + Para birimlerini özelleştir + Yalnızca ana renkleri göster + Tüm renkleri göster + Ana ve en fazla 6 ikincil para birimi sembolünü boşlukla ayırarak ayarla + Anahtar boşluklarını daralt + Sayısal tuş takımı için sembol tuşuna uzun bas + Alt dolgu ölçeği + burada + Dil değiştirme tuşu davranışı + Yaygın varyantları ekle + Mevcut tüm varyantları ekle + %s düzeni silinsin mi? + Düzen hatası: %s + Gece + Ham düzeni düzenlemek için dokun + Görsel gündüz veya gece modu için ayarlansın mı? + Gündüz + Kullanıcı tarafından eklenen \"%s\" sözlüğü kaldırılsın mı? + Holo Beyaz + Renkli gezinme çubuğu + Kullanıcı tanımlı + Boşluk çubuğu arka planı + Boşluk çubuğu metni + Hareketli giriş + Kullanıcı tarafından eklenen \"%1$s\" sözlüğü değiştirilsin mi? +\n +\nMevcut sözlük: +\n %2$s +\n +\nYeni sözlük: +\n%3$s + Bölünmüş mesafe + Giriş alanı tarafından açıkça talep edilmese bile otomatik düzeltme + Her zaman orta öneriyi kullan + Boşluk veya noktalama işaretine basıldığında ortadaki öneri girilecektir + Açılır pencerede aksanlı daha fazla harf göster + Klavye dillerinde tanımlanan varyantları göster + Latin sayıları yerine yerel olanı tercih et + Bu kelime zaten %s kullanıcı sözlüğünde mevcut. Lütfen başka bir tane yaz. + Fark edilmeyebilecek özellikleri göster + cihaz korumalı depolama + Pano geçmişini kapat + Pano araç çubuğu tuşlarını seç + Bir tuşa uzun süre basmak ek işlevleri tetikliyorsa ipuçlarını göster + Özel düzen ekle + Semboller + Dil seç + %s (Genişletilmiş) + Uyumlu formatta bir dosya seç. Formatlarla ilgili bilgi %s mevcuttur. + Dosyayı yükle + Panoya kopyala + Yükle + Dosyaya kaydet + Sözlükler + Klavyeyi yapılandır + Dosyadan sözlük ekle + Sıklık: + Renkler + Çikolata + Orman + Açık Mavi + Dinamik renkler + Mavi Gri + Kahverengi + Menekşe + Vurgu + Gizli özelliklerin açıklaması + ► Sabitlenmiş araç çubuğu tuşlarına uzun basmak ek işlevsellik sağlar: <br> \n\t• panoya kopyala &#65515; yapıştır <br> \n\t• sola/sağa hareket et &#65515; kelime sola/sağa <br> \n\t• yukarı/aşağı hareket et &#65515; sayfa yukarı/aşağı <br> \n\t• kelime sola/sağa &#65515; satır başı/sonu <br> \n\t• sayfa yukarı/aşağı &#65515; sayfa başı/sonu <br> \n\t• kopyala &#65515; kes <br> \n\t• kelime seç &#8596; tümünü seç <br> \n\t• geri al &#8596; yinele <br> <br> \n► Öneri şeridi araç çubuğundaki tuşlara uzun basmak, onları öneri şeridine sabitler. <br> <br> \n► Virgül tuşuna uzun basarak Pano Görünümü, Emoji Görünümü, Tek El Modu, Ayarlar veya Dil Değiştir\'e erişebilirsin: <br> \n\t• Emoji Görünümü ve Dil Değiştir, ilgili tuşu etkinleştirdiysen kaybolur; <br> \n\t• Bazı düzenler için bu, Virgül tuşu değil, aynı konumdaki başka bir tuş olabilir (örneğin, Dvorak düzeninde bu tuş \'q\'dur). <br> <br> \n► Gizli mod etkinleştirildiğinde, hiçbir kelime öğrenilmeyecek ve son eklenen emojilere yeni bir emoji eklenmeyecektir. <br> <br> \n► Gizli mod simgesine basarak araç çubuğuna erişebilirsin. <br> <br> \n► Kaydırmalı tuş girişi: Shift tuşundan başka bir tuşa kaydırarak tek bir büyük harf yazabilirsin: <br> \n\t• Bu, ayrıca \'123\' tuşu için semboller klavyesinden tek bir sembol yazmak ve ilgili tuşlar için de çalışır. <br> <br> \n► Shift veya sembol tuşunu basılı tut, bir veya daha fazla tuşa bas ve ardından önceki klavyeye dönmek için Shift veya sembol tuşunu bırak. <br> <br> \n► Öneri şeridindeki bir öneriye uzun basarak daha fazla öneriyi ve bu öneriyi kaldırmak için bir silme düğmesini gösterir. <br> <br> \n► Bir öneriye yukarı kaydırarak daha fazla öneriyi aç ve seçmek için öneri üzerinde bırak. <br> <br> \n► Pano geçmişindeki bir girdiye uzun basarak onu sabitleyebilirsin (sabitlediğin sürece panoda kalır). <br> <br> \n► Pano görünümünde bir girdiyi kaldırmak için sola kaydır (sabitlediğin sürece hariç). <br> <br> \n► Metni seç ve büyük/küçük harflerini değiştirmek için Shift tuşuna bas. <br> <br> \n► Sözlükleri bir dosya gezgini ile açarak ekleyebilirsin: <br> \n\t• Bu yalnızca <i>content-uris</i> ile çalışır, <i>file-uris</i> ile çalışmaz, yani bazı dosya gezginlerinde çalışmayabilir. <br> <br> \n► Kök erişimiyle manuel yedekleme yapan kullanıcılar için: <br> \n\t• Android 7\'den başlayarak, paylaşılan tercih dosyası varsayılan konumda değildir, çünkü uygulama %s kullanmaktadır. Bu, cihaz kilitlenmeden önce, örneğin açılışta, ayarların okunabilmesi için gereklidir; <br> \n\t• Dosya /data/user_de/0/package_id/shared_prefs/ konumunda bulunur, ancak bu cihaz ve Android sürümüne bağlı olarak değişebilir. <br> <br> \n<i><b>Hata ayıklama modu / hata ayıklama APK\'sı</b></i> <br> <br> \n► Bir öneriye uzun basarak kaynak sözlüğü göster. <br> <br> \n► Hata ayıklama APK\'sı kullanırken, Gelişmiş Tercihler içinde Hata Ayıklama Ayarlarını bulabilirsin, ancak bu yalnızca sözlükleri günlüğe dökmek için sınırlı fayda sağlar. <br> \n\t• Yayın APK\'sı için, <i>Hakkında</i> kısmındaki sürüme birkaç kez dokunman gerekir, ardından Gelişmiş Tercihler içinde hata ayıklama ayarlarını bulabilirsin. <br> \n\t• <i>Öneri bilgilerini göster</i> etkinleştirildiğinde, önerilerin üzerinde bazı iç puan ve kaynak sözlük gösteren küçük sayılar olacaktır. <br> <br> \n► Bir uygulama çökmesi durumunda, Ayarları açtığında çökme günlüklerini isteyip istemediğin sorulacaktır. <br> <br> \n► Çok dilli yazım kullanırken, boşluk tuşu şu anda kullanılan dili belirlemek için kullanılan bir güven değerini gösterir. <br> <br> \n► Önerilerin üzerinde bazı iç puan ve kaynak sözlük gösteren küçük sayılar olacaktır (devre dışı bırakılabilir). + Dikey boşluk çubuğu kaydırma hareketi + Yok + İmleci taşı + Sayfa başlangıcı + Sayfa sonu + Sağ + Yukarı + Aşağı + Kaitag + Dahili ana sözlük + Sözlük dosyası yüklenirken hata oluştu + Bir kelime ekle + Renkler (gece) + Pembe + Kum + Rengi otomatik olarak seç + Kapat + Ayarları açmak için dile dokun + Hareketle yazma kitaplığını yükle + Hareketle yazmayı etkinleştirmek için yerel bir kitaplık sağla + \'%s\' için kütüphaneye ihtiyacın olacak. Hareketle yazma kullanılırken uyumsuz kitaplıklar çökebilir. +\n +\nUyarı: Harici kodun yüklenmesi güvenlik riski oluşturabilir. Yalnızca güvenilir bir kaynaktan gelen kitaplığı kullan. + Açılır tuş sırasını seç + İpucu kaynağını seç + Emoji + Sözlüğü değiştir + Sürüm + GitHub\'da görüntüle + Öneri şeridi metni + Hakkında + Günlüğü kaydet + Açık kaynak lisansı + GNU Genel Kamu Lisansı v3.0 + Tuş arka planı + Yakın zamanda kopyalanan pano içeriğini öneri olarak göster + Pano içeriğini öner + Ses girişi + Yatay boşluk çubuğu kaydırma hareketi + Sağdan sola klavye alt türü seçildiğinde yönü ters çevir + Değişken araç çubuğu yönü + Dosya okunamıyor + Açık + Yuvarlatılmış + %s (Probhat) + Sol + Sayfa yukarı + Kelime sola + Kelime sağa + Kelime seç + Tek el modu + Tam sol + Tam sağ + Sayfa aşağı + Bu, sabitlenmemiş araç çubuğu tuşları için diğer uzun basma işlemlerini devre dışı bırakacaktır + İşlevsel ipuçlarını göster + Sabitlenmiş araç çubuğu tuşlarını seç + Uzun basıldığında araç çubuğu tuşunu sabitle + %s (Sebeolsik 390) + %s (Sebeolsik Final) + Stil + Koyu + Okyanus + Sonrasında ana klavyeye geç… + Sembol görünümünde diğer tuşlardan sonra enter veya boşluk tuşuna basma + Emoji görünümünde emojiyi seçme + Pano geçmişi girişini seçme + Daha koyu + Yaygın varyantları ekle (varsayılan) + Temel düzende zaten bulunan açılır tuşları gizle + Araç çubuğu + Gereksiz açılır pencereleri kaldır + Sayısal tuş takımını aç kapa + %s (Öğrenci) + Eklemek için bir sözlük seç .dict biçimindeki sözlükler %s indirilebilir. + Hata: Seçilen dosya geçerli bir sözlük dosyası değil + Hata: komut dosyası bu klavyeyle uyumlu değil + Daha fazla renk göster + Bu ayar dahili olarak kullanılan tüm renkleri ortaya çıkarır. Renk listesi herhangi bir zamanda değişebilir. Varsayılan renk rastgeledir ve adlar çevrilmeyecektir. + Klavye arka planı + İşlevsel tuş arka planı + Tuş metni + Tuş ipucu metni + Her zaman anında başla + Mansi + Bağlantı tespiti + Diğer uygulamaların önerileri devre dışı bırakma isteklerini göz ardı et (sorunlara neden olabilir) + Görünüm + Kaydet yada dosyadan yükle. Uyarı: geri yükleme mevcut verilerin üzerine yazacaktır + "Sözlük olmadan yalnızca daha önce girdiğin metin için öneriler alırsın.<br> +\n %1$s sözlüklerini indirebilir veya \"%2$s\" için bir sözlüğün doğrudan %3$s indirilip indirilemeyeceğini kontrol edebilirsin." + Sayı satırı + Simge stili + Boşluk çubuğu özel metni + Emoji alt satırı + Pano alt satırı + Giriș + Sekme + Sil + Boşluk + Geçersiz ad + Sayı satırı (temel) + Emoji görüntüleme boyutu + Araç çubuğunu göster/gizle + Rahatsız etme kipinde titret + Emoji boyutunu yazı tipi boyutuna göre ölçeklendir + İkincil düzenler + Caps lock + Bir sözcük yazmadan önce otomatik boşluk ekle + Shift + Uygulama adlarında ara + Öneriler ve düzeltmeler için yüklü uygulamaların adlarını kullan + Araç çubuğu kipi + Sayı satırında ipuçlarını göster + Bölünmüş klavye + Varsayılan emoji cilt tonu + Doğal + Boşluk (sayı düzeni) + Etkin kısayolları otomatik düzeltme ile genişlet + Shift basarken otomatik boşluk ekleme + Yalnızca araç çubuğu tuşları + Yalnızca öneriler + Gizli + Pano ve emoji araç çubuklarını da gizle + Klavye yazı tipi boyutu + Dosyadan özel yazı tipi seç + Emoji sürümünü geçersiz kıl + Zaman damgası anahtarı için biçim + Bir sözcük yazma hareketinden sonra otomatik boşluk ekle + Uzun basmada emoji açıklamasını göster + Bir öneri seçildikten sonra otomatik boşluk ekle + %1$s (%2$s) + Emoji öner + Normal önerilerde emoji sözlüğünü kullanın + Yatay + Web düzenleme alanları için her zaman öneriler gösterme + Web düzenleme alanları (çoğunlukla tarayıcılarda bulunur), her zaman önerileri göster ayarıyla ilgili sorunların çok yaygın bir nedenidir + Kısayolları otomatik düzelt + Sil tuşu otomatik düzeltmeyi geri alır + Noktalama önerileri + Başka öneri bulunamadığında noktalama işaretlerini göster + Yedekleme geri yüklendi + Sözlükleri olan diller + Büyük harf tuşu, bekleyen otomatik boşluğu kaldırır + Açılır pencere tuş sırası ve ipuçları kaynağı + URL\'leri ve e-posta adreslerini yazarken nokta tuşunun açılır pencerelerini üst düzey alan adlarıyla değiştirin + Araç çubuğu tuşları ve öneriler + Yan dolgu ölçeği + Dagbani + Sotho dili + Uyarı: düzen şu anda kullanımda + İşlev tuşları (büyük ekran) + Arka plan resmi ayarla (yatay) + Ayar yapılmazsa, dikey resim kullanılacaktır + Sayısal tuş takımındaki diğer tuşlardan sonra Enter veya boşluk tuşuna basmak + %s içinde renkleri bulabilir ve paylaşabilirsiniz. + %s içinde düzenleri bulabilir ve paylaşabilirsiniz. + tartışma bölümü + Wiki\'ye git + Wiki, herhangi bir GitHub kullanıcısı tarafından geliştirilebilir! + Tek elle modunu sonlandır + Tek elle kullanım modunu yeniden boyutlandır + Ses girişi devre dışı + Çöp kutusu + Klavyeyi gizle + Dil değiştirme kaydırma mesafesi + Araç çubuğu tuş kodlarını özelleştirin + Tüm özelleştirilmiş anahtar kodlarını gerçekten silmek istiyor musunuz? + Anahtar kodu + Uzun basma kodu + Simgeleri özelleştirin + Tüm özelleştirilmiş simgeleri gerçekten sıfırlamak mı istiyorsunuz? + %s\'yi gerçekten silmek istiyor musunuz? + Özel alt tür + Bölünmüş klavyeyi etkinleştir (yatay) + TLD açılır pencere tuşlarını göster + Dargwa (Urakhi) + %s (Baishakhi) + %s (Fonetik) + Tek elle kullanım tarafını değiştir + Sıfır genişlikli bağlantı elemanı + Satır içi emoji araması + Yalnızca sözcüğün önünde iki nokta üst üste varsa emoji öner + Bu özelliğin çalışması için bir emoji sözlüğü gereklidir. %s\'den .dict biçimindeki sözlükler indirilebilir. + İğnelenmiş öğeleri üstte göster + Her uygulama için dili hatırla + Mari (Doğu) + Shift (kaydırılmış) diff --git a/app/src/main/res/values-uk/bools.xml b/app/src/main/res/values-uk/bools.xml index 840d20c218..8693f6e1ec 100644 --- a/app/src/main/res/values-uk/bools.xml +++ b/app/src/main/res/values-uk/bools.xml @@ -1,21 +1,7 @@ - - - "Іти" - "Далі" - "Назад" - "ОК" - "Слати" - "Пошук" - "Пауза" - "Ждати" - diff --git a/app/src/main/res/values-uk/strings-config-important-notice.xml b/app/src/main/res/values-uk/strings-config-important-notice.xml deleted file mode 100644 index b95b72cd42..0000000000 --- a/app/src/main/res/values-uk/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "Пристрій буде запам’ятовувати, що ви пишете, надсилаєте й отримуєте" - diff --git a/app/src/main/res/values-uk/strings-emoji-descriptions.xml b/app/src/main/res/values-uk/strings-emoji-descriptions.xml deleted file mode 100644 index 255e6f7f4f..0000000000 --- a/app/src/main/res/values-uk/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "Знак \"Авторське право\"" - "Знак \"Зареєстровано\"" - "Подвійний знак оклику" - "Знак оклику та знак запитання" - "Знак торговельної марки" - "Інформація" - "Стрілка ліворуч-праворуч" - "Стрілка вгору-вниз" - "Стрілка, що вказує на північний захід" - "Стрілка, що вказує на північний схід" - "Стрілка, що вказує на південний схід" - "Стрілка, що вказує на південний захід" - "Стрілка ліворуч із гачком" - "Стрілка праворуч із гачком" - "Годинник" - "Пісочний годинник" - - - - - "Два чорні трикутники, направлені праворуч" - "Два чорні трикутники, направлені ліворуч" - "Два чорні трикутники, направлені вгору" - "Два чорні трикутники, направлені вниз" - - - - - - - "Будильник" - - - - - "Пісочний годинник із піском, який сиплеться" - - - - - - - "Велика латинська буква M у колі" - "Малий чорний квадрат" - "Малий білий квадрат" - "Чорний трикутник, направлений праворуч" - "Чорний трикутник, направлений ліворуч" - "Середній білий квадрат" - "Середній чорний квадрат" - "Не дуже малий білий квадрат" - "Не дуже малий чорний квадрат" - "Чорне сонце з променями" - "Хмара" - - - - - - - "Чорний телефон" - "Поле виборчого бюлетеня з позначкою" - "Парасолька з краплями дощу" - "Гарячий напій" - - - "Білий вказівний палець, спрямований угору" - - - - - - - - - - - - - - - - - - - "Біле всміхнене обличчя" - "Овен" - "Телець" - "Близнюки" - "Рак" - "Лев" - "Діва" - "Терези" - "Скорпіон" - "Стрілець" - "Козеріг" - "Водолій" - "Риби" - "Масть \"чорна піка\"" - "Масть \"чорна трефа\"" - "Масть \"чорна чирва\"" - "Масть \"чорна бубна\"" - "Гарячі джерела" - "Чорний міжнародний символ утилізації" - "Символ інвалідного візка" - - - "Якір" - - - - - - - - - - - - - "Попереджувальний знак" - "Знак \"Висока напруга\"" - "Середнє біле коло" - "Середнє чорне коло" - - - - - "Футбольний м’яч" - "Бейсбольний м’яч" - "Сніговик без снігу" - "Сонце за хмарою" - - - "Змієносець" - - - - - - - "В’їзд заборонено" - - - "Церква" - - - - - "Фонтан" - "Прапорець на полі для гольфу" - - - "Вітрильник" - - - - - - - "Намет" - "Паливний насос" - "Чорні ножиці" - "Жирний білий прапорець" - "Літак" - "Конверт" - "Піднятий кулак" - "Піднята рука" - "Жест \"Перемога\"" - - - "Олівець" - "Чорне перо" - "Жирний прапорець" - "Жирний знак множення \"x\"" - - - - - "Блиск" - "Восьмикутна зірка" - "Чорна восьмикутна зірка" - "Сніжинка" - "Іскра" - "Хрестик" - "Білий хрестик у квадраті на чорному фоні" - "Чорний знак запитання" - "Білий знак запитання" - "Білий знак оклику" - "Символ жирного знаку оклику" - - - "Велике чорне серце" - "Жирний знак плюса" - "Жирний знак мінуса" - "Жирний знак ділення" - "Чорна стрілка праворуч" - "Закручена петля" - "Подвійна закручена петля" - "Стрілка праворуч і вгору" - "Стрілка праворуч і вниз" - "Чорна стрілка ліворуч" - "Чорна стрілка вгору" - "Чорна стрілка вниз" - "Великий чорний квадрат" - "Великий білий квадрат" - "Середня біла зірка" - "Велике жирне коло" - "Хвилясте тире" - "Японський знак початку частини пісні" - "Ієрогліф \"Вітання\" в колі" - "Ієрогліф \"Таємниця\" в колі" - "Плитка \"Червоний дракон\" у грі в маджонг" - "Гральна карта \"Чорний джокер\"" - "Друга група крові" - "Третя група крові" - "Перша група крові" - "Автомобільна стоянка" - "Четверта група крові" - "Квадратний значок очищення" - "Квадратний значок \"Круто\"" - "Квадратний значок \"Безкоштовно\"" - "Квадратний значок \"Ідентифікація\"" - "Квадратний значок \"Новий\"" - "Квадратний значок \"Погано\"" - "Квадратний значок \"O’кей\"" - "Квадратний значок \"СОС\"" - "Квадратний значок \"Оновлення\" зі знаком оклику" - "Квадратний значок \"Проти\"" - "Квадратний значок \"Тут\", катакана" - "Квадратний значок \"Сервіс\", катакана" - "Ієрогліф \"Безкоштовно\" у квадраті" - "Ієрогліф \"Місце заброньовано\" у квадраті" - "Ієрогліф \"Заборонено\" у квадраті" - "Ієрогліф \"Вакансія\" у квадраті" - "Ієрогліф \"Прийнято\" у квадраті" - "Ієрогліф \"Повна зайнятість\" у квадраті" - "Ієрогліф \"Оплачено\" у квадраті" - "Ієрогліф \"Щомісячно\" у квадраті" - "Ієрогліф \"Додаток\" у квадраті" - "Ієрогліф \"Знижка\" у квадраті" - "Ієрогліф \"Працює\" у квадраті" - "Ієрогліф \"Перевага\" в колі" - "Ієрогліф \"Прийняти\" в колі" - "Циклон" - "Туман" - "Закрита парасолька" - "Зоряна ніч" - "Схід сонця над горами" - "Схід сонця" - "Місто в сутінках" - "Схід сонця над будинками" - "Веселка" - "Міст уночі" - "Хвиля" - "Вулкан" - "Чумацький шлях" - "Глобус, Європа й Африка" - "Глобус, Америка" - "Глобус, Азія та Австралія" - "Глобус із меридіанами" - "Символ молодого місяця" - "Символ молодого півмісяця" - "Символ місяця в першій чверті" - "Символ зростаючого місяця" - "Символ повного місяця" - "Символ спадаючого місяця" - "Символ місяця в останній чверті" - "Символ старого місяця" - "Півмісяць" - "Новий місяць з обличчям" - "Місяць у першій чверті з обличчям" - "Місяць в останній чверті з обличчям" - "Повний місяць з обличчям" - "Сонце з обличчям" - "Зірка, що сяє" - "Метеор" - - - - - - - - - - - - - - - - - - - - - - - - - - - "Каштан" - "Саджанець" - "Вічнозелене дерево" - "Листяне дерево" - "Пальма" - "Кактус" - - - "Тюльпан" - "Вишневий цвіт" - "Троянда" - "Гібіскус" - "Соняшник" - "Цвіт" - "Качан кукурудзи" - "Колосся рису" - "Трава" - "Чотирилиста конюшина" - "Кленовий листок" - "Опалий листок" - "Листя, що кружляє за вітром" - "Гриб" - "Помідор" - "Баклажан" - "Виноград" - "Диня" - "Кавун" - "Мандарин" - "Лимон" - "Банан" - "Ананас" - "Червоне яблуко" - "Зелене яблуко" - "Груша" - "Персик" - "Вишні" - "Полуниця" - "Гамбургер" - "Шматок піци" - "М’ясо на кістці" - "Ніжка птиці" - "Рисовий крекер" - "Рисова кулька" - "Варений рис" - "Рис із карі" - "Миска з локшиною" - "Спагеті" - "Хліб" - "Картопля фрі" - "Смажений батат" - "Данго" - "Оден" - "Суші" - "Смажені креветки" - "Рибна котлета у формі рулету" - "М’яке морозиво" - "Льодова стружка" - "Морозиво" - "Пончик" - "Печиво" - "Плитка шоколаду" - "Цукерка" - "Льодяник" - "Заварний крем" - "Горщик із медом" - "Тістечко" - "Упаковка бенто" - "Горщик з їжею" - "Куховарство" - "Виделка та ніж" - "Чайна чашка без вушка" - "Пляшка та чашка для саке" - "Келих для вина" - "Бокал для коктейлю" - "Тропічний напій" - "Кухоль для пива" - "Кухлі з пивом, що цокаються" - "Пляшечка для немовляти" - - - - - - - "Стрічка" - "Запакований подарунок" - "Торт на день народження" - "Ліхтар-гарбуз" - "Ялинка" - "Дід Мороз" - "Феєрверки" - "Бенгальський вогонь" - "Повітряна кулька" - "Хлопавка" - "Кулька з конфеті" - "Танабата, гілка тандзаку" - "Схрещені прапорці" - "Прикраси на ялинку" - "Японські ляльки" - "Транспарант із карпами" - "Китайські дзвіночки" - "Церемонія вшанування місяця" - "Шкільний ранець" - "Академічна шапочка" - - - - - - - - - - - - - - - "Коник із каруселі" - "Колесо огляду" - "Американські гірки" - "Вудка та риба" - "Мікрофон" - "Кінокамера" - "Кінотеатр" - "Навушники" - "Палітра художника" - "Циліндр" - "Цирковий намет" - "Квиток" - "Нумератор із хлопавкою" - "Театральне мистецтво" - "Відеогра" - "Пряме попадання" - "Ігровий автомат" - "Більярд" - "Гральний кубик" - "Боулінг" - "Гральні карти ханафуда" - "Музична нота" - "Декілька музичних нот" - "Саксофон" - "Гітара" - "Музична клавіатура" - "Труба" - "Скрипка" - "Партитура" - "Футболка зі стрічкою" - "Тенісна ракетка та м’ячик" - "Лижа й лижний черевик" - "Баскетбольний м’яч і кільце" - "Картатий прапорець" - "Сноубордист" - "Бігун" - "Серфінгіст" - - - "Трофей" - "Кінні перегони" - "Американський футбол" - "Регбі" - "Плавець" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Будинок" - "Будинок із садом" - "Офісна будівля" - "Японська пошта" - "Європейська пошта" - "Лікарня" - "Банк" - "Банкомат" - "Готель" - "Готель для закоханих" - "Цілодобовий магазин" - "Школа" - "Універмаг" - "Фабрика" - "Ліхтар ідзакая" - "Японський замок" - "Європейський замок" - - - - - - - - - - - - - - - - - - - - - - - - - "Щур" - "Миша" - "Бик" - "Буйвол" - "Корова" - - - "Леопард" - "Кролик" - "Кіт" - "Дракон" - "Крокодил" - "Кит" - "Равлик" - "Змія" - "Кінь" - "Баран" - "Коза" - "Вівця" - "Мавпа" - "Півень" - "Курка" - "Собака" - "Свиня" - "Кабан" - "Слон" - "Восьминіг" - "Спіральна мушля" - "Жук" - "Мураха" - "Медоносна бджола" - "Сонечко" - "Риба" - "Тропічна риба" - "Риба-собака" - "Черепаха" - "Курча, яке прокльовується з яйця" - "Курча" - "Курча анфас" - "Птах" - "Пінгвін" - "Коала" - "Пудель" - "Одногорбий верблюд" - "Двогорбий верблюд" - "Дельфін" - "Миша" - "Корова" - "Тигр" - "Кріль" - "Кіт" - "Дракон" - "Кит із фонтаном" - "Кінь" - "Мавпа" - "Собака" - "Свиня" - "Жаба" - "Хом’як" - "Вовк" - "Ведмідь" - "Панда" - "Свиняче рильце" - "Сліди лап" - - - "Очі" - - - "Вухо" - "Ніс" - "Рот" - "Язик" - "Біла рука з вказівним пальцем угору з тильної сторони" - "Біла рука з вказівним пальцем униз із тильної сторони" - "Біла рука з вказівним пальцем ліворуч із тильної сторони" - "Біла рука з вказівним пальцем праворуч із тильної сторони" - "Знак кулака" - "Знак руки, яка махає" - "Знак руки, яка показує \"ОК\"" - "Знак \"Подобається\"" - "Знак \"Не подобається\"" - "Знак \"Оплески\"" - "Знак \"Відкриті руки\"" - "Корона" - "Жіночий капелюшок" - "Окуляри" - "Краватка" - "Футболка" - "Джинси" - "Сукня" - "Кімоно" - "Бікіні" - "Жіночий одяг" - "Гаманець" - "Жіноча сумка" - "Чохол" - "Чоловіче взуття" - "Спортивне взуття" - "Туфелька на високому підборі" - "Жіночі сандалі" - "Жіночі чоботи" - "Сліди ніг" - "Силует бюсту" - "Силуети бюстів" - "Хлопець" - "Дівчина" - "Чоловік" - "Жінка" - "Сім’я" - "Чоловік та жінка тримаються за руки" - "Двоє чоловіків тримаються за руки" - "Двоє жінок тримаються за руки" - "Офіцер поліції" - "Жінка з кролячими вухами" - "Наречена з фатою" - "Людина зі світлим волоссям" - "Чоловік у круглій шапочці" - "Чоловік у тюрбані" - "Літній чоловік" - "Літня жінка" - "Немовля" - "Будівельник" - "Принцеса" - "Японський людожер" - "Японський гоблін" - "Привид" - "Янголятко" - "Прибулець із космосу" - "Прибулець-монстр" - "Чортеня" - "Череп" - "Працівник довідкового бюро" - "Охоронець" - "Танцівник" - "Губна помада" - "Лак для нігтів" - "Масаж обличчя" - "Стрижка" - "Шлагбаум" - "Шприц" - "Таблетка" - "Відбиток губ" - "Любовний лист" - "Перстень" - "Дорогоцінний камінь" - "Поцілунок" - "Букет" - "Пара із серцем" - "Весілля" - "Пульсуюче серце" - "Розбите серце" - "Два серця" - "Серце, що блищить" - "Серце, що збільшується" - "Серце зі стрілою" - "Синє серце" - "Зелене серце" - "Жовте серце" - "Фіолетове серце" - "Серце зі стрічкою" - "Серця, що обертаються" - "Декор у вигляді серця" - "Контур діаманта з крапкою всередині" - "Електрична лампочка" - "Символ гніву" - "Бомба" - "Символ сну" - "Символ зіткнення" - "Краплі поту" - "Крапля" - "Символ ривка" - "Купка екскрементів" - "Зігнутий біцепс" - "Символ запаморочення" - "Хмаринка з текстом" - "Хмаринка з думками" - "Біла квітка" - "Символ \"Сто очок\"" - "Мішок із грошима" - "Обмін валют" - "Символ важкого долара" - "Кредитна картка" - "Банкнота із символом єни" - "Банкнота із символом долара" - "Банкнота із символом євро" - "Банкнота із символом фунта" - "Гроші з крилами" - "Висхідна діаграма із символом єни" - "Сидіння" - "Персональний комп’ютер" - "Портфель" - "Міні-диск" - "Дискета" - "Оптичний диск" - "DVD-диск" - "Папка з файлами" - "Відкрита папка" - "Сторінка із завитком" - "Сторінка лицевою стороною" - "Календар" - "Відривний календар" - "Картотека" - "Висхідна діаграма" - "Низхідна діаграма" - "Гістограма" - "Папка із зажимом для паперу" - "Канцелярська кнопка" - "Кругла канцелярська кнопка" - "Скріпка" - "Пряма лінійка" - "Косинець" - "Закладки" - "Реєстр" - "Записник" - "Записник із декоративною обкладинкою" - "Закрита книга" - "Відкрита книга" - "Зелена книга" - "Синя книга" - "Оранжева книга" - "Книги" - "Бейдж з іменем" - "Сувій" - "Записка" - "Телефонна слухавка" - "Пейджер" - "Факс" - "Супутникова антена" - "Гучномовець" - "Рупор" - "Лоток для вихідної пошти" - "Лоток для вхідної пошти" - "Пакет" - "Символ електронної пошти" - "Вхідний конверт" - "Конверт зі стрілкою вниз угорі" - "Закрита поштова скринька з опущеним прапорцем" - "Закрита поштова скринька з піднятим прапорцем" - "Відкрита поштова скринька з піднятим прапорцем" - "Відкрита поштова скринька з опущеним прапорцем" - "Поштова скринька" - "Поштовий ріжок" - "Газета" - "Мобільний телефон" - "Мобільний телефон зі стрілкою праворуч зліва" - "Режим вібрації" - "Мобільний телефон вимкнено" - "Мобільні телефони заборонено" - "Антена з індикатором рівня сигналу" - "Камера" - - - "Відеокамера" - "Телебачення" - "Радіо" - "Відеокасета" - - - - - "Перехрещені стрілки праворуч" - "Кругові стрілки ліворуч та праворуч, які вказують напрям за годинниковою стрілкою" - "Кругові стрілки ліворуч та праворуч, які вказують напрям за годинниковою стрілкою, і накладена на них цифра один" - "Кругові стрілки вгору та вниз, які вказують напрям за годинниковою стрілкою" - "Кругові стрілки вгору та вниз, які вказують напрям проти годинникової стрілки" - "Символ малої яскравості" - "Символ великої яскравості" - "Перекреслений динамік" - "Динамік" - "Динамік з однією звуковою хвилею" - "Динамік із трьома звуковими хвилями" - "Акумулятор" - "Вилка електроприладу" - "Лупа, повернута ліворуч" - "Лупа, повернута праворуч" - "Замок із чорнильним пером" - "Закритий замок із ключем" - "Ключ" - "Замок" - "Відкритий замок" - "Дзвоник" - "Перекреслений дзвоник" - "Закладка" - "Символ ланки" - "Перемикач" - "Слово \"назад\" зі стрілкою ліворуч зверху" - "Слово \"кінець\" зі стрілкою ліворуч зверху" - "Слово \"увімкнено\" зі знаком оклику та стрілкою праворуч-ліворуч зверху" - "Слово \"незабаром\" зі стрілкою праворуч зверху" - "Слово \"угору\" зі стрілкою вгору зверху" - "Символ \"Вхід до 18 років заборонено\"" - "Поверхня клавіші \"10\"" - "Символ введення великих латинських літер" - "Символ введення малих латинських літер" - "Символ введення цифр" - "Знак вводу символів" - "Символ введення латинських літер" - "Вогонь" - "Кишеньковий ліхтарик" - "Гайковий ключ" - "Молоток" - "Гайка та болт" - "Японський кухонний ніж" - "Пістолет" - "Мікроскоп" - "Телескоп" - "Кришталева куля" - "Шестикутна зірка з крапкою посередині" - "Японський символ \"Початківець\"" - "Тризуб" - "Чорна квадратна кнопка" - "Біла квадратна кнопка" - "Велике червоне коло" - "Велике синє коло" - "Великий оранжевий діамант" - "Великий синій діамант" - "Малий оранжевий діамант" - "Малий синій діамант" - "Червоний трикутник, спрямований угору" - "Червоний трикутник, спрямований униз" - "Малий червоний трикутник, спрямований угору" - "Малий червоний трикутник, спрямований униз" - - - - - - - - - - - - - "Годинник, який показує першу годину" - "Годинник, який показує другу годину" - "Годинник, який показує третю годину" - "Годинник, який показує четверту годину" - "Годинник, який показує п’яту годину" - "Годинник, який показує шосту годину" - "Годинник, який показує сьому годину" - "Годинник, який показує восьму годину" - "Годинник, який показує дев’яту годину" - "Годинник, який показує десяту годину" - "Годинник, який показує одинадцяту годину" - "Годинник, який показує дванадцяту годину" - "Годинник, який показує першу годину тридцять хвилин" - "Годинник, який показує другу годину тридцять хвилин" - "Годинник, який показує третю годину тридцять хвилин" - "Годинник, який показує четверту годину тридцять хвилин" - "Годинник, який показує п’яту годину тридцять хвилин" - "Годинник, який показує шосту годину тридцять хвилин" - "Годинник, який показує сьому годину тридцять хвилин" - "Годинник, який показує восьму годину тридцять хвилин" - "Годинник, який показує дев’яту годину тридцять хвилин" - "Годинник, який показує десяту годину тридцять хвилин" - "Годинник, який показує одинадцяту годину тридцять хвилин" - "Годинник, який показує дванадцяту годину тридцять хвилин" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Гора Фудзі" - "Токійська вежа" - "Статуя Свободи" - "Обриси Японії" - "Кам’яна статуя моаї" - "Обличчя, що сміється" - "Усміхнене обличчя з примруженими очима" - "Обличчя зі сльозами радості" - "Усміхнене обличчя з відкритим ротом" - "Усміхнене обличчя з відкритим ротом і примруженими очима" - "Усміхнене обличчя з відкритим ротом і холодним потом" - "Усміхнене обличчя з відкритим ротом і заплющеними очима" - "Усміхнене обличчя з німбом" - "Усміхнене обличчя з ріжками" - "Обличчя, яке підморгує" - "Усміхнене обличчя з примруженими очима" - "Обличчя, яке насолоджується смачною їжею" - "Обличчя з виразом полегшення" - "Усміхнене обличчя з очима у формі сердець" - "Усміхнене обличчя із сонцезахисними окулярами" - "Обличчя із самовдоволеною посмішкою" - "Нейтральне обличчя" - "Обличчя без емоцій" - "Незадоволене обличчя" - "Обличчя з потом" - "Задумливе обличчя" - "Спантеличене обличчя" - "Збентежене обличчя" - "Обличчя, що цілує" - "Обличчя, що надсилає повітряний поцілунок" - "Обличчя, що цілує, з примруженими очима" - "Обличчя, що цілує, із заплющеними очима" - "Обличчя з висунутим язиком" - "Обличчя, що підморгує, з висунутим язиком" - "Обличчя з висунутим язиком і заплющеними очима" - "Розчароване обличчя" - "Стурбоване обличчя" - "Сердите обличчя" - "Насуплене обличчя" - "Обличчя, що плаче" - "Уперте обличчя" - "Обличчя з виразом тріумфу" - "Розчароване обличчя з виразом полегшення" - "Насуплене обличчя з відкритим ротом" - "Страждальне обличчя" - "Налякане обличчя" - "Зморене обличчя" - "Сонне обличчя" - "Стомлене обличчя" - "Обличчя, яке кривляється" - "Обличчя, яке гірко ридає" - "Обличчя з відкритим ротом" - "Обличчя, яке принишкло" - "Обличчя з відкритим ротом і холодним потом" - "Обличчя, яке кричить від страху" - "Здивоване обличчя" - "Обличчя з рум’янцем" - "Обличчя, яке спить" - "Запаморочене обличчя" - "Обличчя без рота" - "Обличчя з пов’язкою" - "Кіт, який сміється, з примруженими очима" - "Кіт зі сльозами радості" - "Усміхнений кіт із відкритим ротом" - "Усміхнений кіт з очима у формі сердець" - "Котяча морда з кривою усмішкою" - "Кіт, який цілує, із заплющеними очима" - "Насуплений кіт" - "Кіт, який плаче" - "Стомлений кіт" - - - - - - - - - "Обличчя з жестом \"Погано\"" - "Обличчя з жестом \"O’кей\"" - "Людина, яка низько кланяється" - "Мавпа, яка закриває лапами очі" - "Мавпа, яка закриває лапами вуха" - "Мавпа, яка закриває лапами рот" - "Щаслива людина з піднятою рукою" - "Людина з піднятими догори руками на знак перемоги" - "Нахмурена людина" - "Людина з насупленим обличчям" - "Людина зі складеними руками" - "Ракета" - "Вертоліт" - "Паротяг" - "Вагон" - "Швидкісний потяг" - "Швидкісний потяг із кулеподібним носом" - "Потяг" - "Метро" - "Електропоїзд" - "Станція" - "Трамвай" - "Вагон трамвая" - "Автобус" - "Автобус, який наближається" - "Тролейбус" - "Автобусна зупинка" - "Мікроавтобус" - "Автомобіль швидкої допомоги" - "Пожежний автомобіль" - "Патрульний автомобіль" - "Патрульний автомобіль, що наближається" - "Таксі" - "Таксі, що наближається" - "Автомобіль" - "Автомобіль, що наближається" - "Житловий трейлер" - "Автофургон" - "Автопоїзд" - "Трактор" - "Монорейкова залізниця" - "Гірська залізниця" - "Підвісна залізниця" - "Гірський фунікулер" - "Підвісна канатна дорога" - "Корабель" - "Весловий човен" - "Швидкохідний катер" - "Горизонтальний світлофор" - "Вертикальний світлофор" - "Знак \"Будівництво\"" - "Патрульний автомобіль з проблисковими вогнями" - "Трикутний прапорець на ніжці" - "Двері" - "Знак \"В’їзд заборонено\"" - "Символ \"Місце для паління\"" - "Символ \"Паління заборонено\"" - "Символ \"Викидайте сміття в урну\"" - "Символ \"Не смітити\"" - "Символ \"Питна вода\"" - "Символ \"Непридатна для пиття вода\"" - "Велосипед" - "Рух на велосипеді заборонено" - "Велосипедист" - "Гірський велосипедист" - "Пішохід" - "Рух пішоходів заборонено" - "Діти на дорозі" - "Символ \"Чоловік\"" - "Символ \"Жінка\"" - "Убиральня" - "Символ \"Немовля\"" - "Туалет" - "Санвузол" - "Душ" - "Приймати ванну" - "Ванна" - "Паспортний контроль" - "Митниця" - "Пункт отримання багажу" - "Камера зберігання" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-uk/strings-letter-descriptions.xml b/app/src/main/res/values-uk/strings-letter-descriptions.xml deleted file mode 100644 index 1199771a42..0000000000 --- a/app/src/main/res/values-uk/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "Індикатор порядкового числівника жіночого роду" - "Знак мікро" - "Індикатор порядкового числівника чоловічого роду" - "Есцет" - "A, гравіс" - "A, акут" - "A, циркумфлекс" - "A, тильда" - "A, трема" - "A, кільце вгорі" - "A, E, лігатура" - "C, седиль" - "E, гравіс" - "E, акут" - "E, циркумфлекс" - "E, трема" - "I, гравіс" - "I, акут" - "I, циркумфлекс" - "I, трема" - "Ет" - "N, тильда" - "O, гравіс" - "O, акут" - "O, циркумфлекс" - "O, тильда" - "O, трема" - "O, риска" - "U, гравіс" - "U, акут" - "U, циркумфлекс" - "U, трема" - "Y, акут" - "Торн" - "Y, трема" - "A, макрон" - "A, бреве" - "A, хвостик" - "C, акут" - "C, циркумфлекс" - "C, крапка вгорі" - "C, гачек" - "D, гачек" - "D, риска" - "E, макрон" - "E, бреве" - "E, крапка вгорі" - "E, хвостик" - "E, гачек" - "G, циркумфлекс" - "G, бреве" - "G, крапка вгорі" - "G, седиль" - "H, циркумфлекс" - "H, риска" - "I, тильда" - "I, макрон" - "I, бреве" - "I, хвостик" - "I без крапки" - "I, J, лігатура" - "J, циркумфлекс" - "K, седиль" - "Кра" - "L, акут" - "L, седіль" - "L, гачек" - "L, інтерпункт" - "L, риска" - "N, акут" - "N, седиль" - "N, гачек" - "N, після апострофа" - "Енг" - "O, макрон" - "O, бреве" - "O, подвійний акут" - "O, E, лігатура" - "R, акут" - "R, седиль" - "R, гачек" - "S, акут" - "S, циркумфлекс" - "S, седиль" - "S, гачек" - "T, седиль" - "T, гачек" - "T, риска" - "U, тильда" - "U, макрон" - "U, бреве" - "U, кільце вгорі" - "U, подвійний акут" - "U, хвостик" - "W, циркумфлекс" - "Y, циркумфлекс" - "Z, акут" - "Z, крапка вгорі" - "Z, гачек" - "Довгий звук S" - "O, ріг" - "U, ріг" - "S, кома внизу" - "T, кома внизу" - "Шва" - "A, крапка внизу" - "A, гачок угорі" - "A, циркумфлекс і акут" - "A, циркумфлекс і гравіс" - "A, циркумфлекс і гачок угорі" - "A, циркумфлекс і тильда" - "A, циркумфлекс і крапка внизу" - "A, бреве й акут" - "A, бреве та гравіс" - "A, бреве та гачок угорі" - "A, бреве та тильда" - "A, бреве та крапка внизу" - "E, крапка внизу" - "E, гачок угорі" - "E, тильда" - "E, циркумфлекс і акут" - "E, циркумфлекс і гравіс" - "E, циркумфлекс і гачок угорі" - "E, циркумфлекс і тильда" - "E, циркумфлекс і крапка внизу" - "I, гачок угорі" - "I, крапка внизу" - "O, крапка внизу" - "O, гачок угорі" - "O, циркумфлекс і акут" - "O, циркумфлекс і гравіс" - "O, циркумфлекс і гачок угорі" - "O, циркумфлекс і тильда" - "O, циркумфлекс і крапка внизу" - "O, ріг і акут" - "O, ріг і гравіс" - "O, ріг і гачок угорі" - "O, ріг і тильда" - "O, ріг і крапка внизу" - "U, крапка внизу" - "U, гачок угорі" - "U, ріг і акут" - "U, ріг і гравіс" - "U, ріг і гачок угорі" - "U, ріг і тильда" - "U, ріг і крапка внизу" - "Y, гравіс" - "Y, крапка внизу" - "Y, гачок угорі" - "Y, тильда" - "Перевернутий знак оклику" - "Ліві подвійні кутові лапки" - "Інтерпункт" - "Верхній індекс, один" - "Праві подвійні кутові лапки" - "Перевернутий знак запитання" - "Ліві одинарні лапки" - "Праві одинарні лапки" - "Ліві нижні одинарні лапки" - "Ліві подвійні лапки" - "Праві подвійні лапки" - "Хрестик" - "Подвійний хрестик" - "Знак проміле" - "Штрих" - "Подвійний штрих" - "Ліві одинарні кутові лапки" - "Праві одинарні кутові лапки" - "Верхній індекс, чотири" - "Верхній індекс, мала латинська літера n" - "Знак песо" - "Через" - "Стрілка праворуч" - "Стрілка вниз" - "Порожня множина" - "Крок" - "Менше або дорівнює" - "Більше або дорівнює" - "Чорна зірка" - diff --git a/app/src/main/res/values-uk/strings-talkback-descriptions.xml b/app/src/main/res/values-uk/strings-talkback-descriptions.xml index 70aa6d5f41..b671ba05de 100644 --- a/app/src/main/res/values-uk/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-uk/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "Підключіть гарнітуру, щоб слухати озвучені символи пароля." - "Поточний текст: %s" - "Текст не введено" - "%1$s виправляє слово \"%2$s\" на \"%3$s\"" - "%1$s автоматично виправляє" - "Немає пропозицій" - "Невідомий символ" - "Shift" - "Більше символів" - "Клавіша Shift" - "Символи" - "Клавіша Shift" - "Видалити" - "Символи" - "Літери" - "Цифри" - "Налаштування" - "Tab" - "Пробіл" - "Голосовий ввід" - "Cмайли Emoji" - "Повернутися" - "Пошук" - "Крапка" - "Змінити мову" - "Далі" - "Назад" - "Shift увімкнено" - "Caps Lock увімкнено" - "Режим символів" - "Режим \"Більше символів\"" - "Режим літер" - "Режим номерів телефону" - "Режим телефонних символів" - "Клавіатуру сховано" - "Режим клавіатури: %s" - "дата" - "дата й час" - "електронні адреси" - "повідомлення" - "цифри" - "номери телефону" - "текст" - "час" - "URL-адреси" - "Останні" - "Люди" - "Об’єкти" - "Природа" - "Місця" - "Символи" - "Прапори" - "Усмішки та люди" - "Тварини та природа" - "Їжа та напої" - "Подорожі та місця" - "Активність" - "Смайли" - "Велика %s" - "Велика I" - "Велика I, крапка вгорі" - "Невідомий символ" - "Невідомий смайл Emoji" - "Обличчя, що нудьгує" - "Збентежене обличчя" - "Обличчя в окулярах" - "Здивоване обличчя" - "Обличчя, що цілує" - "Насуплене обличчя" - "Доступні альтернативні символи" - "Альтернативні символи відхилено" - "Доступні альтернативні пропозиції" - "Альтернативні пропозиції відхилено" + + + "Підключіть гарнітуру, щоб слухати озвучені символи пароля." + "Поточний текст: %s" + "Текст не введено" + "%1$s виправляє слово \"%2$s\" на \"%3$s\"" + "%1$s автоматично виправляє" + "Немає пропозицій" + "Невідомий символ" + "Shift" + "Більше символів" + "Клавіша Shift" + "Символи" + "Клавіша Shift" + "Видалити" + "Символи" + "Літери" + "Цифри" + "Налаштування" + "Tab" + "Пробіл" + "Голосовий ввід" + "Cмайли Emoji" + "Повернутися" + "Пошук" + "Крапка" + "Змінити мову" + "Далі" + "Назад" + "Shift увімкнено" + "Caps Lock увімкнено" + "Режим символів" + "Режим \"Більше символів\"" + "Режим літер" + "Режим номерів телефону" + "Режим телефонних символів" + "Клавіатуру сховано" + "Режим клавіатури: %s" + "дата" + "дата й час" + "електронні адреси" + "повідомлення" + "цифри" + "номери телефону" + "текст" + "час" + "URL-адреси" + "Останні" + "Об’єкти" + "Символи" + "Прапори" + "Усмішки та люди" + "Тварини та природа" + "Їжа та напої" + "Подорожі та місця" + "Активність" + "Смайли" + "Велика %s" + "Велика I" + "Велика I, крапка вгорі" + "Доступні альтернативні символи" + "Альтернативні символи відхилено" + "Доступні альтернативні пропозиції" + "Альтернативні пропозиції відхилено" diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 3712285e41..1caa7550de 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -1,193 +1,437 @@ - - - - - "Парам. введення" - "Шукати імена контактів" - "Для перевірки правопису використовувати список контактів" - "Вібр. при натисканні клавіш" - "Звук при натиску клав." - "Збільшення натиснутих" - "Параметри" - "Облік. записи й конфіденційність" - "Вигляд і розкладка" - "Введення тексту жестами" - "Виправлення тексту" - "Додатково" - "Тема" - "Увімкнути розділену клавіатуру" - "Інші методи введення" - "Клавіша зміни мови дозволяє змінювати методи введення" - "Клавіша зміни мови" - "Показувати, коли ввімкнено декілька мов введення" - "Затримка закривання" - "Без затримки" - "За умовчанням" - "%s мс" - "За умовчанням" - "Пропон. імена контактів" - "Показувати виправлення на основі імен зі списку контактів" - "Персональні пропозиції" - "Покращувати додаток %s" - "Крапка подвійним пробілом" - "Подвійне натискання пробілу вставляє крапку з пробілом після неї" - "Вел. літери автоматично" - "Писати перше слово в кожному реченні з великої літери" - "Особистий словник" - "Додані словники" - "Основний словник" - "Варіанти виправлень" - "Відображати пропоновані слова під час вводу" - "Блокувати нецензурні слова" - "Не пропонувати потенційно образливі слова" - "Автовиправлення" - "Пробіл і пунктуація автоматично виправляють слова з помилками" - "Вимк." - "Помірне" - "Активне" - "Дуже активне" - "Пропозиції наступного слова" - "Використовувати попереднє слово, щоб надавати пропозиції" - "Увімкнути ввід жестами" - "Вводьте слова, проводячи пальцем по літерах" - "Показувати слід жестів" - "Показувати підказки" - "Показувати пропоноване слово під час введення тексту жестами" - "Безперервний ввід фраз" - "Вставляйте пробіли, проводячи пальцем по клавіші пробілу" - "Ключ голосового вводу" - "Способи голосового вводу не ввімкнено. Перейдіть у налаштування мови та введення." - "Налаштування методів введення" - "Мови" - "Довідка й відгуки" - "Мови" - "Торкніться ще раз, щоб зберегти" - "Торкніться тут, щоб зберегти" - "Словник доступний" - "Тема клавіатури" - "Змінити облік. запис" - "Не вибрано облікових записів" - "Зараз використовується %1$s" - "ОК" - "Скасувати" - "Вийти" - "Виберіть обліковий запис" - "Англійська (Велика Британія)" - "Англійська (США)" - "іспанська (США)" - "Хінґліш" - "сербська (латиниця)" - "Англійська (Британія) (%s)" - "Англійська (США) (%s)" - "Іспанська (США) (%s)" - "Хінґліш (%s)" - "сербська (%s)" - "%s (традиційна)" - "%s (компактна)" - "Стандартна (латиниця)" - "Латиниця (QWERTY)" - "Латиниця (QWERTZ)" - "Латиниця (AZERTY)" - "Латиниця (Dvorak)" - "Латиниця (Colemak)" - "Латиниця (ПК)" - "Cмайли Emoji" - "Тема клавіатури" - "Персональні стилі введення" - "Додати стиль" - "Додати" - "Видалити" - "Зберегти" - "Мова" - "Розкладка" - "Щоб використовувати персональний стиль введення, його потрібно ввімкнути. Увімкнути його?" - "Увімкнути" - "Не зараз" - "Такий стиль введення вже існує: %s" - "Вібрація при натисканні клавіш" - "Гучність натискання клавіш" - "Затримка довгого натискання" - "Смайли для фізичної клавіатури" - "Щоб переглянути смайли, натисніть фізичну клавішу Alt" - "За умовчанням" - "Вітаємо в програмі %s" - "з функцією Ввід жестами" - "Розпочати" - "Наступний крок" - "Налаштування програми %s" - "Увімкніть програму %s" - "Виберіть додаток %s у налаштуваннях мови та введення, щоб дозволити його запуск на пристрої." - "Додаток %s уже ввімкнено в налаштуваннях мови та введення. Перейдіть до наступного кроку." - "Увімкнути в налаштуваннях" - "Перейдіть до програми %s" - "Далі виберіть \"%s\" як поточний метод введення тексту." - "Змінити метод введення" - "Вітаємо! Налаштування завершено." - "Тепер ви можете вводити текст у всіх своїх улюблених програмах за допомогою %s." - "Налаштувати додаткові мови" - "Завершено" - "Показувати піктограму програми" - "Відображати піктограму програми на панелі запуску" - "Постачальник словника" - "Постачальник словника" - "Служба словника" - "Інформація про оновлення словника" - "Додаткові словники" - "Налаштування для словників" - "Словники користувача" - "Словник користувача" - "Словник доступний" - "Зараз завантажується" - "Установлено" - "Установлено, вимкнено" - "Нема з’єднання зі службою словника" - "Словники недоступні" - "Оновити" - "Останнє оновлення" - "Перевірка наявності оновлень" - "Завантаження…" - "Основний словник" - "Скасувати" - "Налаштування" - "Установити" - "Скасувати" - "Видалити" - "Версія %1$s" - "Додати" - "Додати в словник" - "Фраза" - "Інші варіанти" - "Менше опцій" - "ОК" - "Слово:" - "Ярлик:" - "Мова:" - "Введіть слово" - "Необов’язковий ярлик" - "Редагувати слово" - "Редагувати" - "Видалити" - "У словнику користувача нічого немає. Щоб додати слово, торкніться кнопки \"Додати\" (+)." - "Для всіх мов" - "Інші мови…" - "Видалити" - " АБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯ" + + + "Шукати імена контактів" + Вібрація при натисканні клавіш + Звук при натиску клавіш + "Збільшення натиснутих" + "Параметри" + "Зовнішній вигляд" + "Введення тексту жестами" + "Виправлення тексту" + Додаткові + "Тема" + "Увімкнути розділену клавіатуру" + Зміна методів введення + "Клавіша зміни мови" + %s мілісекунд + Типово + "Показувати виправлення на основі імен зі списку контактів" + "Персональні пропозиції" + "Крапка подвійним пробілом" + "Подвійне натискання пробілу вставляє крапку з пробілом після неї" + Починати речення з великої + "Писати перше слово в кожному реченні з великої літери" + "Особистий словник" + "Основний словник" + "Варіанти виправлень" + "Відображати пропоновані слова під час вводу" + "Блокувати нецензурні слова" + "Не пропонувати потенційно образливі слова" + "Автовиправлення" + "Пробіл і пунктуація автоматично виправляють слова з помилками" + "Вимк." + "Помірне" + "Активне" + "Дуже активне" + "Пропозиції наступного слова" + "Використовувати попереднє слово, щоб надавати пропозиції" + "Увімкнути ввід жестами" + "Вводьте слова, проводячи пальцем по літерах" + "Показувати слід жестів" + "Показувати підказки" + "Безперервний ввід фраз" + "Вставляйте пробіли, проводячи пальцем по клавіші пробілу" + "Англійська (Велика Британія)" + "Англійська (США)" + "Іспанська (США)" + Гінґліш + Сербська (латиниця) + %s (Традиційна) + %s (Компактна) + Стандартна + Емоджі + Додати + Видалити + Зберегти + Мова + Розкладка + Вібрація при натисканні клавіш + Гучність натискання клавіш + Затримка довгого натискання + Смайли для фізичної клавіатури + Фізична клавіша Alt показує усі доступні емоджі + Типово + Вітаємо в%s + з функцією «Ввід жестами» + Розпочати + Налаштування%s + Увімкнути%s + Перевірте застосунок \"%s\" у налаштуваннях «Мова та введення». Це дозволить йому працювати на вашому пристрої. + Увімкнути в налаштуваннях + Перемкнути на%s + Виберіть %s поточним методом введення. + Змінити метод введення + Вітаємо, налаштування завершено! + Тепер ви можете писати в усіх улюблених застосунках за допомогою %s. + Завершено + Показувати піктограму програми + Відображати піктограму програми нв лаунчері + Додаткові словники + Словник доступний + Налаштування + Видалити + Версія %s + "Ярлик:" + "Мова:" + Введіть слово + "Необов’язковий ярлик" + Редагувати слово + Для всіх мов + "Інші мови…" + Налаштування HeliBoard + Вигляд наслідує системні налаштування + Автоматично вставляти пробіл після знаків пунктуації під час введення нового слова + Стиль теми + Закруглений + Кольори теми + Кольори теми (темна тема) + Використати тему системи + Введення + %s (Аккгор) + Автопробіл після знаків пунктуації + Налаштування перевірки правопису HeliBoard + Виправлення + Пропозиції + Експериментальне + Історія буфера обміну + Різне + Клавіша емоджі + Без обмежень + %s хвилин + Увімкнути історію буфера обміну + Якщо вимкнено, клавіша буфера обміну вставляє вміст, якщо він є + Час зберігання історії + Колір навігаційної панелі + Світла + Темна + Сіра + Чорна + Користувацька + Автоматичний вибір кольору + Фон клавіатури + Текст клавіш + Текст спецсимволів клавіш + Фон клавіш + Фон функціональних клавіш + Фон пробілу + Текст пробілу + Акцент + Довідка + Версія + Подивитися на GitHub + Ліцензія з відкритим кодом + Загальна публічна ліцензія GNU версії 3.0 + Закрити + Натисніть мову, щоб відкрити налаштування + Опис прихованих функцій + Показати функції, які можуть залишитися непоміченими + Вибрати метод введення + Примусовий режим інкогніто + Вимкнути вивчення нових слів + Показувати підказки довгим натисканням + Показувати підказки клавіш + Змінювати метод введення клавішею пробіл + Довге натискання клавіші пробіл виводить меню вибору способу введення + Перевірка правопису HeliBoard + Збільшені клавіші + Видаляти ковзанням + Проведіть пальцем по клавіші видалення, щоб виділити і вилучити більші фрагменти тексту за раз + Виявлення URL-адреси + Спробувати виявити URL-адреси та подібні до них рядки, як одне слово + Резервне копіювання та відновлення + Збережіть або завантажте файл. Увага: відновлення перезапише наявні дані + Помилка резервного копіювання: %s + Помилка відновлення з резервної копії: %s + Резервне копіювання + Відновлення + Багатомовний набір тексту + Завантажити бібліотеку введення жестами + Надайте вбудовану бібліотеку для увімкнення введення жестами + Більше клавіш + Масштабування клавіатури по висоті + Рядок цифр + Завжди показувати рядок цифр + Контури клавіш + Додаткові клавіші + Конфіденційність автовиправлення + Скасовувати + "Повторити" + "Пристрій буде запам’ятовувати, що ви пишете, надсилаєте й отримуєте" + "Іти" + "Далі" + "Назад" + "ОК" + "Слати" + "Пошук" + "Пауза" + Чекати + Мови та розкладки + Додати слова до особистого словника + Відстань розділення + Змінити мову + Попередження: Вимкнення цього параметра призведе до видалення отриманих даних + Зміна обох + Хмарний + Ліс + Індиго + Океан + Рожевий + Віолетта + Коричневий + Holo Біла + Динамічні кольори + Шоколад + Пісок + Сіро-блакитний + Зворотній напрямок, якщо вибрано підтип клавіатури з листом праворуч наліво + Змінний напрямок панелі інструментів + Тривале натискання символів для цифрової клавіатури + Висота нижнього відступу + Завжди показувати пропозиції + Автокорекція, навіть якщо це явно не запрошено у полі введення + Додати розповсюджені варіанти + Ряд з цифрами + Мова (пріоритет) + Вибір клавіш панелі інструментів + Вам знадобиться бібліотека для «%s». Несумісні бібліотеки можуть призвести до несправності при використанні набору тексту за допомогою жестів. +\n +\nУвага: завантаження зовнішнього коду може становити загрозу безпеці. Використовуйте бібліотеку лише з джерела, якому ви довіряєте. + Невідомий файл бібліотеки. Ви впевнені, що отримали його з надійного джерела і призначене для «%s»? + Завантажити бібліотеку + Видалити бібліотеку + Показувати більше літер із діакритичними знаками під час утримання + Показати варіанти, визначені мовами клавіатури + Додати усі доступні варіанти + Локалізація ряду з цифрами + Віддавати перевагу локалізованим латинським цифрам + Виберіть джерело підказки + Виберіть порядок спливних клавіш + Розкладка + Символи + Буфер обміну + Очистити буфер обміну + Голосове введення + Вниз + Вирізати + Виберіть слово + Режим однієї руки + У лівий кінець + У правий кінець + Праворуч + Ліворуч + Вгору + Показати функціональні підказки + Показувати підказки, якщо тривале натискання клавіші запускає додаткові функції + Кайтазька + Використовувати особистий словник для зберігання вивчених слів + Ігнорувати запити інших застосунків про вимкнення пропозицій (може викликати проблеми) + Більше автокорекції + Натисніть, щоб відредагувати базову розкладку + Символи телефону + Числа + Числова клавіатура + Числова клавіатура (горизонтальна) + Встановити фонове зображення + Символи + Символи (арабські) + Більше символів + Телефон + Завантажити файл + Неможливо прочитати файл + Справді видалити власну розкладку %s? + Помилка розкладки: %s + %s (Пробгат) + %s (Себольсік 390) + %s (Себольсік Фінальна) + %s (Студентська) + Виберіть файл у сумісному форматі. Інформація про формати доступна %s. + Додати власну розкладку + Встановити зображення для денного чи нічного режиму? + тут + %s (експериментальний) + Помилка: вибраний файл не є коректним словником + Показувати усі кольори + Текст смуги пропозицій + сховище, захищене пристроєм + Словники + День + Ніч + Налаштування клавіатури + Видалити словник користувача «%s»? + Внутрішній основний словник + Додати словник із файлу + Виберіть мову + Замінити словник + Більше не показувати + Виберіть, щоб додати словник. Словники у форматі .dict можна завантажити у %s. + Помилка: скрипт несумісний із цією клавіатурою + Помилка завантаження файлу словника + Вага: + Це слово вже є у словнику користувача %s. Будь ласка, введіть інше. + Додати слово + Введення жестами + Зберегти журнал + Горизонтальний свайп по пробілу + Вертикальний свайп по пробілу + Бездіяльність + Перемістити курсор + Показувати лише основні кольори + Замінити словник користувача «%1$s»?\n\nПоточний словник:\n%2$s\n\nНовий словник:\n%3$s + "Без словника ви отримуватимете пропозиції лише для попередньо введеного тексту.<br>\n Ви можете завантажити словники %1$s або перевірити, чи може словник для «%2$s» завантажити безпосередньо %3$s." + Вибрати закріплені клавіші панелі інструментів + Час відновлення швидкого друку + Завжди починати негайно + Показувати панель інструментів автоматично + Показувати панель інструментів під час введення або вибору тексту + Приховувати панель інструментів автоматично + Приховувати панель інструментів з появою пропозицій + Персоналізувати валюти + Встановити головні та до 6 додаткових символів валют, розділених пропуском + Вміст скопійовано + Поведінка клавіші зміни мови + Панель інструментів + Завжди використовувати середню пропозицію + При натисканні точки або пунктуації буде використано середню пропозицію + Закрити буфер обміну + Завантажити + Емоджі + Запропонувати вміст буфера обміну + Показати нещодавно скопійований вміст буфера обміну як пропозицію + Копіювати в буфер обміну + Зберегти у файл + Слово лівіше + Слово правіше + Сторінка вгору + Сторінка вниз + Вибрати клавіші панелі інструментів буфера обміну + Закріплювати клавіші панелі інструментів при тривалому натисканні + Це вимикає інші функції клавіш панелі інструментів при тривалому натисканні + Початок сторінки + Кінець сторінки + Перемикати цифрову клавіатуру + Повернутися до основної клавіатури після… + Вибір емоджі в режимі перегляду + Вибір запису з історії буфера обміну + Натискання Enter або пробілу після інших клавіш у режимі символів + Додати найпоширеніші варіанти (типово) + Видалити спливні клавіші, які є в базовій розкладці + Мансійська + %s (Розширена) + Ця установка показує всі кольори, які використовуються всередині програми. Список кольорів може змінюватись. Стандартний колір є випадковим, і імена не будуть переведені. + Показати більше кольорів + Видалити зайві спливні вікна + Функціональні клавіші + Функціональні клавіші (Символи) + Функціональні клавіші (Додаткові символи) + Ряд з цифрами + Плавучий передперегляд + Показувати пропозицію під час вводу жестами + Переміщувати передперегляд під час вводу жестами + Тривалість сліду жесту + Свій текст на клавіші пробілу + Ряд емоджі знизу + Ряд буфера обміну внизу + Enter + Tab + Видалити + Caps lock + Space (цифрова розкладка) + Вийти з режиму однієї руки + Змінити розмір режиму однією рукою + Голосовий ввід вимкнено + Показати / приховати панель інструментів + З\'єднувач нульової ширини + Роз\'єднувач нульової ширини + Налаштувати коди клавіш панелі інструментів + Код клавіші + Код довгого натискання + Персоналізувати значки + ► Тривале натискання закріплених клавіш панелі інструментів призводить до додаткової функціональності: <br>\n\t• буфер обміну &#65515; вставити<br>\n\t• рух вліво / вправо &#65515; слово вліво / вправо <br>\n\t• рух вгору / вниз &#65515; сторінка вгору / вниз <br>\n\t• слово вліво / вправо &#65515; на початок / кінець рядка <br>\n\t• сторінка вгору / вниз &#65515; на початок / кінець сторінки <br>\n\t• копіювати &#65515; вирізати <br>\n\t• вибрати слово &#8596; вибрати все <br>\n\t• скасувати &#8596; повторити <br> <br>\n► Тривале натискання клавіш на панелі інструментів стрічки пропозицій закріплює їх на ній. <br> <br>\n► Тривале натискання клавіші коми відкриває доступ до перегляду буфера обміну, перегляду емоджі, режиму однією руки, налаштувань або перемикання мови: <br>\n\t• Перегляд емоджі та перемикач мови зникнуть, якщо у вас увімкнена відповідна клавіша; <br>\n\t• Для деяких розкладок це не клавіша кома, а клавіша на тій самій позиції (наприклад, це \\\'q\\\' для розкладки Dvorak). <br> <br>\n► Якщо режим інкогніто увімкнено, слова не запам\'ятовуватимуться, а смайлики не додаватимуться до нещодавніх. <br> <br>\n► Натисніть на значок інкогніто, щоб отримати доступ до панелі інструментів. <br> <br>\n► Введення клавіш ковзанням: проведіть пальцем від клавіші Shift до іншої клавіші, щоб ввести одну велику літеру: <br>\n\t• Це також працює для клавіш \\\'?123\\\' для введення одного символу з клавіатури символів, а також для пов\'язаних клавіш. <br> <br>\n► Утримуючи Shift або символьну клавішу, натисніть одну або кілька клавіш, а потім відпустіть Shift або символьну клавішу, щоб повернутися до попередньої клавіатури. <br> <br>\n► Тривале натискання на пропозицію в стрічці пропозицій покаже більше пропозицій, а кнопка видалення — видалить цю пропозицію. <br> <br>\n► Проведіть вгору від пропозиції, щоб відкрити більше пропозицій, і відпустіть її, щоб вибрати. <br> <br>\n► Тривале натискання на запис в історії буфера обміну, щоб закріпити його (запис зберігатиметься в буфері, доки ви не відкріпите його). <br> <br>\n► Проведіть вліво у вікні буфера обміну, щоби видалити запис (крім випадків, коли він закріплений) <br> <br>\n► Виділіть текст і натисніть Shift, щоб перемикатися між прописними, малими та великими літерами. <br> <br>\n► Ви можете додавати словники, відкривши їх у провіднику: <br>\n\t• Це працює тільки з <i>content-uris</i> та не працює з <i>file-uris</i>, а це означає, що він може не працювати з деякими файловими провідниками. <br> <br>\n► Для користувачів, які створюють резервні копії вручну з root-доступом: <br>\n\t• Починаючи з Android 7, файл спільних налаштувань знаходиться не в типовому розташуванні, оскільки застосунок використовує %s. Це необхідно для того, щоб налаштування можна було прочитати до того, як пристрій буде розблоковано, наприклад, під час завантаження; <br>\n\t• Файл розташовано у /data/user_de/0/package_id/shared_prefs/, хоча це може залежати від пристрою та версії Android. <br> <br>\n<i><b>Режим налагодження / налагодження APK</b></i> <br> <br>\n► Тривале натискання на пропозицію показує джерело словника. <br> <br>\n► Якщо ви використовуєте налагодження APK, ви можете знайти налаштування налагодження у розширених налаштуваннях, хоча корисність цих налаштувань обмежена, за винятком вивантаження словників до журналу. <br>\n\t• Щоб отримати релізну версію APK, вам потрібно натиснути версію в розділі <i>Про програму</i> кілька разів, після чого ви можете знайти налаштування налагодження в <i>Розширені параметри</i>. <br>\n\t•Після ввімкнення <i>Показати інформацію про пропозицію</i>, пропозиції матимуть крихітні цифри зверху, що вказують на внутрішню оцінку та джерело словника. <br> <br>\n► У разі збою застосунку, коли ви відкриєте «Налаштування», вам буде запропоновано зберегти журнал збоїв. <br> <br>\n► При багатомовному введенні тексту пробіл показуватиме довірче значення, яке використовується для визначення мови, що наразі використовується. <br> <br>\n► Пропозиції матимуть крихітні цифри зверху, що показують внутрішню оцінку та джерело словника (можна вимкнути). + Стиль значка + Shift + Перемкнути сторону режиму однієї руки + Shift (натиснутий) + Смітник + Дійсно скинути всі персоналізовані значки? + Вібрація в режимі «Не турбувати» + Даргинська (Урахі) + Розділена клавіатура + Увімкнути розділену клавіатуру (альбомну) + %s (Фонетика) + Автовиправлення комбінації клавіш + Якщо увімкнено, комбінації клавіш можуть бути розгорнуті за допомогою автокорекції + Встановити фонове зображення (альбомна) + Якщо не встановлено, буде використано портретне зображення + Перевизначити версію емоджі + Встановити власний шрифт з файлу + Ви дійсно хочете очистити всі налаштовані коди клавіш? + Шкала шрифту клавіатури + Шкала шрифту перегляду емоджі + Шкала бічного відступу + Показувати підказки в рядку з цифрами + Відстань проведення для перемикання мови + Запропонувати емодзі + Пропонувати емодзі зі словника у підказках в горі клавіатури + Показати опис емодзі при тривалому натисканні + Пробіл + Пропонувати назви програм + Використовувати назви встановлених програм для пропозицій та виправлень + Не завжди показувати підказки для текстових полів на вебсторінках + Поля редагування вебсторінок (здебільшого розташовані в браузерах) є дуже поширеною причиною проблем із налаштуванням «завжди показувати пропозиції» + Скасовувати автовиправлення за допомогою Backspace + Пропозиції щодо пунктуації + Показувати розділові знаки, коли немає інших пропозицій + Резервна копія відновлена успішно + Формат дати та часу + Мови зі словниками + Автоматичне додавання пробілу після вибору пропозиції + Автопробіл перед жестовим введенням слова + Автопробіл після жестового введення слова + Не вставляти автопробіл коли натиснуто Shift + Shift видаляє запланований автопробіл + Порядок спливних клавіш та джерело підказок + Показати спливні клавіші TLD + При утриманні крапки під час введення в полі адреси URL або Email будуть з\'являтися такі підказки як \".com, .ua, .net\". Замість символів які спливають при натисненні крапки зазвичай + Режим панелі інструментів + Панель інструментів та підказки + Лише панель інструментів + Лише підказки + Приховано + Приховати панелі інструментів буфера обміну та емодзі + Масштабувати розмір клавіші емодзі залежно від розміру шрифту + Тон шкіри емодзі за замовчуванням + Нейтральний (жовтий) + Дагбані + Сесото + Мова: %1$s. Розкладка: %2$s + %s (Байшахі) + Увага: цей макет наразі використовується + Додаткові макети + Функціональні клавіші (великий екран) + Ряд цифр (базовий) + Натискання Enter або пробілу після інших клавіш на цифровій клавіатурі + Ви можете знаходити та ділитися темами в %s . + Ви можете знайти та поділитися макетами клавіатури в %s . + обговорення + Переглянути Вікі + Вікі може бути покращена будь-яким користувачем GitHub! + Приховати клавіатуру + Ви насправді хочете видалити %s ? + Недійсне ім\'я + Власний макет + Горизонтальна diff --git a/app/src/main/res/values-ur/strings-action-keys.xml b/app/src/main/res/values-ur/strings-action-keys.xml deleted file mode 100644 index e08136375f..0000000000 --- a/app/src/main/res/values-ur/strings-action-keys.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - "جائیں" - "اگلا" - "پيچھے" - "ہوگیا" - "بھیجیں" - "تلاش" - "موقوف" - "انتظار" - diff --git a/app/src/main/res/values-ur/strings-config-important-notice.xml b/app/src/main/res/values-ur/strings-config-important-notice.xml deleted file mode 100644 index 56d3ff1e15..0000000000 --- a/app/src/main/res/values-ur/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "تجاویز کو بہتر بنانے کیلئے اپنی مواصلات اور ٹائپ کردہ ڈیٹا سے سیکھیں" - diff --git a/app/src/main/res/values-ur/strings-emoji-descriptions.xml b/app/src/main/res/values-ur/strings-emoji-descriptions.xml deleted file mode 100644 index 05c200eb1e..0000000000 --- a/app/src/main/res/values-ur/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "کاپی رائٹ کا نشان" - "رجسٹرڈ کا نشان" - "دوہرا فجائیہ نشان" - "فجائیہ سوالیہ نشان" - "ٹریڈ مارک کا نشان" - "معلومات کا ماخذ" - "دائیں بائیں تیر کا نشان" - "اوپر نیچے تیر کا نشان" - "شمال مغرب تیر کا نشان" - "شمال مشرق تیر کا نشان" - "جنوب مشرق تیر کا نشان" - "جنوب مغرب تیر کا نشان" - "ہک کے ساتھ بائیں طرف تیر کا نشان" - "ہک کے ساتھ دائیں طرف تیر کا نشان" - "گھڑی" - "ریت گھڑی" - - - - - "سیاہ دائیں اشارہ کرنے والا دوہرا مثلث" - "سیاہ بائیں اشارہ کرنے والا دوہرا مثلث" - "سیاہ اوپر اشارہ کرنے والا دوہرا مثلث" - "سیاہ نیچے اشارہ کرنے والا دوہرا مثلث" - - - - - - - "الارم گھڑی" - - - - - "سرکتی ریت کے ساتھ ریت گھڑی" - - - - - - - "‏مدور لاطینی بڑا حرف m" - "سیاہ چھوٹا مربع" - "سفید چھوٹا مربع" - "سیاہ دائیں اشارہ کرنے والا مثلث" - "سیاہ بائیں اشارہ کرنے والا مثلث" - "سفید متوسط مربع" - "سیاہ متوسط مربع" - "سفید متوسط چھوٹا مربع" - "سیاہ متوسط چھوٹا مربع" - "شعاعوں والا سیاہ سورج" - "بادل" - - - - - - - "سیاہ ٹیلی فون" - "چیک کے ساتھ بیلیٹ باکس" - "بارش کے قطروں کے ساتھ چھتری" - "گرم مشروب" - - - "سفید اوپر اشارہ کرنے والا انگشت شہادت" - - - - - - - - - - - - - - - - - - - "سفید مسکراتا چہرہ" - "برج حمل" - "برج ثور" - "برج جوزا" - "برج سرطان" - "برج اسد" - "برج سنبلہ" - "برج میزان" - "برج عقرب" - "برج قوس" - "برج جدی" - "برج دلو" - "برج حوت" - "سیاہ اسپیڈ سوٹ" - "سیاہ کلب سوٹ" - "سیاہ ہارٹ سوٹ" - "سیاہ ڈائمنڈ سوٹ" - "گرم جھرنے" - "سیاہ یونیورسل ری سائیکلنگ کی علامت" - "پہیے والی کرسی کی علامت" - - - "لنگر" - - - - - - - - - - - - - "انتباہی نشان" - "زیادہ وولٹیج کا نشان" - "اوسط سفید دائرہ" - "اوسط سیاہ دائرہ" - - - - - "ساکر کی گیند" - "بیس بال" - "برف کے بغیر برفانی پتلا" - "بادل کے پیچھے سورج" - - - "ستاروں کا جھرمٹ" - - - - - - - "داخلہ ممنوع ہے کی علامت" - - - "چرچ" - - - - - "فوارہ" - "سوراخ میں پرچم" - - - "بادبانی کشتی" - - - - - - - "خیمہ" - "فیول پمپ" - "سیاہ قینچیاں" - "سفید بھاری چیک کا نشان" - "ہوائی جہاز" - "لفافہ" - "اٹھا ہوا مکہ" - "اٹھا ہوا ہاتھ" - "فتح والا ہاتھ" - - - "پنسل" - "سیاہ نب" - "بھاری چیک کا نشان" - "‏بھاری ضرب x" - - - - - "پھلجھڑیاں" - "آٹھ آڑا ستارہ" - "آٹھ نکیلا سیاہ ستارہ" - "برف کا گالا" - "پھلجھڑی" - "کراس کا نشان" - "منفی مربع کراس کا نشان" - "سیاہ سوالیہ نشان زیور" - "سفید سوالیہ نشان زیور" - "سفید فجائیہ نشان زیور" - "بھاری فجائیہ نشان کی علامت" - - - "کافی سیاہ دل" - "بھاری جمع کا نشان" - "بھاری منفی کا نشان" - "بھاری تقسیم کا نشان" - "سیاہ دائیں طرف تیر کا نشان" - "خمیدہ لوپ" - "دوہرا خیمدہ لوپ" - "دائیں طرف اشارہ کرنے والا پھر اوپر مڑنے والا تیر کا نشان" - "دائیں طرف اشارہ کرنے والا پھر نیچے مڑنے والا تیر کا نشان" - "بائیں طرف سیاہ تیر کا نشان" - "اوپر کی طرف سیاہ تیر کا نشان" - "نیچے کی طرف سیاہ تیر کا نشان" - "سیاہ بڑا مربع" - "سفید بڑا مربع" - "سفید اوسط ستارہ" - "بھاری بڑا دائرہ" - "لہردار ڈیش" - "جزوی ردوبدل کا نشان" - "مدور آئیڈیوگراف مبارک باد" - "مدور آئیڈیوگراف راز" - "مہجونگ ٹائل سرخ اژدہا" - "تاش کا کالا جوکر" - "‏خون کی قسم A" - "‏خون کی قسم B" - "‏خون کی قسم O" - "گاڑی کھڑی کرنے کا احاطہ" - "‏خون کی قسم AB" - "‏مربع کی علامت میں تحریر CL" - "‏مربع کی علامت میں تحریر cool" - "‏مربع کی علامت میں تحریر free" - "‏مربع کی علامت میں تحریر ID" - "‏مربع کی علامت میں تحریر new" - "‏مربع کی علامت میں تحریر N G" - "‏مربع کی علامت میں تحریر OK" - "‏مربع کی علامت میں تحریر SOS" - "‏مربع کی علامت میں تحریر up!‎" - "‏مربع کی علامت میں تحریر vs" - "‏مربع کی علامت میں تحریر katakana" - "‏مربع کی علامت میں تحریر katakana سروس" - "مربع کی علامت میں تحریر آئیڈیوگراف بلا معاوضہ" - "مربع کی علامت میں تحریر آئیڈیوگراف محفوظ کردہ سیٹ" - "مربع کی علامت میں تحریر آئیڈیوگراف ممانعت" - "مربع کی علامت میں تحریر آئیڈیوگراف اسامی" - "مربع کی علامت میں تحریر آئیڈیوگراف قبولیت" - "مربع کی علامت میں تحریر آئیڈیوگراف مکمل تصرف" - "مربع کی علامت میں تحریر آئیڈیوگراف ادا شدہ" - "مربع کی علامت میں تحریر آئیڈیوگراف ماہانہ" - "مربع کی علامت میں تحریر آئیڈیوگراف ایپلیکیشن" - "مربع کی علامت میں تحریر آئیڈیوگراف ڈسکاؤنٹ" - "مربع کی علامت میں تحریر آئیڈیوگراف کاروبار جاری" - "مدور آئیڈیو گراف فائدہ" - "مدور آئیڈیو گراف قبولیت" - "طوفان" - "دھندلا" - "بند چھتری" - "ستاروں والی رات" - "پہاڑوں پر طلوع آفتاب" - "طلوع آفتاب" - "شام کے دھندلکے میں شہر کا نظارہ" - "عمارتوں پر غروب آفتاب" - "قوس قزح" - "رات میں پل" - "پانی کی لہر" - "آتش فشاں" - "کہکشاں" - "کرّہ ارض یوروپ افریقہ" - "کرّہ ارض امریکاز" - "کرّہ ارض ایشیا آسٹریلیا" - "نصف النہار کے ساتھ کرّہ" - "نئے چاند کی علامت" - "بڑھتے ہوئے ہلالی چاند کی علامت" - "پہلی چوتھائی کے چاند کی علامت" - "بڑھتے ہوئے نیم بریں چاند کی علامت" - "پورے چاند کی علامت" - "گھٹتے ہوئے نیم بریں چاند کی علامت" - "آخری چوتھائی چاند کی علامت" - "گھٹتے ہوئے ہلالی چاند کی علامت" - "ہلالی چاند" - "چہرے کے ساتھ نیا چاند" - "چہرے کے ساتھ پہلی چوتھائی کا چاند" - "چہرے کے ساتھ آخری چوتھائی کا چاند" - "چہرے کے ساتھ پورا چاند" - "چہرے کے ساتھ سورج" - "روشن ستارہ" - "شہاب ثاقب" - - - - - - - - - - - - - - - - - - - - - - - - - - - "شاہ بلوط" - "تخمی درخت" - "سدا بہار درخت" - "پت جھڑ کا درخت" - "کھجور کا درخت" - "ناگ پھنی" - - - "گل لالہ" - "چیری بلوسم" - "گلاب" - "گل خیرو" - "سورج مکھی" - "بلوسم" - "مکئی کی بالی" - "چاول کی بالی" - "ہرب" - "چار پتی کی سہ شاخہ" - "میپل کا پتا" - "گری ہوئی پتی" - "ہوا میں اڑنے والی پتی" - "مشروم" - "ٹماٹر" - "بینگن" - "انگور" - "خربوزہ" - "تربوز" - "طنجوی نارنگی" - "لیموں" - "کیلا" - "انناس" - "لال سیب" - "ہرا سیب" - "ناشپاتی" - "آڑو" - "چیریز" - "اسٹرابیری" - "ہیمبرگر" - "پیزا کا ٹکڑا" - "ہڈی کا گوشت" - "پولٹری کی ٹانگ" - "چاول کا خستہ" - "چاول کا گولہ" - "پکا ہوا چاول" - "کڑھی اور چاول" - "دخانی ڈونگا" - "اسپاگٹی" - "روٹی" - "فرینچ فرائیز" - "بھنا ہوا شکر قند" - "ڈنگو" - "اوڈین" - "سشی" - "بھنا ہوا جھینگا" - "گرداب کے ڈیزائن والا مچھلی کیک" - "نرم آئس کریم" - "تراشیدہ برف" - "آئس کریم" - "ڈونٹ" - "کوکی" - "چاکلیٹ بار" - "قندی" - "لالی پاپ" - "کسٹرڈ" - "شہد کا برتن" - "کیک کا ٹکڑا" - "بینٹو باکس" - "کھانے کا برتن" - "کھانا پکانا" - "کانٹا اور چھری" - "بغیر ہینڈل کے چائے کی پیالی" - "جاپانی شراب کی بوتل اور پیالی" - "وائن کا گلاس" - "کاک ٹیل کا گلاس" - "حاری مشروب" - "بیئر کا مگ" - "کھنکتے ہوئے بیئر کے مگ" - "بچے کی بوتل" - - - - - - - "ربن" - "لپٹا ہوا تحفہ" - "سالگرہ کا کیک" - "جیکو لالٹین" - "کرسمس کا درخت" - "فادر کرسمس" - "آتش بازی" - "آتش بازی کی پھل جھڑی" - "غبارہ" - "پارٹی پوپر" - "شیرینی کا گولہ" - "تناباتا کا درخت" - "خط کشیدہ پرچم" - "صنوبر کی سجاوٹ" - "جاپانی گڑیاں" - "سیم ماہی کا جھنڈا" - "ہوا کی جھنکار" - "چاند دیکھنے کی تقریب" - "اسکول کا بستہ" - "گریجویشن کی ٹوپی" - - - - - - - - - - - - - - - "جھولے کا گھوڑا" - "ہنڈولا" - "رولر کوسٹر" - "بنسی اور مچھلی" - "مائکروفون" - "مووی کیمرا" - "سنیما" - "ہیڈفون" - "فنکار کی تختی" - "اوپری ٹوپ" - "سرکس کا خیمہ" - "ٹکٹ" - "تالی تختہ" - "پرفارمنگ آرٹس" - "ویڈیو گیم" - "راست ضرب" - "سلاٹ مشین" - "بلیئرڈز" - "گیم ڈائی" - "باؤلنگ" - "پھول تاش" - "غنائی نوٹ" - "متعدد غنائی نوٹس" - "سیکسوفون" - "گٹار" - "غنائی کی بورڈ" - "نفیری" - "وائلن" - "غنائی اسکور" - "کمربند والی رواں شرٹ" - "ٹینس ریکیٹ اور گیند" - "اسکی اور اسکی بوٹ" - "باسکٹ بال اور ہوپ" - "چار خانہ دار پرچم" - "اسنو بورڈر" - "دوڑنے والا" - "موج تختے کا سوار" - - - "ٹرافی" - "گھڑ دوڑ" - "امریکی فٹبال" - "رگبی فٹبال" - "تیراک" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "گھر کی عمارت" - "باغ کے ساتھ گھر" - "دفتر کی عمارت" - "جاپانی ڈاک خانہ" - "یوروپی ڈاک خانہ" - "ہسپتال" - "بینک" - "آٹومیٹڈ ٹیلر مشین" - "ہوٹل" - "محبت کا ہوٹل" - "سہولت بخش اسٹور" - "اسکول" - "ڈپارٹمنٹ اسٹور" - "فیکٹری" - "ازاکایا لالٹین" - "جاپانی قلعہ" - "یوروپی قلعہ" - - - - - - - - - - - - - - - - - - - - - - - - - "چوہا" - "موش" - "بیل" - "ہندوستانی بھینس" - "گائے" - - - "چیتا" - "خرگوش" - "بلی" - "ڈریگن" - "مگرمچھ" - "وہیل" - "گھونگھا" - "سانپ" - "گھوڑا" - "مینڈھا" - "بکری" - "بھیڑ" - "بندر" - "مرغا" - "مرغ" - "کتا" - "سور" - "جنگلی سور" - "ہاتھی" - "اَکٹوپس" - "پیچدار گھونگھا" - "کھٹمل" - "چیونٹی" - "شہد کی مکھی" - "بھونرا" - "مچھلی" - "حاری مچھلی" - "بلوفش" - "کچھوا" - "انڈے سے نکلتا چوزہ" - "بے بی چک" - "سامنے کے رخ کا بچے کا رخسار" - "پرندہ" - "پینگوئن" - "کوآلا" - "پوڈل" - "یک کوہانی اونٹ" - "دو کوہانی اونٹ" - "ڈولفن" - "موش کا چہرہ" - "گائے کا چہرہ" - "باگھ کا چہرہ" - "خرگوش کا چہرہ" - "بلی کا چہرہ" - "ڈریگن کا چہرہ" - "پھنکارنے والی وہیل" - "گھوڑے کا چہرہ" - "بندر کا چہرہ" - "کتے کا چہرہ" - "سور کا چہرہ" - "مینڈک کا چہرہ" - "موش کا چہرہ" - "بھیڑیے کا چہرہ" - "بھالو کا چہرہ" - "پانڈا کا چہرہ" - "سور کی ناک" - "پنجے کے چھاپ" - - - "آنکھیں" - - - "کان" - "ناک" - "منھ" - "زبان" - "سفید اوپر اشارہ کرنے والا الٹے ہاتھ کا اشاریہ" - "سفید نیچے اشارہ کرنے والا الٹے ہاتھ کا اشاریہ" - "سفید بائیں اشارہ کرنے والا الٹے ہاتھ کا اشاریہ" - "سفید دائیں اشارہ کرنے والا الٹے ہاتھ کا اشاریہ" - "مکہ بند ہاتھ کا نشان" - "لہراتے ہاتھ کا نشان" - "صحیح ہاتھ کا نشان" - "اظہار پسندیدگی کا نشان" - "اظہار ناپسندیدگی کا نشان" - "تالی بجاتے ہاتھوں کا نشان" - "کھلے ہاتھوں کا نشان" - "تاج" - "عورت کی ٹوپ" - "عینکیں" - "نکٹائی" - "ٹی شرٹ" - "جینس" - "لباس" - "چوغہ" - "بکنی" - "عورت کے کپڑے" - "پرس" - "ہینڈبیگ" - "پاؤچ" - "مردانہ جوتا" - "ایتھلیٹک جوتا" - "اونچی ایڑی کا جوتا" - "زنانہ سینڈل" - "زنانہ بوٹس" - "پیروں کے نشانات" - "یک رخی خاکہ میں جسمانی دھڑ" - "یک رخی خاکے میں جسمانی دھڑ" - "لڑکا" - "لڑکی" - "مرد" - "عورت" - "خاندان" - "ہاتھ پکڑے ہوئے مرد اور عورت" - "ہاتھ پکڑے ہوئے دو مرد" - "ہاتھ پکڑے ہوئے دو عورتیں" - "پولیس افسر" - "بنی کانوں والی عورت" - "گھونگھٹ والی دلہن" - "سنہرے بال والا شخص" - "لمبی مونچھوں والا والا آدمی" - "پگڑی والا آدمی" - "بڑی عمر کا آدمی" - "بڑی عمر کی عورت" - "بچہ" - "تعمیراتی کارکن" - "شہزادی" - "جاپانی دیو" - "جاپانی آسیب" - "بھوت" - "بچہ فرشتہ" - "غیر ارضی اجنبی مخلوق" - "اجنبی عفریت" - "شیطان کا بچہ" - "کھوپڑی" - "معلوماتی ڈیسک کا شخص" - "پہرہ دار" - "رقاصہ" - "لپ اسٹک" - "نیل پالش" - "چہرے کا مساج" - "بال کٹوانا" - "نائی کا کھمبا" - "سرنج" - "ٹکیہ" - "بوسے کا نشان" - "محبت نامہ" - "انگوٹھی" - "قیمتی پتھر" - "بوسہ" - "گلدستہ" - "دل والا جوڑا" - "شادی" - "دھڑکتا دل" - "ٹوٹا ہوا دل" - "دو دل" - "چمکنے والا دل" - "بڑھتا ہوا دل" - "تیر کے نشان والا دل" - "نیلا دل" - "ہرا دل" - "پیلا دل" - "جامنی دل" - "ربن والا دل" - "گھومتا ہوا دل" - "دل کی سجاوٹ" - "ہیرے کی شکل جس کے اندر ایک نکتہ ہو" - "بجلی کی روشنی کا بلب" - "غصہ کی علامت" - "بم" - "سونے کی علامت" - "ٹکر کی علامت" - "چھینٹ اڑانے والے پسینے کی علامت" - "چھوٹا قطرہ" - "ڈیش کی علامت" - "گندگی کا ڈھیر" - "جھکے ہوئے دو سروں والے پٹھے" - "چکر کی علامت" - "خطابی غبارہ" - "فکری غبارہ" - "سفید پھول" - "سو پوائنٹس کی علامت" - "رقم کا تھیلا" - "کرنسی کا تبادلہ" - "بھاری ڈالر کا نشان" - "کریڈٹ کارڈ" - "ین کے نشان والا بینک نوٹ" - "ڈالر کے نشان کے ساتھ بینک نوٹ" - "یورو کے نشان والا بینک نوٹ" - "پونڈ کے نشان والا بینک نوٹ" - "پروں کے ساتھ رقم" - "اوپر کی طرف رجحان اور ین کے نشان والا چارٹ" - "نشست" - "پرسنل کمپیوٹر" - "بریف کیس" - "منی ڈسک" - "فلاپی ڈسک" - "آپٹکل ڈسک" - "Dvd" - "فائل فولڈر" - "فائل فولڈر کھولیں" - "پیچدار صفحہ" - "اوپر کے رخ والا صفحہ" - "کیلنڈر" - "قابل تراشہ کیلنڈر" - "کارڈ کا اشاریہ" - "اوپر کی طرف رجحان والا چارٹ" - "نیچے کی طرف رجحان والا چارٹ" - "بار چارٹ" - "کلپ بورڈ" - "پش پن" - "گول پش پن" - "پیپر کلپ" - "سیدھا رولر" - "مثلث نما رولر" - "بُک مارک کے ٹیبز" - "لیجر" - "نوٹ بک" - "آرائشی کور والی نوٹ بک" - "بند کتاب" - "کھلی کتاب" - "ہری کتاب" - "نیلی کتاب" - "نارنجی کتاب" - "کتابیں" - "نام کا بلّا" - "اسکرول کریں" - "میمو" - "ٹیلی فون کا ریسیور" - "پیجر" - "فیکس مشین" - "سٹیلائٹ انٹینا" - "عوامی خطاب کا لاؤڈ اسپیکر" - "خوش کن میگا فون" - "آؤٹ باکس ٹرے" - "ان باکس ٹرے" - "پیکیج" - "ای میل کی علامت" - "موصول ہونے والا لفافہ" - "لفافہ جس کے اوپر نیچے کے رخ میں تیر کا نشان ہو" - "گرے ہوئے پرچم والا بند میل باکس" - "اٹھے ہوئے پرچم والا بند میل باکس" - "اٹھے ہوئے پرچم والا کھلا میل باکس" - "گرے ہوئے پرچم والا کھلا میل باکس" - "پوسٹ باکس" - "ڈاک کا ہارن" - "اخبار" - "موبائل فون" - "موبائل فون کے بائیں جانب دائیں طرف والا تیر کا نشان" - "ارتعاش کی وض‏ع" - "موبائل فون آف" - "کوئی موبائل فونز نہیں ہیں" - "سلاخوں والا انٹینا" - "کیمرا" - - - "ویڈیو کیمرا" - "ٹیلی ویژن" - "ریڈیو" - "ویڈیو کیسیٹ" - - - - - "موڑے ہوئے دائیں طرف تیر کے نشانات" - "گھڑی کی سمت میں دائیں اور بائیں طرف کھلے مدور تیر کے نشانات" - "گھڑی کی سمت میں دائیں اور بائیں طرف کھلے مدور تیر کے نشانات نیز ایک مدور استرکاری" - "گھڑی کی سمت میں اوپر اور نیچے کھلے مدور تیر کے نشانات" - "خلاف گھڑی کی سمت میں نیچے اور اوپر کھلے مدور تیر کے نشانات" - "کم چمک کی علامت" - "زیادہ چمک کی علامت" - "منسوخی کے اسٹروک والا اسپیکر" - "اسپیکر" - "ایک صوتی لہر والا اسپیکر" - "تین صوتی لہروں والا اسپیکر" - "بیٹری" - "بجلی کا پلگ" - "بائیں جانب جھکا میگنفائنگ گلاس" - "دائیں جانب جھکا میگنفائنگ گلاس" - "روشنائی والے قلم کے ساتھ تالا" - "کلید والا بند تالا" - "کلید" - "تالا" - "کھلا تالا" - "گھنٹی" - "منسوخی کے اسٹروک والی گھنٹی" - "بُک مارک" - "لنک کی علامت" - "ریڈیو بٹن" - "پیچھے کے اوپر بائیں طرف تیر کا نشان" - "اختتام کے اوپر بائیں طرف تیر کا نشان" - "فجائیہ نشان کے ساتھ آن کے اوپر دائیں طرف تیر کا نشان" - "جلد کے اوپر دائیں طرف تیر کا نشان" - "ٹاپ کے اوپر اوپر کی طرف تیر کا نشان" - "اٹھارہ سال سے کم کو اجازت نہیں کا نشان" - "کی کیپ دس" - "لاطینی بڑے حروف کیلئے ان پٹ کی علامت" - "لاطینی چھوٹے حروف کیلئے ان پٹ کی علامت" - "اعداد کیلئے ان پٹ کی علامت" - "علامات کیلئے ان پٹ علامت" - "لاطینی حروف کیلئے ان پٹ کی علامت" - "آگ" - "الیکٹرک مشعل" - "رینچ" - "ہتھوڑا" - "نٹ اور بولٹ" - "ہوچو" - "پستول" - "خورد بین" - "دور بین" - "بلوریں گیند" - "درمیانی نقطے کے ساتھ چھ کونوں والا ستارہ" - "مبتدی کیلئے جاپانی علامت" - "ترشول کا نشان" - "سیاہ مربع بٹن" - "سفید مربع بٹن" - "بڑا سرخ دائرہ" - "بڑا نیلا دائرہ" - "بڑا نارنجی ہیرا" - "بڑا نیلا ہیرا" - "چھوٹا نارنجی ہیرا" - "چھوٹا نیلا ہیرا" - "اوپر اشارہ کرنے والا سرخ مثلث" - "نیچے اشارہ کرنے والا سرخ مثلث" - "اوپر اشارہ کرنے والا چھوٹا سرخ مثلث" - "نیچے اشارہ کرنے والا چھوٹا سرخ مثلث" - - - - - - - - - - - - - "گھڑی کا رخ ایک بجے" - "گھڑی کا رخ دو بجے" - "گھڑی کا رخ تین بجے" - "گھڑی کا رخ چار بجے" - "گھڑی کا رخ پانچ بجے" - "گھڑی کا رخ چھ بجے" - "گھڑی کا رخ سات بجے" - "گھڑی کا رخ آٹھ بجے" - "گھڑی کا رخ نو بجے" - "گھڑی کا رخ دس بجے" - "گھڑی کا رخ گیارہ بجے" - "گھڑی کا رخ بارہ بجے" - "گھڑی کا رخ ایک تیس" - "گھڑی کا رخ دو تیس" - "گھڑی کا رخ تین تیس" - "گھڑی کا رخ چار تیس" - "گھڑی کا رخ پانچ تیس" - "گھڑی کا رخ چھ تیس" - "گھڑی کا رخ سات تیس" - "گھڑی کا رخ آٹھ تیس" - "گھڑی کا رخ نو تیس" - "گھڑی کا رخ دس تیس" - "گھڑی کا رخ گیارہ تیس" - "گھڑی کا رخ بارہ تیس" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "ماؤنٹ فیوجی" - "ٹوکیو ٹاور" - "مجسمۂ آزادی" - "جاپان کا یک رخی خاکہ" - "مویائی" - "کھسیانی ہنسی والا چہرہ" - "مسکراتی آنکھوں کے ساتھ ہنستا ہوا چہرہ" - "خوشی کے آنسوؤں والا چہرہ" - "کھلے منہ والا مسکراتا چہرہ" - "کھلے منہ اور مسکراتی آنکھوں والا مسکراتا چہرہ" - "کھلے منہ اور ٹھنڈے پسینے والا مسکراتا چہرہ" - "کھلے منہ اور سختی سے بند آنکھوں والا مسکراتا چہرہ" - "ہالہ والا مسکراتا چہرہ" - "سینگوں والا مسکراتا چہرہ" - "پلک جھپکاتا چہرہ" - "مسکراتی آنکھوں والا مسکراتا چہرہ" - "مزیدار کھانے کا ذائقہ دینے والا چہرہ" - "پرسکون چہرہ" - "دل کی شکل کی آنکھوں والا مسکراتا چہرہ" - "دھوپ چشموں والا مسکراتا چہرہ" - "بناوٹی مسکراہٹ والا چہرہ" - "غیر جانبدار چہرہ" - "اظہار سے عاری چہرہ" - "اداس چہرہ" - "ٹھنڈے پسینے والا چہرہ" - "متفکر چہرہ" - "الجھا ہوا چہرہ" - "بے ترتیب چہرہ" - "چومنے والا چہرہ" - "بوسہ اچھالنے والا چہرہ" - "مسکراتی آنکھوں کے ساتھ چومنے والا چہرہ" - "بند آنکھوں کے ساتھ چومنے والا چہرہ" - "باہر نکلی زبان والا چہرہ" - "باہر نکلی زبان اور پلک جھپکتی آنکھ والا چہرہ" - "باہر نکلی زبان اور سختی سے بند آنکھوں والا چہرہ" - "مایوس چہرہ" - "فکرمند چہرہ" - "ناراض چہرہ" - "لٹکا ہوا چہرہ" - "روتا ہوا چہرہ" - "مستقل مزاج چہرہ" - "فتح کی ہیئت والا چہرہ" - "مایوس لیکن پرسکون چہرہ" - "کھلے منہ والا رنجیدہ چہرہ" - "غمزدہ چہرہ" - "خوفزدہ چہرہ" - "افسردہ چہرہ" - "خوابیدہ چہرہ" - "تھکا ہوا چہرہ" - "مضحکہ خیز چہرہ" - "زور سے رونے والا چہرہ" - "کھلے منہ والا چہرہ" - "مخفی چہرہ" - "کھلے منہ اور ٹھنڈے پسینے والا چہرہ" - "خوف سے چلانے والا چہرہ" - "حیران چہرہ" - "سرخی آمیز چہرہ" - "سوتا ہوا چہرہ" - "چکراتا ہوا چہرہ" - "بغیر منہ والا چہرہ" - "طبی ماسک والا چہرہ" - "مسکراتی آنکھوں کے ساتھ کھسیانی بلی کا چہرہ" - "خوشی کے آنسوؤں کے ساتھ بلی کا چہرہ" - "کھلے منہ کے ساتھ مسکراتی بلی کا چہرہ" - "دل کی شکل والی آنکھوں کے ساتھ مسکراتی بلی کا چہرہ" - "خمیدہ مسکراہٹ کے ساتھ بلی کا چہرہ" - "بند آنکھوں کے ساتھ چومنے والی بلی کا چہرہ" - "لٹکا ہوا بلی کا چہرہ" - "رونے والی بلی کا چہرہ" - "افسردہ بلی کا چہرہ" - - - - - - - - - "اچھے انداز سے عاری چہرہ" - "ٹھیک ہے انداز والا چہرہ" - "پوری طرح سے جھکا ہوا شخص" - "برا نہ دیکھنے والا بندر" - "برا نہ سننے والا بندر" - "برا نہ بولنے والا بندر" - "ایک ہاتھ اٹھائے ہوئے خوش شخص" - "جشن میں دونوں ہاتھ اٹھاتا ہوا شخص" - "رنجیدہ شخص" - "لٹکے ہوئے چہرے والا شخص" - "باندھے ہوئے ہاتھوں والا شخص" - "راکٹ" - "ہیلی کاپٹر" - "بھاپ انجن" - "ریلوے کار" - "ہائی اسپیڈ ٹرین" - "بلیٹ جیسی ناک والی ہائی اسپیڈ ٹرین" - "ٹرین" - "میٹرو" - "ہلکی ریل" - "اسٹیشن" - "ٹرام" - "ٹرام کار" - "بس" - "آنے والی بس" - "ٹرالی بس" - "بس اسٹاپ" - "منی بس" - "ایمبولینس" - "فائر انجن" - "پولیس کار" - "آنے والی پولیس کار" - "ٹیکسی" - "آنے والی ٹیکسی" - "آٹو موبائل" - "آنے والا آٹوموبائل" - "تفریحی گاڑی" - "ڈیلیوری ٹرک" - "جوڑوں سے بنی ہوئی لاری" - "ٹریکٹر" - "مونو ریل" - "ماؤنٹین ریلوے" - "معلق ریلوے" - "ماؤنٹین کیبل وے" - "ایریل ٹرام وے" - "بحری جہاز" - "ناؤ" - "اسپیڈ بوٹ" - "افقی ٹریفک لائٹ" - "عمودی ٹریفک کی روشنی" - "تعمیراتی نشان" - "پولیس کاروں کی گھومتی روشنی" - "چوکی پر مثلث نما پرچم" - "دروازہ" - "داخلہ ممنوع کا نشان" - "سگریٹ نوشی کی علامت" - "سگریٹ نوشی منع ہے کی علامت" - "گندگی کو اس کی جگہ میں ڈالیں کی علامت" - "گندگی نہ پھیلائیں کی علامت" - "برتن میں ڈالے جا سکنے والے پانی کی علامت" - "برتن میں نہ ڈالے جا سکنے والے پانی کی علامت" - "سائیکل" - "سائیکلوں کی اجازت نہیں" - "سائیکل سوار" - "پہاڑی سائیکل سوار" - "پیدل چلنے والے" - "پیدل چلنے والوں کی اجازت نہیں کی علامت" - "سڑک پار کرنے والے بچے" - "مردوں کی علامت" - "خواتین کی علامت" - "بیت الخلاء" - "بچے کی علامت" - "ٹوائلٹ" - "طہارت خانہ" - "شاور" - "غسل" - "باتھ ٹب" - "پاسپورٹ کنٹرول" - "کسٹمز" - "سامان کا دعوی" - "چھوٹا ہوا سامان" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-ur/strings-letter-descriptions.xml b/app/src/main/res/values-ur/strings-letter-descriptions.xml deleted file mode 100644 index 23aa8cf139..0000000000 --- a/app/src/main/res/values-ur/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "مؤنث علامتِ ترتيب" - "مائیکرو کا نشان" - "مذکر علامتِ ترتيب" - "‏شارپ S" - "‏A، گریو" - "‏A، اکیوٹ" - "‏A، سرکمفلیکس" - "‏A، ٹلڈا" - "‏A، ڈایاریسس" - "‏A، اوپر رِنگ" - "‏A, E، لیگاچر" - "‏C، سڈِلا" - "‏E، گریو" - "‏E، اکیوٹ" - "‏E، سرکمفلیکس" - "‏E، ڈایاریسس" - "‏I، گریو" - "‏I، اکیوٹ" - "‏I، سرکمفلیکس" - "‏I، ڈایاریسس" - "Eth" - "‏N، ٹلڈا" - "‏O، گریو" - "‏O، اکیوٹ" - "‏O، سرکمفلیکس" - "‏O، ٹلڈا" - "‏O، ڈایاریسس" - "‏O، اسٹروک" - "‏U، گریو" - "‏U، اکیوٹ" - "‏U، سرکمفلیکس" - "‏U، ڈایاریسس" - "‏Y، اکیوٹ" - "تھورن" - "‏Y، ڈایاریسس" - "‏A، میکران" - "‏A، بریو" - "‏A، اوگونیک" - "‏C، اکیوٹ" - "‏C، سرکمفلیکس" - "‏C، اوپر ڈاٹ" - "‏C، کیران" - "‏D، کیران" - "‏D، اسٹروک" - "‏E، میکران" - "‏E، بریو" - "‏E، اوپر ڈاٹ" - "‏E، اوگونیک" - "‏E، کیران" - "‏G، سرکمفلیکس" - "‏G، بریو" - "‏G، اوپر ڈاٹ" - "‏G، سڈِلا" - "‏H، سرکمفلیکس" - "‏H، اسٹروک" - "‏I، ٹلڈا" - "‏I، میکران" - "‏I، بریو" - "‏I، اوگونیک" - "‏بغیر ڈاٹ والی I" - "‏I, J لیگاچر" - "‏J، سرکمفلیکس" - "‏K، سڈِلا" - "Kra" - "‏L، اکیوٹ" - "‏L، سڈِلا" - "‏L، کیران" - "‏L، درمیانی ڈاٹ" - "‏L، اسٹروک" - "‏N، اکیوٹ" - "‏N، سڈِلا" - "‏N، کیران" - "‏N، جس سے پہلے علامت حذف ہو" - "Eng" - "‏O، میکران" - "‏O، بریو" - "‏O، ڈبل اکیوٹ" - "‏O, E، لیگاچر" - "‏R، اکیوٹ" - "‏R، سڈِلا" - "‏R، کیران" - "‏S، اکیوٹ" - "‏S، سرکمفلیکس" - "‏S، سڈِلا" - "‏S، کیران" - "‏T، سڈِلا" - "‏T، کیران" - "‏T، اسٹروک" - "‏U، ٹلڈا" - "‏U، میکران" - "‏U، بریو" - "‏U، اوپر رِنگ" - "‏U، ڈبل اکیوٹ" - "‏U، اوگونیک" - "‏W، سرکمفلیکس" - "‏Y، سرکمفلیکس" - "‏Z، اکیوٹ" - "‏Z، اوپر ڈاٹ" - "‏Z، کیران" - "‏طویل S" - "‏O، ہورن" - "‏U، ہورن" - "‏S، ذیل میں کوما" - "‏T، ذیل میں کوما" - "شوا" - "‏A، ذیل میں ڈاٹ" - "‏A، اوپر ہوک" - "‏A، سرکمفلیکس اور اکیوٹ" - "‏A، سرکمفلیکس اور گریو" - "‏A، سرکمفلیکس اور اوپر ہوک" - "‏A، سرکمفلیکس اور ٹلڈا" - "‏A، سرکمفلیکس اور ذیل میں ڈاٹ" - "‏A، بریو اور اکیوٹ" - "‏A، بریو اور گریو" - "‏A، بریو اور اوپر ہوک" - "‏A، بریو اور ٹلڈا" - "‏A، بریو اور ذیل میں ڈاٹ" - "‏E، ذیل میں ڈاٹ" - "‏E، اوپر ہوک" - "‏E، ٹلڈا" - "‏E، سرکمفلیکس اور اکیوٹ" - "‏E، سرکمفلیکس اور گریو" - "‏E، سرکمفلیکس اور اوپر ہوک" - "‏E، سرکمفلیکس اور ٹلڈا" - "‏E، سرکمفلیکس اور ذیل میں ڈاٹ" - "‏I، اوپر ہوک" - "‏I، ذیل میں ڈاٹ" - "‏O، ذیل میں ڈاٹ" - "‏O، اوپر ہوک" - "‏O، سرکمفلیکس اور اکیوٹ" - "‏O، سرکمفلیکس اور گریو" - "‏O، سرکمفلیکس اور اوپر ہوک" - "‏O، سرکمفلیکس اور ٹلڈا" - "‏O، سرکمفلیکس اور ذیل میں ڈاٹ" - "‏O، ہورن اور اکیوٹ" - "‏O، ہورن اور گریو" - "‏O، ہورن اور اوپر ہوک" - "‏O، ہورن اور ٹلڈا" - "‏O، ہورن اور ذیل میں ڈاٹ" - "‏U، ذیل میں ڈاٹ" - "‏U، اوپر ہوک" - "‏U، ہورن اور اکیوٹ" - "‏U، ہورن اور گریو" - "‏U، اوپر ہورن اور ہوک" - "‏U، ہورن اور ٹلڈا" - "‏U، ہورن اور ذیل میں ڈاٹ" - "‏Y، گریو" - "‏Y، ذیل میں ڈاٹ" - "‏Y، اوپر ہوک" - "‏Y، ٹلڈا" - "الٹی علامت استعجاب" - "بائیں طرف اشارہ کرنے والا دو زاویہ علامت قوسین" - "درمیانی ڈاٹ" - "سپر اسکرپٹ ایک" - "دائیں طرف اشارہ کرنے والا دو زاویہ علامت اقتباس" - "الٹا سوالیہ نشان" - "بائیں طرف والی ایک علامت اقتباس" - "دائیں طرف والی ایک علامت اقتباس" - "واحد ذیلی 9 علامت اقتباس" - "بائیں طرف والی دہری علامت اقتباس" - "دائیں دہری علامت اقتباس" - "ڈیگر" - "ڈبل ڈیگر" - "فی ملی علامت" - "پرائم" - "ڈبل پرائم" - "بائیں طرف اشارہ کرنے والا ایک زاویہ علامت اقتباس" - "دائیں طرف اشارہ کرنے والا ایک زاویہ علامت اقتباس" - "سپر اسکرپٹ چار" - "‏سپر اسکرپٹ لاطینی چھوٹا حرف n" - "پیسو علامت" - "کیئر آف" - "دائیں طرف کا تیر کا نشان" - "نیچے کی طرف کا تیر کا نشان" - "خالی سیٹ" - "اضافہ" - "اس سے کم یا اس کے برابر" - "اس سے بڑا یا اس کے برابر" - "سیاہ ستارہ کا نشان" - diff --git a/app/src/main/res/values-ur/strings-talkback-descriptions.xml b/app/src/main/res/values-ur/strings-talkback-descriptions.xml index 7484540647..0d6e14de3d 100644 --- a/app/src/main/res/values-ur/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-ur/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "پاس ورڈ کلیدوں کی آواز اونچی آواز میں سننے کیلئے ایک ہیڈ سیٹ پلگ ان کریں۔" - "‏موجودہ متن %s ہے" - "کوئی متن درج نہیں کیا گیا" - "%1$s %2$s کو ٹھیک کر کے %3$s کر دیتی ہے" - "%1$s خود کار اصلاح کو انجام دیتی ہے" - "کوئی تجویز نہیں" - "نامعلوم حرف" - "Shift" - "مزید علامات" - "Shift" - "علامات" - "Shift" - "حذف کریں" - "علامات" - "حروف" - "نمبرز" - "ترتیبات" - "Tab" - "اسپیس" - "صوتی ان پٹ" - "Emoji" - "واپس جائیں" - "تلاش کریں" - "ڈاٹ" - "زبان سوئچ کریں" - "اگلا" - "پچھلا" - "‏Shift فعال ہے" - "‏Caps lock فعال ہے" - "علامات وضع" - "مزید علامات کی وض‏ع" - "حروف وضع" - "فون وضع" - "فون علامات کی وضع" - "کی بورڈ مخفی ہے" - "%s کی بورڈ دکھائی دے رہا ہے" - "تاریخ" - "تاریخ اور وقت" - "ای میل" - "پیغام رسانی" - "نمبر" - "فون" - "متن" - "وقت" - "URL" - "حالیہ" - "لوگ" - "اشیاء" - "فطرت" - "مقامات" - "علامات" - "جھنڈے" - "سمائلی اور لوگ" - "جانور اور فطرت" - "غذا اور مشروب" - "سفر اور جگہیں" - "سرگرمی" - "جذباتی اشکال" - "بڑی %s" - "‏بڑی I" - "‏بڑی I، اوپر ڈاٹ" - "نامعلوم علامت" - "‏نامعلوم emoji" - "اکتایا ہوا چہرہ" - "شرمندہ چہرہ" - "دھوپ کا چشمہ پہنا ہوا چہرہ" - "حیران چہرہ" - "چومنے والا چہرہ" - "تیوری چڑھایا ہوا چہرہ" - "متبادل حروف دستیاب ہیں" - "متبادل حروف کو مسترد کر دیا گیا ہے" - "متبادل تجاویز دستیاب ہیں" - "متبادل تجاویز کو مسترد کر دیا گیا ہے" + + + "پاس ورڈ کلیدوں کی آواز اونچی آواز میں سننے کیلئے ایک ہیڈ سیٹ پلگ ان کریں۔" + "‏موجودہ متن %s ہے" + "کوئی متن درج نہیں کیا گیا" + "%1$s %2$s کو ٹھیک کر کے %3$s کر دیتی ہے" + "%1$s خود کار اصلاح کو انجام دیتی ہے" + "کوئی تجویز نہیں" + "نامعلوم حرف" + "Shift" + "مزید علامات" + "Shift" + "علامات" + "Shift" + "حذف کریں" + "علامات" + "حروف" + "نمبرز" + "ترتیبات" + "Tab" + "اسپیس" + "صوتی ان پٹ" + "Emoji" + "واپس جائیں" + "تلاش کریں" + "ڈاٹ" + "زبان سوئچ کریں" + "اگلا" + "پچھلا" + "‏Shift فعال ہے" + "‏Caps lock فعال ہے" + "علامات وضع" + "مزید علامات کی وض‏ع" + "حروف وضع" + "فون وضع" + "فون علامات کی وضع" + "کی بورڈ مخفی ہے" + "%s کی بورڈ دکھائی دے رہا ہے" + "تاریخ" + "تاریخ اور وقت" + "ای میل" + "پیغام رسانی" + "نمبر" + "فون" + "متن" + "وقت" + "URL" + "حالیہ" + "اشیاء" + "علامات" + "جھنڈے" + "سمائلی اور لوگ" + "جانور اور فطرت" + "غذا اور مشروب" + "سفر اور جگہیں" + "سرگرمی" + "جذباتی اشکال" + "بڑی %s" + "‏بڑی I" + "‏بڑی I، اوپر ڈاٹ" + "متبادل حروف دستیاب ہیں" + "متبادل حروف کو مسترد کر دیا گیا ہے" + "متبادل تجاویز دستیاب ہیں" + "متبادل تجاویز کو مسترد کر دیا گیا ہے" diff --git a/app/src/main/res/values-ur/strings.xml b/app/src/main/res/values-ur/strings.xml index ace52d2538..e1542e72d0 100644 --- a/app/src/main/res/values-ur/strings.xml +++ b/app/src/main/res/values-ur/strings.xml @@ -1,193 +1,106 @@ - - - - - "ان پٹ اختیارات" - "رابطوں میں سے نام ڈھونڈیں" - "سپیل چیکر آپ کی رابطہ فہرست سے اندراجات کا استعمال کرتا ہے" - "کلید دبانے پر وائبریٹ کریں" - "کلید دبانے پر آواز" - "کلید دبانے پر پاپ اپ" - "ترجیحات" - "اکاؤنٹس اور رازداری" - "ظہور اور لے آؤٹس" - "اشارہ جاتی ٹائپنگ" - "متن کی اصلاح" - "جدید ترین" - "تھیم" - "الگ ہونے والا کی بورڈ فعال کریں" - "دیگر اندراج طریقوں پر سوئچ کریں" - "زبان سوئچ کرنے کی کلید اندراج کے دیگر طریقوں کا بھی احاطہ کرتی ہے" - "زبان سوئچ کرنے کی کلید" - "متعدد ان پٹ زبانیں فعال ہونے پر دکھائیں" - "کلید پاپ اپ رفع کی تاخیر" - "کوئی تاخیر نہیں" - "ڈیفالٹ" - "%sملی سیکنڈ" - "سسٹم ڈیفالٹ" - "رابطہ ناموں کی تجویز کریں" - "تجاویز اور اصلاحات کیلئے رابطوں سے ناموں کی تجویز کریں" - "ذاتی نوعیت کی تجاویز" - "%s کو بہتر بنائیں" - "ڈبل اسپیس پیریڈ" - "سپیس بار دو بار تھپتھپانے سے سپیس کے بعد پیریڈ داخل ہوجاتا ہے۔" - "بڑے حروف میں خودکار تبدیلی" - "ہر جملے کا پہلا لفظ بڑے حروف میں لکھیں" - "ذاتی لغت" - "اضافی لغات" - "مرکزی لغت" - "اصلاح کی تجاویز دکھائیں" - "ٹائپ کرتے وقت تجویز کردہ الفاظ ڈسپلے کریں" - "ناگوار الفاظ مسدود کریں" - "ممکنہ طور پر ناگوار الفاظ تجویز نہ کریں" - "خود کار اصلاح" - "اسپیس بار اور رموز اوقاف غلط ٹائپ کردہ الفاظ کی اصلاح کرتے ہیں" - "آف" - "معتدل" - "پر جوش" - "بہت پر جوش" - "اگلے الفاظ کی تجاویز" - "تجاویز پیش کرتے وقت گزشتہ لفظ استعمال کریں" - "اشارہ جاتی ٹائپنگ کو فعال کریں" - "حروف پر سلائیڈ کر کے ایک لفظ درج کریں" - "اشارہ ٹریل دکھائیں" - "ڈائنیمک فلوٹنگ پیش منظر" - "اشارہ کرتے ہوئے تجویز کردہ لفظ دیکھیں" - "جملہ کا اشارہ" - "اسپیس کلید کو گلائیڈ کر کے اشاروں کے درمیان خالی جگہیں درج کریں" - "صوتی ان پٹ کلید" - "کوئی صوتی اندراج کے طریقے فعال نہیں ہیں۔ زبانوں اور ان پٹ ترتیبات کو چیک کریں۔" - "اندراج کے طریقے کنفیگر کریں" - "زبانیں" - "مدد اور تاثرات" - "زبانیں" - "محفوظ کرنے کیلئے دوبارہ تھپتھپائیں" - "محفوظ کرنے کیلئے یہاں تھپتھپائیں" - "لغت دستیاب ہے" - "کی بورڈ تھیم" - "اکاؤنٹس سوئچ کریں" - "کوئی اکاؤنٹس منتخب نہیں کیے گئے" - "فی الحال %1$s استعمال کیا جا رہا ہے" - "ٹھیک ہے" - "منسوخ کریں" - "سائن آؤٹ کریں" - "استعمال کرنے کیلئے ایک اکاؤنٹ منتخب کریں" - "انگریزی (برطانیہ)" - "انگریزی (امریکہ)" - "ہسپانوی (امریکہ)" - "ہنگلش" - "سربیائی (لاطینی)" - "انگریزی (برطانیہ) (%s)" - "انگریزی (امریکہ) (%s)" - "ہسپانوی (امریکہ) (%s)" - "ہنگلش (%s)" - "سربیائی (%s)" - "%s (روایتی)" - "%s (کمپیکٹ)" - "کوئی زبان نہیں (الفابیٹ)" - "‏حروف تہجی (QWERTY)" - "‏حروف تہجی (QWERTZ)" - "‏حروف تہجی (AZERTY)" - "‏حروف تہجی (Dvorak)" - "‏حروف تہجی (Colemak)" - "‏حروف تہجی (PC)" - "Emoji" - "کی بورڈ تھیم" - "حسب ضرورت ان پٹ اسٹائلز" - "اسٹائل شامل کریں" - "شامل کریں" - "ہٹائیں" - "محفوظ کریں" - "زبان" - "لے آؤٹ" - "آپ کیلئے اپنا حسب ضرورت ان پٹ اسٹائل استعمال کرنے سے پہلے اسے فعال کرنا ضروری ہے۔ کیا آپ اسے ابھی فعال کرنا چاہتے ہیں؟" - "فعال کریں" - "ابھی نہیں" - "ایسا ہی ان پٹ اسٹائل پہلے سے موجود ہے: %s" - "کلید دبانے پر وائبریشن کا دورانیہ" - "کلید دبانے پر آواز کا والیوم" - "کلید کو دیر تک دبانے کی تاخیر" - "‏فزیکل کی بورڈ کیلئے Emoji" - "‏فزیکل Alt کی کے ذریعے emoji پیلٹ نظر آتا ہے" - "ڈیفالٹ" - "%s میں خوش آمدید" - "اشارہ ٹائپنگ کے ساتھ" - "شروع کریں" - "اگلا مرحلہ" - "%s ترتیب دینا" - "%s کو فعال کریں" - "براہ کرم \"%s\" کو اپنی زبانوں اور ان پٹ ترتیبات میں چیک کریں۔ اس سے اس کو آپ کے آلہ پر چلنے کی اجازت مل جائے گی۔" - "‏%s پہلے ہی آپ کی زبانوں ‎اور‎ ان پٹ ترتیبات میں فعال ہے، لہذا یہ مرحلہ مکمل ہو گیا ہے۔ اگلے پر چلتے ہیں!" - "ترتیبات میں فعال کریں" - "%s پر سوئچ کریں" - "آگے، \"%s\" کو اپنے فعال متنی اندراج کے طریقہ کے بطور منتخب کریں۔" - "اندراج کے طریقے سوئچ کریں" - "مبارک ہو، آپ بالکل تیار ہیں!" - "اب آپ %s کے ساتھ اپنی سبھی پسندیدہ ایپس میں ٹائپ کر سکتے ہیں۔" - "اضافی زبانیں کنفیگر کریں" - "مکمل ہو گیا" - "ایپ آئیکن دکھائیں" - "لانچر میں ایپلیکیشن آئیکن کو ڈسپلے کریں" - "لغت فراہم کنندہ" - "لغت فراہم کنندہ" - "لغت سروس" - "لغت اپ ڈیٹ کی معلومات" - "اضافی لغات" - "لغات کیلئے ترتیبات" - "صارف لغات" - "صارف کی لغت" - "لغت دستیاب ہے" - "فی الحال ڈاؤن لوڈ ہو رہی ہے" - "انسٹال کردہ" - "انسٹال کردہ، غیر فعال" - "لغت سروس سے مربوط ہونے میں مسئلہ" - "کوئی لغت دستیاب نہیں" - "ریفریش کریں" - "آخری بار اپ ڈیٹ کردہ" - "اپ ڈیٹس چیک کر رہے ہیں" - "لوڈ ہو رہی ہے…" - "مرکزی لغت" - "منسوخ کریں" - "ترتیبات" - "انسٹال کریں" - "منسوخ کریں" - "حذف کریں" - "ورژن %1$s" - "شامل کریں" - "لغت میں شامل کریں" - "جملہ" - "مزید اختیارات" - "کم اختیارات" - "ٹھیک ہے" - "لفظ:" - "شارٹ کٹ:" - "زبان:" - "ایک لفظ ٹائپ کریں" - "اختیاری شارٹ کٹ" - "لفظ میں ترمیم کریں" - "ترمیم کریں" - "حذف کریں" - "صارف لغت میں آپ کے پاس کوئی الفاظ نہيں ہیں۔ کوئی لفظ شامل کرنے کیلئے شامل کریں (+) بٹن تھپتھپائیں۔" - "سبھی زبانوں کیلئے" - "مزید زبانیں…" - "حذف کریں" - " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + + "رابطوں میں سے نام ڈھونڈیں" + "کلید دبانے پر وائبریٹ کریں" + "کلید دبانے پر آواز" + "کلید دبانے پر پاپ اپ" + "ترجیحات" + "اشارہ جاتی ٹائپنگ" + "متن کی اصلاح" + "جدید ترین" + "تھیم" + "الگ ہونے والا کی بورڈ فعال کریں" + "دیگر اندراج طریقوں پر سوئچ کریں" + "زبان سوئچ کرنے کی کلید" + "%sملی سیکنڈ" + "سسٹم ڈیفالٹ" + "تجاویز اور اصلاحات کیلئے رابطوں سے ناموں کی تجویز کریں" + "ذاتی نوعیت کی تجاویز" + "ڈبل اسپیس پیریڈ" + "سپیس بار دو بار تھپتھپانے سے سپیس کے بعد پیریڈ داخل ہوجاتا ہے۔" + "بڑے حروف میں خودکار تبدیلی" + "ہر جملے کا پہلا لفظ بڑے حروف میں لکھیں" + "ذاتی لغت" + "مرکزی لغت" + "اصلاح کی تجاویز دکھائیں" + "ٹائپ کرتے وقت تجویز کردہ الفاظ ڈسپلے کریں" + "ناگوار الفاظ مسدود کریں" + "ممکنہ طور پر ناگوار الفاظ تجویز نہ کریں" + "خود کار اصلاح" + "اسپیس بار اور رموز اوقاف غلط ٹائپ کردہ الفاظ کی اصلاح کرتے ہیں" + "آف" + "معتدل" + "پر جوش" + "بہت پر جوش" + "اگلے الفاظ کی تجاویز" + "تجاویز پیش کرتے وقت گزشتہ لفظ استعمال کریں" + "اشارہ جاتی ٹائپنگ کو فعال کریں" + "حروف پر سلائیڈ کر کے ایک لفظ درج کریں" + "اشارہ ٹریل دکھائیں" + "ڈائنیمک فلوٹنگ پیش منظر" + "جملہ کا اشارہ" + "اسپیس کلید کو گلائیڈ کر کے اشاروں کے درمیان خالی جگہیں درج کریں" + "انگریزی (برطانیہ)" + "انگریزی (امریکہ)" + "ہسپانوی (امریکہ)" + "ہنگلش" + "سربیائی (لاطینی)" + "%s (روایتی)" + "%s (کمپیکٹ)" + "کوئی زبان نہیں" + "Emoji" + "شامل کریں" + "ہٹائیں" + "محفوظ کریں" + "زبان" + "لے آؤٹ" + "کلید دبانے پر وائبریشن کا دورانیہ" + "کلید دبانے پر آواز کا والیوم" + "کلید کو دیر تک دبانے کی تاخیر" + "‏فزیکل کی بورڈ کیلئے Emoji" + "‏فزیکل Alt کی کے ذریعے emoji پیلٹ نظر آتا ہے" + "ڈیفالٹ" + %s میں خوش آمدید\" + "اشارہ ٹائپنگ کے ساتھ" + "شروع کریں" + %s ترتیب دینا\" + %s کو فعال کریں\" + "براہ کرم \"%s\" کو اپنی زبانوں اور ان پٹ ترتیبات میں چیک کریں۔ اس سے اس کو آپ کے آلہ پر چلنے کی اجازت مل جائے گی۔" + "ترتیبات میں فعال کریں" + %s پر سوئچ کریں\" + "آگے، \"%s\" کو اپنے فعال متنی اندراج کے طریقہ کے بطور منتخب کریں۔" + "اندراج کے طریقے سوئچ کریں" + "مبارک ہو، آپ بالکل تیار ہیں!" + "اب آپ %s کے ساتھ اپنی سبھی پسندیدہ ایپس میں ٹائپ کر سکتے ہیں۔" + "مکمل ہو گیا" + "ایپ آئیکن دکھائیں" + "لانچر میں ایپلیکیشن آئیکن کو ڈسپلے کریں" + "اضافی لغات" + "لغت دستیاب ہے" + "ترتیبات" + "حذف کریں" + "ورژن %1$s" + "شارٹ کٹ:" + "زبان:" + "ایک لفظ ٹائپ کریں" + "اختیاری شارٹ کٹ" + "لفظ میں ترمیم کریں" + "سبھی زبانوں کیلئے" + "مزید زبانیں…" + "ان پٹ کا طریقہ منتخب کریں" + "کالعدم کریں" + "دوبارہ کریں" + "تجاویز کو بہتر بنانے کیلئے اپنی مواصلات اور ٹائپ کردہ ڈیٹا سے سیکھیں" + "جائیں" + "اگلا" + "پيچھے" + "ہوگیا" + "بھیجیں" + "تلاش" + "موقوف" + "انتظار" diff --git a/app/src/main/res/values-uz/strings-action-keys.xml b/app/src/main/res/values-uz/strings-action-keys.xml deleted file mode 100644 index e6cb07cdd8..0000000000 --- a/app/src/main/res/values-uz/strings-action-keys.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - "OK" - "Keyingisi" - "Orqaga" - "Tayyor" - "Yuborish" - "Qidiruv" - "Pauza" - "Kutish" - diff --git a/app/src/main/res/values-uz/strings-config-important-notice.xml b/app/src/main/res/values-uz/strings-config-important-notice.xml deleted file mode 100644 index 3b2716968a..0000000000 --- a/app/src/main/res/values-uz/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - "Qurilma siz ko‘p yozgan ma’lumotlarni eslab qoladi" - diff --git a/app/src/main/res/values-uz/strings-emoji-descriptions.xml b/app/src/main/res/values-uz/strings-emoji-descriptions.xml deleted file mode 100644 index 308b418a9f..0000000000 --- a/app/src/main/res/values-uz/strings-emoji-descriptions.xml +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - - "Mualliflik huquqi belgisi" - "Ro‘yxatga olingan belgisi" - "Qo‘sh undov belgisi" - "Undov va so‘roq belgisi" - "Savdo belgisi" - "Ma’lumot" - "Chapga va o‘ngga qaragan ko‘rsatkichli chiziq" - "Tepaga-pastga qaragan ko‘rsatkichli chiziq" - "Shimoli g‘arbga qaragan ko‘rsatkichli chiziq" - "Shimoli sharqqa qaragan ko‘rsatkichli chiziq" - "Janubi sharqqa qaragan ko‘rsatkichli chiziq" - "Janubi g‘arbga qaragan ko‘rsatkichli chiziq" - "Orqasida ilmog‘i bor chapga qaragan ko‘rsatkichli chiziq" - "Orqasida ilmog‘i bor o‘ngga qaragan ko‘rsatkichli chiziq" - "Qo‘l soati" - "Qumsoat" - - - - - "O‘ngga qaragan qora qo‘sh uchburchak" - "Chapga qarab turgan qora qo‘sh uchburchak" - "Yuqoriga qaragan qora qo‘sh uchburchak" - "Pastga qaragan qora qo‘sh uchburchak" - - - - - - - "Uyg‘otadigan soat" - - - - - "Qum tushayotgan qumsoat" - - - - - - - "Aylana ichida lotincha M harfi" - "Qora kichkina kvadratcha" - "Oq kichik kvadratcha" - "O‘ngga qaragan qora uchburchak" - "Chapga qarab turgan qora uchburchak" - "Oq o‘rtacha kvadrat" - "Qora o‘rtacha kvadrat" - "Oq o‘rtacha kichik kvadratcha" - "Qora o‘rtacha kichik kvadratcha" - "Nur taratayotgan qora quyosh" - "Bulut" - - - - - - - "Qora telefon" - "Ichi belgilangan belgilash katakchasi" - "Soyabon va yomg‘ir tomshilari" - "Issiq ichimlik" - - - "Ko‘rsatkich barmog‘i yuqoriga qarab turgan oq qo‘l" - - - - - - - - - - - - - - - - - - - "Oq kulayotgan yuz" - "Qo‘y" - "Buzoq" - "Egizaklar" - "Qisqichbaqa" - "Arslon" - "Parizod" - "Tarozi" - "Chayon" - "O‘qotar" - "Tog‘ echkisi" - "Qovg‘a" - "Baliq" - "Qora qarg‘a kartasi" - "Qora chillik kartasi" - "Qora tappon kartasi" - "Qora g‘ishtin kartasi" - "Issiq buloq" - "Qora universal qayta ishlash belgisi" - "Nogironlar aravasi belgisi" - - - "Langar" - - - - - - - - - - - - - "Ogohlantiruvchi belgi" - "Yuqori kuchlanish belgisi" - "O‘rtacha oq aylana" - "O‘rtacha qora doira" - - - - - "Futbol to‘pi" - "Beysbol" - "Qorsiz qorbobo" - "Bulut ortida quyosh" - - - "Ilon tashuvchi" - - - - - - - "Kirish mumkin emas" - - - "Cherkov" - - - - - "Favvora" - "Teshikka o‘rnatilgan bayroq" - - - "Yelkanli kema" - - - - - - - "Chodir" - "Yonilg‘i nasosi" - "Qora qaychi" - "Belgilash uchun oq katta belgi" - "Samolyot" - "Konvert" - "Ko‘tarilgan musht" - "Ko‘tarilgan qo‘l" - "V (victory – g‘alaba) harfini ko‘rsatib turgan qo‘l" - - - "Qalam" - "Qora pero" - "Belgilash uchun to‘q belgi" - "To‘q X (ko‘paytiruv) belgisi" - - - - - "Uchqunlar" - "Sakkiz kegayli yulduzcha" - "Sakkiz qirrali qora yulduz" - "Qor parchasi" - "Uchqun" - "Xoch belgisi" - "Qora kvadrat ichida oq xoch belgisi" - "Naqshinkor qora so‘roq belgisi" - "Naqshinkor oq savol belgisi" - "Naqshinkor oq undov belgisi" - "To‘q undov belgisi" - - - "To‘q qora yurak" - "To‘q qo‘shuv belgisi" - "To‘q ayiruv belgisi" - "To‘q bo‘luv belgisi" - "O‘ngga qaragan qora ko‘rsatkichli chiziq" - "Halqa" - "Qo‘sh jingalak halqa" - "Avval o‘ngga, keyin qayrilib yuqoriga qaragan ko‘rsatkichli chiziq" - "Avval o‘ngga, keyin qayrilib pastga qaragan ko‘rsatkichli chiziq" - "Chapga qaragan qora ko‘rsatkichli chiziq" - "Yuqoriga qaragan qora ko‘rsatkichli chiziq" - "Pastga qaragan qora ko‘rsatkichli chiziq" - "Katta qora kvadrat" - "Katta oq kvadrat" - "O‘rtacha oq yulduzcha" - "Juda katta aylana" - "To‘lqinli chiziq" - "Ovoz almashinuvi belgisi" - "Aylana ichida iyeroglif yozuvidagi tabriklash belgisi" - "Aylana ichida ieyroglif yozuvidagi maxfiy belgisi" - "Majong toshidagi qizil ajdar" - "O‘yin kartasidagi qora joker" - "A (II) qon guruhi" - "B (III) qon guruhi" - "O (I) qon guruhi" - "To‘q kvadrat ichida P harfi" - "AB (IV) qon guruhi" - "Kvadrat ichida CL harf birikmasi" - "Kvadrat ichida COOL (ajoyib) yozuvi" - "Kvadrat ichida FREE (bepul) yozuvi" - "Kvadrat ichida ID (identifikator) yozuvi" - "Kvadrat ichida NEW (yangi) yozuvi" - "Kvadrat ichida N G (yaxshi emas) yozuvi" - "Kvadrat ichida OK yozuvi" - "Kvadrat ichida SOS (yordam) yozuvi" - "Kvadrat ichida UP! (tepaga) yozuvi" - "Kvadrat ichida VS (qarshi belgisi) yozuvi" - "Kvadrat ichida katakana yozuvidagi KOKO (bu yerda) belgisi" - "Kvadrat ichida katakana yozuvidagi SA (xizmat) belgisi" - "Kvadrat ichida iyeroglif yozuvidagi “bepul” belgisi" - "Kvadrat ichida iyeroglif yozuvidagi “band qilingan joy” belgisi" - "Kvadrat ichida iyeroglif yozuvidagi “taqiqlangan” belgisi" - "Kvadrat ichida iyeroglif yozuvidagi “bo‘sh” belgisi" - "Kvadrat ichida iyeroglif yozuvidagi “tasdiqlash” belgisi" - "Kvadrat ichida iyeroglif yozuvidagi “to‘la” belgisi" - "Kvadrat ichida egalik qilish iyeroglifi" - "Kvadrat ichida iyeroglif yozuvidagi “har oy” belgisi" - "Kvadrat ichida iyeroglif yozuvidagi “ilova” belgisi" - "Kvadrat ichida iyeroglif yozuvidagi “chegirma” belgisi" - "Kvadrat ichida iyeroglif yozuvidagi “biznesda” belgisi" - "Aylana ichida iyeroglif yozuvidagi “afzallik” belgisi" - "Aylana ichida iyeroglif yozuvidagi “qabul qilish” belgisi" - "To‘fon" - "Tumanli" - "Yopiq soyabon" - "Yulduzli tun" - "Tog‘lar ortidan quyosh chiqishi" - "Quyosh chiqishi" - "Qosh qoraygandagi shahar manzarasi" - "Binolar ortiga quyoshning botishi" - "Kamalak" - "Tundagi ko‘prik" - "Suv to‘lqini" - "Vulqon" - "Somon yo‘li" - "Globusda Yevropa va Afrika" - "Amerika tasvirlangan globus" - "Globusda Osiyo va Avstraliya" - "Meridian chiziqli globus" - "Yangi oy ramzi" - "Kattalashib boruvchi yarim oy ramzi" - "Birinchi chorakdagi oy ramzi" - "Kattalashib borayotgan qavariq oy ramzi" - "To‘lin oy ramzi" - "Kichiklashib borayotgan qavariq oy" - "So‘nggi chorakdagi oy ramzi" - "Kichiklashib borayotgan yarim oy ramzi" - "Oy" - "Ichida yuz tasvirlangan yangi oy" - "Ichida yuz tasvirlangan birinchi chorakdagi oy" - "Ichida yuz tasvirlangan so‘nggi chorakdagi oy" - "Ichida yuz tasvirlangan to‘lin oy" - "Ichida yuz tasvirlangan quyosh" - "Porlayotgan yulduz" - "Uchayotgan yulduz" - - - - - - - - - - - - - - - - - - - - - - - - - - - "Kashtan yong‘og‘i" - "Nihol" - "Archa" - "Bargli daraxt" - "Palma daraxti" - "Kaktus" - - - "Lola" - "Gilos guli" - "Atirgul" - "Xitoy atirguli" - "Kungaboqar" - "Gul" - "Makkajo‘xori dumbuli" - "Sholi boshog‘i" - "O‘simlik" - "To‘rt yaproqli beda bargi" - "Zarang bargi" - "Xazon bargi" - "Shamolda uchayotgan barg" - "Qo‘ziqorin" - "Pomidor" - "Baqlajon" - "Uzum" - "Qovun" - "Tarvuz" - "Mandarin" - "Limon" - "Banan" - "Ananas" - "Qizil olma" - "Ko‘k olma" - "Nok" - "Shaftoli" - "Giloslar" - "Qulupnay" - "Gamburger" - "Pitsa bo‘lagi" - "Suyakdagi go‘sht" - "Parranda oyog‘i" - "Guruchli pishiriq" - "Yumaloqlangan guruch" - "Pishirilgan guruch" - "Guruchli karri" - "Issiq lag‘mon" - "Spagetti" - "Non" - "Qovurilgan fri-kartoshka" - "Jigarli batat" - "Dango" - "Sixdagi dengiz taomi" - "Sushi" - "Qovurilgan qisqichbaqa" - "Girdob ko‘rinishidagi baliqli tort" - "Yumshoq muzqaymoq" - "Qirilgan muz" - "Muzqaymoq" - "Yog‘da ko‘pchib pishgan kulcha" - "Pishiriq" - "Shokolad bo‘lagi" - "Konfet" - "Obakidandon" - "Tuxum va sutdan qilingan krem" - "Asalli xum" - "To‘rt bo‘lagi" - "Xonachali taom qutisi" - "Bir qozon ovqat" - "Taom tayyorlash" - "Sanchqi va pichoq" - "Tutqichsiz piyola" - "Ko‘za va piyola" - "Bir stakan vino" - "Jomdagi kokteyl" - "Tropik ichimlik" - "Pivo qadahi" - "Pivo stakanlarini bir-biriga urishtirish" - "Chaqoloqlar suv idishi" - - - - - - - "Lenta" - "O‘ralgan sovg‘a" - "Tug‘ilgan kun torti" - "Shamchiroqli oshqovoq" - "Rojdestvo archasi" - "Santa-Klaus" - "Mushakbozlik" - "Bengal olovi" - "Havo shari" - "Poqildoq" - "Konfetti" - "Tanabata daraxti" - "Bir-birini kesib o‘tgan bayroqlar" - "Qarag‘ay bezagi" - "Yapon qo‘g‘irchoqlari" - "Zog‘orabaliq shaklida vimpel" - "Shamol qo‘ng‘irog‘i" - "Oy ko‘rish marosimi" - "Maktab xaltasi" - "Akademik bosh kiyim" - - - - - - - - - - - - - - - "Ot o‘yini" - "Charxpalak" - "G‘ildiratma hayinchak" - "Qarmoq va baliq" - "Mikrofon" - "Kinokamera" - "Kinoteatr" - "Quloqchin" - "Palitra" - "Silindr shlyapa" - "Sirk chodiri" - "Chipta" - "Poqildoqli numerator" - "Teatr niqoblari" - "Video o‘yin" - "Mo‘ljalni urish" - "O‘yin avtomati" - "Billiard" - "Shoshqol toshi" - "Bouling" - "Gulli o‘yin kartalari" - "Musiqiy nota" - "Bir nechta musiqiy nota" - "Saksofon" - "Gitara" - "Musiqiy klaviatura" - "Truba (karnaysimon musiqa asbobi)" - "Skripka" - "Musiqa kaliti" - "Yuguruvchining maykasi" - "Tennis raketkasi va koptokchasi" - "Chang‘i va chang‘i oyoq kiyimi" - "Basketbol to‘pi va halqa" - "Katak-katak bayroq" - "Snoubordchi" - "Yuguruvchi" - "Serfingchi" - - - "Kubok" - "Otchopar" - "Amerikancha futbol" - "Regbi" - "Suzuvchi" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Uy" - "Bog‘li uy" - "Ofis binosi" - "Yapon pochtamti" - "Yevropa pochtamti" - "Shifoxona" - "Bank" - "Bankomat" - "Mehmonxona" - "Sevgi mehmonxonasi" - "Navbatchi do‘kon" - "Maktab" - "Univermag" - "Zavod" - "Izakaya fonusi" - "Yapon qasri" - "Yevropa qasri" - - - - - - - - - - - - - - - - - - - - - - - - - "Kalamush" - "Sichqon" - "Buqa" - "Buyvol" - "Sigir" - - - "Leopard" - "Quyon" - "Mushuk" - "Ajdar" - "Timsoh" - "Kit" - "Shilliq qurt" - "Ilon" - "Ot" - "Qo‘chqor" - "Echki" - "Qo‘y" - "Maymun" - "Xo‘roz" - "Jo‘ja" - "It" - "Cho‘chqa" - "Erkak cho‘chqa" - "Fil" - "Sakkizoyoq" - "Chig‘anoq" - "Taxtakana" - "Chumoli" - "Asalari" - "Urg‘ochi qo‘ng‘iz" - "Baliq" - "Tropik baliq" - "Qorni katta baliq" - "Toshbaqa" - "Tuxumdan chiqayotgan jo‘ja" - "Jo‘ja" - "Oldiga qarab turgan jo‘ja" - "Qush" - "Pingvin" - "Koala" - "Pudel" - "Bir o‘rkachli tuya" - "Ikki o‘rkachli tuya" - "Delfin" - "Sichqon yuzi" - "Sigirning boshi" - "Yo‘lbars yuzi" - "Quyon yuzi" - "Mushukning boshi" - "Ajdar yuzi" - "Favvora hosil qilayotgan kit" - "Ot yuzi" - "Maymun yuzi" - "Itning boshi" - "Cho‘chqa yuzi" - "Qurbaqa yuzi" - "Og‘maxonning boshi" - "Bo‘ri yuzi" - "Ayiq yuzi" - "Panda yuzi" - "Cho‘chqa burni" - "Panja izlari" - - - "Ko‘zlar" - - - "Quloq" - "Burun" - "Og‘iz" - "Til" - "Ko‘rsatkich barmog‘i orqa tomoni bilan yuqoriga qarab turgan oq qo‘l" - "Ko‘rsatkich barmog‘i orqa tomoni bilan pastga qarab turgan oq qo‘l" - "Ko‘rsatkich barmog‘i orqa tomoni bilan chapgaga qarab turgan oq qo‘l" - "Ko‘rsatkich barmog‘i orqa tomoni bilan o‘ngga qarab turgan oq qo‘l" - "Musht belgisi" - "Shapaloq belgisi" - "Qo‘lda qilingan OK belgisi" - "Bosh barmoq tepaga qaragan belgi" - "Bosh barmoq pastga qaragan belgi" - "Qarsaklar" - "Ochiq qo‘llar belgisi" - "Toj" - "Ayollar shlyapasi" - "Ko‘zoynak" - "Bo‘yinbog‘" - "Futbolka" - "Jinsi" - "Libos" - "Kimono" - "Bikini" - "Ayollar kiyimlari" - "Hamyon" - "Ayollar qo‘l sumkasi" - "Kichik sumka" - "Erkaklar tuflisi" - "Krossovka" - "Baland poshnali tufli" - "Ayollar shippagi" - "Ayollar etigi" - "Oyoq izlari" - "Bosh va yelkaning kontur chizig‘i" - "Kontur suratli byustlar" - "O‘g‘il bola" - "Qiz bola" - "Erkak" - "Ayol" - "Oila" - "Qo‘l ushlashib turgan erkak va ayol" - "Qo‘l ushlashib turgan ikki erkak" - "Qo‘l ushlashib turgan ikki ayol" - "Politsiya xodimi" - "Quyon quloqli ayol" - "To‘y romolidagi kelin" - "Malla soch odam" - "An’anaviy xitoy bosh kiyimidagi erkak" - "Salla kiygan erkak" - "Qarir erkak" - "Qari ayol" - "Chaqaloq" - "Quruvchi" - "Malika" - "Yapon odamxo‘ri" - "Yapon ajinasi" - "Arvoh" - "Chaqaloq farishta" - "O‘zga sayyoralik" - "O‘zga sayyoralik maxluq" - "Shayton" - "Bosh suyagi" - "Ma’lumotxona xodimi" - "Qo‘riqchi" - "Raqqos" - "Lab bo‘yog‘i" - "Tirnoq uchun lok" - "Yuzni uqalash" - "Soch qisqartirish" - "Sartaroshlar ustuni" - "Doripurkagich (shprits)" - "Hapdori" - "Bo‘sa belgisi" - "Sevgi maktubi" - "Uzuk" - "Qimmatbaho tosh" - "Bo‘sa olish" - "Guldasta" - "Juftlik va yurak" - "Nikoh to‘yi" - "Urayotgan yurak" - "Singan yurak" - "Ikkita yurak" - "Chaqnayotgan yurak" - "Kattalashayotgan yurak" - "Yurak va kamon o‘qi" - "Havorang yurak" - "Yashil yurak" - "Sariq yurak" - "Binafsharang yurak" - "Yurak va lenta" - "Aylnayaotgan yuraklar" - "Yurak bezagi" - "Markazida nuqtasi bor romb" - "Porlab turgan elektr lampa" - "Jahl belgisi" - "Bomba" - "Uyquga oid" - "To‘qnashuv belgisi" - "Dona-dona ter" - "Tomchi" - "Zo‘r berish belgisi" - "Tezak uyumi" - "Baquvvat muskullar" - "Bosh aylanish" - "Nutq buluti" - "O‘y-xayol buluti" - "Oq gul" - "100 ball belgisi" - "Pul xalta" - "Valyuta ayirboshlash" - "Og‘ir dollar belgisi" - "Kredit karta" - "Iyena belgili banknota" - "Dollar belgili banknota" - "Yevro belgili banknota" - "Funt-sterling belgili banknota" - "Qanoti bor pul dastasi" - "O‘suvchi trend chizmasi va iyena belgisi" - "O‘rindiq" - "Shaxsiy kompyuter" - "Portfel" - "Mini-disk" - "Disketa" - "Optik disk" - "DVD" - "Fayl jildi" - "Ochiq fayl jildi" - "Gajakli sahifa" - "Oldiga qarab turgan sahifa" - "Taqvim" - "Yirtiladigan taqvim" - "Kartoteka" - "O‘suvchi trend chizmasi" - "Kamayib boruvchi grafik" - "Ustunli grafik" - "Jild-planshet" - "Kanselyariya bosma mixi" - "Yumaloq bosma mix" - "Qistirgich" - "Chizg‘ich" - "Uchburchak chizg‘ich" - "Xatcho‘p oynalari" - "Ro‘yxatga olish kitobi" - "Daftar" - "Bezakli muqovali daftar" - "Yopiq kitob" - "Ochiq kitob" - "Yashil kitob" - "Havorang kitob" - "To‘q sariq kitob" - "Kitoblar" - "Ism yoziladigan nishon" - "O‘ralgan xat" - "Qayd" - "Telefon go‘shagi" - "Peyjer" - "Faks apparati" - "Sputnikli antenna" - "E’lon qiluvchi karnay" - "Ovozni kuchaytiruvchi karnay" - "Chiquvchi xat qutisi" - "Kiruvchi xat qutisi" - "O‘ralgan sovg‘a" - "Email belgisi" - "Kiruvchi konvert" - "Tepasida pastga qaragan ko‘rsatkichli chizig‘i bor konvert" - "Pastga qaragan bayroqli yopiq pochta qutisi" - "Bayroqchasi ko‘tarilgan yopiq pochta qutisi" - "Yuqoriga ko‘tarilgan bayroqli ochiq pochta qutisi" - "Pastga qaragan bayroqli ochiq pochta qutisi" - "Pochta qutisi" - "Shoxsimon nay" - "Gazeta" - "Mobil telefon" - "Mobil telefon va uning chap tomonida unga qarab turgan ko‘rsatkichli chiziq" - "Tebranish rejimi" - "Mobil telefon o‘chirilgan" - "Mobil telefondan foydalanish taqiqlanadi" - "Signal darajasi ko‘rinib turgan antenna belgisi" - "Kamera" - - - "Videokamera" - "Televizor" - "Radio" - "Videokasseta" - - - - - "Qayrilib bir-birini kesib o‘tgan va o‘ngga qaragan ikki ko‘rsatkichli chiziq" - "Soat mili yo‘nalishda o‘ngga va chapga qarab turgan ochiq aylana ko‘rsatkichli chiziqlari" - "Ostida aylana ichida 1 raqami bor hamda soat mili yo‘nalishida o‘ngga va chapga qaragan ochiq aylana chiziqlari" - "Soat mili yo‘nalishda yuqoriga va pastga qarab turgan ochiq aylana ko‘rsatkichli chiziqlari" - "Soat miliga teskari yo‘nalishda pastga va tepaga qaragan ochiq aylana chiziqlari" - "Kam yorqinlik belgisi" - "Yuqori darajadagi yorqinlik belgisi" - "Taqiqlovchi chizig‘i bor karnay" - "Karnay" - "Bitta ovoz to‘lqinli karnay" - "Uchta ovoz to‘lqinli karnay" - "Batareya" - "Elektr kabel sanchqisi" - "Chapga qaragan lupa" - "O‘ngga qaragan lupa" - "Siyoh ruchkali qulf" - "Yopiq qulf va kalit" - "Kalit" - "Qulf" - "Ochiq qulf" - "Qo‘ng‘iroq" - "Taqiqlovchi chizig‘i bor qo‘ng‘iroq" - "Xatcho‘p" - "Link belgisi" - "Radio tugma" - "Tepasida chapga qaragan ko‘rsatkichli chizig‘i bor BACK (orqaga) yozuvi" - "Tepasida chapga qaragan ko‘rsatkichli chizig‘i bor END (oxiri) yozuvi" - "Tepasida chapga va o‘ngga qaragan ko‘rsatkichli chizig‘i bor ON! yozuvi" - "Tepasida o‘ngga qaragan ko‘rsatkichli chizig‘i bor SOON (tez kunda) yozuvi" - "Tepasida yuqoriga qaraganda ko‘rsatkichli chizig‘i bor TOP (yuqoriga) yozuvi" - "18 yoshga to‘lmaganlar uchun taqiqlanadi belgisi" - "Ustiga 10 soni yozilgan tugma" - "Lotincha bosh harflar uchun matn kiritish belgisi" - "Lotincha kichik harflar uchun matn kiritish belgisi" - "Raqamlar uchun matn kiritish belgisi" - "Belgilar uchun matn kiritish belgisi" - "Lotincha harflar uchun matn kiritish belgisi" - "Olov" - "Elektr fonar" - "Gayka kaliti" - "Bolg‘a" - "Gayka va murvat" - "Xanjar" - "To‘pponcha" - "Mikroskop" - "Teleskop" - "Kristall donasi" - "O‘rtasida nuqtasi bor olti qirrali yulduz" - "Boshlovchi darajasini bildiruvchi yaponcha belgi" - "Uch ayrili nayza" - "Qora kvadratli tugma" - "Oq kvadrat tugma" - "Katta qizil doira" - "Katta havorang doira" - "Katta to‘q sariq romb" - "Katta havorang romb" - "Kichkina to‘q sariq romb" - "Kichkina havorang romb" - "Yuqoriga qarab turgan qizil uchburchak" - "Pastga qarab turgan qizil uchburchak" - "Yuqoriga qarab turgan kichik qizil uchburchak" - "Pastga qarab turgan kichik qizil uchburchak" - - - - - - - - - - - - - "Birni ko‘rsatib turgan soat" - "Ikkini ko‘rsatib turgan soat" - "Uchni ko‘rsatib turgan soat" - "To‘rtni ko‘rsatib turgan soat" - "Beshni ko‘rsatib turgan soat" - "Oltini ko‘rsatib turgan soat" - "Yettini ko‘rsatib turgan soat" - "Sakkizni ko‘rsatib turgan soat" - "To‘qqizni ko‘rsatib turgan soat" - "O‘nni ko‘rsatib turgan soat" - "O‘n birni ko‘rsatib turgan soat" - "O‘n ikkini ko‘rsatib turgan soat" - "Biru-o‘ttizni ko‘rsatib turgan soat" - "Ikkiyu-o‘ttizni ko‘rsatib turgan soat" - "Uchu-o‘ttizni ko‘rsatib turgan soat" - "To‘rtu-o‘ttizni ko‘rsatib turgan soat" - "Beshu-o‘ttizni ko‘rsatib turgan soat" - "Oltiyu-o‘ttizni ko‘rsatib turgan soat" - "Yettiyu-o‘ttizni ko‘rsatib turgan soat" - "Sakkizu-o‘ttizni ko‘rsatib turgan soat" - "To‘qqizu-o‘ttizni ko‘rsatib turgan soat" - "O‘nu-o‘ttizni ko‘rsatib turgan soat" - "O‘n biru-o‘ttizni ko‘rsatib turgan soat" - "O‘n ikkiyu-o‘ttizni ko‘rsatib turgan soat" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Fuji cho‘qqisi" - "Tokio teleminorasi" - "Ozodlik haykali" - "Yaponiyaning xaritadagi ko‘rinishi" - "Moyai haykali" - "Tirjaygan yuz" - "Katta tabassum, ko‘zlar qisilgan" - "Quvonch ko‘z yoshlari" - "Og‘zini katta ochib kulayotgan yuz" - "Tabassum, og‘iz ochiq, ko‘zlar qisilgan" - "Og‘zini katta ochib kulayotgan yuz va bir tomchi ko‘z yoshi" - "Og‘zini katta ochib kulayotgan yuz va qattiq yumilgan ko‘zlar" - "Tabassum, bosh ustida gardish" - "Kulayotgan shayton" - "Ko‘z qisish" - "Tabassum va kulib turgan ko‘zlar" - "Mazali taomni tatib ko‘rgan til" - "Xotirjam yuz" - "Tabassum va yurak shaklidagi ko‘zlar" - "Ko‘zoynak taqqan hamda kulayotgan yuz" - "Ahmoqona iljayish" - "His-tuyg‘usiz" - "His-tuyg‘usiz yuz" - "Kulmayotgan yuz" - "Ko‘z yoshi oqayotgan yuz" - "G‘amgin yuz" - "Xijolat bo‘lish" - "Xijolatli yuz" - "Bo‘sa olayotgan yuz" - "Bo‘sa yuborayotgan yuz" - "Bo‘sa olayotgan yuz va kulayotgan ko‘zlar" - "Bo‘sa olayotgan yuz va yumilgan ko‘zlar" - "Tilni chiqarish" - "Tili osilgan va ko‘zi qisilgan" - "Tili osilgan va ko‘zlari qattiq yumilgan" - "Hafsalasi pir bo‘lgan yuz" - "Havotir olayotgan yuz" - "Jahli chiqqan yuz" - "Arazlagan yuz" - "Yig‘layotgan yuz" - "Matonatli yuz" - "Shod-xurramlik" - "Hafsalasi pir bo‘lgan, biroq xotirjam yuz" - "Og‘zini katta ochib xo‘mraygan yuz" - "G‘am-tashvishli yuz" - "Qo‘rqqan yuz" - "Xorg‘in yuz" - "Uyqusiragan yuz" - "Charchagan yuz" - "Afti burishgan yuz" - "Xo‘ngrab yig‘lash" - "Og‘zi katta ochiq yuz" - "Sukut saqlash" - "Og‘zi katta ochiq va yig‘layotgan yuz" - "Qo‘rquvdan qichqirish" - "Hayratlanayotgan yuz" - "Yuzi qizargan" - "Uxlayotgan yuz" - "Boshi aylanayotgan yuz" - "Og‘zi yo‘q yuz" - "Tibbiy niqob taqqan yuz" - "Ko‘zlarini qisgan holda kulayotgan mushuk" - "Quvonch ko‘z yoshlariga ega mushukbashara yuz" - "Og‘zi ochiq holatda kulayotgan mushuk" - "Yurak shaklidagi ko‘zlarga ega kulib turgan mushukbashara yuz" - "Tirjayib turgan mushuk" - "Ko‘zlari yopiq holda bo‘sa olayotgan mushukbashara yuz" - "Badjahl mushuk" - "Yig‘layotgan mushukbashara yuz" - "Charchagan mushuk" - - - - - - - - - "Hech narsa ishorasini ko‘rsatib turgan yuz" - "OK ishorasini ko‘rsatib turgan yuz" - "Chuqur ta’zim qilayotgan odam" - "Ko‘zlari yumilgan maymun" - "Yomonlikni eshitmaydigan maymun" - "Yomonlikni gapirmaydigan maymun" - "Bir qo‘lini ko‘tarib turgan xursand odam" - "Ikki qo‘lini ko‘tarib nishonlayotgan odam" - "Xo‘mraygan odam" - "Jahli chiqqan odam" - "Qo‘llari ko‘ksiga zanjir qilingan odam" - "Raketa" - "Vertolyot" - "Parovoz" - "Temiryo‘l vagoni" - "Tezyurar poyezd" - "Oldi uchli tezyurar poyezd" - "Poyezd" - "Metro" - "Tor izli temiryo‘l" - "Bekat" - "Tramvay" - "Tramvay" - "Avtobus" - "Yaqinlashayotgan avtobus" - "Trolleybus" - "Avtobus bekati" - "Minibus" - "Tez tibbiy yordam mashinasi" - "O‘t o‘chirish mashinasi" - "Politsiya mashinasi" - "Yaqinlashayotgan politsiya mashinasi" - "Taksi" - "Yaqinlashayotgan taksi" - "Avtomobil" - "Yaqinlashayotgan avtomobil" - "Xordiq chiqarish avtomobili" - "Buyurtmani yetkazib beruvchi yuk mashinasi" - "Tirkamali yuk mashinasi" - "Traktor" - "Bir izli temiryo‘l" - "Tog‘ temiryo‘li" - "Vaqtinchalik to‘xtatilgan temiryo‘l" - "Tog‘ dor yo‘li" - "Havo tramvayi" - "Kema" - "Eshkakli qayiq" - "Tezyurar kater" - "Yotiq holatdagi svetofor" - "Tik holatdagi svetofor" - "Qurilish belgisi" - "Plotsiya mashinasi mayog‘i" - "Tayoqqa o‘rnatilgan uchburchak bayroq" - "Eshik" - "Kirish mumkin emas belgisi" - "Chekish mumkin belgisi" - "Chekish mumkin emas belgisi" - "Axlatni o‘z joyiga tashlang belgisi" - "Axlat tashlamang belgisi" - "Ichimlik suvi belgisi" - "Ichib bo‘lmaydigan suv belgisi" - "Velosiped" - "Velosipedlar mumkin emas" - "Velosipedchi" - "Tog‘ velosipedchisi" - "Piyoda" - "Piyodalar mumkin emas" - "Bolalar o‘tish joyi" - "Erkaklar uchun belgisi" - "Ayollar hojatxonasi" - "Pardoz-andoz xonasi" - "Chaqaloq belgisi" - "Hojatxona" - "Hojatxona" - "Dush" - "Vanna" - "Cho‘milish uchun tos" - "Pasport nazorati" - "Bojxona" - "Yuklarni olish joyi" - "Vaqtinchalik saqlash xonasida qoldirilgan yuk" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-uz/strings-letter-descriptions.xml b/app/src/main/res/values-uz/strings-letter-descriptions.xml deleted file mode 100644 index c20040cccc..0000000000 --- a/app/src/main/res/values-uz/strings-letter-descriptions.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - "Ayol jinsiga oid tartib ko‘rsatkichi" - "Mikro belgisi" - "Erkak jinsiga oid tartib ko‘rsatkichi" - "Esset" - "Gravisli A" - "Akutli A" - "Sirkumfleksli A" - "Tildali A" - "Diyerezisli A" - "Tepasida halqasi bor A" - "A va E ligaturasi" - "Sedilli C" - "Gravisli E" - "Akutli E" - "Sirkumfleksli E" - "Diyerezisli E" - "Gravisli I" - "Akutli I" - "Sirkumfleksli I" - "Diyerezisli I" - "Et" - "Tildali N" - "Gravisli O" - "Akutli O" - "Sirkumfleksli O" - "Tildali O" - "Diyerezisli O" - "Diagonaliga chizilgan O" - "Gravisli U" - "Akutli U" - "Sirkumfleksli U" - "Diyerezisli U" - "Akutli Y" - "Torn" - "Diyerezisli Y" - "Makronli A" - "Brevisli A" - "Dumli A" - "Akutli C" - "Sirkumfleksli C" - "Tepasida nuqtasi bor C" - "Gajakli C" - "Gajakli D" - "O‘rtasi chizilgan D" - "Makronli E" - "Brevisli E" - "Tepasida nuqtasi bor E" - "Dumli E" - "Gajakli E" - "Sirkumfleksli G" - "Brevisli G" - "Tepasida nuqtasi bor G" - "Sedilli G" - "Sirkumfleksli H" - "O‘rtasi chizilgan H" - "Tildali I" - "Makronli I" - "Brevisli I" - "Dumli I" - "Nuqtasiz I" - "I va J ligaturasi" - "Sirkumfleksli J" - "Sedilli K" - "Kra" - "Akutli L" - "Sedilli L" - "Gajakli L" - "O‘rtasida nuqtasi bor L" - "O‘rtasi chizilgan L" - "Akutli N" - "Sedilli N" - "Gajakli N" - "Chap tomonida apostrof bor N" - "Ng" - "Makronli O" - "Brevisli O" - "Qo‘sh akutli O" - "O va E ligaturasi" - "Akutli R" - "Sedilli R" - "Gajakli R" - "Akutli S" - "Sirkumfleksli S" - "Sedilli S" - "Gajakli S" - "Sedilli T" - "Gajakli T" - "O‘rtasi chizilgan T" - "Tildali U" - "Makronli U" - "Brevisli U" - "Tepasida halqasi bor U" - "Qo‘sh akutli U" - "Dumli U" - "Sirkumfleksli W" - "Sirkumfleksli Y" - "Akutli Z" - "Tepasida nuqtasi bor Z" - "Gajakli Z" - "Uzun S" - "Shohli O" - "Shohli U" - "Ostida verguli bor S" - "Ostida verguli bor T" - "Shva" - "Ostida nuqtasi bor A" - "Tepasida ilmog‘i bor A" - "Sirkumfleks va akutli A" - "Sirkumfleks va gravisli A" - "Sirkumfleks va tepasida ilmog‘i bor A" - "Sirkumfleks va tildali A" - "Sirkumfleks va ostida nuqtasi bor A" - "Brevis va akutli A" - "Brevis va gravisli A" - "Brevis va tepasida ilmog‘i bor A" - "Brevis va tildali A" - "Brevis va ostida nuqtasi bor A" - "Ostida nuqtasi bor E" - "Tepasida ilmog‘i bor E" - "Tildali E" - "Sirkumfleks va akutli E" - "Sirkumfleks va gravisli E" - "Sirkumfleks va tepasida ilmog‘i bor E" - "Sirkumfleks va tildali E" - "Sirkumfleks va ostida nuqtasi bor E" - "Tepasida ilmog‘i bor I" - "Ostida nuqtasi bor I" - "Ostida nuqtasi bor O" - "Tepasida ilmog‘i bor O" - "Sirkumfleks va akutli O" - "Sirkumfleks va gravisli O" - "Sirkumfleks va tepasida ilmog‘i bor O" - "Sirkumfleks va tildali O" - "Sirkumfleks va ostida nuqtasi bor O" - "Shoh va akutli O" - "Shoh va akutli O" - "Shoh va tepasida ilmog‘i bor O" - "Shoh va tildali O" - "Shoh va ostida nuqtasi bor O" - "Ostida nuqtasi bor U" - "Tepasida nuqtasi bor U" - "Shoh va akutli U" - "Shoh va gravisli U" - "Shoh va tepasida ilmog‘i bor U" - "Shoh va tildali U" - "Shoh va ostida nuqtasi bor U" - "Gravisli Y" - "Ostida nuqtasi bor Y" - "Tepasida ilmog‘i bor Y" - "Tildali Y" - "Teskari undov belgisi" - "Chapga qaragan burchakli qo‘shtirnoq belgisi" - "Markazlashgan nuqta" - "Darajada joylashgan bir" - "O‘ngga qaragan burchakli qo‘shtirnoq belgisi" - "Teskari so‘roq belgisi" - "Chap bir tirnoq belgisi" - "O‘ng bir tirnoq belgisi" - "Indeksda joylashgan 9 ko‘rinishidagi bir tirnoq belgisi" - "Chap qo‘shtirnoq belgisi" - "O‘ng qo‘shtirnoq belgisi" - "Xoch belgisi" - "Qo‘sh xoch belgisi" - "Promille belgisi" - "Kertma belgisi" - "Qo‘sh kertma belgisi" - "Chapga qaragan burchakli bir tirnoq belgisi" - "O‘ngga qaragan burchakli bir tirnoq belgisi" - "Darajada joylashgan to‘rt" - "Darajada joylashgan lotincha kichik n harfi" - "Peso belgisi" - "c/o belgisi" - "O‘ngga qaragan ko‘rsatkichli chiziqcha" - "Pastga qaragan ko‘rsatkichli chiziqcha" - "Bo‘sh to‘plam" - "Delta belgisi" - "Kichik yoki teng" - "Katta yoki teng" - "Qora yulduzcha" - diff --git a/app/src/main/res/values-uz/strings-talkback-descriptions.xml b/app/src/main/res/values-uz/strings-talkback-descriptions.xml index 97cd50ed07..5d3ce578da 100644 --- a/app/src/main/res/values-uz/strings-talkback-descriptions.xml +++ b/app/src/main/res/values-uz/strings-talkback-descriptions.xml @@ -1,96 +1,69 @@ - - - - "Parolni eshitish uchun quloqchinni tiqing." - "Kiritilgan matn: %s" - "Hech qanday matn kiritilmadi" - "%1$s tugmasi bosilganda “%2$s” so‘zi “%3$s” so‘ziga o‘zgartiriladi" - "%1$s tugmasi avtomatik tuzatishni amalga oshiradi" - "Taklif yo‘q" - "Noma’lum belgi" - "Yuqori registr tugmasi" - "Ko‘proq belgilar" - "Yuqori registr tugmasi" - "Belgilar" - "Yuqori registr tugmasi" - "O‘chirish" - "Belgilar" - "Harflar" - "Raqamlar" - "Sozlamalar" - "Tab tugmasi" - "Probel" - "Ovoz bilan yozish" - "Kulgichlar" - "Kiritish" - "Qidiruv" - "Qora nuqta" - "Tilni almashtirish" - "Keyingisi" - "Orqaga" - "Yuqori registr yoqildi" - "Caps Lock yoqildi" - "Belgilar rejimi" - "Ko‘proq belgilar rejimi" - "Harflar rejimi" - "Telefon rejimi" - "Telefon belgilari rejimi" - "Klaviatura yashirildi." - "%s rejimi yoqildi" - "sana" - "sana va vaqt" - "e-pochta" - "xabar kiritish" - "raqam" - "telefon" - "matn kiritish" - "vaqt" - "URL" - "Oxirgilar" - "Odamlar" - "Narsa-buyumlar" - "Tabiat" - "Joylar" - "Belgilar" - "Bayroqchalar" - "Kulgichlar va odamlar" - "Hayvonot va tabiat" - "Taom va ichimliklar" - "Sayohat va joylar" - "Harakat" - "Kulgichlar" - "Bosh harf bilan yozilgan %s" - "Katta I harfi" - "Tepasida nuqtasi bor katta I harfi" - "Noma’lum belgi" - "Noma’lum kulgich" - "Zerikkan" - "Uyalgan" - "Qora ko‘zoynak taqqan yuz" - "Ajablangan" - "Bo‘sa olayotgan yuz" - "Xo‘mraygan" - "Muqobil belgilar mavjud" - "Muqobil belgilar tushirib qoldirildi" - "Muqobil takliflar mavjud" - "Muqobil takliflar tushirib qoldirildi" + + + "Parolni eshitish uchun quloqchinni tiqing." + "Kiritilgan matn: %s" + "Hech qanday matn kiritilmadi" + "%1$s tugmasi bosilganda “%2$s” so‘zi “%3$s” so‘ziga o‘zgartiriladi" + "%1$s tugmasi avtomatik tuzatishni amalga oshiradi" + "Taklif yo‘q" + "Noma’lum belgi" + "Yuqori registr tugmasi" + "Ko‘proq belgilar" + "Yuqori registr tugmasi" + "Belgilar" + "Yuqori registr tugmasi" + "O‘chirish" + "Belgilar" + "Harflar" + "Raqamlar" + "Sozlamalar" + "Tab tugmasi" + "Probel" + "Ovoz bilan yozish" + "Kulgichlar" + "Kiritish" + "Qidiruv" + "Qora nuqta" + "Tilni almashtirish" + "Keyingisi" + "Orqaga" + "Yuqori registr yoqildi" + "Caps Lock yoqildi" + "Belgilar rejimi" + "Ko‘proq belgilar rejimi" + "Harflar rejimi" + "Telefon rejimi" + "Telefon belgilari rejimi" + "Klaviatura yashirildi." + "%s rejimi yoqildi" + "sana" + "sana va vaqt" + "e-pochta" + "xabar kiritish" + "raqam" + "telefon" + "matn kiritish" + "vaqt" + "URL" + "Oxirgilar" + "Narsa-buyumlar" + "Belgilar" + "Bayroqchalar" + "Kulgichlar va odamlar" + "Hayvonot va tabiat" + "Taom va ichimliklar" + "Sayohat va joylar" + "Harakat" + "Kulgichlar" + "Bosh harf bilan yozilgan %s" + "Katta I harfi" + "Tepasida nuqtasi bor katta I harfi" + "Muqobil belgilar mavjud" + "Muqobil belgilar tushirib qoldirildi" + "Muqobil takliflar mavjud" + "Muqobil takliflar tushirib qoldirildi" diff --git a/app/src/main/res/values-uz/strings.xml b/app/src/main/res/values-uz/strings.xml index e30206ae43..4a14358ea5 100644 --- a/app/src/main/res/values-uz/strings.xml +++ b/app/src/main/res/values-uz/strings.xml @@ -1,193 +1,141 @@ - - - - - "Sozlamalar" - "Kontaktlar ichidan qidirish" - "Imloni tekshirishda kontaktlar ro‘yxatiga murojaat qilish" - "Tugma bosilganda tebranish" - "Tugmalar tovushi" - "Tugma bosilganda qalqib chiqish" - "Sozlamalar" - "Hisoblar va maxfiylik" - "Ko‘rinish va sxema" - "Qo‘l uzmasdan yozish" - "Matnni tuzatish" - "Kengaytirilgan sozlamalar" - "Mavzu" - "Ikkiga ajratiladigan klaviaturani yoqish" - "Boshqa usullarga o‘tish" - "Tilni almashtirish tugmasi matn kiritish usulini ham o‘zgartiradi" - "Tilni almashtirish tugmasi" - "Bir nechta matn kiritish tili mavjud bo‘lganda ko‘rsatilsin" - "Yopilish vaqti" - "Kechikishsiz" - "Standart" - "%s ms" - "Tizim standarti" - "Ismlarni taklif qilish" - "Kontaktlar ro‘yxatidagi ismlar asosida tuzatmalarni taklif qilish" - "Takliflarni moslashtirish" - "%sni yaxshilash" - "Nuqtani avtomatik qo‘yish" - "Bo‘sh joy tugmasi ikki marta bosilsa, nuqta qo‘yiladi va bo‘sh joy tashlanadi" - "Avtomatik bosh harf" - "Har bir gapning birinchi so‘zini bosh harf bilan boshlash" - "Shaxsiy lug‘at" - "Qo‘shimcha lug‘atlar" - "Asosiy lug‘at" - "Tuzatma variantlari" - "Matn kiritishda so‘z variantlarini taklif qilish" - "Senzuraga moyil iboralarni taqiqlash" - "Haqoratomuz so‘zlar taklif qilinmasin" - "Avtomatik tuzatish" - "Tinish belgisi kiritilganda yoki bo‘sh joy qoldirilganda, xato so‘zni avtomatik tuzatish" - "O‘ch." - "O‘rtacha" - "Juda faol" - "Juda faol" - "Keyingi so‘zni taklif qilish" - "Avvalgi so‘zlar asosida keyingi so‘zni taklif qilish" - "Qo‘l uzmasdan yozish" - "So‘zlarni barmog‘ingizni klaviaturadan uzmasdan yozing" - "Barmoq yo‘lini chizish" - "Takliflarni ko‘rsatish" - "Matn kiritishda so‘zlar taklif qilinsin" - "Qo‘l uzmasdan yozish" - "Barmoqni har bir so‘zdan so‘ng bo‘sh joy qoldirish tugmasiga olib borish" - "Ovoz bilan yozish tugmasi" - "Ovoz bilan yozish usuli yoqilmagan. “Tillar va matn kiritish” sozlamalarini tekshiring." - "Matn kiritish usullarini sozlash" - "Tillar" - "Yordam va fikr-mulohaza" - "Tillar" - "Saqlash uchun yana bosing" - "Saqlash uchun bu yerga tegining" - "Lug‘at mavjud" - "Klaviatura mavzusi" - "Hisobni almashtirish" - "Hech qanday hisob tanlanmadi" - "Hozir foydalanilmoqda: %1$s" - "OK" - "Bekor qilish" - "Chiqish" - "Foydalanish uchun hisobni tanlang" - "Ingliz (Buyuk Britaniya)" - "Ingliz (AQSH)" - "Ispan (AQSH)" - "Hinglish" - "Serb (Lotin)" - "Ingliz (Buyuk Britaniya) (%s)" - "Ingliz (AQSH) (%s)" - "Ispan (AQSH) (%s)" - "Hinglish (%s)" - "Serb (%s)" - "%s (an’anaviy)" - "%s (ixcham)" - "Til aniqlanmadi (lotin)" - "Lotin (QWERTY)" - "Lotin (QWERTZ)" - "Lotin (AZERTY)" - "Lotin (Dvorak)" - "Lotin (Colemak)" - "Lotin (shaxsiy kompyuter)" - "Kulgichlar" - "Klaviatura mavzusi" - "Maxsus usullar" - "Usul qo‘shish" - "Qo‘shish" - "Olib tashlash" - "Saqlash" - "Til" - "Terilma" - "Moslashtirilgan matn kiritish usulini yoqish lozim. Uni hozir yoqmoqchimisiz?" - "Yoqish" - "Hozir emas" - "Xuddi shunday matn kiritish usuli allaqachon mavjud: %s" - "Tugma bosilganda tebranish vaqti" - "Tugma bosilgandagi ovoz" - "Tugmani bosib turish" - "Tashqi klaviatura uchun kulgichlar" - "Jismoniy klaviaturadagi Alt tugmasi emojilarni ochadi" - "Standart" - "%s ilovasiga xush kelibsiz!" - "qo‘l uzmasdan yozish" - "Boshladik" - "Keyingi qadam" - "%s sozlanmoqda" - "Yoqish: %s" - "Matn kiritishda foydalanish uchun “Tillar va matn kiritish” sozlamalarida “%s” bandiga belgi qo‘ying." - "%s ilovasi allaqachon “Tillar va matn kiritish” sozlamalarida yoqilgan, shuning uchun keyingi qadamga o‘tish mumkin!" - "Sozlamalardan yoqish" - "%s: faollashtirish" - "Keyin, joriy matn kiritish usuli sifatida “%s” ilovasini tanlang." - "Matn kiritish usulini o‘zgartirish" - "Tabriklaymiz, hammasi tayyor!" - "Endi, matn kiritish uchun “%s” ilovasidan foydalanishingiz mumkin." - "Qo‘shimcha tillarni sozlash" - "Tugallandi" - "Ilova ikonkasini chiqarish" - "Launcherga ilova ikonkasini chiqarish" - "Lug‘atlar ta’minotchisi" - "Lug‘atlar ta’minotchisi" - "Lug‘atlar xizmati" - "Lug‘atlarni yangilash ma’lumoti" - "Qo‘shimcha lug‘atlar" - "Lug‘atlar uchun sozlamalar" - "Foydalanuvchi lug‘atlari" - "Foydalanuvchi lug‘ati" - "Lug‘at mavjud" - "Hozirda yuklab olinmoqda" - "O‘rnatilgan" - "O‘rnatilgan, o‘chirib qo‘yilgan" - "Ulanib bo‘lmadi" - "Lug‘at mavjud emas" - "Yangilash" - "So‘nggi marta yangilandi" - "Yangilanish mavjudligi tekshirilmoqda" - "Yuklanmoqda…" - "Asosiy lug‘at" - "Bekor qilish" - "Sozlamalar" - "O‘rnatish" - "Bekor qilish" - "O‘chirish" - "%1$s versiya" - "Qo‘shish" - "Lug‘atga kiritish" - "Ibora" - "Ko‘proq soz-lar" - "Kamroq sozlamalar" - "OK" - "So‘z:" - "Qisqartma:" - "Til:" - "So‘zni kiriting" - "Ibora uchun qisqartma (ixtiyoriy)" - "So‘zni tahrirlash" - "Tahrirlash" - "O‘chirish" - "Shaxsiy lug‘atingizda hech narsa yo‘q. Unga so‘zlarni qo‘shish uchun “Qo‘shish” (+) tugmasidan foydalaning." - "Barcha tillar uchun" - "Ko‘proq tillar…" - "O‘chirish" - " ABDEFGHIJKLMNOPQRSTUVXYZO‘G‘SHCH" + + + "Kontaktlar ichidan qidirish" + "Tugma bosilganda tebranish" + "Tugmalar tovushi" + "Tugma bosilganda qalqib chiqish" + "Sozlamalar" + "Qo‘l uzmasdan yozish" + "Matnni tuzatish" + "Kengaytirilgan sozlamalar" + "Mavzu" + "Ikkiga ajratiladigan klaviaturani yoqish" + "Boshqa usullarga o‘tish" + "Tilni almashtirish tugmasi" + "%s ms" + "Tizim standarti" + "Kontaktlar ro‘yxatidagi ismlar asosida tuzatmalarni taklif qilish" + "Takliflarni moslashtirish" + "Nuqtani avtomatik qo‘yish" + "Bo‘sh joy tugmasi ikki marta bosilsa, nuqta qo‘yiladi va bo‘sh joy tashlanadi" + "Avtomatik bosh harf" + "Har bir gapning birinchi so‘zini bosh harf bilan boshlash" + "Shaxsiy lug‘at" + "Asosiy lug‘at" + "Tuzatma variantlari" + "Matn kiritishda so‘z variantlarini taklif qilish" + "Senzuraga moyil iboralarni taqiqlash" + "Haqoratomuz so‘zlar taklif qilinmasin" + "Avtomatik tuzatish" + "Tinish belgisi kiritilganda yoki bo‘sh joy qoldirilganda, xato so‘zni avtomatik tuzatish" + "O‘ch." + "O‘rtacha" + "Juda faol" + "Juda faol" + "Keyingi so‘zni taklif qilish" + "Avvalgi so‘zlar asosida keyingi so‘zni taklif qilish" + "Qo‘l uzmasdan yozish" + "So‘zlarni barmog‘ingizni klaviaturadan uzmasdan yozing" + "Barmoq yo‘lini chizish" + "Takliflarni ko‘rsatish" + "Qo‘l uzmasdan yozish" + "Barmoqni har bir so‘zdan so‘ng bo‘sh joy qoldirish tugmasiga olib borish" + "Ingliz (Buyuk Britaniya)" + "Ingliz (AQSH)" + "Ispan (AQSH)" + "Hinglish" + "Serb (Lotin)" + %s (An’anaviy) + %s(Ixcham) + "Til aniqlanmadi" + "Kulgichlar" + "Qo‘shish" + "Olib tashlash" + "Saqlash" + "Til" + "Terilma" + "Tugma bosilganda tebranish vaqti" + "Tugma bosilgandagi ovoz" + "Tugmani bosib turish" + "Tashqi klaviatura uchun kulgichlar" + "Jismoniy klaviaturadagi Alt tugmasi emojilarni ochadi" + "Standart" + %s ilovasiga xush kelibsiz! + "qo‘l uzmasdan yozish" + "Boshladik" + %s sozlanmoqda + Yoqish %s + Matn kiritishda foydalanish uchun “Tillar va matn kiritish” sozlamalarida “%s” bandiga belgi qo‘ying. + "Sozlamalardan yoqish" + %s ga o‘zgartirish + Endi, joriy matn kiritish usuli sifatida “%s” ilovasini tanlang. + "Matn kiritish usulini o‘zgartirish" + "Tabriklaymiz, hammasi tayyor!" + Endi, matn kiritish uchun %s ilovasidan foydalanishingiz mumkin. + "Tugallandi" + "Ilova ikonkasini chiqarish" + "Launcherga ilova ikonkasini chiqarish" + "Qo‘shimcha lug‘atlar" + "Lug‘at mavjud" + "Sozlamalar" + "O‘chirish" + %1$s versiya + "Qisqartma:" + "Til:" + "So‘zni kiriting" + "Ibora uchun qisqartma (ixtiyoriy)" + "So‘zni tahrirlash" + "Barcha tillar uchun" + "Ko‘proq tillar…" + Bufer tarixi + Emoji kaliti + "Matn kiritish usulini tanlang" + %smin. + Cheklanmagan + Bufer tarixini yoqish + Agar o\'chirilgan bo\'lsa, vaqtinchalik bufer tugmasi mavjud bo\'lsa, almashish buferidagi kontentni joylashtiradi + Tarixni saqlash vaqti + Matnning katta qismini birdaniga tanlash va o‘chirib tashlash uchun oʻchirish tugmasidan suring + Tugma chegaralari + Avtomatik kunduz/tun rejimi + Tashqi ko\'rinish tizim sozlamalariga binoan + HeliBoard Imlo tekshiruvi + HeliBoard Imlo Tekshiruvi Sozlamalari + Svayp bilan o\'chirish + Yangi so\'zlarni o\'rganishni o\'chirib qo\'yish + Sonlar qatori + Har doim raqamlar qatorini ko\'rsatish + Bo\'sh joy tugmasi bilan kiritish usulini o\'zgartirish + Bo\'sh joy tugmachasini uzoq bosib turish, kiritish usulini tanlash menyusini taklif qiladi + Klaviatura balandligi o\'lchovi + Turli xil + Takliflar + Eksperimental + Yangi so\'zni kiritishda tinish belgilaridan keyin avtomatik ravishda bo\'sh joy qo\'yish + Majburiy inkognito rejimi + Tinish belgilaridan keyin avtomatik bo\'shliq qo‘yish + %s (Akkhor) + Kiritish + Qo\'shimcha kalitlar + HeliBoard Sozlamalari + Tuzatishlar + Simvollarni ko‘rsatish + Uzoq bosish ko‘rsatish + Avto-to‘g‘irlash maxfiyligi + Ko‘proq so‘zlar + "Bekor qilish" + "Qaytarish" + "Qurilma siz ko‘p yozgan ma’lumotlarni eslab qoladi" + "OK" + "Keyingisi" + "Orqaga" + "Tayyor" + "Yuborish" + "Qidiruv" + "Pauza" + "Kutish" diff --git a/app/src/main/res/values-v19/spinner-style.xml b/app/src/main/res/values-v19/spinner-style.xml deleted file mode 100644 index a699905757..0000000000 --- a/app/src/main/res/values-v19/spinner-style.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/values-v21/platform-theme.xml b/app/src/main/res/values-v21/platform-theme.xml deleted file mode 100644 index 5e285bce1e..0000000000 --- a/app/src/main/res/values-v21/platform-theme.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/values-v21/themes-lxx.xml b/app/src/main/res/values-v21/themes-lxx.xml deleted file mode 100644 index 5a6017cce2..0000000000 --- a/app/src/main/res/values-v21/themes-lxx.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - diff --git a/app/src/main/res/values-v28/platform-theme.xml b/app/src/main/res/values-v28/platform-theme.xml new file mode 100644 index 0000000000..77a73ae9ee --- /dev/null +++ b/app/src/main/res/values-v28/platform-theme.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/app/src/main/res/values-v31/colors.xml b/app/src/main/res/values-v31/colors.xml index 78517e63eb..79368b505d 100644 --- a/app/src/main/res/values-v31/colors.xml +++ b/app/src/main/res/values-v31/colors.xml @@ -1,37 +1,27 @@ - @android:color/system_accent1_500 @android:color/system_accent1_200 - @android:color/system_accent1_900 - @color/highlight_color_lxx_light - @android:color/system_accent1_200 - @color/highlight_color_lxx_light @android:color/system_accent1_500 @android:color/system_accent1_200 - @android:color/system_accent1_900 - @color/highlight_color_lxx_dark - @android:color/system_accent1_200 - @color/highlight_color_lxx_dark + + + @android:color/system_neutral1_100 + @android:color/system_neutral1_800 + + + @android:color/system_accent1_600 + @android:color/system_neutral1_10 + @android:color/system_accent1_50 + @android:color/system_accent1_700 + @android:color/system_accent1_700 + @android:color/system_accent1_50 + @android:color/system_neutral2_50 + @android:color/system_neutral2_50 diff --git a/app/src/main/res/values-v31/keyboard-icons-lxx-dark.xml b/app/src/main/res/values-v31/keyboard-icons-lxx-dark.xml deleted file mode 100644 index fe8cc3aeee..0000000000 --- a/app/src/main/res/values-v31/keyboard-icons-lxx-dark.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/values-v31/keyboard-icons-lxx-light.xml b/app/src/main/res/values-v31/keyboard-icons-lxx-light.xml deleted file mode 100644 index e362daa978..0000000000 --- a/app/src/main/res/values-v31/keyboard-icons-lxx-light.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/values-v31/platform-theme.xml b/app/src/main/res/values-v31/platform-theme.xml new file mode 100644 index 0000000000..6f6ade775d --- /dev/null +++ b/app/src/main/res/values-v31/platform-theme.xml @@ -0,0 +1,38 @@ + + + + + + + + + + diff --git a/app/src/main/res/values-v31/platform-themes.xml b/app/src/main/res/values-v31/platform-themes.xml deleted file mode 100644 index f99b985a89..0000000000 --- a/app/src/main/res/values-v31/platform-themes.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - diff --git a/app/src/main/res/values/keyboard-icons-lxx-dark-parent.xml b/app/src/main/res/values/keyboard-icons-lxx-dark-parent.xml deleted file mode 100644 index 73ea197e79..0000000000 --- a/app/src/main/res/values/keyboard-icons-lxx-dark-parent.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - diff --git a/app/src/main/res/values/keyboard-icons-lxx-dark.xml b/app/src/main/res/values/keyboard-icons-lxx-dark.xml deleted file mode 100644 index 3c47bd03a1..0000000000 --- a/app/src/main/res/values/keyboard-icons-lxx-dark.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - diff --git a/app/src/main/res/values/keyboard-icons-lxx-light.xml b/app/src/main/res/values/keyboard-icons-lxx-light.xml deleted file mode 100644 index abbf733609..0000000000 --- a/app/src/main/res/values/keyboard-icons-lxx-light.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - + + diff --git a/app/src/main/res/values/predefined-subtypes.xml b/app/src/main/res/values/predefined-subtypes.xml deleted file mode 100644 index 3bf0e617fa..0000000000 --- a/app/src/main/res/values/predefined-subtypes.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - de:qwerty:AsciiCapable - fr:qwertz:AsciiCapable - - diff --git a/app/src/main/res/values/setup-styles-common.xml b/app/src/main/res/values/setup-styles-common.xml deleted file mode 100644 index 686decfba5..0000000000 --- a/app/src/main/res/values/setup-styles-common.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values/setup-styles.xml b/app/src/main/res/values/setup-styles.xml deleted file mode 100644 index 8a9d664778..0000000000 --- a/app/src/main/res/values/setup-styles.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/values/setup-wizard.xml b/app/src/main/res/values/setup-wizard.xml deleted file mode 100644 index 90c3ecac93..0000000000 --- a/app/src/main/res/values/setup-wizard.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - diff --git a/app/src/main/res/values/spinner-style.xml b/app/src/main/res/values/spinner-style.xml deleted file mode 100644 index c0f32abe02..0000000000 --- a/app/src/main/res/values/spinner-style.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/values/strings-action-keys.xml b/app/src/main/res/values/strings-action-keys.xml deleted file mode 100644 index 96b2e7dda2..0000000000 --- a/app/src/main/res/values/strings-action-keys.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - Go - - Next - - Prev - - Done - - Send - - Search - - Pause - - Wait - diff --git a/app/src/main/res/values/strings-config-important-notice.xml b/app/src/main/res/values/strings-config-important-notice.xml deleted file mode 100644 index de8d6fc5e4..0000000000 --- a/app/src/main/res/values/strings-config-important-notice.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - Learn from your communications and typed data to improve suggestions - diff --git a/app/src/main/res/values/strings-emoji-descriptions.xml b/app/src/main/res/values/strings-emoji-descriptions.xml deleted file mode 100644 index 3799a23d0d..0000000000 --- a/app/src/main/res/values/strings-emoji-descriptions.xml +++ /dev/null @@ -1,2587 +0,0 @@ - - - - - - Copyright sign - - Registered sign - - Double exclamation mark - - Exclamation question mark - - Trade mark sign - - Information source - - Left right arrow - - Up down arrow - - North west arrow - - North east arrow - - South east arrow - - South west arrow - - Leftwards arrow with hook - - Rightwards arrow with hook - - Watch - - Hourglass - - Keyboard - - Eject symbol - - Black right-pointing double triangle - - Black left-pointing double triangle - - Black up-pointing double triangle - - Black down-pointing double triangle - - 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 with flowing sand - - Double vertical bar - - Black square for stop - - Black circle for record - - Circled latin capital letter m - - Black small square - - White small square - - Black right-pointing triangle - - Black left-pointing triangle - - White medium square - - Black medium square - - White medium small square - - Black medium small square - - Black sun with rays - - Cloud - - Umbrella - - Snowman - - Comet - - Black telephone - - Ballot box with check - - Umbrella with rain drops - - Hot beverage - - Shamrock - - White up pointing index - - Skull and crossbones - - Radioactive sign - - Biohazard sign - - Orthodox cross - - Star and crescent - - Peace symbol - - Yin yang - - Wheel of dharma - - White frowning face - - White smiling face - - Aries - - Taurus - - Gemini - - Cancer - - Leo - - Virgo - - Libra - - Scorpius - - Sagittarius - - Capricorn - - Aquarius - - Pisces - - Black spade suit - - Black club suit - - Black heart suit - - Black diamond suit - - Hot springs - - Black universal recycling symbol - - Wheelchair symbol - - Hammer and pick - - Anchor - - Crossed swords - - Scales - - Alembic - - Gear - - Atom symbol - - Fleur-de-lis - - Warning sign - - High voltage sign - - Medium white circle - - Medium black circle - - Coffin - - Funeral urn - - Soccer ball - - Baseball - - Snowman without snow - - Sun behind cloud - - Thunder cloud and rain - - Ophiuchus - - Pick - - Helmet with white cross - - Chains - - No entry - - Shinto shrine - - Church - - Mountain - - Umbrella on ground - - Fountain - - Flag in hole - - Ferry - - Sailboat - - Skier - - Ice skate - - Person with ball - - Tent - - Fuel pump - - Black scissors - - White heavy check mark - - Airplane - - Envelope - - Raised fist - - Raised hand - - Victory hand - - Writing hand - - Pencil - - Black nib - - Heavy check mark - - Heavy multiplication x - - Latin cross - - Star of David - - Sparkles - - Eight spoked asterisk - - Eight pointed black star - - Snowflake - - Sparkle - - Cross mark - - Negative squared cross mark - - Black question mark ornament - - White question mark ornament - - White exclamation mark ornament - - Heavy exclamation mark symbol - - Heavy heart exclamation mark ornament - - Heavy black heart - - Heavy plus sign - - Heavy minus sign - - Heavy division sign - - Black rightwards arrow - - Curly loop - - Double curly loop - - Arrow pointing rightwards then curving upwards - - Arrow pointing rightwards then curving downwards - - Leftwards black arrow - - Upwards black arrow - - Downwards black arrow - - Black large square - - White large square - - White medium star - - Heavy large circle - - Wavy dash - - Part alternation mark - - Circled ideograph congratulation - - Circled ideograph secret - - Mahjong tile red dragon - - Playing card black joker - - Blood type A - - Blood type B - - Blood type O - - Parking lot - - Blood type AB - - Squared CL - - Squared cool - - Squared free - - Squared ID - - Squared new - - Squared N G - - Squared OK - - Squared SOS - - Squared up with exclamation mark - - Squared vs - - Squared katakana here - - Squared katakana service - - Squared ideograph charge-free - - Squared ideograph reserved-seat - - Squared ideograph prohibitation - - Squared ideograph vacancy - - Squared ideograph acceptance - - Squared ideograph full occupancy - - Squared ideograph paid - - Squared ideograph monthly - - Squared ideograph application - - Squared ideograph discount - - Squared ideograph in business - - Circled ideograph advantage - - Circled ideograph accept - - Cyclone - - Foggy - - Closed umbrella - - Night with stars - - Sunrise over mountains - - Sunrise - - Cityscape at dusk - - Sunset over buildings - - Rainbow - - Bridge at night - - Water wave - - Volcano - - Milky way - - Earth globe europe-africa - - Earth globe americas - - Earth globe asia-australia - - Globe with meridians - - New moon symbol - - Waxing crescent moon symbol - - First quarter moon symbol - - Waxing gibbous moon symbol - - Full moon symbol - - Waning gibbous moon symbol - - Last quarter moon symbol - - Waning crescent moon symbol - - Crescent moon - - New moon with face - - First quarter moon with face - - Last quarter moon with face - - Full moon with face - - Sun with face - - Glowing star - - Shooting star - - Thermometer - - White sun with small cloud - - White sun behind cloud - - White sun behind cloud with rain - - Cloud with rain - - Cloud with snow - - Cloud with lightning - - Cloud with tornado - - Fog - - Wind blowing face - - Hot dog - - Taco - - Burrito - - Chestnut - - Seedling - - Evergreen tree - - Deciduous tree - - Palm tree - - Cactus - - Hot pepper - - Tulip - - Cherry blossom - - Rose - - Hibiscus - - Sunflower - - Blossom - - Ear of maize - - Ear of rice - - Herb - - Four leaf clover - - Maple leaf - - Fallen leaf - - Leaf fluttering in wind - - Mushroom - - Tomato - - Aubergine - - Grapes - - Melon - - Watermelon - - Tangerine - - Lemon - - Banana - - Pineapple - - Red apple - - Green apple - - Pear - - Peach - - Cherries - - Strawberry - - Hamburger - - Slice of pizza - - Meat on bone - - Poultry leg - - Rice cracker - - Rice ball - - Cooked rice - - Curry and rice - - Steaming bowl - - Spaghetti - - Bread - - French fries - - Roasted sweet potato - - Dango - - Oden - - Sushi - - Fried shrimp - - Fish cake with swirl design - - Soft ice cream - - Shaved ice - - Ice cream - - Doughnut - - Cookie - - Chocolate bar - - Candy - - Lollipop - - Custard - - Honey pot - - Shortcake - - Bento box - - Pot of food - - Cooking - - Fork and knife - - Teacup without handle - - Sake bottle and cup - - Wine glass - - Cocktail glass - - Tropical drink - - Beer mug - - Clinking beer mugs - - Baby bottle - - Fork and knife with plate - - Bottle with popping cork - - Popcorn - - Ribbon - - Wrapped present - - Birthday cake - - Jack-o-lantern - - Christmas tree - - Father christmas - - Fireworks - - Firework sparkler - - Balloon - - Party popper - - Confetti ball - - Tanabata tree - - Crossed flags - - Pine decoration - - Japanese dolls - - Carp streamer - - Wind chime - - Moon viewing ceremony - - School satchel - - Graduation cap - - Military 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 - - Headphone - - Artist palette - - Top hat - - Circus tent - - Ticket - - Clapper board - - Performing arts - - Video game - - Direct hit - - Slot machine - - Billiards - - Game die - - Bowling - - Flower playing cards - - Musical note - - Multiple musical notes - - Saxophone - - Guitar - - Musical keyboard - - Trumpet - - Violin - - Musical score - - Running shirt with sash - - Tennis racquet and ball - - Ski and ski boot - - Basketball and hoop - - Chequered flag - - Snowboarder - - Runner - - Surfer - - Sports medal - - Trophy - - Horse racing - - American football - - Rugby football - - Swimmer - - Weight lifter - - 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 building - - House with garden - - Office building - - Japanese post office - - European post office - - Hospital - - Bank - - Automated teller machine - - Hotel - - Love hotel - - Convenience store - - School - - Department store - - Factory - - Izakaya lantern - - Japanese castle - - European castle - - Waving white flag - - Waving black flag - - Rosette - - Label - - Badminton racquet and shuttlecock - - Bow and arrow - - Amphora - - Emoji modifier Fitzpatrick type-1-2 - - Emoji modifier Fitzpatrick type-3 - - Emoji modifier Fitzpatrick type-4 - - Emoji modifier Fitzpatrick type-5 - - Emoji modifier Fitzpatrick type-6 - - Rat - - Mouse - - Ox - - Water buffalo - - Cow - - Tiger - - Leopard - - Rabbit - - Cat - - Dragon - - Crocodile - - Whale - - Snail - - Snake - - Horse - - Ram - - Goat - - Sheep - - Monkey - - Rooster - - Chicken - - Dog - - Pig - - Boar - - Elephant - - Octopus - - Spiral shell - - Bug - - Ant - - Honeybee - - Lady beetle - - Fish - - Tropical fish - - Blowfish - - Turtle - - Hatching chick - - Baby chick - - Front-facing baby chick - - Bird - - Penguin - - Koala - - Poodle - - Dromedary camel - - Bactrian camel - - Dolphin - - Mouse face - - Cow face - - Tiger face - - Rabbit face - - Cat face - - Dragon face - - Spouting whale - - Horse face - - Monkey face - - Dog face - - Pig face - - Frog face - - Hamster face - - Wolf face - - Bear face - - Panda face - - Pig nose - - Paw prints - - Chipmunk - - Eyes - - Eye - - Ear - - Nose - - Mouth - - Tongue - - White up pointing backhand index - - White down pointing backhand index - - White left pointing backhand index - - White right pointing backhand index - - Fisted hand sign - - Waving hand sign - - Ok hand sign - - Thumbs up sign - - Thumbs down sign - - Clapping hands sign - - Open hands sign - - Crown - - Womans hat - - Eyeglasses - - Necktie - - T-shirt - - Jeans - - Dress - - Kimono - - Bikini - - Womans clothes - - Purse - - Handbag - - Pouch - - Mans shoe - - Athletic shoe - - High-heeled shoe - - Womans sandal - - Womans boots - - Footprints - - Bust in silhouette - - Busts in silhouette - - Boy - - Girl - - Man - - Woman - - Family - - Man and woman holding hands - - Two men holding hands - - Two women holding hands - - Police officer - - Woman with bunny ears - - Bride with veil - - Person with blond hair - - Man with gua pi mao - - Man with turban - - Older man - - Older woman - - Baby - - Construction worker - - Princess - - Japanese ogre - - Japanese goblin - - Ghost - - Baby angel - - Extraterrestrial alien - - Alien monster - - Imp - - Skull - - Information desk person - - Guardsman - - Dancer - - Lipstick - - Nail polish - - Face massage - - Haircut - - Barber pole - - Syringe - - Pill - - Kiss mark - - Love letter - - Ring - - Gem stone - - Kiss - - Bouquet - - Couple with heart - - Wedding - - Beating heart - - Broken heart - - Two hearts - - Sparkling heart - - Growing heart - - Heart with arrow - - Blue heart - - Green heart - - Yellow heart - - Purple heart - - Heart with ribbon - - Revolving hearts - - Heart decoration - - Diamond shape with a dot inside - - Electric light bulb - - Anger symbol - - Bomb - - Sleeping symbol - - Collision symbol - - Splashing sweat symbol - - Droplet - - Dash symbol - - Pile of poo - - Flexed biceps - - Dizzy symbol - - Speech balloon - - Thought balloon - - White flower - - Hundred points symbol - - Money bag - - Currency exchange - - Heavy dollar sign - - Credit card - - Banknote with yen sign - - Banknote with dollar sign - - Banknote with euro sign - - Banknote with pound sign - - Money with wings - - Chart with upwards trend and yen sign - - Seat - - Personal computer - - Briefcase - - Minidisc - - Floppy disk - - Optical disc - - Dvd - - File folder - - Open file folder - - Page with curl - - Page facing up - - Calendar - - Tear-off 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 - - Open book - - Green book - - Blue book - - Orange book - - Books - - Name badge - - Scroll - - Memo - - Telephone receiver - - Pager - - Fax machine - - Satellite antenna - - Public address loudspeaker - - Cheering megaphone - - Outbox tray - - Inbox tray - - Package - - E-mail symbol - - Incoming envelope - - Envelope with downwards arrow above - - Closed mailbox with lowered flag - - Closed mailbox with raised flag - - Open mailbox with raised flag - - Open mailbox with lowered flag - - Postbox - - Postal horn - - Newspaper - - Mobile phone - - Mobile phone with rightwards arrow at left - - Vibration mode - - Mobile phone off - - No mobile phones - - Antenna with bars - - Camera - - Camera with flash - - Video camera - - Television - - Radio - - Videocassette - - Film projector - - Prayer beads - - Twisted rightwards arrows - - Clockwise rightwards and leftwards open circle arrows - - Clockwise rightwards and leftwards open circle arrows with circled one overlay - - Clockwise downwards and upwards open circle arrows - - Anticlockwise downwards and upwards open circle arrows - - Low brightness symbol - - High brightness symbol - - Speaker with cancellation stroke - - Speaker - - Speaker with one sound wave - - Speaker with three sound waves - - Battery - - Electric plug - - Left-pointing magnifying glass - - Right-pointing magnifying glass - - Lock with ink pen - - Closed lock with key - - Key - - Lock - - Open lock - - Bell - - Bell with cancellation stroke - - Bookmark - - Link symbol - - Radio button - - Back with leftwards arrow above - - End with leftwards arrow above - - On with exclamation mark with left right arrow above - - Soon with rightwards arrow above - - Top with upwards arrow above - - No one under eighteen symbol - - Keycap ten - - Input symbol for latin capital letters - - Input symbol for latin small letters - - Input symbol for numbers - - Input symbol for symbols - - Input symbol for latin letters - - Fire - - Electric torch - - Wrench - - Hammer - - Nut and bolt - - Hocho - - Pistol - - Microscope - - Telescope - - Crystal ball - - Six pointed star with middle dot - - Japanese symbol for beginner - - Trident emblem - - Black square button - - White square button - - Large red circle - - Large blue circle - - Large orange diamond - - Large blue diamond - - Small orange diamond - - Small blue diamond - - Up-pointing red triangle - - Down-pointing red triangle - - Up-pointing small red triangle - - Down-pointing small red triangle - - Om symbol - - Dove of peace - - Kaaba - - Mosque - - Synagogue - - Menorah with nine branches - - Clock face one oclock - - Clock face two oclock - - Clock face three oclock - - Clock face four oclock - - Clock face five oclock - - Clock face six oclock - - Clock face seven oclock - - Clock face eight oclock - - Clock face nine oclock - - Clock face ten oclock - - Clock face eleven oclock - - Clock face twelve oclock - - Clock face one-thirty - - Clock face two-thirty - - Clock face three-thirty - - Clock face four-thirty - - Clock face five-thirty - - Clock face six-thirty - - Clock face seven-thirty - - Clock face eight-thirty - - Clock face nine-thirty - - Clock face ten-thirty - - Clock face eleven-thirty - - Clock face twelve-thirty - - Candle - - Mantelpiece clock - - Hole - - Man in business suit levitating - - Sleuth or spy - - Dark sunglasses - - Spider - - Spider web - - Joystick - - Linked paperclips - - Lower left ballpoint pen - - Lower left fountain pen - - Lower left paintbrush - - Lower left crayon - - Raised hand with fingers splayed - - Reversed hand with middle finger extended - - Raised hand with part between middle and ring fingers - - 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 - - Right anger bubble - - Ballot box with ballot - - World map - - Mount fuji - - Tokyo tower - - Statue of liberty - - Silhouette of japan - - Moyai - - Grinning face - - Grinning face with smiling eyes - - Face with tears of joy - - Smiling face with open mouth - - Smiling face with open mouth and smiling eyes - - Smiling face with open mouth and cold sweat - - Smiling face with open mouth and tightly-closed eyes - - Smiling face with halo - - Smiling face with horns - - Winking face - - Smiling face with smiling eyes - - Face savouring delicious food - - Relieved face - - Smiling face with heart-shaped eyes - - Smiling face with sunglasses - - Smirking face - - Neutral face - - Expressionless face - - Unamused face - - Face with cold sweat - - Pensive face - - Confused face - - Confounded face - - Kissing face - - Face throwing a kiss - - Kissing face with smiling eyes - - Kissing face with closed eyes - - Face with stuck-out tongue - - Face with stuck-out tongue and winking eye - - Face with stuck-out tongue and tightly-closed eyes - - Disappointed face - - Worried face - - Angry face - - Pouting face - - Crying face - - Persevering face - - Face with look of triumph - - Disappointed but relieved face - - Frowning face with open mouth - - Anguished face - - Fearful face - - Weary face - - Sleepy face - - Tired face - - Grimacing face - - Loudly crying face - - Face with open mouth - - Hushed face - - Face with open mouth and cold sweat - - Face screaming in fear - - Astonished face - - Flushed face - - Sleeping face - - Dizzy face - - Face without mouth - - Face with medical mask - - Grinning cat face with smiling eyes - - Cat face with tears of joy - - Smiling cat face with open mouth - - Smiling cat face with heart-shaped eyes - - Cat face with wry smile - - Kissing cat face with closed eyes - - Pouting cat face - - Crying cat face - - Weary cat face - - Slightly frowning face - - Slightly smiling face - - Upside-down face - - Face with rolling eyes - - Face with no good gesture - - Face with ok gesture - - Person bowing deeply - - See-no-evil monkey - - Hear-no-evil monkey - - Speak-no-evil monkey - - Happy person raising one hand - - Person raising both hands in celebration - - Person frowning - - Person with pouting face - - Person with folded hands - - Rocket - - Helicopter - - Steam locomotive - - Railway car - - High-speed train - - High-speed train with bullet nose - - Train - - Metro - - Light rail - - Station - - Tram - - Tram car - - Bus - - Oncoming bus - - Trolleybus - - Bus stop - - Minibus - - Ambulance - - Fire engine - - Police car - - Oncoming police car - - Taxi - - Oncoming taxi - - Automobile - - Oncoming automobile - - Recreational vehicle - - Delivery truck - - Articulated lorry - - Tractor - - Monorail - - Mountain railway - - Suspension railway - - Mountain cableway - - Aerial tramway - - Ship - - Rowboat - - Speedboat - - Horizontal traffic light - - Vertical traffic light - - Construction sign - - Police cars revolving light - - Triangular flag on post - - Door - - No entry sign - - Smoking symbol - - No smoking symbol - - Put litter in its place symbol - - Do not litter symbol - - Potable water symbol - - Non-potable water symbol - - Bicycle - - No bicycles - - Bicyclist - - Mountain bicyclist - - Pedestrian - - No pedestrians - - Children crossing - - Mens symbol - - Womens symbol - - Restroom - - Baby symbol - - Toilet - - Water closet - - Shower - - Bath - - Bathtub - - Passport control - - Customs - - Baggage claim - - Left luggage - - Couch and lamp - - Sleeping accommodation - - Shopping bags - - Bellhop bell - - Bed - - Place of worship - - Hammer and wrench - - Shield - - Oil drum - - Motorway - - Railway track - - Motor boat - - Small airplane - - Airplane departure - - Airplane arriving - - Satellite - - Passenger ship - - Zipper-mouth face - - Money-mouth face - - Face with thermometer - - Nerd face - - Thinking face - - Face with head-bandage - - Robot face - - Hugging face - - Sign of the horns - - Crab - - Lion face - - Scorpion - - Turkey - - Unicorn face - - Cheese wedge - - Keycap number sign - - Keycap asterisk - - Keycap digit zero - - Keycap digit one - - Keycap digit two - - Keycap digit three - - Keycap digit four - - Keycap digit five - - Keycap digit six - - Keycap digit seven - - Keycap digit eight - - Keycap digit nine - - Flag for Ascension Island - - Flag for Andorra - - Flag for United Arab Emirates - - Flag for Afghanistan - - Flag for Antigua & Barbuda - - Flag for Anguilla - - Flag for Albania - - Flag for Armenia - - Flag for Angola - - Flag for Antarctica - - Flag for Argentina - - Flag for American Samoa - - Flag for Austria - - Flag for Australia - - Flag for Aruba - - Flag for Åland Islands - - Flag for Azerbaijan - - Flag for Bosnia & Herzegovina - - Flag for Barbados - - Flag for Bangladesh - - Flag for Belgium - - Flag for Burkina Faso - - Flag for Bulgaria - - Flag for Bahrain - - Flag for Burundi - - Flag for Benin - - Flag for St. Barthélemy - - Flag for Bermuda - - Flag for Brunei - - Flag for Bolivia - - Flag for Caribbean Netherlands - - Flag for Brazil - - Flag for Bahamas - - Flag for Bhutan - - Flag for Bouvet Island - - Flag for Botswana - - Flag for Belarus - - Flag for Belize - - Flag for Canada - - Flag for Cocos Islands - - Flag for Congo - Kinshasa - - Flag for Central African Republic - - Flag for Congo - Brazzaville - - Flag for Switzerland - - Flag for Côte d\'Ivoire - - Flag for Cook Islands - - Flag for Chile - - Flag for Cameroon - - Flag for China - - Flag for Colombia - - Flag for Clipperton Island - - Flag for Costa Rica - - Flag for Cuba - - Flag for Cape Verde - - Flag for Curaçao - - Flag for Christmas Island - - Flag for Cyprus - - Flag for Czech Republic - - Flag for Germany - - Flag for Diego Garcia - - Flag for Djibouti - - Flag for Denmark - - Flag for Dominica - - Flag for Dominican Republic - - Flag for Algeria - - Flag for Ceuta & Melilla - - Flag for Ecuador - - Flag for Estonia - - Flag for Egypt - - Flag for Western Sahara - - Flag for Eritrea - - Flag for Spain - - Flag for Ethiopia - - Flag for European Union - - Flag for Finland - - Flag for Fiji - - Flag for Falkland Islands - - Flag for Micronesia - - Flag for Faroe Islands - - Flag for France - - Flag for Gabon - - Flag for United Kingdom - - Flag for Grenada - - Flag for Georgia - - Flag for French Guiana - - Flag for Guernsey - - Flag for Ghana - - Flag for Gibraltar - - Flag for Greenland - - Flag for Gambia - - Flag for Guinea - - Flag for Guadeloupe - - Flag for Equatorial Guinea - - Flag for Greece - - Flag for South Georgia & South Sandwich Islands - - Flag for Guatemala - - Flag for Guam - - Flag for Guinea-Bissau - - Flag for Guyana - - Flag for Hong Kong - - Flag for Heard & McDonald Islands - - Flag for Honduras - - Flag for Croatia - - Flag for Haiti - - Flag for Hungary - - Flag for Canary Islands - - Flag for Indonesia - - Flag for Ireland - - Flag for Israel - - Flag for Isle of Man - - Flag for India - - Flag for British Indian Ocean Territory - - Flag for Iraq - - Flag for Iran - - Flag for Iceland - - Flag for Italy - - Flag for Jersey - - Flag for Jamaica - - Flag for Jordan - - Flag for Japan - - Flag for Kenya - - Flag for Kyrgyzstan - - Flag for Cambodia - - Flag for Kiribati - - Flag for Comoros - - Flag for St. Kitts & Nevis - - Flag for North Korea - - Flag for South Korea - - Flag for Kuwait - - Flag for Cayman Islands - - Flag for Kazakhstan - - Flag for Laos - - Flag for Lebanon - - Flag for St. Lucia - - Flag for Liechtenstein - - Flag for Sri Lanka - - Flag for Liberia - - Flag for Lesotho - - Flag for Lithuania - - Flag for Luxembourg - - Flag for Latvia - - Flag for Libya - - Flag for Morocco - - Flag for Monaco - - Flag for Moldova - - Flag for Montenegro - - Flag for St. Martin - - Flag for Madagascar - - Flag for Marshall Islands - - Flag for Macedonia - - Flag for Mali - - Flag for Myanmar - - Flag for Mongolia - - Flag for Macau - - Flag for Northern Mariana Islands - - Flag for Martinique - - Flag for Mauritania - - Flag for Montserrat - - Flag for Malta - - Flag for Mauritius - - Flag for Maldives - - Flag for Malawi - - Flag for Mexico - - Flag for Malaysia - - Flag for Mozambique - - Flag for Namibia - - Flag for New Caledonia - - Flag for Niger - - Flag for Norfolk Island - - Flag for Nigeria - - Flag for Nicaragua - - Flag for Netherlands - - Flag for Norway - - Flag for Nepal - - Flag for Nauru - - Flag for Niue - - Flag for New Zealand - - Flag for Oman - - Flag for Panama - - Flag for Peru - - Flag for French Polynesia - - Flag for Papua New Guinea - - Flag for Philippines - - Flag for Pakistan - - Flag for Poland - - Flag for St. Pierre & Miquelon - - Flag for Pitcairn Islands - - Flag for Puerto Rico - - Flag for Palestinian Territories - - Flag for Portugal - - Flag for Palau - - Flag for Paraguay - - Flag for Qatar - - Flag for Réunion - - Flag for Romania - - Flag for Serbia - - Flag for Russia - - Flag for Rwanda - - Flag for Saudi Arabia - - Flag for Solomon Islands - - Flag for Seychelles - - Flag for Sudan - - Flag for Sweden - - Flag for Singapore - - Flag for St. Helena - - Flag for Slovenia - - Flag for Svalbard & Jan Mayen - - Flag for Slovakia - - Flag for Sierra Leone - - Flag for San Marino - - Flag for Senegal - - Flag for Somalia - - Flag for Suriname - - Flag for South Sudan - - Flag for São Tomé & Príncipe - - Flag for El Salvador - - Flag for Sint Maarten - - Flag for Syria - - Flag for Swaziland - - Flag for Tristan da Cunha - - Flag for Turks & Caicos Islands - - Flag for Chad - - Flag for French Southern Territories - - Flag for Togo - - Flag for Thailand - - Flag for Tajikistan - - Flag for Tokelau - - Flag for Timor-Leste - - Flag for Turkmenistan - - Flag for Tunisia - - Flag for Tonga - - Flag for Turkey - - Flag for Trinidad & Tobago - - Flag for Tuvalu - - Flag for Taiwan - - Flag for Tanzania - - Flag for Ukraine - - Flag for Uganda - - Flag for U.S. Outlying Islands - - Flag for United States - - Flag for Uruguay - - Flag for Uzbekistan - - Flag for Vatican City - - Flag for St. Vincent & Grenadines - - Flag for Venezuela - - Flag for British Virgin Islands - - Flag for U.S. Virgin Islands - - Flag for Vietnam - - Flag for Vanuatu - - Flag for Wallis & Futuna - - Flag for Samoa - - Flag for Kosovo - - Flag for Yemen - - Flag for Mayotte - - Flag for South Africa - - Flag for Zambia - - Flag for Zimbabwe - diff --git a/app/src/main/res/values/strings-letter-descriptions.xml b/app/src/main/res/values/strings-letter-descriptions.xml deleted file mode 100644 index 297b6bed26..0000000000 --- a/app/src/main/res/values/strings-letter-descriptions.xml +++ /dev/null @@ -1,384 +0,0 @@ - - - - - - Feminine ordinal indicator - - Micro sign - - Masculine ordinal indicator - - Sharp S - - A, grave - - A, acute - - A, circumflex - - A, tilde - - A, diaeresis - - A, ring above - - A, E, ligature - - C, cedilla - - E, grave - - E, acute - - E, circumflex - - E, diaeresis - - I, grave - - I, acute - - I, circumflex - - I, diaeresis - - Eth - - N, tilde - - O, grave - - O, acute - - O, circumflex - - O, tilde - - O, diaeresis - - O, stroke - - U, grave - - U, acute - - U, circumflex - - U, diaeresis - - Y, acute - - Thorn - - Y, diaeresis - - A, macron - - A, breve - - A, ogonek - - C, acute - - C, circumflex - - C, dot above - - C, caron - - D, caron - - D, stroke - - E, macron - - E, breve - - E, dot above - - E, ogonek - - E, caron - - G, circumflex - - G, breve - - G, dot above - - G, cedilla - - H, circumflex - - H, stroke - - I, tilde - - I, macron - - I, breve - - I, ogonek - - Dotless I - - I, J, ligature - - J, circumflex - - K, cedilla - - Kra - - L, acute - - L, cedilla - - L, caron - - L, middle dot - - L, stroke - - N, acute - - N, cedilla - - N, caron - - N, preceded by apostrophe - - Eng - - O, macron - - O, breve - - O, double acute - - O, E, ligature - - R, acute - - R, cedilla - - R, caron - - S, acute - - S, circumflex - - S, cedilla - - S, caron - - T, cedilla - - T, caron - - T, stroke - - U, tilde - - U, macron - - U, breve - - U, ring above - - U, double acute - - U, ogonek - - W, circumflex - - Y, circumflex - - Z, acute - - Z, dot above - - Z, caron - - Long S - - O, horn - - U, horn - - S, comma below - - T, comma below - - Schwa - - A, dot below - - A, hook above - - A, circumflex and acute - - A, circumflex and grave - - A, circumflex and hook above - - A, circumflex and tilde - - A, circumflex and dot below - - A, breve and acute - - A, breve and grave - - A, breve and hook above - - A, breve and tilde - - A, breve and dot below - - E, dot below - - E, hook above - - E, tilde - - E, circumflex and acute - - E, circumflex and grave - - E, circumflex and hook above - - E, circumflex and tilde - - E, circumflex and dot below - - I, hook above - - I, dot below - - O, dot below - - O, hook above - - O, circumflex and acute - - O, circumflex and grave - - O, circumflex and hook above - - O, circumflex and tilde - - O, circumflex and dot below - - O, horn and acute - - O, horn and grave - - O, horn and hook above - - O, horn and tilde - - O, horn and dot below - - U, dot below - - U, hook above - - U, horn and acute - - U, horn and grave - - U, horn and hook above - - U, horn and tilde - - U, horn and dot below - - Y, grave - - Y, dot below - - Y, hook above - - Y, tilde - - Inverted exclamation mark - - Left-pointing double angle quotation mark - - Middle dot - - Superscript one - - Right-pointing double angle quotation mark - - Inverted question mark - - Left single quotation mark - - Right single quotation mark - - Single low-9 quotation mark - - Left double quotation mark - - Right double quotation mark - - Dagger - - Double dagger - - Per mille sign - - Prime - - Double prime - - Single left-pointing angle quotation mark - - Single right-pointing angle quotation mark - - Superscript four - - Superscript latin small letter n - - Peso sign - - Care of - - Rightwards arrow - - Downwards arrow - - Empty set - - Increment - - Less-than or equal to - - Greater-than or equal to - - Black star - diff --git a/app/src/main/res/values/strings-talkback-descriptions.xml b/app/src/main/res/values/strings-talkback-descriptions.xml index 91cb046e16..60a4d4fcb4 100644 --- a/app/src/main/res/values/strings-talkback-descriptions.xml +++ b/app/src/main/res/values/strings-talkback-descriptions.xml @@ -1,21 +1,8 @@ @@ -33,6 +20,8 @@ No suggestion + + Clipboard suggestion Unknown character @@ -116,31 +105,27 @@ URL - Recents - - People + Recents - Objects - - Nature - - Places + Objects - Symbols + Symbols - Flags + Flags + + Smiley - Smiley and People + Smiley and People - Animals & Nature + Animals & Nature - Food & Drink + Food & Drink - Travel & Places + Travel & Places - Activity + Activity - Emoticons + Emoticons Capital %s @@ -150,27 +135,11 @@ Capital I, dot above - - Unknown symbol - - Unknown emoji - - Bored face - - Embarrassed face - - Face wearing sunglasses - - Surprised face - - Kissing face - - Frowning face - - Alternative characters are available - - Alternative characters are dismissed + + Alternative characters are available + + Alternative characters are dismissed Alternative suggestions are available diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2e0ccc1875..3a8a4f77db 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,578 +1,924 @@ - OpenBoard - - OpenBoard Spell Checker - - OpenBoard Settings - - OpenBoard Spell Checker Settings - - Input options - - Look up contact names - - Spell checker uses entries from your contact list + Copyright (C) 2008 The Android Open Source Project + modified + SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only +--> + + + HeliBoard Spell Checker + + HeliBoard Settings + + HeliBoard Spell Checker Settings Vibrate on keypress + + Vibrate in do not disturb mode Sound on keypress + + Suggest emojis + + Use emoji dictionary in normal suggestions + + Inline emoji search + + Suggest only emojis when a word is preceded by a colon + + An emoji dictionary is required for this feature to work. Dictionaries in .dict format can be downloaded %s. + + Show emoji description on long press Popup on keypress - + Preferences - - Accounts & Privacy - - Appearance & Layouts - + Gesture Typing - + Text correction - + Advanced - + Theme - + Input - + Additional keys - + Clipboard history - + Corrections - + + Space + Suggestions - + Experimental - + Miscellaneous - + Enable split keyboard - - - - - - - - - - - - - - Switch to other input methods - - Language switch key covers other input methods too - + + Enable split keyboard (landscape) + + Split distance + + Switch to other input methods + + Switch language + + Switch both + Language switch key - - Show when multiple input languages are enabled + + Language switch key behavior Emoji key - - Key popup dismiss delay - - No delay - - Default - - %sms - - %smin. - + + %s ms + + %s min + System default - + No limit - - Suggest Contact names - - Use contact names for suggestions and corrections - + + Look up contact names + + Use names from Contacts for suggestions and corrections + + Look up app names + + Use names of installed apps for suggestions and corrections + Personalized suggestions - - "Improve %s" - + + Warning: Disabling this setting will clear learned data + + Add words to personal dictionary + + Use device personal dictionary to store learned words + Double-space period - + Double tap on spacebar inserts a period followed by a space Auto-capitalization Capitalize the first word of each sentence - + Personal dictionary - - Add-on dictionaries Main dictionary Show correction suggestions Display suggested words while typing - + + Always show suggestions + + Ignore other apps’ request to disable suggestions (may cause issues) + + Don’t always show suggestions for web edit fields + + Web edit fields (mostly found in browsers) are a very common cause for issues with the always show suggestions setting + Block offensive words - + Do not suggest potentially offensive words - - - Auto-correction - + + Auto-correction + Spacebar and punctuation automatically correct mistyped words - - Off - + + More auto-correction + + Auto-correct even when not explicitly requested by the input field + + Auto-correction confidence + + Auto-correct shortcuts + + When enabled shortcuts might be expanded by autocorrect + + Backspace reverts autocorrect + + Off + Modest - + Aggressive - + Very aggressive + + Always use middle suggestion + + On pressing space or punctuation, the middle suggestion will be entered Next-word suggestions Use the previous word in making suggestions - + + Punctuation suggestions + + Show punctuation when no other suggestions are available + + Suggest clipboard content + + Show recently copied clipboard content as a suggestion + Enable gesture typing - + Input a word by sliding through the letters - + + Swipe down to hide keyboard + + Dismiss keyboard by swiping down + Show gesture trail - + + Floating preview + + See the suggested word while gesturing + Dynamic floating preview - - See the suggested word while gesturing - + + Move the preview during a gesture + Phrase gesture - + Input spaces during gestures by gliding to the space key - - Voice input key - - No voice input methods enabled. Check Languages & input settings. - - Clipboard key + + Rapid typing cooldown + + Always start instantly + + Gesture trail lifespan Enable clipboard history If disabled, clipboard key will paste clipboard content if any - + History retention time + + Show pinned items on top Delete swipe Perform a swipe from the delete key to select and remove bigger portions of text at once - - Space bar trackpad - - Swipe on the spacebar to move the cursor + + Backup and restore + + Save or load from file. Warning: restore will overwrite existing data + + Backup error: %s + + Error restoring the backup: %s + + Backup + + Restore + + Backup restored + + Format for timestamp key + + Multilingual typing + + Languages with dictionaries + + Load gesture typing library + + Provide a native library to enable gesture typing + + You will need the library for \'%s\'. Incompatible libraries may crash when using gesture typing. + \n\nWarning: loading external code can be a security risk. Only use a library from a source you trust. + + Unknown library file. Are you sure you got it from a trusted source and it is for \'%s\'? + + Load library + + Delete library + + Autospace after punctuation + + Automatically insert space after punctuation when typing a new word + + Autospace after picking a suggestion + + Autospace before gesture typing a word + + Autospace after gesture typing a word + + No autospace when pressing shift + + Shift removes pending autospace + + Show more letters with diacritics in popup + + Show variants defined in keyboard languages + + Add very common variants (default) + + Add common variants + + Add all available variants + + URL detection + + Try to detect URLs and similar as a single word - Force incognito mode + Force incognito mode Disable learning of new words - + More keys - - Configure input methods - - Languages - - Help & feedback - - Languages - - Tap again to save - - Tap here to save - - Dictionary available - - Keyboard theme - + + Languages & Layouts + Number row Always show number row - + + Show number row in symbols view + + Localize number row + + Prefer localized over latin numbers + + Show hints on number row + + Remember language per app + Show key hints Show long-press hints - + + Popup key order and hints source + + Select hint source + + Select popup key order + + Show TLD popup keys + + Replace period key popups with top level domains when typing URLs and email addresses + + Number row + @string/subtype_locale + Language (priority) + Layout + Symbols + + Toolbar mode + + Toolbar keys and suggestions + + Toolbar keys only + + Suggestions only + + Hidden + + Hide clipboard and emoji toolbars too + + Select toolbar keys + + @android:string/paste + @android:string/copy + @android:string/cut + Clipboard + Clear clipboard + Voice input + @string/layout_numpad + Settings + @android:string/selectAll + Select word + One-handed mode + Split keyboard + Full left + Full right + Page start + Page end + Left + Right + Up + Down + Word left + Word right + Page up + Page down + Undo + Redo + Close clipboard history + Emoji + + Select clipboard toolbar keys + + Select pinned toolbar keys + + Pin toolbar key on long press + + This will disable other long press actions for toolbar keys that are not pinned + + Show functional hints + + Show hints if long-pressing a key triggers additional functionality + + Remove redundant popups + + Suppress popup keys that are already present on the base layout + Change input method with space key Long pressing space key will prompt input method selection menu - - Enable keyboard resizing - + + Long press symbols key for numpad + + Narrow key gaps + Keyboard height scale - - Switch accounts - - No accounts selected - - Currently using %1$s - - OK - - Cancel - - Sign out - - Select an account to use - + + Key height scale + + Vertical gap scale + + Bottom padding scale + + Side padding scale + + Keyboard font scale + + Emoji view font scale + + Scale emoji key size with font size + + Default emoji skin tone + + Neutral + + Custom text on space bar + + Set custom font from file + + Set custom emoji font from file + English (UK) - + English (US) - + Spanish (US) - - Hinglish - - Serbian (Latin) - - English (UK) (%s) - - English (US) (%s) - - Spanish (US) (%s) - - Hinglish (%s) - - Serbian (%s) - - %s (Traditional) - %s (Akkhor) - - %s (Compact) + + Serbian (Latin) + + Hinglish + + Mansi + + Kaitag + + Dagbani + + Sesotho + + Dargwa (Urakhi) + + Mari (Eastern) + + %1$s (%2$s) + + %s (Extended) + + %s (Traditional) + + %s (Akkhor) + + %s (Probhat) + + %s (Baishakhi) + + %s (Khipro) + + %s (Compact) + + %s (Phonetic) + + %s (Sebeolsik 390) + + %s (Sebeolsik Final) + + %s (Student) - No language (Alphabet) - - Alphabet (QWERTY) - - Alphabet (QWERTZ) - - Alphabet (AZERTY) - - Alphabet (Dvorak) - - Alphabet (Colemak) - - Alphabet (Colemak Mod-DH) - - Alphabet (Workman) - Alphabet (PC) - +language, hence "No language". --> + No language + Emoji - - Keyboard theme - - Custom input styles - - Add style - + Add - + Remove - + Save - + + Load + Language - + Layout - - "Your custom input style needs to be enabled before you start using it. Do you want to enable it now?" - - Enable - - Not now - - "The same input style already exists: %s" - + + Add custom layout + + Select a file in a compatible format. Information about the formats is available %s. + + Load file + + Save to file + + Copy to Clipboard + + Cannot read file + + Really delete custom layout %s? + + Warning: layout is in currently use + + Layout error: %s + + Tap to edit raw layout + + Secondary layouts + + Functional keys + + Functional keys (large screen) + + Functional keys (Symbols) + + Functional keys (More symbols) + + Symbols + + Symbols (Arabic) + + More symbols + + Phone + + Phone symbols + + Numbers + + Numpad + + Numpad (landscape) + + Number row + + Number row (basic) + + Emoji bottom row + + Emoji bottom row with action key + + Clipboard bottom row + + Clipboard bottom row with action key + + Set background image + + Set background image (landscape) + + If not set, portrait image will be used + + Customize currencies + + Set main and up to 6 secondary currency symbols, separated with space + + Switch to main keyboard after… + + Selecting emoji in emoji view + + Selecting clipboard history entry + + Pressing enter or space after other keys in symbols view + + Pressing enter or space after other keys in numpad + + Set image for day or night mode? + + Day + + Night + Keypress vibration duration - + Keypress sound volume - + Key long press delay - + + Override Emoji version + Emoji for physical keyboard - + Physical Alt key shows the emoji palette - + Default - - "Welcome to %s" - + + "Welcome to %s" + with Gesture Typing - + Get started - - Next step - - "Setting up %s" - - 1 - - "Enable %s" - - "Please check \"%s\" in your Languages & input settings. This will authorize it to run on your device." - - "%s is already enabled in your Languages & input settings, so this step is done. On to the next one!" - + + "Setting up %s" + + "Enable %s" + + "Please check \"%s\" in your Languages & input settings. This will authorize it to run on your device." + Enable in Settings - - 2 - - "Switch to %s" - - "Next, select \"%s\" as your active text-input method." - + + "Switch to %s" + + "Next, select \"%s\" as your active text-input method." + Switch input methods - - 3 - + "Congratulations, you're all set!" - - Now you can type in all your favorite apps with %s. - - Configure additional languages - + + Now you can type in all your favorite apps with %s. + + Configure the keyboard + Finished - + Show app icon - + Display application icon in the launcher - - Dictionary Provider - - Dictionary Provider - - Dictionary Service - - Dictionary update information - - Add-on dictionaries - - Settings for dictionaries - - User dictionaries - - User dictionary + + Add-on dictionaries + + Dictionaries + + Internal main dictionary + + "Add dictionary from file" + + "Select language" + + "Really replace user-added dictionary \"%1$s\"?\n +Current dictionary: +%2$s\n +New dictionary: +%3$s" + + "Replace dictionary" + + "Really remove user-added dictionary \"%s\"?" + + "Without a dictionary, you will only get suggestions for text you entered before.<br> + You can download dictionaries %1$s, or check whether a dictionary for \"%2$s\" can be downloaded directly %3$s." + + "Don't show again" + + "Select a dictionary to add. Dictionaries in .dict format can be downloaded %s." + + "here" + + "%s (experimental)" + + "Error: Selected file is not a valid dictionary file" + + "Error: script not compatible with this keyboard" + + "Error loading dictionary file" Dictionary available - - Currently downloading - - Installed - - Installed, disabled - - Problem connecting to dictionary service - - No dictionaries available - - Refresh - - Last updated - - Checking for updates - - Loading… - - Main dictionary - - Cancel - - Settings - - Install - - Cancel - - Delete - - Version %1$s - - - "" - - - Add - - - Add to dictionary - - - Phrase - - - More options - - - Less options - - - OK - - - Word: - - + + + Delete + + Version %s + Shortcut: - - + + Weight: + Language: - - + Type a word - - + Optional shortcut - Edit word - - - Edit - - - Delete - - - You don\'t have any words in the user dictionary. To add a word, tap the Add (+) button. - For all languages - - - More languages… - - - Delete - - - \u0020ABCDEFGHIJKLMNOPQRSTUVWXYZ - - Theme family - - Theme variant - + + More languages… + + This word is already present in the %s user dictionary. Please type another one. + + Add a word + + Style + + Icon style + + Rounded + + Colors + + Colors (night) + Key borders - + Auto day/night mode Appearance will follow system settings - - Deep black backgrounds - - Can reduce power usage depending on the device’s screen technology - \ No newline at end of file + + Color navigation bar + + Light + + Holo White + + Dark + + Darker + + Black + + Dynamic colors + + Blue Gray + + Brown + + Chocolate + + Cloudy + + Forest + + Indigo + + Ocean + + Pink + + Sand + + Violette + + User-Defined + + + Choose color automatically + + Show main colors only + + Show more colors + + Show all colors + + This setting exposes all colors that are used internally. The list of colors may change at any time. The default is derived from the normal colors, and the names will not be translated. + + Keyboard background + + Key text + + Key hint text + + Suggestion strip text + + Key background + + Functional key background + + Space bar background + + Space bar text + + Accent + + Gesture input + + "You can find and share colors in the %s." + + "You can find and share layouts in the %s." + + "discussion section" + + About + + Version + + View on GitHub + + Go to Wiki + + The Wiki can be improved by any GitHub user! + + Save log + + Open-source license + + GNU General Public License v3.0 + + Close + + Tap the language to open settings + + Choose input method + + Appearance + + Toolbar + + Description of hidden features + + Show features that may go unnoticed + + device protected storage + + ► Long-pressing pinned toolbar keys results in additional functionality: <br> +\n\t• clipboard &#65515; paste <br> +\n\t• move left/right &#65515; word left/right <br> +\n\t• move up/down &#65515; page up/down <br> +\n\t• word left/right &#65515; line start/end <br> +\n\t• page up/down &#65515; page start/end <br> +\n\t• copy &#65515; cut <br> +\n\t• select word &#8596; select all <br> +\n\t• undo &#8596; redo <br> <br> +\n► Long-pressing keys in the suggestion strip toolbar pins them to the suggestion strip. <br> <br> +\n► Long-press the Comma-key to access Clipboard View, Emoji View, One-handed Mode, Settings, or Switch Language: <br> +\n\t• Emoji View and Language Switch will disappear if you have the corresponding key enabled; <br> +\n\t• For some layouts it\\\'s not the Comma-key, but the key at the same position (e.g. it\\\'s \\\'q\\\' for Dvorak layout). <br> <br> +\n► When incognito mode is enabled, no words will be learned, and no emojis will be added to recents. <br> <br> +\n► Press the Incognito icon to access the toolbar. <br> <br> +\n► Sliding key input: Swipe from shift to another key to type a single uppercase key: <br> +\n\t• This also works for the \\\'?123\\\' key to type a single symbol from the symbols keyboard, and for related keys. <br> <br> +\n► Hold shift or symbol key, press one or more keys, and then release shift or symbol key to return to the previous keyboard. <br> <br> +\n► Long-press a suggestion in the suggestion strip to show more suggestions, and a delete button to remove this suggestion. <br> <br> +\n► Swipe up from a suggestion to open more suggestions, and release on the suggestion to select it. <br> <br> +\n► Long-press an entry in the clipboard history to pin it (keep it in clipboard until you unpin). <br> <br> +\n► Swipe left in clipboard view to remove an entry (except when it\\\'s pinned) <br> <br> +\n► Select text and press shift to switch between uppercase, lowercase and capitalize words. <br> <br> +\n► You can add dictionaries by opening them in a file explorer: <br> +\n\t• This only works with <i>content-uris</i> and not with <i>file-uris</i>, meaning that it may not work with some file explorers. <br> <br> +\n► For users doing manual backups with root access: <br> +\n\t• Starting at Android 7, the shared preferences file is not in the default location, because the app is using %s. This is necessary so the settings can be read before the device is unlocked, e.g. at boot; <br> +\n\t• The file is located in /data/user_de/0/package_id/shared_prefs/ though this may depend on the device and Android version. <br> <br> +\n<i><b>Debug mode / debug APK</b></i> <br> <br> +\n► Long-press a suggestion to show the source dictionary. <br> <br> +\n► When using debug APK, you can find Debug Settings within the Advanced Preferences,though the usefulness is limited except for dumping dictionaries into the log. <br> +\n\t• For a release APK, you need to tap the version in <i>About</i> several times, then you can find debug settings in <i>Advanced Preferences</i>. <br> +\n\t• When enabling <i>Show suggestion infos</i>, suggestions will have some tiny numbers on top showing some internal score and source dictionary. <br> <br> +\n► In the event of an application crash, you will be prompted whether you want the crash logs when you open the Settings. <br> <br> +\n► When using multilingual typing, space bar will show an confidence value used for determining the currently used language. <br> <br> +\n► Suggestions will have some tiny numbers on top showing some internal score and source dictionary (can be disabled). + Learn from your communications and typed data to improve suggestions + + Go + + Next + + Prev + + Done + + Send + + Search + + Pause + + Wait + + Enter + + Tab + + Delete + + Shift + + Shift (shifted) + + Caps lock + + Space (number layout) + + End one-handed mode + + Resize one-handed mode + + Switch one-handed mode side + + Voice input disabled + + Show / hide toolbar + + @string/show_language_switch_key + + Zero-width joiner + + Zero-width non-joiner + + Bin + + Horizontal spacebar swipe gesture + + Vertical spacebar swipe gesture + + None + + Move cursor + + Toggle numpad + + Hide keyboard + + Variable toolbar direction + + Reverse direction when a right-to-left keyboard subtype is selected + + Switch language swipe distance + + Customize toolbar key codes + + Really clear all customized key codes? + + Key code + + Long press code + + Auto show toolbar + + Show the toolbar if input starts or text is selected + + Auto hide toolbar + + Hide the toolbar when suggestions become available + + Content copied + + Customize icons + + Really reset all customized icons? + + Really delete %s? + + Invalid name + + Custom subtype + + Landscape + diff --git a/app/src/main/res/values/themes-common.xml b/app/src/main/res/values/themes-common.xml index 2f8bcedf50..6d2ede1177 100644 --- a/app/src/main/res/values/themes-common.xml +++ b/app/src/main/res/values/themes-common.xml @@ -1,43 +1,31 @@ - - - - diff --git a/app/src/main/res/values/themes-holo_base.xml b/app/src/main/res/values/themes-holo_base.xml new file mode 100644 index 0000000000..f57f237faa --- /dev/null +++ b/app/src/main/res/values/themes-holo_base.xml @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/themes-ics.xml b/app/src/main/res/values/themes-ics.xml deleted file mode 100644 index 2a1609d935..0000000000 --- a/app/src/main/res/values/themes-ics.xml +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values/themes-klp.xml b/app/src/main/res/values/themes-klp.xml deleted file mode 100644 index 0696bac4e1..0000000000 --- a/app/src/main/res/values/themes-klp.xml +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values/themes-lxx-auto-amoled.xml b/app/src/main/res/values/themes-lxx-auto-amoled.xml deleted file mode 100644 index 704a46fb70..0000000000 --- a/app/src/main/res/values/themes-lxx-auto-amoled.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/themes-lxx-base.xml b/app/src/main/res/values/themes-lxx-base.xml new file mode 100644 index 0000000000..745966275a --- /dev/null +++ b/app/src/main/res/values/themes-lxx-base.xml @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/themes-lxx-dark-amoled.xml b/app/src/main/res/values/themes-lxx-dark-amoled.xml deleted file mode 100644 index 4d93cb1307..0000000000 --- a/app/src/main/res/values/themes-lxx-dark-amoled.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values/themes-lxx-dark-border.xml b/app/src/main/res/values/themes-lxx-dark-border.xml deleted file mode 100644 index 977ca64668..0000000000 --- a/app/src/main/res/values/themes-lxx-dark-border.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values/themes-lxx-dark.xml b/app/src/main/res/values/themes-lxx-dark.xml deleted file mode 100644 index 8ec131fb0b..0000000000 --- a/app/src/main/res/values/themes-lxx-dark.xml +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values/themes-lxx-light-border.xml b/app/src/main/res/values/themes-lxx-light-border.xml deleted file mode 100644 index 5e5dc4ea3d..0000000000 --- a/app/src/main/res/values/themes-lxx-light-border.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values/themes-lxx-light.xml b/app/src/main/res/values/themes-lxx-light.xml deleted file mode 100644 index 62dc321ccf..0000000000 --- a/app/src/main/res/values/themes-lxx-light.xml +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values/themes-lxx.xml b/app/src/main/res/values/themes-lxx.xml index 6f50fbfa1d..d95fde2270 100644 --- a/app/src/main/res/values/themes-lxx.xml +++ b/app/src/main/res/values/themes-lxx.xml @@ -1,29 +1,17 @@ - + diff --git a/app/src/main/res/values/themes-rounded-base-border.xml b/app/src/main/res/values/themes-rounded-base-border.xml new file mode 100644 index 0000000000..568418e70e --- /dev/null +++ b/app/src/main/res/values/themes-rounded-base-border.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/themes-rounded-base.xml b/app/src/main/res/values/themes-rounded-base.xml new file mode 100644 index 0000000000..a99077eacf --- /dev/null +++ b/app/src/main/res/values/themes-rounded-base.xml @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/touch-position-correction.xml b/app/src/main/res/values/touch-position-correction.xml index 1731cdd3d3..637ed23e07 100644 --- a/app/src/main/res/values/touch-position-correction.xml +++ b/app/src/main/res/values/touch-position-correction.xml @@ -1,24 +1,10 @@ - - - - - diff --git a/app/src/main/res/xml-land/kbd_phone.xml b/app/src/main/res/xml-land/kbd_phone.xml deleted file mode 100644 index 6755468e3e..0000000000 --- a/app/src/main/res/xml-land/kbd_phone.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml-land/kbd_phone_symbols.xml b/app/src/main/res/xml-land/kbd_phone_symbols.xml deleted file mode 100644 index 7528b3e771..0000000000 --- a/app/src/main/res/xml-land/kbd_phone_symbols.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml-sw600dp-land/kbd_more_keys_keyboard_template.xml b/app/src/main/res/xml-sw600dp-land/kbd_more_keys_keyboard_template.xml deleted file mode 100644 index b606dbdf61..0000000000 --- a/app/src/main/res/xml-sw600dp-land/kbd_more_keys_keyboard_template.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - diff --git a/app/src/main/res/xml-sw600dp-land/kbd_number.xml b/app/src/main/res/xml-sw600dp-land/kbd_number.xml deleted file mode 100644 index de02deebc5..0000000000 --- a/app/src/main/res/xml-sw600dp-land/kbd_number.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml-sw600dp-land/kbd_phone.xml b/app/src/main/res/xml-sw600dp-land/kbd_phone.xml deleted file mode 100644 index 6a8acaf35a..0000000000 --- a/app/src/main/res/xml-sw600dp-land/kbd_phone.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml-sw600dp-land/kbd_phone_symbols.xml b/app/src/main/res/xml-sw600dp-land/kbd_phone_symbols.xml deleted file mode 100644 index 6314c097b6..0000000000 --- a/app/src/main/res/xml-sw600dp-land/kbd_phone_symbols.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/xml-sw600dp-land/kbd_popup_keys_keyboard_template.xml b/app/src/main/res/xml-sw600dp-land/kbd_popup_keys_keyboard_template.xml new file mode 100644 index 0000000000..a1de24e5bd --- /dev/null +++ b/app/src/main/res/xml-sw600dp-land/kbd_popup_keys_keyboard_template.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/app/src/main/res/xml-sw600dp-land/key_space_3kw.xml b/app/src/main/res/xml-sw600dp-land/key_space_3kw.xml deleted file mode 100644 index 1e74496ec4..0000000000 --- a/app/src/main/res/xml-sw600dp-land/key_space_3kw.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp-land/row_qwerty4.xml b/app/src/main/res/xml-sw600dp-land/row_qwerty4.xml deleted file mode 100644 index 41300c5bc6..0000000000 --- a/app/src/main/res/xml-sw600dp-land/row_qwerty4.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp-land/rows_german.xml b/app/src/main/res/xml-sw600dp-land/rows_german.xml deleted file mode 100644 index 7f4274d01d..0000000000 --- a/app/src/main/res/xml-sw600dp-land/rows_german.xml +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp-land/rows_qwerty.xml b/app/src/main/res/xml-sw600dp-land/rows_qwerty.xml deleted file mode 100644 index 9223d8d949..0000000000 --- a/app/src/main/res/xml-sw600dp-land/rows_qwerty.xml +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp-land/rows_qwertz.xml b/app/src/main/res/xml-sw600dp-land/rows_qwertz.xml deleted file mode 100644 index 5dbd4e642e..0000000000 --- a/app/src/main/res/xml-sw600dp-land/rows_qwertz.xml +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/kbd_more_keys_keyboard_template.xml b/app/src/main/res/xml-sw600dp/kbd_more_keys_keyboard_template.xml deleted file mode 100644 index cbed0e0100..0000000000 --- a/app/src/main/res/xml-sw600dp/kbd_more_keys_keyboard_template.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - diff --git a/app/src/main/res/xml-sw600dp/kbd_number.xml b/app/src/main/res/xml-sw600dp/kbd_number.xml deleted file mode 100644 index d46a575ef9..0000000000 --- a/app/src/main/res/xml-sw600dp/kbd_number.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml-sw600dp/kbd_phone.xml b/app/src/main/res/xml-sw600dp/kbd_phone.xml deleted file mode 100644 index dcfa1af1ab..0000000000 --- a/app/src/main/res/xml-sw600dp/kbd_phone.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml-sw600dp/kbd_phone_symbols.xml b/app/src/main/res/xml-sw600dp/kbd_phone_symbols.xml deleted file mode 100644 index 9af3c8aec3..0000000000 --- a/app/src/main/res/xml-sw600dp/kbd_phone_symbols.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/kbd_popup_keys_keyboard_template.xml b/app/src/main/res/xml-sw600dp/kbd_popup_keys_keyboard_template.xml new file mode 100644 index 0000000000..250cc74728 --- /dev/null +++ b/app/src/main/res/xml-sw600dp/kbd_popup_keys_keyboard_template.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/app/src/main/res/xml-sw600dp/key_comma.xml b/app/src/main/res/xml-sw600dp/key_comma.xml deleted file mode 100644 index 84ac7f981c..0000000000 --- a/app/src/main/res/xml-sw600dp/key_comma.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/key_period.xml b/app/src/main/res/xml-sw600dp/key_period.xml deleted file mode 100644 index 554f7ab07e..0000000000 --- a/app/src/main/res/xml-sw600dp/key_period.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/key_settings.xml b/app/src/main/res/xml-sw600dp/key_settings.xml deleted file mode 100644 index a11efe1a50..0000000000 --- a/app/src/main/res/xml-sw600dp/key_settings.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/key_space_3kw.xml b/app/src/main/res/xml-sw600dp/key_space_3kw.xml deleted file mode 100644 index 5a46f17b84..0000000000 --- a/app/src/main/res/xml-sw600dp/key_space_3kw.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/key_space_7kw.xml b/app/src/main/res/xml-sw600dp/key_space_7kw.xml deleted file mode 100644 index 89111772f3..0000000000 --- a/app/src/main/res/xml-sw600dp/key_space_7kw.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/key_space_symbols.xml b/app/src/main/res/xml-sw600dp/key_space_symbols.xml deleted file mode 100644 index 43270970bb..0000000000 --- a/app/src/main/res/xml-sw600dp/key_space_symbols.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml-sw600dp/key_styles_common.xml b/app/src/main/res/xml-sw600dp/key_styles_common.xml deleted file mode 100644 index d20e9739ed..0000000000 --- a/app/src/main/res/xml-sw600dp/key_styles_common.xml +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/key_styles_enter.xml b/app/src/main/res/xml-sw600dp/key_styles_enter.xml deleted file mode 100644 index 3094ac57d1..0000000000 --- a/app/src/main/res/xml-sw600dp/key_styles_enter.xml +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/keys_arabic3_left.xml b/app/src/main/res/xml-sw600dp/keys_arabic3_left.xml deleted file mode 100644 index baeb98044e..0000000000 --- a/app/src/main/res/xml-sw600dp/keys_arabic3_left.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/keys_dvorak_123.xml b/app/src/main/res/xml-sw600dp/keys_dvorak_123.xml deleted file mode 100644 index 11842f8b6b..0000000000 --- a/app/src/main/res/xml-sw600dp/keys_dvorak_123.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/keys_exclamation_question.xml b/app/src/main/res/xml-sw600dp/keys_exclamation_question.xml deleted file mode 100644 index 3651fddfef..0000000000 --- a/app/src/main/res/xml-sw600dp/keys_exclamation_question.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/keys_farsi3_right.xml b/app/src/main/res/xml-sw600dp/keys_farsi3_right.xml deleted file mode 100644 index 396a4be266..0000000000 --- a/app/src/main/res/xml-sw600dp/keys_farsi3_right.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/keys_pcqwerty2_right3.xml b/app/src/main/res/xml-sw600dp/keys_pcqwerty2_right3.xml deleted file mode 100644 index 02e8a971d4..0000000000 --- a/app/src/main/res/xml-sw600dp/keys_pcqwerty2_right3.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml-sw600dp/keys_pcqwerty3_right2.xml b/app/src/main/res/xml-sw600dp/keys_pcqwerty3_right2.xml deleted file mode 100644 index a0ad182a97..0000000000 --- a/app/src/main/res/xml-sw600dp/keys_pcqwerty3_right2.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/keys_pcqwerty4_right3.xml b/app/src/main/res/xml-sw600dp/keys_pcqwerty4_right3.xml deleted file mode 100644 index 05f03f9dff..0000000000 --- a/app/src/main/res/xml-sw600dp/keys_pcqwerty4_right3.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/row_pcqwerty5.xml b/app/src/main/res/xml-sw600dp/row_pcqwerty5.xml deleted file mode 100644 index aef0a9df05..0000000000 --- a/app/src/main/res/xml-sw600dp/row_pcqwerty5.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/row_qwerty4.xml b/app/src/main/res/xml-sw600dp/row_qwerty4.xml deleted file mode 100644 index 7eb6da8a92..0000000000 --- a/app/src/main/res/xml-sw600dp/row_qwerty4.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rowkeys_dvorak3.xml b/app/src/main/res/xml-sw600dp/rowkeys_dvorak3.xml deleted file mode 100644 index ce98a97334..0000000000 --- a/app/src/main/res/xml-sw600dp/rowkeys_dvorak3.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rowkeys_pcqwerty1.xml b/app/src/main/res/xml-sw600dp/rowkeys_pcqwerty1.xml deleted file mode 100644 index 094d1c6ab5..0000000000 --- a/app/src/main/res/xml-sw600dp/rowkeys_pcqwerty1.xml +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_arabic.xml b/app/src/main/res/xml-sw600dp/rows_arabic.xml deleted file mode 100644 index c5ca605ae9..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_arabic.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_arabic_pc.xml b/app/src/main/res/xml-sw600dp/rows_arabic_pc.xml deleted file mode 100644 index 358e11fa82..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_arabic_pc.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_armenian_phonetic.xml b/app/src/main/res/xml-sw600dp/rows_armenian_phonetic.xml deleted file mode 100644 index 6fff3f5bba..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_armenian_phonetic.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_azerty.xml b/app/src/main/res/xml-sw600dp/rows_azerty.xml deleted file mode 100644 index 7da5375569..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_azerty.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_bengali.xml b/app/src/main/res/xml-sw600dp/rows_bengali.xml deleted file mode 100644 index df7f334f29..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_bengali.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_bengali_akkhor.xml b/app/src/main/res/xml-sw600dp/rows_bengali_akkhor.xml deleted file mode 100644 index a4225ba3d4..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_bengali_akkhor.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml-sw600dp/rows_bengali_unijoy.xml b/app/src/main/res/xml-sw600dp/rows_bengali_unijoy.xml deleted file mode 100644 index 762b449dc6..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_bengali_unijoy.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_bepo.xml b/app/src/main/res/xml-sw600dp/rows_bepo.xml deleted file mode 100644 index 6de124b377..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_bepo.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_bulgarian.xml b/app/src/main/res/xml-sw600dp/rows_bulgarian.xml deleted file mode 100644 index cad3b39412..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_bulgarian.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_bulgarian_bds.xml b/app/src/main/res/xml-sw600dp/rows_bulgarian_bds.xml deleted file mode 100644 index 0dcc133268..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_bulgarian_bds.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_bulgarian_bekl.xml b/app/src/main/res/xml-sw600dp/rows_bulgarian_bekl.xml deleted file mode 100644 index b898950c64..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_bulgarian_bekl.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_colemak.xml b/app/src/main/res/xml-sw600dp/rows_colemak.xml deleted file mode 100644 index e940470b46..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_colemak.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_colemak_dh.xml b/app/src/main/res/xml-sw600dp/rows_colemak_dh.xml deleted file mode 100644 index 208c9b9b80..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_colemak_dh.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_dvorak.xml b/app/src/main/res/xml-sw600dp/rows_dvorak.xml deleted file mode 100644 index 3be0577bf4..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_dvorak.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_east_slavic.xml b/app/src/main/res/xml-sw600dp/rows_east_slavic.xml deleted file mode 100644 index 1fb7693fd3..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_east_slavic.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_farsi.xml b/app/src/main/res/xml-sw600dp/rows_farsi.xml deleted file mode 100644 index 84507af633..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_farsi.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_georgian.xml b/app/src/main/res/xml-sw600dp/rows_georgian.xml deleted file mode 100644 index ba7ff6d63f..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_georgian.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_german.xml b/app/src/main/res/xml-sw600dp/rows_german.xml deleted file mode 100644 index 3dbeb73512..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_german.xml +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_greek.xml b/app/src/main/res/xml-sw600dp/rows_greek.xml deleted file mode 100644 index 4fbf38fccd..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_greek.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_hebrew.xml b/app/src/main/res/xml-sw600dp/rows_hebrew.xml deleted file mode 100644 index 488183c610..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_hebrew.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_hindi.xml b/app/src/main/res/xml-sw600dp/rows_hindi.xml deleted file mode 100644 index c405adc167..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_hindi.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_hindi_compact.xml b/app/src/main/res/xml-sw600dp/rows_hindi_compact.xml deleted file mode 100644 index 2a449401b2..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_hindi_compact.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_kannada.xml b/app/src/main/res/xml-sw600dp/rows_kannada.xml deleted file mode 100644 index 44fd053930..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_kannada.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_khmer.xml b/app/src/main/res/xml-sw600dp/rows_khmer.xml deleted file mode 100644 index 1f0619febc..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_khmer.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_lao.xml b/app/src/main/res/xml-sw600dp/rows_lao.xml deleted file mode 100644 index cb958248f3..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_lao.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_malayalam.xml b/app/src/main/res/xml-sw600dp/rows_malayalam.xml deleted file mode 100644 index e6e83e2ead..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_malayalam.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_marathi.xml b/app/src/main/res/xml-sw600dp/rows_marathi.xml deleted file mode 100644 index 39f67658ba..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_marathi.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_mongolian.xml b/app/src/main/res/xml-sw600dp/rows_mongolian.xml deleted file mode 100644 index cacdcb83ed..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_mongolian.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_nepali_romanized.xml b/app/src/main/res/xml-sw600dp/rows_nepali_romanized.xml deleted file mode 100644 index dbddc20526..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_nepali_romanized.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_nepali_traditional.xml b/app/src/main/res/xml-sw600dp/rows_nepali_traditional.xml deleted file mode 100644 index 7f43bf8809..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_nepali_traditional.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_nordic.xml b/app/src/main/res/xml-sw600dp/rows_nordic.xml deleted file mode 100644 index 4729a72076..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_nordic.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_number_normal.xml b/app/src/main/res/xml-sw600dp/rows_number_normal.xml deleted file mode 100644 index c364a33c62..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_number_normal.xml +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_number_password.xml b/app/src/main/res/xml-sw600dp/rows_number_password.xml deleted file mode 100644 index 543cf7d772..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_number_password.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_pcqwerty.xml b/app/src/main/res/xml-sw600dp/rows_pcqwerty.xml deleted file mode 100644 index b88952f874..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_pcqwerty.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_phone.xml b/app/src/main/res/xml-sw600dp/rows_phone.xml deleted file mode 100644 index 9a9c9b9a20..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_phone.xml +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_qwerty.xml b/app/src/main/res/xml-sw600dp/rows_qwerty.xml deleted file mode 100644 index 166156bd28..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_qwerty.xml +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_qwertz.xml b/app/src/main/res/xml-sw600dp/rows_qwertz.xml deleted file mode 100644 index cfd867c9db..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_qwertz.xml +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_serbian_qwertz.xml b/app/src/main/res/xml-sw600dp/rows_serbian_qwertz.xml deleted file mode 100644 index 5fd48c6170..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_serbian_qwertz.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_sinhala.xml b/app/src/main/res/xml-sw600dp/rows_sinhala.xml deleted file mode 100644 index 7fb6afd63a..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_sinhala.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_south_slavic.xml b/app/src/main/res/xml-sw600dp/rows_south_slavic.xml deleted file mode 100644 index add4eace75..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_south_slavic.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_spanish.xml b/app/src/main/res/xml-sw600dp/rows_spanish.xml deleted file mode 100644 index 0f6727dcc0..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_spanish.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_swiss.xml b/app/src/main/res/xml-sw600dp/rows_swiss.xml deleted file mode 100644 index 13c73e573e..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_swiss.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_symbols.xml b/app/src/main/res/xml-sw600dp/rows_symbols.xml deleted file mode 100644 index d15b4f3c64..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_symbols.xml +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_symbols_shift.xml b/app/src/main/res/xml-sw600dp/rows_symbols_shift.xml deleted file mode 100644 index 4c61b0b585..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_symbols_shift.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_tamil.xml b/app/src/main/res/xml-sw600dp/rows_tamil.xml deleted file mode 100644 index dd97aab9f3..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_tamil.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_telugu.xml b/app/src/main/res/xml-sw600dp/rows_telugu.xml deleted file mode 100644 index 6fb934805a..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_telugu.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_thai.xml b/app/src/main/res/xml-sw600dp/rows_thai.xml deleted file mode 100644 index 3d359a2244..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_thai.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml-sw600dp/rows_uzbek.xml b/app/src/main/res/xml-sw600dp/rows_uzbek.xml deleted file mode 100644 index bbac24fa16..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_uzbek.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml-sw600dp/rows_workman.xml b/app/src/main/res/xml-sw600dp/rows_workman.xml deleted file mode 100644 index 65b866a27c..0000000000 --- a/app/src/main/res/xml-sw600dp/rows_workman.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - Ideally just the keyWidth should be different and the spacer should adjust to fill - the available space. --> - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/additional_subtype_settings.xml b/app/src/main/res/xml/additional_subtype_settings.xml deleted file mode 100644 index 7964c752bf..0000000000 --- a/app/src/main/res/xml/additional_subtype_settings.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/dictionary_settings.xml b/app/src/main/res/xml/dictionary_settings.xml deleted file mode 100644 index 684dfe5b53..0000000000 --- a/app/src/main/res/xml/dictionary_settings.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_arabic.xml b/app/src/main/res/xml/kbd_arabic.xml deleted file mode 100644 index 4686a4c5ba..0000000000 --- a/app/src/main/res/xml/kbd_arabic.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_arabic_pc.xml b/app/src/main/res/xml/kbd_arabic_pc.xml deleted file mode 100644 index c820c16c1b..0000000000 --- a/app/src/main/res/xml/kbd_arabic_pc.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_armenian_phonetic.xml b/app/src/main/res/xml/kbd_armenian_phonetic.xml deleted file mode 100644 index 11d8f9124e..0000000000 --- a/app/src/main/res/xml/kbd_armenian_phonetic.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_azerty.xml b/app/src/main/res/xml/kbd_azerty.xml deleted file mode 100644 index 4b95b01094..0000000000 --- a/app/src/main/res/xml/kbd_azerty.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_bengali.xml b/app/src/main/res/xml/kbd_bengali.xml deleted file mode 100644 index 5684fb8862..0000000000 --- a/app/src/main/res/xml/kbd_bengali.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_bengali_akkhor.xml b/app/src/main/res/xml/kbd_bengali_akkhor.xml deleted file mode 100644 index 036c6d494d..0000000000 --- a/app/src/main/res/xml/kbd_bengali_akkhor.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/kbd_bengali_unijoy.xml b/app/src/main/res/xml/kbd_bengali_unijoy.xml deleted file mode 100644 index a4e6e170ca..0000000000 --- a/app/src/main/res/xml/kbd_bengali_unijoy.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_bepo.xml b/app/src/main/res/xml/kbd_bepo.xml deleted file mode 100644 index d0226991e4..0000000000 --- a/app/src/main/res/xml/kbd_bepo.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - diff --git a/app/src/main/res/xml/kbd_bulgarian.xml b/app/src/main/res/xml/kbd_bulgarian.xml deleted file mode 100644 index 6f09d03e82..0000000000 --- a/app/src/main/res/xml/kbd_bulgarian.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_bulgarian_bds.xml b/app/src/main/res/xml/kbd_bulgarian_bds.xml deleted file mode 100644 index 7005eddf1d..0000000000 --- a/app/src/main/res/xml/kbd_bulgarian_bds.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_bulgarian_bekl.xml b/app/src/main/res/xml/kbd_bulgarian_bekl.xml deleted file mode 100644 index aa380b22bc..0000000000 --- a/app/src/main/res/xml/kbd_bulgarian_bekl.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_colemak.xml b/app/src/main/res/xml/kbd_colemak.xml deleted file mode 100644 index 28ce857cdd..0000000000 --- a/app/src/main/res/xml/kbd_colemak.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_colemak_dh.xml b/app/src/main/res/xml/kbd_colemak_dh.xml deleted file mode 100644 index e8ab680d8c..0000000000 --- a/app/src/main/res/xml/kbd_colemak_dh.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/kbd_dvorak.xml b/app/src/main/res/xml/kbd_dvorak.xml deleted file mode 100644 index a8f1d0e251..0000000000 --- a/app/src/main/res/xml/kbd_dvorak.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_east_slavic.xml b/app/src/main/res/xml/kbd_east_slavic.xml deleted file mode 100644 index 372938e842..0000000000 --- a/app/src/main/res/xml/kbd_east_slavic.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_emoji.xml b/app/src/main/res/xml/kbd_emoji.xml new file mode 100644 index 0000000000..618bcb185b --- /dev/null +++ b/app/src/main/res/xml/kbd_emoji.xml @@ -0,0 +1,14 @@ + + + + diff --git a/app/src/main/res/xml/kbd_emoji_category1.xml b/app/src/main/res/xml/kbd_emoji_category1.xml deleted file mode 100644 index ccd2fee90a..0000000000 --- a/app/src/main/res/xml/kbd_emoji_category1.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_emoji_category10.xml b/app/src/main/res/xml/kbd_emoji_category10.xml deleted file mode 100644 index 56b185cd7a..0000000000 --- a/app/src/main/res/xml/kbd_emoji_category10.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_emoji_category2.xml b/app/src/main/res/xml/kbd_emoji_category2.xml deleted file mode 100644 index ecfc4639d5..0000000000 --- a/app/src/main/res/xml/kbd_emoji_category2.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_emoji_category3.xml b/app/src/main/res/xml/kbd_emoji_category3.xml deleted file mode 100644 index 98d9296c08..0000000000 --- a/app/src/main/res/xml/kbd_emoji_category3.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_emoji_category4.xml b/app/src/main/res/xml/kbd_emoji_category4.xml deleted file mode 100644 index a95758271c..0000000000 --- a/app/src/main/res/xml/kbd_emoji_category4.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_emoji_category5.xml b/app/src/main/res/xml/kbd_emoji_category5.xml deleted file mode 100644 index a59138564e..0000000000 --- a/app/src/main/res/xml/kbd_emoji_category5.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_emoji_category6.xml b/app/src/main/res/xml/kbd_emoji_category6.xml deleted file mode 100644 index 7860ed0cb0..0000000000 --- a/app/src/main/res/xml/kbd_emoji_category6.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_emoji_category7.xml b/app/src/main/res/xml/kbd_emoji_category7.xml deleted file mode 100644 index 2cd62ea876..0000000000 --- a/app/src/main/res/xml/kbd_emoji_category7.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_emoji_category8.xml b/app/src/main/res/xml/kbd_emoji_category8.xml deleted file mode 100644 index 03474220f5..0000000000 --- a/app/src/main/res/xml/kbd_emoji_category8.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_emoji_category9.xml b/app/src/main/res/xml/kbd_emoji_category9.xml deleted file mode 100644 index a7d081e89d..0000000000 --- a/app/src/main/res/xml/kbd_emoji_category9.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_emoji_recents.xml b/app/src/main/res/xml/kbd_emoji_recents.xml deleted file mode 100644 index 96452ba5d8..0000000000 --- a/app/src/main/res/xml/kbd_emoji_recents.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_farsi.xml b/app/src/main/res/xml/kbd_farsi.xml deleted file mode 100644 index f36e04b91f..0000000000 --- a/app/src/main/res/xml/kbd_farsi.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_georgian.xml b/app/src/main/res/xml/kbd_georgian.xml deleted file mode 100644 index 49785731a8..0000000000 --- a/app/src/main/res/xml/kbd_georgian.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_german.xml b/app/src/main/res/xml/kbd_german.xml deleted file mode 100644 index f401668722..0000000000 --- a/app/src/main/res/xml/kbd_german.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_greek.xml b/app/src/main/res/xml/kbd_greek.xml deleted file mode 100644 index 748ca2c492..0000000000 --- a/app/src/main/res/xml/kbd_greek.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_hebrew.xml b/app/src/main/res/xml/kbd_hebrew.xml deleted file mode 100644 index 4152ea8623..0000000000 --- a/app/src/main/res/xml/kbd_hebrew.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_hindi.xml b/app/src/main/res/xml/kbd_hindi.xml deleted file mode 100644 index da1672ac6a..0000000000 --- a/app/src/main/res/xml/kbd_hindi.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_hindi_compact.xml b/app/src/main/res/xml/kbd_hindi_compact.xml deleted file mode 100644 index be1c0f7b82..0000000000 --- a/app/src/main/res/xml/kbd_hindi_compact.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_kannada.xml b/app/src/main/res/xml/kbd_kannada.xml deleted file mode 100644 index 69a99cd67e..0000000000 --- a/app/src/main/res/xml/kbd_kannada.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_khmer.xml b/app/src/main/res/xml/kbd_khmer.xml deleted file mode 100644 index a6c73f2ff1..0000000000 --- a/app/src/main/res/xml/kbd_khmer.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_lao.xml b/app/src/main/res/xml/kbd_lao.xml deleted file mode 100644 index 489901e00d..0000000000 --- a/app/src/main/res/xml/kbd_lao.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_malayalam.xml b/app/src/main/res/xml/kbd_malayalam.xml deleted file mode 100644 index 85e0159aaa..0000000000 --- a/app/src/main/res/xml/kbd_malayalam.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_marathi.xml b/app/src/main/res/xml/kbd_marathi.xml deleted file mode 100644 index e0ae2225de..0000000000 --- a/app/src/main/res/xml/kbd_marathi.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_mongolian.xml b/app/src/main/res/xml/kbd_mongolian.xml deleted file mode 100644 index 57a5d15c39..0000000000 --- a/app/src/main/res/xml/kbd_mongolian.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_more_keys_keyboard_template.xml b/app/src/main/res/xml/kbd_more_keys_keyboard_template.xml deleted file mode 100644 index 0aa68d262d..0000000000 --- a/app/src/main/res/xml/kbd_more_keys_keyboard_template.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - diff --git a/app/src/main/res/xml/kbd_nepali_romanized.xml b/app/src/main/res/xml/kbd_nepali_romanized.xml deleted file mode 100644 index d1b5a277dd..0000000000 --- a/app/src/main/res/xml/kbd_nepali_romanized.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_nepali_traditional.xml b/app/src/main/res/xml/kbd_nepali_traditional.xml deleted file mode 100644 index ace0cdc5b2..0000000000 --- a/app/src/main/res/xml/kbd_nepali_traditional.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_nordic.xml b/app/src/main/res/xml/kbd_nordic.xml deleted file mode 100644 index 109c254d64..0000000000 --- a/app/src/main/res/xml/kbd_nordic.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_number.xml b/app/src/main/res/xml/kbd_number.xml deleted file mode 100644 index 37598a1f35..0000000000 --- a/app/src/main/res/xml/kbd_number.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_pcqwerty.xml b/app/src/main/res/xml/kbd_pcqwerty.xml deleted file mode 100644 index 74e4a55f47..0000000000 --- a/app/src/main/res/xml/kbd_pcqwerty.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_phone.xml b/app/src/main/res/xml/kbd_phone.xml deleted file mode 100644 index 9ca88e2050..0000000000 --- a/app/src/main/res/xml/kbd_phone.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_phone_symbols.xml b/app/src/main/res/xml/kbd_phone_symbols.xml deleted file mode 100644 index db90b28109..0000000000 --- a/app/src/main/res/xml/kbd_phone_symbols.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_popup_keys_keyboard_template.xml b/app/src/main/res/xml/kbd_popup_keys_keyboard_template.xml new file mode 100644 index 0000000000..64751bd973 --- /dev/null +++ b/app/src/main/res/xml/kbd_popup_keys_keyboard_template.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/app/src/main/res/xml/kbd_qwerty.xml b/app/src/main/res/xml/kbd_qwerty.xml deleted file mode 100644 index 6909874cc5..0000000000 --- a/app/src/main/res/xml/kbd_qwerty.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_qwertz.xml b/app/src/main/res/xml/kbd_qwertz.xml deleted file mode 100644 index 609e3e1511..0000000000 --- a/app/src/main/res/xml/kbd_qwertz.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_serbian_qwertz.xml b/app/src/main/res/xml/kbd_serbian_qwertz.xml deleted file mode 100644 index 0410376d06..0000000000 --- a/app/src/main/res/xml/kbd_serbian_qwertz.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/kbd_sinhala.xml b/app/src/main/res/xml/kbd_sinhala.xml deleted file mode 100644 index fa407dd92b..0000000000 --- a/app/src/main/res/xml/kbd_sinhala.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_south_slavic.xml b/app/src/main/res/xml/kbd_south_slavic.xml deleted file mode 100644 index 71b7601395..0000000000 --- a/app/src/main/res/xml/kbd_south_slavic.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_spanish.xml b/app/src/main/res/xml/kbd_spanish.xml deleted file mode 100644 index a8b9c1e7ff..0000000000 --- a/app/src/main/res/xml/kbd_spanish.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_suggestions_pane_template.xml b/app/src/main/res/xml/kbd_suggestions_pane_template.xml index a8f9a87d5e..bc959c9e79 100644 --- a/app/src/main/res/xml/kbd_suggestions_pane_template.xml +++ b/app/src/main/res/xml/kbd_suggestions_pane_template.xml @@ -1,25 +1,11 @@ - - + \ No newline at end of file diff --git a/app/src/main/res/xml/kbd_swiss.xml b/app/src/main/res/xml/kbd_swiss.xml deleted file mode 100644 index 3a1d1a6c30..0000000000 --- a/app/src/main/res/xml/kbd_swiss.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_symbols.xml b/app/src/main/res/xml/kbd_symbols.xml deleted file mode 100644 index 6bca4dce59..0000000000 --- a/app/src/main/res/xml/kbd_symbols.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_symbols_shift.xml b/app/src/main/res/xml/kbd_symbols_shift.xml deleted file mode 100644 index 01d6156d50..0000000000 --- a/app/src/main/res/xml/kbd_symbols_shift.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_tamil.xml b/app/src/main/res/xml/kbd_tamil.xml deleted file mode 100644 index 7456ff99cb..0000000000 --- a/app/src/main/res/xml/kbd_tamil.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_telugu.xml b/app/src/main/res/xml/kbd_telugu.xml deleted file mode 100644 index 19fdf9545c..0000000000 --- a/app/src/main/res/xml/kbd_telugu.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_thai.xml b/app/src/main/res/xml/kbd_thai.xml deleted file mode 100644 index 081b6fc6a1..0000000000 --- a/app/src/main/res/xml/kbd_thai.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/kbd_turkish.xml b/app/src/main/res/xml/kbd_turkish.xml deleted file mode 100644 index b1f947f81a..0000000000 --- a/app/src/main/res/xml/kbd_turkish.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/app/src/main/res/xml/kbd_uzbek.xml b/app/src/main/res/xml/kbd_uzbek.xml deleted file mode 100644 index d577a8e52c..0000000000 --- a/app/src/main/res/xml/kbd_uzbek.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/kbd_workman.xml b/app/src/main/res/xml/kbd_workman.xml deleted file mode 100644 index 04bbee92de..0000000000 --- a/app/src/main/res/xml/kbd_workman.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/key_armenian_sha.xml b/app/src/main/res/xml/key_armenian_sha.xml deleted file mode 100644 index 05779bb041..0000000000 --- a/app/src/main/res/xml/key_armenian_sha.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/xml/key_armenian_xeh.xml b/app/src/main/res/xml/key_armenian_xeh.xml deleted file mode 100644 index 72861c9ff6..0000000000 --- a/app/src/main/res/xml/key_armenian_xeh.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/xml/key_comma.xml b/app/src/main/res/xml/key_comma.xml deleted file mode 100644 index a1da51713a..0000000000 --- a/app/src/main/res/xml/key_comma.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/key_emoji.xml b/app/src/main/res/xml/key_emoji.xml deleted file mode 100644 index 2d56c90a17..0000000000 --- a/app/src/main/res/xml/key_emoji.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/key_period.xml b/app/src/main/res/xml/key_period.xml deleted file mode 100644 index 9a138f2185..0000000000 --- a/app/src/main/res/xml/key_period.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/key_space_5kw.xml b/app/src/main/res/xml/key_space_5kw.xml deleted file mode 100644 index ecb9b9520c..0000000000 --- a/app/src/main/res/xml/key_space_5kw.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/key_space_symbols.xml b/app/src/main/res/xml/key_space_symbols.xml deleted file mode 100644 index d84783d3aa..0000000000 --- a/app/src/main/res/xml/key_space_symbols.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/key_styles_actions.xml b/app/src/main/res/xml/key_styles_actions.xml deleted file mode 100644 index b35391ae1c..0000000000 --- a/app/src/main/res/xml/key_styles_actions.xml +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/key_styles_common.xml b/app/src/main/res/xml/key_styles_common.xml deleted file mode 100644 index aea8585ea7..0000000000 --- a/app/src/main/res/xml/key_styles_common.xml +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/key_styles_currency.xml b/app/src/main/res/xml/key_styles_currency.xml deleted file mode 100644 index ae162a5be7..0000000000 --- a/app/src/main/res/xml/key_styles_currency.xml +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/key_styles_currency_dollar.xml b/app/src/main/res/xml/key_styles_currency_dollar.xml deleted file mode 100644 index 9a2f1d0050..0000000000 --- a/app/src/main/res/xml/key_styles_currency_dollar.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/xml/key_styles_currency_euro.xml b/app/src/main/res/xml/key_styles_currency_euro.xml deleted file mode 100644 index dfae2017f1..0000000000 --- a/app/src/main/res/xml/key_styles_currency_euro.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/xml/key_styles_currency_generic.xml b/app/src/main/res/xml/key_styles_currency_generic.xml deleted file mode 100644 index 26f4ea1645..0000000000 --- a/app/src/main/res/xml/key_styles_currency_generic.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/key_styles_enter.xml b/app/src/main/res/xml/key_styles_enter.xml deleted file mode 100644 index 055542b21c..0000000000 --- a/app/src/main/res/xml/key_styles_enter.xml +++ /dev/null @@ -1,304 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/key_styles_less_greater.xml b/app/src/main/res/xml/key_styles_less_greater.xml deleted file mode 100644 index 716838b0bf..0000000000 --- a/app/src/main/res/xml/key_styles_less_greater.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/key_styles_navigate_more_keys.xml b/app/src/main/res/xml/key_styles_navigate_more_keys.xml deleted file mode 100644 index ccd201b35b..0000000000 --- a/app/src/main/res/xml/key_styles_navigate_more_keys.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/key_styles_number.xml b/app/src/main/res/xml/key_styles_number.xml deleted file mode 100644 index 622224cde0..0000000000 --- a/app/src/main/res/xml/key_styles_number.xml +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/key_styles_settings.xml b/app/src/main/res/xml/key_styles_settings.xml deleted file mode 100644 index 2d6ec6f728..0000000000 --- a/app/src/main/res/xml/key_styles_settings.xml +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/key_thai_kho_khuat.xml b/app/src/main/res/xml/key_thai_kho_khuat.xml deleted file mode 100644 index d5b333b54f..0000000000 --- a/app/src/main/res/xml/key_thai_kho_khuat.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_arabic.xml b/app/src/main/res/xml/keyboard_layout_set_arabic.xml deleted file mode 100644 index 9ce9af70d8..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_arabic.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_arabic_pc.xml b/app/src/main/res/xml/keyboard_layout_set_arabic_pc.xml deleted file mode 100644 index 7d0787bc2f..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_arabic_pc.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_armenian_phonetic.xml b/app/src/main/res/xml/keyboard_layout_set_armenian_phonetic.xml deleted file mode 100644 index a727fe29ff..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_armenian_phonetic.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_azerty.xml b/app/src/main/res/xml/keyboard_layout_set_azerty.xml deleted file mode 100644 index f793a21fcc..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_azerty.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_bengali.xml b/app/src/main/res/xml/keyboard_layout_set_bengali.xml deleted file mode 100644 index da03bc5108..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_bengali.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_bengali_akkhor.xml b/app/src/main/res/xml/keyboard_layout_set_bengali_akkhor.xml deleted file mode 100644 index d3d0a5136e..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_bengali_akkhor.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/keyboard_layout_set_bengali_unijoy.xml b/app/src/main/res/xml/keyboard_layout_set_bengali_unijoy.xml deleted file mode 100644 index 3245bbd0b3..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_bengali_unijoy.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_bepo.xml b/app/src/main/res/xml/keyboard_layout_set_bepo.xml deleted file mode 100644 index d9d248d29f..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_bepo.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_bulgarian.xml b/app/src/main/res/xml/keyboard_layout_set_bulgarian.xml deleted file mode 100644 index 6cb1efa639..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_bulgarian.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_bulgarian_bds.xml b/app/src/main/res/xml/keyboard_layout_set_bulgarian_bds.xml deleted file mode 100644 index 91d7ff4c87..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_bulgarian_bds.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_bulgarian_bekl.xml b/app/src/main/res/xml/keyboard_layout_set_bulgarian_bekl.xml deleted file mode 100644 index 157588eeb3..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_bulgarian_bekl.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_colemak.xml b/app/src/main/res/xml/keyboard_layout_set_colemak.xml deleted file mode 100644 index ef3260b9a5..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_colemak.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_colemak_dh.xml b/app/src/main/res/xml/keyboard_layout_set_colemak_dh.xml deleted file mode 100644 index a960d40e6b..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_colemak_dh.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_dvorak.xml b/app/src/main/res/xml/keyboard_layout_set_dvorak.xml deleted file mode 100644 index b35951c407..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_dvorak.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_east_slavic.xml b/app/src/main/res/xml/keyboard_layout_set_east_slavic.xml deleted file mode 100644 index 4490d6e7c6..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_east_slavic.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_emoji.xml b/app/src/main/res/xml/keyboard_layout_set_emoji.xml deleted file mode 100644 index 8e75ce7755..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_emoji.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_farsi.xml b/app/src/main/res/xml/keyboard_layout_set_farsi.xml deleted file mode 100644 index 20fe42a1de..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_farsi.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_georgian.xml b/app/src/main/res/xml/keyboard_layout_set_georgian.xml deleted file mode 100644 index 35986ff92a..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_georgian.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_german.xml b/app/src/main/res/xml/keyboard_layout_set_german.xml deleted file mode 100644 index 7edccb90d1..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_german.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_greek.xml b/app/src/main/res/xml/keyboard_layout_set_greek.xml deleted file mode 100644 index fefc618ef6..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_greek.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_hebrew.xml b/app/src/main/res/xml/keyboard_layout_set_hebrew.xml deleted file mode 100644 index ac83d1655e..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_hebrew.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_hindi.xml b/app/src/main/res/xml/keyboard_layout_set_hindi.xml deleted file mode 100644 index a522af7c02..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_hindi.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_hindi_compact.xml b/app/src/main/res/xml/keyboard_layout_set_hindi_compact.xml deleted file mode 100644 index 1ce1d20261..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_hindi_compact.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_kannada.xml b/app/src/main/res/xml/keyboard_layout_set_kannada.xml deleted file mode 100644 index 72bca7cf97..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_kannada.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_khmer.xml b/app/src/main/res/xml/keyboard_layout_set_khmer.xml deleted file mode 100644 index f6889d9de4..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_khmer.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_lao.xml b/app/src/main/res/xml/keyboard_layout_set_lao.xml deleted file mode 100644 index 860e39601c..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_lao.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_malayalam.xml b/app/src/main/res/xml/keyboard_layout_set_malayalam.xml deleted file mode 100644 index 10931fcbb2..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_malayalam.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_marathi.xml b/app/src/main/res/xml/keyboard_layout_set_marathi.xml deleted file mode 100644 index 5822b7b52d..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_marathi.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_mongolian.xml b/app/src/main/res/xml/keyboard_layout_set_mongolian.xml deleted file mode 100644 index a476109ddd..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_mongolian.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_nepali_romanized.xml b/app/src/main/res/xml/keyboard_layout_set_nepali_romanized.xml deleted file mode 100644 index 195429be30..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_nepali_romanized.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_nepali_traditional.xml b/app/src/main/res/xml/keyboard_layout_set_nepali_traditional.xml deleted file mode 100644 index 9ca13645a6..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_nepali_traditional.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_nordic.xml b/app/src/main/res/xml/keyboard_layout_set_nordic.xml deleted file mode 100644 index 9e37bf9884..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_nordic.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_pcqwerty.xml b/app/src/main/res/xml/keyboard_layout_set_pcqwerty.xml deleted file mode 100644 index 87fdb16b85..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_pcqwerty.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_qwerty.xml b/app/src/main/res/xml/keyboard_layout_set_qwerty.xml deleted file mode 100644 index a95c5b6a82..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_qwerty.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_qwertz.xml b/app/src/main/res/xml/keyboard_layout_set_qwertz.xml deleted file mode 100644 index 61882f6c4f..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_qwertz.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_serbian_qwertz.xml b/app/src/main/res/xml/keyboard_layout_set_serbian_qwertz.xml deleted file mode 100644 index ee6353dbb8..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_serbian_qwertz.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/keyboard_layout_set_sinhala.xml b/app/src/main/res/xml/keyboard_layout_set_sinhala.xml deleted file mode 100644 index a72d391300..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_sinhala.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_south_slavic.xml b/app/src/main/res/xml/keyboard_layout_set_south_slavic.xml deleted file mode 100644 index c51b371021..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_south_slavic.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_spanish.xml b/app/src/main/res/xml/keyboard_layout_set_spanish.xml deleted file mode 100644 index 78a3d0ff67..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_spanish.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_swiss.xml b/app/src/main/res/xml/keyboard_layout_set_swiss.xml deleted file mode 100644 index ec7d0d0f63..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_swiss.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_tamil.xml b/app/src/main/res/xml/keyboard_layout_set_tamil.xml deleted file mode 100644 index 7a89a10fcf..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_tamil.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_telugu.xml b/app/src/main/res/xml/keyboard_layout_set_telugu.xml deleted file mode 100644 index 56d5b5a7b8..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_telugu.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_thai.xml b/app/src/main/res/xml/keyboard_layout_set_thai.xml deleted file mode 100644 index 22ccd4e13d..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_thai.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_turkish.xml b/app/src/main/res/xml/keyboard_layout_set_turkish.xml deleted file mode 100644 index 95ac52d7d5..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_turkish.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/xml/keyboard_layout_set_uzbek.xml b/app/src/main/res/xml/keyboard_layout_set_uzbek.xml deleted file mode 100644 index 16b84331d7..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_uzbek.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/keyboard_layout_set_workman.xml b/app/src/main/res/xml/keyboard_layout_set_workman.xml deleted file mode 100644 index aa36987e3d..0000000000 --- a/app/src/main/res/xml/keyboard_layout_set_workman.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/xml/keys_arabic3_left.xml b/app/src/main/res/xml/keys_arabic3_left.xml deleted file mode 100644 index 309a15fca2..0000000000 --- a/app/src/main/res/xml/keys_arabic3_left.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/xml/keys_curly_brackets.xml b/app/src/main/res/xml/keys_curly_brackets.xml deleted file mode 100644 index 20e4604c9b..0000000000 --- a/app/src/main/res/xml/keys_curly_brackets.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/xml/keys_dvorak_123.xml b/app/src/main/res/xml/keys_dvorak_123.xml deleted file mode 100644 index 02419c1f6b..0000000000 --- a/app/src/main/res/xml/keys_dvorak_123.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keys_farsi3_right.xml b/app/src/main/res/xml/keys_farsi3_right.xml deleted file mode 100644 index 72607de1c9..0000000000 --- a/app/src/main/res/xml/keys_farsi3_right.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/xml/keys_parentheses.xml b/app/src/main/res/xml/keys_parentheses.xml deleted file mode 100644 index 98919d4c91..0000000000 --- a/app/src/main/res/xml/keys_parentheses.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/xml/keys_pcqwerty2_right3.xml b/app/src/main/res/xml/keys_pcqwerty2_right3.xml deleted file mode 100644 index aec7e40938..0000000000 --- a/app/src/main/res/xml/keys_pcqwerty2_right3.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keys_pcqwerty3_right2.xml b/app/src/main/res/xml/keys_pcqwerty3_right2.xml deleted file mode 100644 index 147c87a457..0000000000 --- a/app/src/main/res/xml/keys_pcqwerty3_right2.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keys_pcqwerty4_right3.xml b/app/src/main/res/xml/keys_pcqwerty4_right3.xml deleted file mode 100644 index 75bfd0892c..0000000000 --- a/app/src/main/res/xml/keys_pcqwerty4_right3.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keys_square_brackets.xml b/app/src/main/res/xml/keys_square_brackets.xml deleted file mode 100644 index af78ffbe54..0000000000 --- a/app/src/main/res/xml/keys_square_brackets.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/xml/keystyle_devanagari_sign_anusvara.xml b/app/src/main/res/xml/keystyle_devanagari_sign_anusvara.xml deleted file mode 100644 index 439fda00d1..0000000000 --- a/app/src/main/res/xml/keystyle_devanagari_sign_anusvara.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keystyle_devanagari_sign_candrabindu.xml b/app/src/main/res/xml/keystyle_devanagari_sign_candrabindu.xml deleted file mode 100644 index 1c114b7d7f..0000000000 --- a/app/src/main/res/xml/keystyle_devanagari_sign_candrabindu.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keystyle_devanagari_sign_nukta.xml b/app/src/main/res/xml/keystyle_devanagari_sign_nukta.xml deleted file mode 100644 index b7eccfc1bf..0000000000 --- a/app/src/main/res/xml/keystyle_devanagari_sign_nukta.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keystyle_devanagari_sign_virama.xml b/app/src/main/res/xml/keystyle_devanagari_sign_virama.xml deleted file mode 100644 index 996a061a51..0000000000 --- a/app/src/main/res/xml/keystyle_devanagari_sign_virama.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keystyle_devanagari_sign_visarga.xml b/app/src/main/res/xml/keystyle_devanagari_sign_visarga.xml deleted file mode 100644 index 71befd936b..0000000000 --- a/app/src/main/res/xml/keystyle_devanagari_sign_visarga.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - diff --git a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_aa.xml b/app/src/main/res/xml/keystyle_devanagari_vowel_sign_aa.xml deleted file mode 100644 index 076db679fb..0000000000 --- a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_aa.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_ai.xml b/app/src/main/res/xml/keystyle_devanagari_vowel_sign_ai.xml deleted file mode 100644 index 91d1de25a3..0000000000 --- a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_ai.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_au.xml b/app/src/main/res/xml/keystyle_devanagari_vowel_sign_au.xml deleted file mode 100644 index 50cfd6500f..0000000000 --- a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_au.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_candra_e.xml b/app/src/main/res/xml/keystyle_devanagari_vowel_sign_candra_e.xml deleted file mode 100644 index 805446a2cc..0000000000 --- a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_candra_e.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_candra_o.xml b/app/src/main/res/xml/keystyle_devanagari_vowel_sign_candra_o.xml deleted file mode 100644 index 5e446c012f..0000000000 --- a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_candra_o.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_e.xml b/app/src/main/res/xml/keystyle_devanagari_vowel_sign_e.xml deleted file mode 100644 index bed052e9b3..0000000000 --- a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_e.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_i.xml b/app/src/main/res/xml/keystyle_devanagari_vowel_sign_i.xml deleted file mode 100644 index 60d27119f8..0000000000 --- a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_i.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_ii.xml b/app/src/main/res/xml/keystyle_devanagari_vowel_sign_ii.xml deleted file mode 100644 index 3e3b56c513..0000000000 --- a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_ii.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_o.xml b/app/src/main/res/xml/keystyle_devanagari_vowel_sign_o.xml deleted file mode 100644 index 608a0980da..0000000000 --- a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_o.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_u.xml b/app/src/main/res/xml/keystyle_devanagari_vowel_sign_u.xml deleted file mode 100644 index acb60710cb..0000000000 --- a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_u.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_uu.xml b/app/src/main/res/xml/keystyle_devanagari_vowel_sign_uu.xml deleted file mode 100644 index 1adc3bb55e..0000000000 --- a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_uu.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_vocalic_r.xml b/app/src/main/res/xml/keystyle_devanagari_vowel_sign_vocalic_r.xml deleted file mode 100644 index 268c7d8f93..0000000000 --- a/app/src/main/res/xml/keystyle_devanagari_vowel_sign_vocalic_r.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/method.xml b/app/src/main/res/xml/method.xml index 28df0a3bef..6970139599 100644 --- a/app/src/main/res/xml/method.xml +++ b/app/src/main/res/xml/method.xml @@ -1,20 +1,8 @@ @@ -23,849 +11,1293 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + - - - + + + + + + + + + + + + + - - - - - - - - - - diff --git a/app/src/main/res/xml/method_dummy.xml b/app/src/main/res/xml/method_dummy.xml new file mode 100644 index 0000000000..6dee3cd68c --- /dev/null +++ b/app/src/main/res/xml/method_dummy.xml @@ -0,0 +1,30 @@ + + + + + + + diff --git a/app/src/main/res/xml/prefs.xml b/app/src/main/res/xml/prefs.xml deleted file mode 100644 index f5f9f0495d..0000000000 --- a/app/src/main/res/xml/prefs.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - diff --git a/app/src/main/res/xml/prefs_screen_advanced.xml b/app/src/main/res/xml/prefs_screen_advanced.xml deleted file mode 100644 index 778671bc68..0000000000 --- a/app/src/main/res/xml/prefs_screen_advanced.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/prefs_screen_appearance.xml b/app/src/main/res/xml/prefs_screen_appearance.xml deleted file mode 100644 index 4ba30a5814..0000000000 --- a/app/src/main/res/xml/prefs_screen_appearance.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/prefs_screen_correction.xml b/app/src/main/res/xml/prefs_screen_correction.xml deleted file mode 100644 index 350a8951a6..0000000000 --- a/app/src/main/res/xml/prefs_screen_correction.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/prefs_screen_debug.xml b/app/src/main/res/xml/prefs_screen_debug.xml deleted file mode 100644 index 4c91da3ac6..0000000000 --- a/app/src/main/res/xml/prefs_screen_debug.xml +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/prefs_screen_gesture.xml b/app/src/main/res/xml/prefs_screen_gesture.xml deleted file mode 100644 index 38c7eda8ed..0000000000 --- a/app/src/main/res/xml/prefs_screen_gesture.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - diff --git a/app/src/main/res/xml/prefs_screen_preferences.xml b/app/src/main/res/xml/prefs_screen_preferences.xml deleted file mode 100644 index 5f554af340..0000000000 --- a/app/src/main/res/xml/prefs_screen_preferences.xml +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/row_optional_number_row.xml b/app/src/main/res/xml/row_optional_number_row.xml deleted file mode 100644 index f9748ed0a2..0000000000 --- a/app/src/main/res/xml/row_optional_number_row.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/row_pcqwerty5.xml b/app/src/main/res/xml/row_pcqwerty5.xml deleted file mode 100644 index accf64d166..0000000000 --- a/app/src/main/res/xml/row_pcqwerty5.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/row_qwerty4.xml b/app/src/main/res/xml/row_qwerty4.xml deleted file mode 100644 index 15f0b38dbf..0000000000 --- a/app/src/main/res/xml/row_qwerty4.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/row_symbols4.xml b/app/src/main/res/xml/row_symbols4.xml deleted file mode 100644 index 5d63403d9d..0000000000 --- a/app/src/main/res/xml/row_symbols4.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/xml/row_symbols_shift4.xml b/app/src/main/res/xml/row_symbols_shift4.xml deleted file mode 100644 index c0e4194c6f..0000000000 --- a/app/src/main/res/xml/row_symbols_shift4.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_arabic1.xml b/app/src/main/res/xml/rowkeys_arabic1.xml deleted file mode 100644 index 2111861461..0000000000 --- a/app/src/main/res/xml/rowkeys_arabic1.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_arabic1_pc.xml b/app/src/main/res/xml/rowkeys_arabic1_pc.xml deleted file mode 100644 index 8d9df1e3f9..0000000000 --- a/app/src/main/res/xml/rowkeys_arabic1_pc.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_arabic2.xml b/app/src/main/res/xml/rowkeys_arabic2.xml deleted file mode 100644 index 1f0b42f3da..0000000000 --- a/app/src/main/res/xml/rowkeys_arabic2.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_arabic2_pc.xml b/app/src/main/res/xml/rowkeys_arabic2_pc.xml deleted file mode 100644 index a690019aec..0000000000 --- a/app/src/main/res/xml/rowkeys_arabic2_pc.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_arabic3.xml b/app/src/main/res/xml/rowkeys_arabic3.xml deleted file mode 100644 index c6abfb8003..0000000000 --- a/app/src/main/res/xml/rowkeys_arabic3.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_arabic3_pc.xml b/app/src/main/res/xml/rowkeys_arabic3_pc.xml deleted file mode 100644 index 050dfb8dbb..0000000000 --- a/app/src/main/res/xml/rowkeys_arabic3_pc.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_armenian_phonetic1.xml b/app/src/main/res/xml/rowkeys_armenian_phonetic1.xml deleted file mode 100644 index 6289d3c1b1..0000000000 --- a/app/src/main/res/xml/rowkeys_armenian_phonetic1.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_armenian_phonetic2.xml b/app/src/main/res/xml/rowkeys_armenian_phonetic2.xml deleted file mode 100644 index 174468e537..0000000000 --- a/app/src/main/res/xml/rowkeys_armenian_phonetic2.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_armenian_phonetic3.xml b/app/src/main/res/xml/rowkeys_armenian_phonetic3.xml deleted file mode 100644 index fe911b5c38..0000000000 --- a/app/src/main/res/xml/rowkeys_armenian_phonetic3.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_armenian_phonetic4.xml b/app/src/main/res/xml/rowkeys_armenian_phonetic4.xml deleted file mode 100644 index 4436dc4285..0000000000 --- a/app/src/main/res/xml/rowkeys_armenian_phonetic4.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_azerty1.xml b/app/src/main/res/xml/rowkeys_azerty1.xml deleted file mode 100644 index b5c1171bb5..0000000000 --- a/app/src/main/res/xml/rowkeys_azerty1.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_azerty2.xml b/app/src/main/res/xml/rowkeys_azerty2.xml deleted file mode 100644 index bbb290ee98..0000000000 --- a/app/src/main/res/xml/rowkeys_azerty2.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_azerty3.xml b/app/src/main/res/xml/rowkeys_azerty3.xml deleted file mode 100644 index 73576ef689..0000000000 --- a/app/src/main/res/xml/rowkeys_azerty3.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_bengali1.xml b/app/src/main/res/xml/rowkeys_bengali1.xml deleted file mode 100644 index a1530262b5..0000000000 --- a/app/src/main/res/xml/rowkeys_bengali1.xml +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_bengali2.xml b/app/src/main/res/xml/rowkeys_bengali2.xml deleted file mode 100644 index 8908201e03..0000000000 --- a/app/src/main/res/xml/rowkeys_bengali2.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_bengali3.xml b/app/src/main/res/xml/rowkeys_bengali3.xml deleted file mode 100644 index 12fad6d12a..0000000000 --- a/app/src/main/res/xml/rowkeys_bengali3.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_bengali_akkhor1.xml b/app/src/main/res/xml/rowkeys_bengali_akkhor1.xml deleted file mode 100644 index badbeaa3d0..0000000000 --- a/app/src/main/res/xml/rowkeys_bengali_akkhor1.xml +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/rowkeys_bengali_akkhor2.xml b/app/src/main/res/xml/rowkeys_bengali_akkhor2.xml deleted file mode 100644 index c5c809367f..0000000000 --- a/app/src/main/res/xml/rowkeys_bengali_akkhor2.xml +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/rowkeys_bengali_akkhor3.xml b/app/src/main/res/xml/rowkeys_bengali_akkhor3.xml deleted file mode 100644 index 416bdcc3b4..0000000000 --- a/app/src/main/res/xml/rowkeys_bengali_akkhor3.xml +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/rowkeys_bengali_unijoy1.xml b/app/src/main/res/xml/rowkeys_bengali_unijoy1.xml deleted file mode 100644 index dbe3430a31..0000000000 --- a/app/src/main/res/xml/rowkeys_bengali_unijoy1.xml +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/rowkeys_bengali_unijoy2.xml b/app/src/main/res/xml/rowkeys_bengali_unijoy2.xml deleted file mode 100644 index a4c7b87d5e..0000000000 --- a/app/src/main/res/xml/rowkeys_bengali_unijoy2.xml +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_bengali_unijoy3.xml b/app/src/main/res/xml/rowkeys_bengali_unijoy3.xml deleted file mode 100644 index 6dfcc51b4a..0000000000 --- a/app/src/main/res/xml/rowkeys_bengali_unijoy3.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_bepo1.xml b/app/src/main/res/xml/rowkeys_bepo1.xml deleted file mode 100644 index 9d4decbfa8..0000000000 --- a/app/src/main/res/xml/rowkeys_bepo1.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_bepo2.xml b/app/src/main/res/xml/rowkeys_bepo2.xml deleted file mode 100644 index 360a0c8b19..0000000000 --- a/app/src/main/res/xml/rowkeys_bepo2.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_bepo3.xml b/app/src/main/res/xml/rowkeys_bepo3.xml deleted file mode 100644 index a449c62e03..0000000000 --- a/app/src/main/res/xml/rowkeys_bepo3.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_bulgarian1.xml b/app/src/main/res/xml/rowkeys_bulgarian1.xml deleted file mode 100644 index 86e5d47774..0000000000 --- a/app/src/main/res/xml/rowkeys_bulgarian1.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_bulgarian2.xml b/app/src/main/res/xml/rowkeys_bulgarian2.xml deleted file mode 100644 index f48b4cdc98..0000000000 --- a/app/src/main/res/xml/rowkeys_bulgarian2.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_bulgarian3.xml b/app/src/main/res/xml/rowkeys_bulgarian3.xml deleted file mode 100644 index c14aabdcd5..0000000000 --- a/app/src/main/res/xml/rowkeys_bulgarian3.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_bulgarian_bds1.xml b/app/src/main/res/xml/rowkeys_bulgarian_bds1.xml deleted file mode 100644 index 70fa2b271e..0000000000 --- a/app/src/main/res/xml/rowkeys_bulgarian_bds1.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_bulgarian_bds2.xml b/app/src/main/res/xml/rowkeys_bulgarian_bds2.xml deleted file mode 100644 index e61ee5919d..0000000000 --- a/app/src/main/res/xml/rowkeys_bulgarian_bds2.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_bulgarian_bds3.xml b/app/src/main/res/xml/rowkeys_bulgarian_bds3.xml deleted file mode 100644 index 82f0bfe959..0000000000 --- a/app/src/main/res/xml/rowkeys_bulgarian_bds3.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_bulgarian_bekl1.xml b/app/src/main/res/xml/rowkeys_bulgarian_bekl1.xml deleted file mode 100644 index 70fa2b271e..0000000000 --- a/app/src/main/res/xml/rowkeys_bulgarian_bekl1.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_bulgarian_bekl2.xml b/app/src/main/res/xml/rowkeys_bulgarian_bekl2.xml deleted file mode 100644 index e61ee5919d..0000000000 --- a/app/src/main/res/xml/rowkeys_bulgarian_bekl2.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_bulgarian_bekl3.xml b/app/src/main/res/xml/rowkeys_bulgarian_bekl3.xml deleted file mode 100644 index 71a24027a1..0000000000 --- a/app/src/main/res/xml/rowkeys_bulgarian_bekl3.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_colemak1.xml b/app/src/main/res/xml/rowkeys_colemak1.xml deleted file mode 100644 index 33b4ae56d8..0000000000 --- a/app/src/main/res/xml/rowkeys_colemak1.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_colemak2.xml b/app/src/main/res/xml/rowkeys_colemak2.xml deleted file mode 100644 index 7e4979b6ab..0000000000 --- a/app/src/main/res/xml/rowkeys_colemak2.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_colemak3.xml b/app/src/main/res/xml/rowkeys_colemak3.xml deleted file mode 100644 index 6ac53f546a..0000000000 --- a/app/src/main/res/xml/rowkeys_colemak3.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_colemak_dh1.xml b/app/src/main/res/xml/rowkeys_colemak_dh1.xml deleted file mode 100644 index 25cd4b1e06..0000000000 --- a/app/src/main/res/xml/rowkeys_colemak_dh1.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_colemak_dh2.xml b/app/src/main/res/xml/rowkeys_colemak_dh2.xml deleted file mode 100644 index d610d1e4c4..0000000000 --- a/app/src/main/res/xml/rowkeys_colemak_dh2.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_colemak_dh3.xml b/app/src/main/res/xml/rowkeys_colemak_dh3.xml deleted file mode 100644 index 6313076818..0000000000 --- a/app/src/main/res/xml/rowkeys_colemak_dh3.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_dvorak1.xml b/app/src/main/res/xml/rowkeys_dvorak1.xml deleted file mode 100644 index edf5bee07f..0000000000 --- a/app/src/main/res/xml/rowkeys_dvorak1.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_dvorak2.xml b/app/src/main/res/xml/rowkeys_dvorak2.xml deleted file mode 100644 index cf72c10d50..0000000000 --- a/app/src/main/res/xml/rowkeys_dvorak2.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_dvorak3.xml b/app/src/main/res/xml/rowkeys_dvorak3.xml deleted file mode 100644 index 3558620bbf..0000000000 --- a/app/src/main/res/xml/rowkeys_dvorak3.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_east_slavic1.xml b/app/src/main/res/xml/rowkeys_east_slavic1.xml deleted file mode 100644 index 4147a88a83..0000000000 --- a/app/src/main/res/xml/rowkeys_east_slavic1.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_east_slavic2.xml b/app/src/main/res/xml/rowkeys_east_slavic2.xml deleted file mode 100644 index 478cc8ad93..0000000000 --- a/app/src/main/res/xml/rowkeys_east_slavic2.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_east_slavic3.xml b/app/src/main/res/xml/rowkeys_east_slavic3.xml deleted file mode 100644 index affd54572f..0000000000 --- a/app/src/main/res/xml/rowkeys_east_slavic3.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_farsi1.xml b/app/src/main/res/xml/rowkeys_farsi1.xml deleted file mode 100644 index 363c28e28a..0000000000 --- a/app/src/main/res/xml/rowkeys_farsi1.xml +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_farsi2.xml b/app/src/main/res/xml/rowkeys_farsi2.xml deleted file mode 100644 index bec654d549..0000000000 --- a/app/src/main/res/xml/rowkeys_farsi2.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_farsi3.xml b/app/src/main/res/xml/rowkeys_farsi3.xml deleted file mode 100644 index e82a1d5df5..0000000000 --- a/app/src/main/res/xml/rowkeys_farsi3.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_georgian1.xml b/app/src/main/res/xml/rowkeys_georgian1.xml deleted file mode 100644 index 4bdf3488b1..0000000000 --- a/app/src/main/res/xml/rowkeys_georgian1.xml +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_georgian2.xml b/app/src/main/res/xml/rowkeys_georgian2.xml deleted file mode 100644 index 1d4b8ae892..0000000000 --- a/app/src/main/res/xml/rowkeys_georgian2.xml +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_georgian3.xml b/app/src/main/res/xml/rowkeys_georgian3.xml deleted file mode 100644 index 106f140a4c..0000000000 --- a/app/src/main/res/xml/rowkeys_georgian3.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_german1.xml b/app/src/main/res/xml/rowkeys_german1.xml deleted file mode 100644 index ebdfd3f652..0000000000 --- a/app/src/main/res/xml/rowkeys_german1.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_german2.xml b/app/src/main/res/xml/rowkeys_german2.xml deleted file mode 100644 index b519c4a4b2..0000000000 --- a/app/src/main/res/xml/rowkeys_german2.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_german3.xml b/app/src/main/res/xml/rowkeys_german3.xml deleted file mode 100644 index c863fce8f3..0000000000 --- a/app/src/main/res/xml/rowkeys_german3.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_greek1.xml b/app/src/main/res/xml/rowkeys_greek1.xml deleted file mode 100644 index 9f325553c7..0000000000 --- a/app/src/main/res/xml/rowkeys_greek1.xml +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_greek2.xml b/app/src/main/res/xml/rowkeys_greek2.xml deleted file mode 100644 index a1d607a571..0000000000 --- a/app/src/main/res/xml/rowkeys_greek2.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_greek3.xml b/app/src/main/res/xml/rowkeys_greek3.xml deleted file mode 100644 index e7f9d8f6bb..0000000000 --- a/app/src/main/res/xml/rowkeys_greek3.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_hebrew1.xml b/app/src/main/res/xml/rowkeys_hebrew1.xml deleted file mode 100644 index d55b7cfac8..0000000000 --- a/app/src/main/res/xml/rowkeys_hebrew1.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_hebrew2.xml b/app/src/main/res/xml/rowkeys_hebrew2.xml deleted file mode 100644 index 4c692f122d..0000000000 --- a/app/src/main/res/xml/rowkeys_hebrew2.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_hebrew3.xml b/app/src/main/res/xml/rowkeys_hebrew3.xml deleted file mode 100644 index 6db9bacf00..0000000000 --- a/app/src/main/res/xml/rowkeys_hebrew3.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_hindi1.xml b/app/src/main/res/xml/rowkeys_hindi1.xml deleted file mode 100644 index d1ae43515a..0000000000 --- a/app/src/main/res/xml/rowkeys_hindi1.xml +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_hindi2.xml b/app/src/main/res/xml/rowkeys_hindi2.xml deleted file mode 100644 index 57f9d5cd56..0000000000 --- a/app/src/main/res/xml/rowkeys_hindi2.xml +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_hindi3.xml b/app/src/main/res/xml/rowkeys_hindi3.xml deleted file mode 100644 index 016930a5a0..0000000000 --- a/app/src/main/res/xml/rowkeys_hindi3.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_hindi_compact1.xml b/app/src/main/res/xml/rowkeys_hindi_compact1.xml deleted file mode 100644 index a8235df92b..0000000000 --- a/app/src/main/res/xml/rowkeys_hindi_compact1.xml +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_hindi_compact2.xml b/app/src/main/res/xml/rowkeys_hindi_compact2.xml deleted file mode 100644 index 9d7d795fb0..0000000000 --- a/app/src/main/res/xml/rowkeys_hindi_compact2.xml +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_hindi_compact3.xml b/app/src/main/res/xml/rowkeys_hindi_compact3.xml deleted file mode 100644 index 41b480812e..0000000000 --- a/app/src/main/res/xml/rowkeys_hindi_compact3.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_kannada1.xml b/app/src/main/res/xml/rowkeys_kannada1.xml deleted file mode 100644 index d3f825cbc0..0000000000 --- a/app/src/main/res/xml/rowkeys_kannada1.xml +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_kannada2.xml b/app/src/main/res/xml/rowkeys_kannada2.xml deleted file mode 100644 index 89d2cfc142..0000000000 --- a/app/src/main/res/xml/rowkeys_kannada2.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_kannada3.xml b/app/src/main/res/xml/rowkeys_kannada3.xml deleted file mode 100644 index 8cdaa256b5..0000000000 --- a/app/src/main/res/xml/rowkeys_kannada3.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_khmer1.xml b/app/src/main/res/xml/rowkeys_khmer1.xml deleted file mode 100644 index c70b748149..0000000000 --- a/app/src/main/res/xml/rowkeys_khmer1.xml +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_khmer2.xml b/app/src/main/res/xml/rowkeys_khmer2.xml deleted file mode 100644 index eb45c1fafa..0000000000 --- a/app/src/main/res/xml/rowkeys_khmer2.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_khmer3.xml b/app/src/main/res/xml/rowkeys_khmer3.xml deleted file mode 100644 index 1201c0fedc..0000000000 --- a/app/src/main/res/xml/rowkeys_khmer3.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_khmer4.xml b/app/src/main/res/xml/rowkeys_khmer4.xml deleted file mode 100644 index 8f1ce82eef..0000000000 --- a/app/src/main/res/xml/rowkeys_khmer4.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_lao1.xml b/app/src/main/res/xml/rowkeys_lao1.xml deleted file mode 100644 index 020e4b9ffe..0000000000 --- a/app/src/main/res/xml/rowkeys_lao1.xml +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_lao2.xml b/app/src/main/res/xml/rowkeys_lao2.xml deleted file mode 100644 index 56b6f26fe4..0000000000 --- a/app/src/main/res/xml/rowkeys_lao2.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_lao3.xml b/app/src/main/res/xml/rowkeys_lao3.xml deleted file mode 100644 index f59e0dcd0e..0000000000 --- a/app/src/main/res/xml/rowkeys_lao3.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_lao4.xml b/app/src/main/res/xml/rowkeys_lao4.xml deleted file mode 100644 index 1b18a120d5..0000000000 --- a/app/src/main/res/xml/rowkeys_lao4.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_malayalam1.xml b/app/src/main/res/xml/rowkeys_malayalam1.xml deleted file mode 100644 index f7d996767d..0000000000 --- a/app/src/main/res/xml/rowkeys_malayalam1.xml +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_malayalam2.xml b/app/src/main/res/xml/rowkeys_malayalam2.xml deleted file mode 100644 index 0c9dd3915a..0000000000 --- a/app/src/main/res/xml/rowkeys_malayalam2.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_malayalam3.xml b/app/src/main/res/xml/rowkeys_malayalam3.xml deleted file mode 100644 index 5485f1472c..0000000000 --- a/app/src/main/res/xml/rowkeys_malayalam3.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_marathi1.xml b/app/src/main/res/xml/rowkeys_marathi1.xml deleted file mode 100644 index b18042d2ac..0000000000 --- a/app/src/main/res/xml/rowkeys_marathi1.xml +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_marathi2.xml b/app/src/main/res/xml/rowkeys_marathi2.xml deleted file mode 100644 index 7517c49a63..0000000000 --- a/app/src/main/res/xml/rowkeys_marathi2.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_marathi3.xml b/app/src/main/res/xml/rowkeys_marathi3.xml deleted file mode 100644 index 9529ba1fa2..0000000000 --- a/app/src/main/res/xml/rowkeys_marathi3.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_mongolian1.xml b/app/src/main/res/xml/rowkeys_mongolian1.xml deleted file mode 100644 index 14108b4049..0000000000 --- a/app/src/main/res/xml/rowkeys_mongolian1.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_mongolian2.xml b/app/src/main/res/xml/rowkeys_mongolian2.xml deleted file mode 100644 index 3426771a3d..0000000000 --- a/app/src/main/res/xml/rowkeys_mongolian2.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_mongolian3.xml b/app/src/main/res/xml/rowkeys_mongolian3.xml deleted file mode 100644 index 5300b2ce4b..0000000000 --- a/app/src/main/res/xml/rowkeys_mongolian3.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_nepali_romanized1.xml b/app/src/main/res/xml/rowkeys_nepali_romanized1.xml deleted file mode 100644 index b471f5dd52..0000000000 --- a/app/src/main/res/xml/rowkeys_nepali_romanized1.xml +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_nepali_romanized2.xml b/app/src/main/res/xml/rowkeys_nepali_romanized2.xml deleted file mode 100644 index 2f3ee14c25..0000000000 --- a/app/src/main/res/xml/rowkeys_nepali_romanized2.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_nepali_romanized3.xml b/app/src/main/res/xml/rowkeys_nepali_romanized3.xml deleted file mode 100644 index 552c9a989f..0000000000 --- a/app/src/main/res/xml/rowkeys_nepali_romanized3.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_nepali_traditional1.xml b/app/src/main/res/xml/rowkeys_nepali_traditional1.xml deleted file mode 100644 index 7615906979..0000000000 --- a/app/src/main/res/xml/rowkeys_nepali_traditional1.xml +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_nepali_traditional2.xml b/app/src/main/res/xml/rowkeys_nepali_traditional2.xml deleted file mode 100644 index d55692dea6..0000000000 --- a/app/src/main/res/xml/rowkeys_nepali_traditional2.xml +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_nepali_traditional3.xml b/app/src/main/res/xml/rowkeys_nepali_traditional3.xml deleted file mode 100644 index 1057aac05a..0000000000 --- a/app/src/main/res/xml/rowkeys_nepali_traditional3.xml +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_nordic1.xml b/app/src/main/res/xml/rowkeys_nordic1.xml deleted file mode 100644 index 89f4358e22..0000000000 --- a/app/src/main/res/xml/rowkeys_nordic1.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_nordic2.xml b/app/src/main/res/xml/rowkeys_nordic2.xml deleted file mode 100644 index 5cd8152a3b..0000000000 --- a/app/src/main/res/xml/rowkeys_nordic2.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_pcqwerty1.xml b/app/src/main/res/xml/rowkeys_pcqwerty1.xml deleted file mode 100644 index 2e4067ff88..0000000000 --- a/app/src/main/res/xml/rowkeys_pcqwerty1.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_pcqwerty1_shift.xml b/app/src/main/res/xml/rowkeys_pcqwerty1_shift.xml deleted file mode 100644 index c925a86bd3..0000000000 --- a/app/src/main/res/xml/rowkeys_pcqwerty1_shift.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_pcqwerty2.xml b/app/src/main/res/xml/rowkeys_pcqwerty2.xml deleted file mode 100644 index 781aec8bff..0000000000 --- a/app/src/main/res/xml/rowkeys_pcqwerty2.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_pcqwerty3.xml b/app/src/main/res/xml/rowkeys_pcqwerty3.xml deleted file mode 100644 index f888fe2b6a..0000000000 --- a/app/src/main/res/xml/rowkeys_pcqwerty3.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_pcqwerty4.xml b/app/src/main/res/xml/rowkeys_pcqwerty4.xml deleted file mode 100644 index 7e46828a10..0000000000 --- a/app/src/main/res/xml/rowkeys_pcqwerty4.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_qwerty1.xml b/app/src/main/res/xml/rowkeys_qwerty1.xml deleted file mode 100644 index 35c34fad19..0000000000 --- a/app/src/main/res/xml/rowkeys_qwerty1.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_qwerty1_left5.xml b/app/src/main/res/xml/rowkeys_qwerty1_left5.xml deleted file mode 100644 index 3655e3881a..0000000000 --- a/app/src/main/res/xml/rowkeys_qwerty1_left5.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_qwerty1_right5.xml b/app/src/main/res/xml/rowkeys_qwerty1_right5.xml deleted file mode 100644 index 5fb548bd4b..0000000000 --- a/app/src/main/res/xml/rowkeys_qwerty1_right5.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_qwerty2.xml b/app/src/main/res/xml/rowkeys_qwerty2.xml deleted file mode 100644 index 794bb82a4a..0000000000 --- a/app/src/main/res/xml/rowkeys_qwerty2.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_qwerty2_left5.xml b/app/src/main/res/xml/rowkeys_qwerty2_left5.xml deleted file mode 100644 index 7d47030657..0000000000 --- a/app/src/main/res/xml/rowkeys_qwerty2_left5.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_qwerty2_right4.xml b/app/src/main/res/xml/rowkeys_qwerty2_right4.xml deleted file mode 100644 index 2bd49f5629..0000000000 --- a/app/src/main/res/xml/rowkeys_qwerty2_right4.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_qwerty3.xml b/app/src/main/res/xml/rowkeys_qwerty3.xml deleted file mode 100644 index 97f46b741c..0000000000 --- a/app/src/main/res/xml/rowkeys_qwerty3.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_qwerty3_left4.xml b/app/src/main/res/xml/rowkeys_qwerty3_left4.xml deleted file mode 100644 index 524cc0ad10..0000000000 --- a/app/src/main/res/xml/rowkeys_qwerty3_left4.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_qwerty3_right3.xml b/app/src/main/res/xml/rowkeys_qwerty3_right3.xml deleted file mode 100644 index 3fea623b74..0000000000 --- a/app/src/main/res/xml/rowkeys_qwerty3_right3.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_qwertz1.xml b/app/src/main/res/xml/rowkeys_qwertz1.xml deleted file mode 100644 index 8b672ca614..0000000000 --- a/app/src/main/res/xml/rowkeys_qwertz1.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_qwertz1_left5.xml b/app/src/main/res/xml/rowkeys_qwertz1_left5.xml deleted file mode 100644 index c12314e4e7..0000000000 --- a/app/src/main/res/xml/rowkeys_qwertz1_left5.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_qwertz1_right5.xml b/app/src/main/res/xml/rowkeys_qwertz1_right5.xml deleted file mode 100644 index 50b265d1d6..0000000000 --- a/app/src/main/res/xml/rowkeys_qwertz1_right5.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_qwertz2.xml b/app/src/main/res/xml/rowkeys_qwertz2.xml deleted file mode 100644 index 9437dfe972..0000000000 --- a/app/src/main/res/xml/rowkeys_qwertz2.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_qwertz2_left5.xml b/app/src/main/res/xml/rowkeys_qwertz2_left5.xml deleted file mode 100644 index d619baf1f8..0000000000 --- a/app/src/main/res/xml/rowkeys_qwertz2_left5.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_qwertz2_right4.xml b/app/src/main/res/xml/rowkeys_qwertz2_right4.xml deleted file mode 100644 index 2bd49f5629..0000000000 --- a/app/src/main/res/xml/rowkeys_qwertz2_right4.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_qwertz3.xml b/app/src/main/res/xml/rowkeys_qwertz3.xml deleted file mode 100644 index 8c1220d8b1..0000000000 --- a/app/src/main/res/xml/rowkeys_qwertz3.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_qwertz3_left4.xml b/app/src/main/res/xml/rowkeys_qwertz3_left4.xml deleted file mode 100644 index ada45531c6..0000000000 --- a/app/src/main/res/xml/rowkeys_qwertz3_left4.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_qwertz3_right3.xml b/app/src/main/res/xml/rowkeys_qwertz3_right3.xml deleted file mode 100644 index 8a2715dd44..0000000000 --- a/app/src/main/res/xml/rowkeys_qwertz3_right3.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_serbian_qwertz1.xml b/app/src/main/res/xml/rowkeys_serbian_qwertz1.xml deleted file mode 100644 index 4cc58cac81..0000000000 --- a/app/src/main/res/xml/rowkeys_serbian_qwertz1.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/rowkeys_serbian_qwertz2.xml b/app/src/main/res/xml/rowkeys_serbian_qwertz2.xml deleted file mode 100644 index b008f805be..0000000000 --- a/app/src/main/res/xml/rowkeys_serbian_qwertz2.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_serbian_qwertz3.xml b/app/src/main/res/xml/rowkeys_serbian_qwertz3.xml deleted file mode 100644 index 8bf69d901c..0000000000 --- a/app/src/main/res/xml/rowkeys_serbian_qwertz3.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_sinhala1.xml b/app/src/main/res/xml/rowkeys_sinhala1.xml deleted file mode 100644 index 8affb37aa0..0000000000 --- a/app/src/main/res/xml/rowkeys_sinhala1.xml +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_sinhala2.xml b/app/src/main/res/xml/rowkeys_sinhala2.xml deleted file mode 100644 index 1e1fffc1ea..0000000000 --- a/app/src/main/res/xml/rowkeys_sinhala2.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_sinhala3.xml b/app/src/main/res/xml/rowkeys_sinhala3.xml deleted file mode 100644 index fae9f5ef9f..0000000000 --- a/app/src/main/res/xml/rowkeys_sinhala3.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_south_slavic1.xml b/app/src/main/res/xml/rowkeys_south_slavic1.xml deleted file mode 100644 index a289bfa0f7..0000000000 --- a/app/src/main/res/xml/rowkeys_south_slavic1.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_south_slavic2.xml b/app/src/main/res/xml/rowkeys_south_slavic2.xml deleted file mode 100644 index 4a5e67dc19..0000000000 --- a/app/src/main/res/xml/rowkeys_south_slavic2.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_south_slavic3.xml b/app/src/main/res/xml/rowkeys_south_slavic3.xml deleted file mode 100644 index de580b2a36..0000000000 --- a/app/src/main/res/xml/rowkeys_south_slavic3.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_spanish2.xml b/app/src/main/res/xml/rowkeys_spanish2.xml deleted file mode 100644 index 8866d32797..0000000000 --- a/app/src/main/res/xml/rowkeys_spanish2.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_swiss1.xml b/app/src/main/res/xml/rowkeys_swiss1.xml deleted file mode 100644 index 9c8e3bb72a..0000000000 --- a/app/src/main/res/xml/rowkeys_swiss1.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_swiss2.xml b/app/src/main/res/xml/rowkeys_swiss2.xml deleted file mode 100644 index b4f2c8eb12..0000000000 --- a/app/src/main/res/xml/rowkeys_swiss2.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_symbols1.xml b/app/src/main/res/xml/rowkeys_symbols1.xml deleted file mode 100644 index 93937cff11..0000000000 --- a/app/src/main/res/xml/rowkeys_symbols1.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_symbols2.xml b/app/src/main/res/xml/rowkeys_symbols2.xml deleted file mode 100644 index 40d4817b66..0000000000 --- a/app/src/main/res/xml/rowkeys_symbols2.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_symbols3.xml b/app/src/main/res/xml/rowkeys_symbols3.xml deleted file mode 100644 index 57e06f54b2..0000000000 --- a/app/src/main/res/xml/rowkeys_symbols3.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_symbols_shift1.xml b/app/src/main/res/xml/rowkeys_symbols_shift1.xml deleted file mode 100644 index 93992091a8..0000000000 --- a/app/src/main/res/xml/rowkeys_symbols_shift1.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_symbols_shift2.xml b/app/src/main/res/xml/rowkeys_symbols_shift2.xml deleted file mode 100644 index 990a95043b..0000000000 --- a/app/src/main/res/xml/rowkeys_symbols_shift2.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_symbols_shift3.xml b/app/src/main/res/xml/rowkeys_symbols_shift3.xml deleted file mode 100644 index 4d1818e424..0000000000 --- a/app/src/main/res/xml/rowkeys_symbols_shift3.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_tamil1.xml b/app/src/main/res/xml/rowkeys_tamil1.xml deleted file mode 100644 index 8f723bdbce..0000000000 --- a/app/src/main/res/xml/rowkeys_tamil1.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_tamil2.xml b/app/src/main/res/xml/rowkeys_tamil2.xml deleted file mode 100644 index ccf98b3658..0000000000 --- a/app/src/main/res/xml/rowkeys_tamil2.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_tamil3.xml b/app/src/main/res/xml/rowkeys_tamil3.xml deleted file mode 100644 index 281314ddf7..0000000000 --- a/app/src/main/res/xml/rowkeys_tamil3.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_telugu1.xml b/app/src/main/res/xml/rowkeys_telugu1.xml deleted file mode 100644 index 20bc695bda..0000000000 --- a/app/src/main/res/xml/rowkeys_telugu1.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_telugu2.xml b/app/src/main/res/xml/rowkeys_telugu2.xml deleted file mode 100644 index c3c4a6b81e..0000000000 --- a/app/src/main/res/xml/rowkeys_telugu2.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_telugu3.xml b/app/src/main/res/xml/rowkeys_telugu3.xml deleted file mode 100644 index e42eaa503b..0000000000 --- a/app/src/main/res/xml/rowkeys_telugu3.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_thai1.xml b/app/src/main/res/xml/rowkeys_thai1.xml deleted file mode 100644 index 2211994b56..0000000000 --- a/app/src/main/res/xml/rowkeys_thai1.xml +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_thai2.xml b/app/src/main/res/xml/rowkeys_thai2.xml deleted file mode 100644 index 4aee1cd17c..0000000000 --- a/app/src/main/res/xml/rowkeys_thai2.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_thai3.xml b/app/src/main/res/xml/rowkeys_thai3.xml deleted file mode 100644 index fd21913391..0000000000 --- a/app/src/main/res/xml/rowkeys_thai3.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_thai4.xml b/app/src/main/res/xml/rowkeys_thai4.xml deleted file mode 100644 index 3e70d7e824..0000000000 --- a/app/src/main/res/xml/rowkeys_thai4.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_turkish1.xml b/app/src/main/res/xml/rowkeys_turkish1.xml deleted file mode 100644 index d7291e236b..0000000000 --- a/app/src/main/res/xml/rowkeys_turkish1.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_turkish2.xml b/app/src/main/res/xml/rowkeys_turkish2.xml deleted file mode 100644 index 8b8ab2e49c..0000000000 --- a/app/src/main/res/xml/rowkeys_turkish2.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_turkish3.xml b/app/src/main/res/xml/rowkeys_turkish3.xml deleted file mode 100644 index 48daa1b01a..0000000000 --- a/app/src/main/res/xml/rowkeys_turkish3.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_uzbek1.xml b/app/src/main/res/xml/rowkeys_uzbek1.xml deleted file mode 100644 index 1a12d33792..0000000000 --- a/app/src/main/res/xml/rowkeys_uzbek1.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/rowkeys_uzbek2.xml b/app/src/main/res/xml/rowkeys_uzbek2.xml deleted file mode 100644 index 171482b671..0000000000 --- a/app/src/main/res/xml/rowkeys_uzbek2.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/rowkeys_workman1.xml b/app/src/main/res/xml/rowkeys_workman1.xml deleted file mode 100644 index bac26443ec..0000000000 --- a/app/src/main/res/xml/rowkeys_workman1.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/rowkeys_workman2.xml b/app/src/main/res/xml/rowkeys_workman2.xml deleted file mode 100644 index a836b419f0..0000000000 --- a/app/src/main/res/xml/rowkeys_workman2.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rowkeys_workman3.xml b/app/src/main/res/xml/rowkeys_workman3.xml deleted file mode 100644 index d303ec6113..0000000000 --- a/app/src/main/res/xml/rowkeys_workman3.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_arabic.xml b/app/src/main/res/xml/rows_arabic.xml deleted file mode 100644 index 09b3e682b2..0000000000 --- a/app/src/main/res/xml/rows_arabic.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_arabic_pc.xml b/app/src/main/res/xml/rows_arabic_pc.xml deleted file mode 100644 index 66afe9ac0c..0000000000 --- a/app/src/main/res/xml/rows_arabic_pc.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_armenian_phonetic.xml b/app/src/main/res/xml/rows_armenian_phonetic.xml deleted file mode 100644 index 20692f3307..0000000000 --- a/app/src/main/res/xml/rows_armenian_phonetic.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_azerty.xml b/app/src/main/res/xml/rows_azerty.xml deleted file mode 100644 index 1d6ff601c3..0000000000 --- a/app/src/main/res/xml/rows_azerty.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_bengali.xml b/app/src/main/res/xml/rows_bengali.xml deleted file mode 100644 index 3403ac37c4..0000000000 --- a/app/src/main/res/xml/rows_bengali.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_bengali_akkhor.xml b/app/src/main/res/xml/rows_bengali_akkhor.xml deleted file mode 100644 index 1bcc52b07f..0000000000 --- a/app/src/main/res/xml/rows_bengali_akkhor.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/rows_bengali_unijoy.xml b/app/src/main/res/xml/rows_bengali_unijoy.xml deleted file mode 100644 index 92175b29a7..0000000000 --- a/app/src/main/res/xml/rows_bengali_unijoy.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_bepo.xml b/app/src/main/res/xml/rows_bepo.xml deleted file mode 100644 index c9be7eaaba..0000000000 --- a/app/src/main/res/xml/rows_bepo.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_bulgarian.xml b/app/src/main/res/xml/rows_bulgarian.xml deleted file mode 100644 index 8dd6b4ec13..0000000000 --- a/app/src/main/res/xml/rows_bulgarian.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_bulgarian_bds.xml b/app/src/main/res/xml/rows_bulgarian_bds.xml deleted file mode 100644 index ca5eca5a14..0000000000 --- a/app/src/main/res/xml/rows_bulgarian_bds.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_bulgarian_bekl.xml b/app/src/main/res/xml/rows_bulgarian_bekl.xml deleted file mode 100644 index cb39e2a9a8..0000000000 --- a/app/src/main/res/xml/rows_bulgarian_bekl.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_colemak.xml b/app/src/main/res/xml/rows_colemak.xml deleted file mode 100644 index e253620101..0000000000 --- a/app/src/main/res/xml/rows_colemak.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_colemak_dh.xml b/app/src/main/res/xml/rows_colemak_dh.xml deleted file mode 100644 index efb6f2b134..0000000000 --- a/app/src/main/res/xml/rows_colemak_dh.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_dvorak.xml b/app/src/main/res/xml/rows_dvorak.xml deleted file mode 100644 index 4900f04ec6..0000000000 --- a/app/src/main/res/xml/rows_dvorak.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_east_slavic.xml b/app/src/main/res/xml/rows_east_slavic.xml deleted file mode 100644 index 064f926964..0000000000 --- a/app/src/main/res/xml/rows_east_slavic.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_farsi.xml b/app/src/main/res/xml/rows_farsi.xml deleted file mode 100644 index e7f46845b1..0000000000 --- a/app/src/main/res/xml/rows_farsi.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_georgian.xml b/app/src/main/res/xml/rows_georgian.xml deleted file mode 100644 index e28224f042..0000000000 --- a/app/src/main/res/xml/rows_georgian.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_german.xml b/app/src/main/res/xml/rows_german.xml deleted file mode 100644 index c53ca87974..0000000000 --- a/app/src/main/res/xml/rows_german.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_greek.xml b/app/src/main/res/xml/rows_greek.xml deleted file mode 100644 index 8d5964c936..0000000000 --- a/app/src/main/res/xml/rows_greek.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_hebrew.xml b/app/src/main/res/xml/rows_hebrew.xml deleted file mode 100644 index 1d7a9a1399..0000000000 --- a/app/src/main/res/xml/rows_hebrew.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_hindi.xml b/app/src/main/res/xml/rows_hindi.xml deleted file mode 100644 index 3ad016530b..0000000000 --- a/app/src/main/res/xml/rows_hindi.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_hindi_compact.xml b/app/src/main/res/xml/rows_hindi_compact.xml deleted file mode 100644 index c76b34e0c7..0000000000 --- a/app/src/main/res/xml/rows_hindi_compact.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_kannada.xml b/app/src/main/res/xml/rows_kannada.xml deleted file mode 100644 index acc295cef9..0000000000 --- a/app/src/main/res/xml/rows_kannada.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/rows_khmer.xml b/app/src/main/res/xml/rows_khmer.xml deleted file mode 100644 index 06b3234606..0000000000 --- a/app/src/main/res/xml/rows_khmer.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_lao.xml b/app/src/main/res/xml/rows_lao.xml deleted file mode 100644 index 90e9ba4118..0000000000 --- a/app/src/main/res/xml/rows_lao.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_malayalam.xml b/app/src/main/res/xml/rows_malayalam.xml deleted file mode 100644 index 9f49d01ac7..0000000000 --- a/app/src/main/res/xml/rows_malayalam.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/rows_marathi.xml b/app/src/main/res/xml/rows_marathi.xml deleted file mode 100644 index e7acb5d703..0000000000 --- a/app/src/main/res/xml/rows_marathi.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/rows_mongolian.xml b/app/src/main/res/xml/rows_mongolian.xml deleted file mode 100644 index d3110bfaf9..0000000000 --- a/app/src/main/res/xml/rows_mongolian.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_nepali_romanized.xml b/app/src/main/res/xml/rows_nepali_romanized.xml deleted file mode 100644 index eb5619e053..0000000000 --- a/app/src/main/res/xml/rows_nepali_romanized.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_nepali_traditional.xml b/app/src/main/res/xml/rows_nepali_traditional.xml deleted file mode 100644 index 2c3914b156..0000000000 --- a/app/src/main/res/xml/rows_nepali_traditional.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_nordic.xml b/app/src/main/res/xml/rows_nordic.xml deleted file mode 100644 index bd25626742..0000000000 --- a/app/src/main/res/xml/rows_nordic.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_number.xml b/app/src/main/res/xml/rows_number.xml deleted file mode 100644 index 0312b04ab9..0000000000 --- a/app/src/main/res/xml/rows_number.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_number_normal.xml b/app/src/main/res/xml/rows_number_normal.xml deleted file mode 100644 index dbe77f1749..0000000000 --- a/app/src/main/res/xml/rows_number_normal.xml +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_number_password.xml b/app/src/main/res/xml/rows_number_password.xml deleted file mode 100644 index a59b8ef78d..0000000000 --- a/app/src/main/res/xml/rows_number_password.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_pcqwerty.xml b/app/src/main/res/xml/rows_pcqwerty.xml deleted file mode 100644 index 73a235bb20..0000000000 --- a/app/src/main/res/xml/rows_pcqwerty.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_phone.xml b/app/src/main/res/xml/rows_phone.xml deleted file mode 100644 index 3ac9acf9a2..0000000000 --- a/app/src/main/res/xml/rows_phone.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_phone_symbols.xml b/app/src/main/res/xml/rows_phone_symbols.xml deleted file mode 100644 index e8ca7f0cfb..0000000000 --- a/app/src/main/res/xml/rows_phone_symbols.xml +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_qwerty.xml b/app/src/main/res/xml/rows_qwerty.xml deleted file mode 100644 index cf6d7e1141..0000000000 --- a/app/src/main/res/xml/rows_qwerty.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_qwertz.xml b/app/src/main/res/xml/rows_qwertz.xml deleted file mode 100644 index 1cca9d603c..0000000000 --- a/app/src/main/res/xml/rows_qwertz.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_serbian_qwertz.xml b/app/src/main/res/xml/rows_serbian_qwertz.xml deleted file mode 100644 index a37f219a90..0000000000 --- a/app/src/main/res/xml/rows_serbian_qwertz.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/rows_sinhala.xml b/app/src/main/res/xml/rows_sinhala.xml deleted file mode 100644 index 36cd497e5c..0000000000 --- a/app/src/main/res/xml/rows_sinhala.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_south_slavic.xml b/app/src/main/res/xml/rows_south_slavic.xml deleted file mode 100644 index 6149df1443..0000000000 --- a/app/src/main/res/xml/rows_south_slavic.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_spanish.xml b/app/src/main/res/xml/rows_spanish.xml deleted file mode 100644 index 07fb326dfe..0000000000 --- a/app/src/main/res/xml/rows_spanish.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_swiss.xml b/app/src/main/res/xml/rows_swiss.xml deleted file mode 100644 index a3b81bf7df..0000000000 --- a/app/src/main/res/xml/rows_swiss.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_symbols.xml b/app/src/main/res/xml/rows_symbols.xml deleted file mode 100644 index 046c5e89ad..0000000000 --- a/app/src/main/res/xml/rows_symbols.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_symbols_shift.xml b/app/src/main/res/xml/rows_symbols_shift.xml deleted file mode 100644 index 32ad66f4af..0000000000 --- a/app/src/main/res/xml/rows_symbols_shift.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_tamil.xml b/app/src/main/res/xml/rows_tamil.xml deleted file mode 100644 index 0621fe9e2c..0000000000 --- a/app/src/main/res/xml/rows_tamil.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/rows_telugu.xml b/app/src/main/res/xml/rows_telugu.xml deleted file mode 100644 index ca01ac0ef4..0000000000 --- a/app/src/main/res/xml/rows_telugu.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/rows_thai.xml b/app/src/main/res/xml/rows_thai.xml deleted file mode 100644 index 11ee2455ad..0000000000 --- a/app/src/main/res/xml/rows_thai.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_turkish.xml b/app/src/main/res/xml/rows_turkish.xml deleted file mode 100644 index 2e726186d3..0000000000 --- a/app/src/main/res/xml/rows_turkish.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/rows_uzbek.xml b/app/src/main/res/xml/rows_uzbek.xml deleted file mode 100644 index c8e24137f2..0000000000 --- a/app/src/main/res/xml/rows_uzbek.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/rows_workman.xml b/app/src/main/res/xml/rows_workman.xml deleted file mode 100644 index fc9538a356..0000000000 --- a/app/src/main/res/xml/rows_workman.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/spell_checker_settings.xml b/app/src/main/res/xml/spell_checker_settings.xml deleted file mode 100644 index 3d95018577..0000000000 --- a/app/src/main/res/xml/spell_checker_settings.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/spellchecker.xml b/app/src/main/res/xml/spellchecker.xml index 85c6cffb7c..4f0fc710ba 100644 --- a/app/src/main/res/xml/spellchecker.xml +++ b/app/src/main/res/xml/spellchecker.xml @@ -1,20 +1,8 @@ + android:label="@string/subtype_generic" + android:subtypeLocale="el" /> + android:label="@string/subtype_generic" + android:subtypeLocale="en" /> + android:label="@string/subtype_generic" + android:subtypeLocale="en_AU" /> + android:label="@string/subtype_generic" + android:subtypeLocale="en_GB" /> + android:label="@string/subtype_generic" + android:subtypeLocale="en_US" /> + android:label="@string/subtype_generic" + android:subtypeLocale="eo" /> + android:label="@string/subtype_generic" + android:subtypeLocale="es" /> + android:label="@string/subtype_generic" + android:subtypeLocale="fi" /> + android:label="@string/subtype_generic" + android:subtypeLocale="fr" /> + android:label="@string/subtype_generic" + android:subtypeLocale="gl" /> + android:label="@string/subtype_generic" + android:subtypeLocale="gu" /> + android:label="@string/subtype_generic" + android:subtypeLocale="hi" /> + android:label="@string/subtype_generic" + android:subtypeLocale="hr" /> + android:label="@string/subtype_generic" + android:subtypeLocale="hu" /> + android:label="@string/subtype_generic" + android:subtypeLocale="hy" /> + android:label="@string/subtype_generic" + android:subtypeLocale="it" /> - - - - - - - - + android:label="@string/subtype_generic" + android:subtypeLocale="iw" /> + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/test/java/helium314/keyboard/KeySpecParserTest.kt b/app/src/test/java/helium314/keyboard/KeySpecParserTest.kt new file mode 100644 index 0000000000..cc6b1fc979 --- /dev/null +++ b/app/src/test/java/helium314/keyboard/KeySpecParserTest.kt @@ -0,0 +1,28 @@ +package helium314.keyboard + +import helium314.keyboard.keyboard.internal.KeySpecParser +import helium314.keyboard.keyboard.internal.keyboard_parser.floris.KeyCode +import kotlin.test.Test +import kotlin.test.assertEquals + +class KeySpecParserTest { + @Test fun label() { + assertEquals("a", KeySpecParser.getLabel("a")) + assertEquals("a", KeySpecParser.getLabel("a|b")) + assertEquals("hey", KeySpecParser.getLabel("hey|there")) + assertEquals("a|b", KeySpecParser.getLabel("a|b|c")) + assertEquals("a|b", KeySpecParser.getLabel("a\\|b")) + assertEquals("a|b", KeySpecParser.getLabel("a\\|b|c")) + assertEquals("a|b|c", KeySpecParser.getLabel("a\\|b|c|d")) + } + + @Test fun code() { + assertEquals('a'.code, KeySpecParser.getCode("a")) + assertEquals('b'.code, KeySpecParser.getCode("a|b")) + assertEquals(KeyCode.MULTIPLE_CODE_POINTS, KeySpecParser.getCode("hey|there")) + assertEquals('c'.code, KeySpecParser.getCode("a|b|c")) + assertEquals(KeyCode.MULTIPLE_CODE_POINTS, KeySpecParser.getCode("a\\|b")) + assertEquals('c'.code, KeySpecParser.getCode("a\\|b|c")) + assertEquals('d'.code, KeySpecParser.getCode("a\\|b|c|d")) + } +} diff --git a/app/src/test/java/helium314/keyboard/KeyboardParserTest.kt b/app/src/test/java/helium314/keyboard/KeyboardParserTest.kt new file mode 100644 index 0000000000..6d6a1fb700 --- /dev/null +++ b/app/src/test/java/helium314/keyboard/KeyboardParserTest.kt @@ -0,0 +1,560 @@ +// SPDX-License-Identifier: GPL-3.0-only +package helium314.keyboard + +import android.view.inputmethod.EditorInfo +import android.view.inputmethod.InputMethodSubtype +import com.android.inputmethod.keyboard.ProximityInfo +import helium314.keyboard.keyboard.Key.KeyParams +import helium314.keyboard.keyboard.Keyboard +import helium314.keyboard.keyboard.KeyboardId +import helium314.keyboard.keyboard.KeyboardLayoutSet +import helium314.keyboard.keyboard.internal.KeySpecParser.KeySpecParserError +import helium314.keyboard.keyboard.internal.KeyboardBuilder +import helium314.keyboard.keyboard.internal.KeyboardParams +import helium314.keyboard.keyboard.internal.TouchPositionCorrection +import helium314.keyboard.keyboard.internal.UniqueKeysCache +import helium314.keyboard.keyboard.internal.keyboard_parser.LayoutParser +import helium314.keyboard.keyboard.internal.keyboard_parser.POPUP_KEYS_NORMAL +import helium314.keyboard.keyboard.internal.keyboard_parser.addLocaleKeyTextsToParams +import helium314.keyboard.keyboard.internal.keyboard_parser.floris.KeyCode +import helium314.keyboard.latin.LatinIME +import helium314.keyboard.latin.RichInputMethodSubtype +import helium314.keyboard.latin.utils.LayoutUtilsCustom +import helium314.keyboard.latin.utils.POPUP_KEYS_LAYOUT +import helium314.keyboard.latin.utils.SubtypeUtilsAdditional +import org.junit.runner.RunWith +import org.robolectric.Robolectric +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config +import org.robolectric.annotation.Implementation +import org.robolectric.annotation.Implements +import org.robolectric.shadows.ShadowLog +import java.io.File +import java.util.Locale +import kotlin.test.BeforeTest +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertFailsWith +import kotlin.test.assertTrue + +@RunWith(RobolectricTestRunner::class) +@Config(shadows = [ + ShadowInputMethodManager2::class, + ShadowProximityInfo::class, +]) +class ParserTest { + private lateinit var latinIME: LatinIME + private lateinit var params: KeyboardParams + + @BeforeTest fun setUp() { + latinIME = Robolectric.setupService(LatinIME::class.java) + ShadowLog.setupLogging() + ShadowLog.stream = System.out + params = KeyboardParams() + params.mId = KeyboardLayoutSet.getFakeKeyboardId(KeyboardId.ELEMENT_ALPHABET) + params.mPopupKeyTypes.add(POPUP_KEYS_LAYOUT) + addLocaleKeyTextsToParams(latinIME, params, POPUP_KEYS_NORMAL) + } + + // todo: add tests for background type, also consider e.g. emoji key has functional bg by default + + @Test fun simpleParser() { + val layoutStrings = listOf( +""" +a +b +c + +d +e +f +""", // normal +""" +a +b +c + +d +e +f +""", // spaces in the empty line +""" +a +b +c + +d +e +f +""".replace("\n", "\r\n"), // windows file endings +""" +a +b +c + + +d +e +f + +""", // too many newlines +""" +a +b x +c v + +d +e +f +""", // spaces in the end +""" +a +b +c + +d +e +f""", // no newline at the end + ) + val wantedKeyLabels = listOf(listOf("a", "b", "c"), listOf("d", "e", "f")) + layoutStrings.forEachIndexed { i, layout -> + println(i) + val keyLabels = LayoutParser.parseSimpleString(layout) + .map { row -> row.map { it.toKeyParams(params).mLabel } } + assertEquals(wantedKeyLabels, keyLabels) + } + } + + @Test fun simpleKey() { + assertIsExpected("""[[{ "$": "auto_text_key" "label": "a" }]]""", Expected('a'.code, "a")) + assertIsExpected("""[[{ "$": "text_key" "label": "a" }]]""", Expected('a'.code, "a")) + assertIsExpected("""[[{ "label": "a" }]]""", Expected('a'.code, "a")) + } + + @Test fun labelAndExplicitCode() { + assertIsExpected("""[[{ "$": "text_key" "label": "a", "code": 98 }]]""", Expected('b'.code, "a")) + } + + @Test fun labelAndImplicitCode() { + assertIsExpected("""[[{ "$": "text_key" "label": "a|b" }]]""", Expected('b'.code, "a")) + } + + @Test fun labelAndImplicitText() { + assertIsExpected("""[[{ "$": "text_key" "label": "a|bb" }]]""", Expected(KeyCode.MULTIPLE_CODE_POINTS, "a", text = "bb")) + // todo: should this actually work? + assertIsExpected("""[[{ "$": "text_key" "label": "a|" }]]""", Expected(KeyCode.MULTIPLE_CODE_POINTS, "a", text = "")) + } + + @Test fun labelAndImplicitAndExplicitCode() { // explicit code overrides implicit code + assertIsExpected("""[[{ "code": 32, "label": "a|b" }]]""", Expected(' '.code, "a")) + assertIsExpected("""[[{ "code": 32, "label": "a|!code/key_delete" }]]""", Expected(' '.code, "a")) + assertIsExpected("""[[{ "code": 32, "label": "a|!code/-1" }]]""", Expected(' '.code, "a")) + assertIsExpected("""[[{ "code": -1, "label": "a|!code/key_delete" }]]""", Expected(KeyCode.CTRL, "a")) + // todo: should text be null? it's not used at all (it could be, but it really should not) + assertIsExpected("""[[{ "code": 32, "label": "a|bb" }]]""", Expected(' '.code, "a", text = "bb")) + assertIsExpected("""[[{ "code": 32, "label": "a|bb", "popup": { "main": { "code": 32, "label": "!icon/undo|!code/key_delete" } } }]]""", Expected(' '.code, "a", text = "bb", popups = listOf(null to ' '.code))) + assertIsExpected("""[[{ "code": 32, "label": "a|bb", "popup": { "main": { "code": -1, "label": "!icon/undo|!code/key_delete" } } }]]""", Expected(' '.code, "a", text = "bb", popups = listOf(null to KeyCode.CTRL))) + assertIsExpected("""[[{ "code": 32, "label": "a|bb", "popup": { "main": { "code": 32, "label": "a|!code/key_delete" } } }]]""", Expected(' '.code, "a", text = "bb", popups = listOf("a" to ' '.code))) + assertIsExpected("""[[{ "code": 32, "label": "a|bb", "popup": { "main": { "code": -1, "label": "a|!code/key_delete" } } }]]""", Expected(' '.code, "a", text = "bb", popups = listOf("a" to KeyCode.CTRL))) + } + + @Test fun keyWithIconAndExplicitCode() { + assertIsExpected("""[[{ "label": "!icon/clipboard", "code": 55 }]]""", Expected(55, icon = "clipboard")) + assertIsExpected("""[[{ "label": "!icon/clipboard", "code": -1 }]]""", Expected(KeyCode.CTRL, icon = "clipboard")) + } + + @Test fun keyWithIconAndImplicitCode() { + assertIsExpected("""[[{ "label": "!icon/clipboard_action_key|!code/key_clipboard" }]]""", Expected(KeyCode.CLIPBOARD, icon = "clipboard_action_key")) + assertIsExpected("""[[{ "label": "!icon/clipboard_action_key|!code/key_clipboard", "popup": { "main": { "label": "!icon/undo|!code/key_delete" } } }]]""", Expected(KeyCode.CLIPBOARD, icon = "clipboard_action_key", popups = listOf(null to KeyCode.DELETE))) + } + + @Test fun popupKeyWithIconAndExplicitCode() { + assertIsExpected("""[[{ "label": "a", "popup": { "relevant": [ + { "label": "!icon/go_key", "code": 32 } + ] + } }]]""", Expected('a'.code, "a", popups = listOf(null to ' '.code))) + } + + @Test fun popupKeyWithIconAndExplicitAndImplicitCode() { + assertIsExpected("""[[{ "label": "a", "popup": { "relevant": [ + { "label": "!icon/go_key|", "code": 32 } + ] + } }]]""", Expected('a'.code, "a", popups = listOf(null to ' '.code))) + assertIsExpected("""[[{ "label": "a", "popup": { "relevant": [ + { "label": "!icon/go_key|abc", "code": 32 } + ] + } }]]""", Expected('a'.code, "a", popups = listOf(null to ' '.code))) + } + + @Test fun labelAndImplicitCodeForPopup() { + assertIsExpected("""[[{ "$": "text_key" "label": "a|b", "popup": { "main": { "label": "b|a" } } }]]""", Expected('b'.code, "a", popups = listOf("b" to 'a'.code))) + assertIsExpected("""[[{ "label": "a", "popup": { "relevant": [ + { "label": "!icon/go_key|" } + ] + } }]]""", Expected('a'.code, "a", + popups = listOf(null to KeyCode.MULTIPLE_CODE_POINTS)) + ) + } + + @Test fun `| works`() { + assertIsExpected("""[[{ "label": "|", "popup": { "main": { "label": "|" } } }]]""", Expected('|'.code, "|", popups = listOf("|" to '|'.code))) + } + + @Test fun currencyKey() { + assertIsExpected("""[[{ "label": "$$$" }]]""", Expected('$'.code, "$", popups = listOf("£", "€", "¢", "¥", "₱").map { it to it.first().code })) + } + + @Test fun currencyKeyWithOtherCurrencyCode() { + assertIsExpected("""[[{ "label": "$$$", code: -805 }]]""", Expected('¥'.code, "$", popups = listOf("£", "€", "¢", "¥", "₱").map { it to it.first().code })) + } + + @Test fun currencyPopup() { + assertIsExpected("""[[{ "label": "p", "popup": { "main": { "label": "$$$" } } }]]""", Expected('p'.code, "p", null, null, listOf("$" to '$'.code))) + assertIsExpected("""[[{ "label": "p", "popup": { "main": { "label": "a", "code": -804 } } }]]""", Expected('p'.code, "p", null, null, listOf("a" to '€'.code))) + assertIsExpected("""[[{ "label": "p", "popup": { "main": { "label": "!icon/clipboard_action_key", "code": -804 } } }]]""", Expected('p'.code, "p", null, null, listOf(null to '€'.code))) + } + + @Test fun weirdCurrencyKey() { + assertIsExpected("""[[{ "code": -801, "label": "currency_slot_1", "popup": { + "main": { "code": -802, "label": "currency_slot_2" }, + "relevant": [ + { "code": -806, "label": "currency_slot_6" }, + { "code": -803, "label": "currency_slot_3" }, + { "code": -804, "label": "currency_slot_4" }, + { "code": -805, "label": "currency_slot_5" }, + { "code": -804, "label": "$$$4" } + ] + } }]]""", Expected('$'.code, "$", popups = listOf("£" to '£'.code, "₱" to '₱'.code, "€" to '€'.code, "¢" to '¢'.code, "¥" to '¥'.code, "¥" to '€'.code))) + } + + @Test fun caseSelector() { + assertIsExpected("""[[{ "$": "case_selector", + "lower": { "code": 105, "label": "i" }, + "upper": { "code": 304, "label": "İ" } + }]]""", Expected(105, "i")) + } + + @Test fun caseSelectorWithPopup() { + assertIsExpected("""[[{ "$": "case_selector", + "lower": { "code": 59, "label": ";", "popup": { + "relevant": [ + { "code": 58, "label": ":" } + ] + } }, + "upper": { "code": 58, "label": ":", "popup": { + "relevant": [ + { "code": 59, "label": ";" } + ] + } } + }]]""", Expected(';'.code, ";", popups = listOf(":").map { it to it.first().code })) + } + + @Test fun shiftSelector() { + assertIsExpected("""[[{ "$": "shift_state_selector", + "shiftedManual": { "code": 62, "label": ">", "popup": { + "relevant": [ + { "code": 46, "label": "." } + ] + } }, + "default": { "code": 46, "label": ".", "popup": { + "relevant": [ + { "code": 62, "label": ">" } + ] + } } + }]]""", Expected('.'.code, ".", popups = listOf(">").map { it to it.first().code })) + } + + @Test fun nestedSelectors() { + assertIsExpected("""[[{ "$": "shift_state_selector", + "shiftedManual": { "code": 34, "label": "\"", "popup": { + "relevant": [ + { "code": 33, "label": "!" }, + { "code": 39, "label": "'"} + ] + } }, + "default": { "$": "variation_selector", + "email": { "code": 64, "label": "@" }, + "uri": { "code": 47, "label": "/" }, + "default": { "code": 39, "label": "'", "popup": { + "relevant": [ + { "code": 33, "label": "!" }, + { "code": 34, "label": "\"" } + ] + } } + } + }]]""", Expected('\''.code, "'", popups = listOf("!", "\"").map { it to it.first().code })) + } + + @Test fun layoutDirectionSelector() { + assertIsExpected("""[[{ "$": "layout_direction_selector", + "ltr": { "code": 40, "label": "(", "popup": { + "main": { "code": 60, "label": "<" }, + "relevant": [ + { "code": 91, "label": "[" }, + { "code": 123, "label": "{" } + ] + } }, + "rtl": { "code": 41, "label": "(", "popup": { + "main": { "code": 62, "label": "<" }, + "relevant": [ + { "code": 93, "label": "[" }, + { "code": 125, "label": "{" } + ] + } } + }]]""", Expected('('.code, "(", popups = listOf("<", "[", "{").map { it to it.first().code })) + } + + @Test fun autoMultiTextKey() { + assertIsExpected("""[[{ "label": "্র" }]]""", Expected(KeyCode.MULTIPLE_CODE_POINTS, "্র", text = "্র")) + } + + @Test fun multiTextKey() { // pointless without codepoints! + assertIsExpected("""[[{ "$": "multi_text_key", "codePoints": [2509, 2480], "label": "্র" }]]""", Expected(KeyCode.MULTIPLE_CODE_POINTS, "্র", text = "্র")) + assertIsExpected("""[[{ "$": "multi_text_key", "codePoints": [2509, 2480], "label": "x" }]]""", Expected(KeyCode.MULTIPLE_CODE_POINTS, "x", text = "্র")) + } + + @Test fun negativeCode() { + assertIsExpected("""[[{ "code": -7, "label": "delete" }]]""", Expected(-7, icon = "delete_key")) + } + + @Test fun keyWithType() { + assertIsExpected("""[[{ "code": 57, "label": "9", "type": "numeric" }]]""", Expected(57, "9")) + assertIsExpected("""[[{ "code": -7, "label": "delete", "type": "enter_editing" }]]""", Expected(-7, icon = "delete_key")) + // -207 gets translated to -202 in Int.toKeyEventCode + assertIsExpected("""[[{ "code": -207, "label": "view_phone2", "type": "system_gui" }]]""", Expected(-202, "?123")) + } + + @Test fun spaceKey() { + assertIsExpected("""[[{ "code": 32, "label": "space" }]]""", Expected(32, icon = "space_key")) + } + + @Test fun invalidKeys() { + assertFailsWith { + LayoutParser.parseJsonString("""[[{ "label": "!icon/clipboard_action_key" }]]""") + .map { row -> row.mapNotNull { it.compute(params)?.toKeyParams(params) } } + } + } + + @Test fun popupWithCodeAndLabel() { + val key = LayoutParser.parseJsonString("""[[{ "label": "w", "popup": { + "main": { "code": 55, "label": "!" } + } }]]""").map { row -> row.mapNotNull { it.compute(params) } }.flatten().single() + assertEquals("!", key.toKeyParams(params).mPopupKeys?.first()?.mLabel) + assertEquals('7'.code, key.toKeyParams(params).mPopupKeys?.first()?.mCode) + } + + @Test fun popupWithCodeAndIcon() { + val key = LayoutParser.parseJsonString("""[[{ "label": "w", "popup": { + "main": { "code": 55, "label": "!icon/clipboard_action_key" } + } }]]""").map { row -> row.mapNotNull { it.compute(params) } }.flatten().single() + assertEquals(null, key.toKeyParams(params).mPopupKeys?.first()?.mLabel) + assertEquals("clipboard_action_key", key.toKeyParams(params).mPopupKeys?.first()?.mIconName) + assertEquals('7'.code, key.toKeyParams(params).mPopupKeys?.first()?.mCode) + } + + @Test fun popupToolbarKey() { + val key = LayoutParser.parseJsonString("""[[{ "label": "x", "popup": { + "main": { "label": "undo" } + } }]]""").map { row -> row.mapNotNull { it.compute(params) } }.flatten().single() + assertEquals(null, key.toKeyParams(params).mPopupKeys?.first()?.mLabel) + assertEquals("undo", key.toKeyParams(params).mPopupKeys?.first()?.mIconName) + assertEquals(KeyCode.UNDO, key.toKeyParams(params).mPopupKeys?.first()?.mCode) + } + + @Test fun popupKeyWithIconAndImplicitText() { + val key = LayoutParser.parseJsonString("""[[{ "label": "a", "popup": { "relevant": [ + { "label": "!icon/go_key|aa" } + ] + } }]]""").map { row -> row.mapNotNull { it.compute(params) } }.flatten().single() + assertEquals(null, key.toKeyParams(params).mPopupKeys?.first()?.mLabel) + assertEquals("go_key", key.toKeyParams(params).mPopupKeys?.first()?.mIconName) + assertEquals(KeyCode.MULTIPLE_CODE_POINTS, key.toKeyParams(params).mPopupKeys?.first()?.mCode) + assertEquals("aa", key.toKeyParams(params).mPopupKeys?.first()?.mOutputText) + + val key2 = LayoutParser.parseJsonString("""[[{ "label": "a", "popup": { "relevant": [ + { "label": "!icon/go_key|" } + ] + } }]]""").map { row -> row.mapNotNull { it.compute(params) } }.flatten().single() + assertEquals(null, key2.toKeyParams(params).mPopupKeys?.first()?.mLabel) + assertEquals("go_key", key2.toKeyParams(params).mPopupKeys?.first()?.mIconName) + assertEquals(KeyCode.MULTIPLE_CODE_POINTS, key2.toKeyParams(params).mPopupKeys?.first()?.mCode) + assertEquals("", key2.toKeyParams(params).mPopupKeys?.first()?.mOutputText) + } + + // output text is null here, maybe should be changed? + @Test fun popupKeyWithIconAndCodeAndImplicitText() { + val key = LayoutParser.parseJsonString("""[[{ "label": "a", "popup": { "relevant": [ + { "label": "!icon/go_key|", "code": 55 } + ] + } }]]""").map { row -> row.mapNotNull { it.compute(params) } }.flatten().single() + assertEquals(null, key.toKeyParams(params).mPopupKeys?.first()?.mLabel) + assertEquals("go_key", key.toKeyParams(params).mPopupKeys?.first()?.mIconName) + assertEquals(55, key.toKeyParams(params).mPopupKeys?.first()?.mCode) + assertEquals(null, key.toKeyParams(params).mPopupKeys?.first()?.mOutputText) + + val key2 = LayoutParser.parseJsonString("""[[{ "label": "a", "popup": { "relevant": [ + { "label": "!icon/go_key|a", "code": 55 } + ] + } }]]""").map { row -> row.mapNotNull { it.compute(params) } }.flatten().single() + assertEquals(null, key2.toKeyParams(params).mPopupKeys?.first()?.mLabel) + assertEquals("go_key", key2.toKeyParams(params).mPopupKeys?.first()?.mIconName) + assertEquals(55, key2.toKeyParams(params).mPopupKeys?.first()?.mCode) + assertEquals(null, key2.toKeyParams(params).mPopupKeys?.first()?.mOutputText) + + val key3 = LayoutParser.parseJsonString("""[[{ "label": "a", "popup": { "relevant": [ + { "label": "!icon/go_key|aa", "code": 55 } + ] + } }]]""").map { row -> row.mapNotNull { it.compute(params) } }.flatten().single() + assertEquals(null, key3.toKeyParams(params).mPopupKeys?.first()?.mLabel) + assertEquals("go_key", key3.toKeyParams(params).mPopupKeys?.first()?.mIconName) + assertEquals(55, key3.toKeyParams(params).mPopupKeys?.first()?.mCode) + assertEquals(null, key3.toKeyParams(params).mPopupKeys?.first()?.mOutputText) + } + + @Test fun invalidPopupKeys() { + assertFailsWith { + LayoutParser.parseJsonString("""[[{ "label": "a", "popup": { + "main": { "label": "!icon/clipboard_action_key" } + } }]]""").map { row -> row.mapNotNull { it.compute(params)?.toKeyParams(params) } } + } + } + + @Test fun popupSymbolAlpha() { + val key = LayoutParser.parseJsonString("""[[{ "label": "c", "popup": { + "main": { "code": -10001, "label": "x" } + } }]]""").map { row -> row.mapNotNull { it.compute(params) } }.flatten().single() + assertEquals("x", key.toKeyParams(params).mPopupKeys?.first()?.mLabel) + assertEquals(-10001, key.toKeyParams(params).mPopupKeys?.first()?.mCode) + } + + @Test fun canLoadKeyboard() { + val editorInfo = EditorInfo() + val subtype = SubtypeUtilsAdditional.createEmojiCapableAdditionalSubtype(Locale.ENGLISH, "qwerty", true) + val (kb, keys) = buildKeyboard(editorInfo, subtype, KeyboardId.ELEMENT_ALPHABET) + assertEquals(kb.sortedKeys.size, keys.sumOf { it.size }) + } + + @Test fun `dvorak has 4 rows`() { + val editorInfo = EditorInfo() + val subtype = SubtypeUtilsAdditional.createEmojiCapableAdditionalSubtype(Locale.ENGLISH, "dvorak", true) + val (_, keys) = buildKeyboard(editorInfo, subtype, KeyboardId.ELEMENT_ALPHABET) + assertEquals(keys.size, 4) + } + + @Test fun `de_DE has extra keys`() { + val editorInfo = EditorInfo() + val subtype = SubtypeUtilsAdditional.createEmojiCapableAdditionalSubtype(Locale.GERMANY, "qwertz+", true) + val (_, keys) = buildKeyboard(editorInfo, subtype, KeyboardId.ELEMENT_ALPHABET) + assertEquals(11, keys[0].size) + assertEquals(11, keys[1].size) + assertEquals(10, keys[2].size) + val (_, keys2) = buildKeyboard(editorInfo, subtype, KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) + assertEquals(11, keys2[0].size) + assertEquals(11, keys2[1].size) + assertEquals(10, keys2[2].size) + } + + @Test fun `popup key count does not depend on shift for (for simple layout)`() { + val editorInfo = EditorInfo() + val subtype = SubtypeUtilsAdditional.createEmojiCapableAdditionalSubtype(Locale.ENGLISH, "qwerty", true) + val (kb, keys) = buildKeyboard(editorInfo, subtype, KeyboardId.ELEMENT_ALPHABET) + val (kb2, keys2) = buildKeyboard(editorInfo, subtype, KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) + assertEquals(kb.sortedKeys.size, kb2.sortedKeys.size) + keys.forEachIndexed { i, kpList -> kpList.forEachIndexed { j, kp -> + assertEquals(kp.mPopupKeys?.size, keys2[i][j].mPopupKeys?.size) + } } + kb.sortedKeys.forEachIndexed { index, key -> + assertEquals(key.popupKeys?.size, kb2.sortedKeys[index].popupKeys?.size) + } + } + + @Test fun parseExistingLayouts() { + val dir = File("src/main/assets/layouts") + dir.walk().forEach { + if (it.isDirectory) return@forEach + val content = it.readText() + if (it.endsWith(".json")) + LayoutParser.parseJsonString(content) + else LayoutParser.parseSimpleString(content) + } + } + + @Test fun simpleWithLabelPopupHasCode() { + val keys = LayoutParser.parseSimpleString(""" + a symbol + b esc + c undo + + d $$$ + e $$$1 + f blah + tab timestamp + """).map { row -> row.mapNotNull { it.compute(params)?.toKeyParams(params) } }.flatten() + assertEquals("?123", keys[0].mPopupKeys?.first()?.mLabel) + assertEquals(KeyCode.SYMBOL, keys[0].mPopupKeys?.first()?.mCode) + assertEquals("ESC", keys[1].mPopupKeys?.first()?.mLabel) + assertEquals(KeyCode.ESCAPE, keys[1].mPopupKeys?.first()?.mCode) + assertEquals(null, keys[2].mPopupKeys?.first()?.mLabel) + assertEquals("undo", keys[2].mPopupKeys?.first()?.mIconName) + assertEquals(KeyCode.UNDO, keys[2].mPopupKeys?.first()?.mCode) + assertEquals("$", keys[3].mPopupKeys?.first()?.mLabel) + assertEquals('$'.code, keys[3].mPopupKeys?.first()?.mCode) + assertEquals("£", keys[4].mPopupKeys?.first()?.mLabel) + assertEquals('£'.code, keys[4].mPopupKeys?.first()?.mCode) + assertEquals("blah", keys[5].mPopupKeys?.first()?.mLabel) + assertEquals(KeyCode.MULTIPLE_CODE_POINTS, keys[5].mPopupKeys?.first()?.mCode) + assertEquals("tab_key", keys[6].mIconName) + assertEquals(KeyCode.TAB, keys[6].mCode) + assertEquals("⌚", keys[6].mPopupKeys?.first()?.mLabel) + assertEquals(KeyCode.TIMESTAMP, keys[6].mPopupKeys?.first()?.mCode) + } + + private data class Expected(val code: Int, val label: String? = null, val icon: String? = null, val text: String? = null, val popups: List>? = null) + + private fun assertIsExpected(json: String, expected: Expected) { + assertAreExpected(json, listOf(expected)) + } + + private fun assertAreExpected(json: String, expected: List) { + val keys = LayoutParser.parseJsonString(json) + .map { row -> row.mapNotNull { it.compute(params) } }.flatten() + keys.forEachIndexed { index, keyData -> + println("data: key ${keyData.label}: code ${keyData.code}, popups: ${keyData.popup.getPopupKeyLabels(params)}") + val keyParams = keyData.toKeyParams(params) + println("params: key ${keyParams.mLabel}: code ${keyParams.mCode}, popups: ${keyParams.mPopupKeys?.toList()}") + assertEquals(expected[index].label, keyParams.mLabel) + assertEquals(expected[index].icon, keyParams.mIconName) + assertEquals(expected[index].code, keyParams.mCode) + // todo (later): what's wrong with popup order? + assertEquals(expected[index].popups?.sortedBy { it.first }, keyParams.mPopupKeys?.mapNotNull { it.mLabel to it.mCode }?.sortedBy { it.first }) + assertEquals(expected[index].text, keyParams.outputText) + assertTrue(LayoutUtilsCustom.checkKeys(listOf(listOf(keyParams)))) + } + } + + private fun buildKeyboard(editorInfo: EditorInfo, subtype: InputMethodSubtype, elementId: Int): Pair>> { + val layoutParams = KeyboardLayoutSet.Params() + val editorInfoField = KeyboardLayoutSet.Params::class.java.getDeclaredField("mEditorInfo").apply { isAccessible = true } + editorInfoField.set(layoutParams, editorInfo) + val subtypeField = KeyboardLayoutSet.Params::class.java.getDeclaredField("mSubtype").apply { isAccessible = true } + subtypeField.set(layoutParams, RichInputMethodSubtype.get(subtype)) + val widthField = KeyboardLayoutSet.Params::class.java.getDeclaredField("mKeyboardWidth").apply { isAccessible = true } + widthField.setInt(layoutParams, 500) + val heightField = KeyboardLayoutSet.Params::class.java.getDeclaredField("mKeyboardHeight").apply { isAccessible = true } + heightField.setInt(layoutParams, 300) + + val keysInRowsField = KeyboardBuilder::class.java.getDeclaredField("keysInRows").apply { isAccessible = true } + + val id = KeyboardId(elementId, layoutParams) + val builder = KeyboardBuilder(latinIME, KeyboardParams(UniqueKeysCache.NO_CACHE)) + builder.load(id) + @Suppress("UNCHECKED_CAST") + return builder.build() to keysInRowsField.get(builder) as ArrayList> + } +} + +@Implements(ProximityInfo::class) +class ShadowProximityInfo { + @Implementation + fun createNativeProximityInfo(tpc: TouchPositionCorrection): Long = 0 +} diff --git a/app/src/test/java/helium314/keyboard/LayoutTest.kt b/app/src/test/java/helium314/keyboard/LayoutTest.kt new file mode 100644 index 0000000000..5248ba5882 --- /dev/null +++ b/app/src/test/java/helium314/keyboard/LayoutTest.kt @@ -0,0 +1,13 @@ +package helium314.keyboard + +import helium314.keyboard.latin.utils.LayoutType +import kotlin.test.Test +import kotlin.test.assertEquals + +class LayoutTest { + // todo: add more + @Test fun extraValueToMainLayout() { + val extraValue = "KeyboardLayoutSet=MAIN:qwertz+,SupportTouchPositionCorrection" + assertEquals("qwertz+", LayoutType.getMainLayoutFromExtraValue(extraValue)) + } +} \ No newline at end of file diff --git a/app/src/test/java/helium314/keyboard/Shadows.kt b/app/src/test/java/helium314/keyboard/Shadows.kt new file mode 100644 index 0000000000..532a20f573 --- /dev/null +++ b/app/src/test/java/helium314/keyboard/Shadows.kt @@ -0,0 +1,102 @@ +// SPDX-License-Identifier: GPL-3.0-only +package helium314.keyboard + +import android.content.Context +import android.view.KeyEvent +import android.view.inputmethod.InputMethodInfo +import android.view.inputmethod.InputMethodManager +import android.view.inputmethod.InputMethodSubtype +import androidx.core.app.LocaleManagerCompat +import androidx.core.os.LocaleListCompat +import com.android.inputmethod.latin.utils.BinaryDictionaryUtils +import helium314.keyboard.latin.BuildConfig +import helium314.keyboard.latin.common.StringUtils +import org.robolectric.annotation.Implementation +import org.robolectric.annotation.Implements +import org.robolectric.shadows.ShadowInputMethodManager +import java.util.* + +@Implements(LocaleManagerCompat::class) +object ShadowLocaleManagerCompat { + @Implementation + @JvmStatic + fun getSystemLocales(context: Context) = LocaleListCompat.create(Locale.ENGLISH) +} + +// why doesn't the original ShadowInputMethodManager simply work? +@Implements(InputMethodManager::class) +class ShadowInputMethodManager2 : ShadowInputMethodManager() { + @Implementation + override fun getInputMethodList() = listOf( + if (BuildConfig.BUILD_TYPE == "debug" || BuildConfig.BUILD_TYPE == "debugNoMinify") + InputMethodInfo("helium314.keyboard.debug", "LatinIME", "HeliBoard debug", null) + else InputMethodInfo("helium314.keyboard", "LatinIME", "HeliBoard", null), + ) + @Implementation + fun getShortcutInputMethodsAndSubtypes() = emptyMap>() +} + +@Implements(BinaryDictionaryUtils::class) +object ShadowBinaryDictionaryUtils { + @Implementation + @JvmStatic + fun calcNormalizedScore(beforeString: String, afterString: String, score: Int): Float { + val before = StringUtils.toCodePointArray(beforeString) + val after = StringUtils.toCodePointArray(afterString) + val distance = editDistance(beforeString, afterString) + val beforeLength = before.size + val afterLength = after.size + if (0 == beforeLength || 0 == afterLength) return 0.0f + var spaceCount = 0 + for (j: Int in after) { + if (j == KeyEvent.KEYCODE_SPACE) ++spaceCount + } + if (spaceCount == afterLength) return 0.0f + if (score <= 0 || distance >= afterLength) { + // normalizedScore must be 0.0f (the minimum value) if the score is less than or equal to 0, + // or if the edit distance is larger than or equal to afterLength. + return 0.0f + } + // add a weight based on edit distance. + val weight = 1.0f - distance.toFloat() / afterLength.toFloat() + return score.toFloat() / 1000000.0f * weight + } + + private fun editDistance(x: String, y: String): Int { + val dp = Array(x.length + 1) { + IntArray( + y.length + 1 + ) + } + for (i in 0..x.length) { + for (j in 0..y.length) { + if (i == 0) { + dp[i][j] = j + } else if (j == 0) { + dp[i][j] = i + } else { + dp[i][j] = min( + dp[i - 1][j - 1] + + costOfSubstitution(x[i - 1], y[j - 1]), + dp[i - 1][j] + 1, + dp[i][j - 1] + 1 + ) + } + } + } + return dp[x.length][y.length] + } + + private fun min(vararg numbers: Int): Int { + var min = Int.MAX_VALUE + for (n: Int in numbers) { + if (n < min) min = n + } + return min + } + + private fun costOfSubstitution(a: Char, b: Char): Int { + return if (a == b) 0 else 1 + } + +} diff --git a/app/src/test/java/helium314/keyboard/SubtypeTest.kt b/app/src/test/java/helium314/keyboard/SubtypeTest.kt new file mode 100644 index 0000000000..a101c07d98 --- /dev/null +++ b/app/src/test/java/helium314/keyboard/SubtypeTest.kt @@ -0,0 +1,75 @@ +package helium314.keyboard + +import helium314.keyboard.keyboard.KeyboardId +import helium314.keyboard.keyboard.KeyboardLayoutSet +import helium314.keyboard.keyboard.internal.KeyboardParams +import helium314.keyboard.keyboard.internal.keyboard_parser.POPUP_KEYS_NORMAL +import helium314.keyboard.keyboard.internal.keyboard_parser.addLocaleKeyTextsToParams +import helium314.keyboard.latin.LatinIME +import helium314.keyboard.latin.common.LocaleUtils.constructLocale +import helium314.keyboard.latin.settings.Settings +import helium314.keyboard.latin.settings.SettingsSubtype.Companion.toSettingsSubtype +import helium314.keyboard.latin.utils.LayoutType +import helium314.keyboard.latin.utils.POPUP_KEYS_LAYOUT +import helium314.keyboard.latin.utils.SubtypeSettings +import helium314.keyboard.latin.utils.SubtypeUtilsAdditional +import helium314.keyboard.latin.utils.prefs +import org.junit.runner.RunWith +import org.robolectric.Robolectric +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config +import org.robolectric.shadows.ShadowLog +import kotlin.test.BeforeTest +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertTrue + +@RunWith(RobolectricTestRunner::class) +@Config(shadows = [ + ShadowInputMethodManager2::class +]) +class SubtypeTest { + private lateinit var latinIME: LatinIME + private lateinit var params: KeyboardParams + + @BeforeTest fun setUp() { + latinIME = Robolectric.setupService(LatinIME::class.java) + ShadowLog.setupLogging() + ShadowLog.stream = System.out + params = KeyboardParams() + params.mId = KeyboardLayoutSet.getFakeKeyboardId(KeyboardId.ELEMENT_ALPHABET) + params.mPopupKeyTypes.add(POPUP_KEYS_LAYOUT) + addLocaleKeyTextsToParams(latinIME, params, POPUP_KEYS_NORMAL) + } + + @Test fun emptyAdditionalSubtypesResultsInEmptyList() { + // avoid issues where empty string results in additional subtype for undefined locale + val prefs = latinIME.prefs() + prefs.edit().putString(Settings.PREF_ADDITIONAL_SUBTYPES, "").apply() + assertTrue(SubtypeSettings.getAdditionalSubtypes().isEmpty()) + val from = SubtypeSettings.getResourceSubtypesForLocale("es".constructLocale()).first() + + // no change, and "changed" subtype actually is resource subtype -> still expect empty list + SubtypeUtilsAdditional.changeAdditionalSubtype(from.toSettingsSubtype(), from.toSettingsSubtype(), latinIME) + assertEquals(emptyList(), SubtypeSettings.getAdditionalSubtypes().map { it.toSettingsSubtype() }) + } + + @Test fun subtypeStaysEnabledOnEdits() { + val prefs = latinIME.prefs() + prefs.edit().putString(Settings.PREF_ADDITIONAL_SUBTYPES, "").apply() // clear it for convenience + + // edit enabled resource subtype + val from = SubtypeSettings.getResourceSubtypesForLocale("es".constructLocale()).first() + SubtypeSettings.addEnabledSubtype(prefs, from) + val to = from.toSettingsSubtype().withLayout(LayoutType.SYMBOLS, "symbols_arabic") + SubtypeUtilsAdditional.changeAdditionalSubtype(from.toSettingsSubtype(), to, latinIME) + assertEquals(to, SubtypeSettings.getEnabledSubtypes(false).single().toSettingsSubtype()) + + // change the new subtype to effectively be the same as original resource subtype + val toNew = to.withoutLayout(LayoutType.SYMBOLS) + assertEquals(from.toSettingsSubtype(), toNew) + SubtypeUtilsAdditional.changeAdditionalSubtype(to, toNew, latinIME) + assertEquals(emptyList(), SubtypeSettings.getAdditionalSubtypes().map { it.toSettingsSubtype() }) + assertEquals(from.toSettingsSubtype(), SubtypeSettings.getEnabledSubtypes(false).single().toSettingsSubtype()) + } +} diff --git a/app/src/test/java/helium314/keyboard/XLinkTest.kt b/app/src/test/java/helium314/keyboard/XLinkTest.kt new file mode 100644 index 0000000000..34fe0779a2 --- /dev/null +++ b/app/src/test/java/helium314/keyboard/XLinkTest.kt @@ -0,0 +1,93 @@ +package helium314.keyboard + +import androidx.test.core.app.ApplicationProvider +import helium314.keyboard.latin.App +import helium314.keyboard.latin.BuildConfig +import helium314.keyboard.latin.common.Links +import helium314.keyboard.latin.common.LocaleUtils.constructLocale +import helium314.keyboard.latin.utils.getKnownDictionariesForLocale +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import java.io.File +import java.net.HttpURLConnection +import java.net.URL +import kotlin.test.Test +import kotlin.test.assertEquals + +@RunWith(RobolectricTestRunner::class) +class XLinkTest { // Without the X, SubtypeTests fail with ClassCastException. WTF? + @Test fun knownDictionaries() { + if (BuildConfig.BUILD_TYPE == "runTests") return // don't spam requests to Codeberg on every PR update + val context = ApplicationProvider.getApplicationContext() + val urls = mutableSetOf() + context.assets.open("dictionaries_in_dict_repo.csv").reader().readLines().forEach { line -> + getKnownDictionariesForLocale(line.split(",")[1].constructLocale(), context).forEach { + urls.add(it.second) + } + } + // can't check everything at once, this will trigger some rate limit + val typeToCheck = listOf("/dictionaries_experimental/", "/emoji_cldr_signal_dictionaries/", "/dictionaries/").random() + urls.forEach { + if (it.contains(typeToCheck)) + checkLink(it) + } + } + + @Test fun readmeLinks() { + val file = File("../README.md") + val linkRegex = "(?:https?:\\/\\/.)?(?:www\\.)?[-a-zA-Z0-9@%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b(?:[-a-zA-Z0-9@:%_\\+.~#?&\\/\\/=]*)".toRegex() + val links = linkRegex.findAll(file.readText()) + links.forEach { + if (it.value.contains("heli", true)) + checkLink(it.value.trim('.')) + } + } + + @Test fun layoutsLinks() { + val file = File("../layouts.md") + val linkRegex = "(?:https?:\\/\\/.)?(?:www\\.)?[-a-zA-Z0-9@%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b(?:[-a-zA-Z0-9@:%_\\+.~#?&\\/\\/=]*)".toRegex() + val links = linkRegex.findAll(file.readText()) + links.forEach { + if (it.value.contains("heli", true)) + checkLink(it.value) + } + } + + @Test fun layoutsLinksInternal() { + val file = File("../layouts.md") + val internalLinkRegex = "app/src/\\b(?:[-a-zA-Z0-9@:%_\\+.~#?&\\/\\/=]*)".toRegex() + val links = internalLinkRegex.findAll(file.readText()) + links.forEach { + checkLink(it.value.replace("app/src", Links.GITHUB + "/blob/main/app/src")) + } + } + + @Test fun otherLinks() { + listOf(Links.LICENSE, Links.LAYOUT_WIKI_URL, Links.WIKI_URL, Links.CUSTOM_LAYOUTS, Links.CUSTOM_COLORS).forEach { + checkLink(it) + } + } + + private fun checkLink(link: String) { + if (link.contains("wiki/")) + return checkWikiLink(link) + val url = URL(link) + val connection = url.openConnection() as HttpURLConnection + connection.requestMethod = "HEAD" + if (connection.responseCode != 200) + println("error checking $link") + assertEquals(200, connection.responseCode) + } + + private fun checkWikiLink(link: String) { + val url = URL(link) + val connection = url.openConnection() as HttpURLConnection + if (connection.responseCode != 200) + println("error checking $link") + assertEquals(200, connection.responseCode) + val text = connection.getInputStream().reader().readText() + if ("Create new page" in text) + println("error checking wiki $link") + assert("Create new page" !in text) + } +} diff --git a/app/src/test/java/helium314/keyboard/latin/InputLogicTest.kt b/app/src/test/java/helium314/keyboard/latin/InputLogicTest.kt new file mode 100644 index 0000000000..6acec390df --- /dev/null +++ b/app/src/test/java/helium314/keyboard/latin/InputLogicTest.kt @@ -0,0 +1,1172 @@ +// SPDX-License-Identifier: GPL-3.0-only +package helium314.keyboard.latin + +import android.inputmethodservice.InputMethodService +import android.os.Bundle +import android.os.Handler +import android.os.Message +import android.text.InputType +import android.view.KeyEvent +import android.view.inputmethod.* +import androidx.core.content.edit +import helium314.keyboard.ShadowInputMethodManager2 +import helium314.keyboard.ShadowLocaleManagerCompat +import helium314.keyboard.event.Event +import helium314.keyboard.keyboard.KeyboardSwitcher +import helium314.keyboard.keyboard.MainKeyboardView +import helium314.keyboard.keyboard.internal.keyboard_parser.floris.KeyCode +import helium314.keyboard.latin.ShadowFacilitator2.Companion.lastAddedWord +import helium314.keyboard.latin.SuggestedWords.SuggestedWordInfo +import helium314.keyboard.latin.common.Constants +import helium314.keyboard.latin.common.LocaleUtils.constructLocale +import helium314.keyboard.latin.common.StringUtils +import helium314.keyboard.latin.inputlogic.InputLogic +import helium314.keyboard.latin.inputlogic.SpaceState +import helium314.keyboard.latin.settings.Settings +import helium314.keyboard.latin.utils.ScriptUtils +import helium314.keyboard.latin.utils.SubtypeSettings +import helium314.keyboard.latin.utils.getTimestampFormatter +import helium314.keyboard.latin.utils.prefs +import org.junit.runner.RunWith +import org.mockito.Mockito +import org.robolectric.Robolectric +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config +import org.robolectric.annotation.Implementation +import org.robolectric.annotation.Implements +import org.robolectric.shadows.ShadowLog +import java.util.* +import kotlin.math.min +import kotlin.streams.asSequence +import kotlin.test.BeforeTest +import kotlin.test.Test +import kotlin.test.assertEquals + +@RunWith(RobolectricTestRunner::class) +@Config(shadows = [ + ShadowLocaleManagerCompat::class, + ShadowInputMethodManager2::class, + ShadowInputMethodService::class, + ShadowKeyboardSwitcher::class, + ShadowHandler::class, + ShadowFacilitator2::class, +]) +class InputLogicTest { + private lateinit var latinIME: LatinIME + private val settingsValues get() = Settings.getValues() + private val inputLogic get() = latinIME.mInputLogic + private val connection: RichInputConnection get() = inputLogic.mConnection + private val composerReader = InputLogic::class.java.getDeclaredField("mWordComposer").apply { isAccessible = true } + private val composer get() = composerReader.get(inputLogic) as WordComposer + private val spaceStateReader = InputLogic::class.java.getDeclaredField("mSpaceState").apply { isAccessible = true } + private val spaceState get() = spaceStateReader.get(inputLogic) as Int + private val beforeComposingReader = RichInputConnection::class.java.getDeclaredField("mCommittedTextBeforeComposingText").apply { isAccessible = true } + private val connectionTextBeforeComposingText get() = (beforeComposingReader.get(connection) as CharSequence).toString() + private val composingReader = RichInputConnection::class.java.getDeclaredField("mComposingText").apply { isAccessible = true } + private val connectionComposingText get() = (composingReader.get(connection) as CharSequence).toString() + + @BeforeTest + fun setUp() { + latinIME = Robolectric.setupService(LatinIME::class.java) + // start logging only after latinIME is created, avoids showing the stack traces if library is not found + ShadowLog.setupLogging() + ShadowLog.stream = System.out + } + + @Test fun inputCode() { + reset() + input('c') + assertEquals("c", textBeforeCursor) + assertEquals("c", getText()) + assertEquals("", textAfterCursor) + assertEquals("c", composingText) + latinIME.mHandler.onFinishInput() + assertEquals("", composingText) + } + + @Test fun delete() { + reset() + setText("hello there ") + functionalKeyPress(KeyCode.DELETE) + assertEquals("hello there", text) + assertEquals("there", composingText) + } + + @Test fun deleteInsideWord() { + reset() + setText("hello you there") + setCursorPosition(8) // after o in you + functionalKeyPress(KeyCode.DELETE) + assertEquals("hello yu there", text) + assertEquals("yu", composingText) + } + + @Test fun insertLetterIntoWord() { + reset() + setText("hello") + setCursorPosition(3) // after first l + input('i') + assertEquals("helilo", getWordAtCursor()) + assertEquals("helilo", getText()) + assertEquals(4, getCursorPosition()) + assertEquals(4, cursor) + assertEquals("", composingText) + } + + @Test fun insertLetterIntoWordWithWeirdEditor() { + reset() + currentInputType = 180225 // should not change much, but just to be sure + setText("hello") + setCursorPosition(3, weirdTextField = true) // after first l + input('i') + assertEquals("helilo", getWordAtCursor()) + assertEquals("helilo", getText()) + assertEquals(4, getCursorPosition()) + assertEquals(4, cursor) + } + + @Test fun insertLetterIntoOneOfSeveralWords() { + reset() + setText("hello my friend") + setCursorPosition(7) // between m and y + input('a') + assertEquals("may", getWordAtCursor()) + assertEquals("hello may friend", getText()) + assertEquals(8, getCursorPosition()) + assertEquals(8, cursor) + } + + // todo: make it work, but it might not be that simple because adding is done in combiner + // https://github.com/Helium314/HeliBoard/issues/214 + @Test fun insertLetterIntoWordHangulFails() { + if (BuildConfig.BUILD_TYPE == "runTests") return + reset() + latinIME.switchToSubtype(SubtypeSettings.getResourceSubtypesForLocale("ko".constructLocale()).first()) + chainInput("ㅛㅎㄹㅎㅕㅛ") + setCursorPosition(3) + input('ㄲ') // fails, as expected from the hangul issue when processing the event in onCodeInput + assertEquals("ㅛㅎㄹㄲ혀ㅛ", getWordAtCursor()) + assertEquals("ㅛㅎㄹㄲ혀ㅛ", getText()) + assertEquals("ㅛㅎㄹㄲ혀ㅛ", textBeforeCursor + textAfterCursor) + assertEquals(4, getCursorPosition()) + assertEquals(4, cursor) + } + + // see issue 1447 + @Test fun separatorAfterHangul() { + reset() + latinIME.switchToSubtype(SubtypeSettings.getResourceSubtypesForLocale("ko".constructLocale()).first()) + chainInput("ㅛ.") + assertEquals("ㅛ.", text) + } + + // see issue 1551 (debug only) + @Test fun deleteHangul() { + reset() + latinIME.switchToSubtype(SubtypeSettings.getResourceSubtypesForLocale("ko".constructLocale()).first()) + setText("ㅛㅛ ") + functionalKeyPress(KeyCode.DELETE) + functionalKeyPress(KeyCode.DELETE) + functionalKeyPress(KeyCode.DELETE) + } + + @Test fun separatorUnselectsWord() { + reset() + setText("hello") + assertEquals("hello", composingText) + input('.') + assertEquals("", composingText) + } + + @Test fun autospace() { + reset() + setText("hello") + input('.') + input('a') + assertEquals("hello.a", textBeforeCursor) + latinIME.prefs().edit { putBoolean(Settings.PREF_AUTOSPACE_AFTER_PUNCTUATION, true) } + setText("hello") + input('.') + input('a') + assertEquals("hello. a", textBeforeCursor) + } + + @Test fun autospaceButWithTextAfter() { + reset() + setText("hello there") + setCursorPosition(5) // after hello + input('.') + input('a') + assertEquals("hello.a", textBeforeCursor) + assertEquals("hello.a there", text) + latinIME.prefs().edit { putBoolean(Settings.PREF_AUTOSPACE_AFTER_PUNCTUATION, true) } + setText("hello there") + setCursorPosition(5) // after hello + input('.') + input('a') + assertEquals("hello. a", textBeforeCursor) + assertEquals("hello. a there", text) + } + + @Test fun noAutospaceInUrlField() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_AUTOSPACE_AFTER_PUNCTUATION, true) } + chainInput("example.net") + assertEquals("example. net", text) + lastAddedWord = "" + setText("") + setInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_URI) + chainInput("example.net") + assertEquals("", lastAddedWord) + assertEquals("example.net", text) + assertEquals("example.net", composingText) + } + + @Test fun noAutospaceInUrlFieldWhenPickingSuggestion() { + reset() + setInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_URI) + chainInput("exam") + pickSuggestion("example") + assertEquals("example", text) + input('.') + assertEquals("example.", text) + } + + @Test fun noAutospaceForDetectedUrl() { // "light" version, should work without url detection + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_AUTOSPACE_AFTER_PUNCTUATION, true) } + chainInput("http://example.net") + assertEquals("http://example.net", text) + assertEquals("http", lastAddedWord) + assertEquals("example.net", composingText) + } + + @Test fun noAutospaceForDetectedEmail() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_AUTOSPACE_AFTER_PUNCTUATION, true) } + chainInput("mail@example.com") + assertEquals("mail@example.com", text) + assertEquals("mail@example", lastAddedWord) // todo: do we want this? not really nice, but don't want to be too aggressive with URL detection disabled + assertEquals("com", composingText) // todo: maybe this should still see the whole address as a single word? or don't be too aggressive? + setText("") + lastAddedWord = "" + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + chainInput("mail@example.com") + assertEquals("", lastAddedWord) + assertEquals("mail@example.com", composingText) + } + + @Test fun urlDetectionThings() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + chainInput("...h") + assertEquals("...h", text) + assertEquals("h", composingText) + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + chainInput("bla..") + assertEquals("bla..", text) + assertEquals("", composingText) + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + chainInput("bla.c") + assertEquals("bla.c", text) + assertEquals("bla.c", composingText) + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + latinIME.prefs().edit { putBoolean(Settings.PREF_AUTOSPACE_AFTER_PUNCTUATION, true) } + latinIME.prefs().edit { putBoolean(Settings.PREF_SHIFT_REMOVES_AUTOSPACE, true) } + input("bla") + input('.') + functionalKeyPress(KeyCode.SHIFT) // should remove the phantom space (in addition to normal effect) + input('c') + assertEquals("bla.c", text) + assertEquals("bla.c", composingText) + } + + @Test fun stripSeparatorsBeforeAddingToHistoryWithURLDetection() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + chainInput("example.com.") + assertEquals("example.com.", composingText) + input(' ') + assertEquals("example.com", lastAddedWord) + } + + @Test fun dontSelectConsecutiveSeparatorsWithURLDetection() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + chainInput("bla..") + assertEquals("", composingText) + assertEquals("bla..", text) + } + + @Test fun selectDoesSelect() { + reset() + setText("this is some text") + setCursorPosition(3, 8) + assertEquals("s is ", text.substring(3, 8)) + } + + @Test fun noComposingForPasswordFields() { + reset() + setInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) + input('a') + input('b') + assertEquals("", composingText) + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + input('.') + input('c') + assertEquals("", composingText) + } + + @Test fun `don't select whole thing as composing word if URL detection disabled`() { + reset() + setText("http://example.com") + setCursorPosition(13) // between l and e + assertEquals("example", composingText) + } + + @Test fun `select whole thing except http(s) as composing word if URL detection enabled and selecting`() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + setText("http://example.com") + setCursorPosition(13) // between l and e + assertEquals("example.com", composingText) + setText("http://bla.com http://example.com ") + setCursorPosition(29) // between l and e + assertEquals("example.com", composingText) + } + + @Test fun `select whole thing except http(s) as composing word if URL detection enabled and typing`() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + chainInput("http://example.com") + assertEquals("example.com", composingText) + } + + @Test fun `don't add partial URL to history`() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + setText("http:/") // just so lastAddedWord isn't set to http + chainInput("/bla.com") + assertEquals("", lastAddedWord) + } + + @Test fun urlProperlySelected() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + setInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_URI) + setText("http://example.com/here") + setCursorPosition(18) // after .com + functionalKeyPress(KeyCode.DELETE) + functionalKeyPress(KeyCode.DELETE) + functionalKeyPress(KeyCode.DELETE) // delete com + // todo: do we really want no composing text? + // probably not... try not to break composing + assertEquals("", composingText) + chainInput("net") + assertEquals("example.net", composingText) + } + + @Test fun urlProperlySelectedWhenNotDeletingFullTld() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + setText("http://example.com/here") + setCursorPosition(18) // after .com + functionalKeyPress(KeyCode.DELETE) + functionalKeyPress(KeyCode.DELETE) // delete om + // todo: this is a weird difference to deleting the full TLD (see urlProperlySelected) + // what do we want here? (probably consistency) + assertEquals("example.c/here", composingText) + chainInput("z") + assertEquals("", composingText) // todo: this is a weird difference to deleting the full TLD +// assertEquals("example.cz", composingText) // fails, but probably would be better than above + } + + @Test fun dontCommitPartialUrlBeforeFirstPeriod() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + // type http://bla. -> bla not selected, but clearly url, also means http://bla is committed which we probably don't want + chainInput("http://bla.") + assertEquals("bla.", composingText) + } + + @Test fun `intermediate commits in text field without protocol`() { + reset() + chainInput("bla.") + assertEquals("bla", lastAddedWord) + chainInput("com/") + assertEquals("com", lastAddedWord) + chainInput("img.jpg") + assertEquals("img", lastAddedWord) + assertEquals("jpg", composingText) + } + + @Test fun `intermediate commit in text field without protocol and with URL detection`() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + chainInput("bla.com/img.jpg") + assertEquals("bla", lastAddedWord) + assertEquals("bla.com/img.jpg", composingText) + } + + @Test fun `only protocol commit in text field with protocol and URL detection`() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + chainInput("http://bla.com/img.jpg") + assertEquals("http", lastAddedWord) + assertEquals("bla.com/img.jpg", composingText) + } + + @Test fun `no intermediate commit in URL field with protocol`() { + reset() + setInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_URI) + chainInput("http://bla.com/img.jpg") + assertEquals("http", lastAddedWord) // todo: somehow avoid? + assertEquals("http://bla.com/img.jpg", text) + assertEquals("bla.com/img.jpg", composingText) + } + + @Test fun `no intermediate commit in URL field with protocol and URL detection`() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + setInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_URI) + chainInput("http://bla.com/img.jpg") + assertEquals("http", lastAddedWord) // todo: somehow avoid? + assertEquals("http://bla.com/img.jpg", text) + assertEquals("bla.com/img.jpg", composingText) + } + + @Test fun `no intermediate commit in URL field without protocol`() { + reset() + setInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_URI) + chainInput("bla.com/img.jpg") + assertEquals("", lastAddedWord) + assertEquals("bla.com/img.jpg", text) + assertEquals("bla.com/img.jpg", composingText) + } + + @Test fun `no intermediate commit in URL field without protocol and with URL detection`() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + setInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_URI) + chainInput("bla.com/img.jpg") + assertEquals("", lastAddedWord) + assertEquals("bla.com/img.jpg", text) + assertEquals("bla.com/img.jpg", composingText) + } + + @Test fun `don't accidentally detect some other text fields as URI`() { + // see comment in InputLogic.textBeforeCursorMayBeUrlOrSimilar + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_AUTOSPACE_AFTER_PUNCTUATION, true) } + setInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE) + chainInput("Hey,why") + assertEquals("Hey, why", text) + } + + @Test fun `URL detection does not trigger on non-words`() { + // first make sure it works without URL detection + reset() + chainInput("15:50-17") + assertEquals("15:50-17", text) + assertEquals("", composingText) + // then with URL detection + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + chainInput("15:50-17") + assertEquals("15:50-17", text) + assertEquals("", composingText) + } + + @Test fun `autospace after selecting a suggestion`() { + reset() + pickSuggestion("this") + input('b') + assertEquals("this b", text) + assertEquals("b", composingText) + } + + @Test fun `autospace works in URL field when input isn't URL`() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + setInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_URI) + pickSuggestion("this") + input('b') + assertEquals("this b", text) + assertEquals("b", composingText) + } + + // https://github.com/Helium314/HeliBoard/issues/215 + // https://github.com/Helium314/HeliBoard/issues/229 + @Test fun `autospace works in URL field when input isn't URL, also for multiple suggestions`() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + setInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_URI) + pickSuggestion("this") + pickSuggestion("is") + assertEquals("this is", text) + pickSuggestion("not") + assertEquals("this is not", text) + input('c') + assertEquals("this is not c", text) + assertEquals("c", composingText) + } + + @Test fun `emoji is added to dictionary`() { + // check both text and codepoint input + reset() + chainInput("hello ") + input(0x1F36D) + assertEquals(StringUtils.newSingleCodePointString(0x1F36D), lastAddedWord) + reset() + chainInput("hello ") + input("🤗") + assertEquals("\uD83E\uDD17", lastAddedWord) + + reset() + chainInput("hello ") + input("why 🤗 ") // not added because it's not only emoji (input can come from pasting) + assertEquals("hello", lastAddedWord) + } + + @Test fun `emoji uses phantom space`() { + // check both text and codepoint input + reset() + pickSuggestion("hi") + input("🤗") + assertEquals("\uD83E\uDD17", lastAddedWord) + assertEquals("hi \uD83E\uDD17", text) + reset() + pickSuggestion("hi") + input(0x1F36D) + assertEquals(StringUtils.newSingleCodePointString(0x1F36D), lastAddedWord) + assertEquals("hi ${StringUtils.newSingleCodePointString(0x1F36D)}", text) + } + + // https://github.com/Helium314/HeliBoard/issues/230 + @Test fun `no autospace after opening quotes`() { + reset() + chainInput("\"Hi\" \"h") + assertEquals("\"Hi\" \"h", text) + assertEquals("h", composingText) + reset() + chainInput("\"Hi\", \"h") + assertEquals("\"Hi\", \"h", text) + assertEquals("h", composingText) + } + + @Test fun `autospace works in URL field when starting with quotes`() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + setInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_URI) + input("\"") + pickSuggestion("this") + input("i") + assertEquals("\"this i", text) + } + + @Test fun `double space results in period and space, and delete removes the period`() { + reset() + chainInput("hello") + input(' ') + input(' ') + assertEquals("hello. ", text) + functionalKeyPress(KeyCode.DELETE) + assertEquals("hello ", text) + } + + @Test fun `no weird space inside multi-"`() { + reset() + chainInput("\"\"\"") + assertEquals("\"\"\"", text) + + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_AUTOSPACE_AFTER_PUNCTUATION, true) } + chainInput("\"\"\"") + assertEquals("\"\"\"", text) + } + + @Test fun `autospace still happens after "`() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_AUTOSPACE_AFTER_PUNCTUATION, true) } + chainInput("\"hello\"you") + assertEquals("\"hello\" you", text) + } + + @Test fun `autospace still happens after " if next word is in quotes`() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_AUTOSPACE_AFTER_PUNCTUATION, true) } + chainInput("\"hello\"\"you\"") + assertEquals("\"hello\" \"you\"", text) + } + + @Test fun `autospace propagates over "`() { + reset() + input('"') + pickSuggestion("hello") + assertEquals(spaceState, SpaceState.PHANTOM) // picking a suggestion sets phantom space state + chainInput("\"you") + assertEquals("\"hello\" you", text) + } + + @Test fun `autospace still happens after " if nex word is in " and after comma`() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_AUTOSPACE_AFTER_PUNCTUATION, true) } + chainInput("\"hello\",\"you\"") + assertEquals("\"hello\", \"you\"", text) + } + + @Test fun `autospace in json editor`() { + reset() + latinIME.prefs().edit { putBoolean(Settings.PREF_AUTOSPACE_AFTER_PUNCTUATION, true) } + chainInput("{\"label\":\"") + assertEquals("{\"label\": \"", text) + input('c') + assertEquals("{\"label\": \"c", text) + } + + @Test fun `text input and delete`() { + reset() + input("hello") + assertEquals("hello", text) + functionalKeyPress(KeyCode.DELETE) + assertEquals("hell", text) + + reset() + input("hello ") + assertEquals("hello ", text) + functionalKeyPress(KeyCode.DELETE) + assertEquals("hello", text) + } + + @Test fun `emoji text input and delete`() { + reset() + input("🕵🏼") + functionalKeyPress(KeyCode.DELETE) + assertEquals("", text) + + reset() + input("\uD83D\uDD75\uD83C\uDFFC") + input(' ') + assertEquals("🕵🏼 ", text) + functionalKeyPress(KeyCode.DELETE) + functionalKeyPress(KeyCode.DELETE) + assertEquals("", text) + } + + // emoRegex update to unicode 16.0 was required, https://github.com/Helium314/HeliBoard/issues/1760 + @Test fun `emojis deleted one by one`() { + reset() + chainInput("\uD83E\uDEC6\uD83E\uDEC6\uD83E\uDEC6") + functionalKeyPress(KeyCode.DELETE) + assertEquals("\uD83E\uDEC6\uD83E\uDEC6", text) + } + + @Test fun `revert autocorrect on delete`() { + reset() + setInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_AUTO_CORRECT) + chainInput("hullo") + getAutocorrectedWithSpaceAfter("hello", "hullo") + assertEquals("hello ", text) + functionalKeyPress(KeyCode.DELETE) + assertEquals("hullo", text) + + reset() + setInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_AUTO_CORRECT) + latinIME.prefs().edit { putBoolean(Settings.PREF_BACKSPACE_REVERTS_AUTOCORRECT, false) } + chainInput("hullo") + getAutocorrectedWithSpaceAfter("hello", "hullo") + functionalKeyPress(KeyCode.DELETE) + assertEquals("hello", text) + } + + @Test fun `remove glide typing word on delete`() { + reset() + glideTypingInput("hello") + assertEquals("hello", text) + functionalKeyPress(KeyCode.DELETE) + assertEquals("", text) + + // todo: now we want some way to disable delete-all on backspace, either per setting or something else + // need to avoid getting into the mWordComposer.isBatchMode() part of handleBackspaceEvent + } + + @Test fun timestamp() { + reset() + chainInput("hello") + functionalKeyPress(KeyCode.TIMESTAMP) + assertEquals(Calendar.getInstance().time.time.toDouble(), + getTimestampFormatter(latinIME).parse(text.substring(5))!!.time.toDouble(), 1000.0) + } + + @Test fun inlineEmojiSearchStart() { + assertEquals(true, InputLogic.isStartOfInlineEmojiSearch('t'.code, ':'.code, ' '.code, settingsValues)) + assertEquals(false, InputLogic.isStartOfInlineEmojiSearch(' '.code, ':'.code, ' '.code, settingsValues)) + assertEquals(true, InputLogic.isStartOfInlineEmojiSearch('t'.code, ':'.code, '.'.code, settingsValues)) + assertEquals(true, InputLogic.isStartOfInlineEmojiSearch('t'.code, ':'.code, "🌍".codePoints().asSequence().last(), settingsValues)) + assertEquals(false, InputLogic.isStartOfInlineEmojiSearch('t'.code, ':'.code, 't'.code, settingsValues)) + assertEquals(false, InputLogic.isStartOfInlineEmojiSearch('t'.code, ':'.code, '3'.code, settingsValues)) + } + + @Test fun inlineEmojiSearchString() { + assertEquals("test", InputLogic.getInlineEmojiSearchString(":test")) + assertEquals(null, InputLogic.getInlineEmojiSearchString("test")) + assertEquals("test", InputLogic.getInlineEmojiSearchString(" :test")) + assertEquals(null, InputLogic.getInlineEmojiSearchString("t:test")) + assertEquals(null, InputLogic.getInlineEmojiSearchString("6:test")) + assertEquals("test", InputLogic.getInlineEmojiSearchString("🌍:test")) + assertEquals("test", InputLogic.getInlineEmojiSearchString(",:test")) + assertEquals(null, InputLogic.getInlineEmojiSearchString(":test\nt")) + assertEquals("/48", InputLogic.getInlineEmojiSearchString("2606:127.0.0.1::/48")) // do we want this? + } + + // ------- helper functions --------- + + // should be called before every test, so the same state is guaranteed + private fun reset() { + // reset input connection & facilitator + currentScript = ScriptUtils.SCRIPT_LATIN + text = "" + batchEdit = 0 + currentInputType = InputType.TYPE_CLASS_TEXT + lastAddedWord = "" + + // reset settings + latinIME.prefs().edit { clear() } + + setText("") // (re)sets selection and composing word + } + + private fun chainInput(text: String) = text.forEach { input(it.code) } + + private fun input(char: Char) = input(char.code) + + private fun input(codePoint: Int) { + require(codePoint > 0) { "not a codePoint: $codePoint" } + val oldBefore = textBeforeCursor + val oldAfter = textAfterCursor + val insert = StringUtils.newSingleCodePointString(codePoint) + val phantomSpaceToInsert = if (spaceState == SpaceState.PHANTOM) " " else "" + + latinIME.onEvent(Event.createEventForCodePointFromUnknownSource(codePoint)) + handleMessages() + + if (currentScript != ScriptUtils.SCRIPT_HANGUL // check fails if hangul combiner merges symbols + && !(codePoint == Constants.CODE_SPACE && oldBefore.lastOrNull() == ' ') // check fails when 2 spaces are converted into a period + && !latinIME.mInputLogic.mSuggestedWords.mWillAutoCorrect // autocorrect obviously creates inconsistencies + ) { + if (phantomSpaceToInsert.isEmpty()) + assertEquals(oldBefore + insert, textBeforeCursor) + else // in some cases autospace might be suppressed + assert(oldBefore + phantomSpaceToInsert + insert == textBeforeCursor || oldBefore + insert == textBeforeCursor) + } + assertEquals(oldAfter, textAfterCursor) + assertEquals(textBeforeCursor + textAfterCursor, getText()) + checkConnectionConsistency() + } + + private fun functionalKeyPress(keyCode: Int) { + require(keyCode < 0) { "not a functional key code: $keyCode" } + latinIME.onEvent(Event.createSoftwareKeypressEvent(Event.NOT_A_CODE_POINT, keyCode, 0, Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE, false)) + handleMessages() + checkConnectionConsistency() + } + + // almost the same as codePoint input, but calls different latinIME function + private fun input(insert: String) { + val oldBefore = textBeforeCursor + val oldAfter = textAfterCursor + val phantomSpaceToInsert = if (spaceState == SpaceState.PHANTOM) " " else "" + + latinIME.onTextInput(insert) + handleMessages() + + if (phantomSpaceToInsert.isEmpty()) + assertEquals(oldBefore + insert, textBeforeCursor) + else // in some cases autospace might be suppressed + assert(oldBefore + phantomSpaceToInsert + insert == textBeforeCursor || oldBefore + insert == textBeforeCursor) + assert(oldBefore + insert == textBeforeCursor || "$oldBefore $insert" == textBeforeCursor) + assertEquals(oldAfter, textAfterCursor) + assertEquals(textBeforeCursor + textAfterCursor, getText()) + checkConnectionConsistency() + } + + private fun getWordAtCursor() = connection.getWordRangeAtCursor(settingsValues.mSpacingAndPunctuations, currentScript)?.mWord + + private fun setCursorPosition(start: Int, end: Int = start, weirdTextField: Boolean = false) { + val ei = EditorInfo() + ei.inputType = currentInputType + ei.initialSelStart = start + ei.initialSelEnd = end + // imeOptions should not matter + + // adjust text in inputConnection first, otherwise fixLyingCursorPosition will move cursor + // to the end of the text + val fullText = textBeforeCursor + selectedText + textAfterCursor + assertEquals(fullText, getText()) + + // need to update ic before, otherwise when reloading text cache from ic, ric will load wrong text before cursor + val oldStart = selectionStart + val oldEnd = selectionEnd + selectionStart = start + selectionEnd = end + assertEquals(fullText, textBeforeCursor + selectedText + textAfterCursor) + + latinIME.onUpdateSelection(oldStart, oldEnd, start, end, composingStart, composingEnd) + handleMessages() + + if (weirdTextField) { + latinIME.mHandler.onStartInput(ei, true) // essentially does nothing + latinIME.mHandler.onStartInputView(ei, true) // does the thing + handleMessages() + } + + assertEquals(fullText, getText()) + assertEquals(start, selectionStart) + assertEquals(end, selectionEnd) + checkConnectionConsistency() + } + + // assumes we have nothing selected + private fun getCursorPosition(): Int { + assertEquals(cursor, connection.expectedSelectionStart) + assertEquals(cursor, connection.expectedSelectionEnd) + return cursor + } + + // just sets the text and starts input so connection it set up correctly + private fun setText(newText: String) { + text = newText + selectionStart = newText.length + selectionEnd = selectionStart + composingStart = -1 + composingStart = -1 + + // we need to start input to notify that something changed + // restarting is false, so this is seen as a new text field + val ei = EditorInfo() + ei.inputType = currentInputType + latinIME.mHandler.onStartInput(ei, false) + latinIME.mHandler.onStartInputView(ei, false) + handleMessages() // this is important so the composing span is set correctly + checkConnectionConsistency() + } + + // like selecting a suggestion from strip + private fun pickSuggestion(suggestion: String) { + val info = SuggestedWordInfo(suggestion, "", 0, 0, null, 0, 0) + latinIME.pickSuggestionManually(info) + checkConnectionConsistency() + } + + // only works when autocorrect is on, separator after word is required + private fun getAutocorrectedWithSpaceAfter(suggestion: String, typedWord: String?) { + val info = SuggestedWordInfo(suggestion, "", 0, 0, null, 0, 0) + val typedInfo = SuggestedWordInfo(typedWord, "", 0, 0, null, 0, 0) + val sw = SuggestedWords(ArrayList(listOf(typedInfo, info)), null, typedInfo, false, true, false, 0, 0) + latinIME.mInputLogic.setSuggestedWords(sw) // this prepares for autocorrect + input(' ') + checkConnectionConsistency() + } + + private fun glideTypingInput(word: String) { + val info = SuggestedWordInfo(word, "", 0, 0, null, 0, 0) + val sw = SuggestedWords(ArrayList(listOf(info)), null, info, true, false, false, 0, 0) + latinIME.mInputLogic.onUpdateTailBatchInputCompleted(settingsValues, sw, KeyboardSwitcher.getInstance()) + } + + private fun checkConnectionConsistency() { + // RichInputConnection only has composing text up to cursor, but InputConnection has full composing text + val expectedConnectionComposingText = if (composingStart == -1 || composingEnd == -1) "" + else text.substring(composingStart, min(composingEnd, selectionEnd)) + assert(composingText.startsWith(expectedConnectionComposingText)) + // RichInputConnection only returns text up to cursor + val textBeforeComposingText = if (composingStart == -1) textBeforeCursor else text.substring(0, composingStart) + + println("consistency: $selectionStart, ${connection.expectedSelectionStart}, $selectionEnd, ${connection.expectedSelectionEnd}, $textBeforeComposingText, " + + "$connectionTextBeforeComposingText, $composingText, $connectionComposingText, $textBeforeCursor, ${connection.getTextBeforeCursor(textBeforeCursor.length, 0)}" + + ", $textAfterCursor, ${connection.getTextAfterCursor(textAfterCursor.length, 0)}") + assertEquals(selectionStart, connection.expectedSelectionStart) + assertEquals(selectionEnd, connection.expectedSelectionEnd) + assertEquals(textBeforeComposingText, connectionTextBeforeComposingText) + assertEquals(expectedConnectionComposingText, connectionComposingText) + assertEquals(textBeforeCursor, connection.getTextBeforeCursor(textBeforeCursor.length, 0).toString()) + assertEquals(textAfterCursor, connection.getTextAfterCursor(textAfterCursor.length, 0).toString()) + } + + private fun getText() = + connection.getTextBeforeCursor(100, 0).toString() + (connection.getSelectedText(0) ?: "") + connection.getTextAfterCursor(100, 0) + + private fun setInputType(inputType: Int) { + // set text to actually apply input type + currentInputType = inputType + setText(text) + } + + // always need to handle messages for proper simulation + private fun handleMessages() { + while (messages.isNotEmpty()) { + latinIME.mHandler.handleMessage(messages.first()) + messages.removeAt(0) + } + while (delayedMessages.isNotEmpty()) { + val msg = delayedMessages.first() + if (msg.what != 2) // MSG_UPDATE_SUGGESTION_STRIP, we want to ignore it because it's irrelevant and has a 500 ms timeout + latinIME.mHandler.handleMessage(delayedMessages.first()) + delayedMessages.removeAt(0) + // delayed messages may post further messages, handle before next delayed message + while (messages.isNotEmpty()) { + latinIME.mHandler.handleMessage(messages.first()) + messages.removeAt(0) + } + } + assertEquals(0, messages.size) + assertEquals(0, delayedMessages.size) + } + +} + +private var currentInputType = InputType.TYPE_CLASS_TEXT +private var currentScript = ScriptUtils.SCRIPT_LATIN +private val messages = mutableListOf() // for latinIME / ShadowInputMethodService +private val delayedMessages = mutableListOf() // for latinIME / ShadowInputMethodService +// inputconnection stuff +private var batchEdit = 0 +private var text = "" +private var selectionStart = 0 +private var selectionEnd = 0 +private var composingStart = -1 +private var composingEnd = -1 +// convenience for access +private val textBeforeCursor get() = text.substring(0, selectionStart) +private val textAfterCursor get() = text.substring(selectionEnd) +private val selectedText get() = text.substring(selectionStart, selectionEnd) +private val cursor get() = if (selectionStart == selectionEnd) selectionStart else -1 + +// composingText should return everything, but RichInputConnection.mComposingText only returns up to cursor +private val composingText get() = if (composingStart == -1 || composingEnd == -1) "" + else text.substring(composingStart, composingEnd) + +// essentially this is the text field we're editing in +private val ic = object : InputConnection { + // pretty clear (though this may be slow depending on the editor) + // bad return value here is likely the cause for that weird bug improved/fixed by fixIncorrectLength + override fun getTextBeforeCursor(p0: Int, p1: Int): CharSequence = textBeforeCursor.take(p0) + // pretty clear (though this may be slow depending on the editor) + override fun getTextAfterCursor(p0: Int, p1: Int): CharSequence = textAfterCursor.take(p0) + // pretty clear + override fun getSelectedText(p0: Int): CharSequence? = if (selectionStart == selectionEnd) null + else text.substring(selectionStart, selectionEnd) + // inserts text at cursor (right?), and sets it as composing text + // this REPLACES currently composing text (even if at a different position) + // moves the cursor: positive means relative to composing text start, negative means relative to start + override fun setComposingText(newText: CharSequence, cursor: Int): Boolean { + // first remove the composing text if any + if (composingStart != -1 && composingEnd != -1) + text = text.substring(0, composingStart) + text.substring(composingEnd) + else // no composing span active, we should remove selected text + if (selectionStart != selectionEnd) { + text = textBeforeCursor + textAfterCursor + selectionEnd = selectionStart + } + // then set the new text at old composing start + // if no composing start, set it at cursor position + val insertStart = if (composingStart == -1) selectionStart else composingStart + text = text.substring(0, insertStart) + newText + text.substring(insertStart) + composingStart = insertStart + composingEnd = insertStart + newText.length + // the cursor -1 is not clear in documentation, but + // "So a value of 1 will always advance you to the position after the full text being inserted" + // means that 1 must be composingEnd + selectionStart = if (cursor > 0) composingEnd + cursor - 1 + else -cursor + selectionEnd = selectionStart + // todo: this should call InputMethodManager#updateSelection(View, int, int, int, int) + // but only after batch edit has ended + // this is not used in RichInputMethodManager, but probably ends up in LatinIME.onUpdateSelection + // -> DO IT (though it will likely only trigger that belatedSelectionUpdate thing, it might be relevant) + return true + } + override fun setComposingRegion(p0: Int, p1: Int): Boolean { + println("setComposingRegion, $p0, $p1") + composingStart = p0 + composingEnd = p1 + return true // never checked + } + // sets composing text empty, but doesn't change actual text + override fun finishComposingText(): Boolean { + composingStart = -1 + composingEnd = -1 + return true // always true + } + // as per documentation: "This behaves like calling setComposingText(text, newCursorPosition) then finishComposingText()" + override fun commitText(p0: CharSequence, p1: Int): Boolean { + setComposingText(p0, p1) + finishComposingText() + return true // whether we added the text + } + // just tells the text field that we add many updated, and that the editor should not + // send status updates until batch edit ended (not actually used for this simulation) + override fun beginBatchEdit(): Boolean { + ++batchEdit + return true // always true + } + // end a batch edit, but maybe there are multiple batch edits happening + override fun endBatchEdit(): Boolean { + if (batchEdit > 0) + return --batchEdit == 0 + return false // returns true if there is still a batch edit ongoing + } + // should notify about cursor info containing composing text, selection, ... + // todo: maybe that could be interesting, implement it? + override fun requestCursorUpdates(p0: Int): Boolean { + // we call this, but don't have onUpdateCursorAnchorInfo overridden in latinIME, so it does nothing + // also currently we don't care about the return value + return false + } + override fun setSelection(p0: Int, p1: Int): Boolean { + selectionStart = p0 + selectionEnd = p1 + // todo: call InputMethodService.onUpdateSelection(int, int, int, int, int, int), but only after batch edit is done! + return true + } + // delete beforeLength before cursor position, and afterLength after cursor position + // chars, not codepoints or glyphs + // todo: may delete only one half of a surrogate pair, but this should be avoided by RichInputConnection (maybe throw error) + override fun deleteSurroundingText(beforeLength: Int, afterLength: Int): Boolean { + // delete only before or after selection + text = textBeforeCursor.substring(0, textBeforeCursor.length - beforeLength) + + text.substring(selectionStart, selectionEnd) + + textAfterCursor.substring(afterLength) + + // if parts of the composing span are deleted, shorten the span (set end to shorter) + if (selectionStart <= composingStart) { + composingStart -= beforeLength // is this correct? + composingEnd -= beforeLength + } else if (selectionStart <= composingEnd) { + composingEnd -= beforeLength // is this correct? + } + if (selectionEnd <= composingStart) { + composingStart -= afterLength + composingEnd -= afterLength + } else if (selectionEnd <= composingEnd) { + composingEnd -= afterLength + } + // update selection + selectionStart -= beforeLength + selectionEnd -= beforeLength + return true + } + override fun sendKeyEvent(p0: KeyEvent): Boolean { + if (p0.action != KeyEvent.ACTION_DOWN) return true // only change the text on key down, like RichInputConnection does + if (p0.keyCode == KeyEvent.KEYCODE_DEL) { + if (selectionEnd == 0) return true // nothing to delete + if (selectedText.isEmpty()) { + text = text.substring(0, selectionStart - 1) + text.substring(selectionEnd) + selectionStart -= 1 + } else { + text = text.substring(0, selectionStart) + text.substring(selectionEnd) + } + selectionEnd = selectionStart + return true + } + val textToAdd = when (p0.keyCode) { + KeyEvent.KEYCODE_ENTER -> "\n" + KeyEvent.KEYCODE_DEL -> null + KeyEvent.KEYCODE_UNKNOWN -> p0.characters + else -> StringUtils.newSingleCodePointString(p0.unicodeChar) + } + if (textToAdd != null) { + text = text.substring(0, selectionStart) + textToAdd + text.substring(selectionEnd) + selectionStart += textToAdd.length + selectionEnd = selectionStart + composingStart = -1 + composingEnd = -1 + } + return true + } + // implementation is only to work with getTextBeforeCursorAndDetectLaggyConnection + override fun getExtractedText(p0: ExtractedTextRequest?, p1: Int): ExtractedText { + return ExtractedText().also { + it.startOffset = 0 + it.selectionStart = selectionStart + it.selectionEnd = selectionEnd + } + } + // only effect is flashing, so whatever... + override fun commitCorrection(p0: CorrectionInfo?): Boolean = true + // implement only when necessary + override fun getCursorCapsMode(p0: Int): Int = TODO("Not yet implemented") + override fun deleteSurroundingTextInCodePoints(p0: Int, p1: Int): Boolean = TODO("Not yet implemented") + override fun commitCompletion(p0: CompletionInfo?): Boolean = TODO("Not yet implemented") + override fun performEditorAction(p0: Int): Boolean = TODO("Not yet implemented") + override fun performContextMenuAction(p0: Int): Boolean = TODO("Not yet implemented") + override fun clearMetaKeyStates(p0: Int): Boolean = TODO("Not yet implemented") + override fun reportFullscreenMode(p0: Boolean): Boolean = TODO("Not yet implemented") + override fun performPrivateCommand(p0: String?, p1: Bundle?): Boolean = TODO("Not yet implemented") + override fun getHandler(): Handler = TODO("Not yet implemented") + override fun closeConnection() = TODO("Not yet implemented") + override fun commitContent(p0: InputContentInfo, p1: Int, p2: Bundle?): Boolean = TODO("Not yet implemented") +} + +// Shadows are handled by Robolectric. @Implementation overrides built-in functionality. +// This is used for avoiding crashes (LocaleManagerCompat, InputMethodManager, KeyboardSwitcher) +// and for simulating system stuff (InputMethodService for controlling the InputConnection, which +// more or less is the contents of the text field), and for setting the current script in +// KeyboardSwitcher without having to care about InputMethodSubtypes + +// could also extend LatinIME, it's not final anyway +@Implements(InputMethodService::class) +class ShadowInputMethodService { + @Implementation + fun getCurrentInputEditorInfo() = EditorInfo().apply { + inputType = currentInputType + // anything else? + } + @Implementation + fun getCurrentInputConnection() = ic + @Implementation + fun isInputViewShown() = true // otherwise selection updates will do nothing +} + +@Implements(Handler::class) +class ShadowHandler { + @Implementation + fun sendMessage(message: Message) { + messages.add(message) + } + @Implementation + fun sendMessageDelayed(message: Message, delay: Long) { + delayedMessages.add(message) + } +} + +@Implements(KeyboardSwitcher::class) +class ShadowKeyboardSwitcher { + @Implementation + // basically only needed for null check + fun getMainKeyboardView(): MainKeyboardView = Mockito.mock(MainKeyboardView::class.java) + @Implementation + // only affects view + fun setKeyboard(keyboardId: Int, toggleState: KeyboardSwitcher.KeyboardSwitchState) = Unit + @Implementation + // only affects view + fun setOneHandedModeEnabled(enabled: Boolean) = Unit + @Implementation + fun getCurrentKeyboardScript() = currentScript +} + +@Implements(DictionaryFacilitatorImpl::class) +class ShadowFacilitator2 { + @Implementation + fun addToUserHistory(suggestion: String, wasAutoCapitalized: Boolean, + ngramContext: NgramContext, timeStampInSeconds: Long, + blockPotentiallyOffensive: Boolean) { + lastAddedWord = suggestion + } + companion object { + var lastAddedWord = "" + } +} diff --git a/app/src/test/java/helium314/keyboard/latin/LocaleUtilsTest.kt b/app/src/test/java/helium314/keyboard/latin/LocaleUtilsTest.kt new file mode 100644 index 0000000000..9fb7eaaf1d --- /dev/null +++ b/app/src/test/java/helium314/keyboard/latin/LocaleUtilsTest.kt @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-3.0-only +package helium314.keyboard.latin + +import helium314.keyboard.latin.common.LocaleUtils.constructLocale +import kotlin.test.Test +import kotlin.test.assertEquals + +class LocaleUtilsTest { + @Test fun createLocales() { + assertEquals("en_US".constructLocale(), "en-US".constructLocale()) + assertEquals("en_us".constructLocale(), "en-US".constructLocale()) + assertEquals("hi__#Latn".constructLocale(), "hi-Latn".constructLocale()) + assertEquals("hi_zz".constructLocale(), "hi-Latn".constructLocale()) + assertEquals("hi_ZZ".constructLocale(), "hi-Latn".constructLocale()) + assertEquals("zz".constructLocale().toLanguageTag(), "zz") + assertEquals("zz".constructLocale().toString(), "zz") + } +} diff --git a/app/src/test/java/helium314/keyboard/latin/ScriptUtilsTest.kt b/app/src/test/java/helium314/keyboard/latin/ScriptUtilsTest.kt new file mode 100644 index 0000000000..9134a58725 --- /dev/null +++ b/app/src/test/java/helium314/keyboard/latin/ScriptUtilsTest.kt @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-3.0-only +package helium314.keyboard.latin + +import helium314.keyboard.latin.common.LocaleUtils.constructLocale +import helium314.keyboard.latin.utils.ScriptUtils.SCRIPT_CYRILLIC +import helium314.keyboard.latin.utils.ScriptUtils.SCRIPT_DEVANAGARI +import helium314.keyboard.latin.utils.ScriptUtils.SCRIPT_LATIN +import helium314.keyboard.latin.utils.ScriptUtils.script +import kotlin.test.Test +import kotlin.test.assertEquals + +class ScriptUtilsTest { + @Test fun defaultScript() { + assertEquals(SCRIPT_LATIN, "en".constructLocale().script()) + assertEquals(SCRIPT_DEVANAGARI, "hi".constructLocale().script()) + assertEquals(SCRIPT_LATIN, "hi_zz".constructLocale().script()) + assertEquals(SCRIPT_LATIN, "sr-Latn".constructLocale().script()) + assertEquals(SCRIPT_CYRILLIC, "mk".constructLocale().script()) + assertEquals(SCRIPT_CYRILLIC, "fr-Cyrl".constructLocale().script()) + } +} diff --git a/app/src/test/java/helium314/keyboard/latin/StringUtilsTest.kt b/app/src/test/java/helium314/keyboard/latin/StringUtilsTest.kt new file mode 100644 index 0000000000..ce73a6cc2e --- /dev/null +++ b/app/src/test/java/helium314/keyboard/latin/StringUtilsTest.kt @@ -0,0 +1,187 @@ +// SPDX-License-Identifier: GPL-3.0-only +package helium314.keyboard.latin + +import androidx.test.core.app.ApplicationProvider +import helium314.keyboard.ShadowInputMethodManager2 +import helium314.keyboard.latin.common.StringUtils +import helium314.keyboard.latin.common.codePointAt +import helium314.keyboard.latin.common.codePointBefore +import helium314.keyboard.latin.common.endsWithWordCodepoint +import helium314.keyboard.latin.common.getFullEmojiAtEnd +import helium314.keyboard.latin.common.getTouchedWordRange +import helium314.keyboard.latin.common.isEmoji +import helium314.keyboard.latin.common.nonWordCodePointAndNoSpaceBeforeCursor +import helium314.keyboard.latin.common.splitOnWhitespace +import helium314.keyboard.latin.settings.SpacingAndPunctuations +import helium314.keyboard.latin.utils.ScriptUtils +import helium314.keyboard.latin.utils.TextRange +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config +import kotlin.test.Test +import kotlin.test.assertEquals + +// todo: actually this test could/should be significantly expanded... +@RunWith(RobolectricTestRunner::class) +@Config(shadows = [ + ShadowInputMethodManager2::class, +]) +class StringUtilsTest { + @Test fun `not inside double quotes without quotes`() { + assert(!StringUtils.isInsideDoubleQuoteOrAfterDigit("hello yes")) + } + + @Test fun `inside double quotes after opening a quote`() { + assert(StringUtils.isInsideDoubleQuoteOrAfterDigit("hello \"yes")) + } + + @Test fun `inside double quotes with quote at start`() { + assert(StringUtils.isInsideDoubleQuoteOrAfterDigit("\"hello yes")) + } + + // maybe this is not that bad, should be correct after entering next text + @Test fun `not inside double quotes directly after closing quote`() { + assert(!StringUtils.isInsideDoubleQuoteOrAfterDigit("hello \"yes\"")) + } + + @Test fun `not inside double quotes after closing quote`() { + assert(!StringUtils.isInsideDoubleQuoteOrAfterDigit("hello \"yes\" ")) + } + + @Test fun `not inside double quotes after closing quote followed by comma`() { + assert(!StringUtils.isInsideDoubleQuoteOrAfterDigit("hello \"yes\", ")) + } + + @Test fun `inside double quotes after opening another quote`() { + assert(StringUtils.isInsideDoubleQuoteOrAfterDigit("hello \"yes\" \"h")) + } + + @Test fun `inside double quotes after opening another quote with closing quote followed by comma`() { + assert(StringUtils.isInsideDoubleQuoteOrAfterDigit("hello \"yes\", \"h")) + } + + @Test fun `non-word codepoints and no space`() { + val sp = SpacingAndPunctuations(ApplicationProvider.getApplicationContext().resources, false) + assert(!nonWordCodePointAndNoSpaceBeforeCursor("this is", sp)) + assert(!nonWordCodePointAndNoSpaceBeforeCursor("this ", sp)) + assert(!nonWordCodePointAndNoSpaceBeforeCursor("th.is ", sp)) + assert(nonWordCodePointAndNoSpaceBeforeCursor("th.is", sp)) + } + + @Test fun `is word-like at end`() { + val sp = SpacingAndPunctuations(ApplicationProvider.getApplicationContext().resources, false) + assert(!endsWithWordCodepoint("", sp)) + assert(endsWithWordCodepoint("don'", sp)) + assert(!endsWithWordCodepoint("hello!", sp)) + assert(!endsWithWordCodepoint("when ", sp)) + assert(!endsWithWordCodepoint("3-", sp)) + assert(!endsWithWordCodepoint("5'", sp)) + assert(!endsWithWordCodepoint("1", sp)) + assert(endsWithWordCodepoint("a-", sp)) + assert(!endsWithWordCodepoint("--", sp)) + assert(!endsWithWordCodepoint("\uD83D\uDE42", sp)) + } + + @Test fun `get touched text range`() { + val sp = SpacingAndPunctuations(ApplicationProvider.getApplicationContext().resources, false) + val spUrl = SpacingAndPunctuations(ApplicationProvider.getApplicationContext().resources, true) + val script = ScriptUtils.SCRIPT_LATIN + checkTextRange("blabla this is v", "ery good", sp, script, 15, 19) + checkTextRange(".hel", "lo...", sp, script, 1, 6) + checkTextRange("(hi", ")", sp, script, 1, 3) + checkTextRange("", "word", sp, script, 0, 4) + + checkTextRange("mail: blorb@", "florb.com or", sp, script, 12, 17) + checkTextRange("mail: blorb@", "florb.com or", spUrl, script, 6, 21) + checkTextRange("mail: blor", "b@florb.com or", sp, script, 6, 11) + checkTextRange("mail: blor", "b@florb.com or", spUrl, script, 6, 21) + checkTextRange("mail: blorb@f", "lorb.com or", sp, script, 12, 17) + checkTextRange("mail: blorb@f", "lorb.com or", spUrl, script, 6, 21) + + checkTextRange("http://exam", "ple.com", sp, script, 7, 14) + checkTextRange("http://exam", "ple.com", spUrl, script, 7, 18) + checkTextRange("http://example.", "com", sp, script, 15, 18) + checkTextRange("http://example.", "com", spUrl, script, 7, 18) + checkTextRange("htt", "p://example.com", sp, script, 0, 4) + checkTextRange("htt", "p://example.com", spUrl, script, 0, 18) + checkTextRange("http:/", "/example.com", sp, script, 6, 6) + checkTextRange("http:/", "/example.com", spUrl, script, 0, 18) + + checkTextRange("..", ".", spUrl, script, 2, 2) + checkTextRange("...", "", spUrl, script, 3, 3) + + // todo: these are bad cases of url detection + // also: sometimesWordConnectors are for URL and should be named accordingly + checkTextRange("@@@", "@@@", spUrl, script, 0, 6) + checkTextRange("a...", "", spUrl, script, 0, 4) + checkTextRange("@@@", "", spUrl, script, 0, 3) + } + + @Test fun detectEmojisAtEnd() { + assertEquals("", getFullEmojiAtEnd("\uD83C\uDF83 ")) + assertEquals("", getFullEmojiAtEnd("a")) + assertEquals("\uD83C\uDF83", getFullEmojiAtEnd("\uD83C\uDF83")) + assertEquals("ℹ️", getFullEmojiAtEnd("ℹ️")) + assertEquals("ℹ️", getFullEmojiAtEnd("ℹ️ℹ️")) + assertEquals("\uD83D\uDE22", getFullEmojiAtEnd("x\uD83D\uDE22")) + assertEquals("", getFullEmojiAtEnd("x\uD83D\uDE22 ")) + assertEquals("\uD83C\uDFF4\u200D☠️", getFullEmojiAtEnd("ok \uD83C\uDFF4\u200D☠️")) + assertEquals("\uD83C\uDFF3️\u200D\uD83C\uDF08", getFullEmojiAtEnd("\uD83C\uDFF3️\u200D\uD83C\uDF08")) + assertEquals("\uD83C\uDFF3️\u200D\uD83C\uDF08", getFullEmojiAtEnd("\uD83C\uDFF4\u200D☠️\uD83C\uDFF3️\u200D\uD83C\uDF08")) + assertEquals("\uD83C\uDFF3️\u200D⚧️", getFullEmojiAtEnd("hello there🏳️‍⚧️")) + assertEquals("\uD83D\uDD75\uD83C\uDFFC", getFullEmojiAtEnd(" 🕵🏼")) + assertEquals("\uD83D\uDD75\uD83C\uDFFC", getFullEmojiAtEnd("🕵🏼")) + assertEquals("\uD83C\uDFFC", getFullEmojiAtEnd(" \uD83C\uDFFC")) + assertEquals("1\uFE0F⃣", getFullEmojiAtEnd("1\uFE0F⃣")) // 1️⃣ + assertEquals("©\uFE0F", getFullEmojiAtEnd("©\uFE0F")) // ©️ + } + + @Test fun detectEmojisAtEndFail() { + if (BuildConfig.BUILD_TYPE == "runTests") return + // fails, but unlikely enough that we leave it unfixed + assertEquals("\uD83C\uDFFC", getFullEmojiAtEnd("\uD83C\uDF84\uD83C\uDFFC")) // 🎄🏼 + // below also fail, because current ZWJ handling is not suitable for some unusual cases + assertEquals("", getFullEmojiAtEnd("\u200D")) + assertEquals("", getFullEmojiAtEnd("a\u200D")) + assertEquals("\uD83D\uDE22", getFullEmojiAtEnd(" \u200D\uD83D\uDE22")) + } + + @Test fun isEmojiDetectsSingleEmojis() { + assert(isEmoji("🎄")) + assert(!isEmoji("🎄🎄")) + assert(!isEmoji("🎄🏼")) + assert(isEmoji("🏼")) // actually this is not a standalone emoji... + assert(!isEmoji("a🎄")) + assert(isEmoji("🖐️")) + assert(isEmoji("🖐🏾")) + assert(!isEmoji("🖐🏾🏼")) + } + + @Test fun isEmojiDetectsAllAvailableEmojis() { + val ctx = ApplicationProvider.getApplicationContext() + val allEmojis = ctx.assets.list("emoji")!!.flatMap { + if (it == "minApi.txt" || it == "EMOTICONS.txt") return@flatMap emptyList() + ctx.assets.open("emoji/$it").reader().readLines() + }.flatMap { it.splitOnWhitespace() } + + val brokenDetectionAtStart = listOf("〰️", "〽️", "©️", "®️", "#️⃣", "*️⃣", "0️⃣", "1️⃣", "2️⃣", "3️⃣", "4️⃣", "5️⃣", "6️⃣", "7️⃣", "8️⃣", "9️⃣", "㊗️", "㊙️") + allEmojis.forEach { + if (it == "🀄" || it == "🃏") return@forEach // todo: should be fixed, ideally in the regex + assert(isEmoji(it)) + assert(StringUtils.mightBeEmoji(it.codePointBefore(it.length))) + if (it !in brokenDetectionAtStart) + assert(StringUtils.mightBeEmoji(it.codePointAt(0))) + } + } + + // todo: add tests for emoji detection? + // could help towards fully fixing https://github.com/Helium314/HeliBoard/issues/22 + // though this might be tricky, as some emojis will show as one on new Android versions, and + // as two on older versions (also may differ by app) + + private fun checkTextRange(before: String, after: String, sp: SpacingAndPunctuations, script: String, wordStart: Int, wordEnd: Int) { + val got = getTouchedWordRange(before, after, script, sp) + val wanted = TextRange(before + after, wordStart, wordEnd, before.length, false) + assertEquals(wanted, got) + } +} diff --git a/app/src/test/java/helium314/keyboard/latin/SuggestTest.kt b/app/src/test/java/helium314/keyboard/latin/SuggestTest.kt new file mode 100644 index 0000000000..a89575ab9d --- /dev/null +++ b/app/src/test/java/helium314/keyboard/latin/SuggestTest.kt @@ -0,0 +1,359 @@ +// SPDX-License-Identifier: GPL-3.0-only +package helium314.keyboard.latin + +import androidx.core.content.edit +import helium314.keyboard.ShadowBinaryDictionaryUtils +import helium314.keyboard.ShadowInputMethodManager2 +import helium314.keyboard.ShadowLocaleManagerCompat +import helium314.keyboard.latin.SuggestedWords.SuggestedWordInfo +import helium314.keyboard.latin.SuggestedWords.SuggestedWordInfo.KIND_FLAG_APPROPRIATE_FOR_AUTO_CORRECTION +import helium314.keyboard.latin.SuggestedWords.SuggestedWordInfo.KIND_SHORTCUT +import helium314.keyboard.latin.SuggestedWords.SuggestedWordInfo.KIND_WHITELIST +import helium314.keyboard.latin.common.ComposedData +import helium314.keyboard.latin.common.StringUtils +import helium314.keyboard.latin.dictionary.Dictionary +import helium314.keyboard.latin.settings.Settings +import helium314.keyboard.latin.settings.SettingsValuesForSuggestion +import helium314.keyboard.latin.utils.DeviceProtectedUtils +import helium314.keyboard.latin.utils.SuggestionResults +import helium314.keyboard.latin.utils.prefs +import org.junit.runner.RunWith +import org.robolectric.Robolectric +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config +import org.robolectric.annotation.Implementation +import org.robolectric.annotation.Implements +import org.robolectric.shadows.ShadowLog +import java.util.* +import kotlin.test.BeforeTest +import kotlin.test.Test +import kotlin.test.assertEquals + +@Suppress("NonAsciiCharacters") +@RunWith(RobolectricTestRunner::class) +@Config(shadows = [ + ShadowLocaleManagerCompat::class, + ShadowInputMethodManager2::class, + ShadowBinaryDictionaryUtils::class, + ShadowFacilitator::class, +]) +class SuggestTest { + private lateinit var latinIME: LatinIME + private val suggest get() = latinIME.mInputLogic.mSuggest + + // values taken from the string array auto_correction_threshold_mode_indexes + private val thresholdModest = 0.185f + private val thresholdAggressive = 0.067f + private val thresholdVeryAggressive = -1f + + @BeforeTest fun setUp() { + latinIME = Robolectric.setupService(LatinIME::class.java) + // start logging only after latinIME is created, avoids showing the stack traces if library is not found + ShadowLog.setupLogging() + ShadowLog.stream = System.out + DeviceProtectedUtils.getSharedPreferences(latinIME) + .edit { putBoolean(Settings.PREF_AUTO_CORRECTION, true) } // need to enable, off by default + } + + @Test fun `'on' to 'in' if 'in' was used before in this context`() { + val locale = Locale.ENGLISH + val result = shouldBeAutoCorrected( + "on", + listOf(suggestion("on", 1800000, locale), suggestion("in", 600000, locale)), + suggestion("in", 240, locale), + null, // never typed "on" in this context + locale, + thresholdModest + ) + assert(!result.last()) // should not be corrected + // not corrected because first suggestion score is too low + } + + @Test fun `'ill' to 'I'll' if 'ill' not used before in this context, and I'll is whitelisted`() { + val locale = Locale.ENGLISH + val result = shouldBeAutoCorrected( + "ill", + listOf(suggestion("I'll", Int.MAX_VALUE, locale), suggestion("ill", 1500000, locale)), + null, + null, + locale, + thresholdModest + ) + assert(result.last()) // should be corrected + // correction because both empty scores are 0, which should be fine (next check is comparing empty scores) + } + + @Test fun `not 'ill' to 'I'll' if only 'ill' was used before in this context`() { + val locale = Locale.ENGLISH + val result = shouldBeAutoCorrected( + "ill", + listOf(suggestion("I'll", Int.MAX_VALUE, locale), suggestion("ill", 1500000, locale)), + null, + suggestion("ill", 200, locale), + locale, + thresholdModest + ) + assert(!result.last()) // should not be corrected + // not corrected because first empty score not high enough + } + + @Test fun `'ill' to 'I'll' if both have same ngram score`() { + val locale = Locale.ENGLISH + val result = shouldBeAutoCorrected( + "ill", + listOf(suggestion("I'll", Int.MAX_VALUE, locale), suggestion("ill", 1500000, locale)), + suggestion("I'll", 200, locale), + suggestion("ill", 200, locale), + locale, + thresholdModest + ) + assert(result.last()) // should be corrected + } + + @Test fun `no 'ill' to 'I'll' if 'ill' has somewhat better ngram score`() { + val locale = Locale.ENGLISH + val result = shouldBeAutoCorrected( + "ill", + listOf(suggestion("I'll", Int.MAX_VALUE, locale), suggestion("ill", 1500000, locale)), + suggestion("I'll", 200, locale), + suggestion("ill", 211, locale), + locale, + thresholdModest + ) + assert(!result.last()) // should not be corrected + } + + @Test fun `no English 'I' for Polish 'i' when typing in Polish`() { + val result = shouldBeAutoCorrected( + "i", + listOf(suggestion("I", Int.MAX_VALUE, Locale.ENGLISH), suggestion("i", 1500000, Locale("pl"))), + null, + null, + Locale("pl"), + thresholdVeryAggressive + ) + assert(!result.last()) // should not be corrected + // not even checking at modest and aggressive thresholds, this is a locale thing + // if very aggressive, still no correction because locale matches with typed word only + } + + @Test fun `English 'I' instead of Polish 'i' when typing in English`() { + val result = shouldBeAutoCorrected( + "i", + listOf(suggestion("I", Int.MAX_VALUE, Locale.ENGLISH), suggestion("i", 1500000, Locale("pl"))), + null, + null, + Locale.ENGLISH, + thresholdModest + ) + assert(result.last()) // should be corrected + // only corrected because it's whitelisted (int max value) + // if it wasn't whitelisted, it would never be allowed due to utoCorrectionUtils.suggestionExceedsThreshold (unless set to very aggressive) + // -> maybe normalizedScore needs adjustment if the only difference is upper/lowercase + // todo: consider special score for case-only difference? + } + + @Test fun `no English 'in' instead of French 'un' when typing in French`() { + val result = shouldBeAutoCorrected( + "un", + listOf(suggestion("in", Int.MAX_VALUE, Locale.ENGLISH), suggestion("un", 1500000, Locale.FRENCH)), + null, + null, + Locale.FRENCH, + thresholdModest + ) + assert(!result.last()) // should not be corrected + // not corrected because of locale matching + } + + @Test fun `no 'né' instead of 'ne'`() { + val result = shouldBeAutoCorrected( + "ne", + listOf(suggestion("ne", 1900000, Locale.FRENCH), suggestion("né", 1900000-1, Locale.FRENCH)), + null, + null, + Locale.FRENCH, + thresholdModest + ) + assert(!result.last()) // should not be corrected + // not corrected because score is lower + } + + @Test fun `'né' instead of 'ne' if 'né' in ngram context`() { + val locale = Locale.FRENCH + val result = shouldBeAutoCorrected( + "ne", + listOf(suggestion("ne", 1900000, locale), suggestion("né", 1900000-1, locale)), + suggestion("né", 200, locale), + null, + locale, + thresholdModest + ) + assert(result.last()) // should be corrected + } + + @Test fun `'né' instead of 'ne' if 'né' has clearly better score in ngram context`() { + val locale = Locale.FRENCH + val result = shouldBeAutoCorrected( + "ne", + listOf(suggestion("ne", 1900000, locale), suggestion("né", 1900000-1, locale)), + suggestion("né", 215, locale), + suggestion("ne", 200, locale), + locale, + thresholdModest + ) + assert(result.last()) // should be corrected + } + + @Test fun `no 'né' instead of 'ne' if both with same score in ngram context`() { + val locale = Locale.FRENCH + val result = shouldBeAutoCorrected( + "ne", + listOf(suggestion("ne", 1900000, locale), suggestion("né", 1900000-1, locale)), + suggestion("né", 200, locale), + suggestion("ne", 200, locale), + locale, + thresholdModest + ) + assert(!result.last()) // should not be corrected + } + + @Test fun `no 'ne' instead of 'né'`() { + val locale = Locale.FRENCH + val result = shouldBeAutoCorrected( + "né", + listOf(suggestion("ne", 600000, locale), suggestion("né", 1600000, locale)), + suggestion("né", 200, locale), + suggestion("ne", 200, locale), + locale, + thresholdModest + ) + assert(!result.last()) // should not be corrected + // not even allowed to check because of low score for ne + } + + @Test fun `shortcuts might be autocorrected by default`() { + val locale = Locale.ENGLISH + val result = shouldBeAutoCorrected( + "gd", + listOf(suggestion("good", 700000, locale, true)), + null, + null, + locale, + thresholdAggressive + ) + assert(result.last()) // should be corrected + + val result2 = shouldBeAutoCorrected( + "gd", + listOf(suggestion("good", 300000, locale, true)), + null, + null, + locale, + thresholdModest + ) + assert(!result2.last()) // should not be corrected + } + + @Test fun `shortcuts are not autocorrected when setting is off`() { + val prefs = latinIME.prefs() + prefs.edit { putBoolean(Settings.PREF_AUTOCORRECT_SHORTCUTS, false) } + val locale = Locale.ENGLISH + val result = shouldBeAutoCorrected( + "gd", + listOf(suggestion("good", 12000000, locale, true)), + null, + null, + locale, + thresholdAggressive + ) + assert(!result.last()) // should not be corrected + } + + @Test fun `quotes are added to suggestions when needed`() { + val result = Suggest.getTransformedSuggestedWordInfo(suggestion("word", 1, Locale.ENGLISH, true), + Locale.ENGLISH, false, false, 1) + assertEquals("word'", result.mWord) + } + + private fun shouldBeAutoCorrected(word: String, // typed word + suggestions: List, // suggestions ordered by score, including suggestion for typed word if in dictionary + firstSuggestionForEmpty: SuggestedWordInfo?, // first suggestion if typed word would be empty (null if none) + typedWordSuggestionForEmpty: SuggestedWordInfo?, // suggestion for actually typed word if typed word would be empty (null if none) + typingLocale: Locale, // used for checking whether suggestion locale is the same, relevant e.g. for English i -> I shortcut, but we want Polish i + autoCorrectThreshold: Float + ): List { + latinIME.prefs().edit { putFloat(Settings.PREF_AUTO_CORRECT_THRESHOLD, autoCorrectThreshold) } + // enable "more autocorrect" so we actually have autocorrect even though we don't set a compatible input type + latinIME.prefs().edit { putBoolean(Settings.PREF_MORE_AUTO_CORRECTION, true) } + currentTypingLocale = typingLocale + val suggestionsContainer = ArrayList().apply { addAll(suggestions) } + val suggestionResults = SuggestionResults(suggestions.size, false, false) + suggestions.forEach { suggestionResults.add(it) } + + // store the original SuggestedWordInfo for typed word, as it will be removed + // we may want to re-add it in case auto-correction happens, so that the original word can at least be selected + val typedWordFirstOccurrenceWordInfo: SuggestedWordInfo? = suggestionsContainer.firstOrNull { it.mWord == word } + + val firstOccurrenceOfTypedWordInSuggestions = + SuggestedWordInfo.removeDupsAndTypedWord(word, suggestionsContainer) + + return suggest.shouldBeAutoCorrected( + StringUtils.getTrailingSingleQuotesCount(word), + word, + suggestionsContainer.firstOrNull(), // todo: get from suggestions? mostly it's just removing the typed word, right? + { firstSuggestionForEmpty to typedWordSuggestionForEmpty }, + true, // doesn't make sense otherwise + WordComposer.getComposerForTest(false), + suggestionResults, + firstOccurrenceOfTypedWordInSuggestions, + typedWordFirstOccurrenceWordInfo + ).toList() + } +} + +private var currentTypingLocale = Locale.ENGLISH + +fun suggestion(word: String, score: Int, locale: Locale, shortcut: Boolean = false) = + SuggestedWordInfo( + /* word */ word, + /* prevWordsContext */ "", // irrelevant + + // typically 2B for whitelisted, 1.5M for exact match, 600k for close match + // when previous word context is empty, scores are usually 200+ if word is known and somewhat often used, 0 if unknown + /* score */ score, + + /* kindAndFlags */ if (score == Int.MAX_VALUE) KIND_WHITELIST + else if (shortcut) KIND_SHORTCUT // whitelist & shortcut only counts a whitelist + else KIND_FLAG_APPROPRIATE_FOR_AUTO_CORRECTION, // shortcuts seem to never have this flag + /* sourceDict */ TestDict(locale), + /* indexOfTouchPointOfSecondWord */ 0, // irrelevant + /* autoCommitFirstWordConfidence */ 0 // irrelevant? + ) + +@Implements(DictionaryFacilitatorImpl::class) +class ShadowFacilitator { + @Implementation + fun getCurrentLocale(): Locale = currentTypingLocale + @Implementation + fun hasAtLeastOneInitializedMainDictionary() = true // otherwise no autocorrect +} + +private class TestDict(locale: Locale) : Dictionary("testDict", locale) { + override fun getSuggestions( + composedData: ComposedData?, + ngramContext: NgramContext?, + proximityInfoHandle: Long, + settingsValuesForSuggestion: SettingsValuesForSuggestion?, + sessionId: Int, + weightForLocale: Float, + inOutWeightOfLangModelVsSpatialModel: FloatArray? + ): ArrayList { + TODO("Not yet implemented") + } + + override fun isInDictionary(word: String?): Boolean { + TODO("Not yet implemented") + } + +} diff --git a/art/launcher_icon/background_layer_export.svg b/art/launcher_icon/background_layer_export.svg new file mode 100644 index 0000000000..7e0b8311e6 --- /dev/null +++ b/art/launcher_icon/background_layer_export.svg @@ -0,0 +1,47 @@ + + + +HeliBoard Launcher IconHeliBoard Launcher Iconhttps://github.com/FabianOvrWrthttps://github.com/Helium314/HeliBoardCC Attribution-ShareAlike 4.003/31/2024 diff --git a/art/launcher_icon/foreground_layer_export.svg b/art/launcher_icon/foreground_layer_export.svg new file mode 100644 index 0000000000..8cee2f91e8 --- /dev/null +++ b/art/launcher_icon/foreground_layer_export.svg @@ -0,0 +1,59 @@ + + + +HeliBoard Launcher IconHeliBoard Launcher Iconhttps://github.com/FabianOvrWrthttps://github.com/Helium314/HeliBoardCC Attribution-ShareAlike 4.003/31/2024 diff --git a/art/launcher_icon/icon_source_-_rubik_font_not_included.svg b/art/launcher_icon/icon_source_-_rubik_font_not_included.svg new file mode 100644 index 0000000000..cdc4cfae23 --- /dev/null +++ b/art/launcher_icon/icon_source_-_rubik_font_not_included.svg @@ -0,0 +1,237 @@ + + + +HeliBoard Launcher IconHeliBoard Launcher Iconhttps://github.com/FabianOvrWrthttps://github.com/Helium314/HeliBoardCC Attribution-ShareAlike 4.003/31/2024https://github.com/FabianOvrWrt +https://github.com/the-eclectic-dyslexic diff --git a/build.gradle b/build.gradle deleted file mode 100755 index c164b183a1..0000000000 --- a/build.gradle +++ /dev/null @@ -1,27 +0,0 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - -buildscript { - ext.kotlin_version = '1.5.31' - repositories { - jcenter() - google() - } - dependencies { - classpath 'com.android.tools.build:gradle:7.0.4' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files - } -} - -allprojects { - repositories { - google() - jcenter() - } -} - -task clean(type: Delete) { - delete rootProject.buildDir -} diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100755 index 0000000000..730ffd94f0 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,24 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + val kotlinVersion = "2.2.21" + repositories { + mavenCentral() + google() + } + dependencies { + classpath("com.android.tools.build:gradle:8.13.2") + classpath(kotlin("gradle-plugin", version = kotlinVersion)) + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + google() + mavenCentral() + maven { url = uri("https://jitpack.io") } + } +} diff --git a/conductor/tracks.md b/conductor/tracks.md new file mode 100644 index 0000000000..0b9bc357fe --- /dev/null +++ b/conductor/tracks.md @@ -0,0 +1,11 @@ +# Conductor Tracks + +## Phase 1: Architectural Modernization +- [x] 1.1 Namespace Decoupling & Migration (Build verification skipped: Android SDK missing) +- [x] 1.2 Native Build System Migration (CMake) (Configured, not compiled) +- [x] 1.3 Core Java to Kotlin Conversion (Converted ProximityInfo & BinaryDictionary. LatinIME skipped for stability) + +## Phase 2: Feature Implementation +- [x] 2.1 Feature: Granular Key Sizing +- [x] 2.2 Feature: Global Swipe Down to Hide +- [x] 2.3 Feature: Settings "Test Drive" (Demo Mode) diff --git a/dictionaries/bg_wordlist.combined.gz b/dictionaries/bg_wordlist.combined.gz deleted file mode 100644 index 3c42840634..0000000000 Binary files a/dictionaries/bg_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/cs_wordlist.combined.gz b/dictionaries/cs_wordlist.combined.gz deleted file mode 100755 index 94ba863a2c..0000000000 Binary files a/dictionaries/cs_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/da_wordlist.combined.gz b/dictionaries/da_wordlist.combined.gz deleted file mode 100755 index b4baf627fa..0000000000 Binary files a/dictionaries/da_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/de_wordlist.combined.gz b/dictionaries/de_wordlist.combined.gz deleted file mode 100755 index d516330589..0000000000 Binary files a/dictionaries/de_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/el_wordlist.combined.gz b/dictionaries/el_wordlist.combined.gz deleted file mode 100755 index 599734cf82..0000000000 Binary files a/dictionaries/el_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/en_AU_wordlist.combined.gz b/dictionaries/en_AU_wordlist.combined.gz deleted file mode 100755 index e08ff37b75..0000000000 Binary files a/dictionaries/en_AU_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/en_GB_wordlist.combined.gz b/dictionaries/en_GB_wordlist.combined.gz deleted file mode 100755 index 217660fc40..0000000000 Binary files a/dictionaries/en_GB_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/en_US_wordlist.combined.gz b/dictionaries/en_US_wordlist.combined.gz deleted file mode 100755 index 8aed9c5e0b..0000000000 Binary files a/dictionaries/en_US_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/en_emoji.combined.gz b/dictionaries/en_emoji.combined.gz deleted file mode 100755 index 4d9cf1b59e..0000000000 Binary files a/dictionaries/en_emoji.combined.gz and /dev/null differ diff --git a/dictionaries/en_wordlist.combined.gz b/dictionaries/en_wordlist.combined.gz deleted file mode 100644 index 1ccedfb9ff..0000000000 Binary files a/dictionaries/en_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/eo_wordlist.combined.gz b/dictionaries/eo_wordlist.combined.gz deleted file mode 100644 index f5c58a57a7..0000000000 Binary files a/dictionaries/eo_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/es_wordlist.combined.gz b/dictionaries/es_wordlist.combined.gz deleted file mode 100755 index 71e7309fc3..0000000000 Binary files a/dictionaries/es_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/fi_wordlist.combined.gz b/dictionaries/fi_wordlist.combined.gz deleted file mode 100755 index b7332ad3eb..0000000000 Binary files a/dictionaries/fi_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/fr_emoji.combined.gz b/dictionaries/fr_emoji.combined.gz deleted file mode 100755 index 5c9c7a096d..0000000000 Binary files a/dictionaries/fr_emoji.combined.gz and /dev/null differ diff --git a/dictionaries/fr_wordlist.combined.gz b/dictionaries/fr_wordlist.combined.gz deleted file mode 100755 index afe44a6d99..0000000000 Binary files a/dictionaries/fr_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/hr_wordlist.combined.gz b/dictionaries/hr_wordlist.combined.gz deleted file mode 100755 index 9a2086f1f8..0000000000 Binary files a/dictionaries/hr_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/hu_wordlist.combined.gz b/dictionaries/hu_wordlist.combined.gz deleted file mode 100644 index 0e1bd8a7c5..0000000000 Binary files a/dictionaries/hu_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/it_wordlist.combined.gz b/dictionaries/it_wordlist.combined.gz deleted file mode 100755 index ed58a12c51..0000000000 Binary files a/dictionaries/it_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/iw_wordlist.combined.gz b/dictionaries/iw_wordlist.combined.gz deleted file mode 100755 index 13eab9f179..0000000000 Binary files a/dictionaries/iw_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/ka_wordlist.combined.gz b/dictionaries/ka_wordlist.combined.gz deleted file mode 100755 index 02bacba36c..0000000000 Binary files a/dictionaries/ka_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/lb_wordlist.combined.gz b/dictionaries/lb_wordlist.combined.gz deleted file mode 100755 index 9e0579b384..0000000000 Binary files a/dictionaries/lb_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/lt_wordlist.combined.gz b/dictionaries/lt_wordlist.combined.gz deleted file mode 100755 index 961266bb8f..0000000000 Binary files a/dictionaries/lt_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/lv_wordlist.combined.gz b/dictionaries/lv_wordlist.combined.gz deleted file mode 100755 index ae906a9dbc..0000000000 Binary files a/dictionaries/lv_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/nb_wordlist.combined.gz b/dictionaries/nb_wordlist.combined.gz deleted file mode 100755 index 1c0f2cfb95..0000000000 Binary files a/dictionaries/nb_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/nl_wordlist.combined.gz b/dictionaries/nl_wordlist.combined.gz deleted file mode 100755 index 19c3a7ea8b..0000000000 Binary files a/dictionaries/nl_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/pl_wordlist.combined.gz b/dictionaries/pl_wordlist.combined.gz deleted file mode 100755 index 2b84eecfda..0000000000 Binary files a/dictionaries/pl_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/pt_BR_wordlist.combined.gz b/dictionaries/pt_BR_wordlist.combined.gz deleted file mode 100755 index 7aac61e50a..0000000000 Binary files a/dictionaries/pt_BR_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/pt_PT_wordlist.combined.gz b/dictionaries/pt_PT_wordlist.combined.gz deleted file mode 100755 index 5bf9a60e87..0000000000 Binary files a/dictionaries/pt_PT_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/ro_wordlist.combined.gz b/dictionaries/ro_wordlist.combined.gz deleted file mode 100755 index 92cb73ed90..0000000000 Binary files a/dictionaries/ro_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/ru_wordlist.combined.gz b/dictionaries/ru_wordlist.combined.gz deleted file mode 100755 index 5e92662218..0000000000 Binary files a/dictionaries/ru_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/sample.combined b/dictionaries/sample.combined deleted file mode 100755 index 4fa595e1e8..0000000000 --- a/dictionaries/sample.combined +++ /dev/null @@ -1,38 +0,0 @@ -# This is a sample wordlist that can be converted to a binary dictionary -# for use by the Latin IME. -# The file is essentially a CSV file, with indent level denoting nesting. -# -# The file starts with a single CSV line with the header attributes. Whatever -# the content, these are included as is in the binary file. The first attribute -# of the file should be `dictionary'. Usual fields are `locale', `description', -# `date', `version', `options'. -# -# Each word has a `word' entry and at least a `f' argument denoting its -# probability, as an integer between 0 and 255 on a logarithmic scale, with -# 255 meaning 1 and each decrement in 1 dividing probability by 1.15. -# As a special case, a weight of 0 is taken to mean profanity - words that -# should not be considered a typo, but that should never be suggested -# explicitly. An entry may be made not a word by adding a `not_a_word' -# field with a value of `true'. The main reason for putting such entries -# into the dictionary is to add shortcut targets and maybe a whitelist -# replacement. -# -# Each word may or may not have any number of shortcut target lines -# starting with a `shortcut' entry and having at least a `f' frequency -# value between 0 and 14, or the special value `whitelist' which becomes -# 15, which is then taken to be the whitelist target of this word. -# -# Each word may also have any number of bigram lines starting with a -# `bigram' entry containing the following word whose frequency should -# override the unigram frequency when following the word this bigram is -# for. -# -dictionary=main:en,locale=en,description=Sample wordlist,date=1351495318,version=1 - word=sample,f=200 - bigram=wordlist,f=243 - word=wordlist,f=180 - word=shortcut,f=176 - shortcut=target,f=10 - word=witelisted,f=10,not_a_word=true - shortcut=whitelisted,f=whitelist - word=profanity,f=0 diff --git a/dictionaries/sl_wordlist.combined.gz b/dictionaries/sl_wordlist.combined.gz deleted file mode 100755 index a7240fe5ba..0000000000 Binary files a/dictionaries/sl_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/sr_wordlist.combined.gz b/dictionaries/sr_wordlist.combined.gz deleted file mode 100755 index 30ce99670d..0000000000 Binary files a/dictionaries/sr_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/sv_wordlist.combined.gz b/dictionaries/sv_wordlist.combined.gz deleted file mode 100755 index db44ae4c49..0000000000 Binary files a/dictionaries/sv_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/tr_wordlist.combined.gz b/dictionaries/tr_wordlist.combined.gz deleted file mode 100755 index d3c8825b97..0000000000 Binary files a/dictionaries/tr_wordlist.combined.gz and /dev/null differ diff --git a/dictionaries/uk_wordlist.combined.gz b/dictionaries/uk_wordlist.combined.gz deleted file mode 100755 index ed8420d7d2..0000000000 Binary files a/dictionaries/uk_wordlist.combined.gz and /dev/null differ diff --git a/fastlane/Appfile b/fastlane/Appfile deleted file mode 100644 index aa13784479..0000000000 --- a/fastlane/Appfile +++ /dev/null @@ -1,2 +0,0 @@ -json_key_file("/home/daniele/Documenti/chiavi/api-6930663337756230740-637209-3adcd2d0f296.json") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one -package_name("org.dslul.openboard.inputmethod.latin") # e.g. com.krausefx.app diff --git a/fastlane/Fastfile b/fastlane/Fastfile deleted file mode 100644 index 19c557cc6e..0000000000 --- a/fastlane/Fastfile +++ /dev/null @@ -1,38 +0,0 @@ -# This file contains the fastlane.tools configuration -# You can find the documentation at https://docs.fastlane.tools -# -# For a list of all available actions, check out -# -# https://docs.fastlane.tools/actions -# -# For a list of all available plugins, check out -# -# https://docs.fastlane.tools/plugins/available-plugins -# - -# Uncomment the line if you want fastlane to automatically update itself -# update_fastlane - -default_platform(:android) - -platform :android do - desc "Runs all the tests" - lane :test do - gradle(task: "test") - end - - desc "Submit a new Beta Build to Crashlytics Beta" - lane :beta do - gradle(task: "clean assembleRelease") - crashlytics - - # sh "your_script.sh" - # You can also use other beta testing services here - end - - desc "Deploy a new version to the Google Play" - lane :deploy do - gradle(task: "clean assembleRelease") - upload_to_play_store - end -end diff --git a/fastlane/metadata/android/ar/changelogs/1001.txt b/fastlane/metadata/android/ar/changelogs/1001.txt new file mode 100644 index 0000000000..1df442381d --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/1001.txt @@ -0,0 +1,20 @@ +* أيقونة جديدة من @FabianOvrWrt مع مساهمات من @the-eclectic-dyslexic (#517, #592) +* لوحة تتبع وشريط المسافة قابلة للتخصيص بشكل أكبر بواسطة @arcarum (#486) +* إضافة % لتغيير تخطيط الرموز (#568، #428) +* تحسين السلوك عند ضبط مفتاح تبديل اللغة على تبديل اللغة ولوحة المفاتيح +* إظهار الروابط إلى القواميس الموجودة عند إضافة قاموس +* إضافة تصميم Kaitag بواسطة @alkaitagi (#519) +* إضافة تصميم Probhat بواسطة @fahimscirex (#489) +* عكس ترتيب شريط الأدوات اختياريًا للغات RTL بواسطةcodokie (#557، #574) +* السماح بتخصيص تخطيطات خاصة (اللوحة الرقمية، الهاتف، ...) + * لا يزال تجريبيًا، حيث قد تتغير التخطيطات الأساسية +* تم تحديث Spellchecker.xml ليشمل اللغات التي تتوفر فيها القواميس، ولكن لم يتم تضمينها في التطبيق +* تحديث الترجمات (شكرًا لجميع المترجمين!) +* ترقية ndk بواسطةSyphyr (#560) +* ترقية رمز الملء التلقائي المضمّن بواسطة @arcarum (#595) +* إصلاح مشكلة مربع حوار مفتاح شريط الأدوات (#505) +*إصلاح مشكلة التخطيط التركي (#508) +* إصلاح حالات التبديل الخاطئة عند تدوير شاشة تخصيص الألوان (#563) +* إصلاح مشكلة عدم تحميل الرموز التعبيرية الحديثة (#527) +*إصلاح مشكلة عدم ظهور الأرقام في بعض الحقول (#585) +* بعض الإصلاحات الطفيفة diff --git a/fastlane/metadata/android/ar/changelogs/1003.txt b/fastlane/metadata/android/ar/changelogs/1003.txt new file mode 100644 index 0000000000..665791b885 --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/1003.txt @@ -0,0 +1,9 @@ +* تغيير أيقونات التصحيح التلقائي وتحديد جميع مفاتيح شريط الأدوات بواسطة @codokie (#524, #651) +* إضافة تخطيط Chuvash بواسطة @tenextractor (#677) +* إضافة مفتاح شريط الأدوات بواسطة @codokie (#678) +* تحديث تخطيط Probhat بواسطة @fahimscirex (#628) +* إظهار أيقونات شريط الأدوات في مربع حوار مفتاح شريط الأدوات +* إضافة زر إغلاق في سجل الحافظة بواسطة @codokie (#403, #649) +* إضافة التصميم الروسي (الطالب) بواسطة @Zolax9 (#640) +* جعل لوحة الأرقام على مفتاح الرموز اختيارية بالضغط لفترة طويلة (#588) +* إصلاحات وتحسينات طفيفة، بما في ذلك #632، #637، #638 بواسطة @RHJihan diff --git a/fastlane/metadata/android/ar/changelogs/1004.txt b/fastlane/metadata/android/ar/changelogs/1004.txt new file mode 100644 index 0000000000..1f966f0e59 --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/1004.txt @@ -0,0 +1,7 @@ +- تحديث تخطيط السيريلية الصربية بواسطة @markokocic (#704, #705) +- تحديث تخطيط إستونيا بواسطة @tenextractor (#693) +- إصلاح الإدخالات المكررة في سجل الحافظة بواسطة @codokie (#616, #680) +- قم فقط بإضافة الإدخالات النصية إلى سجل الحافظة بواسطة @codokie (#711) +- صور أفضل في البيانات الوصفية بواسطة @RHJihan (#713) +- ضبط لون الأيقونات بشكل صحيح في مربع حوار تحديد شريط الأدوات بواسطة @codokie (#715, #716) +- إصلاحات أخرى (#684، #723 والمزيد) diff --git a/fastlane/metadata/android/ar/changelogs/2000.txt b/fastlane/metadata/android/ar/changelogs/2000.txt new file mode 100644 index 0000000000..f16111e782 --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/2000.txt @@ -0,0 +1,10 @@ +* إضافة الدعم الأساسي لمفاتيح التعديل +* إضافة وظائف الضغط لفترة طويلة إلى المزيد من مفاتيح شريط الأدوات +* والمزيد من مفاتيح شريط أدوات سجل الحافظة +* جعل شريط أدوات محفوظات الحافظة قابلاً للتخصيص +* السماح بتخصيص كافة الألوان +* إضافة إعداد لإظهار الكلمة التي سيتم إدخالها دائمًا كاقتراح وسط +* إضافة مؤشر قفل الحروف الكبيرة +* إضافة تخطيطات بييمونتي، وماري الشرقية، ومانسي، وتخطيطات موسعة للغة الكانادا والمجرية +* إصلاح النص المقطوع في نافذة المعاينة الرئيسية المنبثقة على بعض الأجهزة +* مزيد من الإصلاحات والتحسينات، راجع ملاحظات الإصدار diff --git a/fastlane/metadata/android/ar/changelogs/2001.txt b/fastlane/metadata/android/ar/changelogs/2001.txt new file mode 100644 index 0000000000..a1b89da5ef --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/2001.txt @@ -0,0 +1,11 @@ +* السماح بتخصيص تخطيطات المفاتيح الوظيفية +* ضبط الرموز قليلاً والمزيد من تخطيطات الرموز +* إضافة خيارات للإظهار/الإخفاء التلقائي لشريط الأدوات +* إضافة إشعار نخب عند نسخ النص +* سلوك مفتاح تبديل اللغة المنفصل عن التمكين +* إضافة النوافذ المنبثقة لمفتاح الفاصلة لتخطيطات الأرقام والهواتف +* جعل التثبيت بالضغط لفترة طويلة في شريط الأدوات اختياريًا +* نقل إعدادات شريط الأدوات إلى قسم منفصل +* إضافة مفتاح علامة التبويب +* فهم ctrl وشريط الأدوات والتسميات الرئيسية الأخرى في التخطيطات +* إصلاحات وتحسينات طفيفة diff --git a/fastlane/metadata/android/ar/changelogs/2002.txt b/fastlane/metadata/android/ar/changelogs/2002.txt new file mode 100644 index 0000000000..3c0f5d64b0 --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/2002.txt @@ -0,0 +1,4 @@ +* إضافة مفتاح شريط أدوات الرموز التعبيرية، بواسطة @codokie (#845، #837) +* تحسينات فيما يتعلق بالحروف المكررة (#225 وربما غيرها) +* تجنب وضع المؤشر داخل الرموز التعبيرية (#859) +* إصلاحات طفيفة للميزات المضافة مؤخرا diff --git a/fastlane/metadata/android/ar/changelogs/2003.txt b/fastlane/metadata/android/ar/changelogs/2003.txt new file mode 100644 index 0000000000..57a418b701 --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/2003.txt @@ -0,0 +1,11 @@ +* تخطيط مفتاح الوظائف قابل للتخصيص +* ضبط الرموز قليلاً والمزيد من تخطيطات الرموز +* الدعم الأساسي لمفاتيح alt، ctrl، fn، meta +* توسيع شريط الأدوات (وظيفة الضغط المطول، التثبيت الاختياري للضغط لفترة طويلة، العرض/الإخفاء التلقائي، شريط أدوات الحافظة الأفضل، ...) +* إضافة مفتاح علامة التبويب +* إضافة مؤشر قفل الحروف الكبيرة +* إضافة تخطيطات لبعض اللغات +* إضافة مفاتيح شريط الأدوات كمفاتيح لوحة المفاتيح +* السماح بتخصيص كافة الألوان +* إشعار نخب عند نسخ النص +* إصلاحات الأخطاء والمزيد من التحسينات، راجع ملاحظات الإصدار الكاملة diff --git a/fastlane/metadata/android/ar/changelogs/2100.txt b/fastlane/metadata/android/ar/changelogs/2100.txt new file mode 100644 index 0000000000..1efb75c63e --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/2100.txt @@ -0,0 +1,8 @@ +* إصلاح تخطيط المفتاح الوظيفي المكسور للأجهزة اللوحية +* إظهار مفتاح تبديل اللغة فقط عندما يكون هناك شيء للتبديل إليه +* جعل الألوان الافتراضية لإعداد "جميع الألوان" عشوائية بدلاً من اللون الرمادي +* السماح بتخصيص تأخر البدء للإيماءات أثناء الكتابة، بواسطةdevycarol +* السماح بتخصيص مفاتيح العملة +* تقليل وقت الضغط لفترة طويلة من أجل Shift -> Caps Lock، بواسطة @devycarol +* توسيع النوافذ المنبثقة المرتفعة في صف الأرقام وتخطيط الرموز، بواسطة @b02860de585071a2 +* إصلاحات وتحسينات طفيفة diff --git a/fastlane/metadata/android/ar/changelogs/2200.txt b/fastlane/metadata/android/ar/changelogs/2200.txt new file mode 100644 index 0000000000..7ba95342b6 --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/2200.txt @@ -0,0 +1,11 @@ +* إضافة القدرة على حفظ / تصدير القوالب المخصصة +* جعل مفاتيح الأسهم على لوحة المفاتيح قابلة للتكرار +* المزيد من مفاتيح شريط أدوات المؤشر (الصفحة لأعلى/لأسفل (/ start/end, word left/right) +* إضافة مفتاح لصق +* تحسين سلوك السحب الرئيسي +* إضافة إعداد تمرير المساحة لتبديل لوحة الأرقام +* إضافة اقتراح الحافظة للنص الذي تم نسخه مؤخرًا +* إلغاء تحديد النص عند الضغط على SELECT KEYS مرة أخرى +* ضبط بعض الألوان في إعدادات Android 12+ +* تعديل المفاتيح المنبثقة المعتمدة على اللغة +* إصلاحات وتحسينات طفيفة diff --git a/fastlane/metadata/android/ar/changelogs/2201.txt b/fastlane/metadata/android/ar/changelogs/2201.txt new file mode 100644 index 0000000000..b16b12ed78 --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/2201.txt @@ -0,0 +1,2 @@ +* إضافة خيارات مرئية لكتابة الإيماءات، بواسطة @devycarol (#944) +* تحديث بعض الأيقونات، بواسطة @ BlackyHawky (#977) diff --git a/fastlane/metadata/android/ar/changelogs/2300.txt b/fastlane/metadata/android/ar/changelogs/2300.txt new file mode 100644 index 0000000000..b13897ad33 --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/2300.txt @@ -0,0 +1,9 @@ +* السماح بتخصيص صف الأرقام ورموز شريط الأدوات والأيقونات ونص شريط المسافة والصف السفلي للرموز التعبيرية وطرق عرض الحافظة +* فصل نمط الأيقونات عن نمط لوحة المفاتيح +* تعطيل إزالة النوافذ المنبثقة الزائدة عن الحاجة بشكل افتراضي (وإضافة إصلاح صغير) +* إضافة أقل عدوانية للكلمات إلى القاموس الشخصي +* عدم الاهتزاز في وضع عدم الإزعاج +* تحسين الأداء عند نسخ نصوص كبيرة +* إصلاح النوافذ المنبثقة لعلامات الترقيم المعطلة جزئيا +* إصلاح بعض المشكلات التي فيها تكرار النص +* أشياء ثانوية والمزيد من إصلاحات الأخطاء diff --git a/fastlane/metadata/android/ar/changelogs/2301.txt b/fastlane/metadata/android/ar/changelogs/2301.txt new file mode 100644 index 0000000000..b13897ad33 --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/2301.txt @@ -0,0 +1,9 @@ +* السماح بتخصيص صف الأرقام ورموز شريط الأدوات والأيقونات ونص شريط المسافة والصف السفلي للرموز التعبيرية وطرق عرض الحافظة +* فصل نمط الأيقونات عن نمط لوحة المفاتيح +* تعطيل إزالة النوافذ المنبثقة الزائدة عن الحاجة بشكل افتراضي (وإضافة إصلاح صغير) +* إضافة أقل عدوانية للكلمات إلى القاموس الشخصي +* عدم الاهتزاز في وضع عدم الإزعاج +* تحسين الأداء عند نسخ نصوص كبيرة +* إصلاح النوافذ المنبثقة لعلامات الترقيم المعطلة جزئيا +* إصلاح بعض المشكلات التي فيها تكرار النص +* أشياء ثانوية والمزيد من إصلاحات الأخطاء diff --git a/fastlane/metadata/android/ar/changelogs/3004.txt b/fastlane/metadata/android/ar/changelogs/3004.txt new file mode 100644 index 0000000000..cb1eb5fdef --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/3004.txt @@ -0,0 +1,11 @@ +* إضافة تخطيطات: Hija'i العربية، العبرية 1452-2، الهندية الصوتية، دارغوا (أوراخي)، بايشاخي، الكرديش +* تحديث بعض التخطيطات +* الدعم الجمع بين اللهجات +* مفتاح شريط أدوات لوحة المفاتيح +* إضافة منبثقات .com +* السماح لضبط الخط المخصص +* إضافة إعداد مقياس الخط +* تحسين تبديل اللغة التلقائي +* إعدادات الإصلاح +* أضف إعدادات لمزيد من ضبط حشوة لوحة المفاتيح، والمساحة التلقائية، والتصحيح التلقائي، و صف الأرقام +* المزيد من الميزات والإصلاحات diff --git a/fastlane/metadata/android/ar/changelogs/3005.txt b/fastlane/metadata/android/ar/changelogs/3005.txt new file mode 100644 index 0000000000..cb1eb5fdef --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/3005.txt @@ -0,0 +1,11 @@ +* إضافة تخطيطات: Hija'i العربية، العبرية 1452-2، الهندية الصوتية، دارغوا (أوراخي)، بايشاخي، الكرديش +* تحديث بعض التخطيطات +* الدعم الجمع بين اللهجات +* مفتاح شريط أدوات لوحة المفاتيح +* إضافة منبثقات .com +* السماح لضبط الخط المخصص +* إضافة إعداد مقياس الخط +* تحسين تبديل اللغة التلقائي +* إعدادات الإصلاح +* أضف إعدادات لمزيد من ضبط حشوة لوحة المفاتيح، والمساحة التلقائية، والتصحيح التلقائي، و صف الأرقام +* المزيد من الميزات والإصلاحات diff --git a/fastlane/metadata/android/ar/changelogs/3006.txt b/fastlane/metadata/android/ar/changelogs/3006.txt new file mode 100644 index 0000000000..cb1eb5fdef --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/3006.txt @@ -0,0 +1,11 @@ +* إضافة تخطيطات: Hija'i العربية، العبرية 1452-2، الهندية الصوتية، دارغوا (أوراخي)، بايشاخي، الكرديش +* تحديث بعض التخطيطات +* الدعم الجمع بين اللهجات +* مفتاح شريط أدوات لوحة المفاتيح +* إضافة منبثقات .com +* السماح لضبط الخط المخصص +* إضافة إعداد مقياس الخط +* تحسين تبديل اللغة التلقائي +* إعدادات الإصلاح +* أضف إعدادات لمزيد من ضبط حشوة لوحة المفاتيح، والمساحة التلقائية، والتصحيح التلقائي، و صف الأرقام +* المزيد من الميزات والإصلاحات diff --git a/fastlane/metadata/android/ar/changelogs/3007.txt b/fastlane/metadata/android/ar/changelogs/3007.txt new file mode 100644 index 0000000000..cb1eb5fdef --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/3007.txt @@ -0,0 +1,11 @@ +* إضافة تخطيطات: Hija'i العربية، العبرية 1452-2، الهندية الصوتية، دارغوا (أوراخي)، بايشاخي، الكرديش +* تحديث بعض التخطيطات +* الدعم الجمع بين اللهجات +* مفتاح شريط أدوات لوحة المفاتيح +* إضافة منبثقات .com +* السماح لضبط الخط المخصص +* إضافة إعداد مقياس الخط +* تحسين تبديل اللغة التلقائي +* إعدادات الإصلاح +* أضف إعدادات لمزيد من ضبط حشوة لوحة المفاتيح، والمساحة التلقائية، والتصحيح التلقائي، و صف الأرقام +* المزيد من الميزات والإصلاحات diff --git a/fastlane/metadata/android/ar/changelogs/3008.txt b/fastlane/metadata/android/ar/changelogs/3008.txt new file mode 100644 index 0000000000..cb1eb5fdef --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/3008.txt @@ -0,0 +1,11 @@ +* إضافة تخطيطات: Hija'i العربية، العبرية 1452-2، الهندية الصوتية، دارغوا (أوراخي)، بايشاخي، الكرديش +* تحديث بعض التخطيطات +* الدعم الجمع بين اللهجات +* مفتاح شريط أدوات لوحة المفاتيح +* إضافة منبثقات .com +* السماح لضبط الخط المخصص +* إضافة إعداد مقياس الخط +* تحسين تبديل اللغة التلقائي +* إعدادات الإصلاح +* أضف إعدادات لمزيد من ضبط حشوة لوحة المفاتيح، والمساحة التلقائية، والتصحيح التلقائي، و صف الأرقام +* المزيد من الميزات والإصلاحات diff --git a/fastlane/metadata/android/ar/changelogs/3100.txt b/fastlane/metadata/android/ar/changelogs/3100.txt new file mode 100644 index 0000000000..fd604b216d --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/3100.txt @@ -0,0 +1,10 @@ +* اقتراح أسماء التطبيقات المثبتة اختياريًا +* اسحب لتبديل فئات الرموز التعبيرية +* عرض إشعار بعد استعادة النسخة الاحتياطية +* زر وأيقونة شريط أدوات أكبر +* إتاحة الفاصلة في النوافذ المنبثقة عند إظهار النوافذ المنبثقة لـ TLD +* إضافة إعداد للون بشرة الرموز التعبيرية الافتراضي +* إضافة رموز مفاتيح لمفاتيح alt و ctrl اليسرى واليمنى +* إضافة تسمية مفتاح "الطابع الزمني" لمفتاح الطابع الزمني الأكثر سهولة +* فهم تسميات المفاتيح الخاصة للنوافذ المنبثقة في التخطيطات البسيطة +* إصلاحات وتحسينات طفيفة diff --git a/fastlane/metadata/android/ar/changelogs/3101.txt b/fastlane/metadata/android/ar/changelogs/3101.txt new file mode 100644 index 0000000000..187fc3e6ca --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/3101.txt @@ -0,0 +1,9 @@ +* اقتراح أسماء التطبيقات المثبتة اختياريًا +* التمرير لتبديل فئات الرموز التعبيرية +* عرض إشعار بعد استعادة النسخة الاحتياطية +* إتاحة الفاصلة في النوافذ المنبثقة عند عرض النوافذ المنبثقة لـ TLD +* إضافة إعداد للون البشرة الافتراضي للرموز التعبيرية +* إضافة رموز مفاتيح لمفاتيح alt و ctrl اليسرى واليمنى +* إضافة تسمية مفتاح "الطابع الزمني" لمفتاح الطابع الزمني الذي يسهل الوصول إليه +* فهم تسميات المفاتيح الخاصة للنوافذ المنبثقة في التخطيطات البسيطة +* إصلاحات وتحسينات طفيفة diff --git a/fastlane/metadata/android/ar/changelogs/3200.txt b/fastlane/metadata/android/ar/changelogs/3200.txt new file mode 100644 index 0000000000..4669661a7e --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/3200.txt @@ -0,0 +1,10 @@ +* إضافة أوضاع شريط الأدوات (تسمح بإخفاء شريط الأدوات) +* إضافة بعض متغيرات الرموز التعبيرية المفقودة +* تحسين شاشة النوع الفرعي وحوار القاموس +* إصلاح الألوان عند فرض الوضع الداكن +* نقل معظم إعدادات مقياس الوضع الرأسي/الأفقي إلى حوار +* إزالة ترجمات السلاسل الموسومة على أنها غير قابلة للترجمة +* إصلاح اتجاه سهم الشاشة التالية للغات اليمين إلى اليسار +* إصلاح التحميل الصحيح للغة العبرية على أندرويد 15 +* توفير لوحة مفاتيح أساسية على الأقل عندما لا تعمل المكتبة على الإطلاق +* إصلاحات أخطاء طفيفة diff --git a/fastlane/metadata/android/ar/changelogs/3201.txt b/fastlane/metadata/android/ar/changelogs/3201.txt new file mode 100644 index 0000000000..4669661a7e --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/3201.txt @@ -0,0 +1,10 @@ +* إضافة أوضاع شريط الأدوات (تسمح بإخفاء شريط الأدوات) +* إضافة بعض متغيرات الرموز التعبيرية المفقودة +* تحسين شاشة النوع الفرعي وحوار القاموس +* إصلاح الألوان عند فرض الوضع الداكن +* نقل معظم إعدادات مقياس الوضع الرأسي/الأفقي إلى حوار +* إزالة ترجمات السلاسل الموسومة على أنها غير قابلة للترجمة +* إصلاح اتجاه سهم الشاشة التالية للغات اليمين إلى اليسار +* إصلاح التحميل الصحيح للغة العبرية على أندرويد 15 +* توفير لوحة مفاتيح أساسية على الأقل عندما لا تعمل المكتبة على الإطلاق +* إصلاحات أخطاء طفيفة diff --git a/fastlane/metadata/android/ar/changelogs/3300.txt b/fastlane/metadata/android/ar/changelogs/3300.txt new file mode 100644 index 0000000000..67846d6033 --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/3300.txt @@ -0,0 +1,11 @@ +- عرض الاقتراحات بأحرف كبيرة عند الضغط على مفتاح Shift +- إضافة رموز مفاتيح لبث النوايا +- عرض أوصاف الرموز التعبيرية اختياريًا، يتطلب قاموس رموز تعبيرية +- تحسين التعامل مع لوحة المفاتيح المادية +- إضافة خيار "إخفاء لوحة المفاتيح" عند التمرير على المساحة الرأسية +- إضافة نوع فرعي لاتيني +- السماح بإيقاف تشغيل اقتراحات الرموز التعبيرية عند إضافة قاموس رموز تعبيرية +- إصلاح الرموز التعبيرية المفقودة في لوحة المفاتيح المقسمة +- إزالة الرموز التعبيرية التي لا يُفترض استخدامها بمفردها +- إصلاح المشكلات المتعلقة بالقائمة السوداء +- إصلاح سلوك مسافة للخلف مع بعض الرموز التعبيرية diff --git a/fastlane/metadata/android/ar/changelogs/3301.txt b/fastlane/metadata/android/ar/changelogs/3301.txt new file mode 100644 index 0000000000..67846d6033 --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/3301.txt @@ -0,0 +1,11 @@ +- عرض الاقتراحات بأحرف كبيرة عند الضغط على مفتاح Shift +- إضافة رموز مفاتيح لبث النوايا +- عرض أوصاف الرموز التعبيرية اختياريًا، يتطلب قاموس رموز تعبيرية +- تحسين التعامل مع لوحة المفاتيح المادية +- إضافة خيار "إخفاء لوحة المفاتيح" عند التمرير على المساحة الرأسية +- إضافة نوع فرعي لاتيني +- السماح بإيقاف تشغيل اقتراحات الرموز التعبيرية عند إضافة قاموس رموز تعبيرية +- إصلاح الرموز التعبيرية المفقودة في لوحة المفاتيح المقسمة +- إزالة الرموز التعبيرية التي لا يُفترض استخدامها بمفردها +- إصلاح المشكلات المتعلقة بالقائمة السوداء +- إصلاح سلوك مسافة للخلف مع بعض الرموز التعبيرية diff --git a/fastlane/metadata/android/ar/changelogs/3400.txt b/fastlane/metadata/android/ar/changelogs/3400.txt new file mode 100644 index 0000000000..6525cc147a --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/3400.txt @@ -0,0 +1,5 @@ +- حدّ عدد الرموز التعبيرية المقترحة في شريط الاقتراحات إلى رمز واحد (إذا أمكن) +- إصلاح إدراج المسافات الخاطئ +- إصلاح النص الأبيض على خلفية بيضاء في بعض الأجهزة +- إصلاح الاقتراحات الخاطئة التي تحتوي على علامة الاقتباس المفردة `'` +- إضافة حرف الشوا ɜ للجمع إلى اللغة الإيطالية diff --git a/fastlane/metadata/android/ar/changelogs/3501.txt b/fastlane/metadata/android/ar/changelogs/3501.txt new file mode 100644 index 0000000000..194e47d3c1 --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/3501.txt @@ -0,0 +1,3 @@ +- إصلاحات الأعطال +- إصلاح التصحيح التلقائي الخاطئ الذي تم تقديمه في الإصدار 3.4 +- الاهتزاز عند المسافة وحذف التمرير إذا تم التمكين diff --git a/fastlane/metadata/android/ar/changelogs/3600.txt b/fastlane/metadata/android/ar/changelogs/3600.txt new file mode 100644 index 0000000000..0d0c26630d --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/3600.txt @@ -0,0 +1,12 @@ +* إضافة بحث عن الرموز التعبيرية المضمنة +* تذكر اللغة / النوع الفرعي اختياريًا لكل تطبيق +* إصلاحات وتحسينات ردود الفعل اللمسية +* الاحتفاظ بالحافظة غير المثبتة عند إعادة تشغيل التطبيق +* عرض إدخالات الحافظة المثبتة أخيرًا اختياريًا +* إضافة صفوف سفلية اختيارية للرموز التعبيرية والحافظة +* إضافة زر لرفض الاقتراحات المضمنة +* إضافة البنغالية خيبرو +* إضافة الميراندية +* حل بديل لمشاكل لوحة المفاتيح المادية +* الروابط إلى القواميس تذهب الآن مباشرة إلى الملف +* إصلاحات وتحسينات طفيفة مختلفة diff --git a/fastlane/metadata/android/ar/changelogs/3601.txt b/fastlane/metadata/android/ar/changelogs/3601.txt new file mode 100644 index 0000000000..0d0c26630d --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/3601.txt @@ -0,0 +1,12 @@ +* إضافة بحث عن الرموز التعبيرية المضمنة +* تذكر اللغة / النوع الفرعي اختياريًا لكل تطبيق +* إصلاحات وتحسينات ردود الفعل اللمسية +* الاحتفاظ بالحافظة غير المثبتة عند إعادة تشغيل التطبيق +* عرض إدخالات الحافظة المثبتة أخيرًا اختياريًا +* إضافة صفوف سفلية اختيارية للرموز التعبيرية والحافظة +* إضافة زر لرفض الاقتراحات المضمنة +* إضافة البنغالية خيبرو +* إضافة الميراندية +* حل بديل لمشاكل لوحة المفاتيح المادية +* الروابط إلى القواميس تذهب الآن مباشرة إلى الملف +* إصلاحات وتحسينات طفيفة مختلفة diff --git a/fastlane/metadata/android/ar/changelogs/3602.txt b/fastlane/metadata/android/ar/changelogs/3602.txt new file mode 100644 index 0000000000..0d0c26630d --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/3602.txt @@ -0,0 +1,12 @@ +* إضافة بحث عن الرموز التعبيرية المضمنة +* تذكر اللغة / النوع الفرعي اختياريًا لكل تطبيق +* إصلاحات وتحسينات ردود الفعل اللمسية +* الاحتفاظ بالحافظة غير المثبتة عند إعادة تشغيل التطبيق +* عرض إدخالات الحافظة المثبتة أخيرًا اختياريًا +* إضافة صفوف سفلية اختيارية للرموز التعبيرية والحافظة +* إضافة زر لرفض الاقتراحات المضمنة +* إضافة البنغالية خيبرو +* إضافة الميراندية +* حل بديل لمشاكل لوحة المفاتيح المادية +* الروابط إلى القواميس تذهب الآن مباشرة إلى الملف +* إصلاحات وتحسينات طفيفة مختلفة diff --git a/fastlane/metadata/android/ar/changelogs/3603.txt b/fastlane/metadata/android/ar/changelogs/3603.txt new file mode 100644 index 0000000000..0d0c26630d --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/3603.txt @@ -0,0 +1,12 @@ +* إضافة بحث عن الرموز التعبيرية المضمنة +* تذكر اللغة / النوع الفرعي اختياريًا لكل تطبيق +* إصلاحات وتحسينات ردود الفعل اللمسية +* الاحتفاظ بالحافظة غير المثبتة عند إعادة تشغيل التطبيق +* عرض إدخالات الحافظة المثبتة أخيرًا اختياريًا +* إضافة صفوف سفلية اختيارية للرموز التعبيرية والحافظة +* إضافة زر لرفض الاقتراحات المضمنة +* إضافة البنغالية خيبرو +* إضافة الميراندية +* حل بديل لمشاكل لوحة المفاتيح المادية +* الروابط إلى القواميس تذهب الآن مباشرة إلى الملف +* إصلاحات وتحسينات طفيفة مختلفة diff --git a/fastlane/metadata/android/ar/full_description.txt b/fastlane/metadata/android/ar/full_description.txt new file mode 100644 index 0000000000..27b361ad97 --- /dev/null +++ b/fastlane/metadata/android/ar/full_description.txt @@ -0,0 +1,30 @@ +HeliBoard هو عبارة عن لوحة مفاتيح مفتوحة المصدر تهتم بالخصوصية، وتعتمد على AOSP / OpenBoard. +لا تستخدم إذن الإنترنت، وبالتالي فهو غير متصل بالإنترنت بنسبة 100%. + +المميزات: +
    +
  • أضف قواميس للاقتراحات والتدقيق الإملائي
  • +
      +
    • قم ببناء قاموس خاص بك، أو احصل عليه هنا، أو في القسم التجريبي (قد تختلف الجودة)
    • +
    • يمكن استخدام قواميس إضافية للرموز التعبيرية أو الرموز العلمية لتقديم اقتراحات (على غرار "البحث عن الرموز التعبيرية")
    • +
    • لاحظ أنه بالنسبة للتخطيطات الكورية، تعمل الاقتراحات فقط باستخدام هذا القاموس، والأدوات الموجودة في مستودع القاموس غير قادرين على إنشاء قواميس صالحة للعمل
    • +
    +
  • تخصيص سمات لوحة المفاتيح (النمط والألوان وصورة الخلفية)
  • +
      +
    • يمكنه متابعة إعداد النهار/الليل للنظام على نظام التشغيل Android 10+ (وفي بعض إصدارات Android 9)
    • +
    • يمكنه متابعة الألوان الديناميكية لنظام التشغيل Android 12+
    • +
    +
  • تخصيص لوحة المفاتيح تخطيطات (متوفرة فقط عند تعطيل استخدام لغات النظام)
  • +
  • تخصيص تخطيطات خاصة، مثل الرموز أو الأرقام أو تخطيط المفاتيح الوظيفية
  • +
  • الكتابة بلغات متعددة
  • +
  • الكتابة بالتمرير (فقط مع مكتبة المصادر المغلقة ☹️)
  • + +
  • سجل الحافظة
  • +
  • وضع اليد الواحدة
  • +
  • تقسيم لوحة المفاتيح (متاح فقط إذا كانت الشاشة كبيرة بدرجة كافية)
  • +
  • لوحة الأرقام
  • +
  • النسخ الاحتياطي واستعادة إعداداتك وبيانات الكلمات / السجل المستفادة
  • +
diff --git a/fastlane/metadata/android/ar/short_description.txt b/fastlane/metadata/android/ar/short_description.txt new file mode 100644 index 0000000000..1a70a647da --- /dev/null +++ b/fastlane/metadata/android/ar/short_description.txt @@ -0,0 +1 @@ +لوحة مفاتيح مفتوحة المصدر قابلة للتخصيص diff --git a/fastlane/metadata/android/ar/title.txt b/fastlane/metadata/android/ar/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/ar/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/bg/full_description.txt b/fastlane/metadata/android/bg/full_description.txt new file mode 100644 index 0000000000..0670c31dd7 --- /dev/null +++ b/fastlane/metadata/android/bg/full_description.txt @@ -0,0 +1,30 @@ +HeliBoard е клавиатура с отворен код, базирана на AOSP / OpenBoard, която е съобразена с поверителността.. +Не използва разрешение за интернет и по този начин е 100% офлайн. + +Възможности: +
    +
  • Добавяне на речници за предложения и проверка на правописа
  • +
      +
    • създайте си сами или ги вземете тук или в секцията експериментални (качеството може да варира)
    • +
    • допълнителни речници за емотикони или научни символи могат да се използват за предоставяне на предложения (подобно на "търсене на емотикони")
    • +
    • имайте предвид, че за корейските клавиатурни подредби предложенията работят само с този речник – инструментите в хранилището с речници не могат да създават работещи речници
    • +
    +
  • Персонализиране на темите на клавиатурата (стил, цветове и фонова снимка)
  • +
      +
    • може да следва дневната/нощната настройка на системата при Android 10+ (и на някои версии на Android 9)
    • +
    • може да следва динамичните цветове за Android 12+
    • +
    +
  • Персонализиране на клавиатурните подредби (достъпно само при изключена опция използване на системните езици)
  • +
  • Персонализиране на специални подредби, като символни, цифрови или функционални клавиши
  • +
  • Многоезично въвеждане
  • +
  • Плъзгащо се въвеждане (само със затворен код библиотека ☹️)
  • +
      +
    • библиотеката не е включена в приложението, тъй като няма налична съвместима библиотека с отворен код
    • +
    • може да бъде извлечена от пакетите GApps ("swypelibs") или изтеглена оттук (кликнете върху файла и след това „raw“ или малкия бутон за изтегляне)
    • +
    +
  • История на клипборда
  • +
  • Режим с една ръка
  • +
  • Разделена клавиатура (достъпна само при достатъчно голям екран)
  • +
  • Цифрова панел
  • +
  • Архивиране и възстановяване на настройките и научените думи / данни от историята
  • +
diff --git a/fastlane/metadata/android/bg/short_description.txt b/fastlane/metadata/android/bg/short_description.txt new file mode 100644 index 0000000000..014e5ba57d --- /dev/null +++ b/fastlane/metadata/android/bg/short_description.txt @@ -0,0 +1 @@ +Персонализирана клавиатура с отворен код diff --git a/fastlane/metadata/android/bg/title.txt b/fastlane/metadata/android/bg/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/bg/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/bn/changelogs/1001.txt b/fastlane/metadata/android/bn/changelogs/1001.txt new file mode 100644 index 0000000000..b139724d8a --- /dev/null +++ b/fastlane/metadata/android/bn/changelogs/1001.txt @@ -0,0 +1,18 @@ +* নতুন আইকন (@FabianOvrWrt, সহায়তায় @the-eclectic-dyslexic)\n +* স্পেসবার ট্র্যাকপ্যাড ও ভাষা বদল আরও কাস্টমাইজযোগ্য (@arcarum)\n +* Shift চাপলে এখন % চিহ্ন দেখা যাবে\n +* ভাষা ও কীবোর্ড একসাথে বদলের সেটিং এখন আরও ভালো কাজ করে\n +* ডিকশনারি যোগের সময় বিদ্যমান ডিকশনারিগুলোর লিংক দেখায়\n +* Kaitag লেআউট যুক্ত হয়েছে (@alkaitagi)\n +* প্রভাত লেআউট যুক্ত হয়েছে (@fahimscirex)\n +* RTL ভাষায় টুলবারের অর্ডার উল্টো করা যাবে (ঐচ্ছিকভাবে)\n +* বিশেষ লেআউট (নাম্বার, ফোন) কাস্টমাইজের সুযোগ (পরীক্ষামূলক)\n +* ডিকশনারি থাকা ভাষাগুলো এখন spellchecker.xml-এ যুক্ত\n +* অনুবাদ হালনাগাদ (সব অনুবাদককে ধন্যবাদ!)\n +* NDK সংস্করণ আপডেট (@Syphyr)\n +* ইনলাইন অটোফিল কোড উন্নত করা হয়েছে (@arcarum)\n +* টুলবার কী ডায়ালগের সমস্যা ঠিক করা হয়েছে\n +* তুর্কি লেআউট সংক্রান্ত সমস্যা ঠিক করা হয়েছে\n +* কালার কাস্টমাইজ স্ক্রিন ঘোরালে ভুল switch স্টেট দেখানোর সমস্যা ঠিক\n +* Recent ইমোজি লোড না হওয়ার সমস্যা ঠিক\n +* কিছু ছোটখাটো বাগ ফিক্স করা হয়েছে diff --git a/fastlane/metadata/android/bn/changelogs/1003.txt b/fastlane/metadata/android/bn/changelogs/1003.txt new file mode 100644 index 0000000000..f47529d442 --- /dev/null +++ b/fastlane/metadata/android/bn/changelogs/1003.txt @@ -0,0 +1,46 @@ +নতুন অ্যাপ আইকন যুক্ত হয়েছে — ডিজাইন করেছেন @FabianOvrWrt, সহায়তায় ছিলেন @the-eclectic-dyslexic (#517, #592) + +স্পেসবার ট্র্যাকপ্যাড ও ভাষা পরিবর্তনের ফিচার আরও কাস্টমাইজযোগ্য করা হয়েছে (@arcarum, #486) + +Shift চাপলে এখন % চিহ্ন দেখা যাবে (#568, #428) + +ভাষা পরিবর্তন বাটনে একসাথে ভাষা ও কীবোর্ড বদলের সেটিং থাকলে এখন আরও ভালভাবে কাজ করবে + +নতুন ডিকশনারি যোগ করার সময় পূর্বে যুক্ত থাকা ডিকশনারিগুলোর লিংক দেখাবে + +নতুন Kaitag কীবোর্ড লেআউট যুক্ত হয়েছে (@alkaitagi, #519) + +Probhat (প্রভাত) লেআউট যুক্ত হয়েছে (@fahimscirex, #489) + +ডান-থেকে-বাম (RTL) ভাষার জন্য টুলবারের অর্ডার উল্টানো যাবে (ঐচ্ছিকভাবে) (@codokie, #557, #574) + +বিশেষ কীবোর্ড লেআউট (যেমন নাম্বারপ্যাড, ফোন প্যাড) কাস্টমাইজ করার সুযোগ যুক্ত হয়েছে + +⚠️ এখনো পরীক্ষামূলক, কারণ এই লেআউটগুলো ভবিষ্যতে পরিবর্তিত হতে পারে + + +spellchecker.xml ফাইলে এমন ভাষাগুলো যুক্ত হয়েছে যেগুলোর ডিকশনারি আলাদাভাবে পাওয়া যায়, কিন্তু অ্যাপের সাথে থাকে না + +অনুবাদ আপডেট হয়েছে — সকল অনুবাদককে ধন্যবাদ! + +NDK ভার্সন আপগ্রেড করা হয়েছে (@Syphyr, #560) + +Inline Autofill কোড আপডেট করা হয়েছে (@arcarum, #595) + + + +--- + +🛠️ বাগ ফিক্স ও উন্নয়নসমূহ: + +টুলবার কাস্টমাইজ করার সময় key ডায়ালগ কাজ না করা সমস্যা ঠিক করা হয়েছে (#505) + +তুর্কি কীবোর্ড লেআউটের সমস্যা ঠিক করা হয়েছে (#508) + +কালার কাস্টমাইজ স্ক্রিন ঘোরালে ভুল switch স্টেট দেখানোর সমস্যা ঠিক করা হয়েছে (#563) + +Recent Emojis না লোড হওয়ার সমস্যা ঠিক করা হয়েছে (#527) + +কিছু নির্দিষ্ট জায়গায় নাম্বার না দেখানোর সমস্যা ঠিক করা হয়েছে (#585) + +অন্যান্য কিছু ছোটখাটো সমস্যা সমাধান করা হয়েছে diff --git a/fastlane/metadata/android/bn/full_description.txt b/fastlane/metadata/android/bn/full_description.txt new file mode 100644 index 0000000000..4912bc372c --- /dev/null +++ b/fastlane/metadata/android/bn/full_description.txt @@ -0,0 +1,30 @@ +হেলিবোর্ড গোপনীয়তা-সচেতন ওপেন সোর্স কিবোর্ড যার উৎস অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্ট এবং ওপেনবোর্ড। বাংলা ভাষার জন্য এতে ইউনিজয়, প্রভাত, অক্ষর, ইনস্ক্রিপ্ট, বৈশাখী লেআউট যুক্ত আছে। +এটি ইন্টারনেটের অনুমতি ব্যবহার করে না, তাই ১০০% অফলাইন। + +সুবিধা: +
    +
  • পরামর্শ এবং বানান পরীক্ষার জন্য অভিধান সংযুক্তি
  • +
      +
    • নিজে তৈরি করুন অথবা এখানে উপলব্ধ, অথবা পরীক্ষামূলক বিভাগ (গুণমান পরিবর্তিত হতে পারে)
    • +
    • ইমোজি বা বৈজ্ঞানিক প্রতীকের জন্য অতিরিক্ত অভিধান পরামর্শ দেওয়ার জন্য ব্যবহার করা যেতে পারে ("ইমোজি অনুসন্ধান" এর মতো)
    • +
    • উল্লেখ্য, কোরিয়ান লেআউটের জন্য শুধু এই অভিধান কার্যকর, অভিধান সংগ্রহস্থলের সরঞ্জাম কার্যকর অভিধান তৈরি করতে সক্ষম নয়
    • +
    +
  • কিবোর্ড থিম নিজস্বীকরণ (শৈলী, রং এবং পটভূমির ছবি)
  • +
      +
    • অ্যান্ড্রয়েড ১০+ (এবং অ্যান্ড্রয়েড 9 এর কিছু সংস্করণে) সিস্টেমের দিন/রাতের সেটিং অনুসরণ করতে পারে
    • +
    • অ্যান্ড্রয়েড ১২+ এর জন্য পরিবর্তনশীল রং অনুসরণ করতে পারে
    • +
    +
  • কিবোর্ড লেআউট নিজস্বীকরণ (কেবল সিস্টেম ভাষা ব্যবহার নিষ্ক্রিয় থাকলে উপলব্ধ)
  • +
  • বিশেষ লেআউট, প্রতীক, নম্বর, ফাংশনাল বোতামের লেআউট প্রভৃতি নিজস্বীকরণ
  • +
  • বহুভাষী টাইপিং
  • +
  • অঙ্গুলিহেলন টাইপিং (কেবল ক্লোজড-সোর্স লাইব্রেরির সাথে উপলব্ধ ☹️)
  • +
      +
    • লাইব্রেরি অ্যাপে অন্তর্ভুক্ত নয়, কারণ কোনো সামঞ্জস্যপূর্ণ ওপেন সোর্স লাইব্রেরি উপলব্ধ নয়
    • +
    • GApps প্যাকেজ ("swypelibs") থেকে নিষ্কাশ করা যেতে পারে, অথবা এখানে ডাউনলোড করা যেতে পারে (ফাইলে ক্লিক করুন এবং তারপর “raw” বা ছোট ডাউনলোড বোতামে ক্লিক করুন)
    • +
    +
  • ক্লিপবোর্ড ইতিহাস
  • +
  • এক-হস্ত মোড
  • +
  • বিভক্ত কিবোর্ড (বড়ো স্ক্রিনের ক্ষেত্রে উপলব্দ)
  • +
  • নম্বরপ্যাড
  • +
  • সেটিংস এবং শেখা শব্দ/ইতিহাস ডেটা ব্যাকআপ এবং পুনরুদ্ধার
  • +
diff --git a/fastlane/metadata/android/bn/short_description.txt b/fastlane/metadata/android/bn/short_description.txt new file mode 100644 index 0000000000..fd4df3b99d --- /dev/null +++ b/fastlane/metadata/android/bn/short_description.txt @@ -0,0 +1 @@ +নিজস্বীকরণের সুবিধাসহ ইউনিজয় লেআউটযুক্ত ওপেন-সোর্স কিবোর্ড diff --git a/fastlane/metadata/android/bn/title.txt b/fastlane/metadata/android/bn/title.txt new file mode 100644 index 0000000000..e7a5c2cac0 --- /dev/null +++ b/fastlane/metadata/android/bn/title.txt @@ -0,0 +1 @@ +হেলিবোর্ড diff --git a/fastlane/metadata/android/ca/changelogs/1001.txt b/fastlane/metadata/android/ca/changelogs/1001.txt new file mode 100644 index 0000000000..28148859f6 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/1001.txt @@ -0,0 +1,20 @@ +* nova icona (#517, #592) +* barra d'espai (#486) +* afegit % a símbols (#568, #428) +* millor comport. quan tecla canvi idioma està config. per canviar l'idioma i el teclat +* mostra enllaços als dics. existents en afegir un dic. +* Kaitag (#519) +* Probhat (#489) +* invertir ordre barra (#557, #574) +* permet diss. especials + Experim. +* act. spellchecker.xml +* act. traducs. +* ndk (#560) +* d'auto-emplenament (#595) +* sol. (#505) +* sol. (#508) +* corr. (#563) +* sol. (#527) +* sol. (#585) +* correcs. menors diff --git a/fastlane/metadata/android/ca/changelogs/1003.txt b/fastlane/metadata/android/ca/changelogs/1003.txt new file mode 100644 index 0000000000..e03ee3907f --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/1003.txt @@ -0,0 +1,9 @@ +* canviar icones per auto-correcció i seleccionar totes les tecles d'eines @codokie #524 #651 +* afe. disseny txuvaix @tenextractor #677 +* afe. tecla de tallar a eines @codokie #678 +* actualitzar disseny Probhat @fahimscirex #628 +* mostrar icones d'eines al diàleg de la barra +* afe. botó tancar a historial de porta-retalls @codokie #403 #649 +* afe. disseny rus estudiant @Zolax9 #640 +* fer opcional la premuda llarga de símbols a teclat numèric #588 +* correccions i millores #632 #637 #638 @RHJihan diff --git a/fastlane/metadata/android/ca/changelogs/1004.txt b/fastlane/metadata/android/ca/changelogs/1004.txt new file mode 100644 index 0000000000..5f8b18d55d --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/1004.txt @@ -0,0 +1,7 @@ +- actualitzar disseny ciríl·lic serbi per @markokocic (#704, #705) +- actualitzar disseny d'Estònia per @tenextractor (#693) +- arreglar entrades duplicades a l'historial del porta-retalls per @codokie (#616, #680) +- només afegeix entrades de text a l'historial del porta-retalls per @codokie (#711) +- millors imatges a les metadades de @RHJihan (#713) +- establir correctament el color d'icones al diàleg de selecció de la barra d'eines per @codokie (#715, #716) +- altres correccions (#684, #723 i més) diff --git a/fastlane/metadata/android/ca/changelogs/2000.txt b/fastlane/metadata/android/ca/changelogs/2000.txt new file mode 100644 index 0000000000..1910c29ed3 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/2000.txt @@ -0,0 +1,10 @@ +* af. suport bàsic per a les tecles modificadores +* af. funcions de premuda llarga a més tecles d'eines +* més tecles a la barra d'eines historial del porta-retalls +* fer personalitzable barra d'eines historial porta-retalls +* permet personalitzar tots els colors +* af. config. per mostrar sempre suggeriment central +* af. indicador bl. majs. +* af. idiomes i dissenys ampliats +* corregir text tallat a finestra emergent de vista prèvia tecles +* més correccions i millores, vegeu les notes de la versió diff --git a/fastlane/metadata/android/ca/changelogs/2001.txt b/fastlane/metadata/android/ca/changelogs/2001.txt new file mode 100644 index 0000000000..c5ab48c85b --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/2001.txt @@ -0,0 +1,11 @@ +* permet personalitzar dissenys tecles funcio +* ajustar símbols i més dissenys de símbols +* afe. opcions a barra eines per auto mostrar/amagar +* afe. notificació en copiar +* separar comportament de tecla d'idioma +* afe. emergents de tecles de comes a nombres i telefon +* fixació de premuda llarga a barra eines opcional +* moure config. de barra eines a secció separada +* afe. tecla de pestanya +* entendre ctrl, barra d'eines i altres etiquetes de tecles a disposicions +* correccions i millores menors diff --git a/fastlane/metadata/android/ca/changelogs/2002.txt b/fastlane/metadata/android/ca/changelogs/2002.txt new file mode 100644 index 0000000000..67e19a5e00 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/2002.txt @@ -0,0 +1,4 @@ +* afegir la tecla de la barra d'eines emoji, de @codokie (#845, #837) +* millores pel que fa a les lletres duplicades (núm. 225 i potser altres) +* evitar col·locar el cursor dins dels emojis (#859) +* correccions menors per a les funcions afegides recentment diff --git a/fastlane/metadata/android/ca/changelogs/2003.txt b/fastlane/metadata/android/ca/changelogs/2003.txt new file mode 100644 index 0000000000..6fd60563a3 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/2003.txt @@ -0,0 +1,11 @@ +* disseny de tecles funcionals personalitzable +* ajust símbols i més dissenys +* suport per a tecles alt, ctrl, fn i meta +* estendre barra eines (premuda llarga i fixació opcional, auto mostra/amaga, millor barra eines de porta-retalls...) +* afe. tecla de pestanya +* afe. indicador de bloq. majs. +* afe. dissenys alguns idiomes +* afe. tecles barra eines com a tecles teclat +* permet personalitzar tots els colors +* notificació en copiar text +* correcs. errors i més millores, consulteu notes de versió diff --git a/fastlane/metadata/android/ca/changelogs/2100.txt b/fastlane/metadata/android/ca/changelogs/2100.txt new file mode 100644 index 0000000000..d5cdbd59e5 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/2100.txt @@ -0,0 +1,8 @@ +* arreglar disposició de tecles funcionals trencades +* només mostra tecla de canvi d'idioma quan cal +* fer aleatoris els colors predeterminats per a "tots els colors" en comptes de grisos +* permet personalitzar retard d'inici a gestos durant escriptura, per @devycarol +* permet personalitzar tecles divisa +* reduir temps premuda llarga per majs. -> bloq. majs. de @devycarol +* estendre finestres emergents de superíndex a fila numèrica i símbols, per @b02860de585071a2 +* correccions i millores menors diff --git a/fastlane/metadata/android/ca/changelogs/2200.txt b/fastlane/metadata/android/ca/changelogs/2200.txt new file mode 100644 index 0000000000..8655f83dd1 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/2200.txt @@ -0,0 +1,11 @@ +* afe. desar/exportar temes personals +* repetir fletxes de teclat +* més tecles barra eines de cursor (pàg. dalt/baix/inici/final, paraula esquerra/dreta) +* afe. tecla enganxar +* millor lliscament de tecles +* afe. configuració lliscament espacial per canviar teclat numèric +* afe. suggeriment porta-retalls al text copiat +* desseleccionar text en prémer de nou tecles de selecció +* afinar alguns colors a config. Android 12+ +* ajustar tecles emergents depenent d'idioma +* correccions i millores menors diff --git a/fastlane/metadata/android/ca/changelogs/2201.txt b/fastlane/metadata/android/ca/changelogs/2201.txt new file mode 100644 index 0000000000..b465d54975 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/2201.txt @@ -0,0 +1,2 @@ +* afegir opcions visuals per escriptura gestual, de @devycarol (#944) +* actualitzar algunes icones, per @BlackyHawky (#977) diff --git a/fastlane/metadata/android/ca/changelogs/2300.txt b/fastlane/metadata/android/ca/changelogs/2300.txt new file mode 100644 index 0000000000..42cda5e66c --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/2300.txt @@ -0,0 +1,9 @@ +* permet personalitzar fila de nombres, codis de barres d'eines, icones, text de barra espai., fila inferior per a veure emojis i porta-retalls +* separa estil d'icona d'estil de teclat +* desactiva eliminació d'emergents redundants per defecte i afegir petita solució +* addició menys agressiva de paraules a dic. personal +* no vibra a mode No molestar +* millor rendiment en copiar text gran +* corregir finestres emergents de puntuació trencades +* sol. problemes text duplicat +* correcció errors menors diff --git a/fastlane/metadata/android/ca/changelogs/2301.txt b/fastlane/metadata/android/ca/changelogs/2301.txt new file mode 100644 index 0000000000..42cda5e66c --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/2301.txt @@ -0,0 +1,9 @@ +* permet personalitzar fila de nombres, codis de barres d'eines, icones, text de barra espai., fila inferior per a veure emojis i porta-retalls +* separa estil d'icona d'estil de teclat +* desactiva eliminació d'emergents redundants per defecte i afegir petita solució +* addició menys agressiva de paraules a dic. personal +* no vibra a mode No molestar +* millor rendiment en copiar text gran +* corregir finestres emergents de puntuació trencades +* sol. problemes text duplicat +* correcció errors menors diff --git a/fastlane/metadata/android/ca/changelogs/3004.txt b/fastlane/metadata/android/ca/changelogs/3004.txt new file mode 100644 index 0000000000..4f0c8df169 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/3004.txt @@ -0,0 +1,11 @@ +* Afeg. dissenys: àrab Hija'i, hebreu 1452-2, fonètica hindi, Dargwa (Urakhi), Baishakhi, kurd +* Actu. dissenys +* Suport per combinar accents +* Tecla dividida de la barra d'eines del teclat +* Afeg. finestres emergents .com +* Permet configurar lletra personalitzada +* Afeg. la configuració d'escala de lletra +* Millorar el canvi automàtic d'idioma +* Revisada configuració +* Afeg. paràmetres per ajustar més el farciment del teclat, l'espai automàtic, la correcció automàtica, la fila de nombres +* Més… diff --git a/fastlane/metadata/android/ca/changelogs/3005.txt b/fastlane/metadata/android/ca/changelogs/3005.txt new file mode 100644 index 0000000000..4f0c8df169 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/3005.txt @@ -0,0 +1,11 @@ +* Afeg. dissenys: àrab Hija'i, hebreu 1452-2, fonètica hindi, Dargwa (Urakhi), Baishakhi, kurd +* Actu. dissenys +* Suport per combinar accents +* Tecla dividida de la barra d'eines del teclat +* Afeg. finestres emergents .com +* Permet configurar lletra personalitzada +* Afeg. la configuració d'escala de lletra +* Millorar el canvi automàtic d'idioma +* Revisada configuració +* Afeg. paràmetres per ajustar més el farciment del teclat, l'espai automàtic, la correcció automàtica, la fila de nombres +* Més… diff --git a/fastlane/metadata/android/ca/changelogs/3006.txt b/fastlane/metadata/android/ca/changelogs/3006.txt new file mode 100644 index 0000000000..4f0c8df169 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/3006.txt @@ -0,0 +1,11 @@ +* Afeg. dissenys: àrab Hija'i, hebreu 1452-2, fonètica hindi, Dargwa (Urakhi), Baishakhi, kurd +* Actu. dissenys +* Suport per combinar accents +* Tecla dividida de la barra d'eines del teclat +* Afeg. finestres emergents .com +* Permet configurar lletra personalitzada +* Afeg. la configuració d'escala de lletra +* Millorar el canvi automàtic d'idioma +* Revisada configuració +* Afeg. paràmetres per ajustar més el farciment del teclat, l'espai automàtic, la correcció automàtica, la fila de nombres +* Més… diff --git a/fastlane/metadata/android/ca/changelogs/3007.txt b/fastlane/metadata/android/ca/changelogs/3007.txt new file mode 100644 index 0000000000..4f0c8df169 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/3007.txt @@ -0,0 +1,11 @@ +* Afeg. dissenys: àrab Hija'i, hebreu 1452-2, fonètica hindi, Dargwa (Urakhi), Baishakhi, kurd +* Actu. dissenys +* Suport per combinar accents +* Tecla dividida de la barra d'eines del teclat +* Afeg. finestres emergents .com +* Permet configurar lletra personalitzada +* Afeg. la configuració d'escala de lletra +* Millorar el canvi automàtic d'idioma +* Revisada configuració +* Afeg. paràmetres per ajustar més el farciment del teclat, l'espai automàtic, la correcció automàtica, la fila de nombres +* Més… diff --git a/fastlane/metadata/android/ca/changelogs/3008.txt b/fastlane/metadata/android/ca/changelogs/3008.txt new file mode 100644 index 0000000000..4f0c8df169 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/3008.txt @@ -0,0 +1,11 @@ +* Afeg. dissenys: àrab Hija'i, hebreu 1452-2, fonètica hindi, Dargwa (Urakhi), Baishakhi, kurd +* Actu. dissenys +* Suport per combinar accents +* Tecla dividida de la barra d'eines del teclat +* Afeg. finestres emergents .com +* Permet configurar lletra personalitzada +* Afeg. la configuració d'escala de lletra +* Millorar el canvi automàtic d'idioma +* Revisada configuració +* Afeg. paràmetres per ajustar més el farciment del teclat, l'espai automàtic, la correcció automàtica, la fila de nombres +* Més… diff --git a/fastlane/metadata/android/ca/changelogs/3100.txt b/fastlane/metadata/android/ca/changelogs/3100.txt new file mode 100644 index 0000000000..c10c63c185 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/3100.txt @@ -0,0 +1,10 @@ +* opcional suggerir noms de les apps instal·lades +* lliscar per canviar les categs. d'emojis +* mostrar toast en restaurar la còpia de seg. +* botó i icona de la barra d'eines més grans +* fer la coma accessible a les finestres emergents de TLD +* afegir config. per a tema predet. dels emojis +* afegir codis de tecla per a les tecles alt i ctrl esq. i dreta +* afegir etiqueta «timestamp» per fer eixa tecla accessible +* etiquetes de tecla especials per a finestres emergents en dissenys senzills +* etc diff --git a/fastlane/metadata/android/ca/changelogs/3101.txt b/fastlane/metadata/android/ca/changelogs/3101.txt new file mode 100644 index 0000000000..2219eeda76 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/3101.txt @@ -0,0 +1,9 @@ +* opcional suggerir noms de les apps instal·lades +* lliscar per canviar les categs. d'emojis +* mostrar toast en restaurar la còpia de seg. +* fer la coma accessible a les finestres emergents de TLD +* afegir config. per a tema predet. dels emojis +* afegir codis de tecla per a les tecles alt i ctrl esq. i dreta +* afegir etiqueta «timestamp» per fer eixa tecla accessible +* etiquetes de tecla especials per a finestres emergents en dissenys senzills +* etc diff --git a/fastlane/metadata/android/ca/changelogs/3200.txt b/fastlane/metadata/android/ca/changelogs/3200.txt new file mode 100644 index 0000000000..e59250252c --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/3200.txt @@ -0,0 +1,10 @@ +* af. modes de barra d'eines (permet ocultar-la) +* af. alguns emojis +* millorar pantalla de subtipus i el diàleg del dicc. +* corr. colors en forçar el mode fosc +* moure la majoria de la configuració d'escala vert/horiz a un diàleg +* elim. les trads. de les cadenes marcades com a no traduïbles +* corr. direcció de fletxa de la pantalla següent a idiomes RTL +* corr. la càrrega correcta de la config. regional hebrea a Android 15 +* tenir almenys un teclat bàsic quan la biblio. no funciona +* corr. etc diff --git a/fastlane/metadata/android/ca/changelogs/3201.txt b/fastlane/metadata/android/ca/changelogs/3201.txt new file mode 100644 index 0000000000..e59250252c --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/3201.txt @@ -0,0 +1,10 @@ +* af. modes de barra d'eines (permet ocultar-la) +* af. alguns emojis +* millorar pantalla de subtipus i el diàleg del dicc. +* corr. colors en forçar el mode fosc +* moure la majoria de la configuració d'escala vert/horiz a un diàleg +* elim. les trads. de les cadenes marcades com a no traduïbles +* corr. direcció de fletxa de la pantalla següent a idiomes RTL +* corr. la càrrega correcta de la config. regional hebrea a Android 15 +* tenir almenys un teclat bàsic quan la biblio. no funciona +* corr. etc diff --git a/fastlane/metadata/android/ca/changelogs/3300.txt b/fastlane/metadata/android/ca/changelogs/3300.txt new file mode 100644 index 0000000000..79c476ee83 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/3300.txt @@ -0,0 +1,11 @@ +- majs. en prémer tecla Majs +- afegir codis de teclat per intencions d'emissió +- opc. mostrar descripcions d'emojis, cal dic. d'emojis +- millorar maneig de teclat maquinari +- afegir l'opció "amagar teclat" en lliscar vert. +- afegir un subtipus llatí +- permetre desactivar suggs. d'emojis en afegir dic. d'emojis +- corregir emojis que falten al teclat dividit +- eliminar emojis que no s'han d'utilitzar sols +- corregir probs. amb llista negra +- corregir el comportament de retrocés amb alguns emojis diff --git a/fastlane/metadata/android/ca/changelogs/3301.txt b/fastlane/metadata/android/ca/changelogs/3301.txt new file mode 100644 index 0000000000..79c476ee83 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/3301.txt @@ -0,0 +1,11 @@ +- majs. en prémer tecla Majs +- afegir codis de teclat per intencions d'emissió +- opc. mostrar descripcions d'emojis, cal dic. d'emojis +- millorar maneig de teclat maquinari +- afegir l'opció "amagar teclat" en lliscar vert. +- afegir un subtipus llatí +- permetre desactivar suggs. d'emojis en afegir dic. d'emojis +- corregir emojis que falten al teclat dividit +- eliminar emojis que no s'han d'utilitzar sols +- corregir probs. amb llista negra +- corregir el comportament de retrocés amb alguns emojis diff --git a/fastlane/metadata/android/ca/changelogs/3400.txt b/fastlane/metadata/android/ca/changelogs/3400.txt new file mode 100644 index 0000000000..acb321efe9 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/3400.txt @@ -0,0 +1,5 @@ +- Limitar el nombre d'emojis suggerits a la tira de suggeriments a un (si és possible) +- Corregir la inserció d'espais incorrecta +- Corregir el text blanc sobre fons blanc en alguns dispositius +- Corregir els suggeriments incorrectes amb `'` +- Afegir el plural schwa ɜ a l'italià diff --git a/fastlane/metadata/android/ca/changelogs/3501.txt b/fastlane/metadata/android/ca/changelogs/3501.txt new file mode 100644 index 0000000000..48b69198d9 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/3501.txt @@ -0,0 +1,3 @@ +- Correcció de bloquejos +- Correcció de la correcció automàtica incorrecta introduïda a la versió 3.4 +- Vibració en espaiar i eliminació del lliscament si està activat diff --git a/fastlane/metadata/android/ca/changelogs/3600.txt b/fastlane/metadata/android/ca/changelogs/3600.txt new file mode 100644 index 0000000000..a6578f07d8 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/3600.txt @@ -0,0 +1,12 @@ +* af. cerca emojis en línia +* opc. recorda l'idioma/subtipus per app +* corrs. i millores de retroalimentació hàptica +* manté el porta-retalls no fixat en reiniciar app +* opc. mostra entrades fixades al porta-retalls al final +* af. emojis opcs. i files inferiors del porta-retalls +* af. un botó per descartar suggs. en línia +* af. bengalí khipro +* af. mirandès +* solució alt. per a probs. amb el teclat maqui. +* els enllaços als diccs. ara van directament al fitxer +* diverses corrs. i millores menors diff --git a/fastlane/metadata/android/ca/changelogs/3601.txt b/fastlane/metadata/android/ca/changelogs/3601.txt new file mode 100644 index 0000000000..a6578f07d8 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/3601.txt @@ -0,0 +1,12 @@ +* af. cerca emojis en línia +* opc. recorda l'idioma/subtipus per app +* corrs. i millores de retroalimentació hàptica +* manté el porta-retalls no fixat en reiniciar app +* opc. mostra entrades fixades al porta-retalls al final +* af. emojis opcs. i files inferiors del porta-retalls +* af. un botó per descartar suggs. en línia +* af. bengalí khipro +* af. mirandès +* solució alt. per a probs. amb el teclat maqui. +* els enllaços als diccs. ara van directament al fitxer +* diverses corrs. i millores menors diff --git a/fastlane/metadata/android/ca/changelogs/3602.txt b/fastlane/metadata/android/ca/changelogs/3602.txt new file mode 100644 index 0000000000..a6578f07d8 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/3602.txt @@ -0,0 +1,12 @@ +* af. cerca emojis en línia +* opc. recorda l'idioma/subtipus per app +* corrs. i millores de retroalimentació hàptica +* manté el porta-retalls no fixat en reiniciar app +* opc. mostra entrades fixades al porta-retalls al final +* af. emojis opcs. i files inferiors del porta-retalls +* af. un botó per descartar suggs. en línia +* af. bengalí khipro +* af. mirandès +* solució alt. per a probs. amb el teclat maqui. +* els enllaços als diccs. ara van directament al fitxer +* diverses corrs. i millores menors diff --git a/fastlane/metadata/android/ca/changelogs/3603.txt b/fastlane/metadata/android/ca/changelogs/3603.txt new file mode 100644 index 0000000000..a6578f07d8 --- /dev/null +++ b/fastlane/metadata/android/ca/changelogs/3603.txt @@ -0,0 +1,12 @@ +* af. cerca emojis en línia +* opc. recorda l'idioma/subtipus per app +* corrs. i millores de retroalimentació hàptica +* manté el porta-retalls no fixat en reiniciar app +* opc. mostra entrades fixades al porta-retalls al final +* af. emojis opcs. i files inferiors del porta-retalls +* af. un botó per descartar suggs. en línia +* af. bengalí khipro +* af. mirandès +* solució alt. per a probs. amb el teclat maqui. +* els enllaços als diccs. ara van directament al fitxer +* diverses corrs. i millores menors diff --git a/fastlane/metadata/android/ca/full_description.txt b/fastlane/metadata/android/ca/full_description.txt new file mode 100644 index 0000000000..6da2d5c26f --- /dev/null +++ b/fastlane/metadata/android/ca/full_description.txt @@ -0,0 +1,30 @@ +HeliBoard és un teclat de codi obert conscient de la privadesa, basat en AOSP / OpenBoard. +No utilitza Internet i, per tant, està 100% fora de línia. + +Característiques: +
    +
  • Afegiu diccionaris per a suggeriments i correcció ortogràfica
  • +
      +
    • Creeu el vostre o obteniu-los aquí o a secció experimental (la qualitat pot variar)
    • +
    • Podeu utilitzar diccionaris addicionals per a emojis o símbols científics per oferir suggeriments (com ara «cerca d'emojis»)
    • +
    • Tingueu en compte que per als dissenys coreans, els suggeriments només funcionen amb aquest diccionari, les eines del repositori de diccionaris no poden crear diccionaris funcionals
    • +
    +
  • Personalitzeu els temes del teclat (estil, colors i imatge de fons)
  • +
      +
    • pot seguir la configuració dia/nit del sistema a Android 10+ (i en algunes versions d'Android 9)
    • +
    • pot seguir colors dinàmics per a Android 12+
    • +
    +
  • Personalitzeu els dissenys del teclat (només disponible quan es desactiva utilitzar els idiomes del sistema)
  • +
  • Personalitzeu dissenys especials, com ara símbols, números o tecles funcionals
  • +
  • Escriptura multilingüe
  • +
  • Escriptura lliscant (només amb la biblioteca de font tancada ☹️)
  • +
      +
    • la biblioteca no s'inclou a l'aplicació, ja que no hi ha cap biblioteca de codi obert compatible disponible
    • +
    • es pot extreure dels paquets de GApps («swypelibs») o descarregar aquí (feu clic a fitxer i després «raw» o el petit botó de baixada)
    • +
    +
  • Historial del porta-retalls
  • +
  • Mode amb una sola mà
  • +
  • Teclat dividit (només disponible si la pantalla és prou gran)
  • +
  • Teclat numèric
  • +
  • Feu una còpia de seguretat i restaureu la vostra configuració i les dades de l'historial i de les paraules apreses
  • +
diff --git a/fastlane/metadata/android/ca/short_description.txt b/fastlane/metadata/android/ca/short_description.txt new file mode 100644 index 0000000000..2ce93dc3f1 --- /dev/null +++ b/fastlane/metadata/android/ca/short_description.txt @@ -0,0 +1 @@ +Teclat de codi obert personalitzable diff --git a/fastlane/metadata/android/ca/title.txt b/fastlane/metadata/android/ca/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/ca/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/cs-CZ/changelogs/1001.txt b/fastlane/metadata/android/cs-CZ/changelogs/1001.txt new file mode 100644 index 0000000000..5d370b14ac --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/1001.txt @@ -0,0 +1,7 @@ +* new icon by @FabianOvrWrt with contributions from @the-eclectic-dyslexic (#517, #592) +* more customizable space bar trackpad and language switch by @arcarum (#486) +* add % to shift symbols layout (#568, #428) +* improve behavior when language switch key is set to switch both language and keyboard +* show links to existing dictionaries when adding a dictionary +* add Kaitag layout by @alkaitagi (#519) +* add Probhat layout by @fahimscirex (#489) diff --git a/fastlane/metadata/android/cs-CZ/changelogs/1003.txt b/fastlane/metadata/android/cs-CZ/changelogs/1003.txt new file mode 100644 index 0000000000..b6ad641401 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/1003.txt @@ -0,0 +1,9 @@ +* change icons for autocorrect and select all toolbar keys by @codokie (#524, #651) +* add Chuvash layout by @tenextractor (#677) +* add cut toolbar key by @codokie (#678) +* update Probhat layout by @fahimscirex (#628) +* show toolbar icons in toolbar key dialog +* add close button in clipboard history by @codokie (#403, #649) +* add Russian (Student) layout by @Zolax9 (#640) +* make numpad on symbols key long press optional (#588) +* minor fixes and improvements, including #632, #637, #638 by @RHJihan diff --git a/fastlane/metadata/android/cs-CZ/changelogs/1004.txt b/fastlane/metadata/android/cs-CZ/changelogs/1004.txt new file mode 100644 index 0000000000..caa2ae2147 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/1004.txt @@ -0,0 +1,7 @@ +- aktualizace rozložení srbské cyrilice od @markokocic (#704, #705) +- aktualizace rozvržení Estonsko od @tenextractor (#693) +- oprava duplicitních záznamů v historii schránky od @codokie (#616, #680) +- do historie schránky přidávat pouze textové záznamy od @codokie (#711) +- lepší obrázky v metadatech od @RHJihan (#713) +- správně nastavit barvu ikon v dialogovém okně výběru panelu nástrojů od @codokie (#715, #716) +- další opravy (#684, #723 a další) diff --git a/fastlane/metadata/android/cs-CZ/changelogs/2000.txt b/fastlane/metadata/android/cs-CZ/changelogs/2000.txt new file mode 100644 index 0000000000..bd1ce4e3b3 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/2000.txt @@ -0,0 +1,10 @@ +* add basic support for modifier keys +* add long press functions to more toolbar keys +* and more clipboard history toolbar keys +* make clipboard history toolbar customizable +* allow customizing all colors +* add setting to always show word to be enterd as middle suggestion +* add caps lock indicator +* add Piedmontese, Eastern Mari, Mansi, extended layouts for Kannada and Hungarian +* fix cut off text in key preview popup on some devices +* further fixes and improvements, see release notes diff --git a/fastlane/metadata/android/cs-CZ/changelogs/2001.txt b/fastlane/metadata/android/cs-CZ/changelogs/2001.txt new file mode 100644 index 0000000000..65c72100a4 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/2001.txt @@ -0,0 +1,11 @@ +* allow customizing functional key layouts +* slightly adjust symbols and more symbols layouts +* add options to auto-show/hide toolbar +* add toast notification when copying text +* separate language switch key behavior from enablement +* add comma key popups for number and phone layouts +* make long-press pinning in toolbar optional +* move toolbar settings to a separate section +* add tab key +* understand ctrl, toolbar and other key labels in layouts +* minor fixes and improvements diff --git a/fastlane/metadata/android/cs-CZ/changelogs/2002.txt b/fastlane/metadata/android/cs-CZ/changelogs/2002.txt new file mode 100644 index 0000000000..751dfe1423 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/2002.txt @@ -0,0 +1,4 @@ +* add emoji toolbar key, by @codokie (#845, #837) +* improvements regarding duplicated letters (#225 and maybe others) +* avoid positioning cursor inside emojis (#859) +* minor fixes for recently added features diff --git a/fastlane/metadata/android/cs-CZ/changelogs/2003.txt b/fastlane/metadata/android/cs-CZ/changelogs/2003.txt new file mode 100644 index 0000000000..9bf1f6ba0f --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/2003.txt @@ -0,0 +1,11 @@ +* customizable functional key layout +* slightly adjust symbols and more symbols layouts +* basic support for alt, ctrl, fn, meta keys +* extend toolbar (long-press functionality, optional long-press pinning, auto-show/hide, better clipboard toolbar, ...) +* add tab key +* add caps lock indicator +* add layouts for some languages +* add toolbar keys as keyboard keys +* allow customizing all colors +* toast notification when copying text +* bug fixes and further improvements, see full release notes diff --git a/fastlane/metadata/android/cs-CZ/changelogs/2100.txt b/fastlane/metadata/android/cs-CZ/changelogs/2100.txt new file mode 100644 index 0000000000..1bcb322565 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/2100.txt @@ -0,0 +1,8 @@ +* fix broken functional key layout for tablets +* only show language switch key when there is something to switch to +* make default colors for "all colors" setting random instead of gray +* allow customizing start lag for gestures during typing, by @devycarol +* allow customizing currency keys +* reduce long-press time for shift -> caps lock, by @devycarol +* extend superscript popups in number row and symbols layout, by @b02860de585071a2 +* minor fixes and improvements diff --git a/fastlane/metadata/android/cs-CZ/changelogs/2200.txt b/fastlane/metadata/android/cs-CZ/changelogs/2200.txt new file mode 100644 index 0000000000..133274e982 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/2200.txt @@ -0,0 +1,11 @@ +* add ability for saving / exporting custom themes +* make arrow keys on keyboard repeatable +* more cursor toolbar keys (page up/down(/start/end, word left/right) +* add paste key +* improve key swipe behavior +* add space swipe setting to toggle numpad +* add clipboard suggestion for recently copied text +* de-select text on pressing select keys again +* tune some colors in settings for Android 12+ +* adjust language dependent popup keys +* minor fixes and improvements diff --git a/fastlane/metadata/android/cs-CZ/changelogs/2201.txt b/fastlane/metadata/android/cs-CZ/changelogs/2201.txt new file mode 100644 index 0000000000..7c8756ed5e --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/2201.txt @@ -0,0 +1,2 @@ +* add visual options for gesture typing, by @devycarol (#944) +* update some icons, by @BlackyHawky (#977) diff --git a/fastlane/metadata/android/cs-CZ/changelogs/2300.txt b/fastlane/metadata/android/cs-CZ/changelogs/2300.txt new file mode 100644 index 0000000000..71c590ce2e --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/2300.txt @@ -0,0 +1,9 @@ +* Allow customizing number row, toolbar codes, icons, spacebar text, bottom row for emoji and clipboard views +* Decouple icon style from keyboard style +* Disable remove redundant popups by default (and add a small fix) +* Less aggressive addition of words to personal dictionary +* No vibration in do not disturb mode +* Improve performance when copying large texta +* Fix partially broken punctuation popups +* Fix some of the issues where text is duplicated +* Minor things and more bug fixes diff --git a/fastlane/metadata/android/cs-CZ/changelogs/2301.txt b/fastlane/metadata/android/cs-CZ/changelogs/2301.txt new file mode 100644 index 0000000000..71c590ce2e --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/2301.txt @@ -0,0 +1,9 @@ +* Allow customizing number row, toolbar codes, icons, spacebar text, bottom row for emoji and clipboard views +* Decouple icon style from keyboard style +* Disable remove redundant popups by default (and add a small fix) +* Less aggressive addition of words to personal dictionary +* No vibration in do not disturb mode +* Improve performance when copying large texta +* Fix partially broken punctuation popups +* Fix some of the issues where text is duplicated +* Minor things and more bug fixes diff --git a/fastlane/metadata/android/cs-CZ/changelogs/3004.txt b/fastlane/metadata/android/cs-CZ/changelogs/3004.txt new file mode 100644 index 0000000000..7b5a3f1288 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/3004.txt @@ -0,0 +1,11 @@ +* přidána rozvržení: arabština hidžá'í, hebrejština 1452-2, fonetické hindu, dargwa (urakhi), baishakhi, kurdština +* aktualizace některých rozvržení +* podpora kombinování přízvuků +* klávesa pro rozdělení klávesnice +* přidána nabídka .com +* možnost nastavení vlastního písma +* přidáno nastavení měřítka písma +* zlepšeno automatické přepínání jazyků +* přepracována nastavení +* přidána nastavení pro lepší nastavení odsazení, automatické mezery, automatické opravy, číselné řady +* další funkce a opravy diff --git a/fastlane/metadata/android/cs-CZ/changelogs/3005.txt b/fastlane/metadata/android/cs-CZ/changelogs/3005.txt new file mode 100644 index 0000000000..7b5a3f1288 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/3005.txt @@ -0,0 +1,11 @@ +* přidána rozvržení: arabština hidžá'í, hebrejština 1452-2, fonetické hindu, dargwa (urakhi), baishakhi, kurdština +* aktualizace některých rozvržení +* podpora kombinování přízvuků +* klávesa pro rozdělení klávesnice +* přidána nabídka .com +* možnost nastavení vlastního písma +* přidáno nastavení měřítka písma +* zlepšeno automatické přepínání jazyků +* přepracována nastavení +* přidána nastavení pro lepší nastavení odsazení, automatické mezery, automatické opravy, číselné řady +* další funkce a opravy diff --git a/fastlane/metadata/android/cs-CZ/changelogs/3006.txt b/fastlane/metadata/android/cs-CZ/changelogs/3006.txt new file mode 100644 index 0000000000..7b5a3f1288 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/3006.txt @@ -0,0 +1,11 @@ +* přidána rozvržení: arabština hidžá'í, hebrejština 1452-2, fonetické hindu, dargwa (urakhi), baishakhi, kurdština +* aktualizace některých rozvržení +* podpora kombinování přízvuků +* klávesa pro rozdělení klávesnice +* přidána nabídka .com +* možnost nastavení vlastního písma +* přidáno nastavení měřítka písma +* zlepšeno automatické přepínání jazyků +* přepracována nastavení +* přidána nastavení pro lepší nastavení odsazení, automatické mezery, automatické opravy, číselné řady +* další funkce a opravy diff --git a/fastlane/metadata/android/cs-CZ/changelogs/3007.txt b/fastlane/metadata/android/cs-CZ/changelogs/3007.txt new file mode 100644 index 0000000000..7b5a3f1288 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/3007.txt @@ -0,0 +1,11 @@ +* přidána rozvržení: arabština hidžá'í, hebrejština 1452-2, fonetické hindu, dargwa (urakhi), baishakhi, kurdština +* aktualizace některých rozvržení +* podpora kombinování přízvuků +* klávesa pro rozdělení klávesnice +* přidána nabídka .com +* možnost nastavení vlastního písma +* přidáno nastavení měřítka písma +* zlepšeno automatické přepínání jazyků +* přepracována nastavení +* přidána nastavení pro lepší nastavení odsazení, automatické mezery, automatické opravy, číselné řady +* další funkce a opravy diff --git a/fastlane/metadata/android/cs-CZ/changelogs/3008.txt b/fastlane/metadata/android/cs-CZ/changelogs/3008.txt new file mode 100644 index 0000000000..7b5a3f1288 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/3008.txt @@ -0,0 +1,11 @@ +* přidána rozvržení: arabština hidžá'í, hebrejština 1452-2, fonetické hindu, dargwa (urakhi), baishakhi, kurdština +* aktualizace některých rozvržení +* podpora kombinování přízvuků +* klávesa pro rozdělení klávesnice +* přidána nabídka .com +* možnost nastavení vlastního písma +* přidáno nastavení měřítka písma +* zlepšeno automatické přepínání jazyků +* přepracována nastavení +* přidána nastavení pro lepší nastavení odsazení, automatické mezery, automatické opravy, číselné řady +* další funkce a opravy diff --git a/fastlane/metadata/android/cs-CZ/changelogs/3100.txt b/fastlane/metadata/android/cs-CZ/changelogs/3100.txt new file mode 100644 index 0000000000..f91fb9dd6c --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/3100.txt @@ -0,0 +1,10 @@ +* navrhování názvů nainstalovaných aplikací +* přepnutí kategorie emoji přejetím +* zobr. oznámení po obnovení zálohy +* větší tlačítko a ikona na panelu nástrojů +* zpřístupnění čárky ve vysk. klávesách při zobrazení vysk. kl. TLD +* přidáno nastavení vých. odstínu pleti emodži +* přidány kódy kláves pro levý a pravý Alt a Ctrl +* přidán popisek klávesy „časové razítko“ pro přístupnější klávesu čas. razítka +* oprava spec. popisků kláves pro vysk. kl. v jednoduchých rozl. +* drobné opravy a vylepšení diff --git a/fastlane/metadata/android/cs-CZ/changelogs/3101.txt b/fastlane/metadata/android/cs-CZ/changelogs/3101.txt new file mode 100644 index 0000000000..11ff7b94aa --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/3101.txt @@ -0,0 +1,9 @@ +* navrhování názvů nainstalovaných aplikací +* přepnutí kategorie emoji přejetím +* zobr. oznámení po obnovení zálohy +* zpřístupnění čárky ve vysk. klávesách při zobrazení vysk. kl. TLD +* přidáno nastavení vých. odstínu pleti emodži +* přidány kódy kláves pro levý a pravý Alt a Ctrl +* přidán popisek klávesy „časové razítko“ pro přístupnější klávesu čas. razítka +* oprava spec. popisků kláves pro vysk. kl. v jednoduchých rozl. +* drobné opravy a vylepšení diff --git a/fastlane/metadata/android/cs-CZ/changelogs/3200.txt b/fastlane/metadata/android/cs-CZ/changelogs/3200.txt new file mode 100644 index 0000000000..ce7b767b12 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/3200.txt @@ -0,0 +1,10 @@ +* přidány režimy panelu nástrojů (umožňuje skrýt p. n.) +* přidány chybějící varianty emodži +* vylepšena obrazovka podtypů a dialog slovníku +* opraveny barvy při vynuceném tmavém režimu +* přesun většiny nastavení měřítka do dialogu +* odstraněny překlady řetězců označených jako nepřekládatelné +* opraven směr šipky „dále“ pro jazyky RTL +* opraveno správné načítání hebrejského jazyka na Androidu 15 +* zajištění alespoň základní klávesnice, když knihovna vůbec nefunguje +* drobné opravy chyb diff --git a/fastlane/metadata/android/cs-CZ/changelogs/3201.txt b/fastlane/metadata/android/cs-CZ/changelogs/3201.txt new file mode 100644 index 0000000000..ce7b767b12 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/3201.txt @@ -0,0 +1,10 @@ +* přidány režimy panelu nástrojů (umožňuje skrýt p. n.) +* přidány chybějící varianty emodži +* vylepšena obrazovka podtypů a dialog slovníku +* opraveny barvy při vynuceném tmavém režimu +* přesun většiny nastavení měřítka do dialogu +* odstraněny překlady řetězců označených jako nepřekládatelné +* opraven směr šipky „dále“ pro jazyky RTL +* opraveno správné načítání hebrejského jazyka na Androidu 15 +* zajištění alespoň základní klávesnice, když knihovna vůbec nefunguje +* drobné opravy chyb diff --git a/fastlane/metadata/android/cs-CZ/changelogs/3300.txt b/fastlane/metadata/android/cs-CZ/changelogs/3300.txt new file mode 100644 index 0000000000..d2c5a5f056 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/3300.txt @@ -0,0 +1,11 @@ +- psaní velkých písmen po stisknutí Shiftu +- klávesové zkratky pro broadcast intentů +- volitelný popis emodži (vyžaduje slovník) +- vylepšené chování hardwarové klávesnice +- možnost skrýt klávesnici potažením +- přidána latinka +- možnost vypnout návrhy emodži +- oprava chybějících emodži v rozdělené klávesnici +- odstranění emodži, které se nemají používat samostatně +- oprava problémů s blacklistem +- oprava mazání u některých emodži diff --git a/fastlane/metadata/android/cs-CZ/changelogs/3301.txt b/fastlane/metadata/android/cs-CZ/changelogs/3301.txt new file mode 100644 index 0000000000..d2c5a5f056 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/3301.txt @@ -0,0 +1,11 @@ +- psaní velkých písmen po stisknutí Shiftu +- klávesové zkratky pro broadcast intentů +- volitelný popis emodži (vyžaduje slovník) +- vylepšené chování hardwarové klávesnice +- možnost skrýt klávesnici potažením +- přidána latinka +- možnost vypnout návrhy emodži +- oprava chybějících emodži v rozdělené klávesnici +- odstranění emodži, které se nemají používat samostatně +- oprava problémů s blacklistem +- oprava mazání u některých emodži diff --git a/fastlane/metadata/android/cs-CZ/changelogs/3400.txt b/fastlane/metadata/android/cs-CZ/changelogs/3400.txt new file mode 100644 index 0000000000..9c343eabeb --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/3400.txt @@ -0,0 +1,5 @@ +- Omezení počtu emodži navrhovaných v liště návrhů na jeden (pokud je to možné) +- Oprava nesprávného vkládání mezer +- Oprava bílého textu na bílém pozadí na některých zařízeních +- Oprava nesprávných návrhů s `'` +- Přidání plurálu schwa ɜ do italštiny diff --git a/fastlane/metadata/android/cs-CZ/changelogs/3501.txt b/fastlane/metadata/android/cs-CZ/changelogs/3501.txt new file mode 100644 index 0000000000..ec146711dc --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/3501.txt @@ -0,0 +1,3 @@ +- Oprava pádů +- Opraveny rozbité automatické opravy (rozbité od verze 3.4) +- Vibrace u mezerníku a mazacího swipu, pokud jsou povoleny diff --git a/fastlane/metadata/android/cs-CZ/changelogs/3600.txt b/fastlane/metadata/android/cs-CZ/changelogs/3600.txt new file mode 100644 index 0000000000..595da15145 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/3600.txt @@ -0,0 +1,12 @@ +* hledání emoji na řádku +* volitelné zapamatování jazyka / podtypu pro každou apl. +* opravy a vylepšení haptické zpětné vazby +* zachování odepnuté schr. při restartu aplikace +* volitelné zobr. připnuté položky schránky jako poslední +* přidány volitelné spodní řádky emodži a schránky +* přidáno tlačítko pro zavření vložených návrhů +* přidána bengálština Khipro +* přidána mirandština +* opraveny problémy s HW klávesnicí +* odkazy na slovníky nyní vedou přímo k souboru +* různé drobné opravy a vylepšení diff --git a/fastlane/metadata/android/cs-CZ/changelogs/3601.txt b/fastlane/metadata/android/cs-CZ/changelogs/3601.txt new file mode 100644 index 0000000000..595da15145 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/3601.txt @@ -0,0 +1,12 @@ +* hledání emoji na řádku +* volitelné zapamatování jazyka / podtypu pro každou apl. +* opravy a vylepšení haptické zpětné vazby +* zachování odepnuté schr. při restartu aplikace +* volitelné zobr. připnuté položky schránky jako poslední +* přidány volitelné spodní řádky emodži a schránky +* přidáno tlačítko pro zavření vložených návrhů +* přidána bengálština Khipro +* přidána mirandština +* opraveny problémy s HW klávesnicí +* odkazy na slovníky nyní vedou přímo k souboru +* různé drobné opravy a vylepšení diff --git a/fastlane/metadata/android/cs-CZ/changelogs/3602.txt b/fastlane/metadata/android/cs-CZ/changelogs/3602.txt new file mode 100644 index 0000000000..595da15145 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/3602.txt @@ -0,0 +1,12 @@ +* hledání emoji na řádku +* volitelné zapamatování jazyka / podtypu pro každou apl. +* opravy a vylepšení haptické zpětné vazby +* zachování odepnuté schr. při restartu aplikace +* volitelné zobr. připnuté položky schránky jako poslední +* přidány volitelné spodní řádky emodži a schránky +* přidáno tlačítko pro zavření vložených návrhů +* přidána bengálština Khipro +* přidána mirandština +* opraveny problémy s HW klávesnicí +* odkazy na slovníky nyní vedou přímo k souboru +* různé drobné opravy a vylepšení diff --git a/fastlane/metadata/android/cs-CZ/changelogs/3603.txt b/fastlane/metadata/android/cs-CZ/changelogs/3603.txt new file mode 100644 index 0000000000..595da15145 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/3603.txt @@ -0,0 +1,12 @@ +* hledání emoji na řádku +* volitelné zapamatování jazyka / podtypu pro každou apl. +* opravy a vylepšení haptické zpětné vazby +* zachování odepnuté schr. při restartu aplikace +* volitelné zobr. připnuté položky schránky jako poslední +* přidány volitelné spodní řádky emodži a schránky +* přidáno tlačítko pro zavření vložených návrhů +* přidána bengálština Khipro +* přidána mirandština +* opraveny problémy s HW klávesnicí +* odkazy na slovníky nyní vedou přímo k souboru +* různé drobné opravy a vylepšení diff --git a/fastlane/metadata/android/cs-CZ/full_description.txt b/fastlane/metadata/android/cs-CZ/full_description.txt new file mode 100644 index 0000000000..78bdc2dc08 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/full_description.txt @@ -0,0 +1,30 @@ +HeliBoard je open-source klávesnice zaměřená na soukromí, založená na AOSP / OpenBoard. +Nepoužívá internet, a je tedy 100% offline. + +Funkce: +
    +
  • Přidávejte slovníky pro návrhy a kontrolu pravopisu
  • +
      +
    • vytvořte si vlastní, nebo si je stáhněte zde, nebo v experimentální sekci (kvalita se může lišit)
    • +
    • další slovníky pro emotikony nebo vědecké symboly lze použít k poskytování návrhů (podobně jako „vyhledávání emoji“)
    • +
    • upozorňujeme, že pro korejské rozložení fungují návrhy pouze s tímto slovníkem, nástroje v repozitáři se slovníky nedokážou vytvořit funkční slovníky
    • +
    +
  • Přizpůsobte si vzhled klávesnice (styl, barvy a obrázek na pozadí)
  • +
      +
    • dokáže se přizpůsobit dennímu/nočnímu nastavení v Androidu 10+ (a na některých verzích Androidu 9)
    • +
    • dokáže se přizpůsobit dynamickým barvám v Androidu 12+
    • +
    +
  • Přizpůsobte si rozložení klávesnice (dostupné pouze při vypnuté volbě používat systémové jazyky)
  • +
  • Přizpůsobte si speciální rozložení, jako jsou symboly, čísla nebo rozložení funkčních kláves
  • +
  • Vícejazyčné psaní
  • +
  • Psaní jedním tahem (pouze s proprietární knihovnou ☹️)
  • +
      +
    • knihovna není součástí aplikace, protože není dostupná žádná kompatibilní open source verze
    • +
    • lze ji extrahovat z balíků GApps („swypelibs“) nebo stáhnout zde (klikněte na soubor a pak na „raw“ nebo malé tlačítko pro stažení)
    • +
    +
  • Historie schránky
  • +
  • Režim ovládání jednou rukou
  • +
  • Rozdělená klávesnice (dostupná pouze pokud je obrazovka dostatečně velká)
  • +
  • Numerická klávesnice
  • +
  • Záloha a obnova nastavení a naučených slov / historie
  • +
diff --git a/fastlane/metadata/android/cs-CZ/short_description.txt b/fastlane/metadata/android/cs-CZ/short_description.txt new file mode 100644 index 0000000000..e6545014f7 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/short_description.txt @@ -0,0 +1 @@ +Přizpůsobitelná open-source klávesnice diff --git a/fastlane/metadata/android/cs-CZ/title.txt b/fastlane/metadata/android/cs-CZ/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/de-DE/changelogs/1001.txt b/fastlane/metadata/android/de-DE/changelogs/1001.txt new file mode 100644 index 0000000000..55f3fd8125 --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/1001.txt @@ -0,0 +1,20 @@ +* neues Icon von @FabianOvrWrt mit Beiträgen von @the-eclectic-dyslexic (#517, #592) +* anpassbareres Leertaste-Trackpad und Sprachschalter von @arcarum (#486) +* % zum Layout der Schaltsymbole hinzufügen (#568, #428) +* Verhalten verbessern, wenn die Sprachumschalttaste so eingestellt ist, dass sowohl Sprache als auch Tastatur umgeschaltet werden +* Beim Hinzufügen eines Wörterbuchs Links zu vorhandenen Wörterbüchern anzeigen +* Kaitag-Layout von @alkaitagi hinzufügen (#519) +* Probhat-Layout von @fahimscirex hinzufügen (#489) +* optional umgekehrte Symbolleistenreihenfolge für RTL-Sprachen von @codokie (#557, #574) +* ermöglicht das Anpassen spezieller Layouts (Nummernblock, Telefon, ...) + * Noch experimentell, da sich die Grundlayouts ändern können +* Rechtschreibprüfung.xml aktualisiert, um Gebietsschemata einzuschließen, in denen Wörterbücher verfügbar, aber nicht in der App enthalten sind +* Übersetzungen aktualisieren (Danke an alle Übersetzer!) +* ndk aktualisieren von @Syphyr (#560) +* Inline-Autofill-Code von @arcarum aktualisieren (#595) +* Problem mit dem Tastendialog in der Symbolleiste behoben (#505) +* Problem mit türkischem Layout behoben (#508) +* Falsche Schalterzustände beim Drehen im Bildschirm „Farben anpassen“ behoben (#563) +* Problem behoben, bei dem aktuelle Emojis nicht geladen wurden (#527) +* Problem behoben, bei dem Zahlen in bestimmten Feldern nicht angezeigt wurden (#585) +* einige kleinere Korrekturen diff --git a/fastlane/metadata/android/de-DE/changelogs/1003.txt b/fastlane/metadata/android/de-DE/changelogs/1003.txt new file mode 100644 index 0000000000..c07420e3cc --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/1003.txt @@ -0,0 +1,9 @@ +* Ändern der Symbole für die Autokorrektur und Auswahl aller Symbolleisten-Tasten durch @codokie (#524, #651) +* Hinzufügen des Tschuwaschischen Layouts durch @tenextractor (#677) +* Hinzufügen der Symbolleisten-Taste „Ausschneiden” durch @codokie (#678) +* Aktualisieren des Probhat-Layouts durch @fahimscirex (#628) +* Anzeigen der Symbolleisten-Symbole im Dialogfeld „Symbolleisten-Tasten” +* Schließen-Schaltfläche im Zwischenablageverlauf hinzufügen von @codokie (#403, #649) +* Russisches (Schüler-)Layout hinzufügen von @Zolax9 (#640) +* Langes Drücken der Symboltaste für den Ziffernblock optional machen (#588) +* Kleinere Korrekturen und Verbesserungen, darunter #632, #637, #638 von @RHJihan diff --git a/fastlane/metadata/android/de-DE/changelogs/1004.txt b/fastlane/metadata/android/de-DE/changelogs/1004.txt new file mode 100644 index 0000000000..bcae5aa26a --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/1004.txt @@ -0,0 +1,7 @@ +- Aktualisierung des serbisch-kyrillischen Layouts von @markokocic (#704, #705) +- Estland-Layout von @tenextractor aktualisieren (#693) +- Doppelte Einträge im Zwischenablageverlauf von @codokie behoben (#616, #680) +- Fügen Sie nur Texteinträge zum Zwischenablageverlauf von @codokie hinzu (#711) +- bessere Bilder in Metadaten von @RHJihan (#713) +- Farbe der Symbole im Auswahldialog der Symbolleiste richtig eingestellt von @codokie (#715, #716) +- andere Korrekturen (#684, #723 und mehr) diff --git a/fastlane/metadata/android/de-DE/changelogs/2000.txt b/fastlane/metadata/android/de-DE/changelogs/2000.txt new file mode 100644 index 0000000000..5869b29733 --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/2000.txt @@ -0,0 +1,10 @@ +* Grundlegende Unterstützung für Modifikatortasten hinzugefügt +* Langdruck-Funktionen zu weiteren Tasten der Symbolleiste hinzugefügt +* und mehr Tasten in der Symbolleiste für den Verlauf der Zwischenablage +* Symbolleiste für den Verlauf der Zwischenablage anpassbar machen +* Erlaubt das Anpassen aller Farben +* Einstellung hinzugefügt, um das einzugebende Wort immer als mittleren Vorschlag anzuzeigen +* Anzeige für Feststelltaste hinzugefügt +* Piedmontese, Eastern Mari, Mansi, erweiterte Layouts für Kannada und Ungarisch hinzugefügt +* Abgeschnittener Text im Tastenvorschau-Popup auf einigen Geräten behoben +* weitere Korrekturen und Verbesserungen, siehe Versionshinweise diff --git a/fastlane/metadata/android/de-DE/changelogs/2001.txt b/fastlane/metadata/android/de-DE/changelogs/2001.txt new file mode 100644 index 0000000000..c7de4be734 --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/2001.txt @@ -0,0 +1,11 @@ +* Anpassung des Layouts der Funktionstasten ermöglichen +* leichte Anpassung der Symbole und weitere Symbol-Layouts +* Optionen zum automatischen Ein-/Ausblenden der Symbolleiste hinzugefügt +* Toast-Benachrichtigung beim Kopieren von Text hinzugefügt +* Verhalten der Sprachumschalttaste von der Aktivierung trennen +* Komma-Popups für Nummern- und Telefon-Layouts hinzugefügt +* Anheften in der Symbolleiste durch langes Drücken optional machen +* Symbolleisteneinstellungen in einen separaten Abschnitt verschieben +* Tabulator-Taste hinzugefügt +* Strg, Symbolleiste und andere Tastenbeschriftungen in Layouts verstehen +* kleinere Korrekturen und Verbesserungen diff --git a/fastlane/metadata/android/de-DE/changelogs/2002.txt b/fastlane/metadata/android/de-DE/changelogs/2002.txt new file mode 100644 index 0000000000..fd783ebc77 --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/2002.txt @@ -0,0 +1,4 @@ +*Emoji-Symbolleisten-Taste hinzugefügt, von @codokie (#845, #837) +*Verbesserungen in Bezug auf doppelte Buchstaben (#225 und vielleicht andere) +* Positionierung des Cursors innerhalb von Emojis vermeiden (#859) +* kleinere Korrekturen für kürzlich hinzugefügte Funktionen diff --git a/fastlane/metadata/android/de-DE/changelogs/2003.txt b/fastlane/metadata/android/de-DE/changelogs/2003.txt new file mode 100644 index 0000000000..a7e1ca4223 --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/2003.txt @@ -0,0 +1,11 @@ +* anpassbare Funktionstastenbelegung +* leicht anpassbare Symbole und weitere Symbol-Layouts +* Grundlegende Unterstützung für alt, ctrl, fn, meta-Tasten +* Erweiterung der Symbolleiste (Funktion für langes Drücken, optionales Anheften bei langem Drücken, automatisches Ein- und Ausblenden, bessere Symbolleiste für die Zwischenablage, ...) +* Tabulator-Taste hinzugefügt +* Anzeige für Feststelltaste hinzugefügt +* Layouts für einige Sprachen hinzugefügt +* Tasten der Symbolleiste als Tastaturtasten hinzugefügt +* Ermöglicht das Anpassen aller Farben +* Toast-Benachrichtigung beim Kopieren von Text +*Fehlerbehebungen und weitere Verbesserungen, siehe vollständige Versionshinweise diff --git a/fastlane/metadata/android/de-DE/changelogs/2100.txt b/fastlane/metadata/android/de-DE/changelogs/2100.txt new file mode 100644 index 0000000000..951a6db3dd --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/2100.txt @@ -0,0 +1,8 @@ +* Behebung der fehlerhaften Funktionstastenanordnung für Tablets +* Sprachumschalttaste nur anzeigen, wenn es etwas zu schalten gibt +* Standardfarben für die Einstellung "Alle Farben" zufällig statt grau machen +* Startverzögerung für Gesten während des Tippens anpassen, by @devycarol +* Anpassen der Währungsschlüssel ermöglichen +* Langes Drücken der Umschalttaste -> Feststelltaste reduzieren, von @devycarol +* Hochgestellte Popups in Zahlenreihen und Symbolen erweitern, by @b02860de585071a2 +* kleinere Korrekturen und Verbesserungen diff --git a/fastlane/metadata/android/de-DE/changelogs/2200.txt b/fastlane/metadata/android/de-DE/changelogs/2200.txt new file mode 100644 index 0000000000..51bc9a1c1b --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/2200.txt @@ -0,0 +1,11 @@ +* Möglichkeit zum Speichern/Exportieren benutzerdefinierter Themen hinzufügen +* Pfeiltasten auf der Tastatur wiederholbar machen +* mehr Cursor-Symbolleisten-Tasten (Seite hoch/runter(/Start/Ende, Wort links/rechts) +* Einfügetaste hinzufügen +* Verbesserung des Wischverhaltens von Tasten +* Leertaste zum Umschalten des Ziffernblocks hinzugefügt +* Zwischenablage-Vorschlag für kürzlich kopierten Text hinzugefügt +* Text bei erneutem Drücken der Auswahltasten abwählen +* einige Farben in den Einstellungen für Android 12+ einstellen +* sprachabhängige Popup-Tasten anpassen +* kleinere Korrekturen und Verbesserungen diff --git a/fastlane/metadata/android/de-DE/changelogs/2201.txt b/fastlane/metadata/android/de-DE/changelogs/2201.txt new file mode 100644 index 0000000000..7f1f1300e7 --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/2201.txt @@ -0,0 +1,2 @@ +* visuelle Optionen für Gesteneingabe hinzufügen, von @devycarol (#944) +* Aktualisierung einiger Icons, by @BlackyHawky (#977) diff --git a/fastlane/metadata/android/de-DE/changelogs/2300.txt b/fastlane/metadata/android/de-DE/changelogs/2300.txt new file mode 100644 index 0000000000..d6ac4e706e --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/2300.txt @@ -0,0 +1,9 @@ +* Ermöglicht die Anpassung der Zahlenreihe, der Symbolleistencodes, der Symbole, des Leertastentextes, der unteren Reihe für Emoji und der Ansichten der Zwischenablage +* Entkopplung von Symbolstil und Tastaturstil +* Überflüssige Popups standardmäßig deaktiviert (und kleine Korrektur hinzugefügt) +* Weniger aggressives Hinzufügen von Wörtern zum persönlichen Wörterbuch +* Keine Vibration im Modus "Nicht stören +* Verbesserte Leistung beim Kopieren großer Textmengen +* Teilweise defekte Interpunktions-Popups behoben +* Behebung einiger Probleme mit doppeltem Text +* Kleinigkeiten und weitere Fehlerbehebungen diff --git a/fastlane/metadata/android/de-DE/changelogs/2301.txt b/fastlane/metadata/android/de-DE/changelogs/2301.txt new file mode 100644 index 0000000000..d6ac4e706e --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/2301.txt @@ -0,0 +1,9 @@ +* Ermöglicht die Anpassung der Zahlenreihe, der Symbolleistencodes, der Symbole, des Leertastentextes, der unteren Reihe für Emoji und der Ansichten der Zwischenablage +* Entkopplung von Symbolstil und Tastaturstil +* Überflüssige Popups standardmäßig deaktiviert (und kleine Korrektur hinzugefügt) +* Weniger aggressives Hinzufügen von Wörtern zum persönlichen Wörterbuch +* Keine Vibration im Modus "Nicht stören +* Verbesserte Leistung beim Kopieren großer Textmengen +* Teilweise defekte Interpunktions-Popups behoben +* Behebung einiger Probleme mit doppeltem Text +* Kleinigkeiten und weitere Fehlerbehebungen diff --git a/fastlane/metadata/android/de-DE/changelogs/3004.txt b/fastlane/metadata/android/de-DE/changelogs/3004.txt new file mode 100644 index 0000000000..6f8a7103ea --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/3004.txt @@ -0,0 +1,11 @@ +* Layouts hinzugefügt: Arabisch Hija'i, Hebräisch 1452-2, Hindi Phonetic, Dargwa (Urakhi), Baishakhi, Kurdisch +* einige Layouts aktualisiert +* Unterstützung der Kombination von Akzenten +* geteilte Tastatursymbolleisten-Taste +* Hinzufügen von .com-Popups +* Einstellung einer benutzerdefinierten Schriftart ermöglicht +* Einstellung des Schriftgrades hinzugefügt +* Verbesserung der automatischen Sprachumschaltung +* Überarbeitung der Einstellungen +* Einstellungen für mehr Tuning von Tastaturauffüllung, Auto-Leerzeichen, Auto-Korrektur, Zahlenreihe hinzugefügt +* weitere Funktionen und Korrekturen diff --git a/fastlane/metadata/android/de-DE/changelogs/3301.txt b/fastlane/metadata/android/de-DE/changelogs/3301.txt new file mode 100644 index 0000000000..228cd00380 --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/3301.txt @@ -0,0 +1,11 @@ +- Vorschläge großschreiben, wenn die Umschalttaste gedrückt wird +- Tastencodes für Broadcast-Intents hinzugefügt +- Optionale Anzeige von Emoji-Beschreibungen, Emoji-Wörterbuch erforderlich +- Verbesserung der HW-Tastaturhandhabung +- Option „Tastatur ausblenden” beim vertikalen Wischen hinzug. +- Lateinischer Subtyp hinzugefügt +- mögl. Deaktiv. von Emoji-Vorschl. beim Hinzuf. eines Emoji-Wörterbuchs +- Beheben fehlender Emojis in geteilter Tastatur +- Entfernen von Emojis, die nicht allein verwendet werden sollen +- Probleme mit der Blacklist behoben +- Backspace-Verhaltens bei einigen Emojis behoben diff --git a/fastlane/metadata/android/de-DE/changelogs/3400.txt b/fastlane/metadata/android/de-DE/changelogs/3400.txt new file mode 100644 index 0000000000..2edf3a0368 --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/3400.txt @@ -0,0 +1,5 @@ +- Begrenzung der Anzahl der in der Vorschlagsleiste angezeigten Emojis auf eins (wenn möglich) +- Behebung eines Fehlers beim Einfügen von Leerzeichen +- Behebung eines Fehlers, bei dem auf einigen Geräten weißer Text auf weißem Hintergrund angezeigt wurde +- Behebung eines Fehlers bei Vorschlägen mit `'` +- Hinzufügen des Plural-Schwa ɜ zum Italienischen diff --git a/fastlane/metadata/android/de-DE/changelogs/3501.txt b/fastlane/metadata/android/de-DE/changelogs/3501.txt new file mode 100644 index 0000000000..3e797899d1 --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/3501.txt @@ -0,0 +1,3 @@ +- Absturzbehebungen +- Behebung der in 3.4 eingeführten fehlerhaften Autokorrektur +- Vibration bei Leerzeichen und Löschen durch Wischen, wenn aktiviert diff --git a/fastlane/metadata/android/de-DE/full_description.txt b/fastlane/metadata/android/de-DE/full_description.txt new file mode 100644 index 0000000000..afb8c27e70 --- /dev/null +++ b/fastlane/metadata/android/de-DE/full_description.txt @@ -0,0 +1,31 @@ +HeliBoard ist eine datenschutzbewusste quelloffene Tastatur, die auf AOSP / OpenBoard basiert. +Verwendet keine Internetberechtigung und ist daher zu 100 % offline. + +Features: +
    +
  • Wörterbücher für Vorschläge und Rechtschreibprüfung hinzufügen
  • +
      +
    • Erstelle deine eigenen oder hole sie dir hier oder im experimentellen Bereich (Qualität kann variieren)
    • +
    • Zusätzliche Wörterbücher für Emojis oder wissenschaftliche Symbole können zur Bereitstellung von Vorschlägen genutzt werden (ähnlich wie bei der „Emoji-Suche“)
    • +
    • Beachte, dass die Vorschläge für koreanische Layouts nur mit diesem Wörterbuch funktionieren, die Werkzeuge im Wörterbuch-Repository können keine funktionierenden Wörterbücher erstellen
    • +
    +
  • Tastaturdesigns anpassen (Stil, Farben und Hintergrundbild)
  • +
      +
    • kann der Tag-/Nachteinstellung des Systems auf Android 10+ (und auf einigen Versionen von Android 9) folgen
    • +
    • kann dynamischen Farben für Android 12+ folgen
    • +
    +
  • Tastatur-Layouts anpassen (nur verfügbar, wenn Systemsprachen verwenden) +
  • Anpassen spezieller Layouts, wie Symbole, Zahlen oder Funktionstastenlayout +
  • Mehrsprachiges Tippen
  • +
  • Gleitendes Tippen (nur mit quellgeschlossener Bibliothek ☹️)
  • +
      +
    • Bibliothek nicht in der App enthalten, da keine kompatible quelloffene Bibliothek verfügbar ist
    • +
    • kann aus GApps-Paketen („swypelibs“) extrahiert oder heruntergeladen werden hier +(klicke auf die Datei und dann auf "raw" oder den kleinen Download-Button)
    • +
    +
  • Zwischenablageverlauf
  • +
  • Einhandmodus
  • +
  • Geteilte Tastatur (nur verfügbar, wenn der Bildschirm groß genug ist)
  • +
  • Ziffernblock
  • +
  • Sichere und stelle deine Einstellungen und gelernte Wort-/Verlaufsdaten wieder her
  • +
diff --git a/fastlane/metadata/android/de-DE/short_description.txt b/fastlane/metadata/android/de-DE/short_description.txt new file mode 100644 index 0000000000..b64342590f --- /dev/null +++ b/fastlane/metadata/android/de-DE/short_description.txt @@ -0,0 +1 @@ +Anpassbare quelloffene Tastatur diff --git a/fastlane/metadata/android/de-DE/title.txt b/fastlane/metadata/android/de-DE/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/de-DE/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/en-US/changelogs/1001.txt b/fastlane/metadata/android/en-US/changelogs/1001.txt new file mode 100644 index 0000000000..db576f9f12 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/1001.txt @@ -0,0 +1,20 @@ +* new icon by @FabianOvrWrt with contributions from @the-eclectic-dyslexic (#517, #592) +* more customizable space bar trackpad and language switch by @arcarum (#486) +* add % to shift symbols layout (#568, #428) +* improve behavior when language switch key is set to switch both language and keyboard +* show links to existing dictionaries when adding a dictionary +* add Kaitag layout by @alkaitagi (#519) +* add Probhat layout by @fahimscirex (#489) +* optionally reverse toolbar order for RTL languages by @codokie (#557, #574) +* allow customizing special layouts (numpad, phone, ...) + * still experimental, as the base layouts may change +* updated spellchecker.xml to include locales where dictionaries are available, but not included in app +* update translations (thanks to all translators!) +* upgrade ndk by @Syphyr (#560) +* upgrade inline autofill code by @arcarum (#595) +* fix issue with toolbar key dialog (#505) +* fix issue with turkish layout (#508) +* fix wrong switch states when rotating in customize colors screen (#563) +* fix issue with recent emojis not loading (#527) +* fix issue with numbers not appearing in certain fields (#585) +* some minor fixes diff --git a/fastlane/metadata/android/en-US/changelogs/1003.txt b/fastlane/metadata/android/en-US/changelogs/1003.txt new file mode 100644 index 0000000000..b6ad641401 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/1003.txt @@ -0,0 +1,9 @@ +* change icons for autocorrect and select all toolbar keys by @codokie (#524, #651) +* add Chuvash layout by @tenextractor (#677) +* add cut toolbar key by @codokie (#678) +* update Probhat layout by @fahimscirex (#628) +* show toolbar icons in toolbar key dialog +* add close button in clipboard history by @codokie (#403, #649) +* add Russian (Student) layout by @Zolax9 (#640) +* make numpad on symbols key long press optional (#588) +* minor fixes and improvements, including #632, #637, #638 by @RHJihan diff --git a/fastlane/metadata/android/en-US/changelogs/1004.txt b/fastlane/metadata/android/en-US/changelogs/1004.txt new file mode 100644 index 0000000000..a70e26fb2e --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/1004.txt @@ -0,0 +1,7 @@ +- update Serbian Cyrillic layout by @markokocic (#704, #705) +- update Estonia layout by @tenextractor (#693) +- fix duplicate entries in clipboard history by @codokie (#616, #680) +- only add text entries to clipboard history by @codokie (#711) +- better images in metadata by @RHJihan (#713) +- properly set color of icons in toolbar selection dialog by @codokie (#715, #716) +- other fixes (#684, #723 and more) diff --git a/fastlane/metadata/android/en-US/changelogs/15.txt b/fastlane/metadata/android/en-US/changelogs/15.txt deleted file mode 100644 index c1ee917b1f..0000000000 --- a/fastlane/metadata/android/en-US/changelogs/15.txt +++ /dev/null @@ -1,7 +0,0 @@ -1.4.3: -- automatic day/night themes -- emoji with different colors are now accessible with a long-press -- Add Arabic PC layout -- German layout fixes -- changes to themes -- bugfixes diff --git a/fastlane/metadata/android/en-US/changelogs/18.txt b/fastlane/metadata/android/en-US/changelogs/18.txt deleted file mode 100644 index 6b37cc5d9b..0000000000 --- a/fastlane/metadata/android/en-US/changelogs/18.txt +++ /dev/null @@ -1,10 +0,0 @@ -1.4.4b: -- fix crash on older devices -- fix german words that appear in capital letters - -1.4.4: -- add clipboard history -- fix bug preventing numpad from showing on tablets -- add Workman layout -- added dictionaries: Swedish, Danish, Hungarian -- bugfixes diff --git a/fastlane/metadata/android/en-US/changelogs/2000.txt b/fastlane/metadata/android/en-US/changelogs/2000.txt new file mode 100644 index 0000000000..bd1ce4e3b3 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/2000.txt @@ -0,0 +1,10 @@ +* add basic support for modifier keys +* add long press functions to more toolbar keys +* and more clipboard history toolbar keys +* make clipboard history toolbar customizable +* allow customizing all colors +* add setting to always show word to be enterd as middle suggestion +* add caps lock indicator +* add Piedmontese, Eastern Mari, Mansi, extended layouts for Kannada and Hungarian +* fix cut off text in key preview popup on some devices +* further fixes and improvements, see release notes diff --git a/fastlane/metadata/android/en-US/changelogs/2001.txt b/fastlane/metadata/android/en-US/changelogs/2001.txt new file mode 100644 index 0000000000..65c72100a4 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/2001.txt @@ -0,0 +1,11 @@ +* allow customizing functional key layouts +* slightly adjust symbols and more symbols layouts +* add options to auto-show/hide toolbar +* add toast notification when copying text +* separate language switch key behavior from enablement +* add comma key popups for number and phone layouts +* make long-press pinning in toolbar optional +* move toolbar settings to a separate section +* add tab key +* understand ctrl, toolbar and other key labels in layouts +* minor fixes and improvements diff --git a/fastlane/metadata/android/en-US/changelogs/2002.txt b/fastlane/metadata/android/en-US/changelogs/2002.txt new file mode 100644 index 0000000000..751dfe1423 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/2002.txt @@ -0,0 +1,4 @@ +* add emoji toolbar key, by @codokie (#845, #837) +* improvements regarding duplicated letters (#225 and maybe others) +* avoid positioning cursor inside emojis (#859) +* minor fixes for recently added features diff --git a/fastlane/metadata/android/en-US/changelogs/2003.txt b/fastlane/metadata/android/en-US/changelogs/2003.txt new file mode 100644 index 0000000000..9bf1f6ba0f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/2003.txt @@ -0,0 +1,11 @@ +* customizable functional key layout +* slightly adjust symbols and more symbols layouts +* basic support for alt, ctrl, fn, meta keys +* extend toolbar (long-press functionality, optional long-press pinning, auto-show/hide, better clipboard toolbar, ...) +* add tab key +* add caps lock indicator +* add layouts for some languages +* add toolbar keys as keyboard keys +* allow customizing all colors +* toast notification when copying text +* bug fixes and further improvements, see full release notes diff --git a/fastlane/metadata/android/en-US/changelogs/2100.txt b/fastlane/metadata/android/en-US/changelogs/2100.txt new file mode 100644 index 0000000000..1bcb322565 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/2100.txt @@ -0,0 +1,8 @@ +* fix broken functional key layout for tablets +* only show language switch key when there is something to switch to +* make default colors for "all colors" setting random instead of gray +* allow customizing start lag for gestures during typing, by @devycarol +* allow customizing currency keys +* reduce long-press time for shift -> caps lock, by @devycarol +* extend superscript popups in number row and symbols layout, by @b02860de585071a2 +* minor fixes and improvements diff --git a/fastlane/metadata/android/en-US/changelogs/2200.txt b/fastlane/metadata/android/en-US/changelogs/2200.txt new file mode 100644 index 0000000000..133274e982 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/2200.txt @@ -0,0 +1,11 @@ +* add ability for saving / exporting custom themes +* make arrow keys on keyboard repeatable +* more cursor toolbar keys (page up/down(/start/end, word left/right) +* add paste key +* improve key swipe behavior +* add space swipe setting to toggle numpad +* add clipboard suggestion for recently copied text +* de-select text on pressing select keys again +* tune some colors in settings for Android 12+ +* adjust language dependent popup keys +* minor fixes and improvements diff --git a/fastlane/metadata/android/en-US/changelogs/2201.txt b/fastlane/metadata/android/en-US/changelogs/2201.txt new file mode 100644 index 0000000000..7c8756ed5e --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/2201.txt @@ -0,0 +1,2 @@ +* add visual options for gesture typing, by @devycarol (#944) +* update some icons, by @BlackyHawky (#977) diff --git a/fastlane/metadata/android/en-US/changelogs/2300.txt b/fastlane/metadata/android/en-US/changelogs/2300.txt new file mode 100644 index 0000000000..71c590ce2e --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/2300.txt @@ -0,0 +1,9 @@ +* Allow customizing number row, toolbar codes, icons, spacebar text, bottom row for emoji and clipboard views +* Decouple icon style from keyboard style +* Disable remove redundant popups by default (and add a small fix) +* Less aggressive addition of words to personal dictionary +* No vibration in do not disturb mode +* Improve performance when copying large texta +* Fix partially broken punctuation popups +* Fix some of the issues where text is duplicated +* Minor things and more bug fixes diff --git a/fastlane/metadata/android/en-US/changelogs/2301.txt b/fastlane/metadata/android/en-US/changelogs/2301.txt new file mode 100644 index 0000000000..71c590ce2e --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/2301.txt @@ -0,0 +1,9 @@ +* Allow customizing number row, toolbar codes, icons, spacebar text, bottom row for emoji and clipboard views +* Decouple icon style from keyboard style +* Disable remove redundant popups by default (and add a small fix) +* Less aggressive addition of words to personal dictionary +* No vibration in do not disturb mode +* Improve performance when copying large texta +* Fix partially broken punctuation popups +* Fix some of the issues where text is duplicated +* Minor things and more bug fixes diff --git a/fastlane/metadata/android/en-US/changelogs/3004.txt b/fastlane/metadata/android/en-US/changelogs/3004.txt new file mode 100644 index 0000000000..ce03950338 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3004.txt @@ -0,0 +1,11 @@ +* add layouts: Arabic Hija'i, Hebrew 1452-2, Hindi Phonetic, Dargwa (Urakhi), Baishakhi, Kurdish +* update some layouts +* support combining accents +* split keyboard toolbar key +* add .com popups +* allow setting custom font +* add font scale setting +* improve automatic language switching +* overhaul settings +* add settings for more tuning of keyboard padding, auto-space, auto-correction, number row +* more features and fixes diff --git a/fastlane/metadata/android/en-US/changelogs/3005.txt b/fastlane/metadata/android/en-US/changelogs/3005.txt new file mode 100644 index 0000000000..ce03950338 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3005.txt @@ -0,0 +1,11 @@ +* add layouts: Arabic Hija'i, Hebrew 1452-2, Hindi Phonetic, Dargwa (Urakhi), Baishakhi, Kurdish +* update some layouts +* support combining accents +* split keyboard toolbar key +* add .com popups +* allow setting custom font +* add font scale setting +* improve automatic language switching +* overhaul settings +* add settings for more tuning of keyboard padding, auto-space, auto-correction, number row +* more features and fixes diff --git a/fastlane/metadata/android/en-US/changelogs/3006.txt b/fastlane/metadata/android/en-US/changelogs/3006.txt new file mode 100644 index 0000000000..ce03950338 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3006.txt @@ -0,0 +1,11 @@ +* add layouts: Arabic Hija'i, Hebrew 1452-2, Hindi Phonetic, Dargwa (Urakhi), Baishakhi, Kurdish +* update some layouts +* support combining accents +* split keyboard toolbar key +* add .com popups +* allow setting custom font +* add font scale setting +* improve automatic language switching +* overhaul settings +* add settings for more tuning of keyboard padding, auto-space, auto-correction, number row +* more features and fixes diff --git a/fastlane/metadata/android/en-US/changelogs/3007.txt b/fastlane/metadata/android/en-US/changelogs/3007.txt new file mode 100644 index 0000000000..ce03950338 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3007.txt @@ -0,0 +1,11 @@ +* add layouts: Arabic Hija'i, Hebrew 1452-2, Hindi Phonetic, Dargwa (Urakhi), Baishakhi, Kurdish +* update some layouts +* support combining accents +* split keyboard toolbar key +* add .com popups +* allow setting custom font +* add font scale setting +* improve automatic language switching +* overhaul settings +* add settings for more tuning of keyboard padding, auto-space, auto-correction, number row +* more features and fixes diff --git a/fastlane/metadata/android/en-US/changelogs/3008.txt b/fastlane/metadata/android/en-US/changelogs/3008.txt new file mode 100644 index 0000000000..ce03950338 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3008.txt @@ -0,0 +1,11 @@ +* add layouts: Arabic Hija'i, Hebrew 1452-2, Hindi Phonetic, Dargwa (Urakhi), Baishakhi, Kurdish +* update some layouts +* support combining accents +* split keyboard toolbar key +* add .com popups +* allow setting custom font +* add font scale setting +* improve automatic language switching +* overhaul settings +* add settings for more tuning of keyboard padding, auto-space, auto-correction, number row +* more features and fixes diff --git a/fastlane/metadata/android/en-US/changelogs/3100.txt b/fastlane/metadata/android/en-US/changelogs/3100.txt new file mode 100644 index 0000000000..f4d90dce41 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3100.txt @@ -0,0 +1,10 @@ +* optionally suggest names of installed apps +* swipe to switch emoji categories +* display toast after restoring backup +* larger toolbar button and icon +* make comma accessible in popups when showing TLD popups +* add setting for default emoji skin tone +* add keycodes for left and right alt and ctrl keys +* add key label "timestamp" for more accessible timestamp key +* understand special key labels for popups in simple layouts +* minor fixes and improvements diff --git a/fastlane/metadata/android/en-US/changelogs/3101.txt b/fastlane/metadata/android/en-US/changelogs/3101.txt new file mode 100644 index 0000000000..758e259b01 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3101.txt @@ -0,0 +1,9 @@ +* optionally suggest names of installed apps +* swipe to switch emoji categories +* display toast after restoring backup +* make comma accessible in popups when showing TLD popups +* add setting for default emoji skin tone +* add keycodes for left and right alt and ctrl keys +* add key label "timestamp" for more accessible timestamp key +* understand special key labels for popups in simple layouts +* minor fixes and improvements diff --git a/fastlane/metadata/android/en-US/changelogs/3200.txt b/fastlane/metadata/android/en-US/changelogs/3200.txt new file mode 100644 index 0000000000..3bcdc133d3 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3200.txt @@ -0,0 +1,10 @@ +* add toolbar modes (allows hiding toolbar) +* add some missing emoji variants +* improve subtype screen and dictionary dialog +* fix colors when forcing dark mode +* move most of the portrait / landscape scale settings into a dialog +* remove translations of strings marked as non-translatable +* fix next-screen arrow direction for RTL languages +* fix proper loading of Hebrew locale on Android 15 +* have at least a basic keyboard when library doesn't work at all +* minor bug fixes diff --git a/fastlane/metadata/android/en-US/changelogs/3201.txt b/fastlane/metadata/android/en-US/changelogs/3201.txt new file mode 100644 index 0000000000..3bcdc133d3 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3201.txt @@ -0,0 +1,10 @@ +* add toolbar modes (allows hiding toolbar) +* add some missing emoji variants +* improve subtype screen and dictionary dialog +* fix colors when forcing dark mode +* move most of the portrait / landscape scale settings into a dialog +* remove translations of strings marked as non-translatable +* fix next-screen arrow direction for RTL languages +* fix proper loading of Hebrew locale on Android 15 +* have at least a basic keyboard when library doesn't work at all +* minor bug fixes diff --git a/fastlane/metadata/android/en-US/changelogs/3300.txt b/fastlane/metadata/android/en-US/changelogs/3300.txt new file mode 100644 index 0000000000..d93dda7558 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3300.txt @@ -0,0 +1,11 @@ +- capitalize suggestions when pressing shift +- add keycodes for broadcasting intents +- optionally display emoji descriptions, needs emoji dictionary +- improve hardware keyboard handling +- add "hide keyboard" option on vertical space swipe +- add latin subtype +- allow turning off emoji suggestions when adding an emoji dictionary +- fix missing emojis in split keyboard +- remove emojis that are not supposed to be used on their own +- fix issues with blacklist +- fix backspace behavior with some emojis diff --git a/fastlane/metadata/android/en-US/changelogs/3301.txt b/fastlane/metadata/android/en-US/changelogs/3301.txt new file mode 100644 index 0000000000..d93dda7558 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3301.txt @@ -0,0 +1,11 @@ +- capitalize suggestions when pressing shift +- add keycodes for broadcasting intents +- optionally display emoji descriptions, needs emoji dictionary +- improve hardware keyboard handling +- add "hide keyboard" option on vertical space swipe +- add latin subtype +- allow turning off emoji suggestions when adding an emoji dictionary +- fix missing emojis in split keyboard +- remove emojis that are not supposed to be used on their own +- fix issues with blacklist +- fix backspace behavior with some emojis diff --git a/fastlane/metadata/android/en-US/changelogs/3400.txt b/fastlane/metadata/android/en-US/changelogs/3400.txt new file mode 100644 index 0000000000..f9b4469466 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3400.txt @@ -0,0 +1,5 @@ +- Limit number of emojis suggested in suggestion strip to one (if possible) +- Fix bad space insertion +- Fix white text on white background on some devices +- Fix bad suggestions with `'` +- Add plural schwa ɜ to Italian diff --git a/fastlane/metadata/android/en-US/changelogs/3501.txt b/fastlane/metadata/android/en-US/changelogs/3501.txt new file mode 100644 index 0000000000..b366dafea9 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3501.txt @@ -0,0 +1,3 @@ +- Crash fixes +- Fix bad auto-correct introduced in 3.4 +- Vibrate on space and delete swipe if enabled diff --git a/fastlane/metadata/android/en-US/changelogs/3600.txt b/fastlane/metadata/android/en-US/changelogs/3600.txt new file mode 100644 index 0000000000..80bf68c82c --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3600.txt @@ -0,0 +1,12 @@ +* add inline emoji search +* optionally remember language / subtype per app +* haptic feedback fixes and improvements +* keep unpinned clipboard on app restart +* optionally display pinned clipboard entries last +* add optional emoji and clipboard bottom rows +* add button for dismissing inline suggestions +* add Bengali Khipro +* add Mirandese +* workaround for issues with hardware keyboard +* links to dictionaries now directly go to the file +* various minor fixes and improvements diff --git a/fastlane/metadata/android/en-US/changelogs/3601.txt b/fastlane/metadata/android/en-US/changelogs/3601.txt new file mode 100644 index 0000000000..80bf68c82c --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3601.txt @@ -0,0 +1,12 @@ +* add inline emoji search +* optionally remember language / subtype per app +* haptic feedback fixes and improvements +* keep unpinned clipboard on app restart +* optionally display pinned clipboard entries last +* add optional emoji and clipboard bottom rows +* add button for dismissing inline suggestions +* add Bengali Khipro +* add Mirandese +* workaround for issues with hardware keyboard +* links to dictionaries now directly go to the file +* various minor fixes and improvements diff --git a/fastlane/metadata/android/en-US/changelogs/3602.txt b/fastlane/metadata/android/en-US/changelogs/3602.txt new file mode 100644 index 0000000000..80bf68c82c --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3602.txt @@ -0,0 +1,12 @@ +* add inline emoji search +* optionally remember language / subtype per app +* haptic feedback fixes and improvements +* keep unpinned clipboard on app restart +* optionally display pinned clipboard entries last +* add optional emoji and clipboard bottom rows +* add button for dismissing inline suggestions +* add Bengali Khipro +* add Mirandese +* workaround for issues with hardware keyboard +* links to dictionaries now directly go to the file +* various minor fixes and improvements diff --git a/fastlane/metadata/android/en-US/changelogs/3603.txt b/fastlane/metadata/android/en-US/changelogs/3603.txt new file mode 100644 index 0000000000..80bf68c82c --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3603.txt @@ -0,0 +1,12 @@ +* add inline emoji search +* optionally remember language / subtype per app +* haptic feedback fixes and improvements +* keep unpinned clipboard on app restart +* optionally display pinned clipboard entries last +* add optional emoji and clipboard bottom rows +* add button for dismissing inline suggestions +* add Bengali Khipro +* add Mirandese +* workaround for issues with hardware keyboard +* links to dictionaries now directly go to the file +* various minor fixes and improvements diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt index 67cbe7a1a2..953c1e15af 100644 --- a/fastlane/metadata/android/en-US/full_description.txt +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -1,8 +1,30 @@ -OpenBoard is a 100% foss keyboard based on AOSP, with no dependency on Google binaries, that respects your privacy. +HeliBoard is a privacy-conscious open-source keyboard, based on AOSP / OpenBoard. +Does not use internet permission, and thus is 100% offline. Features: - - Spell correction - - Themes - - Emojis - -This app is opensource, the code is available here: https://github.com/dslul/openboard \ No newline at end of file +
    +
  • Add dictionaries for suggestions and spell check
  • +
      +
    • build your own, or get them here, or in the experimental section (quality may vary)
    • +
    • additional dictionaries for emojis or scientific symbols can be used to provide suggestions (similar to "emoji search")
    • +
    • note that for Korean layouts, suggestions only work using this dictionary, the tools in the dictionary repository are not able to create working dictionaries
    • +
    +
  • Customize keyboard themes (style, colors and background image)
  • +
      +
    • can follow the system's day/night setting on Android 10+ (and on some versions of Android 9)
    • +
    • can follow dynamic colors for Android 12+
    • +
    +
  • Customize keyboard layouts (only available when disabling use system languages)
  • +
  • Customize special layouts, like symbols, number, or functional key layout
  • +
  • Multilingual typing
  • +
  • Glide typing (only with closed source library ☹️)
  • +
      +
    • library not included in the app, as there is no compatible open source library available
    • +
    • can be extracted from GApps packages ("swypelibs"), or downloaded here (click on the file and then "raw" or the tiny download button)
    • +
    +
  • Clipboard history
  • +
  • One-handed mode
  • +
  • Split keyboard (only available if the screen is large enough)
  • +
  • Number pad
  • +
  • Backup and restore your settings and learned word / history data
  • +
diff --git a/fastlane/metadata/android/en-US/images/featureGraphic.png b/fastlane/metadata/android/en-US/images/featureGraphic.png index 75f1efdd36..efdb2bed60 100644 Binary files a/fastlane/metadata/android/en-US/images/featureGraphic.png and b/fastlane/metadata/android/en-US/images/featureGraphic.png differ diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png index 1d22dabc19..33d802d6a4 100644 Binary files a/fastlane/metadata/android/en-US/images/icon.png and b/fastlane/metadata/android/en-US/images/icon.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png new file mode 100644 index 0000000000..a0021f214f Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/10.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/10.png new file mode 100644 index 0000000000..37a3231071 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/10.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/11.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/11.png new file mode 100644 index 0000000000..9e3a75da9c Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/11.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/12.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/12.png new file mode 100644 index 0000000000..4393e429e6 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/12.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/13.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/13.png new file mode 100644 index 0000000000..ae63a23e26 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/13.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/14.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/14.png new file mode 100644 index 0000000000..928e3a5f5c Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/14.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/1_en-US.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/1_en-US.png deleted file mode 100644 index b13d973630..0000000000 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/1_en-US.png and /dev/null differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png new file mode 100644 index 0000000000..a9e447c379 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/2_en-US.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/2_en-US.png deleted file mode 100644 index 98d392096c..0000000000 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/2_en-US.png and /dev/null differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png new file mode 100644 index 0000000000..6e0f7a4347 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/3_en-US.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/3_en-US.png deleted file mode 100644 index fc21ce652a..0000000000 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/3_en-US.png and /dev/null differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png new file mode 100644 index 0000000000..b047ebd0fd Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/4_en-US.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/4_en-US.png deleted file mode 100644 index 867af82480..0000000000 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/4_en-US.png and /dev/null differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/5.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/5.png new file mode 100644 index 0000000000..7633966aa8 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/5.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/5_en-US.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/5_en-US.png deleted file mode 100644 index 8c645d1ada..0000000000 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/5_en-US.png and /dev/null differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/6.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/6.png new file mode 100644 index 0000000000..b2f964da1e Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/6.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/7.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/7.png new file mode 100644 index 0000000000..545d4bb718 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/7.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/8.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/8.png new file mode 100644 index 0000000000..a17866fe02 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/8.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/9.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/9.png new file mode 100644 index 0000000000..e9a97057d3 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/9.png differ diff --git a/fastlane/metadata/android/en-US/short_description.txt b/fastlane/metadata/android/en-US/short_description.txt index c58044b0d0..9fd60b2da9 100644 --- a/fastlane/metadata/android/en-US/short_description.txt +++ b/fastlane/metadata/android/en-US/short_description.txt @@ -1 +1 @@ -An opensource keyboard that does not spy on you! \ No newline at end of file +Customizable open-source keyboard diff --git a/fastlane/metadata/android/en-US/title.txt b/fastlane/metadata/android/en-US/title.txt index 62bb507b40..e9841ace0b 100644 --- a/fastlane/metadata/android/en-US/title.txt +++ b/fastlane/metadata/android/en-US/title.txt @@ -1 +1 @@ -OpenBoard \ No newline at end of file +HeliBoard diff --git a/fastlane/metadata/android/en-US/video.txt b/fastlane/metadata/android/en-US/video.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/fastlane/metadata/android/es-ES/short_description.txt b/fastlane/metadata/android/es-ES/short_description.txt new file mode 100644 index 0000000000..74199465af --- /dev/null +++ b/fastlane/metadata/android/es-ES/short_description.txt @@ -0,0 +1 @@ +Teclado personalizable de código abierto diff --git a/fastlane/metadata/android/es-ES/title.txt b/fastlane/metadata/android/es-ES/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/es-ES/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/et/changelogs/2100.txt b/fastlane/metadata/android/et/changelogs/2100.txt new file mode 100644 index 0000000000..cb13a170a4 --- /dev/null +++ b/fastlane/metadata/android/et/changelogs/2100.txt @@ -0,0 +1,8 @@ +* parandasime katkise funktsiooniklahvide paigutuse tahvelarvutites +* kuvame keelevahetajat, kui on seadistatud üle ühe keele +* valiku „kõik värvid“ vaikimisi värvid on nüüd halli asemel juhuslikud +* viibete viivitus on kirjutamisel kohandatav, autoriks @devycarol +* valuutanupud on kohandatavad +* vähendasime pika puudutuse kestust „shift -> caps lock“ valimisel, autoriks @devycarol +* laiemad ülaskripti hüpikaknad numbri- ja sümbolireas, autoriks @b02860de585071a2 +* pisiparandused ja täiendused diff --git a/fastlane/metadata/android/et/changelogs/2200.txt b/fastlane/metadata/android/et/changelogs/2200.txt new file mode 100644 index 0000000000..3cc2785f04 --- /dev/null +++ b/fastlane/metadata/android/et/changelogs/2200.txt @@ -0,0 +1,11 @@ +* võimalus salvestada ja eksportida kohandatud välimusi +* klahvistiku suunaklahvid on korratavad +* kursori lisaklahvid tööriistaribal (leht ↑/↓(/algusesse/lõppu, sõna ←/→) +* klahv kopeeritu asetamiseks +* parem klahviga viipamine +* tühikuklahviga viipamine, mis lülitab numbristiku sisse/välja +* lõikelauasoovitus viimati kopeeritud tekstiga +* valikuklahvide uus vajutus eemaldab tekstivaliku +* silusime seadistustes värve Android 12+ +* silusime keelekohaseid hüpikklahve +* pisiparandused, kohendused diff --git a/fastlane/metadata/android/et/changelogs/2201.txt b/fastlane/metadata/android/et/changelogs/2201.txt new file mode 100644 index 0000000000..4f396a6182 --- /dev/null +++ b/fastlane/metadata/android/et/changelogs/2201.txt @@ -0,0 +1,2 @@ +* lisasime visuaalsed valikud žestidega sisestuseks; @devycarol (#944) +* uuendasime mõned ikoonid; @BlackyHawky (#977) diff --git a/fastlane/metadata/android/et/changelogs/2300.txt b/fastlane/metadata/android/et/changelogs/2300.txt new file mode 100644 index 0000000000..9d6c4317fe --- /dev/null +++ b/fastlane/metadata/android/et/changelogs/2300.txt @@ -0,0 +1,9 @@ +* Võimalus kohandada ridade arvu, tööriistariba koode, ikoone, tühikuklahvi teksti, alumist emojide rida ja lõikelaua vaateid +* Eraldasime ikoonide ja klahvistiku stiilid +* Mittevajalike hüpikakende vaikimisi eemaldamine (pisiparandusega) +* Rahulikum meetod oma sõnastiku täiendamisel +* Eemaldasime rahulikust vaatest värina +* Parandasime jõudlust mahuka teksti kopeerimisel +* Parandasime hüpikakende osaliselt vigased kirjavahemärgid +* Parandasime mõned tekstidubleerimise vead +* Muud pisiparandused diff --git a/fastlane/metadata/android/et/changelogs/2301.txt b/fastlane/metadata/android/et/changelogs/2301.txt new file mode 100644 index 0000000000..9d6c4317fe --- /dev/null +++ b/fastlane/metadata/android/et/changelogs/2301.txt @@ -0,0 +1,9 @@ +* Võimalus kohandada ridade arvu, tööriistariba koode, ikoone, tühikuklahvi teksti, alumist emojide rida ja lõikelaua vaateid +* Eraldasime ikoonide ja klahvistiku stiilid +* Mittevajalike hüpikakende vaikimisi eemaldamine (pisiparandusega) +* Rahulikum meetod oma sõnastiku täiendamisel +* Eemaldasime rahulikust vaatest värina +* Parandasime jõudlust mahuka teksti kopeerimisel +* Parandasime hüpikakende osaliselt vigased kirjavahemärgid +* Parandasime mõned tekstidubleerimise vead +* Muud pisiparandused diff --git a/fastlane/metadata/android/et/changelogs/3004.txt b/fastlane/metadata/android/et/changelogs/3004.txt new file mode 100644 index 0000000000..f9be702402 --- /dev/null +++ b/fastlane/metadata/android/et/changelogs/3004.txt @@ -0,0 +1,11 @@ +* uued klahvipaigustused: araabia hija'i, heebrea 1452-2, hindi foneetiline, dargi (Urahhi), baišaki, kurdi +* mõnede klahvipaigustuste täiendused +* aktsentide kombineerimise tugi +* nupp klahvistiku poolitamiseks +* lisandusid .com hüpikaknad +* oma kirjatüübi valikuvõimalus +* kirjatüübi skaleerimise võimalus +* improve automatic language switching +* seadistuste kohendus +* lisaseadistused klahvide vaheruumi, tühikute lisamise, autokorrektsiooni ja ridade arvu jaoks +* pisitäiendused ja parandused diff --git a/fastlane/metadata/android/et/changelogs/3005.txt b/fastlane/metadata/android/et/changelogs/3005.txt new file mode 100644 index 0000000000..f9be702402 --- /dev/null +++ b/fastlane/metadata/android/et/changelogs/3005.txt @@ -0,0 +1,11 @@ +* uued klahvipaigustused: araabia hija'i, heebrea 1452-2, hindi foneetiline, dargi (Urahhi), baišaki, kurdi +* mõnede klahvipaigustuste täiendused +* aktsentide kombineerimise tugi +* nupp klahvistiku poolitamiseks +* lisandusid .com hüpikaknad +* oma kirjatüübi valikuvõimalus +* kirjatüübi skaleerimise võimalus +* improve automatic language switching +* seadistuste kohendus +* lisaseadistused klahvide vaheruumi, tühikute lisamise, autokorrektsiooni ja ridade arvu jaoks +* pisitäiendused ja parandused diff --git a/fastlane/metadata/android/et/changelogs/3006.txt b/fastlane/metadata/android/et/changelogs/3006.txt new file mode 100644 index 0000000000..f9be702402 --- /dev/null +++ b/fastlane/metadata/android/et/changelogs/3006.txt @@ -0,0 +1,11 @@ +* uued klahvipaigustused: araabia hija'i, heebrea 1452-2, hindi foneetiline, dargi (Urahhi), baišaki, kurdi +* mõnede klahvipaigustuste täiendused +* aktsentide kombineerimise tugi +* nupp klahvistiku poolitamiseks +* lisandusid .com hüpikaknad +* oma kirjatüübi valikuvõimalus +* kirjatüübi skaleerimise võimalus +* improve automatic language switching +* seadistuste kohendus +* lisaseadistused klahvide vaheruumi, tühikute lisamise, autokorrektsiooni ja ridade arvu jaoks +* pisitäiendused ja parandused diff --git a/fastlane/metadata/android/et/changelogs/3007.txt b/fastlane/metadata/android/et/changelogs/3007.txt new file mode 100644 index 0000000000..f9be702402 --- /dev/null +++ b/fastlane/metadata/android/et/changelogs/3007.txt @@ -0,0 +1,11 @@ +* uued klahvipaigustused: araabia hija'i, heebrea 1452-2, hindi foneetiline, dargi (Urahhi), baišaki, kurdi +* mõnede klahvipaigustuste täiendused +* aktsentide kombineerimise tugi +* nupp klahvistiku poolitamiseks +* lisandusid .com hüpikaknad +* oma kirjatüübi valikuvõimalus +* kirjatüübi skaleerimise võimalus +* improve automatic language switching +* seadistuste kohendus +* lisaseadistused klahvide vaheruumi, tühikute lisamise, autokorrektsiooni ja ridade arvu jaoks +* pisitäiendused ja parandused diff --git a/fastlane/metadata/android/et/changelogs/3008.txt b/fastlane/metadata/android/et/changelogs/3008.txt new file mode 100644 index 0000000000..f9be702402 --- /dev/null +++ b/fastlane/metadata/android/et/changelogs/3008.txt @@ -0,0 +1,11 @@ +* uued klahvipaigustused: araabia hija'i, heebrea 1452-2, hindi foneetiline, dargi (Urahhi), baišaki, kurdi +* mõnede klahvipaigustuste täiendused +* aktsentide kombineerimise tugi +* nupp klahvistiku poolitamiseks +* lisandusid .com hüpikaknad +* oma kirjatüübi valikuvõimalus +* kirjatüübi skaleerimise võimalus +* improve automatic language switching +* seadistuste kohendus +* lisaseadistused klahvide vaheruumi, tühikute lisamise, autokorrektsiooni ja ridade arvu jaoks +* pisitäiendused ja parandused diff --git a/fastlane/metadata/android/et/changelogs/3100.txt b/fastlane/metadata/android/et/changelogs/3100.txt new file mode 100644 index 0000000000..d8c5eeab63 --- /dev/null +++ b/fastlane/metadata/android/et/changelogs/3100.txt @@ -0,0 +1,10 @@ +* paigaldatud rakenduste nimede soovitamine (kui tahad) +* emojide kategooriate vahetamine viibates +* süsteemne teade peale varukoopiast taastamist +* suurem tööriistariba nupp ja ikoon +* koma on kasutatav ülataseme domeenide hüpikakendes +* emojide taust on nüüd seadistatav +* koodid vasaku ja parema alt ja ctrl klahvi jaoks +* ajatempli klahv on paremini märgitud +* eriklahvide sildid hüpikakende jaoks lihtsate paigutuste puhul +* pisiparandused ja täiendused diff --git a/fastlane/metadata/android/et/changelogs/3101.txt b/fastlane/metadata/android/et/changelogs/3101.txt new file mode 100644 index 0000000000..96559f7a76 --- /dev/null +++ b/fastlane/metadata/android/et/changelogs/3101.txt @@ -0,0 +1,9 @@ +* paigaldatud rakenduste nimede soovitamine (kui tahad) +* emojide kategooriate vahetamine viibates +* süsteemne teade peale varukoopiast taastamist +* koma on kasutatav ülataseme domeenide hüpikakendes +* emojide taust on nüüd seadistatav +* koodid vasaku ja parema alt ja ctrl klahvi jaoks +* ajatempli klahv on paremini märgitud +* eriklahvide sildid hüpikakende jaoks lihtsate paigutuste puhul +* pisiparandused ja täiendused diff --git a/fastlane/metadata/android/et/short_description.txt b/fastlane/metadata/android/et/short_description.txt new file mode 100644 index 0000000000..1116ef74de --- /dev/null +++ b/fastlane/metadata/android/et/short_description.txt @@ -0,0 +1 @@ +Avatud lähtekoodi põhinev kohandatav klahvistik diff --git a/fastlane/metadata/android/et/title.txt b/fastlane/metadata/android/et/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/et/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/fi-FI/changelogs/1001.txt b/fastlane/metadata/android/fi-FI/changelogs/1001.txt new file mode 100644 index 0000000000..eba1a034fd --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/1001.txt @@ -0,0 +1,20 @@ +* @FabianOvrWrt:n uusi kuvake, @the-eclectic-dyslexic (#517, #592) +* enemmän muokattavaa välilyöntinäppäimen ohjauslevyä ja kielenvaihtoa @arcarumilta (#486) +* lisää % siirtääksesi symbolien asettelua (#568, #428) +* parantaa käyttäytymistä, kun kielenvaihtonäppäin on asetettu vaihtamaan sekä kieltä että näppäimistöä +* Näytä linkkejä olemassa oleviin sanakirjoihin, kun lisäät sanakirjaa +* lisää Kaitag-asettelu @alkaitagi (#519) +* lisää Probhat-asettelu @fahimscirex (#489) +* valinnaisesti käänteinen työkalurivin järjestys RTL-kielille @codokien toimesta (#557, #574) +* mahdollistaa erikoisasettelujen mukauttamisen (numeronäppäimistö, puhelin, ...) + * vielä kokeellinen, koska perusasettelut voivat muuttua +* päivitys spellchecker.xml sisältämään maa-asetukset, joissa sanakirjat ovat saatavilla, mutta eivät sisälly sovellukseen +* päivitys käännöksiä (kiitos kaikille kääntäjille!) +* päivitys ndk:ltä @Syphyr (#560) +* päivitä automaattisen täytön koodi @arcarum (#595) +* Korjaa ongelma työkalupalkin näppäinvalintaikkunassa (#505) +* korjaa turkkilaisen asettelun ongelma (#508) +* Korjaa väärät kytkintilat käännettäessä mukautettuja värejä -näytössä (#563) +* Korjaa ongelma, jossa viimeaikaiset emojit eivät lataudu (#527) +* korjaa ongelma, jossa numerot eivät näy tietyissä kentissä (#585) +* Pieniä korjauksia diff --git a/fastlane/metadata/android/fi-FI/changelogs/1003.txt b/fastlane/metadata/android/fi-FI/changelogs/1003.txt new file mode 100644 index 0000000000..819096c238 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/1003.txt @@ -0,0 +1,9 @@ +* muuta automaattisen korjauksen kuvakkeita ja valitse kaikki työkalupalkin näppäimet @codokien avulla (#524, #651) +* lisää tšuvashin asettelu, tekijä @tenextractor (#677) +* lisää leikkaustyökalupalkin näppäin kirjoittaja @codokie (#678) +* päivitä Probhat-asetteluun @fahimscirex (#628) +* Näytä työkalupalkin kuvakkeet työkalupalkin näppäinvalintaikkunassa +* lisää sulkemispainike leikepöydän historiaan, kirjoittaja @codokie (#403, #649) +* lisää venäläinen (opiskelija) ulkoasu @Zolax9 (#640) +* tee numeronäppäimistöstä symbolien näppäimen pitkä painallus valinnaiseksi (#588) +* pieniä korjauksia ja parannuksia, mukaan lukien #632, #637, #638 @RHJihan diff --git a/fastlane/metadata/android/fi-FI/changelogs/1004.txt b/fastlane/metadata/android/fi-FI/changelogs/1004.txt new file mode 100644 index 0000000000..7c734c7a85 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/1004.txt @@ -0,0 +1,7 @@ +- päivitä serbialainen kyrillinen asettelu @markokocicilta (#704, #705) +- päivitä Viron ulkoasu @tenextractorilla (#693) +- korjaa päällekkäiset merkinnät leikepöydän historiassa @codokie (#616, #680) +- lisää vain tekstimerkintöjä leikepöydän historiaan kirjoittaja @codokie (#711) +- parempia kuvia metatiedoissa kirjoittaja @RHJihan (#713) +- Aseta kuvakkeiden väri oikein työkalupalkin valintaikkunassa @codokie (#715, #716) +- muut korjaukset (#684, #723 ja enemmän) diff --git a/fastlane/metadata/android/fi-FI/changelogs/2000.txt b/fastlane/metadata/android/fi-FI/changelogs/2000.txt new file mode 100644 index 0000000000..da88935963 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/2000.txt @@ -0,0 +1,10 @@ +* Lisää perustuki muokkausnäppäimille +* Lisää pitkän painalluksen toimintoja useisiin työkalupalkin näppäimiin +* ja muita leikepöydän historiatyökalupalkin näppäimiä +* Tee leikepöydän historiatyökalurivistä muokattavissa +* mahdollistaa kaikkien värien mukauttamisen +* Lisää asetus näyttääksesi aina keskimmäisenä ehdotuksena syötettävän sanan +* Lisää caps lock -ilmaisin +* lisää piemontese, itämari, mansi, laajennetut asettelut kannadalle ja unkarille +* Korjaa leikattu teksti avainten esikatselun ponnahdusikkunassa joissakin laitteissa +* lisää korjauksia ja parannuksia, katso julkaisutiedot diff --git a/fastlane/metadata/android/fi-FI/changelogs/2001.txt b/fastlane/metadata/android/fi-FI/changelogs/2001.txt new file mode 100644 index 0000000000..6611331db1 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/2001.txt @@ -0,0 +1,11 @@ +* mahdollistaa toiminnallisten näppäinasettelujen mukauttamisen +* Säädä hieman symboleja ja lisää symbolien asetteluja +* Lisää vaihtoehtoja automaattiseen näyttöön / piilotukseen +* lisää paahtoleipäilmoitus tekstiä kopioitaessa +* erota kielenvaihtonäppäimen toiminta käyttöönotosta +* Lisää pilkkunäppäinten ponnahdusikkunoita numero- ja puhelinasetteluja varten +* Tee pitkän painalluksen kiinnittäminen työkalurivillä valinnaiseksi +* Siirrä työkalupalkin asetukset erilliseen osioon +* Lisää sarkainnäppäin +* Ymmärtää ctrl-, työkalurivin ja muiden asettelujen näppäinten tunnisteet +* pieniä korjauksia ja parannuksia diff --git a/fastlane/metadata/android/fi-FI/changelogs/2002.txt b/fastlane/metadata/android/fi-FI/changelogs/2002.txt new file mode 100644 index 0000000000..23f42ba396 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/2002.txt @@ -0,0 +1,4 @@ +* lisää emoji-työkalupalkkinäppäin, kirjoittaja @codokie (#845, #837) +* parannuksia kopioituihin kirjeisiin (#225 ja ehkä muita) +* Vältä kursorin sijoittamista emojien sisään (#859) +* Pienet korjaukset äskettäin lisättyihin ominaisuuksiin diff --git a/fastlane/metadata/android/fi-FI/changelogs/2003.txt b/fastlane/metadata/android/fi-FI/changelogs/2003.txt new file mode 100644 index 0000000000..712c5556ad --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/2003.txt @@ -0,0 +1,11 @@ +* Muokattava toiminnallinen näppäinasettelu +* Säädä hieman symboleja ja lisää symbolien asetteluja +* Perustuki alt-, ctrl-, fn- ja metanäppäimille +* laajentaa työkaluriviä (pitkä painallustoiminto, valinnainen pitkän painalluksen kiinnitys, automaattinen näyttö/piilota, parempi leikepöydän työkalupalkki, ...) +* Lisää sarkainnäppäin +* Lisää caps lock -ilmaisin +* Lisää asetteluja joillekin kielille +* Lisää työkalupalkin näppäimiä näppäimistön näppäimiksi +* mahdollistaa kaikkien värien mukauttamisen +* Paahtoleipäilmoitus tekstiä kopioitaessa +* Viankorjauksia ja muita parannuksia, katso täydelliset julkaisutiedot diff --git a/fastlane/metadata/android/fi-FI/changelogs/2100.txt b/fastlane/metadata/android/fi-FI/changelogs/2100.txt new file mode 100644 index 0000000000..e0bbe0dbe2 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/2100.txt @@ -0,0 +1,8 @@ +* Korjaa rikkinäinen toiminnallinen näppäinasettelu tableteille +* Näytä kielenvaihtopainike vain, kun on jotain vaihdettavaa +* tee "kaikki värit" -asetuksen oletusvärit satunnaiseksi harmaan sijaan +* @devycarol mahdollistaa eleiden alkamisviiveen mukauttamisen kirjoittamisen aikana +* mahdollistaa valuuttaavainten mukauttamisen +* lyhennä pitkiä painalluksia shift -> caps lock, kirjoittaja @devycarol +* laajentaa yläindeksin ponnahdusikkunoita numerorivien ja symbolien asetteluun, kirjoittaja @b02860de585071a2 +* pieniä korjauksia ja parannuksia diff --git a/fastlane/metadata/android/fi-FI/changelogs/2200.txt b/fastlane/metadata/android/fi-FI/changelogs/2200.txt new file mode 100644 index 0000000000..fed6b1b935 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/2200.txt @@ -0,0 +1,11 @@ +* Lisää mahdollisuus tallentaa / viedä mukautettuja teemoja +* Tee näppäimistön nuolinäppäimet toistettavissa +* lisää kohdistimen työkalupalkin näppäimiä (sivu ylös/alas (/aloitus/loppu, sana vasen/oikea) +* Lisää liitäavain +* Paranna näppäinten pyyhkäisykäyttäytymistä +* lisää välilyöntipyyhkäisyasetus vaihtaaksesi numeronäppäimistöä +* Lisää leikepöydälle ehdotus äskettäin kopioitua tekstiä varten +* Poista tekstin valinta painamalla valintanäppäimiä uudelleen +* viritä joitain värejä Android 12+:n asetuksista +* Säädä kielestä riippuvia ponnahdusnäppäimiä +* pieniä korjauksia ja parannuksia diff --git a/fastlane/metadata/android/fi-FI/changelogs/2201.txt b/fastlane/metadata/android/fi-FI/changelogs/2201.txt new file mode 100644 index 0000000000..2561c15b4b --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/2201.txt @@ -0,0 +1,2 @@ +* lisää visuaalisia vaihtoehtoja piirtokirjoitukseen, @devycarol (#944) +* päivitä joitain kuvakkeita, @BlackyHawky (#977) diff --git a/fastlane/metadata/android/fi-FI/changelogs/2300.txt b/fastlane/metadata/android/fi-FI/changelogs/2300.txt new file mode 100644 index 0000000000..36ff8501f7 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/2300.txt @@ -0,0 +1,9 @@ +* Salli numerorivin, työkalurivin koodien, kuvakkeiden, välilyöntitekstin, alarivin mukauttaminen emoji- ja leikepöytänäkymiä varten +* Erota kuvaketyyli näppäimistötyylistä +* Poista tarpeettomat ponnahdusikkunat oletuksena käytöstä (ja lisää pieni korjaus) +* Vähemmän aggressiivinen sanojen lisääminen henkilökohtaiseen sanakirjaan +* Ei värinää Älä häiritse -tilassa +* Paranna suorituskykyä kopioitaessa suurta tekstiä +* Korjaa osittain rikkinäiset välimerkit ponnahdusikkunat +* Korjaa jotkin ongelmat, joissa teksti on päällekkäistä +* Pienet asiat ja lisää viankorjauksia diff --git a/fastlane/metadata/android/fi-FI/changelogs/2301.txt b/fastlane/metadata/android/fi-FI/changelogs/2301.txt new file mode 100644 index 0000000000..36ff8501f7 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/changelogs/2301.txt @@ -0,0 +1,9 @@ +* Salli numerorivin, työkalurivin koodien, kuvakkeiden, välilyöntitekstin, alarivin mukauttaminen emoji- ja leikepöytänäkymiä varten +* Erota kuvaketyyli näppäimistötyylistä +* Poista tarpeettomat ponnahdusikkunat oletuksena käytöstä (ja lisää pieni korjaus) +* Vähemmän aggressiivinen sanojen lisääminen henkilökohtaiseen sanakirjaan +* Ei värinää Älä häiritse -tilassa +* Paranna suorituskykyä kopioitaessa suurta tekstiä +* Korjaa osittain rikkinäiset välimerkit ponnahdusikkunat +* Korjaa jotkin ongelmat, joissa teksti on päällekkäistä +* Pienet asiat ja lisää viankorjauksia diff --git a/fastlane/metadata/android/fi-FI/full_description.txt b/fastlane/metadata/android/fi-FI/full_description.txt new file mode 100644 index 0000000000..8ba5501915 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/full_description.txt @@ -0,0 +1,30 @@ +HeliBoard on yksityisyyttä kunnioittava avoimen lähdekoodin näppäimistö, joka perustuu AOSP / OpenBoardiin. +Ei käytä Internet-lupaa, joten on kokonaan ei-verkkotilassa. + +Ominaisuudet: +
    +
  • Lisää sanakirjoja ehdotuksia ja oikeinkirjoituksen tarkistusta varten
  • +
      +
    • rakenna omasi tai hanki ne täältä tai kokeellinen toukokuu -osiossa (laatu voi vaihdella)
    • +
    • hymiöiden tai tieteellisten symbolien lisäsanakirjoja voidaan käyttää ehdotusten antamiseen (samanlainen kuin "emojihaku")
    • +
    • huomaa, että korean asetteluissa ehdotukset toimivat vain käyttämällä tätä sanakirjaa. Sanakirjan työskentelytyökalut eivät ole käytettävissä.
    • +
    +
  • Muokkaa näppäimistöteemoja (tyyli, värit ja taustakuva)
  • +
      +
    • voi seurata järjestelmän päivä/yö-asetuksia Android 10+ -versiossa (ja joissakin Android 9:n versioissa)
    • +
    • voi seurata dynaamisia värejä Android 12+:lle
    • +
    +
  • Muokkaa näppäimistön asetteluja (käytettävissä vain, kun käytä järjestelmäkieliä)
  • +
  • Muokkaa erikoisasetteluja, kuten symboleja, numeroita tai toiminnallisten näppäinten asettelua.
  • +
  • Monikielinen kirjoittaminen
  • +
  • Liukukirjoitus (vain suljetun lähdekoodin kirjastossa ☹️)
  • +
      +
    • kirjasto ei sisälly sovellukseen, koska saatavilla ei ole yhteensopivaa avoimen lähdekoodin kirjastoa
    • +
    • voidaan purkaa GApps-paketeista ("swypelibs") tai ladata täällä (napsauta tiedostoa ja sitten "raw" tai pieni latauspainike)
    • +
    +
  • Leikepöydän historia
  • +
  • Yhden käden tila
  • +
  • Jaettu näppäimistö (käytettävissä vain, jos näyttö on riittävän suuri)
  • +
  • Numeronäppäimistö
  • +
  • Varmuuskopioi ja palauta asetuksesi ja opitut sana-/historiatiedot
  • +
diff --git a/fastlane/metadata/android/fi-FI/short_description.txt b/fastlane/metadata/android/fi-FI/short_description.txt new file mode 100644 index 0000000000..9b9c192631 --- /dev/null +++ b/fastlane/metadata/android/fi-FI/short_description.txt @@ -0,0 +1 @@ +Muokattava avoimen lähdekoodin näppäimistö diff --git a/fastlane/metadata/android/fi-FI/title.txt b/fastlane/metadata/android/fi-FI/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/fi-FI/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/fr-FR/changelogs/1001.txt b/fastlane/metadata/android/fr-FR/changelogs/1001.txt new file mode 100644 index 0000000000..2167c1f099 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/1001.txt @@ -0,0 +1,20 @@ +* nouvel icône de @FabianOvrWrt avec la contribution de @the-eclectic-dyslexic (#517, #592) +* plus de customisation de la barre espace du pavé tactile +* ajout du % pour les mises en page des symboles shift (#568, #428) +* amélioration du comportement quand la touche de changement de langue est définie pour changer à la fois la langue et le clavier +* afficher les liens aux dictionnaires existants quand un dctionnaire est ajouté +* ajout de la disposition de clavier Kaïtag par @alkaitagi (#519) +* ajout de la disposition de clavier Probhat par @fahimscirex (#489) +* ordre inversé optionnel de la barre d'outils pour les langues RTL par @codokie (#557, #574) +* autorisation de customisation de mises en page particulières (pavé numérique, téléphone, ...) + * en cours d'expérimentation, car les schémas de base peuvent changer +* mise à jour de spellchecker.xml pour inclure les lieux où les dictionnaires sont disponibles, mais n'est pas inclus dans l'application +* mise à jour des traductions (merci aux traducteur·rices !) +* amélioration du ndk par @Syphyr (#560) +* amélioration du code de remplissage automatique en ligne par @arcarum (#595) +* problème corrigé avec la fenêtre de la touche de la barre d'outils (#505) +* problème corrigé avec la disposition turque (#508) +* correction des mauvais switch states lors de la rotation dans l'écran de personnalisation des couleurs (#563) +* problème corrigé avec les récents émojis qui ne chargent pas (#527) +* problème corrigé avec les numbers qui ne s'affichent pas dans certains champs (#585) +* quelques petites corrections diff --git a/fastlane/metadata/android/fr-FR/changelogs/1003.txt b/fastlane/metadata/android/fr-FR/changelogs/1003.txt new file mode 100644 index 0000000000..7481b7f680 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/1003.txt @@ -0,0 +1,9 @@ +* changement des icônes pour l'autocorrection et la sélection de toutes les touches de la barre d'outils par @codokie (#524, #651) +* ajout de la disposition de clavier Tchouvache par @tenextractor (#677) +* ajout de la touche pour couper dans la barre d'outils par @codokie (#678) +* mise à jour de la disposition de clavier Probhat par @fahimscirex (#628) +* affichage des icônes de la barre d'outils dans la fenêtre des touches +* ajout d'un bouton pour fermer dans l'historique du presse-papier par @codokie (#403, #649) +* ajout de la disposition russe (student) par @Zolax9 (#640) +* rendre les appuis longs sur les symboles du pavé numérique optionnels +* corrections et améliorations mineures, en incluant #632, #637, #638 par @RHJihan diff --git a/fastlane/metadata/android/fr-FR/changelogs/1004.txt b/fastlane/metadata/android/fr-FR/changelogs/1004.txt new file mode 100644 index 0000000000..7d2651e5cf --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/1004.txt @@ -0,0 +1,7 @@ +- mise à jour de la disposition de clavier cyrillique serbe par @markokocic (#704, #705) +- mise à jour de la disposition de clavier estonienne par @tenextractor (#693) +- correction des entrées dupliquées dans l'historique du presse-papier par @codokie (#616, #680) +- ajouter uniquement les entrées de texte dans l'historique du presse-papier par @codokie (#711) +- meilleures images dans les métadatas par @RHJihan (#713) +- réglage correct de la couleur des icônes dans la fenêtre de sélection de la barre d'outils par @codokie (#715, #716) +- autres corrections (#684, #723 and more) diff --git a/fastlane/metadata/android/fr-FR/changelogs/2000.txt b/fastlane/metadata/android/fr-FR/changelogs/2000.txt new file mode 100644 index 0000000000..4b39417047 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/2000.txt @@ -0,0 +1,10 @@ +* ajout d'une aide de base pour les modifier keys +* ajout de fonctions d'appuis longs à plus de touches de la barre d'outils +* et plus de touches de la barre d'outils pour l'historique du presse-papier +* rendre la barre d'outils de l'historique du presse-papier personnalisable +* autoriser la customisation de toutes les couleurs +* ajout d'un paramètre pour toujours afficher le mot qui doit être entré en tant que suggestion du milieu +* ajout d'un indicateur de touche majuscule enfoncée +* ajout des dispositions de clavier piémontais, mari de l'est et mansi pour le kannada et l'hongrois +* Correction du texte coupé dans la popup de prévisualisation sur certains appareils +* corrections et améliorations plus lointaines, voir notes de publication diff --git a/fastlane/metadata/android/fr-FR/full_description.txt b/fastlane/metadata/android/fr-FR/full_description.txt new file mode 100644 index 0000000000..c1cac934b9 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/full_description.txt @@ -0,0 +1,29 @@ +HeliBoard est un clavier open-source respectueux de la vie privée, basé sur AOSP / OpenBoard. +N'utilise pas l'autorisation internet et est donc 100% hors ligne. + +Caractéristiques : +
    +
  • Ajouter des dictionnaires pour les suggestions et la vérification de l'orthographe
  • +
      +
    • construisez les vôtres ou obtenez-les ici, ou dans la section expérimental (la qualité peut varier)
    • +
    • des dictionnaires supplémentaires pour les emojis ou les symboles scientifiques peuvent être utilisés pour fournir des suggestions (similaires à la "recherche d'emojis")
    • +
    • Notez que pour les mises en page coréennes, les suggestions ne fonctionnent qu'en utilisant ce dictionnaire ; les outils du dépôt des dictionnaires ne sont pas en mesure de créer des dictionnaires fonctionnels
    • +
    +
  • Personnalisation des thèmes du clavier (style, couleurs et image de fond)
  • +
      +
    • peut utiliser les paramètres jour/nuit du système sur Android 10+ (et sur certaines versions d'Android 9)
    • +
    • peut utiliser les couleurs dynamiques pour Android 12+
    • +
    +
  • Personnaliser les dispositions du clavier (disponible uniquement lorsque l'option "utiliser les langues du système" est désactivée)
  • +
  • Saisie multilingue
  • +
  • Saisie par glissement (uniquement avec une bibliothèque à code source privé ☹️)
  • +
      +
    • bibliothèque non incluse dans l'application car il n'y a pas de bibliothèque open source compatible disponible
    • +
    • peut être extraite des paquets GApps ("swypelibs"), ou téléchargée ici
    • +
    +
  • Historique du presse-papiers
  • +
  • Mode à une main
  • +
  • Clavier fractionné (disponible uniquement si l'écran est suffisamment grand)
  • +
  • Pavé numérique
  • +
  • Sauvegarde et restauration des mots appris et des historiques
  • +
diff --git a/fastlane/metadata/android/fr-FR/short_description.txt b/fastlane/metadata/android/fr-FR/short_description.txt new file mode 100644 index 0000000000..995627e89c --- /dev/null +++ b/fastlane/metadata/android/fr-FR/short_description.txt @@ -0,0 +1 @@ +Clavier open-source personnalisable diff --git a/fastlane/metadata/android/fr-FR/title.txt b/fastlane/metadata/android/fr-FR/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/fr-FR/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/gl-ES/changelogs/1001.txt b/fastlane/metadata/android/gl-ES/changelogs/1001.txt new file mode 100644 index 0000000000..5b0bbb450e --- /dev/null +++ b/fastlane/metadata/android/gl-ES/changelogs/1001.txt @@ -0,0 +1,20 @@ +* nova icona por @FabianOvrWrt coa colaboración de @the-eclectic-dyslexic (#517, #592) +* barra de espazo de cambio de idioma máis personalizables, por @arcarum (#486) +* engadir % á disposición alternativa de símbolos (#568, #428) +* mellora do comportamento cando a tecla de cambio de idioma se configura para cambiar de teclado e de idioma +* mostra ligazón aos dicionarios existentes ao engadir un dicionario +* disposición Kaitag por @alkaitagi (#519) +* disposición Probhat por @fahimscirex (#489) +* darlle a volta á barra de ferramentas para idiomas RTL por @codokie (#557, #574) +* permitir personalizar disposicións especiais (telcado numérico, teléfono, ...) + * aínda experimental, polo que podería cambiar a disposición base +* actualizado spellchecker.xml para incluír os idiomas cando están dispoñibles os dicionarios, pero non incluídos na app +* traducións actualizadas (grazas ás tradutoras!) +* actualización de ndk por @Syphyr (#560) +* actualización do código do autocompletado por @arcarum (#595) +* arranxo da incidencia co diálogo da tecla da barra de ferramentas (#505) +* arranco da incidencia coa disposición do teclado turco (#508) +* arranxo dos estados non válidos ao rotar o dispositivo na pantalla de cores personalizadas (#563) +* arranxo da incidencia dos emojis recentes que non se cargaban (#527) +* arranxo da incidencia cos número que non aparecían en determinados campos (#585) +* outros arranxos menores diff --git a/fastlane/metadata/android/gl-ES/changelogs/1003.txt b/fastlane/metadata/android/gl-ES/changelogs/1003.txt new file mode 100644 index 0000000000..07712a989c --- /dev/null +++ b/fastlane/metadata/android/gl-ES/changelogs/1003.txt @@ -0,0 +1,9 @@ +* cambia as iconas para a corrección automática e selecciona todas as teclas da barra de ferramentas por @codokie (#524, #651) +* engadir a disposición Chuvash por @tenextractor (#677) +* engadir a tecla de Cortar á barra por @codokie (#678) +* actualizar a disposición Probhat por @fahimscirex (#628) +* mostrar as iconas da barra de ferramentas no diálogo de teclas da barra de ferramentas +* engadir o botón de pechar no historial do portapapeis por @codokie (#403, #649) +* engadir o disposición rusa (Studet) por @Zolax9 (#640) +* facer que o teclado numérico sexa optativo coa pulsación longa da tecla de símbolos (#588) +* arranxos e melloras menores, incluíndo #632, #637, #638 por @RHJihan diff --git a/fastlane/metadata/android/gl-ES/changelogs/1004.txt b/fastlane/metadata/android/gl-ES/changelogs/1004.txt new file mode 100644 index 0000000000..a230205d75 --- /dev/null +++ b/fastlane/metadata/android/gl-ES/changelogs/1004.txt @@ -0,0 +1,7 @@ +- actualizar a disposición Serbio Cirílico por @markokocic (#704, #705) +- actualizar a disposición do Estonio por @tenextractor (#693) +- corrixir as entradas duplicadas no historial do portapapeis por @codokie (#616, #680) +- só engade entradas de texto ao historial do portapapeis por @codokie (#711) +- mellores imaxes nos metadatos por @RHJihan (#713) +- pór a cor correcta das iconas no diálogo de selección da barra de ferramentas por @codokie (#715, #716) +- outros arranxos (#684, #723 e outras) diff --git a/fastlane/metadata/android/gl-ES/changelogs/2000.txt b/fastlane/metadata/android/gl-ES/changelogs/2000.txt new file mode 100644 index 0000000000..f946152b0f --- /dev/null +++ b/fastlane/metadata/android/gl-ES/changelogs/2000.txt @@ -0,0 +1,10 @@ +* engadir soporte básico para teclas modificadas +* engadir funcións de pulsación longa a máis teclas da barra +* e máis teclas da barra para historial do portapapeis +* facer personalizable o historial do portapapeis +* permitir personalizar todas as cores +* engadir axuste para mostrar a palabra para ser engadida como suxestión do medio +* engadir indicador de maiúsculas +* engadir disposicións Piedmontese, Eastern Mari, Mansi e disposicións extendidas para Kannada e Húngaro +* arranxo do texto recortado no emerxente dalgunhas teclas en algúns dispositivos +* máis melloras e arranxos, ver notas da versión diff --git a/fastlane/metadata/android/gl-ES/full_description.txt b/fastlane/metadata/android/gl-ES/full_description.txt new file mode 100644 index 0000000000..f603bce3f6 --- /dev/null +++ b/fastlane/metadata/android/gl-ES/full_description.txt @@ -0,0 +1,30 @@ +HeliBoard é un teclado de código aberto para coidar a túa privacidade, baseado en AOSP / OpenBoard. +Non precisa permiso de acceso a internet, xa que é 100% sen conexión á rede. + +Características: +
    +
  • Engade dicionarios para suxestións e ortografía.
  • +
      +
    • fai o teu propio, ou descárgao aquí, ou na sección experimental (calidade variable)
    • +
    • pódense usar dicionarios adicionais para emojis ou símbolos científicos para obter suxestións (semellante a "buscar emoji")
    • +
    • ten en conta que para suxestións da disposición Coreana, éstas so funcionan se usas este dicionario, as ferramentas no repositorio de dicionarios non son para crear dicionarios funcionais
    • +
    +
  • Personaliza a aparencia do teclado (estilo, cores e imaxe de fondo)
  • +
      +
    • pode seguir o axuste do sistema día/noite en Android 10+ (e algunhas versións de Android 9)
    • +
    • pode seguir as cores dinámicas de Android 12+
    • +
    +
  • Personaliza a disposición teclado (só dispoñible ao desactivar Usar Idiomas do Sistema)
  • +
  • Personaliza disposicións especiais, como símbolos, números ou teclas de función
  • +
  • Escritura con varios idiomas
  • +
  • Escribe desprazándote (só cunha biblioteca de código privativo ☹️)
  • +
      +
    • a biblioteca non está incluída na app ao non haber unha biblioteca de código aberto compatible
    • +
    • pode extraerse dos paquetes GApps ("swypelibs"), ou descargala aquí (preme no ficheiro e despois "cru" ou o pequeno botón de descargar)
    • +
    +
  • Historial do portapapeis
  • +
  • Modo Unha sóa man
  • +
  • Teclado separado (só se a pantalla é grande abondo)
  • +
  • Teclado numérico
  • +
  • Copia e restablecemento dos axustes e das palabras aprendidas e historial
  • +
diff --git a/fastlane/metadata/android/gl-ES/short_description.txt b/fastlane/metadata/android/gl-ES/short_description.txt new file mode 100644 index 0000000000..cbf3e1b49a --- /dev/null +++ b/fastlane/metadata/android/gl-ES/short_description.txt @@ -0,0 +1 @@ +Teclado personalizable e de código aberto diff --git a/fastlane/metadata/android/gl-ES/title.txt b/fastlane/metadata/android/gl-ES/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/gl-ES/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/hu-HU/changelogs/1001.txt b/fastlane/metadata/android/hu-HU/changelogs/1001.txt new file mode 100644 index 0000000000..b30ee94174 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/1001.txt @@ -0,0 +1,9 @@ +* Új ikon +* Jobban testreszabható szóköz-érintőpad és nyelvváltás +* % hozzáadása a shift-szimbólumok elrendezéséhez +* Javított viselkedés, ha a nyelvváltó billentyű a nyelv és a billentyűzet együttes váltására van beállítva +* Meglévő szótárakra mutató hivatkozások megjelenítése szótár hozzáadásakor +* Kaitag és Probhat elrendezés hozzáadása +* Megfordítható eszköztár-sorrend RTL nyelvekhez + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/1003.txt b/fastlane/metadata/android/hu-HU/changelogs/1003.txt new file mode 100644 index 0000000000..c937f20892 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/1003.txt @@ -0,0 +1,9 @@ +* Ikonok cseréje az automatikus javítás és az összes kijelölése eszköztár-gombokhoz +* Csuvas elrendezés hozzáadása +* Kivágás eszköztárgomb hozzáadása +* Probhat elrendezés frissítése +* Eszköztár ikonok megjelenítése az eszköztárgomb-párbeszédablakban +* Bezárás billentyű hozzáadása a vágólapelőzményekhez +* Orosz (Tanuló) elrendezés hozzáadása +* Számbillentyűzet a szimbólumbillentyű nyomva tartásával nem kötelezővé tétele +* Kisebb javítások és fejlesztések diff --git a/fastlane/metadata/android/hu-HU/changelogs/1004.txt b/fastlane/metadata/android/hu-HU/changelogs/1004.txt new file mode 100644 index 0000000000..1382992e18 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/1004.txt @@ -0,0 +1,7 @@ +- Szerb cirill elrendezés frissítése @markokocic-tól (#704, #705) +- Észt elrendezés frissítése @tenextractor-tól (#693) +- Duplikált bejegyzések javítása a vágólapelőzményekben @codokie-tól (#616, #680) +- Csak szöveges bejegyzések hozzáadása a vágólapelőzményekhez @codokie-tól (#711) +- Jobb képek a metaadatokban @RHJihan-tól (#713) +- Ikonok színének megfelelő beállítása az eszköztár-választó párbeszédablakban @codokie-tól (#715, #716) +- Egyéb javítások (#684, #723 és még több) diff --git a/fastlane/metadata/android/hu-HU/changelogs/2000.txt b/fastlane/metadata/android/hu-HU/changelogs/2000.txt new file mode 100644 index 0000000000..f9ecc4e633 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/2000.txt @@ -0,0 +1,9 @@ +* Módosítóbillentyűk alapszintű támogatása +* Hosszú lenyomás funkciók több eszköztárgombhoz +* További és testreszabható vágólapelőzmény-eszköztárgombok +* Minden szín testreszabásának engedélyezése +* Beállítás a beírt szó középső javaslatként való megjelenítéséhez +* Caps lock jelző hozzáadása +* Új elrendezések (piemonti, keleti mari, manysi, kiterjesztett kanadai, magyar) + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/2001.txt b/fastlane/metadata/android/hu-HU/changelogs/2001.txt new file mode 100644 index 0000000000..d554a6a732 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/2001.txt @@ -0,0 +1,8 @@ +* Funkcióbillentyű-elrendezések testreszabásának engedélyezése +* Szimbólumok és további szimbólumok elrendezésének enyhe módosítása +* Opciók hozzáadása az eszköztár automatikus megjelenítéséhez/elrejtéséhez +* Felugró értesítés hozzáadása szöveg másolásakor +* Nyelvváltó billentyű viselkedésének szétválasztása az engedélyezéstől +* Vesszőbillentyű felugró ablakainak hozzáadása a szám- és telefonelrendezésekhez + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/2002.txt b/fastlane/metadata/android/hu-HU/changelogs/2002.txt new file mode 100644 index 0000000000..60dc4216a5 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/2002.txt @@ -0,0 +1,4 @@ +* Emodzsi eszköztárbillentyű hozzáadása @codokie-tól (#845, #837) +* Fejlesztések a duplikált betűkkel kapcsolatban (#225 és talán mások) +* Kurzor elhelyezésének elkerülése az emodzsikon belül (#859) +* Kisebb javítások a nemrég hozzáadott funkciókhoz diff --git a/fastlane/metadata/android/hu-HU/changelogs/2003.txt b/fastlane/metadata/android/hu-HU/changelogs/2003.txt new file mode 100644 index 0000000000..b6b47c0ec9 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/2003.txt @@ -0,0 +1,9 @@ +* Testre szabható funkcióbillentyű-elrendezés +* Szimbólumok és további szimbólumok elrendezésének enyhe módosítása +* Alt, ctrl, fn, meta billentyűk alapszintű támogatása +* Eszköztár bővítése (hosszú lenyomás funkció, nem kötelező hosszú lenyomásos rögzítés, automatikus megjelenítés/elrejtés, jobb vágólap eszköztár, ...) +* Tabulátor billentyű hozzáadása +* Caps lock jelző hozzáadása +* Elrendezések hozzáadása néhány nyelvhez + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/2100.txt b/fastlane/metadata/android/hu-HU/changelogs/2100.txt new file mode 100644 index 0000000000..2f098e8313 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/2100.txt @@ -0,0 +1,8 @@ +* Hibás funkcióbillentyű-elrendezés javítása táblagépeken +* Nyelvváltó billentyű csak akkor jelenjen meg, ha van mire váltani +* Alapértelmezett színek véletlenszerűvé tétele a szürke helyett a „minden szín” beállításnál +* Kézmozdulatok kezdési késleltetésének testreszabása gépelés közben +* Pénznembillentyűk testreszabásának engedélyezése +* Hosszú lenyomás idejének csökkentése a shift -> caps lock váltáshoz + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/2200.txt b/fastlane/metadata/android/hu-HU/changelogs/2200.txt new file mode 100644 index 0000000000..d8d142d5f0 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/2200.txt @@ -0,0 +1,8 @@ +* Egyéni témák mentésének / exportálásának lehetősége +* Nyilak ismétlődő lenyomásának engedélyezése a billentyűzeten +* Több kurzor-eszköztárgomb (lapozás fel/le(/elejére/végére), szó balra/jobbra) +* Beillesztés billentyű hozzáadása +* Billentyűcsúsztatás viselkedésének javítása +* Szóközön csúsztatás beállítás hozzáadása a számbillentyűzet váltásához + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/2201.txt b/fastlane/metadata/android/hu-HU/changelogs/2201.txt new file mode 100644 index 0000000000..bde4d83253 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/2201.txt @@ -0,0 +1,2 @@ +* Vizuális beállítások hozzáadása a kézmozdulat-gépeléshez @devycarol-tól (#944) +* Néhány ikon frissítése @BlackyHawky-tól (#977) diff --git a/fastlane/metadata/android/hu-HU/changelogs/2300.txt b/fastlane/metadata/android/hu-HU/changelogs/2300.txt new file mode 100644 index 0000000000..9bde1a170b --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/2300.txt @@ -0,0 +1,8 @@ +* Számsor, eszköztárkódok, ikonok, szóközszöveg, alsó sor testreszabása az emodzsi- és vágólapnézetekhez +* Ikonstílus leválasztása a billentyűzet stílusáról +* Felesleges felugró ablakok eltávolításának alapértelmezett letiltása (és egy kis javítás) +* Kevésbé agresszív szóhozzáadás a személyes szótárhoz +* Nincs rezgés „ne zavarjanak” módban +* Teljesítmény javítása nagy szövegek másolásakor + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/2301.txt b/fastlane/metadata/android/hu-HU/changelogs/2301.txt new file mode 100644 index 0000000000..9bde1a170b --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/2301.txt @@ -0,0 +1,8 @@ +* Számsor, eszköztárkódok, ikonok, szóközszöveg, alsó sor testreszabása az emodzsi- és vágólapnézetekhez +* Ikonstílus leválasztása a billentyűzet stílusáról +* Felesleges felugró ablakok eltávolításának alapértelmezett letiltása (és egy kis javítás) +* Kevésbé agresszív szóhozzáadás a személyes szótárhoz +* Nincs rezgés „ne zavarjanak” módban +* Teljesítmény javítása nagy szövegek másolásakor + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/3004.txt b/fastlane/metadata/android/hu-HU/changelogs/3004.txt new file mode 100644 index 0000000000..f4efd72164 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/3004.txt @@ -0,0 +1,11 @@ +* Elrendezések hozzáadása: Arab Hija'i, Héber 1452-2, Hindi fonetikus, Dargwa (Urakhi), Baishakhi, Kurd +* Néhány elrendezés frissítése +* Ékezetek kombinálásának támogatása +* Osztott billentyűzet eszköztárgomb +* .com felugró ablakok hozzáadása +* Egyéni betűtípus beállításának engedélyezése +* Betűméret-skála beállítás hozzáadása +* Automatikus nyelvváltás javítása +* Beállítások átdolgozása + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/3005.txt b/fastlane/metadata/android/hu-HU/changelogs/3005.txt new file mode 100644 index 0000000000..f4efd72164 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/3005.txt @@ -0,0 +1,11 @@ +* Elrendezések hozzáadása: Arab Hija'i, Héber 1452-2, Hindi fonetikus, Dargwa (Urakhi), Baishakhi, Kurd +* Néhány elrendezés frissítése +* Ékezetek kombinálásának támogatása +* Osztott billentyűzet eszköztárgomb +* .com felugró ablakok hozzáadása +* Egyéni betűtípus beállításának engedélyezése +* Betűméret-skála beállítás hozzáadása +* Automatikus nyelvváltás javítása +* Beállítások átdolgozása + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/3006.txt b/fastlane/metadata/android/hu-HU/changelogs/3006.txt new file mode 100644 index 0000000000..f4efd72164 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/3006.txt @@ -0,0 +1,11 @@ +* Elrendezések hozzáadása: Arab Hija'i, Héber 1452-2, Hindi fonetikus, Dargwa (Urakhi), Baishakhi, Kurd +* Néhány elrendezés frissítése +* Ékezetek kombinálásának támogatása +* Osztott billentyűzet eszköztárgomb +* .com felugró ablakok hozzáadása +* Egyéni betűtípus beállításának engedélyezése +* Betűméret-skála beállítás hozzáadása +* Automatikus nyelvváltás javítása +* Beállítások átdolgozása + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/3007.txt b/fastlane/metadata/android/hu-HU/changelogs/3007.txt new file mode 100644 index 0000000000..f4efd72164 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/3007.txt @@ -0,0 +1,11 @@ +* Elrendezések hozzáadása: Arab Hija'i, Héber 1452-2, Hindi fonetikus, Dargwa (Urakhi), Baishakhi, Kurd +* Néhány elrendezés frissítése +* Ékezetek kombinálásának támogatása +* Osztott billentyűzet eszköztárgomb +* .com felugró ablakok hozzáadása +* Egyéni betűtípus beállításának engedélyezése +* Betűméret-skála beállítás hozzáadása +* Automatikus nyelvváltás javítása +* Beállítások átdolgozása + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/3008.txt b/fastlane/metadata/android/hu-HU/changelogs/3008.txt new file mode 100644 index 0000000000..f4efd72164 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/3008.txt @@ -0,0 +1,11 @@ +* Elrendezések hozzáadása: Arab Hija'i, Héber 1452-2, Hindi fonetikus, Dargwa (Urakhi), Baishakhi, Kurd +* Néhány elrendezés frissítése +* Ékezetek kombinálásának támogatása +* Osztott billentyűzet eszköztárgomb +* .com felugró ablakok hozzáadása +* Egyéni betűtípus beállításának engedélyezése +* Betűméret-skála beállítás hozzáadása +* Automatikus nyelvváltás javítása +* Beállítások átdolgozása + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/3100.txt b/fastlane/metadata/android/hu-HU/changelogs/3100.txt new file mode 100644 index 0000000000..5c949a9de1 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/3100.txt @@ -0,0 +1,9 @@ +* Telepített alkalmazások neveinek opcionális javaslata +* Csúsztatás az emodzsi kategóriák váltásához +* Felugró értesítés megjelenítése a biztonsági mentés visszaállítása után +* Nagyobb eszköztárgomb és ikon +* Vessző elérhetővé tétele a felugró ablakokban TLD felugró ablakok megjelenítésekor +* Beállítás hozzáadása az alapértelmezett emodzsibőrszínhez +* Billentyűkódok hozzáadása a bal és jobb alt és ctrl billentyűkhöz + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/3101.txt b/fastlane/metadata/android/hu-HU/changelogs/3101.txt new file mode 100644 index 0000000000..f47b37abbe --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/3101.txt @@ -0,0 +1,8 @@ +* Telepített alkalmazások neveinek opcionális javaslata +* Csúsztatás az emodzsi kategóriák váltásához +* Felugró értesítés megjelenítése a biztonsági mentés visszaállítása után +* Vessző elérhetővé tétele a felugró ablakokban TLD felugró ablakok megjelenítésekor +* Beállítás hozzáadása az alapértelmezett emodzsi bőrszínhez +* Billentyűkódok hozzáadása a bal és jobb alt és ctrl billentyűkhöz + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/3200.txt b/fastlane/metadata/android/hu-HU/changelogs/3200.txt new file mode 100644 index 0000000000..dff47973d2 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/3200.txt @@ -0,0 +1,9 @@ +* Eszköztármódok hozzáadása (lehetővé teszi az eszköztár elrejtését) +* Néhány hiányzó emodzsiváltozat hozzáadása +* Altípusképernyő és -szótár párbeszédablak javítása +* Színek javítása sötét mód kényszerítésekor +* A legtöbb álló / fekvő méretezési beállítás áthelyezése egy párbeszédablakba +* Nem fordíthatóként megjelölt karakterláncok fordításainak eltávolítása +* Következő képernyő nyílirányának javítása RTL nyelveknél + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/3201.txt b/fastlane/metadata/android/hu-HU/changelogs/3201.txt new file mode 100644 index 0000000000..dff47973d2 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/3201.txt @@ -0,0 +1,9 @@ +* Eszköztármódok hozzáadása (lehetővé teszi az eszköztár elrejtését) +* Néhány hiányzó emodzsiváltozat hozzáadása +* Altípusképernyő és -szótár párbeszédablak javítása +* Színek javítása sötét mód kényszerítésekor +* A legtöbb álló / fekvő méretezési beállítás áthelyezése egy párbeszédablakba +* Nem fordíthatóként megjelölt karakterláncok fordításainak eltávolítása +* Következő képernyő nyílirányának javítása RTL nyelveknél + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/3300.txt b/fastlane/metadata/android/hu-HU/changelogs/3300.txt new file mode 100644 index 0000000000..093a1d4e02 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/3300.txt @@ -0,0 +1,9 @@ +- a Shift billentyű lenyomásával a javaslatok nagybetűvel jelennek meg +- billentyűkódok hozzáadása a közvetítési intentekhez +- emodzsileírások megjelenítése (nem kötelező), ehhez emodzsiszótár szükséges +- a hardveres billentyűzet kezelésének javítása +- „billentyűzet elrejtése” beállítás hozzáadása a függőleges csúsztatáshoz +- latin altípus hozzáadása +- emodzsiszótár hozzáadásakor az emodzisjavaslatok kikapcsolásának engedélyezése + +- És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/3301.txt b/fastlane/metadata/android/hu-HU/changelogs/3301.txt new file mode 100644 index 0000000000..093a1d4e02 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/3301.txt @@ -0,0 +1,9 @@ +- a Shift billentyű lenyomásával a javaslatok nagybetűvel jelennek meg +- billentyűkódok hozzáadása a közvetítési intentekhez +- emodzsileírások megjelenítése (nem kötelező), ehhez emodzsiszótár szükséges +- a hardveres billentyűzet kezelésének javítása +- „billentyűzet elrejtése” beállítás hozzáadása a függőleges csúsztatáshoz +- latin altípus hozzáadása +- emodzsiszótár hozzáadásakor az emodzisjavaslatok kikapcsolásának engedélyezése + +- És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/3400.txt b/fastlane/metadata/android/hu-HU/changelogs/3400.txt new file mode 100644 index 0000000000..2b284cf600 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/3400.txt @@ -0,0 +1,5 @@ +- Javaslatsávban javasolt emodzsik számának korlátozása egyre (ha lehetséges) +- Helytelen szóközbeillesztés javítása +- Fehér háttérre írt fehér szöveg javítása egyes eszközökön +- `'` karakterrel kapcsolatos helytelen javaslatok javítása +- Többes számú schwa ɜ hozzáadása az olasz nyelvhez diff --git a/fastlane/metadata/android/hu-HU/changelogs/3501.txt b/fastlane/metadata/android/hu-HU/changelogs/3501.txt new file mode 100644 index 0000000000..99dd985f1f --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/3501.txt @@ -0,0 +1,3 @@ +- Összeomlási javítások +- A 3.4-es verzióban bevezetett hibás automatikus-javítás javítása +- Rezgés a szóköz lenyomására és törlés csúsztatással, ha engedélyezve van diff --git a/fastlane/metadata/android/hu-HU/changelogs/3600.txt b/fastlane/metadata/android/hu-HU/changelogs/3600.txt new file mode 100644 index 0000000000..69f87bc790 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/3600.txt @@ -0,0 +1,10 @@ +* beágyazott emodzsi keresésének lehetősége +* nyelv/altípus megjegyzése alkalmazásonként +* rezgés-visszajelzés javítása és továbbfejlesztése +* kitűzetlen vágólap megőrzése az alkalmazás újraindításakor +* rögzített vágólap-bejegyzések utolsóként való megjelenítése +* emodzsi és vágólap alsó sorainak hozzáadása +* gomb hozzáadása a beágyazott javaslatok elutasításához +* bengáli Khipro hozzáadva + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/3601.txt b/fastlane/metadata/android/hu-HU/changelogs/3601.txt new file mode 100644 index 0000000000..69f87bc790 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/3601.txt @@ -0,0 +1,10 @@ +* beágyazott emodzsi keresésének lehetősége +* nyelv/altípus megjegyzése alkalmazásonként +* rezgés-visszajelzés javítása és továbbfejlesztése +* kitűzetlen vágólap megőrzése az alkalmazás újraindításakor +* rögzített vágólap-bejegyzések utolsóként való megjelenítése +* emodzsi és vágólap alsó sorainak hozzáadása +* gomb hozzáadása a beágyazott javaslatok elutasításához +* bengáli Khipro hozzáadva + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/3602.txt b/fastlane/metadata/android/hu-HU/changelogs/3602.txt new file mode 100644 index 0000000000..69f87bc790 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/3602.txt @@ -0,0 +1,10 @@ +* beágyazott emodzsi keresésének lehetősége +* nyelv/altípus megjegyzése alkalmazásonként +* rezgés-visszajelzés javítása és továbbfejlesztése +* kitűzetlen vágólap megőrzése az alkalmazás újraindításakor +* rögzített vágólap-bejegyzések utolsóként való megjelenítése +* emodzsi és vágólap alsó sorainak hozzáadása +* gomb hozzáadása a beágyazott javaslatok elutasításához +* bengáli Khipro hozzáadva + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/changelogs/3603.txt b/fastlane/metadata/android/hu-HU/changelogs/3603.txt new file mode 100644 index 0000000000..69f87bc790 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/3603.txt @@ -0,0 +1,10 @@ +* beágyazott emodzsi keresésének lehetősége +* nyelv/altípus megjegyzése alkalmazásonként +* rezgés-visszajelzés javítása és továbbfejlesztése +* kitűzetlen vágólap megőrzése az alkalmazás újraindításakor +* rögzített vágólap-bejegyzések utolsóként való megjelenítése +* emodzsi és vágólap alsó sorainak hozzáadása +* gomb hozzáadása a beágyazott javaslatok elutasításához +* bengáli Khipro hozzáadva + +* És még több hibajavítás - további részletek a bejelentésben diff --git a/fastlane/metadata/android/hu-HU/full_description.txt b/fastlane/metadata/android/hu-HU/full_description.txt new file mode 100644 index 0000000000..9f1347c004 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/full_description.txt @@ -0,0 +1,30 @@ +A HeliBoard egy adatvédelem-tudatos, nyílt forráskódú billentyűzet, amely az AOSP / OpenBoard alapjain nyugszik. +Nem használ internet-hozzáférést, így 100%-ban offline működik. + +Funkciók: +
    +
  • Szótárak hozzáadása a javaslatokhoz és a helyesírás-ellenőrzéshez
  • +
      +
    • készítsen sajátot, vagy szerezze be őket innen, vagy a kísérleti szekcióból (a minőség változó lehet)
    • +
    • további szótárak használhatók emodzsikhoz vagy tudományos szimbólumokhoz javaslatok biztosítására (hasonlóan az „emodzsi kereséshez”)
    • +
    • vegye figyelembe, hogy a koreai elrendezéseknél a javaslatok csak ezzel a szótárral működnek, a szótár-adattárban lévő eszközök nem képesek működő szótárakat létrehozni
    • +
    +
  • Billentyűzet témák testreszabása (stílus, színek és háttérkép)
  • +
      +
    • követheti a rendszer nappali/éjszakai beállítását Android 10+ (és néhány Android 9 verzió) esetén
    • +
    • követheti a dinamikus színeket Android 12+ esetén
    • +
    +
  • Billentyűzet elrendezések testreszabása (csak a rendszernyelvek használata letiltásakor érhető el)
  • +
  • Speciális elrendezések testreszabása, mint például szimbólumok, számok vagy funkcióbillentyűk elrendezése
  • +
  • Többnyelvű gépelés
  • +
  • Csúszó gépelés (csak zárt forráskódú könyvtárral ☹️)
  • +
      +
    • a könyvtár nem része az alkalmazásnak, mivel nincs kompatibilis nyílt forráskódú könyvtár
    • +
    • GApps csomagokból („swypelibs”) nyerhető ki, vagy letölthető innen (kattintson a fájlra, majd a „raw” vagy a kis letöltés gombra)
    • +
    +
  • Vágólapelőzmények
  • +
  • Egykezes mód
  • +
  • Osztott billentyűzet (csak akkor érhető el, ha a képernyő elég nagy)
  • +
  • Számbillentyűzet
  • +
  • Beállítások és a tanult szavak / előzmények adatainak biztonsági mentése és visszaállítása
  • +
diff --git a/fastlane/metadata/android/hu-HU/short_description.txt b/fastlane/metadata/android/hu-HU/short_description.txt new file mode 100644 index 0000000000..6cb37dbd32 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/short_description.txt @@ -0,0 +1 @@ +Testre szabható, nyílt forráskódú billentyűzet-alkalmazás diff --git a/fastlane/metadata/android/hu-HU/title.txt b/fastlane/metadata/android/hu-HU/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/hu-HU/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/id/changelogs/1001.txt b/fastlane/metadata/android/id/changelogs/1001.txt new file mode 100644 index 0000000000..e9d45bd8c7 --- /dev/null +++ b/fastlane/metadata/android/id/changelogs/1001.txt @@ -0,0 +1,20 @@ +* ikon baru oleh @FabianOvrWrt dengan kontribusi dari @the-eclectic-dyslexic (#517, #592) +* trackpad dan tombol alih bahasa yang lebih dapat disesuaikan oleh @arcarum (#486) +* menambahkan % ke tata letak simbol shift (#568, #428) +* meningkatkan perilaku saat tombol alih bahasa diatur untuk mengganti bahasa dan papan ketik +* menampilkan tautan ke kamus yang ada saat menambahkan kamus +* menambahkan tata letak Kaitag oleh @alkaitagi (#519) +* menambahkan tata letak Probhat oleh @fahimscirex (#489) +* secara opsional membalik urutan bilah alat untuk bahasa RTL oleh @codokie (#557, #574) +* memungkinkan penyesuaian tata letak khusus (numpad, telepon, ...) +* masih dalam tahap percobaan, karena tata letak dasar dapat berubah +* memperbarui spellchecker.xml untuk menyertakan lokal tempat kamus tersedia, tetapi tidak disertakan dalam aplikasi +* memperbarui terjemahan (terima kasih kepada semua penerjemah!) +* peningkatan ndk oleh @Syphyr (#560) +* peningkatan kode isi otomatis sebaris oleh @arcarum (#595) +* perbaikan masalah dengan dialog tombol bilah alat (#505) +* perbaikan masalah dengan tata letak Turki (#508) +* perbaikan status sakelar yang salah saat berputar di layar warna kustom (#563) +* perbaikan masalah dengan emoji terkini yang tidak dimuat (#527) +* perbaikan masalah dengan angka yang tidak muncul di bidang tertentu (#585) +* beberapa perbaikan kecil diff --git a/fastlane/metadata/android/id/changelogs/1003.txt b/fastlane/metadata/android/id/changelogs/1003.txt new file mode 100644 index 0000000000..4bd7988a85 --- /dev/null +++ b/fastlane/metadata/android/id/changelogs/1003.txt @@ -0,0 +1,9 @@ +* ubah ikon untuk koreksi otomatis dan pilih semua tombol bilah alat oleh @codokie (#524, #651) +* tambahkan tata letak Chuvash oleh @tenextractor (#677) +* tambahkan tombol bilah alat potong oleh @codokie (#678) +* perbarui tata letak Probhat oleh @fahimscirex (#628) +* tampilkan ikon bilah alat dalam dialog tombol bilah alat +* tambahkan tombol tutup dalam riwayat clipboard oleh @codokie (#403, #649) +* tambahkan tata letak Rusia (Siswa) oleh @Zolax9 (#640) +* buat numpad pada penekanan lama tombol simbol menjadi opsional (#588) +* perbaikan dan penyempurnaan kecil, termasuk #632, #637, #638 oleh @RHJihan diff --git a/fastlane/metadata/android/id/changelogs/1004.txt b/fastlane/metadata/android/id/changelogs/1004.txt new file mode 100644 index 0000000000..0354970bc6 --- /dev/null +++ b/fastlane/metadata/android/id/changelogs/1004.txt @@ -0,0 +1,7 @@ +- perbarui tata letak Sirilik Serbia oleh @markokocic (#704, #705) +- perbarui tata letak Estonia oleh @tenextractor (#693) +- perbaiki entri duplikat dalam riwayat clipboard oleh @codokie (#616, #680) +- tambahkan entri teks saja ke riwayat clipboard oleh @codokie (#711) +- gambar yang lebih baik dalam metadata oleh @RHJihan (#713) +- atur warna ikon dengan benar dalam dialog pemilihan bilah alat oleh @codokie (#715, #716) +- perbaikan lainnya (#684, #723, dan lainnya) diff --git a/fastlane/metadata/android/id/changelogs/2000.txt b/fastlane/metadata/android/id/changelogs/2000.txt new file mode 100644 index 0000000000..47cfc09ac7 --- /dev/null +++ b/fastlane/metadata/android/id/changelogs/2000.txt @@ -0,0 +1,10 @@ +* menambahkan dukungan dasar untuk tombol pengubah +* menambahkan fungsi tekan lama ke lebih banyak tombol bilah alat +* dan lebih banyak tombol bilah alat riwayat clipboard +* membuat bilah alat riwayat clipboard dapat disesuaikan +* memungkinkan penyesuaian semua warna +* menambahkan pengaturan untuk selalu menampilkan kata yang akan dimasukkan sebagai saran tengah +* menambahkan indikator caps lock +* menambahkan tata letak Piedmontese, Mari Timur, Mansi, yang diperluas untuk Kannada dan Hungaria +* memperbaiki teks yang terpotong dalam popup pratinjau tombol pada beberapa perangkat +* perbaikan dan penyempurnaan lebih lanjut, lihat catatan rilis diff --git a/fastlane/metadata/android/id/changelogs/2001.txt b/fastlane/metadata/android/id/changelogs/2001.txt new file mode 100644 index 0000000000..86280a9dc0 --- /dev/null +++ b/fastlane/metadata/android/id/changelogs/2001.txt @@ -0,0 +1,11 @@ +* memungkinkan penyesuaian tata letak tombol fungsional +* sedikit menyesuaikan simbol dan lebih banyak tata letak simbol +* menambahkan opsi untuk menampilkan bilah alat secara otomatis +* menambahkan pemberitahuan saat menyalin teks +* memisahkan perilaku tombol alih bahasa dari pengaktifan +* menambahkan pop-up tombol koma untuk tata letak nomor dan telepon +* menjadikan penyematan tekan lama di bilah alat sebagai opsional +* memindahkan pengaturan bilah alat ke bagian terpisah +* menambahkan tombol tab +* memahami ctrl, bilah alat, dan label tombol lainnya dalam tata letak +* perbaikan dan penyempurnaan kecil diff --git a/fastlane/metadata/android/id/changelogs/2002.txt b/fastlane/metadata/android/id/changelogs/2002.txt new file mode 100644 index 0000000000..6fd3e45d05 --- /dev/null +++ b/fastlane/metadata/android/id/changelogs/2002.txt @@ -0,0 +1,4 @@ +* menambahkan tombol bilah alat emoji, oleh @codokie (#845, #837) +* perbaikan terkait huruf yang digandakan (#225 dan mungkin lainnya) +* menghindari penempatan kursor di dalam emoji (#859) +* perbaikan kecil untuk fitur yang baru ditambahkan diff --git a/fastlane/metadata/android/id/full_description.txt b/fastlane/metadata/android/id/full_description.txt new file mode 100644 index 0000000000..bf3681d22f --- /dev/null +++ b/fastlane/metadata/android/id/full_description.txt @@ -0,0 +1,56 @@ +HeliBoard adalah papan ketik sumber terbuka yang mengutamakan privasi, berdasarkan AOSP OpenBoard. + +Tidak menggunakan izin internet, dan karenanya 100% offline. + +Fitur: + +
    + +
  • Tambahkan kamus untuk saran dan pemeriksaan ejaan
  • + +
      + +
    • buat kamus Anda sendiri, atau dapatkan di sini, atau di bagian eksperimental (kualitas dapat bervariasi)
    • + +
    • kamus tambahan untuk emoji atau simbol ilmiah dapat digunakan untuk memberikan saran (mirip dengan "pencarian emoji")
    • + +
    • perlu dicatat bahwa untuk tata letak Korea, saran hanya berfungsi menggunakan kamus ini, alat-alat dalam repositori kamus tidak dapat membuat kamus yang berfungsi
    • + +
        + +
      • Sesuaikan tema keyboard (gaya, warna, dan gambar latar)
      • + +
          + +
        • dapat mengikuti pengaturan siang dan malam sistem pada Android 10+ (dan pada beberapa versi Android 9)
        • + +
        • dapat mengikuti warna dinamis untuk Android 12+
        • + +
            + +
          • Sesuaikan tata letak keyboard (hanya tersedia saat menonaktifkan gunakan bahasa sistem)
          • + +
          • Sesuaikan tata letak khusus, seperti simbol, angka, atau tata letak tombol fungsional
          • + +
          • Mengetik multibahasa
          • + +
          • Mengetik geser (hanya dengan pustaka sumber tertutup ☹️)
          • + +
              + +
            • pustaka tidak disertakan dalam aplikasi, karena tidak ada pustaka sumber terbuka yang kompatibel yang tersedia
            • + +
            • dapat diekstrak dari paket GApps ("swypelibs"), atau diunduh di sini (klik pada berkas dan kemudian "raw" atau tombol unduh kecil)
            • + +
                + +
              • Riwayat clipboard
              • + +
              • Mode satu tangan
              • + +
              • Papan ketik terpisah (hanya tersedia jika layar cukup besar)
              • + +
              • Papan angka
              • + +
              • Cadangkan dan pulihkan setelan dan data riwayat kata yang dipelajari
              • +
                  diff --git a/fastlane/metadata/android/id/short_description.txt b/fastlane/metadata/android/id/short_description.txt new file mode 100644 index 0000000000..528cda2665 --- /dev/null +++ b/fastlane/metadata/android/id/short_description.txt @@ -0,0 +1 @@ +Keyboard sumber terbuka yang dapat disesuaikan diff --git a/fastlane/metadata/android/id/title.txt b/fastlane/metadata/android/id/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/id/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/is-IS/full_description.txt b/fastlane/metadata/android/is-IS/full_description.txt new file mode 100644 index 0000000000..739cf98385 --- /dev/null +++ b/fastlane/metadata/android/is-IS/full_description.txt @@ -0,0 +1,30 @@ +HeliBoard er lyklaborð sem verndar persónuleg gögn, byggt á AOSP / OpenBoard. +Notar ekki heimildir fyrir internet og er þannig 100% ónettengt. + +Eiginleikar: +
                    +
                  • Bættu við orðasöfnum fyrir tillögur og stafsetningaryfirferð
                  • +
                      +
                    • útbúðu þín eigin orðasöfn eða náðu í þau hér, eða í tilrauna-hlutanum okkar (gæði gætu verið af ýmsum toga)
                    • +
                    • viðbótar-orðasöfn með emoji-tjáningartáknum eða vísindatáknum er hægt að nota við tillögur (svipað "emoji leit")
                    • +
                    • athugaðu að fyrir Kóreskar lyklaborðsframsetningar, munu tillögur einungis virka með því að nota þetta orðasafn, þar sem verkfærin í orðasafnageymslunni okkar ná ekki að útbúa önnur orðasöfn sem virka
                    • +
                    +
                  • Sérsníddu lyklaborðsþemu (stíl, liti og bakgrunnsmynd)
                  • +
                      +
                    • getur fylgt dags-/nætur stillingum kerfisins á Android 10+ (og á sumum útgáfum Android 9)
                    • +
                    • getur fylgt breytilegum litum á Android 12+
                    • +
                    +
                  • Sérsníddu framsetningar lyklaborðsins (einungis tiltækt þegar nota tungumál kerfis hefur verið gert óvirkt)
                  • +
                  • Sérsníddu sérstakar framsetningar, eins og tákn, tölur eða framsetningu aðgerðalykla
                  • +
                  • Fjöltyngdur innsláttur
                  • +
                  • Glide-innsláttur (einungis með lokuðu séreignar-aðgerðasafni ☹️)
                  • +
                      +
                    • aðgerðasafnið fylgir ekki með hugbúnaðnum, því miður er ekkert samhæft aðgerðasafn tiltækt með opnum grunnkóða
                    • +
                    • hægt er að nálgast það úr GApps-pökkum ("swypelibs") eða sækja það hér (smelltu á skrána og síðan á "raw" eða litla niðurhalshnappinn)
                    • +
                    +
                  • Klippispjaldsferill
                  • +
                  • Einnar-handar hamur
                  • +
                  • Skipt lyklaborð (aðeins í boði ef skjárinn er nógu stór)
                  • +
                  • Talnaborð
                  • +
                  • Taktu öryggisafrit og endurheimtu stillingarnar þínar eða lærð orð eða gögn vinnsluferils
                  • +
                  diff --git a/fastlane/metadata/android/is-IS/short_description.txt b/fastlane/metadata/android/is-IS/short_description.txt new file mode 100644 index 0000000000..e133286c54 --- /dev/null +++ b/fastlane/metadata/android/is-IS/short_description.txt @@ -0,0 +1 @@ +Sérsníðanlegt lyklaborð með opinn grunnkóða diff --git a/fastlane/metadata/android/is-IS/title.txt b/fastlane/metadata/android/is-IS/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/is-IS/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/it-IT/changelogs/1001.txt b/fastlane/metadata/android/it-IT/changelogs/1001.txt new file mode 100644 index 0000000000..f7a274e919 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/1001.txt @@ -0,0 +1,20 @@ +* Icona di @FabianOvrWrt/@the-eclectic-dyslexic +* Funzioni trackpad e cambio lingua su spazio migliorate +* % in layout simboli ⇧ +* Tasto cambio lingua+tastiera migliorato +* Link ai dizionari esistenti +* Layout Kaitag +* Layout Probhat +* Icone invertite per RTL +* Layout speciali + (beta) +* Spellchecker.xml ampliato +* Traduzioni aggiornate +* Ndk aggiornato +* Riempimento inline aggiornato +* Fix toolbar +* Fix layout turco +* Fix switch colori +* Fix emoji recenti +* Fix numeri invisibili +* Bugfix diff --git a/fastlane/metadata/android/it-IT/changelogs/1003.txt b/fastlane/metadata/android/it-IT/changelogs/1003.txt new file mode 100644 index 0000000000..5ffc3aaf5c --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/1003.txt @@ -0,0 +1,9 @@ +* Aggiornate icone tasti correzione automatica e selezione barra strumenti +* Aggiunto layout Chuvash +* Aggiunto tasto Taglia alla barra strumenti +* Aggiornato layout Probhat +* Impostazioni barra strumenti mostrano le icone +* Aggiunto pulsante Chiudi nella cronologia appunti +* Aggiunto layout Russo Studente +* Opzione per rendere facoltativo il tastierino numerico su pressione prolungata +* Correzioni e miglioramenti minori diff --git a/fastlane/metadata/android/it-IT/changelogs/1004.txt b/fastlane/metadata/android/it-IT/changelogs/1004.txt new file mode 100644 index 0000000000..7353a10030 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/1004.txt @@ -0,0 +1,7 @@ +- Layout cirillico serbo aggiornato, di @markokocic (#704, #705) +- Layout estone aggiornato, di @tenextractor (#693) +- Correzione di voci duplicate nella cronologia degli appunti, di @codokie (#616, #680) +- Aggiunta solo di voci di testo alla cronologia degli appunti, di @codokie (#711) +- Immagini migliori nei metadati, di @RHJihan (#713) +- Impostazione corretta del colore delle icone sulla barra degli strumenti, di @codokie (#715, #716) +- Altre correzioni (#684, #723 e altro) diff --git a/fastlane/metadata/android/it-IT/changelogs/15.txt b/fastlane/metadata/android/it-IT/changelogs/15.txt deleted file mode 100644 index b93d61f8f7..0000000000 --- a/fastlane/metadata/android/it-IT/changelogs/15.txt +++ /dev/null @@ -1,7 +0,0 @@ -1.4.3: -- aggiunta modalità giorno/notte -- raggruppate emoji di colore diverso -- aggiunto layout Arabic PC -- cambiamenti al layout tedesco -- cambiamenti ai temi -- bugfix diff --git a/fastlane/metadata/android/it-IT/changelogs/18.txt b/fastlane/metadata/android/it-IT/changelogs/18.txt deleted file mode 100644 index 186c2362d5..0000000000 --- a/fastlane/metadata/android/it-IT/changelogs/18.txt +++ /dev/null @@ -1,9 +0,0 @@ -1.4.4b: -- risolto crash su dispositivi più vecchi - -1.4.4: -- aggiunta funzionalità di storico appunti -- sistemato bug che non permetteva la visualizzazione del tastierino numerico nei tablet -- aggiunto layout Workman -- dizionari aggiunti: svedese, danese, ungherese -- bugfix diff --git a/fastlane/metadata/android/it-IT/changelogs/2000.txt b/fastlane/metadata/android/it-IT/changelogs/2000.txt new file mode 100644 index 0000000000..e3939d2051 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/2000.txt @@ -0,0 +1,10 @@ +* Aggiunto supporto base tasti modificatori +* Aggiunte pressioni prolungate su alcuni tasti barra strumenti +* Più tasti disponibili barra strumenti cronologia appunti +* Barra strumenti cronologia personalizzabile +* Personalizzazione di tutti i colori +* Opzione per mostrare sempre la parola suggerita centrale +* Nuovo indicatore blocco maiuscole +* Aggiunti layout piemontese mari orientale mansi estesi kannada ungherese +* Fix testo tagliato popup anteprima tasti +* Altre correzioni e miglioramenti diff --git a/fastlane/metadata/android/it-IT/changelogs/2001.txt b/fastlane/metadata/android/it-IT/changelogs/2001.txt new file mode 100644 index 0000000000..5a9de392c9 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/2001.txt @@ -0,0 +1,11 @@ +* Personalizzazione layout tasti funzione +* Modifiche ai layout 'Simboli' e 'Altri simboli' +* Nuove opzioni per barra strumenti dinamica +* Notifica toast alla copia del testo +* Possibilità di separare cambio lingua e cambio tastiera +* Popup con virgola per i layout numerici e telefonici +* Tap prolungato su un'icona fissa della barra degli strumenti +* Nuove impostazioni barra degli strumenti +* Nuovo tasto ⇥ (tab) +* CTRL/CMD, barra degli strumenti e altre etichette +* Correzioni varie diff --git a/fastlane/metadata/android/it-IT/changelogs/2002.txt b/fastlane/metadata/android/it-IT/changelogs/2002.txt new file mode 100644 index 0000000000..edd58782d7 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/2002.txt @@ -0,0 +1,4 @@ +* Nuova icona 'Emoji' per la barra degli strumenti (@codokie: #845, #837) +* Risolto il bug delle lettere duplicate (#225 e altri) +* Risolto il bug che 'spezzava' le emoji con il cursore di inserimento (#859) +* Risolti bug minori relativi alle funzionalità più recenti diff --git a/fastlane/metadata/android/it-IT/changelogs/2003.txt b/fastlane/metadata/android/it-IT/changelogs/2003.txt new file mode 100644 index 0000000000..b3cce5d6b7 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/2003.txt @@ -0,0 +1,11 @@ +* Personalizzazione layout tasti funzione +* Modifiche ai layout 'Simboli' e 'Altri simboli' +* Supporto base ai tasti fisici ALT, CTRL, Meta +* Nuove opzioni per barra strumenti dinamica +* Nuovo tasto ⇥ (tab) +* Indicatore blocco maiuscolo +* Nuovi layout di lingue +* Funzioni della barra utilizzabili come tasti standard +* Modifica dei colori estesi dei temi +* Notifica toast alla copia del testo +* Correzioni di bug e miglioramenti diff --git a/fastlane/metadata/android/it-IT/changelogs/2100.txt b/fastlane/metadata/android/it-IT/changelogs/2100.txt new file mode 100644 index 0000000000..a927c8904c --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/2100.txt @@ -0,0 +1,8 @@ +* Bugfix layout per tablet +* Tasto 'cambia lingua' dinamico (appare solo con più lingue) +* Temi: colore base casuale per la modalità 'tutti i colori' +* Possibilità di definire un tempo di attesa tra inserimento normale e gestuale +* Possibilità di definire i tasti valuta +* Ridotto l'intervallo per l'abilitazione del blocco maiuscole con la pressione lunga su ⇧ +* Aggiunti nuovi caratteri apice predefiniti sui tasti 0-9 +* Bugfix minori e miglioramenti vari diff --git a/fastlane/metadata/android/it-IT/changelogs/2200.txt b/fastlane/metadata/android/it-IT/changelogs/2200.txt new file mode 100644 index 0000000000..2924747dcd --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/2200.txt @@ -0,0 +1,11 @@ +* Esportazione/importazione temi +* Tasti freccia ripetuti +* Nuovi tasti per la barra degli strumenti +* Nuovo tasto 'Incolla' +* Miglioramento delle funzionalità gestuali +* Passaggio al tastierino numerico con un gesto sulla barra spaziatrice +* Funzionalità di suggerimento del testo copiato (stile Gboard) +* Deseleziona il testo al secondo tocco su un tasto selezione +* Miglioramento dei colori dei temi su Android 12+ +* Aggiustamento di caratteri popup predefiniti +* Bugfix e miglioramenti diff --git a/fastlane/metadata/android/it-IT/changelogs/2201.txt b/fastlane/metadata/android/it-IT/changelogs/2201.txt new file mode 100644 index 0000000000..987a5801f6 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/2201.txt @@ -0,0 +1,2 @@ +* Aggiunte alcune opzioni per la digitazione gestuale (@devycarol, #944) +* Alcune icone riviste o aggiornate (@BlackyHawky, #977) diff --git a/fastlane/metadata/android/it-IT/changelogs/2300.txt b/fastlane/metadata/android/it-IT/changelogs/2300.txt new file mode 100644 index 0000000000..8d75435ea9 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/2300.txt @@ -0,0 +1,9 @@ +* Personalizzazione di nuovi elementi +* Stile della tastiera e delle icone selezionabili in modo indipendente +* Tasti popup duplicati mostrati di default (più un piccolo miglioramento) +* Aggiunta di parole al dizionario utente meno aggressiva +* Nessuna vibrazione in modalità 'Non disturbare' +* Prestazioni migliorate in caso di copia di testi molto lunghi +* Tasti popup di punteggiatura migliorati e corretti +* Risolti alcuni problemi di duplicazione testo +* Altri miglioramenti e bugfix diff --git a/fastlane/metadata/android/it-IT/changelogs/2301.txt b/fastlane/metadata/android/it-IT/changelogs/2301.txt new file mode 100644 index 0000000000..8d75435ea9 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/2301.txt @@ -0,0 +1,9 @@ +* Personalizzazione di nuovi elementi +* Stile della tastiera e delle icone selezionabili in modo indipendente +* Tasti popup duplicati mostrati di default (più un piccolo miglioramento) +* Aggiunta di parole al dizionario utente meno aggressiva +* Nessuna vibrazione in modalità 'Non disturbare' +* Prestazioni migliorate in caso di copia di testi molto lunghi +* Tasti popup di punteggiatura migliorati e corretti +* Risolti alcuni problemi di duplicazione testo +* Altri miglioramenti e bugfix diff --git a/fastlane/metadata/android/it-IT/changelogs/3004.txt b/fastlane/metadata/android/it-IT/changelogs/3004.txt new file mode 100644 index 0000000000..4502de9545 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/3004.txt @@ -0,0 +1,11 @@ +* Layout aggiunti: Arabo Hija'i, Ebraico 1452-2, Hindi fonetico, Dargwa (Urakhi), Baishakhi, Curdo +* Alcuni layout aggiornati +* Supporto agli accenti combinati +* Pulsante 'Tastiera divisa' nella barra degli strumenti +* Suffisso '.com' aggiunto ai popup +* Font personalizzato per i tasti +* Aggiustamento dimensione per i tasti +* Modalità multilingua migliorata +* Impostazioni ridisegnate +* Aggiunte opzioni per spaziatura automatica, correzione testo e riga dei numeri +* Migliorie e bugfix diff --git a/fastlane/metadata/android/it-IT/changelogs/3005.txt b/fastlane/metadata/android/it-IT/changelogs/3005.txt new file mode 100644 index 0000000000..4502de9545 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/3005.txt @@ -0,0 +1,11 @@ +* Layout aggiunti: Arabo Hija'i, Ebraico 1452-2, Hindi fonetico, Dargwa (Urakhi), Baishakhi, Curdo +* Alcuni layout aggiornati +* Supporto agli accenti combinati +* Pulsante 'Tastiera divisa' nella barra degli strumenti +* Suffisso '.com' aggiunto ai popup +* Font personalizzato per i tasti +* Aggiustamento dimensione per i tasti +* Modalità multilingua migliorata +* Impostazioni ridisegnate +* Aggiunte opzioni per spaziatura automatica, correzione testo e riga dei numeri +* Migliorie e bugfix diff --git a/fastlane/metadata/android/it-IT/changelogs/3006.txt b/fastlane/metadata/android/it-IT/changelogs/3006.txt new file mode 100644 index 0000000000..4502de9545 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/3006.txt @@ -0,0 +1,11 @@ +* Layout aggiunti: Arabo Hija'i, Ebraico 1452-2, Hindi fonetico, Dargwa (Urakhi), Baishakhi, Curdo +* Alcuni layout aggiornati +* Supporto agli accenti combinati +* Pulsante 'Tastiera divisa' nella barra degli strumenti +* Suffisso '.com' aggiunto ai popup +* Font personalizzato per i tasti +* Aggiustamento dimensione per i tasti +* Modalità multilingua migliorata +* Impostazioni ridisegnate +* Aggiunte opzioni per spaziatura automatica, correzione testo e riga dei numeri +* Migliorie e bugfix diff --git a/fastlane/metadata/android/it-IT/changelogs/3007.txt b/fastlane/metadata/android/it-IT/changelogs/3007.txt new file mode 100644 index 0000000000..4502de9545 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/3007.txt @@ -0,0 +1,11 @@ +* Layout aggiunti: Arabo Hija'i, Ebraico 1452-2, Hindi fonetico, Dargwa (Urakhi), Baishakhi, Curdo +* Alcuni layout aggiornati +* Supporto agli accenti combinati +* Pulsante 'Tastiera divisa' nella barra degli strumenti +* Suffisso '.com' aggiunto ai popup +* Font personalizzato per i tasti +* Aggiustamento dimensione per i tasti +* Modalità multilingua migliorata +* Impostazioni ridisegnate +* Aggiunte opzioni per spaziatura automatica, correzione testo e riga dei numeri +* Migliorie e bugfix diff --git a/fastlane/metadata/android/it-IT/changelogs/3008.txt b/fastlane/metadata/android/it-IT/changelogs/3008.txt new file mode 100644 index 0000000000..4502de9545 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/3008.txt @@ -0,0 +1,11 @@ +* Layout aggiunti: Arabo Hija'i, Ebraico 1452-2, Hindi fonetico, Dargwa (Urakhi), Baishakhi, Curdo +* Alcuni layout aggiornati +* Supporto agli accenti combinati +* Pulsante 'Tastiera divisa' nella barra degli strumenti +* Suffisso '.com' aggiunto ai popup +* Font personalizzato per i tasti +* Aggiustamento dimensione per i tasti +* Modalità multilingua migliorata +* Impostazioni ridisegnate +* Aggiunte opzioni per spaziatura automatica, correzione testo e riga dei numeri +* Migliorie e bugfix diff --git a/fastlane/metadata/android/it-IT/changelogs/3100.txt b/fastlane/metadata/android/it-IT/changelogs/3100.txt new file mode 100644 index 0000000000..6c89fdb7ac --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/3100.txt @@ -0,0 +1,10 @@ +* Nomi delle app installate come suggerimenti +* Cambio categoria di emoji con trascinamento +* Notifica toast dopo il ripristino di un backup +* Pulsante e icona della barra più grandi +* Virgola come popup insieme ai suffissi di dominio +* Carnagione predefinita per le emoji multicolore +* Codici numerici per CTRL e ALT di sinistra e destra +* Aggiunto il tasto 'timestamp' +* Tasti speciali disponibili per i popup nei layout semplici +* Migliorie e bugfix vari diff --git a/fastlane/metadata/android/it-IT/changelogs/3101.txt b/fastlane/metadata/android/it-IT/changelogs/3101.txt new file mode 100644 index 0000000000..1eaed35bc7 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/3101.txt @@ -0,0 +1,9 @@ +* Nomi delle app installate come suggerimenti +* Cambio categoria di emoji con trascinamento +* Notifica toast dopo il ripristino di un backup +* Virgola come popup insieme ai suffissi di dominio +* Carnagione predefinita per le emoji multicolore +* Codici numerici per CTRL e ALT di sinistra e destra +* Aggiunto il tasto 'timestamp' +* Tasti speciali disponibili per i popup nei layout semplici +* Migliorie e bugfix vari diff --git a/fastlane/metadata/android/it-IT/changelogs/3200.txt b/fastlane/metadata/android/it-IT/changelogs/3200.txt new file mode 100644 index 0000000000..d6b0c1db9c --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/3200.txt @@ -0,0 +1,10 @@ +* Modalità barra degli strumenti nascosta +* Nuove varianti di emoji +* Schermate sottotipi e dizionario migliorate +* Colori del tema scuro aggiornati +* Impostazioni separate per modalità verticale/orizzontale +* Testi intraducibili eliminati dalle stringhe di localizzazione +* Direzione 'schermata successiva' corretta per le lingue destra-sinistra +* Caricamento corretto dell'ebraico su Android 15 +* Tastiera minimale disponibile anche in caso di malfunzionamenti della libreria +* Correzione di bug diff --git a/fastlane/metadata/android/it-IT/changelogs/3201.txt b/fastlane/metadata/android/it-IT/changelogs/3201.txt new file mode 100644 index 0000000000..d6b0c1db9c --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/3201.txt @@ -0,0 +1,10 @@ +* Modalità barra degli strumenti nascosta +* Nuove varianti di emoji +* Schermate sottotipi e dizionario migliorate +* Colori del tema scuro aggiornati +* Impostazioni separate per modalità verticale/orizzontale +* Testi intraducibili eliminati dalle stringhe di localizzazione +* Direzione 'schermata successiva' corretta per le lingue destra-sinistra +* Caricamento corretto dell'ebraico su Android 15 +* Tastiera minimale disponibile anche in caso di malfunzionamenti della libreria +* Correzione di bug diff --git a/fastlane/metadata/android/it-IT/changelogs/3300.txt b/fastlane/metadata/android/it-IT/changelogs/3300.txt new file mode 100644 index 0000000000..c49d4d1ac6 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/3300.txt @@ -0,0 +1,11 @@ +- Suggerimenti con iniziale maiuscola con ⇧ +- Codici per broadcasting intent +- Descrizione delle emoji opzionale +- Miglioramento input con tastiere fisiche +- Nuovo gesto 'nascondi tastiera' +- Aggiunta dei sottotipi latini +- Disattivazione opzionale dei suggerimenti emoji all'aggiunta di un dizionario emoji +- Emoji corrette nel layout diviso +- Rimozione delle emoji 'ausiliarie' (non valide singolarmente) +- Funzionamento blacklist corretto +- Comportamento di ⌫ con alcune emoji corretto diff --git a/fastlane/metadata/android/it-IT/changelogs/3301.txt b/fastlane/metadata/android/it-IT/changelogs/3301.txt new file mode 100644 index 0000000000..c49d4d1ac6 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/3301.txt @@ -0,0 +1,11 @@ +- Suggerimenti con iniziale maiuscola con ⇧ +- Codici per broadcasting intent +- Descrizione delle emoji opzionale +- Miglioramento input con tastiere fisiche +- Nuovo gesto 'nascondi tastiera' +- Aggiunta dei sottotipi latini +- Disattivazione opzionale dei suggerimenti emoji all'aggiunta di un dizionario emoji +- Emoji corrette nel layout diviso +- Rimozione delle emoji 'ausiliarie' (non valide singolarmente) +- Funzionamento blacklist corretto +- Comportamento di ⌫ con alcune emoji corretto diff --git a/fastlane/metadata/android/it-IT/changelogs/3400.txt b/fastlane/metadata/android/it-IT/changelogs/3400.txt new file mode 100644 index 0000000000..aebefce471 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/3400.txt @@ -0,0 +1,5 @@ +- Limite di una sola emoji (se disponibile) tra i suggerimenti +- Risolto il problema degli spazi aggiunti in modo incoerente +- Risolto il bug del testo bianco su bianco (su alcuni dispositivi) +- Risolto il bug dei suggerimenti con `'` errati +- Aggiunto lo schwa plurale per la lingua italiana diff --git a/fastlane/metadata/android/it-IT/changelogs/3501.txt b/fastlane/metadata/android/it-IT/changelogs/3501.txt new file mode 100644 index 0000000000..850aa827d0 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/3501.txt @@ -0,0 +1,3 @@ +- Corretti alcuni errori che causavano crash +- Fix del correttore difettoso introdotto alla versione 3.4 +- Vibrazione su spazio e gesto su backspace (con vibrazione generale attiva) diff --git a/fastlane/metadata/android/it-IT/changelogs/3600.txt b/fastlane/metadata/android/it-IT/changelogs/3600.txt new file mode 100644 index 0000000000..25b7cfc17e --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/3600.txt @@ -0,0 +1,12 @@ +* Ricerca emoji inline +* Ricorda lingua per app (opzionale) +* Miglioramenti al feedback aptico +* Cronologia appunti persistente (anche per i non fissati) +* Mostra gli appunti fissati in fondo (opzionale) +* Righe inferiori emoji e appunti (opzionali) +* Aggiunto un tasto per rifiutare i suggerimenti inline +* Nuova lingua: Bengalese Khipro +* Nuova lingua: Mirandese +* Risolti alcuni problemi con le tastiere hardware +* Link ai dizionari aggiornati (puntano direttamente al file) +* Miglioramenti vari diff --git a/fastlane/metadata/android/it-IT/changelogs/3601.txt b/fastlane/metadata/android/it-IT/changelogs/3601.txt new file mode 100644 index 0000000000..25b7cfc17e --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/3601.txt @@ -0,0 +1,12 @@ +* Ricerca emoji inline +* Ricorda lingua per app (opzionale) +* Miglioramenti al feedback aptico +* Cronologia appunti persistente (anche per i non fissati) +* Mostra gli appunti fissati in fondo (opzionale) +* Righe inferiori emoji e appunti (opzionali) +* Aggiunto un tasto per rifiutare i suggerimenti inline +* Nuova lingua: Bengalese Khipro +* Nuova lingua: Mirandese +* Risolti alcuni problemi con le tastiere hardware +* Link ai dizionari aggiornati (puntano direttamente al file) +* Miglioramenti vari diff --git a/fastlane/metadata/android/it-IT/changelogs/3602.txt b/fastlane/metadata/android/it-IT/changelogs/3602.txt new file mode 100644 index 0000000000..25b7cfc17e --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/3602.txt @@ -0,0 +1,12 @@ +* Ricerca emoji inline +* Ricorda lingua per app (opzionale) +* Miglioramenti al feedback aptico +* Cronologia appunti persistente (anche per i non fissati) +* Mostra gli appunti fissati in fondo (opzionale) +* Righe inferiori emoji e appunti (opzionali) +* Aggiunto un tasto per rifiutare i suggerimenti inline +* Nuova lingua: Bengalese Khipro +* Nuova lingua: Mirandese +* Risolti alcuni problemi con le tastiere hardware +* Link ai dizionari aggiornati (puntano direttamente al file) +* Miglioramenti vari diff --git a/fastlane/metadata/android/it-IT/changelogs/3603.txt b/fastlane/metadata/android/it-IT/changelogs/3603.txt new file mode 100644 index 0000000000..25b7cfc17e --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/3603.txt @@ -0,0 +1,12 @@ +* Ricerca emoji inline +* Ricorda lingua per app (opzionale) +* Miglioramenti al feedback aptico +* Cronologia appunti persistente (anche per i non fissati) +* Mostra gli appunti fissati in fondo (opzionale) +* Righe inferiori emoji e appunti (opzionali) +* Aggiunto un tasto per rifiutare i suggerimenti inline +* Nuova lingua: Bengalese Khipro +* Nuova lingua: Mirandese +* Risolti alcuni problemi con le tastiere hardware +* Link ai dizionari aggiornati (puntano direttamente al file) +* Miglioramenti vari diff --git a/fastlane/metadata/android/it-IT/full_description.txt b/fastlane/metadata/android/it-IT/full_description.txt index 59b0ca5296..433d488c37 100644 --- a/fastlane/metadata/android/it-IT/full_description.txt +++ b/fastlane/metadata/android/it-IT/full_description.txt @@ -1,8 +1,30 @@ -OpenBoard è una tastiera che rispetta la tua privacy, basata su AOSP e priva di dipendenze da binari Google. +HeliBoard è una tastiera open-source attenta alla privacy, basata su AOSP / OpenBoard. +Non ha bisogno dell'accesso alla rete, essendo 100% offline. -Ha le seguenti funzionalità: - - correzione del testo - - temi - - emoji - -È possibile trovare il codice sorgente al seguente indirizzo: https://github.com/dslul/openboard \ No newline at end of file +Caratteristiche: +
                    +
                  • Dizionari multilingua per suggerimenti e controllo ortografico
                  • +
                      +
                    • crea il tuo, oppure scarica quelli esistenti da qui, o dalla sezione sperimentale (la qualità può variare)
                    • +
                    • dizionari specializzati per emoji o simboli scientifici possono essere usati per fornire suggerimenti specifici
                    • +
                    • per i layout coreani, i suggerimenti funzionano solo usando questo dizionario; gli strumenti nel repository dei dizionari non sono in grado di creare dizionari funzionanti
                    • +
                    +
                  • temi personalizzati (stile, colori, immagine di sfondo)
                  • +
                      +
                    • attiva o disattiva la modalità scura di Android 10+ seguendo l'impostazione di sistema
                    • +
                    • colori dinamici per Android 12+
                    • +
                    +
                  • Layout personalizzabili (disponibili se si disabilita usa lingue di sistema)
                  • +
                  • Personalizza layout speciali come simboli, numeri o tasti funzione
                  • +
                  • digitazione multilingue
                  • +
                  • digitazione a scorrimento (solo con libreria closed source ☹️)
                  • +
                      +
                    • libreria non inclusa nell'app, poiché non è disponibile alcuna libreria open source compatibile
                    • +
                    • può essere estratta dai pacchetti GApps ("swypelibs"), o scaricata qui
                    • +
                    +
                  • Cronologia degli appunti
                  • +
                  • Modalità a una mano
                  • +
                  • Tastiera divisa (disponibile solo se lo schermo è abbastanza grande)
                  • +
                  • Tastierino numerico
                  • +
                  • Backup e ripristino dei dati di apprendimento e della cronologia
                  • +
                  diff --git a/fastlane/metadata/android/it-IT/short_description.txt b/fastlane/metadata/android/it-IT/short_description.txt index e77ab680ca..b6d1cf25cf 100644 --- a/fastlane/metadata/android/it-IT/short_description.txt +++ b/fastlane/metadata/android/it-IT/short_description.txt @@ -1 +1 @@ -Una tastiera opensource che non ti spia! \ No newline at end of file +Tastiera open source responsiva e altamente personalizzabile diff --git a/fastlane/metadata/android/it-IT/title.txt b/fastlane/metadata/android/it-IT/title.txt index 62bb507b40..e9841ace0b 100644 --- a/fastlane/metadata/android/it-IT/title.txt +++ b/fastlane/metadata/android/it-IT/title.txt @@ -1 +1 @@ -OpenBoard \ No newline at end of file +HeliBoard diff --git a/fastlane/metadata/android/it-IT/video.txt b/fastlane/metadata/android/it-IT/video.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/fastlane/metadata/android/iw-IL/changelogs/1001.txt b/fastlane/metadata/android/iw-IL/changelogs/1001.txt new file mode 100644 index 0000000000..b45e27d393 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/1001.txt @@ -0,0 +1,20 @@ +* סמל חדש מאת @FabianOvrWrt בסיוע של @the-eclectic-dyslexic (#517, #592) +* התאמה משופרת של משטח המגע של מקש הרווח ומעבר השפות ע"י @arcarum (#486) +* הוספת % לפריסת סימני shift (#568, #428) +* שיפור ההתנהגות כאשר מקש מעבר השפות מוגדר לעבור בין שפה ומקלדת יחדיו +* הצגת קישורים למילונים קיימים בעת הוספת מילון +* הוספת פריסת Kaitag ע"י @alkaitagi (#519) +* הוספת פריסת Probhat ע"י @fahimscirex (#489) +* אפשרות להפיכת סדר toolbar לשפות הנכתבות מימין לשמאל ע"י @codokie (#557, #574) +* אפשרות להתאים פריסות מיוחדות (numpad, מקלדת טלפון, ...) + * עדיין נסיוני, משום שפריסת הבסיס עשויה להשתנות +* עדכון spellchecker.xml לכלול מקומות עבורם יש מילונים זמינים, אך אינם כלולים ביישום +* עדכון התרגומים (תודה לכל המתרגמים!) +* שדרוג ndk ע"י @Syphyr (#560) +* שדרוג קוד מילוי אוטומטי של הטבעה ע"י @arcarum (#595) +* תיקון בעיות בדו-שיח של מקש toolbar (#505) +* תיקון בעיה בפריסה בטורקית (#508) +* תיקון מצבי בורר שגויים כאשר מסובבים את המכשיר במסך התאמת הצבעים (#563) +* תיקון בעיה של אי-טעינת אימוג'ים אחרונים (#527) +* תיקון בעיה של מספרים לא מוצגים בשדות מסויימים (#585) +* מספר תיקונים שוליים diff --git a/fastlane/metadata/android/iw-IL/changelogs/1003.txt b/fastlane/metadata/android/iw-IL/changelogs/1003.txt new file mode 100644 index 0000000000..576f919671 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/1003.txt @@ -0,0 +1,9 @@ +* שינוי סמלים לתיקון שגיאות אוטומטי ובחירת כל כפתורי toolbar ע"י @codokie (#524, #651) +* הוספת פריסת Chuvash ע"י @tenextractor (#677) +* הוספת כפתור toolbar "גזירה" ע"י @codokie (#678) +* עדכון פריסת Probhat ע"י @fahimscirex (#628) +* הצגת סמלי toolbar icons בדו-שיח כפתורי toolbar +* הוספת כפתור סגירה בהיסטוריית הלוח ע"י @codokie (#403, #649) +* הוספת פריסה רוסית (Student) ע"י @Zolax9 (#640) +* הוספת numpad לאפשרויות בלחיצה ממושכת על כפתור הסימנים (#588) +* תיקונים שוליים ושיפורים, כולל #632, #637, #638 ע"י @RHJihan diff --git a/fastlane/metadata/android/iw-IL/changelogs/1004.txt b/fastlane/metadata/android/iw-IL/changelogs/1004.txt new file mode 100644 index 0000000000..23368d5383 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/1004.txt @@ -0,0 +1,7 @@ +- עדכון פריסה סרבית קירילית ע"י @markokocic (#704, #705) +- עדכון פריסת אסטוניה ע"י @tenextractor (#693) +- תיקון רשומות כפולות בהיסטוריית הלוח ע"י @codokie (#616, #680) +- רשומות מלל בלבד בהיסטוריית הלוח ע"י @codokie (#711) +- תמונות טובות יותר ב-metadata ע"י @RHJihan (#713) +- תיקון קביעת הצבע של כפתורים בדו-שיח הבחירה של toolbar ע"י @codokie (#715, #716) +- תיקונים אחרים (#684, #723 ועוד) diff --git a/fastlane/metadata/android/iw-IL/changelogs/2000.txt b/fastlane/metadata/android/iw-IL/changelogs/2000.txt new file mode 100644 index 0000000000..fe948da8c5 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/2000.txt @@ -0,0 +1,10 @@ +* הוספת תמיכה בסיסית במקשי צירוף +* הוספת פונקציות לחיצה ממושכת לכפתורי toolbar נוספים +* ועוד כפתורי toolbar של היסטוריית הלוח +* הפיכת toolbar היסטוריית הלוח לניתן להתאמה +* אפשרות להתאמת כל הצבעים +* הוספת הגדרה להצגה תמיד של מילה להזנה כהצעה האמצעית +* הוספת חיווי caps lock +* הוספת פריסות מורחבות Piedmontese, Eastern Mari, Mansi, ל-Kannada והונגרית +* תיקון מלל קטוע בpopup התצוגה המקדימה של תו במכשירים מסויימים +* תיקונים ושיפורים נוספים, ראו בתיעוד הגירסה diff --git a/fastlane/metadata/android/iw-IL/changelogs/2001.txt b/fastlane/metadata/android/iw-IL/changelogs/2001.txt new file mode 100644 index 0000000000..4f632139db --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/2001.txt @@ -0,0 +1,11 @@ +* הוספת אפשרות להתאמת פריסות מקשים פונקציונליים +* התאמות עדינות של פריסות סימנים וסימנים נוספים +* הוספת אפשרויות להצגה והסתרה אוטומטית של הtoolbar +* הוספת הודעה מוקפצת בהעתקת מלל +* הפרדה בין הפעלה להתנהגות כפתור מעבר השפות +* הוספת חלון צץ של פיסוק לפריסות מקלדת מספרים וטלפון +* הוספת אפשרות בחירה לנעיצה בלחיצה ממושכת בtoolbar +* העברת הגדרות toolbar למקטע נפרד +* הוספת מקש tab +* הבנת ctrl, toolbar ותוויות מקשים אחרות בפריסות +* תיקונים ושיפורים שוליים diff --git a/fastlane/metadata/android/iw-IL/changelogs/2002.txt b/fastlane/metadata/android/iw-IL/changelogs/2002.txt new file mode 100644 index 0000000000..77f6afa92d --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/2002.txt @@ -0,0 +1,4 @@ +* הוספת כפתור toolbar של אימוג'י, ע"י @codokie (#845, #837) +* שיפורים בעניין אותיות משוכפלות (#225 ואולי אחרים) +* מניעת הצבת הסמן בתוך אימוג'ים (#859) +* תיקונים שוליים לתכונות שנוספו לאחרונה diff --git a/fastlane/metadata/android/iw-IL/changelogs/2003.txt b/fastlane/metadata/android/iw-IL/changelogs/2003.txt new file mode 100644 index 0000000000..1dc686a889 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/2003.txt @@ -0,0 +1,11 @@ +* פריסה ניתנת להתאמה של מקשים פונקציונליים +* התאמות קלות של פריסות סימנים וסימנים נוספים +* תמיכה בסיסית במקשי alt, ctrl, fn, meta +* הרחבת toolbar (פונקציונליות לחיצה ממושכת, אפשרות לנעיצה בלחיצה ממושכת, הצגה/הסתרה אוטומטית,לוח משופר toolbar, ...) +* הוספת מקש tab +* הוספת חיווי caps lock +* הוספת פריסות למספר שפות +* הוספת מקשי toolbar כמקשי מקלדת +* אפשרות לעריכת כל הצבעים +* הודעה מוקפצת בעת העתקת מלל +* תיקוני באגים ושיפורים נוספים, ראו בתיעוד הגירסה diff --git a/fastlane/metadata/android/iw-IL/changelogs/2100.txt b/fastlane/metadata/android/iw-IL/changelogs/2100.txt new file mode 100644 index 0000000000..8813ae3ab7 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/2100.txt @@ -0,0 +1,8 @@ +* תיקון פריסה משובשת של מקשים פונקציונליים לטאבלטים +* הצגת כפתור מעבר שפות רק כשי אפשרות למעבר +* שינוי צבעי ברירת המחדל של הגדרת "כל הצבעים" לאקראיים במקום אפור +* אפשרות להתאמת השהיית ההתחלה למחוותתוך כדי הקלדה, ע"י @devycarol +* אפשרות לעריכת מקשי סוגי המטבע +* צמצום משך הלחיצה הממושכת ל-shift -> caps lock, ע"י @devycarol +* הרחבת חלונות צצים ל-superscript בnumber row ובפריסת הסימנים, ע"י @b02860de585071a2 +* תיקונים ושיפורים שוליים diff --git a/fastlane/metadata/android/iw-IL/changelogs/2200.txt b/fastlane/metadata/android/iw-IL/changelogs/2200.txt new file mode 100644 index 0000000000..8952d01792 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/2200.txt @@ -0,0 +1,11 @@ +* הוספת יכולת לשמירה / ייצוא של ערכות נושא מותאמות +* מקשי החיצים במקלדת כעת חוזרים על עצמם +* מקשי סמן נוספים של toolbar (דפדוף למעלה/למטה(/התחלה/סוף, מילה שמאלה/ימינה) +* הוספת כפתור "הדבקה" +* שיפור התנהגות החלקה של מקשים +* הוספת הפעלת numpad להגדרת החלקה על מקש הרווח +* הוספת הצעה מהלוח למלל שהועתק לאחרונה +* ביטל סימון מללבלחיצה נוספת על מקשי הבחירה +* כיוונון צבעים מסויימים בהגדרות באנדרואיד 12+ +* כיוונון מקשי popup תלויי-שפה +* תיקונים ושיפורים שוליים diff --git a/fastlane/metadata/android/iw-IL/changelogs/2201.txt b/fastlane/metadata/android/iw-IL/changelogs/2201.txt new file mode 100644 index 0000000000..bf1e6061b1 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/2201.txt @@ -0,0 +1,2 @@ +* הוספת אפשרויות חזותיות להקלדה במחוות, ע"י @devycarol (#944) +* עדכון סמלים חלקי, ע"י @BlackyHawky (#977) diff --git a/fastlane/metadata/android/iw-IL/changelogs/2300.txt b/fastlane/metadata/android/iw-IL/changelogs/2300.txt new file mode 100644 index 0000000000..9e60ba0f4d --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/2300.txt @@ -0,0 +1,9 @@ +* התרת התאמות של תצוגות number row, קודי toolbar, סמלים, מלל מקש הרווח, שורה תחתונה לאמוג'י והלוח +* ניתוק הצימוד בין סגנון הסמלים לסגנון המקלדת +* השבתת הסרת ריבוי popup כברירת-מחדל (והוספת תיקון קטן) +* הוספה מעודנת יותר של מילים למילון הפרטי +* בלי רטט במצב נא לא להפריע +* שיפור ביצועים בעת העתקת מלל רב +* תיקון שיבוש חלקי בחלוניות הפיסוק +* תיקון חלק מהבעיות של שכפול מלל +* פרטים שוליים ועוד תיקוני באגים diff --git a/fastlane/metadata/android/iw-IL/changelogs/2301.txt b/fastlane/metadata/android/iw-IL/changelogs/2301.txt new file mode 100644 index 0000000000..9e60ba0f4d --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/2301.txt @@ -0,0 +1,9 @@ +* התרת התאמות של תצוגות number row, קודי toolbar, סמלים, מלל מקש הרווח, שורה תחתונה לאמוג'י והלוח +* ניתוק הצימוד בין סגנון הסמלים לסגנון המקלדת +* השבתת הסרת ריבוי popup כברירת-מחדל (והוספת תיקון קטן) +* הוספה מעודנת יותר של מילים למילון הפרטי +* בלי רטט במצב נא לא להפריע +* שיפור ביצועים בעת העתקת מלל רב +* תיקון שיבוש חלקי בחלוניות הפיסוק +* תיקון חלק מהבעיות של שכפול מלל +* פרטים שוליים ועוד תיקוני באגים diff --git a/fastlane/metadata/android/iw-IL/changelogs/3004.txt b/fastlane/metadata/android/iw-IL/changelogs/3004.txt new file mode 100644 index 0000000000..674053177a --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/3004.txt @@ -0,0 +1,11 @@ +* הוספת פריסות: ערבית (הג'אי), עברית 1452-2, הינדית פונטית, דארגווה (אוראקי), באישאקי,כורדית +* עדכון מספר פריסות +* תמיכה בשילוב סימנים דיאקריטיים +* מקש סרגל הכלים למקלדת מפוצלת +* הוספת סיומות .com לחלון צץ +* אפשרות לבחירת גופן מותאם +* הוספת הגדרת סדר-גודל הגופן +* שיפור המעבר האוטומטי בין שפות +* שיפור ההגדרות +* הוספת הגדרות לכיוונון נוסף של שולי המקלדת, רווח אוטומטי, תיקון אוטומטי, שורת המספרים +* תכולות ותיקונים נוספים diff --git a/fastlane/metadata/android/iw-IL/changelogs/3005.txt b/fastlane/metadata/android/iw-IL/changelogs/3005.txt new file mode 100644 index 0000000000..674053177a --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/3005.txt @@ -0,0 +1,11 @@ +* הוספת פריסות: ערבית (הג'אי), עברית 1452-2, הינדית פונטית, דארגווה (אוראקי), באישאקי,כורדית +* עדכון מספר פריסות +* תמיכה בשילוב סימנים דיאקריטיים +* מקש סרגל הכלים למקלדת מפוצלת +* הוספת סיומות .com לחלון צץ +* אפשרות לבחירת גופן מותאם +* הוספת הגדרת סדר-גודל הגופן +* שיפור המעבר האוטומטי בין שפות +* שיפור ההגדרות +* הוספת הגדרות לכיוונון נוסף של שולי המקלדת, רווח אוטומטי, תיקון אוטומטי, שורת המספרים +* תכולות ותיקונים נוספים diff --git a/fastlane/metadata/android/iw-IL/changelogs/3006.txt b/fastlane/metadata/android/iw-IL/changelogs/3006.txt new file mode 100644 index 0000000000..674053177a --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/3006.txt @@ -0,0 +1,11 @@ +* הוספת פריסות: ערבית (הג'אי), עברית 1452-2, הינדית פונטית, דארגווה (אוראקי), באישאקי,כורדית +* עדכון מספר פריסות +* תמיכה בשילוב סימנים דיאקריטיים +* מקש סרגל הכלים למקלדת מפוצלת +* הוספת סיומות .com לחלון צץ +* אפשרות לבחירת גופן מותאם +* הוספת הגדרת סדר-גודל הגופן +* שיפור המעבר האוטומטי בין שפות +* שיפור ההגדרות +* הוספת הגדרות לכיוונון נוסף של שולי המקלדת, רווח אוטומטי, תיקון אוטומטי, שורת המספרים +* תכולות ותיקונים נוספים diff --git a/fastlane/metadata/android/iw-IL/changelogs/3007.txt b/fastlane/metadata/android/iw-IL/changelogs/3007.txt new file mode 100644 index 0000000000..674053177a --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/3007.txt @@ -0,0 +1,11 @@ +* הוספת פריסות: ערבית (הג'אי), עברית 1452-2, הינדית פונטית, דארגווה (אוראקי), באישאקי,כורדית +* עדכון מספר פריסות +* תמיכה בשילוב סימנים דיאקריטיים +* מקש סרגל הכלים למקלדת מפוצלת +* הוספת סיומות .com לחלון צץ +* אפשרות לבחירת גופן מותאם +* הוספת הגדרת סדר-גודל הגופן +* שיפור המעבר האוטומטי בין שפות +* שיפור ההגדרות +* הוספת הגדרות לכיוונון נוסף של שולי המקלדת, רווח אוטומטי, תיקון אוטומטי, שורת המספרים +* תכולות ותיקונים נוספים diff --git a/fastlane/metadata/android/iw-IL/changelogs/3008.txt b/fastlane/metadata/android/iw-IL/changelogs/3008.txt new file mode 100644 index 0000000000..674053177a --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/3008.txt @@ -0,0 +1,11 @@ +* הוספת פריסות: ערבית (הג'אי), עברית 1452-2, הינדית פונטית, דארגווה (אוראקי), באישאקי,כורדית +* עדכון מספר פריסות +* תמיכה בשילוב סימנים דיאקריטיים +* מקש סרגל הכלים למקלדת מפוצלת +* הוספת סיומות .com לחלון צץ +* אפשרות לבחירת גופן מותאם +* הוספת הגדרת סדר-גודל הגופן +* שיפור המעבר האוטומטי בין שפות +* שיפור ההגדרות +* הוספת הגדרות לכיוונון נוסף של שולי המקלדת, רווח אוטומטי, תיקון אוטומטי, שורת המספרים +* תכולות ותיקונים נוספים diff --git a/fastlane/metadata/android/iw-IL/changelogs/3100.txt b/fastlane/metadata/android/iw-IL/changelogs/3100.txt new file mode 100644 index 0000000000..0a2d1445d0 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/3100.txt @@ -0,0 +1,10 @@ +* אפשרות להצעת שמות של יישומים מותקנים +* החלקה למעבר בין קטגוריות אמוג'י +* הצגת הודעה לאחר שחזור גיבוי +* כפתור וסמלי toolbar גדולים יותר +* לאפשר גישה לפסיק בחלוניות צצות בעת הצגת חלוניות צצות TLD +* הוספת אפשרות לגוון-עור ברירת-מחדל לאמוג'ים +* הוספת keycodes למקשי alt ימני ושמאלי ולמקש ctrl +* הוספת תווית מפתח "timestamp" למפתח נגיש יותר של חתימת זמן +* הבנת תוויות מקשים מיוחדים לחלוניות צצות בפריסות פשוטות +* תיקונים ושיפורים שוליים diff --git a/fastlane/metadata/android/iw-IL/changelogs/3101.txt b/fastlane/metadata/android/iw-IL/changelogs/3101.txt new file mode 100644 index 0000000000..4e17a2c157 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/3101.txt @@ -0,0 +1,9 @@ +* אפשרות להצעת שמות של יישומים מותקנים +* החלקה למעבר בין קטגוריות אמוג'י +* הצגת הודעה לאחר שחזור גיבוי +* לאפשר גישה לפסיק בחלוניות צצות בעת הצגת חלוניות צצות TLD +* הוספת אפשרות לגוון-עור ברירת-מחדל לאמוג'ים +* הוספת keycodes למקשי alt ימני ושמאלי ולמקש ctrl +* הוספת תווית מפתח "timestamp" למפתח נגיש יותר של חתימת זמן +* הבנת תוויות מקשים מיוחדים לחלוניות צצות בפריסות פשוטות +* תיקונים ושיפורים שוליים diff --git a/fastlane/metadata/android/iw-IL/changelogs/3200.txt b/fastlane/metadata/android/iw-IL/changelogs/3200.txt new file mode 100644 index 0000000000..9141834981 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/3200.txt @@ -0,0 +1,10 @@ +* הוספת מצבי סרגל כלים (מאפשר הסתרת סרגלי כלים) +* הוספת גווני עור חסרים לחלק מהאמוג'ים +* שיפור מסך הכתב התחתי ודו-שיח המילון +* תיקון הצבעים בעת כפיית מצב כהה +* העברת מרבית הגדרות קנה-המידה של מצב אנכי / אופקי לדו-שיח +* הסרת תרגומי מחרוזות המסומנות כבלתי ניתנות לתרגום +* תיקון כיווני החץ למעבר למסך הבא עבור שםות הנכתבות מימין לשמאל +* תיקון טעינה נכונה של הגדרות השפה העברית באנדרואיד 15 +* הצגת מקלדת בסיסית לכל הפחות כאשר ספריה איננה עובדת כלל +* תיקוני שגיאות שוליות diff --git a/fastlane/metadata/android/iw-IL/changelogs/3201.txt b/fastlane/metadata/android/iw-IL/changelogs/3201.txt new file mode 100644 index 0000000000..9141834981 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/3201.txt @@ -0,0 +1,10 @@ +* הוספת מצבי סרגל כלים (מאפשר הסתרת סרגלי כלים) +* הוספת גווני עור חסרים לחלק מהאמוג'ים +* שיפור מסך הכתב התחתי ודו-שיח המילון +* תיקון הצבעים בעת כפיית מצב כהה +* העברת מרבית הגדרות קנה-המידה של מצב אנכי / אופקי לדו-שיח +* הסרת תרגומי מחרוזות המסומנות כבלתי ניתנות לתרגום +* תיקון כיווני החץ למעבר למסך הבא עבור שםות הנכתבות מימין לשמאל +* תיקון טעינה נכונה של הגדרות השפה העברית באנדרואיד 15 +* הצגת מקלדת בסיסית לכל הפחות כאשר ספריה איננה עובדת כלל +* תיקוני שגיאות שוליות diff --git a/fastlane/metadata/android/iw-IL/changelogs/3300.txt b/fastlane/metadata/android/iw-IL/changelogs/3300.txt new file mode 100644 index 0000000000..4743021918 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/3300.txt @@ -0,0 +1,11 @@ +- רישיות בהצעות בלחיצה על shift +- הוספת קודי מקש לשידור כוונות +- אפשרות להצגת תיאורי אמוג'ים, נדרש מילון אמוג'ים +- שיפור הטיפול במקלדת חומרה +- הוספת אפשרות "הסתרת המקלדת" בהחלקה אנכית על מקש רווח +- הוספת כתב תחתי לטיני +- ניתן להשבית הצעת אמוג'ים בעת הוספת מילון אמוג'ים +- תיקון אמוג'ים חסרים במקלדת מפוצלת +- הסרת אמוג'ים שלא נועדו לשימוש בפני עצמם +- תיקון סוגיות של רשימת החסימות +- תיקון התנהגות מחיקה עם מקש backspace עבור מספר אמוג'ים diff --git a/fastlane/metadata/android/iw-IL/changelogs/3301.txt b/fastlane/metadata/android/iw-IL/changelogs/3301.txt new file mode 100644 index 0000000000..4743021918 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/3301.txt @@ -0,0 +1,11 @@ +- רישיות בהצעות בלחיצה על shift +- הוספת קודי מקש לשידור כוונות +- אפשרות להצגת תיאורי אמוג'ים, נדרש מילון אמוג'ים +- שיפור הטיפול במקלדת חומרה +- הוספת אפשרות "הסתרת המקלדת" בהחלקה אנכית על מקש רווח +- הוספת כתב תחתי לטיני +- ניתן להשבית הצעת אמוג'ים בעת הוספת מילון אמוג'ים +- תיקון אמוג'ים חסרים במקלדת מפוצלת +- הסרת אמוג'ים שלא נועדו לשימוש בפני עצמם +- תיקון סוגיות של רשימת החסימות +- תיקון התנהגות מחיקה עם מקש backspace עבור מספר אמוג'ים diff --git a/fastlane/metadata/android/iw-IL/changelogs/3400.txt b/fastlane/metadata/android/iw-IL/changelogs/3400.txt new file mode 100644 index 0000000000..1bd202d1b9 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/3400.txt @@ -0,0 +1,5 @@ +- הגבלת מספר האמוג'ים המוצעים בסרגל ההצעות לאחד (אם ניתן) +- תיקון הוספת רווח גרועה +- תיקון מלל לבן על רקע לבן במספר מכשירים +- תיקון הצעות גרועות עם `'` +- הוספת שווא Ə רבים לאיטלקית diff --git a/fastlane/metadata/android/iw-IL/changelogs/3501.txt b/fastlane/metadata/android/iw-IL/changelogs/3501.txt new file mode 100644 index 0000000000..ad794020cd --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/3501.txt @@ -0,0 +1,3 @@ +- תיקוני קריסות +- תיקון של תיקון שגיאות אוטומטי לקוי שנוסף ב-3.4 +- רטט למחוות רווח ומחיקה אם הופעל diff --git a/fastlane/metadata/android/iw-IL/changelogs/3600.txt b/fastlane/metadata/android/iw-IL/changelogs/3600.txt new file mode 100644 index 0000000000..033c992e5d --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/3600.txt @@ -0,0 +1,12 @@ +* הוספת חיפוש אמוג'י מוטמע +* אפשרות לשימור שפה / תת-סוג פרטנית ליישום +* תיקונים ושיפורים למשוב מגע +* שימור תוכן לוח שלא נעוץ בהפעלה מחדש של היישום +* אפשרות להצגת תוכן הלוח הנעוץ אחרון +* הוספת שורה תחתונה לבחירה של אמוג'י ולוח +* הוספת פקד לביטול הצעות מוטמעות +* הוספת בנגלית Khipro +* הוספת מירנדזית +* פתרון מעקף לבעיות עם מקלדת חומרה +* קישורים למילונים כעת עוברים ישירות לקובץ +* תיקונים ושיפורים שוליים שונים diff --git a/fastlane/metadata/android/iw-IL/changelogs/3601.txt b/fastlane/metadata/android/iw-IL/changelogs/3601.txt new file mode 100644 index 0000000000..8f74e70e26 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/3601.txt @@ -0,0 +1,12 @@ +* הוספת חיפוש אמוג'י מוטמע בשורה +* אפשרות לשימור שפה / תת-סוג פרטנית ליישום +* תיקונים ושיפורים של משוב מגע +* שימור תוכן לוח בלתי נעוץ בהפעלה מחדש של היישום +* אפשרות להצגת תוכן הלוח הנעוץ בסוף +* הוספת אפשרות לשורה תחתונה של אמוג'י ולוח +* הוספת פקד לביטול הצעות מוטמעות +* הוספת בנגלית Khipro +* הוספת מירנדזית +* פתרון מעקף לבעיות עם מקלדת חומרה +* קישורים למילונים כעת עוברים ישירות לקובץ +* תיקונים ושיפורים שוליים שונים diff --git a/fastlane/metadata/android/iw-IL/changelogs/3602.txt b/fastlane/metadata/android/iw-IL/changelogs/3602.txt new file mode 100644 index 0000000000..033c992e5d --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/3602.txt @@ -0,0 +1,12 @@ +* הוספת חיפוש אמוג'י מוטמע +* אפשרות לשימור שפה / תת-סוג פרטנית ליישום +* תיקונים ושיפורים למשוב מגע +* שימור תוכן לוח שלא נעוץ בהפעלה מחדש של היישום +* אפשרות להצגת תוכן הלוח הנעוץ אחרון +* הוספת שורה תחתונה לבחירה של אמוג'י ולוח +* הוספת פקד לביטול הצעות מוטמעות +* הוספת בנגלית Khipro +* הוספת מירנדזית +* פתרון מעקף לבעיות עם מקלדת חומרה +* קישורים למילונים כעת עוברים ישירות לקובץ +* תיקונים ושיפורים שוליים שונים diff --git a/fastlane/metadata/android/iw-IL/changelogs/3603.txt b/fastlane/metadata/android/iw-IL/changelogs/3603.txt new file mode 100644 index 0000000000..033c992e5d --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/3603.txt @@ -0,0 +1,12 @@ +* הוספת חיפוש אמוג'י מוטמע +* אפשרות לשימור שפה / תת-סוג פרטנית ליישום +* תיקונים ושיפורים למשוב מגע +* שימור תוכן לוח שלא נעוץ בהפעלה מחדש של היישום +* אפשרות להצגת תוכן הלוח הנעוץ אחרון +* הוספת שורה תחתונה לבחירה של אמוג'י ולוח +* הוספת פקד לביטול הצעות מוטמעות +* הוספת בנגלית Khipro +* הוספת מירנדזית +* פתרון מעקף לבעיות עם מקלדת חומרה +* קישורים למילונים כעת עוברים ישירות לקובץ +* תיקונים ושיפורים שוליים שונים diff --git a/fastlane/metadata/android/iw-IL/full_description.txt b/fastlane/metadata/android/iw-IL/full_description.txt new file mode 100644 index 0000000000..b72295394f --- /dev/null +++ b/fastlane/metadata/android/iw-IL/full_description.txt @@ -0,0 +1,30 @@ +HeliBoard היא מקלדת קוד פתוח מכבדת פרטיות, מבוססת על AOSP / OpenBoard. +היא איננה משתמשת בהרשאת אינטרנט, וכך היא 100% בלתי-מקוונת. + +תכונות: +
                    +
                  • ניתן להוסיף מילונים להצעות ולבדיקת איות
                  • +
                      +
                    • הגדירו בעצמכם או הורידו אותם כאן, או באזור הנסיוני (האיכות איננה אחידה)
                    • +
                    • מילונים נוספים לאימוג'ים או סימנים מדעיים יכולים לשמש להצעות (בדומה ל"חיפוש אימוג'י")
                    • +
                    • שימו לב שלפריסה קוריאנית, הצעות יפעלו רק בשימוש במילון זה, הכלים במאגר המילונים אינם יכולים ליצור מילונים שפועלים
                    • +
                    +
                  • ניתן להתאים ערכות-נושא (סגנון, צבעים ותמונת רקע)
                  • +
                      +
                    • ניתן להתאים להגדרת מצב תצוגת יום/לילה המוגדר באנדרואיד 10+ (וגם במספר גרסאות של אנדרואיד 9)
                    • +
                    • ניתן להתאים להגדרת הצבעים החיים באנדרואיד 12+
                    • +
                    +
                  • התאמת פריסותהמקלדת )האפשרות זמינה רק כשמשביתים את שימוש בשפות המערכת)
                  • +
                  • התאמת פריסות מיוחדות, כמו סימנים, מספרים או פריסת מקשים פונקציונליים
                  • +
                  • הקלדה מרובת שפות
                  • +
                  • הקלדה בהחלקה (רק עם ספרייה בקוד סגור ☹️)
                  • +
                      +
                    • הספריה איננה כלולה ביישום, משום שאין ספריה זמינה תואמת בקוד פתוח
                    • +
                    • ניתנת לחילוץ מחבילות GApps ("swypelibs"), או להורדה כאן (הקליקו על הקובץ ואז על "raw" או על כפתור ההורדה הזעיר)
                    • +
                    +
                  • היסטוריית הלוח
                  • +
                  • מצב הקלדה ביד אחת
                  • +
                  • מקלדת מפוצלת (זמינה רק אם המסך גדול מספיק)
                  • +
                  • מקלדת מספרים
                  • +
                  • גיבוי ושחזור ההגדרות שלך והמילים שנלמדו / נתוני ההיסטוריה
                  • +
                  diff --git a/fastlane/metadata/android/iw-IL/short_description.txt b/fastlane/metadata/android/iw-IL/short_description.txt new file mode 100644 index 0000000000..5bd0578559 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/short_description.txt @@ -0,0 +1 @@ +מקלדת ניתנת להתאמה בקוד פתוח diff --git a/fastlane/metadata/android/iw-IL/title.txt b/fastlane/metadata/android/iw-IL/title.txt new file mode 100644 index 0000000000..96dee74f44 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/title.txt @@ -0,0 +1 @@ +הליבורד HeliBoard diff --git a/fastlane/metadata/android/lv/changelogs/2002.txt b/fastlane/metadata/android/lv/changelogs/2002.txt new file mode 100644 index 0000000000..e2d5bc5796 --- /dev/null +++ b/fastlane/metadata/android/lv/changelogs/2002.txt @@ -0,0 +1,4 @@ +* pievienots emocijzīmju rīkjoslas taustiņš, autors @codokie (#845, #837) +* uzlabojumi, kas saistīti ar dublētiem burtiem (#225 un, iespējams, citi) +* izvairās novietot kursoru emocijzīmju iekšpusē (#859) +* nelieli labojumi nesen pievienotajām funkcijām diff --git a/fastlane/metadata/android/lv/changelogs/2201.txt b/fastlane/metadata/android/lv/changelogs/2201.txt new file mode 100644 index 0000000000..cb2f7ae9db --- /dev/null +++ b/fastlane/metadata/android/lv/changelogs/2201.txt @@ -0,0 +1,2 @@ +* pievienoti žestu rakstīšanas vizuālie iestatījumi, autors @devycarol (#944) +* atjauninātas dažas ikonas, autors @BlackyHawky (#977) diff --git a/fastlane/metadata/android/lv/short_description.txt b/fastlane/metadata/android/lv/short_description.txt new file mode 100644 index 0000000000..711d5026b5 --- /dev/null +++ b/fastlane/metadata/android/lv/short_description.txt @@ -0,0 +1 @@ +Pielāgojama atvērtā pirmkoda tastatūra diff --git a/fastlane/metadata/android/lv/title.txt b/fastlane/metadata/android/lv/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/lv/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/nl-NL/changelogs/1001.txt b/fastlane/metadata/android/nl-NL/changelogs/1001.txt new file mode 100644 index 0000000000..54ab0c0ace --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/1001.txt @@ -0,0 +1,20 @@ +* nieuw pictogram van @FabianOvrWrt met bijdragen van @ the-eclectic-dyslexic (#517, #592) +* meer aanpasbare spatiebalk trackpad en taalschakelaar door @arcarum (#486) +* % toevoegen om de lay-out van symbolen te verschuiven (#568, #428) +* verbeter het gedrag wanneer de taalschakeltoets is ingesteld om van taal en toetsenbord te wisselen +* links naar bestaande woordenboeken weergeven bij het toevoegen van een woordenboek +* toevoeging van Kaitag-indeling door @alkaitagi (#519) +* toevoeging van Probhat layout door @fahimscirex (#489) +* schakel de werkbalkvolgorde voor RTL-talen optioneel om door @codokie (#557, #574) +* toestaan dat speciale lay-outs worden aangepast (numpad, telefoon, ...) + * nog steeds experimenteel, omdat de basislay-outs kunnen veranderen +* bijgewerkte spellchecker.xml om locaties op te nemen waar woordenboeken beschikbaar zijn, maar niet inbegrepen in de app +* vertalingen bijwerken (dankzij alle vertalers!) +* upgrade ndk door @Syphyr (#560) +* upgrade inline autofill-code door @arcarum (#595) +* probleem opgelost met het dialoogvenster met de werkbalktoets (#505) +* probleem opgelost met Turkse lay-out (#508) +* fixeer verkeerde schakelaarstatus bij rotatie in kleurenscherm aanpassen (#563) +* probleem opgelost met recente emoji's die niet worden geladen (#527) +* probleem opgelost met cijfers die niet in bepaalde velden verschijnen (#585) +* enkele kleine problemen opgelost diff --git a/fastlane/metadata/android/nl-NL/changelogs/1003.txt b/fastlane/metadata/android/nl-NL/changelogs/1003.txt new file mode 100644 index 0000000000..9c201bb40e --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/1003.txt @@ -0,0 +1,9 @@ +* wijziging van pictogrammen voor autocorrectie en selecteer alle werkbalktoetsen door @codokie (#524, #651) +* Chuvash-indeling toegevoegd door @tenextractor (#677) +* toets werkbalk knippen toegevoegd door @codokie (#678) +* update Probhat layout door @fahimscirex (#628) +* werkbalkpictogrammen weergeven in het dialoogvenster met werkbalktoetsen +* knop sluiten toegevoegd in de geschiedenis van het klembord door @codokie (#403, #649) +* Russische (Student) layout toegevoegd door @ Zolax9 (#640) +* maak numpad op symbolen toets lange druk optioneel (#588) +* kleine oplossingen en verbeteringen, waaronder #632, #637, #638 door @RHJihan diff --git a/fastlane/metadata/android/nl-NL/changelogs/1004.txt b/fastlane/metadata/android/nl-NL/changelogs/1004.txt new file mode 100644 index 0000000000..4432587a8b --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/1004.txt @@ -0,0 +1,7 @@ +- update Servische Cyrillische lay-out door @markokocic (#704, #705) +- update Estland layout door @tenextractor (#693) +- reparatie vsn dubbele items in de klembordgeschiedenis door @codokie (#616, #680) +- voeg alleen tekstinvoer toe aan de klembordgeschiedenis door @codokie (#711) +- betere afbeeldingen in metadata door @RHJihan (#713) +- correcte instelling van de kleur van pictogrammen in het dialoogvenster voor werkbalkselectie door @codokie (#715, #716) +- overige oplossingen van problemen (#684, #723 en meer) diff --git a/fastlane/metadata/android/nl-NL/changelogs/2000.txt b/fastlane/metadata/android/nl-NL/changelogs/2000.txt new file mode 100644 index 0000000000..af2744421d --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/2000.txt @@ -0,0 +1,10 @@ +* toevoeging van basisondersteuning voor modificatietoetsen +* toevoeging van lange persfuncties aan meer werkbalktoetsen +* en meer werkbalktoetsen met klembordgeschiedenis +* maak de werkbalk van de klembordgeschiedenis aanpasbaar +* mogelijkheid om alle kleuren aan te passen +* toevoeging van instelling om altijd te laten zien dat woord moet worden ingevoerd als middelste suggestie +* toevoeging caps lock-indicator +* toevoeging van Piemontese, Eastern Mari, Mansi, uitgebreide lay-outs voor Kannada en Hongaars +* reparatie van afgesneden tekst in de pop-up van sleutelvoorvertoningen op sommige apparaten +* verdere oplossingen en verbeteringen, zie release notes diff --git a/fastlane/metadata/android/nl-NL/changelogs/2001.txt b/fastlane/metadata/android/nl-NL/changelogs/2001.txt new file mode 100644 index 0000000000..d947afb949 --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/2001.txt @@ -0,0 +1,11 @@ +* De mogelijkheid om layout funtietoetsen aan te passen +* Aanpassing van Symbolen met meer lay-outs +* Opties voor automatisch weergeven/verbergen van werkbalk +* Pop-upmelding bij het kopiëren van tekst +* Scheiding van gedrag en activering van de taalkeuzetoets +* Pop-ups met kommatoetsen toegevoegd voor nummer- en telefoonlayouts +* Optionele mogelijkheid van lang indrukken in de werkbalk +* Werkbalkinstellingen in een aparte sectie +* Tab-toets toegevoegd +* Voorziening voor ctrl, werkbalk en andere belangrijke labels in lay-outs +* kleine oplossingen en verbeteringen diff --git a/fastlane/metadata/android/nl-NL/changelogs/2002.txt b/fastlane/metadata/android/nl-NL/changelogs/2002.txt new file mode 100644 index 0000000000..04632d94fe --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/2002.txt @@ -0,0 +1,4 @@ +* Emoji-werkbalktoets toegevoegd, door @codokie (#845, #837) +* verbeteringen met betrekking tot gedupliceerde letters (#225 en misschien anderen) +* Vermijd het plaatsen van de cursor in emoji's (#859) +* Kleine oplossingen voor recent toegevoegde functies diff --git a/fastlane/metadata/android/nl-NL/changelogs/2003.txt b/fastlane/metadata/android/nl-NL/changelogs/2003.txt new file mode 100644 index 0000000000..caae685ad6 --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/2003.txt @@ -0,0 +1,11 @@ +* Aanpasbare lay-out van de functionele toetsen +* Symbolen en meer symboollay-outs enigszins aangepast +* basisondersteuning voor alt, ctrl, fn, meta-toetsen +* uitbreiding werkbalk (functie voor lang indrukken, optioneel lang indrukken, automatisch weergeven/verbergen, verbeterde werkbalk voor klembord, ...) +* tab-toets toegevoegd +* caps lock-indicator toegevoegd +* lay-outs voor sommige talen toegevoegd +* werkbalk-toetsen als toetsenbord-toetsen +* alle kleuren aanpasbaar +* melding bij het kopiëren van tekst +* foutoplossingen en verdere verbeteringen, zie volledige release notes diff --git a/fastlane/metadata/android/nl-NL/changelogs/2100.txt b/fastlane/metadata/android/nl-NL/changelogs/2100.txt new file mode 100644 index 0000000000..45cbcd0a6f --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/2100.txt @@ -0,0 +1,8 @@ +* Herstel kapotte functionele toetslay-out voor tablets +* toon alleen de taalwisseltoets als er iets is om naar over te schakelen +* Maak de standaardkleuren voor de instelling "Alle kleuren" willekeurig in plaats van grijs +* Mogelijkheid om de startvertraging aan te passen voor gebaren tijdens het typen, door @devycarol +* Aanpassing van valutasleutels toestaan +* Verkort de lange indruktijd voor shift -> Caps Lock, met @devycarol +* Breid superscript-pop-ups uit in de lay-out van de getallenrij en symbolen met @b02860de585071a2 +* kleine correcties en verbeteringen diff --git a/fastlane/metadata/android/nl-NL/changelogs/2200.txt b/fastlane/metadata/android/nl-NL/changelogs/2200.txt new file mode 100644 index 0000000000..b16c3df46b --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/2200.txt @@ -0,0 +1,11 @@ +* Extra mogelijkheid voor het opslaan/exporteren van aangepaste thema's +* De pijltjestoetsen op het toetsenbord zijn herhaalbaar +* Meer cursorwerkbalktoetsen (pagina omhoog/omlaag (/start/einde, woord links/rechts) +* Toets Plakken toegevoegd +* Verbetering van het veeggedrag van toetsen +* Instelling voor het vegen van de spatiebalk om het numpad in te schakelen +* Klembordsuggestie voor recent gekopieerde tekst +* Deselecteer tekst bij het nogmaals indrukken van de selectietoetsen +* Afstemming van kleuren in instellingen voor Android 12+ +* Taalafhankelijke pop-uptoetsen aangepast +* Kleine reparaties en verbeteringen diff --git a/fastlane/metadata/android/nl-NL/changelogs/2201.txt b/fastlane/metadata/android/nl-NL/changelogs/2201.txt new file mode 100644 index 0000000000..c21af8efac --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/2201.txt @@ -0,0 +1,2 @@ +* Visuele opties toevoegen voor typen met gebaren, van @devycarol (#944) +* Enkele pictogrammen bijgewerkt, door @BlackyHawky (#977) diff --git a/fastlane/metadata/android/nl-NL/changelogs/2300.txt b/fastlane/metadata/android/nl-NL/changelogs/2300.txt new file mode 100644 index 0000000000..97fef080db --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/2300.txt @@ -0,0 +1,9 @@ +* Aanpassing toestaan van getallenrij, werkbalkcodes, pictogrammen, spatiebalktekst, onderste rij voor emoji- en klembordweergaven +* Pictogramstijl loskoppelen van toetsenbordstijl +* Schakel standaard het verwijderen van overbodige pop-ups uit (en voeg een kleine oplossing toe) +* Minder agressieve toevoeging van woorden aan persoonlijk woordenboek +* Geen trillingen in de modus Niet storen +* Verbeterde prestaties bij het kopiëren van grote tekst +* Repareer gedeeltelijk kapotte interpunctie-pop-ups +* Enkele problemen opgelost waarbij tekst wordt gedupliceerd +* Kleine dingen en meer oplossingen van problemen diff --git a/fastlane/metadata/android/nl-NL/changelogs/2301.txt b/fastlane/metadata/android/nl-NL/changelogs/2301.txt new file mode 100644 index 0000000000..a53de94e63 --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/2301.txt @@ -0,0 +1,9 @@ +* Het aanpassen toestaan van cijferrij, werkbalkcodes, pictogrammen, spatiebalktekst, onderste rij voor emoji- en klembordweergaven +* Pictogramstijl loskoppelen van toetsenbordstijl +* Schakel standaard het verwijderen van overbodige pop-ups uit (en oplossingen voor kleine problemen) +* Minder agressieve toevoeging van woorden aan persoonlijk woordenboek +* Geen trillingen in de modus Niet storen +* Verbeterde prestaties bij het kopiëren van grote tekst +* Repareer gedeeltelijk kapotte interpunctie-pop-ups +* Enkele problemen opgelost waarbij tekst wordt gedupliceerd +* Kleine dingen en meer problemen opgelost diff --git a/fastlane/metadata/android/nl-NL/changelogs/3004.txt b/fastlane/metadata/android/nl-NL/changelogs/3004.txt new file mode 100644 index 0000000000..6256f8aeb5 --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/3004.txt @@ -0,0 +1,11 @@ +* lay-outs toevoegen: Arabisch Hija'i, Hebreeuws 1452-2, Hindi Fonetisch, Dargwa (Urakhi), Baishakhi, Koerdisch +* Update enkele lay-outs +* Ondersteuning voor het combineren van accenten +* Gesplitste toetsenbordwerkbalktoets +* voeg .com pop-ups toe +* Toestaan instellen van aangepast lettertype +* Instelling voor lettertypeschaal toevoegen +* automatische taalomschakeling verbeteren +* Revisie instellingen +* Voeg instellingen toe voor meer afstemming van toetsenbordopvulling, automatische spatie, autocorrectie, cijferrij +* Meer functies en fixes diff --git a/fastlane/metadata/android/nl-NL/changelogs/3005.txt b/fastlane/metadata/android/nl-NL/changelogs/3005.txt new file mode 100644 index 0000000000..6256f8aeb5 --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/3005.txt @@ -0,0 +1,11 @@ +* lay-outs toevoegen: Arabisch Hija'i, Hebreeuws 1452-2, Hindi Fonetisch, Dargwa (Urakhi), Baishakhi, Koerdisch +* Update enkele lay-outs +* Ondersteuning voor het combineren van accenten +* Gesplitste toetsenbordwerkbalktoets +* voeg .com pop-ups toe +* Toestaan instellen van aangepast lettertype +* Instelling voor lettertypeschaal toevoegen +* automatische taalomschakeling verbeteren +* Revisie instellingen +* Voeg instellingen toe voor meer afstemming van toetsenbordopvulling, automatische spatie, autocorrectie, cijferrij +* Meer functies en fixes diff --git a/fastlane/metadata/android/nl-NL/changelogs/3006.txt b/fastlane/metadata/android/nl-NL/changelogs/3006.txt new file mode 100644 index 0000000000..6256f8aeb5 --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/3006.txt @@ -0,0 +1,11 @@ +* lay-outs toevoegen: Arabisch Hija'i, Hebreeuws 1452-2, Hindi Fonetisch, Dargwa (Urakhi), Baishakhi, Koerdisch +* Update enkele lay-outs +* Ondersteuning voor het combineren van accenten +* Gesplitste toetsenbordwerkbalktoets +* voeg .com pop-ups toe +* Toestaan instellen van aangepast lettertype +* Instelling voor lettertypeschaal toevoegen +* automatische taalomschakeling verbeteren +* Revisie instellingen +* Voeg instellingen toe voor meer afstemming van toetsenbordopvulling, automatische spatie, autocorrectie, cijferrij +* Meer functies en fixes diff --git a/fastlane/metadata/android/nl-NL/changelogs/3007.txt b/fastlane/metadata/android/nl-NL/changelogs/3007.txt new file mode 100644 index 0000000000..6256f8aeb5 --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/3007.txt @@ -0,0 +1,11 @@ +* lay-outs toevoegen: Arabisch Hija'i, Hebreeuws 1452-2, Hindi Fonetisch, Dargwa (Urakhi), Baishakhi, Koerdisch +* Update enkele lay-outs +* Ondersteuning voor het combineren van accenten +* Gesplitste toetsenbordwerkbalktoets +* voeg .com pop-ups toe +* Toestaan instellen van aangepast lettertype +* Instelling voor lettertypeschaal toevoegen +* automatische taalomschakeling verbeteren +* Revisie instellingen +* Voeg instellingen toe voor meer afstemming van toetsenbordopvulling, automatische spatie, autocorrectie, cijferrij +* Meer functies en fixes diff --git a/fastlane/metadata/android/nl-NL/changelogs/3008.txt b/fastlane/metadata/android/nl-NL/changelogs/3008.txt new file mode 100644 index 0000000000..6256f8aeb5 --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/3008.txt @@ -0,0 +1,11 @@ +* lay-outs toevoegen: Arabisch Hija'i, Hebreeuws 1452-2, Hindi Fonetisch, Dargwa (Urakhi), Baishakhi, Koerdisch +* Update enkele lay-outs +* Ondersteuning voor het combineren van accenten +* Gesplitste toetsenbordwerkbalktoets +* voeg .com pop-ups toe +* Toestaan instellen van aangepast lettertype +* Instelling voor lettertypeschaal toevoegen +* automatische taalomschakeling verbeteren +* Revisie instellingen +* Voeg instellingen toe voor meer afstemming van toetsenbordopvulling, automatische spatie, autocorrectie, cijferrij +* Meer functies en fixes diff --git a/fastlane/metadata/android/nl-NL/changelogs/3100.txt b/fastlane/metadata/android/nl-NL/changelogs/3100.txt new file mode 100644 index 0000000000..5a93279a1f --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/3100.txt @@ -0,0 +1,10 @@ +* Stel optioneel namen van geïnstalleerde apps voor +* Veeg om van emoji-categorie te wisselen +* Sla op na het herstellen van de back-up +* Grotere werkbalkknop en -pictogram +* komma toegankelijk maken in pop-ups bij het tonen van TLD-pop-ups +* Instelling toevoegen voor standaard emoji-huidskleur +* Voeg keycodes toe voor linker en rechter alt- en ctrl-toetsen +* Voeg sleutellabel "Timestamp" toe voor een meer toegankelijke tijdstempelsleutel +* Begrijp speciale sleutellabels voor pop-ups in eenvoudige lay-outs +* Kleine fixes en verbeteringen diff --git a/fastlane/metadata/android/nl-NL/changelogs/3101.txt b/fastlane/metadata/android/nl-NL/changelogs/3101.txt new file mode 100644 index 0000000000..401cf5321e --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/3101.txt @@ -0,0 +1,9 @@ +* Stel optioneel namen van geïnstalleerde apps voor +* Veeg om van emoji-categorie te wisselen +* Sla op na het herstellen van de back-up +* komma toegankelijk maken in pop-ups bij het tonen van TLD-pop-ups +* Instelling toevoegen voor standaard emoji-huidskleur +* Voeg keycodes toe voor linker en rechter alt- en ctrl-toetsen +* Voeg sleutellabel "Timestamp" toe voor een meer toegankelijke tijdstempelsleutel +* Begrijp speciale sleutellabels voor pop-ups in eenvoudige lay-outs +* Kleine fixes en verbeteringen diff --git a/fastlane/metadata/android/nl-NL/changelogs/3200.txt b/fastlane/metadata/android/nl-NL/changelogs/3200.txt new file mode 100644 index 0000000000..c23cf872e9 --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/3200.txt @@ -0,0 +1,10 @@ +* Werkbalkmodi toevoegen (maakt het verbergen van de werkbalk mogelijk) +* Voeg enkele ontbrekende emoji-varianten toe +* Verbetering van het subtypescherm en het woordenboekdialoogvenster +* Kleuren corrigeren bij het forceren van de donkere modus +* Verplaats de meeste instellingen voor de portret- / landschapsschaal naar een dialoogvenster +* vertalingen verwijderen van strings die als niet-vertaalbaar zijn gemarkeerd +* fix pijlrichting op het volgende scherm voor RTL-talen +* fix correct laden van Hebreeuwse landinstelling op Android 15 +* hebben op zijn minst een basistoetsenbord als de bibliotheek helemaal niet werkt +* kleine bugfixes diff --git a/fastlane/metadata/android/nl-NL/changelogs/3201.txt b/fastlane/metadata/android/nl-NL/changelogs/3201.txt new file mode 100644 index 0000000000..c23cf872e9 --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/3201.txt @@ -0,0 +1,10 @@ +* Werkbalkmodi toevoegen (maakt het verbergen van de werkbalk mogelijk) +* Voeg enkele ontbrekende emoji-varianten toe +* Verbetering van het subtypescherm en het woordenboekdialoogvenster +* Kleuren corrigeren bij het forceren van de donkere modus +* Verplaats de meeste instellingen voor de portret- / landschapsschaal naar een dialoogvenster +* vertalingen verwijderen van strings die als niet-vertaalbaar zijn gemarkeerd +* fix pijlrichting op het volgende scherm voor RTL-talen +* fix correct laden van Hebreeuwse landinstelling op Android 15 +* hebben op zijn minst een basistoetsenbord als de bibliotheek helemaal niet werkt +* kleine bugfixes diff --git a/fastlane/metadata/android/nl-NL/changelogs/3300.txt b/fastlane/metadata/android/nl-NL/changelogs/3300.txt new file mode 100644 index 0000000000..6fbef9dda1 --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/3300.txt @@ -0,0 +1,11 @@ +- suggesties kapitaliseren bij het indrukken van shift +- sleutelcodes toevoegen voor uitzendintenties +- geef optioneel emoji-beschrijvingen weer, heeft een emoji-woordenboek nodig +- verbeter de hardware-toetsenbordbehandeling +- voeg de optie "Toetsenbord verbergen" toe bij verticaal spatie vegen +- latijns subtype toevoegen +- sta toe emoji-suggesties uit te schakelen bij het toevoegen van een emoji-woordenboek +- repareer ontbrekende emoji's in een gesplitst toetsenbord +- verwijder emoji's die niet op zichzelf mogen worden gebruikt +- problemen met blacklist oplossen +- herstel het backspace-gedrag met sommige emoji's diff --git a/fastlane/metadata/android/nl-NL/changelogs/3301.txt b/fastlane/metadata/android/nl-NL/changelogs/3301.txt new file mode 100644 index 0000000000..6fbef9dda1 --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/3301.txt @@ -0,0 +1,11 @@ +- suggesties kapitaliseren bij het indrukken van shift +- sleutelcodes toevoegen voor uitzendintenties +- geef optioneel emoji-beschrijvingen weer, heeft een emoji-woordenboek nodig +- verbeter de hardware-toetsenbordbehandeling +- voeg de optie "Toetsenbord verbergen" toe bij verticaal spatie vegen +- latijns subtype toevoegen +- sta toe emoji-suggesties uit te schakelen bij het toevoegen van een emoji-woordenboek +- repareer ontbrekende emoji's in een gesplitst toetsenbord +- verwijder emoji's die niet op zichzelf mogen worden gebruikt +- problemen met blacklist oplossen +- herstel het backspace-gedrag met sommige emoji's diff --git a/fastlane/metadata/android/nl-NL/full_description.txt b/fastlane/metadata/android/nl-NL/full_description.txt new file mode 100644 index 0000000000..47d9f3dae9 --- /dev/null +++ b/fastlane/metadata/android/nl-NL/full_description.txt @@ -0,0 +1,30 @@ +HeliBoard is een privacybewust open-source toetsenbord, gebaseerd op AOSP / OpenBoard. +Het verlangt geen netwerkrechten en is dus 100% offline. + +Kenmerken: +
                    +
                  • Woordenboeken toevoegen voor suggesties en spellingcontrole
                  • +
                      +
                    • bouw je eigen, of download ze hier, of vanuit de sectie experimenteel (kwaliteit kan variëren)
                    • +
                    • aanvullende woordenboeken voor emoji's of wetenschappelijke symbolen kunnen worden gebruikt voor het geven van suggesties (vergelijkbaar met "emoji zoeken")
                    • +
                    • let op dat voor Koreaanse lay-outs suggesties alleen werken met dit woordenboek, de hulpmiddelen in de woordenboek-opslagplaats kunnen geen functionele woordenboeken aanmaken
                    • +
                    +
                  • Toetsenbordthema's aanpassen (stijl, kleuren en achtergrondafbeelding)
                  • +
                      +
                    • Dag/nacht-instelling van het systeem volgen op Android 10+ (en sommige versies van Android 9)
                    • +
                    • Dynamische kleuren volgen voor Android 12+
                    • +
                    +
                  • Toetsenbord layouts aanpassen (alleen beschikbaar bij het uitschakelen van Systeemtalen gebruiken)
                  • +
                  • Aanpassing van speciale lay-outs, zoals symbolen, cijfers of functionele toetslay-outs
                  • +
                  • Meertalige invoer
                  • +
                  • Vegend typen (Glide typing) ( alleen m.b.v. gesloten bronbibliotheek ☹️)
                  • +
                      +
                    • bibliotheek niet opgenomen in de app, omdat er geen compatibele open source bibliotheek beschikbaar is
                    • +
                    • kan worden ontleend uit GApps-pakketten (" swypelibs "), of hier downloaden (klik op het bestand en klik vervolgens op "raw" of de kleine download-knop)
                    • +
                    +
                  • Klembordgeschiedenis
                  • +
                  • Bediening met één hand
                  • +
                  • Gesplitst toetsenbord (alleen beschikbaar als het scherm groot genoeg is)
                  • +
                  • Numpad
                  • +
                  • Back-up en herstel van instellingen en geleerde woorden / geschiedenisgegevens
                  • +
                  diff --git a/fastlane/metadata/android/nl-NL/short_description.txt b/fastlane/metadata/android/nl-NL/short_description.txt new file mode 100644 index 0000000000..1452cd12af --- /dev/null +++ b/fastlane/metadata/android/nl-NL/short_description.txt @@ -0,0 +1 @@ +Aanpasbaar open-source toetsenbord diff --git a/fastlane/metadata/android/nl-NL/title.txt b/fastlane/metadata/android/nl-NL/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/nl-NL/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/pa-PK/title.txt b/fastlane/metadata/android/pa-PK/title.txt new file mode 100644 index 0000000000..864878c207 --- /dev/null +++ b/fastlane/metadata/android/pa-PK/title.txt @@ -0,0 +1 @@ +ہیلی‌بورڈ diff --git a/fastlane/metadata/android/pl-PL/changelogs/1001.txt b/fastlane/metadata/android/pl-PL/changelogs/1001.txt new file mode 100644 index 0000000000..2a95ff21e4 --- /dev/null +++ b/fastlane/metadata/android/pl-PL/changelogs/1001.txt @@ -0,0 +1,20 @@ +* nowa ikona autorstwa @FabianOvrWrt we współpracy z @the-eclectic-dyslexic (#517, #592) +* bardziej konfigurowalne przesuwanie po spacji i zmiana języka dzięki @arcarum (#486) +* dodano % do układu dodatkowych symboli (#568, #428) +* poprawiono zachowanie, gdy klawisz przełączania języka jest ustawiony na przełączanie obu języków i klawiatury +* wyświetlanie linków do istniejących słowników podczas dodawania słownika +* dodano układ kaitag dzięki @alkaitagi (#519) +* dodano układ probhat dzięki @fahimscirex (#489) +* opcjonalne odwrócenie kolejności na pasku narzędzi dla języków RTL dzięki @codokie (#557, #574) +* możliwość dostosowywania układów specjalnych (klawiatura numeryczna, telefon, ...) + * wciąż eksperymentalne, ponieważ podstawowe układy mogą ulec zmianie +* zaktualizowano spellchecker.xml, aby uwzględniał lokalizacje, w których słowniki są dostępne, ale nie są zawarte w aplikacji +* aktualizacja tłumaczeń (dzięki wszystkim tłumaczom!) +* aktualizacja ndk dzięki @Syphyr (#560) +* aktualizacja kodu autouzupełniania dzięki @arcarum (#595) +* naprawiono błąd z oknem wybierania przycisków paska narzędzi (#505) +* poprawka błędu w układzie tureckim (#508) +* naprawiono nieprawidłowe stany przełączników na ekranie dostosowywania kolorów po obróceniu urządzenia (#563) +* naprawiono błąd związany z brakiem ładowania najnowszych emoji (#527) +* naprawiono błąd powodujący, że liczby nie pojawiały się w niektórych polach (#585) +* kilka drobnych poprawek diff --git a/fastlane/metadata/android/pl-PL/changelogs/1003.txt b/fastlane/metadata/android/pl-PL/changelogs/1003.txt new file mode 100644 index 0000000000..c41adafcfe --- /dev/null +++ b/fastlane/metadata/android/pl-PL/changelogs/1003.txt @@ -0,0 +1,9 @@ +* zmiana ikon na pasku narzędzi dla autokorekty i wybierania wszystkiego dzięki @codokie (#524, #651) +* dodano układ czuwaski dzięki @tenextractor (#677) +* dodano przycisk wycinania dzięki @codokie (#678) +* aktualizacja układu probhat dzięki @fahimscirex (#628) +* pokazywanie ikon paska narzędzi w oknie wybierania przycisków +* dodano przycisk zamykania historii schowka dzięki @codokie (#403, #649) +* dodano układ rosyjski (uczeń) dzięki @Zolax9 (#640) +* wyświetlanie klawiatury numerycznej poprzez przytrzymanie klawisza symboli jest teraz opcjonalne (#588) +* drobne poprawki i ulepszenia, w tym #632, #637, #638 dzięki @RHJihan diff --git a/fastlane/metadata/android/pl-PL/changelogs/1004.txt b/fastlane/metadata/android/pl-PL/changelogs/1004.txt new file mode 100644 index 0000000000..3a1baabfab --- /dev/null +++ b/fastlane/metadata/android/pl-PL/changelogs/1004.txt @@ -0,0 +1,7 @@ +- aktualizacja układu serbskiego (cyrylica) dzięki @markokocic (#704, #705) +- aktualizacja układu estońskiego dzięki @tenextractor (#693) +- naprawa zduplikowanych wpisów w historii schowka dzięki @codokie (#616, #680) +- dodawanie tylko wpisów tekstowych do historii schowka dzięki @codokie (#711) +- lepsze obrazy w metadanych dzięki @RHJihan (#713) +- prawidłowe ustawienie koloru ikon w oknie wybierania przycisków paska narzędzi dzięki @codokie (#715, #716) +- inne poprawki (#684, #723 i więcej) diff --git a/fastlane/metadata/android/pl-PL/changelogs/2000.txt b/fastlane/metadata/android/pl-PL/changelogs/2000.txt new file mode 100644 index 0000000000..fd89410ba9 --- /dev/null +++ b/fastlane/metadata/android/pl-PL/changelogs/2000.txt @@ -0,0 +1,10 @@ +* dodano podstawową obsługę klawiszy modyfikujących +* dodano funkcję długiego naciśnięcia dla większej liczby klawiszy paska narzędzi +* oraz więcej klawiszy paska narzędzi w schowku +* możliwość dostosowania klawiszy paska narzędzi w schowku +* możliwość dostosowania wszystkich kolorów +* dodano ustawienie, aby zawsze wyświetlać wpisywane słowo jako środkową sugestię +* dodano wskaźnik Caps Lock +* dodano piemoncki, mari wschodni, mansyjski oraz rozszerzone układy dla języka kanadyjskiego i węgierskiego +* naprawiono obcięty tekst w wyskakującym okienku podczas podglądu klawiszy na niektórych urządzeniach +* więcej poprawek i ulepszeń, zobacz informacje o wydaniu diff --git a/fastlane/metadata/android/pl-PL/changelogs/2001.txt b/fastlane/metadata/android/pl-PL/changelogs/2001.txt new file mode 100644 index 0000000000..a35b587e8e --- /dev/null +++ b/fastlane/metadata/android/pl-PL/changelogs/2001.txt @@ -0,0 +1,11 @@ +* możliwość dostosowywania układów klawiszy funkcyjnych +* lekkie dostosowanie układów symboli i symboli dodatkowych +* dodano opcje automatycznego wyświetlania/ukrywania paska narzędzi +* dodano powiadomienie toast podczas kopiowania tekstu +* oddzielono opcję "zachowanie klawisza zmiany języka" od jego włączania +* dodano wyskakujące okienka do klawisza przecinka dla układów numerów i telefonu +* przypinanie poprzez długie naciśnięcie na pasku narzędzi jest teraz opcjonalne +* przeniesienie ustawień paska narzędzi do osobnej sekcji +* dodano klawisz tabulatora +* możliwość dodania ctrl, przycisków paska narzędzi oraz innych klawiszy do układów +* drobne poprawki i ulepszenia diff --git a/fastlane/metadata/android/pl-PL/changelogs/2002.txt b/fastlane/metadata/android/pl-PL/changelogs/2002.txt new file mode 100644 index 0000000000..c4e7d431dd --- /dev/null +++ b/fastlane/metadata/android/pl-PL/changelogs/2002.txt @@ -0,0 +1,4 @@ +* dodano klawisz emotikonów na pasku narzędzi dzięki @codokie (#845, #837) +* poprawki dotyczące zduplikowanych liter (#225 i może inne) +* unikaj umieszczania kursora wewnątrz emoji (#859) +* drobne poprawki dla ostatnio dodanych funkcji diff --git a/fastlane/metadata/android/pl-PL/changelogs/2003.txt b/fastlane/metadata/android/pl-PL/changelogs/2003.txt new file mode 100644 index 0000000000..d40a8911d9 --- /dev/null +++ b/fastlane/metadata/android/pl-PL/changelogs/2003.txt @@ -0,0 +1,11 @@ +* konfigurowalny układ klawiszy funkcyjnych +* lekkie dostosowanie układów symboli i symboli dodatkowych +* podstawowa obsługa klawiszy alt, ctrl, fn, meta +* rozszerzenie możliwości paska narzędzi (funkcja długiego naciśnięcia, opcjonalne przypinanie długim naciśnięciem, automatyczne pokazywanie/ukrywanie, lepszy pasek narzędzi w schowku,...) +* dodano klawisz tabulatora +* dodano wskaźnik caps lock +* dodano układy dla niektórych języków +* dodano klawisze paska narzędzi jako klawisze klawiatury +* możliwość dostosowania wszystkich kolorów +* powiadomienie toast podczas kopiowania tekstu +* poprawki błędów i więcej ulepszeń, zobacz pełne informacje o wydaniu diff --git a/fastlane/metadata/android/pl-PL/changelogs/2100.txt b/fastlane/metadata/android/pl-PL/changelogs/2100.txt new file mode 100644 index 0000000000..6975a58c7b --- /dev/null +++ b/fastlane/metadata/android/pl-PL/changelogs/2100.txt @@ -0,0 +1,8 @@ +* naprawiono zepsuty układ klawiszy funkcyjnych dla tabletów +* pokaż klawisz zmiany języka tylko wtedy, gdy jest coś do przełączenia +* ustaw domyślne kolory „wszystkich kolorów” na losowe zamiast szarego +* możliwość dostosowania opóźnienia startu dla gestów podczas pisania dzięki @devycarol +* możliwość dostosowania klawiszy walut +* skrócenie czasu długiego naciśnięcia dla shift -> caps lock dzięki @devycarol +* zwiększono ilość wyskakujących okienek dla indeksów górnych w rzędzie numerycznym i układzie symboli dzięki @b02860de585071a2 +* drobne poprawki i ulepszenia diff --git a/fastlane/metadata/android/pl-PL/full_description.txt b/fastlane/metadata/android/pl-PL/full_description.txt new file mode 100644 index 0000000000..43aa074b6f --- /dev/null +++ b/fastlane/metadata/android/pl-PL/full_description.txt @@ -0,0 +1,30 @@ +HeliBoard to dbająca o prywatność klawiatura typu open source, oparta na AOSP / OpenBoard. +Nie korzysta z uprawnień do internetu, więc jest w 100% offline. + +Funkcje: +
                    +
                  • Dodawaj słowniki, aby otrzymywać sugestie i sprawdzać pisownię
                  • +
                      +
                    • stwórz własny lub pobierz stąd albo z sekcji eksperymentalnej (jakość może być różna)
                    • +
                    • dodatkowe słowniki dla emoji lub symboli naukowych można wykorzystać do otrzymywania sugestii (coś w stylu "wyszukiwania emoji")
                    • +
                    • weź pod uwagę, że w przypadku układów koreańskich sugestie działają tylko przy użyciu tego słownika, narzędzia w repozytorium nie są w stanie stworzyć działających słowników
                    • +
                    +
                  • Dostosuj motyw klawiatury (styl, kolory i obraz tła)
                  • +
                      +
                    • może śledzić ustawienie dzień/noc w systemie Android 10+ (oraz w niektórych wersjach Androida 9)
                    • +
                    • może stosować dynamiczne kolory w systemie Android 12+
                    • +
                    +
                  • Dostosuj układy klawiatury (możliwe tylko po wyłączeniu opcji użyj języków systemu)
                  • +
                  • Dostosuj układy specjalne, takie jak symbole, liczby lub układ klawiszy funkcyjnych
                  • +
                  • Pisanie wielojęzyczne
                  • +
                  • Pisanie gestami (tylko z zamkniętą biblioteką ☹️)
                  • +
                      +
                    • biblioteka nie znajduje się w aplikacji, ponieważ nie ma kompatybilnej biblioteki typu open source
                    • +
                    • można ją wyodrębnić z pakietów GApps ("swypelibs"), lub pobrać stąd (kliknij plik, a następnie "raw" lub mały przycisk pobierania)
                    • +
                    +
                  • Historia schowka
                  • +
                  • Tryb jednej ręki
                  • +
                  • Podzielona klawiatura (jeśli ekran jest wystarczająco duży)
                  • +
                  • Klawiatura numeryczna
                  • +
                  • Tworzenie kopii zapasowych i przywracanie ustawień oraz nauczonych słów/danych
                  • +
                  diff --git a/fastlane/metadata/android/pl-PL/short_description.txt b/fastlane/metadata/android/pl-PL/short_description.txt new file mode 100644 index 0000000000..1f53c822d2 --- /dev/null +++ b/fastlane/metadata/android/pl-PL/short_description.txt @@ -0,0 +1 @@ +Konfigurowalna otwartoźródłowa klawiatura diff --git a/fastlane/metadata/android/pl-PL/title.txt b/fastlane/metadata/android/pl-PL/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/pl-PL/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/pt-BR/changelogs/1003.txt b/fastlane/metadata/android/pt-BR/changelogs/1003.txt new file mode 100644 index 0000000000..f6dc0c08c0 --- /dev/null +++ b/fastlane/metadata/android/pt-BR/changelogs/1003.txt @@ -0,0 +1,9 @@ +* altera ícones para botões de autocorreção e selecionar tudo na barra de ferramentas por @codokie (#524, #651) +* adiciona layout Chuvash por @tenextractor (#677) +* adiciona botão de cortar à barra de ferramentas por @codokie (#678) +* atualiza layout Probhat por @fahimscirex (#628) +* exibe ícones da barra de ferramentas no diálogo de botões dela +* adiciona botão de fechar no histórico da área de transferência por @codokie (#403, #649) +* adiciona layout Russo (Student) por @Zolax9 (#640) +* torna opcional a alteração para teclado numérico no toque longo na tecla de símbolos (#588) +* correções e melhorias menores, incluindo #632, #637, #638 por @RHJihan diff --git a/fastlane/metadata/android/pt-BR/changelogs/1004.txt b/fastlane/metadata/android/pt-BR/changelogs/1004.txt new file mode 100644 index 0000000000..eee79b76bb --- /dev/null +++ b/fastlane/metadata/android/pt-BR/changelogs/1004.txt @@ -0,0 +1,7 @@ +- atualiza layout Cirílico Sérvio por @markokocic (#704, #705) +- atualiza layout Estônia por @tenextractor (#693) +- corrige entradas duplicadas no histórico da área de transferência by @codokie (#616, #680) +- adiciona somente entradas de texto ao histórico da área de transferência por @codokie (#711) +- imagens melhores nos metadados por @RHJihan (#713) +- define corretamente cores de ícones no diálogo de seleção da barra de ferramentas por @codokie (#715, #716) +- outras correções (#684, #723 e mais) diff --git a/fastlane/metadata/android/pt-BR/changelogs/2201.txt b/fastlane/metadata/android/pt-BR/changelogs/2201.txt new file mode 100644 index 0000000000..a3262f970e --- /dev/null +++ b/fastlane/metadata/android/pt-BR/changelogs/2201.txt @@ -0,0 +1,2 @@ +* adiciona opções visuais para digitação por gestos, por @devycarol (#944) +* atualiza alguns ícones, por @BlackyHawky (#977) diff --git a/fastlane/metadata/android/pt-BR/changelogs/3601.txt b/fastlane/metadata/android/pt-BR/changelogs/3601.txt new file mode 100644 index 0000000000..c0a92007ad --- /dev/null +++ b/fastlane/metadata/android/pt-BR/changelogs/3601.txt @@ -0,0 +1,12 @@ +- Adicionar busca inline de emoji +- Lembrar opcionalmente o idioma/subtipo por app +- Correções e melhorias ao retorno tático +- Manter área de transferência não fixada ao reiniciar +- Exibir opcionalmente itens fixados da área de transferência no final +- Adicionar opcionalmente linhas inferiores de emoji e da área de transferência +- Adicionar botão para descartar sugestões online +- Adicionar Bengali Khipro +- Adicionar Mirandês +- Gambiarra para problemas com teclados físicos +- Links a dicionários vão diretamente ao arquivo agora +- Várias outras correções e melhorias menores diff --git a/fastlane/metadata/android/pt-BR/changelogs/3602.txt b/fastlane/metadata/android/pt-BR/changelogs/3602.txt new file mode 100644 index 0000000000..c0a92007ad --- /dev/null +++ b/fastlane/metadata/android/pt-BR/changelogs/3602.txt @@ -0,0 +1,12 @@ +- Adicionar busca inline de emoji +- Lembrar opcionalmente o idioma/subtipo por app +- Correções e melhorias ao retorno tático +- Manter área de transferência não fixada ao reiniciar +- Exibir opcionalmente itens fixados da área de transferência no final +- Adicionar opcionalmente linhas inferiores de emoji e da área de transferência +- Adicionar botão para descartar sugestões online +- Adicionar Bengali Khipro +- Adicionar Mirandês +- Gambiarra para problemas com teclados físicos +- Links a dicionários vão diretamente ao arquivo agora +- Várias outras correções e melhorias menores diff --git a/fastlane/metadata/android/pt-BR/changelogs/3603.txt b/fastlane/metadata/android/pt-BR/changelogs/3603.txt new file mode 100644 index 0000000000..c0a92007ad --- /dev/null +++ b/fastlane/metadata/android/pt-BR/changelogs/3603.txt @@ -0,0 +1,12 @@ +- Adicionar busca inline de emoji +- Lembrar opcionalmente o idioma/subtipo por app +- Correções e melhorias ao retorno tático +- Manter área de transferência não fixada ao reiniciar +- Exibir opcionalmente itens fixados da área de transferência no final +- Adicionar opcionalmente linhas inferiores de emoji e da área de transferência +- Adicionar botão para descartar sugestões online +- Adicionar Bengali Khipro +- Adicionar Mirandês +- Gambiarra para problemas com teclados físicos +- Links a dicionários vão diretamente ao arquivo agora +- Várias outras correções e melhorias menores diff --git a/fastlane/metadata/android/pt-BR/full_description.txt b/fastlane/metadata/android/pt-BR/full_description.txt new file mode 100644 index 0000000000..b0c7aa9da9 --- /dev/null +++ b/fastlane/metadata/android/pt-BR/full_description.txt @@ -0,0 +1,30 @@ +O HeliBoard é um teclado de código aberto, consciente sobre a privacidade, baseado no do AOSP e no OpenBoard. +Não solicita a permissão de rede do Android, é 100% offline e não tem acesso à internet. + +Recursos: +
                    +
                  • Adicione dicionários para sugestões ou verificação de ortografia
                  • +
                      +
                    • faça os seus, ou obtenha-os aqui, ou na seção experimental (a qualidade pode variar)
                    • +
                    • dicionários adicionais de emojis ou símbolos podem ser usados para dar sugestões (parecido com a pesquisa de emoji)
                    • +
                    • é importante notar que para layouts Coreanos, sugestões só funcionam usando este dicionário, as ferramentas no repositório de dicionários não conseguem criar dicionários funcionais
                    • +
                    +
                  • Customize o tema do teclado (estilo, cores e a imagem de fundo)
                  • +
                      +
                    • consegue seguir a configuração de dia/noite do sistema do Android 10+ (e em algumas versões do Android 9)
                    • +
                    • consegue seguir as cores dinâmicas do Android 12+
                    • +
                    +
                  • Customize os layouts do teclado (disponível somente quando a opção Usar idiomas do sistema é desativada)
                  • +
                  • Customize layouts especiais, como símbolos, números ou o layout de teclas funcionais
                  • +
                  • Digitação multi-linguagem
                  • +
                  • Digitação por Gestos (somente com uma biblioteca proprietária ☹️)
                  • +
                      +
                    • a biblioteca não é inclusa no app, pois não existe uma alternativa de código aberto
                    • +
                    • pode ser extraída de pacotes de GApps ("swypelibs"), ou baixados aqui (clique no arquivo e então "raw" ou no botão pequeno de baixar)
                    • +
                    +
                  • Histórico da área de transferência
                  • +
                  • Modo de uma mão só
                  • +
                  • Teclado separado (somente disponível quando a tela é grande o sucifiente)
                  • +
                  • Teclado númerico
                  • +
                  • Faça backup e restaure suas configurações e dados de palavras aprendidas ou de histórico
                  • +
                  diff --git a/fastlane/metadata/android/pt-BR/short_description.txt b/fastlane/metadata/android/pt-BR/short_description.txt new file mode 100644 index 0000000000..cf7053b4a0 --- /dev/null +++ b/fastlane/metadata/android/pt-BR/short_description.txt @@ -0,0 +1 @@ +Teclado de código aberto customizável diff --git a/fastlane/metadata/android/pt-BR/title.txt b/fastlane/metadata/android/pt-BR/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/pt-BR/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/pt/changelogs/1003.txt b/fastlane/metadata/android/pt/changelogs/1003.txt new file mode 100644 index 0000000000..75549f8d5c --- /dev/null +++ b/fastlane/metadata/android/pt/changelogs/1003.txt @@ -0,0 +1,8 @@ +* adicionar layout Chuvash por @tenextractor (#677) +* adicionar tecla de corte por @codokie (#678) +* atualizar o Probhat layout por @fahimscirex (#628) +* mostrar ícones no diálogo da tecla da barra de ferramentas +* adicionar botão de fechar no histórico da área de transferência por @codokie (#403, #649) +* adicionar layout Russo (Estudante) por @Zolax9 (#640) +* fazer numpad ao pressionar a tecla de símbolos opcional (#588) +* correções menores e melhorias, incluindo #632, #637, #638 por @RHJihan diff --git a/fastlane/metadata/android/pt/changelogs/2002.txt b/fastlane/metadata/android/pt/changelogs/2002.txt new file mode 100644 index 0000000000..b5e4ec7c0b --- /dev/null +++ b/fastlane/metadata/android/pt/changelogs/2002.txt @@ -0,0 +1,4 @@ +* adicionar tecla de emoji, por @codokie (#845, #837) +* melhorias relacionadas com letras duplicadas (#225 e possivelmente outros) +* evitar posicionar o cursor nos emojis (#859) +* correções pequenas para funcionalidades recentes diff --git a/fastlane/metadata/android/pt/changelogs/2201.txt b/fastlane/metadata/android/pt/changelogs/2201.txt new file mode 100644 index 0000000000..7425429018 --- /dev/null +++ b/fastlane/metadata/android/pt/changelogs/2201.txt @@ -0,0 +1,2 @@ +* adicionar opções visuais para escrita por gestos, por @devycarol (#944) +* atualizar alguns ícones, por @BlackyHawky (#977) diff --git a/fastlane/metadata/android/pt/full_description.txt b/fastlane/metadata/android/pt/full_description.txt new file mode 100644 index 0000000000..ce6fdb7c5e --- /dev/null +++ b/fastlane/metadata/android/pt/full_description.txt @@ -0,0 +1,30 @@ +HeliBoard é um teclado open-source privado, baseado no AOSP / OpenBoard. +Não usa a permissão da internet, assim sendo 100% offline. + +Funcionalidades: +
                    +
                  • Adicionar dicionários para sugestões e correção ortográfica
                  • +
                      +
                    • construa os seus próprios, ou obtenha-os aqui, ou na secção experimental (qualidade pode variar)
                    • +
                    • additional dictionaries for emojis or scientific symbols can be used to provide suggestions (similar to "emoji search")
                    • +
                    • note que para o layout coreano, sugestões apenas funcionam com este dicionário, as ferramentas no repositório de dicionário não são capazes de criar dicionários funcionais
                    • +
                    +
                  • Personalize temas do teclado (estilo, cores e imagem de fundo)
                  • +
                      +
                    • pode se adaptar ao tema Escuro/Claro do telemóvel no Android 10+ (e em algumas versões do Android 9)
                    • +
                    • pode se adaptar a cores dinâmicas para o Android 12+
                    • +
                    +
                  • Personalize layouts do teclado (apenas disponível ao desativar usar idiomas do sistema)
                  • +
                  • Personalize layouts especiais, como símbolos, números, ou layouts de teclas funcionais
                  • +
                  • Escrita Multilíngua
                  • +
                  • Escrita por gestos (apenas com biblioteca closed source ☹️)
                  • +
                      +
                    • biblioteca não incluída na aplicação, dado que não existe nenhuma biblioteca open-source compatível disponível
                    • +
                    • pode ser extraída de 'GApps packages' ("swypelibs"), ou descarregada daqui (clique no ficheiro e depois "raw" ou o pequeno botão de descarregar)
                    • +
                    +
                  • Histórico da área da transferência
                  • +
                  • Modo de uma mão
                  • +
                  • Teclado dividido (apenas disponível se o ecrã for grande o suficiente)
                  • +
                  • Teclado numérico
                  • +
                  • Faça backup and restaure as suas definições e palavras aprendidas / dados do histórico
                  • +
                  diff --git a/fastlane/metadata/android/pt/short_description.txt b/fastlane/metadata/android/pt/short_description.txt new file mode 100644 index 0000000000..3cdc899183 --- /dev/null +++ b/fastlane/metadata/android/pt/short_description.txt @@ -0,0 +1 @@ +Teclado personalizável open-source diff --git a/fastlane/metadata/android/pt/title.txt b/fastlane/metadata/android/pt/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/pt/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/ru-RU/changelogs/1001.txt b/fastlane/metadata/android/ru-RU/changelogs/1001.txt new file mode 100644 index 0000000000..0f4cca35ad --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/1001.txt @@ -0,0 +1,20 @@ +* новая иконка: @FabianOvrWrt и др. (#517, #592) +* улучшен трекпад и переключатель (@arcarum, #486) +* % в shift-символах (#568, #428) +* улучшен переключатель языка/клавиатуры +* ссылки на словари при добавлении +* раскладка Kaitag (@alkaitagi, #519) +* раскладка Probhat (@fahimscirex, #489) +* реверс тулбара для RTL (@codokie, #557) +* настройка спец. раскладок (нумпад и др.) +* эксперимент, могут меняться +* обновлен spellchecker.xml +* обновлены переводы (спасибо всем!) +* обновлен ndk (@Syphyr, #560) +* улучшен код автозаполнения (#595) +* исправлен диалог тулбара (#505) +* исправлена турецкая раскладка (#508) +* исправлены переключатели цветов (#563) +* исправлены недавние эмодзи (#527) +* исправлены цифры в полях (#585) +* мелкие правки diff --git a/fastlane/metadata/android/ru-RU/changelogs/1003.txt b/fastlane/metadata/android/ru-RU/changelogs/1003.txt new file mode 100644 index 0000000000..e46e90f5dc --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/1003.txt @@ -0,0 +1,9 @@ +* изменены иконки автокоррекции и выделения всего в панели инструментов (#524, #651) +* Чувашская раскладка (#677) +* клавиша вырезать в панель инструментов (#678) +* обновлена раскладка Probhat (#628) +* вывод иконки панели инструментов в диалоге клавиш панели инструментов +* кнопка закрытия в истории буфера обмена (#403, #649) +* Русская (Студент) раскладка (#640) +* опционально: длинное нажатие на цифровую клавиатуру на клавише символов (#588) +* исправления и улучшения, включая #632, #637, #638 diff --git a/fastlane/metadata/android/ru-RU/changelogs/1004.txt b/fastlane/metadata/android/ru-RU/changelogs/1004.txt new file mode 100644 index 0000000000..b00361995c --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/1004.txt @@ -0,0 +1,7 @@ +- обновление сербской кириллической раскладки от @markokocic (#704, #705) +- обновление эстонской раскладки от @tenextractor (#693) +- исправление дубликатов в истории буфера обмена от @codokie (#616, #680) +- добавление только текстовых записей в историю буфера обмена от @codokie (#711) +- улучшение изображений в метаданных от @RHJihan (#713) +- правильная настройка цвета иконок в диалоговом окне выбора панели инструментов от @codokie (#715, #716) +- другие исправления (#684, #723 и другие) diff --git a/fastlane/metadata/android/ru-RU/changelogs/2000.txt b/fastlane/metadata/android/ru-RU/changelogs/2000.txt new file mode 100644 index 0000000000..1ec13aed1a --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/2000.txt @@ -0,0 +1,10 @@ +* поддержка модификаторов клавиш +* функции долгого нажатия для клавиш тулбара +* больше клавиш истории буфера в тулбаре +* настраиваемый тулбар истории буфера +* настройка всех цветов +* настройка показа слова для ввода как среднего предложения +* индикатор Caps Lock +* Piedmontese, Eastern Mari, Mansi, расширенные Kannada и Hungarian +* исправлен обрезанный текст в попапе клавиш на устройствах +* дальнейшие исправления, см. примечания к выпуску diff --git a/fastlane/metadata/android/ru-RU/changelogs/2001.txt b/fastlane/metadata/android/ru-RU/changelogs/2001.txt new file mode 100644 index 0000000000..52c4f331d4 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/2001.txt @@ -0,0 +1,11 @@ +* разрешена настройка функциональных раскладок +* скорректированы символы и доп. символы +* опции автопоказа/скрытия панели +* тост при копировании +* разделено поведение и включение клавиши смены языка +* попапы запятой для числовой и телефонной +* опциональное закрепление по долгому нажатию в панели +* настройки панели вынесены в отдельный раздел +* добавлена клавиша tab +* поддержка меток ctrl, панели и др. в раскладках +* мелкие исправления и улучшения diff --git a/fastlane/metadata/android/ru-RU/changelogs/2002.txt b/fastlane/metadata/android/ru-RU/changelogs/2002.txt new file mode 100644 index 0000000000..3a9ac587c4 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/2002.txt @@ -0,0 +1,4 @@ +* добавлена клавиша панели инструментов для эмодзи, автор @codokie (#845, #837) +* улучшения, связанные с дублированием букв (#225 и, возможно, другие) +* избегать позиционирования курсора внутри эмодзи (#859) +* незначительные исправления для недавно добавленных функций diff --git a/fastlane/metadata/android/ru-RU/changelogs/2003.txt b/fastlane/metadata/android/ru-RU/changelogs/2003.txt new file mode 100644 index 0000000000..f01705e609 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/2003.txt @@ -0,0 +1,11 @@ +* настраиваемая функциональная раскладка клавиш +* незначительно изменены раскладки символов и доп. символов +* базовая поддержка клавиш alt, ctrl, fn, meta +* панель инструментов: (длинное нажатие, его закрепление, автопоказ, улучшенная панель инструментов буфера обмена и т. д.) +* клавиша табуляции +* индикатор Caps Lock +* раскладки для некоторых языков +* клавиши панели инструментов как клавиши клавиатуры +* настройка всех цветов +* уведомление в виде тоста при копировании текста +* см. прим. выпуска diff --git a/fastlane/metadata/android/ru-RU/changelogs/2100.txt b/fastlane/metadata/android/ru-RU/changelogs/2100.txt new file mode 100644 index 0000000000..605ebf5fb7 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/2100.txt @@ -0,0 +1,8 @@ +* исправлена сломанная функциональная раскладку клавиш для планшетов +* вывод клавиши переключения языка только тогда, когда есть что переключить +* сделаны цвета по умолчанию для настройки "все цвета" случайными вместо серого +* разрешена настройка задержки начала жестов во время набора текста +* разрешена настройка клавиш валюты +* уменьшено время длинного нажатия для shift->caps lock +* расширены всплывающие окна для надстрочных символов в строке цифр и раскладке символов +* исправления и улучшения diff --git a/fastlane/metadata/android/ru-RU/changelogs/2200.txt b/fastlane/metadata/android/ru-RU/changelogs/2200.txt new file mode 100644 index 0000000000..af3e300257 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/2200.txt @@ -0,0 +1,11 @@ +* добавлено сохранение/экспорт тем +* повторяемые клавиши-стрелки +* больше клавиш курсора (страница вверх/вниз/начало/конец, слово влево/вправо) +* добавлена клавиша вставки +* улучшено поведение свайпов +* свайп пробела для вызова цифр +* подсказки из буфера обмена +* отмена выделения при повторном нажатии +* улучшены цвета для Android 12+ +* настроены языковые всплывающие клавиши +* мелкие исправления и улучшения diff --git a/fastlane/metadata/android/ru-RU/changelogs/2201.txt b/fastlane/metadata/android/ru-RU/changelogs/2201.txt new file mode 100644 index 0000000000..8123167585 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/2201.txt @@ -0,0 +1,2 @@ +* добавлены визуальные опции для набора текста жестами, автор @devycarol (#944) +* обновлены некоторые иконки, автор @BlackyHawky (#977) diff --git a/fastlane/metadata/android/ru-RU/changelogs/2300.txt b/fastlane/metadata/android/ru-RU/changelogs/2300.txt new file mode 100644 index 0000000000..6b5c678538 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/2300.txt @@ -0,0 +1,9 @@ +* настройка строки цифр, кодов панели инструментов, иконок, текста панели пробела, нижней строки для эмодзи и виджетов буфера обмена +* отделение стиля иконок от стиля клавиатуры +* выключение по умолчанию удаления избыточных всплывающих окон +* менее агрессивное добавление слов в личный словарь +* нет вибрации в режиме Не беспокоить +* улучшение при копировании большого текста +* исправление частично сломанных всплывающих окон с пунктуацией +* исправление дублирования текста +* улучшения и исправления diff --git a/fastlane/metadata/android/ru-RU/changelogs/2301.txt b/fastlane/metadata/android/ru-RU/changelogs/2301.txt new file mode 100644 index 0000000000..e35fca9d8c --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/2301.txt @@ -0,0 +1,9 @@ +* настройка строки цифр, кодов панели инструментов, иконок, текста панели пробела, нижней строки для эмодзи и виджетов буфера обмена +* отделение стиля иконок от стиля клавиатуры +* выключение по умолчанию удаления избыточных всплывающих окон +* менее агрессивное добавление слов в личный словарь +* нет вибрации в режиме Не беспокоить +* улучшение копирования большого текста +* исправление всплывающих окон с пунктуацией +* исправление дублирования текста +* улучшения и исправления diff --git a/fastlane/metadata/android/ru-RU/changelogs/3004.txt b/fastlane/metadata/android/ru-RU/changelogs/3004.txt new file mode 100644 index 0000000000..8351b9e9e2 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/3004.txt @@ -0,0 +1,11 @@ +* добавлены раскладки: арабская Хиджаи, иврит 1452-2, хинди фонетич., даргинская (Урахи), байшахи, курдская +* обновлены некоторые раскладки +* поддержка комбинир. акцентов +* разделена кнопка панели клавиатуры +* добавлены всплывающие .com +* возможность установки своего шрифта +* добавлен масштаб шрифта +* улучшено автопереключение языков +* переработаны настройки +* настройки отступов клавиш, автопробела, автокоррекции, ряда цифр +* больше функций и исправлений diff --git a/fastlane/metadata/android/ru-RU/changelogs/3005.txt b/fastlane/metadata/android/ru-RU/changelogs/3005.txt new file mode 100644 index 0000000000..8351b9e9e2 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/3005.txt @@ -0,0 +1,11 @@ +* добавлены раскладки: арабская Хиджаи, иврит 1452-2, хинди фонетич., даргинская (Урахи), байшахи, курдская +* обновлены некоторые раскладки +* поддержка комбинир. акцентов +* разделена кнопка панели клавиатуры +* добавлены всплывающие .com +* возможность установки своего шрифта +* добавлен масштаб шрифта +* улучшено автопереключение языков +* переработаны настройки +* настройки отступов клавиш, автопробела, автокоррекции, ряда цифр +* больше функций и исправлений diff --git a/fastlane/metadata/android/ru-RU/changelogs/3006.txt b/fastlane/metadata/android/ru-RU/changelogs/3006.txt new file mode 100644 index 0000000000..8351b9e9e2 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/3006.txt @@ -0,0 +1,11 @@ +* добавлены раскладки: арабская Хиджаи, иврит 1452-2, хинди фонетич., даргинская (Урахи), байшахи, курдская +* обновлены некоторые раскладки +* поддержка комбинир. акцентов +* разделена кнопка панели клавиатуры +* добавлены всплывающие .com +* возможность установки своего шрифта +* добавлен масштаб шрифта +* улучшено автопереключение языков +* переработаны настройки +* настройки отступов клавиш, автопробела, автокоррекции, ряда цифр +* больше функций и исправлений diff --git a/fastlane/metadata/android/ru-RU/changelogs/3007.txt b/fastlane/metadata/android/ru-RU/changelogs/3007.txt new file mode 100644 index 0000000000..1d0c8b825c --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/3007.txt @@ -0,0 +1,11 @@ +* добавлены раскладки: арабская Хиджаи, иврит 1452-2, хинди фонетич., даргинская Урахи, байшахи, курдская +* обновлены некоторые раскладки +* поддержка объединённых акцентов +* разделена клавиша тулбара клавиатуры +* добавлены попапы .com +* возможность выбора пользовательского шрифта +* настройка масштаба шрифта +* улучшено авто-переключение языков +* переработка настроек +* настройки отступов, авто-пробела, автоисправления, цифрового ряда +* новые функции и исправления diff --git a/fastlane/metadata/android/ru-RU/changelogs/3008.txt b/fastlane/metadata/android/ru-RU/changelogs/3008.txt new file mode 100644 index 0000000000..1d0c8b825c --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/3008.txt @@ -0,0 +1,11 @@ +* добавлены раскладки: арабская Хиджаи, иврит 1452-2, хинди фонетич., даргинская Урахи, байшахи, курдская +* обновлены некоторые раскладки +* поддержка объединённых акцентов +* разделена клавиша тулбара клавиатуры +* добавлены попапы .com +* возможность выбора пользовательского шрифта +* настройка масштаба шрифта +* улучшено авто-переключение языков +* переработка настроек +* настройки отступов, авто-пробела, автоисправления, цифрового ряда +* новые функции и исправления diff --git a/fastlane/metadata/android/ru-RU/changelogs/3100.txt b/fastlane/metadata/android/ru-RU/changelogs/3100.txt new file mode 100644 index 0000000000..6971c30fa7 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/3100.txt @@ -0,0 +1,10 @@ +* опционально предлагать названия установленных приложений +* переключение категорий эмодзи свайпом +* показ тоста после восстановления бэкапа +* увеличены кнопка и иконка тулбара +* запятая доступна в попапах при показе TLD +* настройка стандартного тона кожи эмодзи +* добавлены коды клавиш для левых/правых Alt и Ctrl +* метка "timestamp" для удобства доступа к временной метке +* распознаются спец. метки клавиш для попапов в простых лейаутах +* мелкие исправления и улучшения diff --git a/fastlane/metadata/android/ru-RU/changelogs/3101.txt b/fastlane/metadata/android/ru-RU/changelogs/3101.txt new file mode 100644 index 0000000000..0a7836fe8c --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/3101.txt @@ -0,0 +1,9 @@ +* опционально предлагать названия установленных приложений +* переключение категорий эмодзи свайпом +* показ тоста после восстановления бэкапа +* запятая доступна в попапах при показе TLD +* настройка стандартного тона кожи эмодзи +* добавлены коды клавиш для левых/правых Alt и Ctrl +* метка "timestamp" для удобства доступа к временной метке +* распознаются спец. метки клавиш для попапов в простых лейаутах +* мелкие исправления и улучшения diff --git a/fastlane/metadata/android/ru-RU/changelogs/3200.txt b/fastlane/metadata/android/ru-RU/changelogs/3200.txt new file mode 100644 index 0000000000..6061fb53c6 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/3200.txt @@ -0,0 +1,10 @@ +* добавлены режимы панели инструментов (можно скрывать панель) +* добавлены недостающие варианты эмодзи +* улучшены экран подтипа и диалог словаря +* исправлены цвета при принудительном тёмном режиме +* настройки масштаба для портрета/ландшафта перенесены в диалог +* удалены переводы непереводимых строк +* исправлено направление стрелки для RTL-языков +* исправлена загрузка иврита на Android 15 +* базовая клавиатура работает при сбое библиотеки +* мелкие исправления diff --git a/fastlane/metadata/android/ru-RU/changelogs/3201.txt b/fastlane/metadata/android/ru-RU/changelogs/3201.txt new file mode 100644 index 0000000000..6061fb53c6 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/3201.txt @@ -0,0 +1,10 @@ +* добавлены режимы панели инструментов (можно скрывать панель) +* добавлены недостающие варианты эмодзи +* улучшены экран подтипа и диалог словаря +* исправлены цвета при принудительном тёмном режиме +* настройки масштаба для портрета/ландшафта перенесены в диалог +* удалены переводы непереводимых строк +* исправлено направление стрелки для RTL-языков +* исправлена загрузка иврита на Android 15 +* базовая клавиатура работает при сбое библиотеки +* мелкие исправления diff --git a/fastlane/metadata/android/ru-RU/changelogs/3300.txt b/fastlane/metadata/android/ru-RU/changelogs/3300.txt new file mode 100644 index 0000000000..32213d0117 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/3300.txt @@ -0,0 +1,11 @@ +* заглавные буквы в предложениях при shift +* добавлены коды клавиш для интентов +* опционально показ описаний эмодзи, нужен словарь эмодзи +* улучшена работа с внешней клавиатурой +* опция "скрыть клавиатуру" при свайпе по пробелу +* добавлена латиница +* отключены подсказки эмодзи при добавлении словаря эмодзи +* исправлены эмодзи в split-клавиатуре +* удалены эмодзи, не предназначенные для отдельного использования +* исправлен черный список +* исправлен backspace с некоторыми эмодзи diff --git a/fastlane/metadata/android/ru-RU/changelogs/3301.txt b/fastlane/metadata/android/ru-RU/changelogs/3301.txt new file mode 100644 index 0000000000..32213d0117 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/3301.txt @@ -0,0 +1,11 @@ +* заглавные буквы в предложениях при shift +* добавлены коды клавиш для интентов +* опционально показ описаний эмодзи, нужен словарь эмодзи +* улучшена работа с внешней клавиатурой +* опция "скрыть клавиатуру" при свайпе по пробелу +* добавлена латиница +* отключены подсказки эмодзи при добавлении словаря эмодзи +* исправлены эмодзи в split-клавиатуре +* удалены эмодзи, не предназначенные для отдельного использования +* исправлен черный список +* исправлен backspace с некоторыми эмодзи diff --git a/fastlane/metadata/android/ru-RU/changelogs/3400.txt b/fastlane/metadata/android/ru-RU/changelogs/3400.txt new file mode 100644 index 0000000000..ad6f8e7a73 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/3400.txt @@ -0,0 +1,5 @@ +- Ограничено количество предложенных эмодзи в полосе подсказок до одного (если возможно) +- Исправлено некорректное добавление пробелов. +- Устранена проблема с белым текстом на белом фоне на некоторых устройствах +- Исправлены некорректные предложения, содержащие символ `'` +- Добавлен символ множественного числа шва ɜ для итальянского языка diff --git a/fastlane/metadata/android/ru-RU/changelogs/3501.txt b/fastlane/metadata/android/ru-RU/changelogs/3501.txt new file mode 100644 index 0000000000..b1dab666ee --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/3501.txt @@ -0,0 +1,3 @@ +- Исправлены сбои +- Исправлена некорректная автокоррекция, представленная в версии 3.4 +- Вибрация при жесте стирания и пробела, если включена diff --git a/fastlane/metadata/android/ru-RU/full_description.txt b/fastlane/metadata/android/ru-RU/full_description.txt new file mode 100644 index 0000000000..8d9c085e1f --- /dev/null +++ b/fastlane/metadata/android/ru-RU/full_description.txt @@ -0,0 +1,30 @@ +HeliBoard это клавиатура с открытым исходным кодом, обеспечивающая приватность, основанная на AOSP / OpenBoard. +Не использует Интернет и, таким образом, на 100% автономна. + +Возможности: +
                    +
                  • Добавьте словари для подсказок и проверки правописания.
                  • +
                      +
                    • Создайте свои собственные или получите их здесь или в экспериментальном разделе (качество может отличаться)
                    • +
                    • Для предоставления подсказок можно использовать дополнительные словари смайлов или научных символов (аналогично «поиску смайлов»)
                    • +
                    • Обратите внимание, что для корейских раскладок предложения работают только с использованием этого словаря, инструментов из репозитория словарей.
                    • +
                    +
                  • Настройка тем клавиатуры (стиль, цвета и фоновое изображение)
                  • +
                      +
                    • Может следовать настройкам дня/ночи системы на Android 10+ (и на некоторых версиях Android 9)
                    • +
                    • Может следовать динамическим цветам для Android 12+
                    • +
                    +
                  • Настроить раскладки клавиатуры (доступно только при отключении использования системных языков)
                  • +
                  • Настроить специальные расскладки такие как, символьная, числовая, или функциональная раскладка
                  • +
                  • Многоязычный набор текста
                  • +
                  • Скользящий ввод текста (только с закрытой библиотекой ☹️)
                  • +
                      +
                    • Библиотека не включена в приложение, поскольку не совместима с открытым исходным кодом.
                    • +
                    • Можно извлечь из пакетов GApps (swypelibs) или загрузить здесь (нажмите на файле на маленькую кнопку Скачать)
                    • +
                    +
                  • История буфера обмена
                  • +
                  • Режим одной руки
                  • +
                  • Раздельная клавиатура (доступна только при достаточно большом экране)
                  • +
                  • Цифровая клавиатура
                  • +
                  • Создание резервной копии и восстанавление запомненных слов/истории
                  • +
                  diff --git a/fastlane/metadata/android/ru-RU/short_description.txt b/fastlane/metadata/android/ru-RU/short_description.txt new file mode 100644 index 0000000000..703299a9eb --- /dev/null +++ b/fastlane/metadata/android/ru-RU/short_description.txt @@ -0,0 +1 @@ +Настраиваемая клавиатура с открытым исходным кодом diff --git a/fastlane/metadata/android/ru-RU/title.txt b/fastlane/metadata/android/ru-RU/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/ru-RU/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/ta-IN/changelogs/3601.txt b/fastlane/metadata/android/ta-IN/changelogs/3601.txt new file mode 100644 index 0000000000..a96e9d2d0b --- /dev/null +++ b/fastlane/metadata/android/ta-IN/changelogs/3601.txt @@ -0,0 +1,12 @@ +* இன்லைன் ஈமோஜி தேடலைச் சேர் +* விருப்பமாக ஒரு பயன்பாட்டிற்கு மொழி / துணை வகையை நினைவில் கொள் +* ஹாப்டிக் பின்னூட்ட திருத்தங்கள் மற்றும் மேம்பாடுகள் +* பயன்பாட்டை மறுதொடக்கம் செய்யும்போது கிளிப்போர்டை அகற்றி வைக்கவும் +* விருப்பமாகப் பின் செய்யப்பட்ட கிளிப்போர்டு உள்ளீடுகளைக் கடைசியாகக் காண்பி +* விருப்பமாக ஈமோஜி மற்றும் கிளிப்போர்டு கீழ் வரிசைகளைச் சேர் +* இன்லைன் பரிந்துரைகளை நிராகரிப்பதற்கான பொத்தானைச் சேர் +* பெங்காலி கிப்ரோவைச் சேர் +* மிராண்டீஸைச் சேர் +* வன்பொருள் விசைப்பலகையில் உள்ள சிக்கல்களுக்கான தீர்வு +* அகராதிகளுக்கான இணைப்புகள் இப்போது நேரடியாகக் கோப்பிற்குச் செல்கின்றன +* பல்வேறு சிறிய திருத்தங்கள் மற்றும் மேம்பாடுகள் diff --git a/fastlane/metadata/android/ta-IN/changelogs/3602.txt b/fastlane/metadata/android/ta-IN/changelogs/3602.txt new file mode 100644 index 0000000000..a96e9d2d0b --- /dev/null +++ b/fastlane/metadata/android/ta-IN/changelogs/3602.txt @@ -0,0 +1,12 @@ +* இன்லைன் ஈமோஜி தேடலைச் சேர் +* விருப்பமாக ஒரு பயன்பாட்டிற்கு மொழி / துணை வகையை நினைவில் கொள் +* ஹாப்டிக் பின்னூட்ட திருத்தங்கள் மற்றும் மேம்பாடுகள் +* பயன்பாட்டை மறுதொடக்கம் செய்யும்போது கிளிப்போர்டை அகற்றி வைக்கவும் +* விருப்பமாகப் பின் செய்யப்பட்ட கிளிப்போர்டு உள்ளீடுகளைக் கடைசியாகக் காண்பி +* விருப்பமாக ஈமோஜி மற்றும் கிளிப்போர்டு கீழ் வரிசைகளைச் சேர் +* இன்லைன் பரிந்துரைகளை நிராகரிப்பதற்கான பொத்தானைச் சேர் +* பெங்காலி கிப்ரோவைச் சேர் +* மிராண்டீஸைச் சேர் +* வன்பொருள் விசைப்பலகையில் உள்ள சிக்கல்களுக்கான தீர்வு +* அகராதிகளுக்கான இணைப்புகள் இப்போது நேரடியாகக் கோப்பிற்குச் செல்கின்றன +* பல்வேறு சிறிய திருத்தங்கள் மற்றும் மேம்பாடுகள் diff --git a/fastlane/metadata/android/ta-IN/changelogs/3603.txt b/fastlane/metadata/android/ta-IN/changelogs/3603.txt new file mode 100644 index 0000000000..a96e9d2d0b --- /dev/null +++ b/fastlane/metadata/android/ta-IN/changelogs/3603.txt @@ -0,0 +1,12 @@ +* இன்லைன் ஈமோஜி தேடலைச் சேர் +* விருப்பமாக ஒரு பயன்பாட்டிற்கு மொழி / துணை வகையை நினைவில் கொள் +* ஹாப்டிக் பின்னூட்ட திருத்தங்கள் மற்றும் மேம்பாடுகள் +* பயன்பாட்டை மறுதொடக்கம் செய்யும்போது கிளிப்போர்டை அகற்றி வைக்கவும் +* விருப்பமாகப் பின் செய்யப்பட்ட கிளிப்போர்டு உள்ளீடுகளைக் கடைசியாகக் காண்பி +* விருப்பமாக ஈமோஜி மற்றும் கிளிப்போர்டு கீழ் வரிசைகளைச் சேர் +* இன்லைன் பரிந்துரைகளை நிராகரிப்பதற்கான பொத்தானைச் சேர் +* பெங்காலி கிப்ரோவைச் சேர் +* மிராண்டீஸைச் சேர் +* வன்பொருள் விசைப்பலகையில் உள்ள சிக்கல்களுக்கான தீர்வு +* அகராதிகளுக்கான இணைப்புகள் இப்போது நேரடியாகக் கோப்பிற்குச் செல்கின்றன +* பல்வேறு சிறிய திருத்தங்கள் மற்றும் மேம்பாடுகள் diff --git a/fastlane/metadata/android/ta-IN/full_description.txt b/fastlane/metadata/android/ta-IN/full_description.txt new file mode 100644 index 0000000000..d29f559c11 --- /dev/null +++ b/fastlane/metadata/android/ta-IN/full_description.txt @@ -0,0 +1,49 @@ +ஹெலிபோர்டு என்பது AOSP / OpenBoard ஐ அடிப்படையாகக் கொண்ட தனியுரிமை உணர்வுள்ள திறந்த மூல விசைப்பலகை ஆகும். + +இணைய அனுமதியைப் பயன்படுத்தாது, எனவே 100% ஆஃப்லைனில் உள்ளது. + +அம்சங்கள்: +
                    +
                  • பரிந்துரைகள் மற்றும் எழுத்துப்பிழை சரிபார்ப்புக்கு அகராதிகளைச் சேர்க்கவும்
                  • + +ul> + +
                  • உங்கள் சொந்தமாக உருவாக்கவும், அல்லது அவற்றை இங்கே அல்லது சோதனை பிரிவில் (தரம் மாறுபடலாம்) பெறவும்
                  • + +
                  • ஈமோஜிகள் அல்லது அறிவியல் சின்னங்களுக்கான கூடுதல் அகராதிகளைப் பயன்படுத்தி பரிந்துரைகளை வழங்கலாம் ("ஈமோஜி தேடல்" போன்றவை)
                  • + +
                  • கொரிய தளவமைப்புகளுக்கு, பரிந்துரைகள் இந்த அகராதியைப் பயன்படுத்தி மட்டுமே செயல்படும் என்பதை நினைவில் கொள்ளவும், அகராதி களஞ்சியத்தில் உள்ள கருவிகள் வேலை செய்ய முடியாது அகராதிகள்
                  • +
                  + +
                • விசைப்பலகை தீம்களைத் தனிப்பயனாக்குங்கள் (நடை, வண்ணங்கள் மற்றும் பின்னணி படம்)
                • + +
                    + +
                  • Android 10+ இல் (மற்றும் Android 9 இன் சில பதிப்புகளில்) கணினியின் பகல்/இரவு அமைப்பைப் பின்பற்றலாம்
                  • + +
                  • Android 12+ க்கான டைனமிக் வண்ணங்களைப் பின்பற்றலாம்
                  • + +
                  + +
                • விசைப்பலகையைத் தனிப்பயனாக்குங்கள் தளவமைப்புகள் (முடக்கும்போது மட்டுமே கிடைக்கும்கணினி மொழிகளைப் பயன்படுத்தவும்)
                • + +சின்னங்கள், எண் அல்லது செயல்பாட்டு விசை தளவமைப்பு போன்ற சிறப்பு தளவமைப்புகளைத் தனிப்பயனாக்குங்கள் + +பன்மொழி தட்டச்சு + +
                • கிளைடு தட்டச்சு (மூடப்பட்ட மூல நூலகத்துடன் மட்டும் ☹️)
                • + +
                    + +இணக்கமான திறந்த மூல நூலகம் இல்லாததால் நூலகம் பயன்பாட்டில் சேர்க்கப்படவில்லை + +
                  • GApps தொகுப்புகளிலிருந்து ("swypelibs") பிரித்தெடுக்கலாம் அல்லது இங்கே பதிவிறக்கம் செய்யலாம் (கோப்பில் கிளிக் செய்து "raw" அல்லது சிறிய பதிவிறக்க பொத்தானைக் கிளிக் செய்யவும்)
                  • +
                  +
                • கிளிப்போர்டு வரலாறு
                • + +
                • ஒரு கைப்பயன்முறை
                • + +
                • பிரிப்பு விசைப்பலகை (திரை போதுமானதாக இருந்தால் மட்டுமே கிடைக்கும்)
                • +
                • எண் திண்டு
                • +
                • உங்கள் அமைப்புகளையும் கற்றறிந்த சொல் / வரலாற்றுத் தரவையும் காப்புப்பிரதி எடுத்து மீட்டெடுக்கவும்
                • +
                diff --git a/fastlane/metadata/android/ta-IN/short_description.txt b/fastlane/metadata/android/ta-IN/short_description.txt new file mode 100644 index 0000000000..f44295c18f --- /dev/null +++ b/fastlane/metadata/android/ta-IN/short_description.txt @@ -0,0 +1 @@ +தனிப்பயனாக்கக்கூடிய திறந்த மூல விசைப்பலகை diff --git a/fastlane/metadata/android/ta-IN/title.txt b/fastlane/metadata/android/ta-IN/title.txt new file mode 100644 index 0000000000..5b0be25061 --- /dev/null +++ b/fastlane/metadata/android/ta-IN/title.txt @@ -0,0 +1 @@ +எலிபோர்டு diff --git a/fastlane/metadata/android/tr-TR/changelogs/1001.txt b/fastlane/metadata/android/tr-TR/changelogs/1001.txt new file mode 100644 index 0000000000..b10f78fba0 --- /dev/null +++ b/fastlane/metadata/android/tr-TR/changelogs/1001.txt @@ -0,0 +1,20 @@ +* @FabianOvrWrt tarafından yapılan yeni simge, @the-eclectic-dyslexic'in katkılarıyla (#517, #592) +* @arcarum tarafından daha özelleştirilebilir boşluk tuşu trackpad'i ve dil değiştirme (#486) +* Shift sembolleri düzenine % işareti ekle (#568, #428) +* Dil değiştirme tuşu hem dili hem de klavyeyi değiştirecek şekilde ayarlandığında davranışı iyileştir +* Sözlük eklerken mevcut sözlüklere bağlantıları göster +* @alkaitagi tarafından Kaitag düzeni ekle (#519) +* @fahimscirex tarafından Probhat düzeni ekle (#489) +* @codokie tarafından RTL dilleri için isteğe bağlı olarak araç çubuğu sırasını ters çevirme (#557, #574) +* Özel düzenleri (numpad, telefon, ...) özelleştirmeye izin ver + * Temel düzenler değişebileceği için hala deneysel +* Sözlüklerin mevcut olduğu, ancak uygulamaya dahil edilmediği yerel ayarları içerecek şekilde spellchecker.xml güncelle +* Çevirileri güncelle (tüm çevirmenlere teşekkürler!) +* @Syphyr tarafından ndk'yı yükselt (#560) +* @arcarum tarafından satır içi otomatik doldurma kodunu yükselt (#595) +* Araç çubuğu tuşu diyalog sorunu düzeltildi (#505) +* Türkçe düzenle ilgili sorun düzeltildi (#508) +* Renkleri özelleştirme ekranında dönerken yanlış anahtar durumları düzeltildi (#563) +* Son kullanılan emojilerin yüklenmemesi sorunu düzeltildi (#527) +* Bazı alanlarda sayılar görünmeme sorunu düzeltildi (#585) +* Bazı küçük düzeltmeler diff --git a/fastlane/metadata/android/tr-TR/changelogs/1003.txt b/fastlane/metadata/android/tr-TR/changelogs/1003.txt new file mode 100644 index 0000000000..42e637d3f4 --- /dev/null +++ b/fastlane/metadata/android/tr-TR/changelogs/1003.txt @@ -0,0 +1,9 @@ +* @codokie tarafından otomatik düzeltme ve tümünü seç araç çubuğu tuşları için simgeleri değiştir (#524, #651) +* @tenextractor tarafından Çuvaşça düzeni ekle (#677) +* @codokie tarafından kesme araç çubuğu tuşu ekle (#678) +* @fahimscirex tarafından Probhat düzenini güncelle (#628) +* Araç çubuğu tuşu diyalogunda araç çubuğu simgelerini göster +* @codokie tarafından pano geçmişine kapatma düğmesi ekle (#403, #649) +* @Zolax9 tarafından Rusça (Öğrenci) düzeni ekle (#640) +* Semboller tuşuna uzun basıldığında numpad'i göstermeyi isteğe bağlı yap (#588) +* @RHJihan tarafından #632, #637, #638 dahil olmak üzere küçük düzeltmeler ve iyileştirmeler diff --git a/fastlane/metadata/android/tr-TR/changelogs/1004.txt b/fastlane/metadata/android/tr-TR/changelogs/1004.txt new file mode 100644 index 0000000000..3544017627 --- /dev/null +++ b/fastlane/metadata/android/tr-TR/changelogs/1004.txt @@ -0,0 +1,7 @@ +- @markokocic tarafından Sırp Kiril alfabesi düzenini güncelle (#704, #705) +- @tenextractor tarafından Estonya düzenini güncelle (#693) +- @codokie tarafından pano geçmişindeki yinelenen girdileri düzelt (#616, #680) +- Yalnızca metin girdilerini pano geçmişine ekle (@codokie #711) +- Meta verilerde daha iyi görüntüler (@RHJihan #713) +- Araç çubuğu seçim diyalogunda simgelerin rengini doğru ayarla (@codokie #715, #716) +- Diğer düzeltmeler (#684, #723 ve daha fazlası) diff --git a/fastlane/metadata/android/tr-TR/changelogs/2000.txt b/fastlane/metadata/android/tr-TR/changelogs/2000.txt new file mode 100644 index 0000000000..4848b838ed --- /dev/null +++ b/fastlane/metadata/android/tr-TR/changelogs/2000.txt @@ -0,0 +1,10 @@ +* Modifiye tuşları için temel destek ekle +* Daha fazla araç çubuğu tuşuna uzun basma işlevi ekle +* Daha fazla pano geçmişi araç çubuğu tuşu ekle +* Pano geçmişi araç çubuğunu özelleştirilebilir yap +* Tüm renkleri özelleştirmeye izin ver +* Her zaman ortadaki öneri olarak girilecek kelimeyi gösterme ayarı ekle +* Caps lock göstergesi ekle +* Piedmontese, Doğu Mari, Mansi, Kannada ve Macarca için genişletilmiş düzenler ekle +* Bazı cihazlarda tuş önizleme açılır penceresindeki kesik metni düzelt +* Daha fazla düzeltme ve iyileştirme, sürüm notlarına bakın diff --git a/fastlane/metadata/android/tr-TR/changelogs/2001.txt b/fastlane/metadata/android/tr-TR/changelogs/2001.txt new file mode 100644 index 0000000000..a4833e8571 --- /dev/null +++ b/fastlane/metadata/android/tr-TR/changelogs/2001.txt @@ -0,0 +1,11 @@ +* İşlev tuşu düzenlerini özelleştirmeye izin ver +* Semboller ve daha fazla semboller düzenini biraz ayarla +* Araç çubuğunu otomatik olarak göster/gizle seçenekleri ekle +* Metin kopyalandığında bildirim mesajı (toast notification) ekle +* Dil değiştirme tuşunun davranışını etkinleştirmeden ayır +* Sayı ve telefon düzenleri için virgül tuşu açılır menüleri ekle +* Araç çubuğunda uzun basarak sabitlemeyi isteğe bağlı yap +* Araç çubuğu ayarlarını ayrı bir bölüme taşı +* Tab tuşu ekle +* Düzenlerde ctrl, araç çubuğu ve diğer tuş etiketlerini anla +* Küçük düzeltmeler ve iyileştirmeler diff --git a/fastlane/metadata/android/tr-TR/changelogs/2002.txt b/fastlane/metadata/android/tr-TR/changelogs/2002.txt new file mode 100644 index 0000000000..f6c3203893 --- /dev/null +++ b/fastlane/metadata/android/tr-TR/changelogs/2002.txt @@ -0,0 +1,4 @@ +* @codokie tarafından emoji araç çubuğu tuşu ekle (#845, #837) +* Yinelenen harflerle ilgili iyileştirmeler (#225 ve belki diğerleri) +* Emojiler içinde imleç konumlandırmaktan kaçın (#859) +* Yeni eklenen özelliklerle ilgili küçük düzeltmeler diff --git a/fastlane/metadata/android/tr-TR/changelogs/2003.txt b/fastlane/metadata/android/tr-TR/changelogs/2003.txt new file mode 100644 index 0000000000..de724a07db --- /dev/null +++ b/fastlane/metadata/android/tr-TR/changelogs/2003.txt @@ -0,0 +1,11 @@ +* Özelleştirilebilir işlev tuşu düzeni +* Semboller ve daha fazla semboller düzenini biraz ayarla +* Alt, ctrl, fn, meta tuşları için temel destek ekle +* Araç çubuğunu genişlet (uzun basma işlevi, isteğe bağlı uzun basma ile sabitleme, otomatik göster/gizle, daha iyi pano araç çubuğu, ...) +* Tab tuşu ekle +* Caps lock göstergesi ekle +* Bazı diller için düzenler ekle +* Araç çubuğu tuşlarını klavye tuşları olarak ekle +* Tüm renkleri özelleştirmeye izin ver +* Metin kopyalandığında bildirim mesajı (toast notification) ekle +* Hata düzeltmeleri ve daha fazla iyileştirme, tam sürüm notlarına bakın diff --git a/fastlane/metadata/android/tr-TR/changelogs/2100.txt b/fastlane/metadata/android/tr-TR/changelogs/2100.txt new file mode 100644 index 0000000000..1afe5a5baa --- /dev/null +++ b/fastlane/metadata/android/tr-TR/changelogs/2100.txt @@ -0,0 +1,8 @@ +* Tabletlerde bozuk işlev tuşu düzenini düzelt +* Dil değiştirme tuşunu yalnızca değiştirecek bir şey olduğunda göster +* "Tüm renkler" ayarı için varsayılan renkleri gri yerine rastgele yap +* Yazma sırasında hareketler için başlangıç gecikmesini özelleştirmeye izin ver, @devycarol tarafından +* Para birimi tuşlarını özelleştirmeye izin ver +* Shift -> caps lock için uzun basma süresini azalt, @devycarol tarafından +* Sayı satırı ve semboller düzeninde üstsüz pop-up'ları genişlet, @b02860de585071a2 tarafından +* Küçük düzeltmeler ve iyileştirmeler diff --git a/fastlane/metadata/android/tr-TR/changelogs/2200.txt b/fastlane/metadata/android/tr-TR/changelogs/2200.txt new file mode 100644 index 0000000000..e0953f876d --- /dev/null +++ b/fastlane/metadata/android/tr-TR/changelogs/2200.txt @@ -0,0 +1,11 @@ +* Özel temaları kaydetme/aktarabilme özelliği ekle +* Klavye üzerindeki ok tuşlarını tekrar edilebilir yap +* Daha fazla imleç araç çubuğu tuşu (sayfa yukarı/aşağı, kelime sola/sağa) +* Yapıştırma tuşu ekle +* Tuş kaydırma davranışını iyileştir +* Numpad'i açıp kapamak için boşluk kaydırma ayarı ekle +* Son kopyalanan metin için pano önerisi ekle +* Seçim tuşlarına tekrar basıldığında metni seçimi kaldır +* Android 12+ için ayarlarda bazı renkleri ayarla +* Dil bağımlı açılır tuşları ayarla +* Küçük düzeltmeler ve iyileştirmeler diff --git a/fastlane/metadata/android/tr-TR/changelogs/2201.txt b/fastlane/metadata/android/tr-TR/changelogs/2201.txt new file mode 100644 index 0000000000..7ad44aed01 --- /dev/null +++ b/fastlane/metadata/android/tr-TR/changelogs/2201.txt @@ -0,0 +1,2 @@ +* Hareketli yazma için görsel seçenekler ekle, @devycarol tarafından (#944) +* Bazı simgeleri güncelle, @BlackyHawky tarafından (#977) diff --git a/fastlane/metadata/android/tr-TR/full_description.txt b/fastlane/metadata/android/tr-TR/full_description.txt new file mode 100644 index 0000000000..57275ae043 --- /dev/null +++ b/fastlane/metadata/android/tr-TR/full_description.txt @@ -0,0 +1,30 @@ +HeliBoard, gizliliğe önem veren, AOSP / OpenBoard tabanlı açık kaynaklı bir klavyedir. +İnternet izni kullanmaz, bu nedenle %100 çevrimdışıdır. + +Özellikler: +
                  +
                • Öneriler ve yazım denetimi için sözlükler ekle
                • +
                    +
                  • Kendi sözlüklerini oluşturabilir veya buradan veya deneysel bölümden (kalite değişebilir) indirebilirsin
                  • +
                  • Emojiler veya bilimsel semboller için ek sözlükler kullanarak öneriler sağlayabilirsin (emoji araması gibi)
                  • +
                  • Korece düzenleri için önerilerin yalnızca bu sözlük ile çalıştığını unutma; sözlük deposundaki araçlar, çalışan sözlükler oluşturmak için yeterli değil
                  • +
                  +
                • Klavyenin temasını (stil, renkler ve arka plan resmi) özelleştir
                • +
                    +
                  • Android 10+ (ve bazı Android 9 sürümlerinde) sistemin gün/gece ayarını takip edebilir
                  • +
                  • Android 12+ için dinamik renkleri takip edebilir
                  • +
                  +
                • Klavyenin düzenlerini özelleştir (yalnızca sistem dillerini kullan özelliği devre dışı bırakıldığında kullanılabilir)
                • +
                • Semboller, sayı veya işlev tuşu düzenleri gibi özel düzenleri özelleştir
                • +
                • Çok dilli yazım
                • +
                • Kaydırarak yazma (yalnızca kapalı kaynaklı kütüphane ile ☹️)
                • +
                    +
                  • Kütüphane uygulamaya dahil değildir çünkü uyumlu bir açık kaynak kütüphanesi bulunmamaktadır
                  • +
                  • GApps paketlerinden ("swypelibs") çıkarılabilir veya buradan indirilebilir (dosyaya tıkla, ardından "raw" veya küçük indirme düğmesine bas)
                  • +
                  +
                • Pano geçmişi
                • +
                • Tek elle kullanım modu
                • +
                • Bölünmüş klavye (yalnızca ekran yeterince büyükse kullanılabilir)
                • +
                • Sayı tuş takımı
                • +
                • Ayarlarını ve öğrendiğin kelime / geçmiş verilerini yedekle ve geri yükle
                • +
                diff --git a/fastlane/metadata/android/tr-TR/short_description.txt b/fastlane/metadata/android/tr-TR/short_description.txt new file mode 100644 index 0000000000..5ffc4ddbc0 --- /dev/null +++ b/fastlane/metadata/android/tr-TR/short_description.txt @@ -0,0 +1 @@ +Özelleştirilebilir açık kaynaklı klavye diff --git a/fastlane/metadata/android/tr-TR/title.txt b/fastlane/metadata/android/tr-TR/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/tr-TR/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/uk/changelogs/1001.txt b/fastlane/metadata/android/uk/changelogs/1001.txt new file mode 100644 index 0000000000..b4045fb680 --- /dev/null +++ b/fastlane/metadata/android/uk/changelogs/1001.txt @@ -0,0 +1,20 @@ +* новий значок від @FabianOvrWrt за участі @the-eclectic-dyslexic +* розширено можливості налаштування трекпаду пробілу та перемикача мов від @arcarum +* додано % до розкладки символів зсуву +* покращено поведінку, коли клавішу перемикання мови призначено для перемикання мови та клавіатури +* під час додавання словника показувати посилання на існуючі словники +* додано розкладку Kaitag від @alkaitagi +* додано розкладку Probhat від @fahimscirex +* за бажанням змінено порядок панелей інструментів для мов RTL від @codokie +* дозволено кастомізацію спеціальних розкладок (циф. блоку, телефона, ...) + * все ще експериментальна, оскільки базова розкладка може змінюватися +* оновлено файл spellchecker.xml для локалізацій, де словники доступні, але не включено до застосунку +* оновлено переклади (дякуємо усім перекладачам!) +* оновлено ndk від @Syphyr +* оновлено код вбудованого автозаповнення від @arcarum +* виправлено проблему з діалоговим вікном клавіш на панелі інструментів) +* виправлено проблему з турецькою розкладкою +* виправлено неправильний стан перемикачів під час обертання у вікні налаштування кольорів +* виправлено проблему, коли не завантажувалися нещодавні емоджі +* виправлено проблему, пов'язану з відсутністю чисел у певних полях +* деякі незначні виправлення diff --git a/fastlane/metadata/android/uk/changelogs/1003.txt b/fastlane/metadata/android/uk/changelogs/1003.txt new file mode 100644 index 0000000000..691f935329 --- /dev/null +++ b/fastlane/metadata/android/uk/changelogs/1003.txt @@ -0,0 +1,9 @@ +* змінено значки для автокорекції та виділено всі клавіші панелі інстр. від @codokie +* додано чуваську розкладку від @tenextractor +* додано клавішу «Вирізати» на панелі інстр. від @codokie +* оновлено розкладку Probhat від @fahimscirex +* показано значки панелей інстр. у діал. вікні клавіш панелей інстр. +* додано кнопку закриття до історії буфера обміну від @codokie +* додано російську (студентську) розкладку від @Zolax9 +* зроблено необов'язковим довге натискання клавіші символів на циф. блоці +* дрібні виправлення та покращення від @RHJihan diff --git a/fastlane/metadata/android/uk/changelogs/1004.txt b/fastlane/metadata/android/uk/changelogs/1004.txt new file mode 100644 index 0000000000..8a769d76b4 --- /dev/null +++ b/fastlane/metadata/android/uk/changelogs/1004.txt @@ -0,0 +1,7 @@ +- оновлено сербську кириличну розкладку від @markokocic +- оновлено естонську розкладку від @tenextractor +- виправлено дублікати записів у історії буфера обміну у @codokie +- додавання лише текстових записів до історії буфера обміну від @codokie +- покращено зображення у метаданих від @RHJihan +- правильно встановлено колір значків у діалоговому вікні вибору панелі інструментів від @codokie +- інші виправлення diff --git a/fastlane/metadata/android/uk/changelogs/2000.txt b/fastlane/metadata/android/uk/changelogs/2000.txt new file mode 100644 index 0000000000..afaa701104 --- /dev/null +++ b/fastlane/metadata/android/uk/changelogs/2000.txt @@ -0,0 +1,10 @@ +* додано базову підтримку клавіш-модифікаторів +* додано функції довготривалого натискання для більшої кількості клавіш панелі інструментів +* та інші клавіші панелі інструментів історії буфера обміну +* зроблено панель історії буферу обміну налаштовуваною +* дозволено налаштовувати всі кольори +* додано можливість завжди показувати слово, що вводиться, як середнє речення +* додано індикатор блокування клавіш верхнього регістру +* додано п'ємонтську, східномарійську, мансійську, розширені розкладки для каннадської та угорської мов +* виправлено обрізання тексту у спливному вікні попереднього перегляду клавіш на деяких пристроях +* інші виправлення та покращення див. у примітках до випуску diff --git a/fastlane/metadata/android/uk/changelogs/2001.txt b/fastlane/metadata/android/uk/changelogs/2001.txt new file mode 100644 index 0000000000..48d1e618c9 --- /dev/null +++ b/fastlane/metadata/android/uk/changelogs/2001.txt @@ -0,0 +1,11 @@ +* дозволяє налаштовувати функціональні розкладки клавіш +* незначні зміни у розкладці символів та більшої кількості символів +* додано параметри для автоматичного показу/приховування панелі інструментів +* додано сповіщення у вигляді тосту під час копіювання тексту +* відокремлено поведінку клавіші перемикання мови від увімкнення +* додано спливні клавіші коми для розкладок номерів та телефонів +* зроблено необов'язковим закріплення довгого натискання на панелі інструментів +* перенесено налаштування панелі інструментів в окремий розділ +* додано клавішу табуляції +* розуміння підписів клавіш ctrl, панелі інструментів та інших клавіш у розкладках +* дрібні виправлення та покращення diff --git a/fastlane/metadata/android/uk/changelogs/2002.txt b/fastlane/metadata/android/uk/changelogs/2002.txt new file mode 100644 index 0000000000..21566bdeef --- /dev/null +++ b/fastlane/metadata/android/uk/changelogs/2002.txt @@ -0,0 +1,4 @@ +* додано клавішу для емоджі на панелі інструментів від @codokie (#845, #837) +* виправлено дубльовані літери +* уникнення позиціонування курсору всередині смайликів (#859) +* незначні виправлення для нещодавно доданих функцій diff --git a/fastlane/metadata/android/uk/changelogs/2003.txt b/fastlane/metadata/android/uk/changelogs/2003.txt new file mode 100644 index 0000000000..0a1199e13d --- /dev/null +++ b/fastlane/metadata/android/uk/changelogs/2003.txt @@ -0,0 +1,11 @@ +* налаштовувана функціональна розкладка клавіш +* незначне налаштування символів та більша кількість їхніх розкладок +* базова підтримка клавіш alt, ctrl, fn, метаклавіш +* розширено панель інструментів (функція довгого натискання, додаткове закріплення довгого натискання, автоматичний показ / приховування, покращено панель інструментів буфера обміну, ...) +* додано клавішу табуляції +* додано індикатор блокування клавіш верхнього регістру +* додано розкладки для деяких мов +* додано клавіші панелі інструментів як клавіші клавіатури +* дозволено налаштовувати всі кольори +* сповіщення у вигляді тосту під час копіювання тексту +* виправлення помилок та інші покращення, див. повну версію у примітках до випуску diff --git a/fastlane/metadata/android/uk/changelogs/2100.txt b/fastlane/metadata/android/uk/changelogs/2100.txt new file mode 100644 index 0000000000..5cea5247bb --- /dev/null +++ b/fastlane/metadata/android/uk/changelogs/2100.txt @@ -0,0 +1,8 @@ +* виправлено непрацюючу функціональну розкладку клавіш для планшетів +* показано клавішу перемикання мови лише тоді, коли є на що перемикатися +* зроблено типові кольори для параметра «всі кольори» випадковими замість сірих +* дозволено налаштовувати затримку запуску для жестів під час набору тексту від @devycarol +* дозволити персоналізацію клавіш перемикання валют +* зменшено час тривалого натискання клавіш shift -> caps lock від @devycarol +* розширено спливні вікна надрядкових символів у рядку чисел та розкладці символів від @b02860de585071a2 +* незначні виправлення та покращення diff --git a/fastlane/metadata/android/uk/changelogs/2200.txt b/fastlane/metadata/android/uk/changelogs/2200.txt new file mode 100644 index 0000000000..5f3bae4d0e --- /dev/null +++ b/fastlane/metadata/android/uk/changelogs/2200.txt @@ -0,0 +1,11 @@ +* додано можливість збереження / експорту власних тем +* зроблено повторюваність клавіш зі стрілками на клавіатурі +* більше клавіш на панелі інструментів курсора (сторінка вгору / вниз (початок / кінець), слово вліво / вправо) +* додано клавішу вставки +* покращено поведінку свайпів по клавішах +* додано налаштування перемикання пробілу для перемикання клавіатури +* додано підказку щодо буфера обміну для нещодавно скопійованого тексту +* зняття виділення тексту при повторному натисканні клавіш виділення +* налаштування деяких кольорів у налаштуваннях для Android 12+ +* налаштування спливних клавіш, що залежать від мови +* незначні виправлення та покращення diff --git a/fastlane/metadata/android/uk/changelogs/2201.txt b/fastlane/metadata/android/uk/changelogs/2201.txt new file mode 100644 index 0000000000..556286693a --- /dev/null +++ b/fastlane/metadata/android/uk/changelogs/2201.txt @@ -0,0 +1,2 @@ +* додано візуальні параметри для вводу жестів від @devycarol (#944) +* оновлено деякі значки @BlackyHawky (#977) diff --git a/fastlane/metadata/android/uk/changelogs/2300.txt b/fastlane/metadata/android/uk/changelogs/2300.txt new file mode 100644 index 0000000000..14cdc3ca68 --- /dev/null +++ b/fastlane/metadata/android/uk/changelogs/2300.txt @@ -0,0 +1,9 @@ +* Дозволяє налаштовувати числовий рядок, коди панелей інструментів, іконки, пробіл в тексті, нижній рядок для емоджі та буфер обміну +* Відокремлено стиль значків від стилю клавіатури +* Вимкнено видалення зайвих типових спливних вікон (і додано невелике виправлення) +* Менш агресивне додавання слів до особистого словника +* Відсутність вібрації в режимі «Не турбувати» +* Покращено продуктивність під час копіювання великих текстів +* Виправлено частково розділові знаки, які не працювали +* Виправлено деякі помилки, пов'язані з дублюванням текстів +* Виправлено деякі інші недоліки і виправлено багато інших багів diff --git a/fastlane/metadata/android/uk/changelogs/2301.txt b/fastlane/metadata/android/uk/changelogs/2301.txt new file mode 100644 index 0000000000..2773d02a3b --- /dev/null +++ b/fastlane/metadata/android/uk/changelogs/2301.txt @@ -0,0 +1,9 @@ +Дозволено змінити рядок чисел, коди інструментів, значки, пробіл в тексті, нижній ряд для емоджі та буферу обміну +Відокремлено стиль іконок від стилю клавіатури +Вимкнено видалення зайвих типових спливних вікон (і дод. мале виправлення) +Менш агресивне додавання слів до свого словника +Відсутність вібрації в тихому режимі +Виправлено: пунктуацію (майже), які не працювали. +Продуктивність при копіюванні великих текстів. +Помилки, пов'язані з дублюванням текстів. +Інші недоліки і багато багів diff --git a/fastlane/metadata/android/uk/changelogs/3007.txt b/fastlane/metadata/android/uk/changelogs/3007.txt new file mode 100644 index 0000000000..3442940fbd --- /dev/null +++ b/fastlane/metadata/android/uk/changelogs/3007.txt @@ -0,0 +1,11 @@ +* додані розкладки: арабська хіджаї, іврит 1452-2, хінді фонетична, даргва (урахі), байшахі, курдська +* оновлені деякі макети +* підтримка поєднання акцентів +* кнопка розділеної клавіатури на панелі інструментів +* додані спливні вікна .com +* дозволено налаштування власного шрифту +* налаштування масштабування шрифту +* покращене автоматичне перемикання мов +* перероблені налаштування +* додані налаштування: відступу, автопробілу, автокорекції, рядка чисел +* більше функцій та виправлень diff --git a/fastlane/metadata/android/uk/full_description.txt b/fastlane/metadata/android/uk/full_description.txt new file mode 100644 index 0000000000..9d23e61f7b --- /dev/null +++ b/fastlane/metadata/android/uk/full_description.txt @@ -0,0 +1,30 @@ +HeliBoard — це клавіатура з відкритим вихідним кодом, заснована на AOSP / OpenBoard. +Не використовує дозволу на доступ до мережі, а отже є на 100% автономною. + +Функції: +
                  +
                • Додавання словників для пропозицій та перевірки правопису
                • +
                    +
                  • створити свій власний або отримати їх тут, або в експериментальному розділі (якість може відрізнятися)
                  • +
                  • додаткові словники емоджі або наукових символів можуть бути використані для надання пропозицій (подібно до «пошуку емоджі»)
                  • +
                  • зверніть увагу, що для корейських пропозицій макети працюють тільки з використанням цього словника; інструменти у сховищі словників не можуть створювати робочі словники
                  • +
                  +
                • Налаштування тем клавіатури (стиль, кольори та фонове зображення)
                • +
                    +
                  • можливість слідувати налаштуванням дня / ночі системи на Android 10+ (і на деяких версіях Android 9)
                  • +
                  • підтримує динамічні кольори для Android 12+
                  • +
                  +
                • Налаштування макетів клавіатури (доступно лише за умови вимкнення використовувати системні мови)
                • +
                • Налаштування спеціальних розкладок, наприклад, символів, цифр або функціональних клавіш
                • +
                • Багатомовний набір тексту
                • +
                • Набір тексту ковзанням (тільки з бібліотекою із закритим кодом ☹️)
                • +
                    +
                  • бібліотека не включена до застосунку, оскільки немає сумісної бібліотеки з відкритим вихідним кодом
                  • +
                  • можна витягти з пакунків GApps («swypelibs»), або завантажити тут (натисніть на файл, а потім «raw» або крихітну кнопку завантаження)
                  • +
                  +
                • Історія буфера обміну
                • +
                • Режим однієї руки
                • +
                • Розділена клавіатура (доступна тільки якщо екран достатньо великий)
                • +
                • Цифрова клавіатура
                • +
                • Резервне копіювання та відновлення налаштувань і вивчених слів / даних
                • +
                diff --git a/fastlane/metadata/android/uk/short_description.txt b/fastlane/metadata/android/uk/short_description.txt new file mode 100644 index 0000000000..a98af38bd8 --- /dev/null +++ b/fastlane/metadata/android/uk/short_description.txt @@ -0,0 +1 @@ +Налаштовувана клавіатура з відкритим вихідним кодом diff --git a/fastlane/metadata/android/uk/title.txt b/fastlane/metadata/android/uk/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/uk/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/fastlane/metadata/android/zh-CN/full_description.txt b/fastlane/metadata/android/zh-CN/full_description.txt new file mode 100644 index 0000000000..509efef392 --- /dev/null +++ b/fastlane/metadata/android/zh-CN/full_description.txt @@ -0,0 +1,30 @@ +HeliBoard 是基于 AOSP / OpenBoard 的注重隐私的开源键盘。 +不使用互联网权限,因此 100% 离线。 + +功能: + diff --git a/fastlane/metadata/android/zh-CN/short_description.txt b/fastlane/metadata/android/zh-CN/short_description.txt new file mode 100644 index 0000000000..ba6fc378d4 --- /dev/null +++ b/fastlane/metadata/android/zh-CN/short_description.txt @@ -0,0 +1 @@ +可自定义的开源键盘 diff --git a/fastlane/metadata/android/zh-CN/title.txt b/fastlane/metadata/android/zh-CN/title.txt new file mode 100644 index 0000000000..e9841ace0b --- /dev/null +++ b/fastlane/metadata/android/zh-CN/title.txt @@ -0,0 +1 @@ +HeliBoard diff --git a/gradle.properties b/gradle.properties index 700bdd11b6..11b104c21b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ -android.enableJetifier=true android.useAndroidX=true -org.gradle.jvmargs=-Xmx1024m \ No newline at end of file +org.gradle.configuration-cache=true +org.gradle.jvmargs=-Xmx1024m diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 13372aef5e..a4b76b9530 100755 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3a7a87860b..247cf2a9f5 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,8 @@ -#Fri Sep 04 18:10:56 CEST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionSha256Sum=61ad310d3c7d3e5da131b76bbf22b5a4c0786e9d892dae8c1658d4b484de3caa +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip diff --git a/gradlew b/gradlew index 9d82f78915..f5feea6d6b 100755 --- a/gradlew +++ b/gradlew @@ -1,74 +1,130 @@ -#!/usr/bin/env bash +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum -warn ( ) { +warn () { echo "$*" -} +} >&2 -die ( ) { +die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -77,84 +133,120 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index aec99730b4..9b42019c79 100755 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,4 +1,22 @@ -@if "%DEBUG%" == "" @echo off +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -8,26 +26,30 @@ @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -35,54 +57,36 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/images/feature.png b/images/feature.png deleted file mode 100644 index 75f1efdd36..0000000000 Binary files a/images/feature.png and /dev/null differ diff --git a/images/feature.xcf b/images/feature.xcf deleted file mode 100644 index a1e2b03648..0000000000 Binary files a/images/feature.xcf and /dev/null differ diff --git a/images/matrix_qr.png b/images/matrix_qr.png deleted file mode 100644 index 527f51a436..0000000000 Binary files a/images/matrix_qr.png and /dev/null differ diff --git a/images/open_board_final.png b/images/open_board_final.png deleted file mode 100644 index 1d22dabc19..0000000000 Binary files a/images/open_board_final.png and /dev/null differ diff --git a/images/open_board_final.psd b/images/open_board_final.psd deleted file mode 100644 index 1026af719b..0000000000 Binary files a/images/open_board_final.psd and /dev/null differ diff --git a/layouts.md b/layouts.md new file mode 100644 index 0000000000..09ea59fbe8 --- /dev/null +++ b/layouts.md @@ -0,0 +1,149 @@ +# A compilation of information about the layout formats usable in this app. + +There are two distinct formats: +* the _simple_ format is a text file with one key label per line, and two consecutive line breaks indicating a switch to the next row, [example](app/src/main/assets/layouts/main/qwerty.txt) +* the _json_ format taken from [FlorisBoard](https://github.com/florisboard/florisboard/blob/master/CONTRIBUTING.md#adding-the-layout), but only "normal" keys are supported (i.e. no action keys and similar), [example](app/src/main/assets/layouts/main/azerty.json) + +You can add both directly in the app, see the related [Wiki page](https://github.com/Helium314/HeliBoard/wiki/2.-Layouts). + +## General notes +Adding too many keys or too long texts will make the keyboard look awkward or broken, and even crash the app under some specific conditions (popup keys are especially prone for this). +There are some sanity checks when adding a layout to avoid such issues, but they do not cover all possible cases. +Further there is no check whether the layout actually contains characters of the selected language. + +If you use an external glide typing library, you likely will have issues if your layout contains duplicate keys, or keys with text longer than a single character. + +If the layout has exactly 2 keys in the bottom row, these keys will replace comma and period keys. More exactly: the first key will replace the first functional key with `"groupId": 1` in the bottom row, and the second key with replace the first key with `"groupId": 2`. + +## Simple format +* One key per line + * Key format: [label] [popup keys], all separated by space, e.g. `a 0 + *` will create a key with text `a`, and the keys `0`, `+`, and `*` on long press + * see [below](#labels) for information about special labels +* Two consecutive newlines mark beginning of a new row + +## Json format +* Normal json layout with [lenient](https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json-builder/is-lenient.html) parsing, and ignoring lines starting with `//`. + * For anything else than small changes and copy/pasting text the in-app editor is unsuitable. A proper text editor (e.g. Kate or Notepad++) can significantly simplify work on json files. +* Allows more flexibility than the simple format, e.g. changing keys depending on input type, shift state or layout direction +* You can use character layouts from [FlorisBoard](https://github.com/florisboard/florisboard/blob/master/CONTRIBUTING.md#adding-the-layout) + * Support is not 100% there yet, notably `kana_selector` and `char_width_selector` do not work. +* There is no need for specifying a `code`, it will be determined from the label automatically + * You can still specify it, but it's only necessary if you want key label and code to be different (please avoid contributing layout with unnecessary codes to HeliBoard) + * Note that not all _special codes_ (negative numbers) from FlorisBoard are supported +* Key classes: specified with `$`, usually you can omit them in HeliBoard + * `text_key`: normal key, default + * `auto_text_key`: used in FlorisBoard for a key that changes text case when shift is enabled, HeliBoard does that anyway unless disabled with a _labelFlag_ + * `multi_text_key`: key with an array of code points, e.g. `{ "$": "multi_text_key", "codePoints": [2509, 2480], "label": "্র" }` + * there are also selector classes, which allow to change keys conditionally, see the [dvorak layout](app/src/main/assets/layouts/main/dvorak.json) for an example: + * `case_selector`: keys for `lower` and `upper` (both mandatory), similar to `shift_state_selector` + * `shift_state_selector`: keys for `unshifted`, `shifted`, `shiftedManual`, `shiftedAutomatic`, `capsLock`, `manualOrLocked`, `default` (all optional) + * `variation_selector`: keys for input types `datetime`, `time`, `date`, `password`, `normal`, `uri`, `email`, `default` (all optional) + * `keyboard_state_selector`: keys for `emojiKeyEnabled`, `languageKeyEnabled`, `symbols`, `moreSymbols`, `alphabet`, `default` (all optional) + * the `KeyEnabled` keys will be used if the corresponding setting is enabled, `symbols`, `moreSymbols`, `alphabet` will be used when the said keyboard view is active + * `layout_direction_selector`: keys for `ltr` and `rtl` (both mandatory) +### Properties +* A (non-selector) key can have the following properties: +* `type`: only specific values, HeliBoard mostly uses this to determine background color and type, determined automatically by default + * `normal`: normal key color + * `function`: functional key color + * `space`: space bar color + * `action`: action key color + * `unspecified`: no background color + * `placeholder`: no background color, no label, and pressing the key does nothing + * `numeric`: normal key color, only in number layouts: sets default width to `-1` and sets default label flags if none specified + * There are some more values, but they do nothing +* `code`: code point that is entered when the key is pressed, determined from the label by default, not available for `multi_text_key` + * There are special negative values available, e.g. the ones used by functional keys, see [KeyCode.kt](/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/floris/KeyCode.kt). There are several not yet supported key codes in there, you can see in the function `checkAndConvertCode` which ones are working. + * Notes for the modifier keys `CTRL`, `ALT`, `FN`, `META` and the left/right/lock versions + * The lock versions (`CTRL_LOCK`, `ALT_LOCK`, `FN_LOCK`, `META_LOCK`) will stay active until pressed again. The normal versions will stay active until released or a code input happens (whatever comes later). Avoid having both lock and non-lock versions of the same key on a keyboard, they interact badly. + * Some applications will only react to a specific `_LEFT` or `_RIGHT` version of a meta key +* `codePoints`: when multiple code points should be entered, only available for `multi_text_key` +* `label`: text to display on the key, determined from code if empty + * There are some special values, see the [label section](#labels) +* `groupId`: which additional popup keys to show, `0` is default and does not add anything, `1` adds the comma popup keys, `2` adds the period popup keys, `3` adds the action key popup keys (looks awkward though), `-1` suppresses additional popups based on the label +* `popup`: list of keys to add in the popup, e.g. `"label": ")", "popup": {"relevant": [{ "label": "." }]}` is a `)` key with a `.` popup + * Note that in popup keys, properties are ignored with the exception of `$`, `code`, `codePoints`, and `label` + * When specifying a _selector_ key class in a popup key, it will be evaluated correctly (e.g. for changing popups dependent on shift state) + * If popups are added to repeating keys (e.g. delete, arrow keys), repetition will be disabled. +* `width`: width of the key in units of screen width, e.g. a key with `"width": 0.1` has a width of 10% of the screen, defaults to `0` + * A special value is `-1`, which means the key expands to the available space not already used by other keys (e.g. the space bar) + * `0` is interpreted as follows + * `-1` on the `space` key in alphabet or symbols layouts, and for keys with `"type": numeric` in number layouts + * `0.17` for number layouts + * `0.1` for phones + * `0.09` for tablets + * If the sum of widths in a row is greater than 1, keys are rescaled to fit on the screen +* `labelFlags`: allows specific effects, see [here](app/src/main/res/values/attrs.xml#L250-L282) in the section _keyLabelFlags_ for names and numeric values + * Since json does not support hexadecimal-values, you have to use the decimal values in the comments in the same line. + * In case you want to apply multiple flags, you will need to combine them using [bitwise OR](https://en.wikipedia.org/wiki/Bitwise_operation#OR). In most cases this means you can just add the individual values, only exceptions are `fontDefault`, `followKeyLabelRatio`, `followKeyHintLabelRatio`, and `autoScale`. + +## Labels +In the simple format you only specify labels, in json layouts you do it explicitly via the `label` property. +Usually the label is what is displayed on the key. However, there are some special labels: +* Currency keys + * `$$$` will be replaced by the local currency, depending on your current layout language. If you define a key with `$$$` without defining popup keys, it will get the first 4 additional currencies (see below) as popup + * `$$$1` - `$$$5` will be replaced by currencies available on long-pressing the currency key +* Functional keys (incomplete list) + * _alpha_: switch to alphabet keyboard (or main phone keyboard in case of phone layout) + * _symbol_: switch to symbol keyboard (or phone symbols keyboard in case of phone layout) + * _symbol_alpha_: toggle alpha / symbol keyboard + * _numpad_: toggle numpad layout + * _emoji_: switch to emoji view + * _com_: display common TLDs (.com and similar, localized) + * _language_switch_: language switch key + * _action_: the action (enter) key + * _delete_: delete key + * _shift_: shift key, will change label when in symbols layout + * _period_: `.` key with punctuation popups, will adapt to language-specific period + * _comma_: `,` key with special popups, will adapt to language-specific comma, or display `/` in URL fields and `@` in email fields + * _space_: space key, with icon when using a number layout + * _zwnj_: Zero-width non-joiner (automatically added next to space in alphabet layout for some languages) + * You can also use [toolbar keys](/app/src/main/java/helium314/keyboard/latin/utils/ToolbarUtils.kt#L109), e.g. _undo_. + * See [KeyLabel.kt](app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/floris/KeyLabel.kt) for more available labels that are parsed to the corresponding key. +* In case a label clashes with text you want to add, put a `\` in front of the text you want, e.g. `\space` will write the label `space` instead of adding a space bar. + * Note that you need to escape the `\` in json files by adding a second `\`. +* If you want different key label and input text, set the label to [label]|[text], e.g. `aa|bb` will show `aa`, but pressing the key will input `bb`. +You can also specify special key codes like `a|!code/key_action_previous` or `abc|!code/-10043`, but it's cleaner to use a json layout and specify the code explicitly. Note that when specifying a code in the label, and a code in a json layout, the code in the label will be ignored. +* It's also possible to specify an icon, like `!icon/previous_key|!code/key_action_previous`. + * You can find available icon names in [KeyboardIconsSet](/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardIconsSet.kt). You can also use toolbar key icons using the uppercase name of the [toolbar key](/app/src/main/java/helium314/keyboard/latin/utils/ToolbarUtils.kt#L109), e.g. `!icon/redo` +* There are some further special labels to be used in popup keys (i.e. one of the popup keys should have the label) + * `!noPanelAutoPopupKey!`: no popups are shown, a long press will result in the first normal popup of the key being selected + * `!needsDividers!`: dividers are shown between popup keys + * `!hasLabels!`: reduces text size in popup keys for nicer display of labels instead of letters + * `!autoColumnOrder!`: use with a number, e.g. _!autoColumnOrder!4_ will result in 4 popup columns + * `!fixedColumnOrder!`: use with a number, e.g. _!fixedColumnOrder!4_ will result in 4 popup columns. Keys will not be re-ordered if the result is a single line. + +## Adding new layouts / languages +* You need a layout file in one of the formats above, and add it to [layouts](app/src/main/assets/layouts) + * Popup keys in the layout will be in the "_Layout_" popup key group. + * If you add a json layout, only add key type (`$`) and `code` if necessary +* Add a layout entry to [`method.xml`](app/src/main/res/xml/method.xml) + * `KeyboardLayoutSet` in `android:imeSubtypeExtraValue` must be set to the name of your layout file (without file ending) + * `android:subtypeId` must be set to a value that is unique in this file (please use the same length as for other layouts) + * If you add a layout to an existing language, add a string with the layout name to use instead of `subtype_generic`. The new string should be added to default [`strings.xml`](/app/src/main/res/values/strings.xml), and optionally to other languages. `%s` will be replaced with the language. +* If you add a new language, you might want to provide a [locale_key_texts](/app/src/main/assets/locale_key_texts) file + * `[popup_keys]` section contains popup keys that are similar to the letter (like `a` and `ä` or `य` and `य़`) + * Such forms should _not_ be in the layout. They will apply to all layouts of that language, even custom ones. + * The popup keys will be added to the "_Language_" popup key group (relevant for setting popup key order). + * Use `%` to mark all preceding keys as "_Language (important)_" instead. Keys after `%` will still be in the "_Language_" group. + * The `punctuation` key is typically the period key. `popup_keys` set here override the default. + * `[labels]` may contain non-default labels for the following keys `symbol`, `alphabet`, `shift_symbol`, `shift_symbol_tablet`, `comma`, `period`, `question` + * `[number_row]` may contain a custom number row (1-9 and 0 separated by space). + * `[extra_keys]` are typically keys shown in the default layout of the language. This is currently only used for latin layouts to avoid duplicating layouts for just adding few keys on the right side. The layout name need to end with `+`, but the `+` is removed when looking up the actual layout. +* If you add a new language for which Android does not have a display name, it will be displayed using the language tag + * To fix this, add the language to [`strings.xml`](/app/src/main/res/values/strings.xml) (common names are `subtype_`), and then in [LocaleUtils.localizedDisplayName](/app/src/main/java/helium314/keyboard/latin/common/LocaleUtils.kt#L179) add an `overrideRedId` for the language tag. For overriding the language name displayed on space bar, you need to add the language tag to `subtype_locale_displayed_in_root_locale`, and the name to `subtype_locale_displayed_in_root_locale_display_names` in [donottranslate.xml](/app/src/main/res/values/donottranslate.xml). +* If a newly added language does not use latin script, please update the default scripts method `Locale.script` in [ScriptUtils](app/src/main/java/helium314/keyboard/latin/utils/ScriptUtils.kt) + +## Functional key layouts +Customizing functional keys mostly works like other layouts, with some specific adjustments: +* When using the default functional layout, emoji, language switch and numpad keys are actually always in the layout, but get removed depending on settings and the main layout (alphabet, symbols or more symbols). This removal is disabled when you customize any functional layout, so to not block you from adding e.g. a numpad key in alphabet layout. +* When you use a language that has a ZWNJ key, the key will automatically be added to the right of the (first) space bar in the bottom row +* Adding popups to keys that switch layout does not work properly, as usually the layout is switched as soon as the key gets pressed. +* use keys with `"type": "placeholder"` for + * separating left and right functional keys (e.g. shift and delete in default layout) + * separating top and bottom rows in case you want to have functional key rows aligned to the top of the keyboard (add a row with the placeholder as the only key) +* if the last row in functional keys does not contain a placeholder, it is used as bottom row (like in the default functional layout) +* When you functional keys only for some of alphabet, symbols and more symbols, behavior is as follows + * more symbols will fall back to symbols, then normal + * symbols will fall back to normal, then default (if you only customized more symbols functional layout) + * normal will fall back to default (if you only customized symbols and/or more symbols functional layout) diff --git a/progress.md b/progress.md new file mode 100644 index 0000000000..57447aa32b --- /dev/null +++ b/progress.md @@ -0,0 +1,57 @@ +# Heliboard Modernization & Feature Progress + +## Overview +This document tracks the completion of the "Heliboard Modernization & Feature Implementation Plan". All scheduled tasks for Phase 1 and Phase 2 have been implemented. + +## Phase 1: Architectural Modernization + +### 1.1 Namespace Decoupling & Migration +- **Status:** [x] Complete +- **Details:** + - Moved legacy AOSP code from `com.android.inputmethod` to `helium314.keyboard.latin.legacy`. + - Updated `AndroidManifest.xml` and JNI C++ files (`com_android_inputmethod_*.cpp`) to reflect the new package paths. + - Refactored imports across the codebase to eliminate references to the old namespace. + +### 1.2 Native Build System Migration (CMake) +- **Status:** [x] Complete +- **Details:** + - Created `app/src/main/jni/CMakeLists.txt` to replace `Android.mk`. + - Configured `jni_latinime` library building with source globbing and test exclusion. + - Updated `app/build.gradle.kts` to use `externalNativeBuild { cmake { ... } }` instead of `ndk-build`. + +### 1.3 Core Java to Kotlin Conversion +- **Status:** [x] Partial / Strategic +- **Details:** + - **Converted:** + - `ProximityInfo.java` -> `ProximityInfo.kt`: Preserved complex grid logic and JNI interaction. + - `BinaryDictionary.java` -> `BinaryDictionary.kt`: Preserved dictionary loading, flushing, and property retrieval logic. + - **Skipped (Strategic):** `LatinIME.java` was retained in Java to ensure stability of the main service entry point, as it requires rigorous runtime verification after such a major conversion. + +## Phase 2: Feature Implementation + +### 2.1 Feature: Granular Key Sizing +- **Status:** [x] Complete +- **Details:** + - **Settings:** Added `pref_height_scale` (Key Height) and `pref_vertical_gap_scale` (Vertical Gap) sliders to `AppearanceScreen`. + - **Logic:** Updated `KeyboardParams.java` to apply these scale factors to `mDefaultRowHeight` and `mVerticalGap`. + - **UI:** New settings appear in "Appearance" -> "Layout". + +### 2.2 Feature: Global Swipe Down to Hide +- **Status:** [x] Complete +- **Details:** + - **Settings:** Added `pref_swipe_down_to_hide` switch to `GestureTypingScreen`. + - **Logic:** Implemented gesture detection in `PointerTracker.java` (detecting `dY > threshold` and dominant vertical movement). + - **Handling:** Added `CUSTOM_CODE_HIDE_KEYBOARD` constant and handled it in `KeyboardActionListenerImpl.kt` by calling `latinIME.requestHideSelf(0)`. + +### 2.3 Feature: Settings "Test Drive" (Demo Mode) +- **Status:** [x] Complete +- **Details:** + - **UI:** Added a Floating Action Button (FAB) to `SettingsActivity.kt`. + - **Interaction:** Clicking the FAB opens a `ModalBottomSheet` containing a `TextField` that automatically requests focus, allowing immediate testing of keyboard settings without leaving the app. + +## Next Steps +1. **Verify Build:** Ensure `ANDROID_HOME` is set and run `./gradlew assembleDebug`. +2. **Runtime Testing:** + - Test the "Test Drive" feature in Settings. + - Adjust key height/gap sliders and verify layout changes. + - Enable "Swipe down to hide" and test the gesture. diff --git a/settings.gradle b/settings.gradle index 6181ff7f0d..8335aa9f5b 100755 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,2 @@ include ':app' -include ':tools:make-keyboard-text' include ':tools:make-emoji-keys' diff --git a/tools/diacritics.py b/tools/diacritics.py new file mode 100755 index 0000000000..47744b237f --- /dev/null +++ b/tools/diacritics.py @@ -0,0 +1,102 @@ +#!/bin/python + +import sys +import os +import re + + +# script for generating information about actual diacritics use from language data +# input could be word lists (one word per line), or *-words.txt files from https://www.wortschatz.uni-leipzig.de/en/download +# diacritics.txt contains language and in next line diacritics for that language, but should ideally +# contain many languages for better results regarding foreign diacritics +# resulting data is usage count for language diacritics, and list of words containing non-language diacritics + + +file_ending_filter = "-words.txt" +word_lists_dir = "../../wordlists/" +diacritics_file = "../../diacritics.txt" + + +def find_word_lists(language: str) -> list[str]: + # return a list of files + files = list() + if not os.path.isdir(word_lists_dir + language): + return files + for (dirpath, dirnames, filenames) in os.walk(word_lists_dir + language): + for n in filenames: + if n.endswith(file_ending_filter): + files.append(dirpath + "/" + n) + return files + + +def check_diacritics(language: str, diacritics: list[str], all_diacritics: set[str]): + word_lists = find_word_lists(language) + if len(word_lists) == 0: + return + report_file = f"diacritics_report_{language}.txt" + if os.path.isfile(report_file): + return + for dia in diacritics: + all_diacritics.remove(dia) + foreign_dia = "".join(all_diacritics) + dia_regex = fr"[{foreign_dia}]" + print("checking", language, "with", diacritics) + foreigns = list() + dia_count = dict() + for dia in diacritics: + dia_count[dia] = 0 + for word_list in word_lists: + with open(word_list) as f: + # check whether file contains any diacritics that are not in the list + for line in f: + if re.search(dia_regex, line): + foreigns.append(line.rstrip()) + else: + # search for language diacritics and add a count + for dia in diacritics: + if dia in line: + try: + # assuming the format from https://www.wortschatz.uni-leipzig.de/en/download + count = int(line.split("\t")[2]) + except: + count = 1 + dia_count[dia] = dia_count[dia] + count + dia_results = f"language: {language}\n" + dia_results = dia_results + f"diacritics: {diacritics}\n" + dia_results = dia_results + f"language diacritics counts: {dia_count}\n" + dia_results = dia_results + "foreign diacritics:\n" + dia_results = dia_results + "\n".join(foreigns) + with open(report_file, 'w') as f: + f.write(dia_results) + + +def make_all_diacritics(dia_lists: list[list[str]]) -> set[str]: + all_dia = set() + for dia_list in dia_lists: + for dia in dia_list: + all_dia.add(dia) + return all_dia + + +def read_diacritics() -> dict[str, list[str]]: + d = dict() + language = "" + with open(diacritics_file) as f: + for line in f: + if language == "": + language = line.split("#")[0].strip() + else: + d[language] = list(map(str.strip, line.split("#")[0].split(","))) + language = "" + return d + + +def main(): + diacritics = read_diacritics() + all_diacritics = make_all_diacritics(list(diacritics.values())) + for key in diacritics: + check_diacritics(key, diacritics[key], all_diacritics.copy()) + + +if __name__ == "__main__": + main() diff --git a/tools/make-emoji-keys/README.md b/tools/make-emoji-keys/README.md index 53cd6e3862..c18175df8e 100644 --- a/tools/make-emoji-keys/README.md +++ b/tools/make-emoji-keys/README.md @@ -1,6 +1,6 @@ # make-emoji-keys -This module takes care of generating emoji data bundled with Openboard. +This module takes care of generating emoji data bundled with HeliBoard. Basically data is generated in three steps: 1. Unicode emoji table provides code points and grouping plus ordering. 2. Local file lists every new emojis supported for every android version since 4.4. @@ -8,7 +8,7 @@ Basically data is generated in three steps: ### Generate emoji-categories.xml -A gradle task called 'makeEmoji' builds and runs this tool to generate android resouce file which. Path to openboard's res directory is automatically set so the file is ready to be bundled at build. +A gradle task called 'makeEmoji' builds and runs this tool to generate android resource file which. Path to HeliBoard's res directory is automatically set so the file is ready to be bundled at build. ### Update to latest emoji version diff --git a/tools/make-emoji-keys/build.gradle b/tools/make-emoji-keys/build.gradle index 5237401e3a..c621ce3624 100644 --- a/tools/make-emoji-keys/build.gradle +++ b/tools/make-emoji-keys/build.gradle @@ -19,22 +19,16 @@ jar { task makeEmoji(type: JavaExec, dependsOn: ['jar']) { main = '-jar' args jar.archiveFile.get() - args '-res' + args '-assets' args project.rootProject.project('app').projectDir.path + File.separator + 'src' + - File.separator + 'main' + File.separator + 'res' -} - -repositories { - mavenCentral() + File.separator + 'main' + File.separator + 'assets' + File.separator + 'emoji' } dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-stdlib:2.1.10" } - - java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 -} \ No newline at end of file + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 +} diff --git a/tools/make-emoji-keys/convert_new_emojis.py b/tools/make-emoji-keys/convert_new_emojis.py new file mode 100644 index 0000000000..61a4be9149 --- /dev/null +++ b/tools/make-emoji-keys/convert_new_emojis.py @@ -0,0 +1,16 @@ +import re + +# very simple script to convert new emojis from emojipedia to the format used in android-emoji-support.txt +# use: +# go to e.g. https://emojipedia.org/emoji-17.0 +# copy the new emojis to new_emojis.txt +# run the script +# paste output into a new section of android-emoji-support.txt +with open("new_emojis.txt") as f: + p = r'[A-Z]' + for line in f: + line = line.strip() + emo = re.split(p, line, 0)[0] + text = line.replace(emo, "").strip() + emo_text = str(emo.encode("unicode_escape")).split("'")[1].upper().replace("U", "U+").replace("0001", "1").split("\\\\")[1:] + print(" ".join(emo_text) + " # " + text.lower()) diff --git a/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/AndroidEmojiSupportFileParser.kt b/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/AndroidEmojiSupportFileParser.kt index 6e1808c82a..bfb5982536 100644 --- a/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/AndroidEmojiSupportFileParser.kt +++ b/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/AndroidEmojiSupportFileParser.kt @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: GPL-3.0-only + package com.majeur.inputmethod.tools.emoji diff --git a/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/EmojiCategoriesResource.kt b/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/EmojiCategoriesResource.kt deleted file mode 100644 index cf8c963c41..0000000000 --- a/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/EmojiCategoriesResource.kt +++ /dev/null @@ -1,153 +0,0 @@ -package com.majeur.inputmethod.tools.emoji - -import com.majeur.inputmethod.tools.emoji.model.EmojiData -import com.majeur.inputmethod.tools.emoji.model.EmojiGroup -import java.io.* -import java.nio.charset.Charset -import java.util.jar.JarFile - -class EmojiCategoriesResource(private val jarFile: JarFile) { - - fun writeToAndroidRes(outDir: String?, emojiData: EmojiData, supportData: Map) { - val template = JarUtils.getAndroidResTemplateResource(jarFile) - val resourceDir = template.substring(0, template.lastIndexOf('/')) - var ps: PrintStream? = null - var lnr: LineNumberReader? = null - try { - ps = if (outDir == null) { - System.out - } else { - val outDir = File(outDir, resourceDir) - val outputFile = File(outDir, - ANDROID_RES_TEMPLATE.replace(".tmpl", ".xml")) - outDir.mkdirs() - println("Building android resource file into ${outputFile.absoluteFile}") - PrintStream(outputFile, Charset.forName("UTF-8")) - } - lnr = LineNumberReader(InputStreamReader(JarUtils.openResource(template), Charset.forName("UTF-8"))) - inflateTemplate(lnr, ps!!, emojiData, supportData) - } catch (e: IOException) { - throw RuntimeException(e) - } finally { - JarUtils.close(lnr) - JarUtils.close(ps) - } - } - - @Throws(IOException::class) - private fun inflateTemplate(reader: LineNumberReader, out: PrintStream, - emojis: EmojiData, supportData: Map) { - reader.lines().forEach { - when { - it.contains(MARK_UNICODE_VER) -> - out.println(it.replace(MARK_UNICODE_VER, emojis.unicodeVersion)) - it.contains(MARK_API_LEVEL) -> - out.println(it.replace(MARK_API_LEVEL, supportData.values.maxOrNull().toString())) - it.contains(MARK_SMILEYS_AND_EMOTION) -> - dumpEmojiSpecs(out, emojis, supportData,EmojiGroup.SMILEYS_AND_EMOTION) - it.contains(MARK_PEOPLE_AND_BODY) -> - dumpEmojiSpecs(out, emojis, supportData,EmojiGroup.PEOPLE_AND_BODY) - it.contains(MARK_ANIMALS_AND_NATURE) -> - dumpEmojiSpecs(out, emojis, supportData,EmojiGroup.ANIMALS_AND_NATURE) - it.contains(MARK_FOOD_AND_DRINK) -> - dumpEmojiSpecs(out, emojis, supportData,EmojiGroup.FOOD_AND_DRINK) - it.contains(MARK_TRAVEL_AND_PLACES) -> - dumpEmojiSpecs(out, emojis, supportData,EmojiGroup.TRAVEL_AND_PLACES) - it.contains(MARK_ACTIVITIES) -> - dumpEmojiSpecs(out, emojis, supportData,EmojiGroup.ACTIVITIES) - it.contains(MARK_OBJECTS) -> - dumpEmojiSpecs(out, emojis, supportData,EmojiGroup.OBJECTS) - it.contains(MARK_SYMBOLS) -> - dumpEmojiSpecs(out, emojis, supportData,EmojiGroup.SYMBOLS) - it.contains(MARK_FLAGS) -> - dumpEmojiSpecs(out, emojis, supportData,EmojiGroup.FLAGS) - it.contains(MARK_PEOPLE_AND_BODY_MORE) -> - dumpEmojiSpecsVariant(out, emojis, supportData,EmojiGroup.PEOPLE_AND_BODY) - else -> out.println(it) - } - } - } - - private fun dumpEmojiSpecs(out: PrintStream, emojiData: EmojiData, supportData: Map, - group: EmojiGroup) { - emojiData[group].forEach { emoji -> - val minApi = getMinApi(emoji.codes, supportData) - if (minApi < 0) { - // We have no clue of which android version supports this emoji, - // so we ignore it. - printCompatNotFound(emoji.codes) - return@forEach - } - val text = makeEmojiKey(emoji.codes, minApi) - out.println(" $text") - } - } - - private fun dumpEmojiSpecsVariant(out: PrintStream, emojiData: EmojiData, supportData: Map, - group: EmojiGroup) { - emojiData[group].forEach { baseEmoji -> - val minApi = getMinApi(baseEmoji.codes, supportData) - if (minApi < 0) { - // Same thing, we already encountered it when dumping base emoji, - // ignoring this one silently. - return@forEach - } - - val text = baseEmoji.variants.filter { emoji -> - if (getMinApi(emoji.codes, supportData) < 0) { - // Again - printCompatNotFound(emoji.codes) - return@filter false - } - true - }.map { emoji -> - // Not very efficient, minApi is accessed twice, - // but hey, we are making tooling here - makeEmojiKey(emoji.codes, getMinApi(emoji.codes, supportData)) - }.filter { key -> - key.isNotBlank() - }.joinToString(separator = ";") - - if (text.isNotBlank()) out.println(" $text") - else out.println(" ") - } - } - - private fun makeEmojiKey(codes: IntArray, minApi: Int): String { - val cps = codes - .joinToString(separator = ",") { - it.toString(radix = 16) - .uppercase() - } - return if (minApi > 19) "$cps||$minApi" else cps - } - - private fun getMinApi(codes: IntArray, supportData: Map): Int { - val hash = codes - .joinToString(separator = "") - .hashCode() - return supportData[hash] ?: -1 - } - - private fun printCompatNotFound(codes: IntArray) { - val formattedCps = codes.joinToString(" ") { "U+" + it.toString(radix = 16).uppercase() } - println(" - No android compatibility found for emoji $formattedCps, ignoring...") - } - - companion object { - private const val ANDROID_RES_TEMPLATE = "emoji-categories.tmpl" - private const val MARK_UNICODE_VER = "@UNICODE_VERSION@" - private const val MARK_API_LEVEL = "@ANDROID_API_LEVEL@" - private const val MARK_SMILEYS_AND_EMOTION = "@SMILEYS_AND_EMOTION@" - private const val MARK_PEOPLE_AND_BODY = "@PEOPLE_AND_BODY@" - private const val MARK_PEOPLE_AND_BODY_MORE = "@PEOPLE_AND_BODY MORE@" - private const val MARK_ANIMALS_AND_NATURE = "@ANIMALS_AND_NATURE@" - private const val MARK_FOOD_AND_DRINK = "@FOOD_AND_DRINKS@" - private const val MARK_TRAVEL_AND_PLACES = "@TRAVEL_AND_PLACES@" - private const val MARK_ACTIVITIES = "@ACTIVITIES@" - private const val MARK_OBJECTS = "@OBJECTS@" - private const val MARK_SYMBOLS = "@SYMBOLS@" - private const val MARK_FLAGS = "@FLAGS@" - } - -} \ No newline at end of file diff --git a/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/EmojiUCDTestFileParser.kt b/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/EmojiUCDTestFileParser.kt index a15a9fd16a..317b68b218 100644 --- a/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/EmojiUCDTestFileParser.kt +++ b/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/EmojiUCDTestFileParser.kt @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: GPL-3.0-only + package com.majeur.inputmethod.tools.emoji import com.majeur.inputmethod.tools.emoji.model.EmojiData diff --git a/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/JarUtils.kt b/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/JarUtils.kt index da58175cd8..9203b1407b 100644 --- a/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/JarUtils.kt +++ b/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/JarUtils.kt @@ -1,18 +1,9 @@ /* * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only */ + package com.majeur.inputmethod.tools.emoji import java.io.Closeable @@ -20,7 +11,6 @@ import java.io.IOException import java.io.InputStream import java.io.UnsupportedEncodingException import java.net.URLDecoder -import java.util.HashMap import java.util.jar.JarFile import kotlin.RuntimeException @@ -82,7 +72,7 @@ object JarUtils { fun close(stream: Closeable?) { try { stream?.close() - } catch (e: IOException) { + } catch (_: IOException) { } } diff --git a/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/MakeEmojiKeys.kt b/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/MakeEmojiKeys.kt index 0a4358e761..ce11e9c505 100644 --- a/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/MakeEmojiKeys.kt +++ b/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/MakeEmojiKeys.kt @@ -1,5 +1,12 @@ +// SPDX-License-Identifier: GPL-3.0-only + package com.majeur.inputmethod.tools.emoji +import com.majeur.inputmethod.tools.emoji.model.EmojiData +import com.majeur.inputmethod.tools.emoji.model.EmojiGroup +import com.majeur.inputmethod.tools.emoji.model.EmojiSpec +import java.io.File +import java.nio.charset.Charset import java.util.* import kotlin.system.exitProcess @@ -7,9 +14,7 @@ class MakeEmojiKeys { class Options(argsArray: Array) { - private val OPTION_RES = "-res" - - var resPath: String? = null + var assetPath: String? = null init { val args = listOf(*argsArray).toMutableList() @@ -17,20 +22,20 @@ class MakeEmojiKeys { try { while (args.isNotEmpty()) { arg = args.removeFirst() - if (arg == OPTION_RES) { - resPath = args.removeFirst() + if (arg == OPTION_ASSETS) { + assetPath = args.removeFirst() } else { usage("Unknown option: $arg") } } - } catch (e: NoSuchElementException) { + } catch (_: NoSuchElementException) { usage("Option $arg needs argument") } } fun usage(message: String?) { message?.let { System.err.println(it) } - System.err.println("usage: make-emoji-keys $OPTION_RES ") + System.err.println("usage: make-emoji-keys $OPTION_ASSETS ") exitProcess(1) } } @@ -49,8 +54,54 @@ class MakeEmojiKeys { parser2.parse(JarUtils.getEmojiSupportResource(jar)) val supportData = parser2.getParsedData() - EmojiCategoriesResource(jar).writeToAndroidRes(options.resPath, emojis, supportData) + if (options.assetPath != null) { + writeMinApiLevels(options.assetPath!!, emojis, supportData) + writeEmojis(options.assetPath!!, emojis) + } + } + + private fun writeMinApiLevels(outDir: String, emojiData: EmojiData, supportData: Map) { + val minApiLevels = mutableMapOf>() + fun addMinLevel(emoji: EmojiSpec) { + val minApi = getMinApi(emoji.codes, supportData) + if (minApi < 0) + throw Exception("unknown min SDK for ${emoji.name}") + if (minApi > 21) + minApiLevels.getOrPut(minApi) { mutableSetOf() }.add(emoji.text) + } + + EmojiGroup.entries.filterNot { it == EmojiGroup.COMPONENT }.forEach { group -> + emojiData[group].forEach { emoji -> + addMinLevel(emoji) + emoji.variants.forEach { addMinLevel(it) } + } + } + if (minApiLevels.any { it.value.any { it.contains(" ") } }) + throw Exception("emoji contains space") + val text = minApiLevels.map { "${it.key} ${it.value.joinToString(" ")}" } + .sorted().joinToString("\n") + File(outDir, "minApi.txt").writeText(text, Charset.forName("UTF-8")) + } + + private fun writeEmojis(outDir: String, emojiData: EmojiData) { + // each category gets a file, one main emoji per line, followed by popups + EmojiGroup.entries.filterNot { it == EmojiGroup.COMPONENT } + .forEach { writeEmojiGroup(File(outDir, it.name + ".txt"), emojiData[it]) } + } + + private fun writeEmojiGroup(outFile: File, emojis: List) { + val text = emojis.joinToString("\n") { emoji -> + if (emoji.variants.isEmpty()) emoji.text + else "${emoji.text} ${emoji.variants.joinToString(" ") { it.text }}" + } + outFile.writeText(text, Charset.forName("UTF-8")) } + private fun getMinApi(codes: IntArray, supportData: Map): Int { + val hash = codes.joinToString("").hashCode() + return supportData[hash] ?: -1 + } } -} \ No newline at end of file +} + +private const val OPTION_ASSETS = "-assets" diff --git a/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/TextFileParser.kt b/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/TextFileParser.kt index ca911a9999..0d990008c1 100644 --- a/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/TextFileParser.kt +++ b/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/TextFileParser.kt @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: GPL-3.0-only + package com.majeur.inputmethod.tools.emoji import java.io.InputStreamReader diff --git a/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/model/EmojiData.kt b/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/model/EmojiData.kt index 538007d99e..d4f73733a4 100644 --- a/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/model/EmojiData.kt +++ b/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/model/EmojiData.kt @@ -1,5 +1,9 @@ +// SPDX-License-Identifier: GPL-3.0-only + package com.majeur.inputmethod.tools.emoji.model +import kotlin.collections.mutableSetOf + class EmojiData { var unicodeVersion = "" @@ -29,55 +33,21 @@ class EmojiData { } private fun onEmojiInserted(group: EmojiGroup, emoji: EmojiSpec): Boolean { - // Unicode RGI does not include letter symbols but Android supports them, so we inject them manually. - if (emoji.codes contentEquals RAW_CPS_KEYCAP_HASH) { - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_A), 2.0f, "regional indicator symbol letter a") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_B), 2.0f, "regional indicator symbol letter b") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_C), 2.0f, "regional indicator symbol letter c") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_D), 2.0f, "regional indicator symbol letter d") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_E), 2.0f, "regional indicator symbol letter e") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_F), 2.0f, "regional indicator symbol letter f") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_G), 2.0f, "regional indicator symbol letter g") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_H), 2.0f, "regional indicator symbol letter h") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_I), 2.0f, "regional indicator symbol letter i") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_J), 2.0f, "regional indicator symbol letter j") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_K), 2.0f, "regional indicator symbol letter k") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_L), 2.0f, "regional indicator symbol letter l") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_M), 2.0f, "regional indicator symbol letter m") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_N), 2.0f, "regional indicator symbol letter n") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_O), 2.0f, "regional indicator symbol letter o") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_P), 2.0f, "regional indicator symbol letter p") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_Q), 2.0f, "regional indicator symbol letter q") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_R), 2.0f, "regional indicator symbol letter r") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_S), 2.0f, "regional indicator symbol letter s") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_T), 2.0f, "regional indicator symbol letter t") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_U), 2.0f, "regional indicator symbol letter u") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_V), 2.0f, "regional indicator symbol letter v") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_W), 2.0f, "regional indicator symbol letter w") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_X), 2.0f, "regional indicator symbol letter x") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_Y), 2.0f, "regional indicator symbol letter y") - insertEmoji(group, intArrayOf(CP_REGIONAL_INDICATOR_SYMBOL_LETTER_Z), 2.0f, "regional indicator symbol letter z") - } - - if (hasMultipleSkinModifiers(emoji.codes)) { - // For now Openboard implementation is not robust enough to handle such complicated sequences. - // Emoji palettes get polluted with too much emoji variations, so we'll ignore them. - return false - } - - return true + // Some multi-skin-tone variants use a different base code than their non-multi-skin-tone counterparts, + // so they don't get grouped. We drop them here, to prevent each variant from being displayed separately. + return ! hasMultipleSkinModifiers(emoji.codes) } private fun hasMultipleSkinModifiers(codes: IntArray): Boolean { - var count = 0 + val tones = mutableSetOf() codes.forEach { when (it) { CP_LIGHT_SKIN_TONE, CP_MEDIUM_LIGHT_SKIN_TONE, CP_MEDIUM_SKIN_TONE, CP_MEDIUM_DARK_SKIN_TONE, CP_DARK_SKIN_TONE -> - count += 1 + tones.add(it) } } - return count > 1 + return tones.size > 1 } private fun onEmojiVariantInserted(group: EmojiGroup, baseSpec: EmojiSpec, emojiSpec: EmojiSpec): Boolean { @@ -97,31 +67,27 @@ class EmojiData { val baseCodePoints3 = emoji.codes.toMutableList() .apply { set(emoji.codes.indexOf(componentCode), CP_VARIANT_SELECTOR) }.toIntArray() - val base = emojiGroups[group]?.firstOrNull { it.codes contentEquals baseCodePoints } - ?: emojiGroups[group]?.firstOrNull { it.codes contentEquals baseCodePoints2 } - ?: emojiGroups[group]?.firstOrNull { it.codes contentEquals baseCodePoints3 } - - // We keep track the component modifier of this emoji - if (base != null) emoji.component = componentCode - - return base + return emojiGroups[group]?.firstOrNull { it.codes contentEquals baseCodePoints } + ?: emojiGroups[group]?.firstOrNull { it.codes contentEquals baseCodePoints2 } + ?: emojiGroups[group]?.firstOrNull { it.codes contentEquals baseCodePoints3 } } private fun withoutComponentCodes(codes: IntArray) : Pair { + var res = codes + var tone = CP_NUL codes.forEach { code -> when (code) { CP_LIGHT_SKIN_TONE, CP_MEDIUM_LIGHT_SKIN_TONE, CP_MEDIUM_SKIN_TONE, - CP_MEDIUM_DARK_SKIN_TONE, CP_DARK_SKIN_TONE -> - return codes.asList().minus(code).toIntArray() to code + CP_MEDIUM_DARK_SKIN_TONE, CP_DARK_SKIN_TONE -> { + res = res.asList().minus(code).toIntArray() + tone = code + } } } - return codes to CP_NUL + return res to tone } companion object { - - private val RAW_CPS_KEYCAP_HASH = intArrayOf(0x0023, 0xFE0F, 0x20E3) - const val CP_NUL = 0x0000 private const val CP_ZWJ = 0x200D @@ -137,34 +103,5 @@ class EmojiData { private const val CP_WHITE_HAIR = 0x1F9B3 private const val CP_BARLD = 0x1F9B2 private const val CP_VARIANT_SELECTOR = 0xFE0F - - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_A = 0x1F1E6 - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_B = 0x1F1E7 - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_C = 0x1F1E8 - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_D = 0x1F1E9 - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_E = 0x1F1EA - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_F = 0x1F1EB - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_G = 0x1F1EC - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_H = 0x1F1ED - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_I = 0x1F1EE - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_J = 0x1F1EF - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_K = 0x1F1F0 - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_L = 0x1F1F1 - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_M = 0x1F1F2 - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_N = 0x1F1F3 - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_O = 0x1F1F4 - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_P = 0x1F1F5 - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_Q = 0x1F1F6 - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_R = 0x1F1F7 - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_S = 0x1F1F8 - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_T = 0x1F1F9 - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_U = 0x1F1FA - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_V = 0x1F1FB - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_W = 0x1F1FC - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_X = 0x1F1FD - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_Y = 0x1F1FE - private const val CP_REGIONAL_INDICATOR_SYMBOL_LETTER_Z = 0x1F1FF } - - -} \ No newline at end of file +} diff --git a/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/model/EmojiGroup.kt b/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/model/EmojiGroup.kt index 57d5e15b34..2feecf71c3 100644 --- a/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/model/EmojiGroup.kt +++ b/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/model/EmojiGroup.kt @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: GPL-3.0-only + package com.majeur.inputmethod.tools.emoji.model enum class EmojiGroup(val rawName: String) { @@ -13,7 +15,7 @@ enum class EmojiGroup(val rawName: String) { FLAGS("Flags"); companion object { - fun get(rawName: String) = values().first { it.rawName == rawName } + fun get(rawName: String) = entries.first { it.rawName == rawName } } -} \ No newline at end of file +} diff --git a/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/model/EmojiSpec.kt b/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/model/EmojiSpec.kt index 91317df10a..f0081b2f5f 100644 --- a/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/model/EmojiSpec.kt +++ b/tools/make-emoji-keys/src/main/kotlin/com/majeur/inputmethod/tools/emoji/model/EmojiSpec.kt @@ -1,11 +1,9 @@ -package com.majeur.inputmethod.tools.emoji.model +// SPDX-License-Identifier: GPL-3.0-only -import com.majeur.inputmethod.tools.emoji.model.EmojiData.Companion.CP_NUL +package com.majeur.inputmethod.tools.emoji.model data class EmojiSpec(val codes: IntArray, val unicodeVer: Float, val name: String) { - var component = CP_NUL - val variants by lazy { mutableListOf() } override fun toString() = name @@ -17,5 +15,7 @@ data class EmojiSpec(val codes: IntArray, val unicodeVer: Float, val name: Strin return codes contentEquals other.codes } + val text get() = codes.joinToString("") { Character.toString(it) } + override fun hashCode() = codes.contentHashCode() -} \ No newline at end of file +} diff --git a/tools/make-emoji-keys/src/main/resources/emoji/android-emoji-support.txt b/tools/make-emoji-keys/src/main/resources/emoji/android-emoji-support.txt index f520accbde..baaf179885 100644 --- a/tools/make-emoji-keys/src/main/resources/emoji/android-emoji-support.txt +++ b/tools/make-emoji-keys/src/main/resources/emoji/android-emoji-support.txt @@ -15,6 +15,171 @@ # releasing new emojis through its Noto font, it might be more complicated to # keep track of new additions though Noto font. +@35 # Didn't find proper info from which Android version below emojis are supported, but judging by date, unicode 16.0 would be Android 15 (API level 35) +U+1FAE9 # face with bags under eyes +U+1FAC6 # fingerprint +U+1FABE # leafless tree +U+1FADC # root vegetable +U+1FA89 # harp +U+1FA8F # shovel +U+1FADF # splatter +U+1F1E8 U+1F1F6 # flag: sark +# Above emojis are presumably supported from Android 15 (API level 35), but maybe also for older versions with upgraded font + +@34 # Didn't find proper info from which Android version below emojis are supported, but judging by date, unicode 15.1 would be Android 14 (API level 34) +U+1F642 U+200D U+2194 U+FE0F # head shaking horizontally +U+1F642 U+200D U+2195 U+FE0F # head shaking vertically +U+1F6B6 U+200D U+27A1 U+FE0F # person walking facing right +U+1F6B6 U+1F3FB U+200D U+27A1 U+FE0F # person walking facing right: light skin tone +U+1F6B6 U+1F3FC U+200D U+27A1 U+FE0F # person walking facing right: medium-light skin tone +U+1F6B6 U+1F3FD U+200D U+27A1 U+FE0F # person walking facing right: medium skin tone +U+1F6B6 U+1F3FE U+200D U+27A1 U+FE0F # person walking facing right: medium-dark skin tone +U+1F6B6 U+1F3FF U+200D U+27A1 U+FE0F # person walking facing right: dark skin tone +U+1F6B6 U+200D U+2640 U+FE0F U+200D U+27A1 U+FE0F # woman walking facing right +U+1F6B6 U+1F3FB U+200D U+2640 U+FE0F U+200D U+27A1 U+FE0F # woman walking facing right: light skin tone +U+1F6B6 U+1F3FC U+200D U+2640 U+FE0F U+200D U+27A1 U+FE0F # woman walking facing right: medium-light skin tone +U+1F6B6 U+1F3FD U+200D U+2640 U+FE0F U+200D U+27A1 U+FE0F # woman walking facing right: medium skin tone +U+1F6B6 U+1F3FE U+200D U+2640 U+FE0F U+200D U+27A1 U+FE0F # woman walking facing right: medium-dark skin tone +U+1F6B6 U+1F3FF U+200D U+2640 U+FE0F U+200D U+27A1 U+FE0F # woman walking facing right: dark skin tone +U+1F6B6 U+200D U+2642 U+FE0F U+200D U+27A1 U+FE0F # man walking facing right +U+1F6B6 U+1F3FB U+200D U+2642 U+FE0F U+200D U+27A1 U+FE0F # man walking facing right: light skin tone +U+1F6B6 U+1F3FC U+200D U+2642 U+FE0F U+200D U+27A1 U+FE0F # man walking facing right: medium-light skin tone +U+1F6B6 U+1F3FD U+200D U+2642 U+FE0F U+200D U+27A1 U+FE0F # man walking facing right: medium skin tone +U+1F6B6 U+1F3FE U+200D U+2642 U+FE0F U+200D U+27A1 U+FE0F # man walking facing right: medium-dark skin tone +U+1F6B6 U+1F3FF U+200D U+2642 U+FE0F U+200D U+27A1 U+FE0F # man walking facing right: dark skin tone +U+1F9CE U+200D U+27A1 U+FE0F # person kneeling facing right +U+1F9CE U+1F3FB U+200D U+27A1 U+FE0F # person kneeling facing right: light skin tone +U+1F9CE U+1F3FC U+200D U+27A1 U+FE0F # person kneeling facing right: medium-light skin tone +U+1F9CE U+1F3FD U+200D U+27A1 U+FE0F # person kneeling facing right: medium skin tone +U+1F9CE U+1F3FE U+200D U+27A1 U+FE0F # person kneeling facing right: medium-dark skin tone +U+1F9CE U+1F3FF U+200D U+27A1 U+FE0F # person kneeling facing right: dark skin tone +U+1F9CE U+200D U+2640 U+FE0F U+200D U+27A1 U+FE0F # woman kneeling facing right +U+1F9CE U+1F3FB U+200D U+2640 U+FE0F U+200D U+27A1 U+FE0F # woman kneeling facing right: light skin tone +U+1F9CE U+1F3FC U+200D U+2640 U+FE0F U+200D U+27A1 U+FE0F # woman kneeling facing right: medium-light skin tone +U+1F9CE U+1F3FD U+200D U+2640 U+FE0F U+200D U+27A1 U+FE0F # woman kneeling facing right: medium skin tone +U+1F9CE U+1F3FE U+200D U+2640 U+FE0F U+200D U+27A1 U+FE0F # woman kneeling facing right: medium-dark skin tone +U+1F9CE U+1F3FF U+200D U+2640 U+FE0F U+200D U+27A1 U+FE0F # woman kneeling facing right: dark skin tone +U+1F9CE U+200D U+2642 U+FE0F U+200D U+27A1 U+FE0F # man kneeling facing right +U+1F9CE U+1F3FB U+200D U+2642 U+FE0F U+200D U+27A1 U+FE0F # man kneeling facing right: light skin tone +U+1F9CE U+1F3FC U+200D U+2642 U+FE0F U+200D U+27A1 U+FE0F # man kneeling facing right: medium-light skin tone +U+1F9CE U+1F3FD U+200D U+2642 U+FE0F U+200D U+27A1 U+FE0F # man kneeling facing right: medium skin tone +U+1F9CE U+1F3FE U+200D U+2642 U+FE0F U+200D U+27A1 U+FE0F # man kneeling facing right: medium-dark skin tone +U+1F9CE U+1F3FF U+200D U+2642 U+FE0F U+200D U+27A1 U+FE0F # man kneeling facing right: dark skin tone +U+1F9D1 U+200D U+1F9AF U+200D U+27A1 U+FE0F # person with white cane facing right +U+1F9D1 U+1F3FB U+200D U+1F9AF U+200D U+27A1 U+FE0F # person with white cane facing right: light skin tone +U+1F9D1 U+1F3FC U+200D U+1F9AF U+200D U+27A1 U+FE0F # person with white cane facing right: medium-light skin tone +U+1F9D1 U+1F3FD U+200D U+1F9AF U+200D U+27A1 U+FE0F # person with white cane facing right: medium skin tone +U+1F9D1 U+1F3FE U+200D U+1F9AF U+200D U+27A1 U+FE0F # person with white cane facing right: medium-dark skin tone +U+1F9D1 U+1F3FF U+200D U+1F9AF U+200D U+27A1 U+FE0F # person with white cane facing right: dark skin tone +U+1F468 U+200D U+1F9AF U+200D U+27A1 U+FE0F # man with white cane facing right +U+1F468 U+1F3FB U+200D U+1F9AF U+200D U+27A1 U+FE0F # man with white cane facing right: light skin tone +U+1F468 U+1F3FC U+200D U+1F9AF U+200D U+27A1 U+FE0F # man with white cane facing right: medium-light skin tone +U+1F468 U+1F3FD U+200D U+1F9AF U+200D U+27A1 U+FE0F # man with white cane facing right: medium skin tone +U+1F468 U+1F3FE U+200D U+1F9AF U+200D U+27A1 U+FE0F # man with white cane facing right: medium-dark skin tone +U+1F468 U+1F3FF U+200D U+1F9AF U+200D U+27A1 U+FE0F # man with white cane facing right: dark skin tone +U+1F469 U+200D U+1F9AF U+200D U+27A1 U+FE0F # woman with white cane facing right +U+1F469 U+1F3FB U+200D U+1F9AF U+200D U+27A1 U+FE0F # woman with white cane facing right: light skin tone +U+1F469 U+1F3FC U+200D U+1F9AF U+200D U+27A1 U+FE0F # woman with white cane facing right: medium-light skin tone +U+1F469 U+1F3FD U+200D U+1F9AF U+200D U+27A1 U+FE0F # woman with white cane facing right: medium skin tone +U+1F469 U+1F3FE U+200D U+1F9AF U+200D U+27A1 U+FE0F # woman with white cane facing right: medium-dark skin tone +U+1F469 U+1F3FF U+200D U+1F9AF U+200D U+27A1 U+FE0F # woman with white cane facing right: dark skin tone +U+1F9D1 U+200D U+1F9BC U+200D U+27A1 U+FE0F # person in motorized wheelchair facing right +U+1F9D1 U+1F3FB U+200D U+1F9BC U+200D U+27A1 U+FE0F # person in motorized wheelchair facing right: light skin tone +U+1F9D1 U+1F3FC U+200D U+1F9BC U+200D U+27A1 U+FE0F # person in motorized wheelchair facing right: medium-light skin tone +U+1F9D1 U+1F3FD U+200D U+1F9BC U+200D U+27A1 U+FE0F # person in motorized wheelchair facing right: medium skin tone +U+1F9D1 U+1F3FE U+200D U+1F9BC U+200D U+27A1 U+FE0F # person in motorized wheelchair facing right: medium-dark skin tone +U+1F9D1 U+1F3FF U+200D U+1F9BC U+200D U+27A1 U+FE0F # person in motorized wheelchair facing right: dark skin tone +U+1F468 U+200D U+1F9BC U+200D U+27A1 U+FE0F # man in motorized wheelchair facing right +U+1F468 U+1F3FB U+200D U+1F9BC U+200D U+27A1 U+FE0F # man in motorized wheelchair facing right: light skin tone +U+1F468 U+1F3FC U+200D U+1F9BC U+200D U+27A1 U+FE0F # man in motorized wheelchair facing right: medium-light skin tone +U+1F468 U+1F3FD U+200D U+1F9BC U+200D U+27A1 U+FE0F # man in motorized wheelchair facing right: medium skin tone +U+1F468 U+1F3FE U+200D U+1F9BC U+200D U+27A1 U+FE0F # man in motorized wheelchair facing right: medium-dark skin tone +U+1F468 U+1F3FF U+200D U+1F9BC U+200D U+27A1 U+FE0F # man in motorized wheelchair facing right: dark skin tone +U+1F469 U+200D U+1F9BC U+200D U+27A1 U+FE0F # woman in motorized wheelchair facing right +U+1F469 U+1F3FB U+200D U+1F9BC U+200D U+27A1 U+FE0F # woman in motorized wheelchair facing right: light skin tone +U+1F469 U+1F3FC U+200D U+1F9BC U+200D U+27A1 U+FE0F # woman in motorized wheelchair facing right: medium-light skin tone +U+1F469 U+1F3FD U+200D U+1F9BC U+200D U+27A1 U+FE0F # woman in motorized wheelchair facing right: medium skin tone +U+1F469 U+1F3FE U+200D U+1F9BC U+200D U+27A1 U+FE0F # woman in motorized wheelchair facing right: medium-dark skin tone +U+1F469 U+1F3FF U+200D U+1F9BC U+200D U+27A1 U+FE0F # woman in motorized wheelchair facing right: dark skin tone +U+1F9D1 U+200D U+1F9BD U+200D U+27A1 U+FE0F # person in manual wheelchair facing right +U+1F9D1 U+1F3FB U+200D U+1F9BD U+200D U+27A1 U+FE0F # person in manual wheelchair facing right: light skin tone +U+1F9D1 U+1F3FC U+200D U+1F9BD U+200D U+27A1 U+FE0F # person in manual wheelchair facing right: medium-light skin tone +U+1F9D1 U+1F3FD U+200D U+1F9BD U+200D U+27A1 U+FE0F # person in manual wheelchair facing right: medium skin tone +U+1F9D1 U+1F3FE U+200D U+1F9BD U+200D U+27A1 U+FE0F # person in manual wheelchair facing right: medium-dark skin tone +U+1F9D1 U+1F3FF U+200D U+1F9BD U+200D U+27A1 U+FE0F # person in manual wheelchair facing right: dark skin tone +U+1F468 U+200D U+1F9BD U+200D U+27A1 U+FE0F # man in manual wheelchair facing right +U+1F468 U+1F3FB U+200D U+1F9BD U+200D U+27A1 U+FE0F # man in manual wheelchair facing right: light skin tone +U+1F468 U+1F3FC U+200D U+1F9BD U+200D U+27A1 U+FE0F # man in manual wheelchair facing right: medium-light skin tone +U+1F468 U+1F3FD U+200D U+1F9BD U+200D U+27A1 U+FE0F # man in manual wheelchair facing right: medium skin tone +U+1F468 U+1F3FE U+200D U+1F9BD U+200D U+27A1 U+FE0F # man in manual wheelchair facing right: medium-dark skin tone +U+1F468 U+1F3FF U+200D U+1F9BD U+200D U+27A1 U+FE0F # man in manual wheelchair facing right: dark skin tone +U+1F469 U+200D U+1F9BD U+200D U+27A1 U+FE0F # woman in manual wheelchair facing right +U+1F469 U+1F3FB U+200D U+1F9BD U+200D U+27A1 U+FE0F # woman in manual wheelchair facing right: light skin tone +U+1F469 U+1F3FC U+200D U+1F9BD U+200D U+27A1 U+FE0F # woman in manual wheelchair facing right: medium-light skin tone +U+1F469 U+1F3FD U+200D U+1F9BD U+200D U+27A1 U+FE0F # woman in manual wheelchair facing right: medium skin tone +U+1F469 U+1F3FE U+200D U+1F9BD U+200D U+27A1 U+FE0F # woman in manual wheelchair facing right: medium-dark skin tone +U+1F469 U+1F3FF U+200D U+1F9BD U+200D U+27A1 U+FE0F # woman in manual wheelchair facing right: dark skin tone +U+1F3C3 U+200D U+27A1 U+FE0F # person running facing right +U+1F3C3 U+1F3FB U+200D U+27A1 U+FE0F # person running facing right: light skin tone +U+1F3C3 U+1F3FC U+200D U+27A1 U+FE0F # person running facing right: medium-light skin tone +U+1F3C3 U+1F3FD U+200D U+27A1 U+FE0F # person running facing right: medium skin tone +U+1F3C3 U+1F3FE U+200D U+27A1 U+FE0F # person running facing right: medium-dark skin tone +U+1F3C3 U+1F3FF U+200D U+27A1 U+FE0F # person running facing right: dark skin tone +U+1F3C3 U+200D U+2640 U+FE0F U+200D U+27A1 U+FE0F # woman running facing right +U+1F3C3 U+1F3FB U+200D U+2640 U+FE0F U+200D U+27A1 U+FE0F # woman running facing right: light skin tone +U+1F3C3 U+1F3FC U+200D U+2640 U+FE0F U+200D U+27A1 U+FE0F # woman running facing right: medium-light skin tone +U+1F3C3 U+1F3FD U+200D U+2640 U+FE0F U+200D U+27A1 U+FE0F # woman running facing right: medium skin tone +U+1F3C3 U+1F3FE U+200D U+2640 U+FE0F U+200D U+27A1 U+FE0F # woman running facing right: medium-dark skin tone +U+1F3C3 U+1F3FF U+200D U+2640 U+FE0F U+200D U+27A1 U+FE0F # woman running facing right: dark skin tone +U+1F3C3 U+200D U+2642 U+FE0F U+200D U+27A1 U+FE0F # man running facing right +U+1F3C3 U+1F3FB U+200D U+2642 U+FE0F U+200D U+27A1 U+FE0F # man running facing right: light skin tone +U+1F3C3 U+1F3FC U+200D U+2642 U+FE0F U+200D U+27A1 U+FE0F # man running facing right: medium-light skin tone +U+1F3C3 U+1F3FD U+200D U+2642 U+FE0F U+200D U+27A1 U+FE0F # man running facing right: medium skin tone +U+1F3C3 U+1F3FE U+200D U+2642 U+FE0F U+200D U+27A1 U+FE0F # man running facing right: medium-dark skin tone +U+1F3C3 U+1F3FF U+200D U+2642 U+FE0F U+200D U+27A1 U+FE0F # man running facing right: dark skin tone +U+1F9D1 U+200D U+1F9D1 U+200D U+1F9D2 # family: adult, adult, child +U+1F9D1 U+200D U+1F9D1 U+200D U+1F9D2 U+200D U+1F9D2 # family: adult, adult, child, child +U+1F9D1 U+200D U+1F9D2 # family: adult, child +U+1F9D1 U+200D U+1F9D2 U+200D U+1F9D2 # family: adult, child, child +U+1F426 U+200D U+1F525 # phoenix +U+1F34B U+200D U+1F7E9 # lime +U+1F344 U+200D U+1F7EB # brown mushroom +U+26D3 U+FE0F U+200D U+1F4A5 # broken chain +# Above emojis are presumably supported from Android 14 (API level 34), but maybe also for older versions with upgraded font + +@33 # Below emojis are supported from Android 13 (API level 33) +U+1FAE8 # shaking face +U+1FA77 # pink heart +U+1FA75 # light blue heart +U+1FA76 # grey heart +U+1FAF7 # leftwards pushing hand +U+1FAF7 U+1F3FB # leftwards pushing hand: light skin tone +U+1FAF7 U+1F3FC # leftwards pushing hand: medium-light skin tone +U+1FAF7 U+1F3FD # leftwards pushing hand: medium skin tone +U+1FAF7 U+1F3FE # leftwards pushing hand: medium-dark skin tone +U+1FAF7 U+1F3FF # leftwards pushing hand: dark skin tone +U+1FAF8 # rightwards pushing hand +U+1FAF8 U+1F3FB # rightwards pushing hand: light skin tone +U+1FAF8 U+1F3FC # rightwards pushing hand: medium-light skin tone +U+1FAF8 U+1F3FD # rightwards pushing hand: medium skin tone +U+1FAF8 U+1F3FE # rightwards pushing hand: medium-dark skin tone +U+1FAF8 U+1F3FF # rightwards pushing hand: dark skin tone +U+1FACE # moose +U+1FACF # donkey +U+1FABD # wing +U+1F426 U+200D U+2B1B # black bird +U+1FABF # goose +U+1FABC # jellyfish +U+1FABB # hyacinth +U+1FADA # ginger root +U+1FADB # pea pod +U+1FAAD # folding hand fan +U+1FAAE # hair pick +U+1FA87 # maracas +U+1FA88 # flute +U+1FAAF # khanda +U+1F6DC # wireless +# Above emojis are supported from Android 13 (API level 33) @32 # Below emojis are supported from Android 12l (API level 32) U+1FAE0 # melting face @@ -95,6 +260,7 @@ U+1FAC5 U+1F3FE # person with crown: medium-dark skin tone U+1FAC5 U+1F3FF # person with crown: dark skin tone U+1FAC3 # pregnant man U+1FAC3 U+1F3FB # pregnant man: light skin tone +U+1FAC3 U+1F3FC # pregnant man: medium-light skin tone U+1FAC3 U+1F3FD # pregnant man: medium skin tone U+1FAC3 U+1F3FE # pregnant man: medium-dark skin tone U+1FAC3 U+1F3FF # pregnant man: dark skin tone @@ -115,12 +281,12 @@ U+1FAD9 # jar U+1F6DD # playground slide U+1F6DE # wheel U+1F6DF # ring buoy -U+1FAAC # hamsa U+1FAA9 # mirror ball U+1FAAB # low battery U+1FA7C # crutch U+1FA7B # x-ray U+1FAE7 # bubbles +U+1FAAC # hamsa U+1FAAA # identification card U+1F7F0 # heavy equals sign # Above emojis are supported from Android 12l (API level 32) @@ -631,6 +797,18 @@ U+1FAA6 # headstone U+1FAA7 # placard U+26A7 U+FE0F # transgender symbol U+1F3F3 U+FE0F U+200D U+26A7 U+FE0F # transgender flag +U+1F1FE U+1F1F9 # flag: mayotte +U+1F1FC U+1F1EB # flag: wallis & futuna +U+1F1F5 U+1F1F2 # flag: st. pierre & miquelon +U+1F1F3 U+1F1E8 # flag: new caledonia +U+1F1F2 U+1F1EB # flag: st. martin +U+1F1EC U+1F1F8 # flag: south georgia & south sandwich islands +U+1F1EC U+1F1F5 # flag: guadeloupe +U+1F1EC U+1F1EB # flag: french guiana +U+1F1EB U+1F1F0 # flag: falkland islands +U+1F1EA U+1F1ED # flag: western sahara +U+1F1EA U+1F1E6 # flag: ceuta & melilla +U+1F1E9 U+1F1EC # flag: diego garcia # Above emojis are supported from Android 11.0 (API level 30) @29 # Below emojis are supported from Android 10.0 (API level 29) @@ -3688,31 +3866,5 @@ U+1F532 # black square button U+1F3C1 # chequered flag U+1F6A9 # triangular flag U+1F38C # crossed flags -U+1F1E6 # regional indicator symbol letter a -U+1F1E7 # regional indicator symbol letter b -U+1F1E8 # regional indicator symbol letter c -U+1F1E9 # regional indicator symbol letter d -U+1F1EA # regional indicator symbol letter e -U+1F1EB # regional indicator symbol letter f -U+1F1EC # regional indicator symbol letter g -U+1F1ED # regional indicator symbol letter h -U+1F1EE # regional indicator symbol letter i -U+1F1EF # regional indicator symbol letter j -U+1F1F0 # regional indicator symbol letter k -U+1F1F1 # regional indicator symbol letter l -U+1F1F2 # regional indicator symbol letter m -U+1F1F3 # regional indicator symbol letter n -U+1F1F4 # regional indicator symbol letter o -U+1F1F5 # regional indicator symbol letter p -U+1F1F6 # regional indicator symbol letter q -U+1F1F7 # regional indicator symbol letter r -U+1F1F8 # regional indicator symbol letter s -U+1F1F9 # regional indicator symbol letter t -U+1F1FA # regional indicator symbol letter u -U+1F1FB # regional indicator symbol letter v -U+1F1FC # regional indicator symbol letter w -U+1F1FD # regional indicator symbol letter x -U+1F1FE # regional indicator symbol letter y -U+1F1FF # regional indicator symbol letter z # Above emojis are supported from Android 4.4 (API level 19) diff --git a/tools/make-emoji-keys/src/main/resources/emoji/ucd/15.0/emoji-test.txt b/tools/make-emoji-keys/src/main/resources/emoji/ucd/15.0/emoji-test.txt new file mode 100644 index 0000000000..43f131120f --- /dev/null +++ b/tools/make-emoji-keys/src/main/resources/emoji/ucd/15.0/emoji-test.txt @@ -0,0 +1,5024 @@ +# emoji-test.txt +# Date: 2022-08-12, 20:24:39 GMT +# © 2022 Unicode®, Inc. +# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. +# For terms of use, see https://www.unicode.org/terms_of_use.html +# +# Emoji Keyboard/Display Test Data for UTS #51 +# Version: 15.0 +# +# For documentation and usage, see https://www.unicode.org/reports/tr51 +# +# This file provides data for testing which emoji forms should be in keyboards and which should also be displayed/processed. +# Format: code points; status # emoji name +# Code points — list of one or more hex code points, separated by spaces +# Status +# component — an Emoji_Component, +# excluding Regional_Indicators, ASCII, and non-Emoji. +# fully-qualified — a fully-qualified emoji (see ED-18 in UTS #51), +# excluding Emoji_Component +# minimally-qualified — a minimally-qualified emoji (see ED-18a in UTS #51) +# unqualified — a unqualified emoji (See ED-19 in UTS #51) +# Notes: +# • This includes the emoji components that need emoji presentation (skin tone and hair) +# when isolated, but omits the components that need not have an emoji +# presentation when isolated. +# • The RGI set is covered by the listed fully-qualified emoji. +# • The listed minimally-qualified and unqualified cover all cases where an +# element of the RGI set is missing one or more emoji presentation selectors. +# • The file is in CLDR order, not codepoint order. This is recommended (but not required!) for keyboard palettes. +# • The groups and subgroups are illustrative. See the Emoji Order chart for more information. + + +# group: Smileys & Emotion + +# subgroup: face-smiling +1F600 ; fully-qualified # 😀 E1.0 grinning face +1F603 ; fully-qualified # 😃 E0.6 grinning face with big eyes +1F604 ; fully-qualified # 😄 E0.6 grinning face with smiling eyes +1F601 ; fully-qualified # 😁 E0.6 beaming face with smiling eyes +1F606 ; fully-qualified # 😆 E0.6 grinning squinting face +1F605 ; fully-qualified # 😅 E0.6 grinning face with sweat +1F923 ; fully-qualified # 🤣 E3.0 rolling on the floor laughing +1F602 ; fully-qualified # 😂 E0.6 face with tears of joy +1F642 ; fully-qualified # 🙂 E1.0 slightly smiling face +1F643 ; fully-qualified # 🙃 E1.0 upside-down face +1FAE0 ; fully-qualified # 🫠 E14.0 melting face +1F609 ; fully-qualified # 😉 E0.6 winking face +1F60A ; fully-qualified # 😊 E0.6 smiling face with smiling eyes +1F607 ; fully-qualified # 😇 E1.0 smiling face with halo + +# subgroup: face-affection +1F970 ; fully-qualified # 🥰 E11.0 smiling face with hearts +1F60D ; fully-qualified # 😍 E0.6 smiling face with heart-eyes +1F929 ; fully-qualified # 🤩 E5.0 star-struck +1F618 ; fully-qualified # 😘 E0.6 face blowing a kiss +1F617 ; fully-qualified # 😗 E1.0 kissing face +263A FE0F ; fully-qualified # ☺️ E0.6 smiling face +263A ; unqualified # ☺ E0.6 smiling face +1F61A ; fully-qualified # 😚 E0.6 kissing face with closed eyes +1F619 ; fully-qualified # 😙 E1.0 kissing face with smiling eyes +1F972 ; fully-qualified # 🥲 E13.0 smiling face with tear + +# subgroup: face-tongue +1F60B ; fully-qualified # 😋 E0.6 face savoring food +1F61B ; fully-qualified # 😛 E1.0 face with tongue +1F61C ; fully-qualified # 😜 E0.6 winking face with tongue +1F92A ; fully-qualified # 🤪 E5.0 zany face +1F61D ; fully-qualified # 😝 E0.6 squinting face with tongue +1F911 ; fully-qualified # 🤑 E1.0 money-mouth face + +# subgroup: face-hand +1F917 ; fully-qualified # 🤗 E1.0 smiling face with open hands +1F92D ; fully-qualified # 🤭 E5.0 face with hand over mouth +1FAE2 ; fully-qualified # 🫢 E14.0 face with open eyes and hand over mouth +1FAE3 ; fully-qualified # 🫣 E14.0 face with peeking eye +1F92B ; fully-qualified # 🤫 E5.0 shushing face +1F914 ; fully-qualified # 🤔 E1.0 thinking face +1FAE1 ; fully-qualified # 🫡 E14.0 saluting face + +# subgroup: face-neutral-skeptical +1F910 ; fully-qualified # 🤐 E1.0 zipper-mouth face +1F928 ; fully-qualified # 🤨 E5.0 face with raised eyebrow +1F610 ; fully-qualified # 😐 E0.7 neutral face +1F611 ; fully-qualified # 😑 E1.0 expressionless face +1F636 ; fully-qualified # 😶 E1.0 face without mouth +1FAE5 ; fully-qualified # 🫥 E14.0 dotted line face +1F636 200D 1F32B FE0F ; fully-qualified # 😶‍🌫️ E13.1 face in clouds +1F636 200D 1F32B ; minimally-qualified # 😶‍🌫 E13.1 face in clouds +1F60F ; fully-qualified # 😏 E0.6 smirking face +1F612 ; fully-qualified # 😒 E0.6 unamused face +1F644 ; fully-qualified # 🙄 E1.0 face with rolling eyes +1F62C ; fully-qualified # 😬 E1.0 grimacing face +1F62E 200D 1F4A8 ; fully-qualified # 😮‍💨 E13.1 face exhaling +1F925 ; fully-qualified # 🤥 E3.0 lying face +1FAE8 ; fully-qualified # 🫨 E15.0 shaking face + +# subgroup: face-sleepy +1F60C ; fully-qualified # 😌 E0.6 relieved face +1F614 ; fully-qualified # 😔 E0.6 pensive face +1F62A ; fully-qualified # 😪 E0.6 sleepy face +1F924 ; fully-qualified # 🤤 E3.0 drooling face +1F634 ; fully-qualified # 😴 E1.0 sleeping face + +# subgroup: face-unwell +1F637 ; fully-qualified # 😷 E0.6 face with medical mask +1F912 ; fully-qualified # 🤒 E1.0 face with thermometer +1F915 ; fully-qualified # 🤕 E1.0 face with head-bandage +1F922 ; fully-qualified # 🤢 E3.0 nauseated face +1F92E ; fully-qualified # 🤮 E5.0 face vomiting +1F927 ; fully-qualified # 🤧 E3.0 sneezing face +1F975 ; fully-qualified # 🥵 E11.0 hot face +1F976 ; fully-qualified # 🥶 E11.0 cold face +1F974 ; fully-qualified # 🥴 E11.0 woozy face +1F635 ; fully-qualified # 😵 E0.6 face with crossed-out eyes +1F635 200D 1F4AB ; fully-qualified # 😵‍💫 E13.1 face with spiral eyes +1F92F ; fully-qualified # 🤯 E5.0 exploding head + +# subgroup: face-hat +1F920 ; fully-qualified # 🤠 E3.0 cowboy hat face +1F973 ; fully-qualified # 🥳 E11.0 partying face +1F978 ; fully-qualified # 🥸 E13.0 disguised face + +# subgroup: face-glasses +1F60E ; fully-qualified # 😎 E1.0 smiling face with sunglasses +1F913 ; fully-qualified # 🤓 E1.0 nerd face +1F9D0 ; fully-qualified # 🧐 E5.0 face with monocle + +# subgroup: face-concerned +1F615 ; fully-qualified # 😕 E1.0 confused face +1FAE4 ; fully-qualified # 🫤 E14.0 face with diagonal mouth +1F61F ; fully-qualified # 😟 E1.0 worried face +1F641 ; fully-qualified # 🙁 E1.0 slightly frowning face +2639 FE0F ; fully-qualified # ☹️ E0.7 frowning face +2639 ; unqualified # ☹ E0.7 frowning face +1F62E ; fully-qualified # 😮 E1.0 face with open mouth +1F62F ; fully-qualified # 😯 E1.0 hushed face +1F632 ; fully-qualified # 😲 E0.6 astonished face +1F633 ; fully-qualified # 😳 E0.6 flushed face +1F97A ; fully-qualified # 🥺 E11.0 pleading face +1F979 ; fully-qualified # 🥹 E14.0 face holding back tears +1F626 ; fully-qualified # 😦 E1.0 frowning face with open mouth +1F627 ; fully-qualified # 😧 E1.0 anguished face +1F628 ; fully-qualified # 😨 E0.6 fearful face +1F630 ; fully-qualified # 😰 E0.6 anxious face with sweat +1F625 ; fully-qualified # 😥 E0.6 sad but relieved face +1F622 ; fully-qualified # 😢 E0.6 crying face +1F62D ; fully-qualified # 😭 E0.6 loudly crying face +1F631 ; fully-qualified # 😱 E0.6 face screaming in fear +1F616 ; fully-qualified # 😖 E0.6 confounded face +1F623 ; fully-qualified # 😣 E0.6 persevering face +1F61E ; fully-qualified # 😞 E0.6 disappointed face +1F613 ; fully-qualified # 😓 E0.6 downcast face with sweat +1F629 ; fully-qualified # 😩 E0.6 weary face +1F62B ; fully-qualified # 😫 E0.6 tired face +1F971 ; fully-qualified # 🥱 E12.0 yawning face + +# subgroup: face-negative +1F624 ; fully-qualified # 😤 E0.6 face with steam from nose +1F621 ; fully-qualified # 😡 E0.6 enraged face +1F620 ; fully-qualified # 😠 E0.6 angry face +1F92C ; fully-qualified # 🤬 E5.0 face with symbols on mouth +1F608 ; fully-qualified # 😈 E1.0 smiling face with horns +1F47F ; fully-qualified # 👿 E0.6 angry face with horns +1F480 ; fully-qualified # 💀 E0.6 skull +2620 FE0F ; fully-qualified # ☠️ E1.0 skull and crossbones +2620 ; unqualified # ☠ E1.0 skull and crossbones + +# subgroup: face-costume +1F4A9 ; fully-qualified # 💩 E0.6 pile of poo +1F921 ; fully-qualified # 🤡 E3.0 clown face +1F479 ; fully-qualified # 👹 E0.6 ogre +1F47A ; fully-qualified # 👺 E0.6 goblin +1F47B ; fully-qualified # 👻 E0.6 ghost +1F47D ; fully-qualified # 👽 E0.6 alien +1F47E ; fully-qualified # 👾 E0.6 alien monster +1F916 ; fully-qualified # 🤖 E1.0 robot + +# subgroup: cat-face +1F63A ; fully-qualified # 😺 E0.6 grinning cat +1F638 ; fully-qualified # 😸 E0.6 grinning cat with smiling eyes +1F639 ; fully-qualified # 😹 E0.6 cat with tears of joy +1F63B ; fully-qualified # 😻 E0.6 smiling cat with heart-eyes +1F63C ; fully-qualified # 😼 E0.6 cat with wry smile +1F63D ; fully-qualified # 😽 E0.6 kissing cat +1F640 ; fully-qualified # 🙀 E0.6 weary cat +1F63F ; fully-qualified # 😿 E0.6 crying cat +1F63E ; fully-qualified # 😾 E0.6 pouting cat + +# subgroup: monkey-face +1F648 ; fully-qualified # 🙈 E0.6 see-no-evil monkey +1F649 ; fully-qualified # 🙉 E0.6 hear-no-evil monkey +1F64A ; fully-qualified # 🙊 E0.6 speak-no-evil monkey + +# subgroup: heart +1F48C ; fully-qualified # 💌 E0.6 love letter +1F498 ; fully-qualified # 💘 E0.6 heart with arrow +1F49D ; fully-qualified # 💝 E0.6 heart with ribbon +1F496 ; fully-qualified # 💖 E0.6 sparkling heart +1F497 ; fully-qualified # 💗 E0.6 growing heart +1F493 ; fully-qualified # 💓 E0.6 beating heart +1F49E ; fully-qualified # 💞 E0.6 revolving hearts +1F495 ; fully-qualified # 💕 E0.6 two hearts +1F49F ; fully-qualified # 💟 E0.6 heart decoration +2763 FE0F ; fully-qualified # ❣️ E1.0 heart exclamation +2763 ; unqualified # ❣ E1.0 heart exclamation +1F494 ; fully-qualified # 💔 E0.6 broken heart +2764 FE0F 200D 1F525 ; fully-qualified # ❤️‍🔥 E13.1 heart on fire +2764 200D 1F525 ; unqualified # ❤‍🔥 E13.1 heart on fire +2764 FE0F 200D 1FA79 ; fully-qualified # ❤️‍🩹 E13.1 mending heart +2764 200D 1FA79 ; unqualified # ❤‍🩹 E13.1 mending heart +2764 FE0F ; fully-qualified # ❤️ E0.6 red heart +2764 ; unqualified # ❤ E0.6 red heart +1FA77 ; fully-qualified # 🩷 E15.0 pink heart +1F9E1 ; fully-qualified # 🧡 E5.0 orange heart +1F49B ; fully-qualified # 💛 E0.6 yellow heart +1F49A ; fully-qualified # 💚 E0.6 green heart +1F499 ; fully-qualified # 💙 E0.6 blue heart +1FA75 ; fully-qualified # 🩵 E15.0 light blue heart +1F49C ; fully-qualified # 💜 E0.6 purple heart +1F90E ; fully-qualified # 🤎 E12.0 brown heart +1F5A4 ; fully-qualified # 🖤 E3.0 black heart +1FA76 ; fully-qualified # 🩶 E15.0 grey heart +1F90D ; fully-qualified # 🤍 E12.0 white heart + +# subgroup: emotion +1F48B ; fully-qualified # 💋 E0.6 kiss mark +1F4AF ; fully-qualified # 💯 E0.6 hundred points +1F4A2 ; fully-qualified # 💢 E0.6 anger symbol +1F4A5 ; fully-qualified # 💥 E0.6 collision +1F4AB ; fully-qualified # 💫 E0.6 dizzy +1F4A6 ; fully-qualified # 💦 E0.6 sweat droplets +1F4A8 ; fully-qualified # 💨 E0.6 dashing away +1F573 FE0F ; fully-qualified # 🕳️ E0.7 hole +1F573 ; unqualified # 🕳 E0.7 hole +1F4AC ; fully-qualified # 💬 E0.6 speech balloon +1F441 FE0F 200D 1F5E8 FE0F ; fully-qualified # 👁️‍🗨️ E2.0 eye in speech bubble +1F441 200D 1F5E8 FE0F ; unqualified # 👁‍🗨️ E2.0 eye in speech bubble +1F441 FE0F 200D 1F5E8 ; minimally-qualified # 👁️‍🗨 E2.0 eye in speech bubble +1F441 200D 1F5E8 ; unqualified # 👁‍🗨 E2.0 eye in speech bubble +1F5E8 FE0F ; fully-qualified # 🗨️ E2.0 left speech bubble +1F5E8 ; unqualified # 🗨 E2.0 left speech bubble +1F5EF FE0F ; fully-qualified # 🗯️ E0.7 right anger bubble +1F5EF ; unqualified # 🗯 E0.7 right anger bubble +1F4AD ; fully-qualified # 💭 E1.0 thought balloon +1F4A4 ; fully-qualified # 💤 E0.6 ZZZ + +# Smileys & Emotion subtotal: 180 +# Smileys & Emotion subtotal: 180 w/o modifiers + +# group: People & Body + +# subgroup: hand-fingers-open +1F44B ; fully-qualified # 👋 E0.6 waving hand +1F44B 1F3FB ; fully-qualified # 👋🏻 E1.0 waving hand: light skin tone +1F44B 1F3FC ; fully-qualified # 👋🏼 E1.0 waving hand: medium-light skin tone +1F44B 1F3FD ; fully-qualified # 👋🏽 E1.0 waving hand: medium skin tone +1F44B 1F3FE ; fully-qualified # 👋🏾 E1.0 waving hand: medium-dark skin tone +1F44B 1F3FF ; fully-qualified # 👋🏿 E1.0 waving hand: dark skin tone +1F91A ; fully-qualified # 🤚 E3.0 raised back of hand +1F91A 1F3FB ; fully-qualified # 🤚🏻 E3.0 raised back of hand: light skin tone +1F91A 1F3FC ; fully-qualified # 🤚🏼 E3.0 raised back of hand: medium-light skin tone +1F91A 1F3FD ; fully-qualified # 🤚🏽 E3.0 raised back of hand: medium skin tone +1F91A 1F3FE ; fully-qualified # 🤚🏾 E3.0 raised back of hand: medium-dark skin tone +1F91A 1F3FF ; fully-qualified # 🤚🏿 E3.0 raised back of hand: dark skin tone +1F590 FE0F ; fully-qualified # 🖐️ E0.7 hand with fingers splayed +1F590 ; unqualified # 🖐 E0.7 hand with fingers splayed +1F590 1F3FB ; fully-qualified # 🖐🏻 E1.0 hand with fingers splayed: light skin tone +1F590 1F3FC ; fully-qualified # 🖐🏼 E1.0 hand with fingers splayed: medium-light skin tone +1F590 1F3FD ; fully-qualified # 🖐🏽 E1.0 hand with fingers splayed: medium skin tone +1F590 1F3FE ; fully-qualified # 🖐🏾 E1.0 hand with fingers splayed: medium-dark skin tone +1F590 1F3FF ; fully-qualified # 🖐🏿 E1.0 hand with fingers splayed: dark skin tone +270B ; fully-qualified # ✋ E0.6 raised hand +270B 1F3FB ; fully-qualified # ✋🏻 E1.0 raised hand: light skin tone +270B 1F3FC ; fully-qualified # ✋🏼 E1.0 raised hand: medium-light skin tone +270B 1F3FD ; fully-qualified # ✋🏽 E1.0 raised hand: medium skin tone +270B 1F3FE ; fully-qualified # ✋🏾 E1.0 raised hand: medium-dark skin tone +270B 1F3FF ; fully-qualified # ✋🏿 E1.0 raised hand: dark skin tone +1F596 ; fully-qualified # 🖖 E1.0 vulcan salute +1F596 1F3FB ; fully-qualified # 🖖🏻 E1.0 vulcan salute: light skin tone +1F596 1F3FC ; fully-qualified # 🖖🏼 E1.0 vulcan salute: medium-light skin tone +1F596 1F3FD ; fully-qualified # 🖖🏽 E1.0 vulcan salute: medium skin tone +1F596 1F3FE ; fully-qualified # 🖖🏾 E1.0 vulcan salute: medium-dark skin tone +1F596 1F3FF ; fully-qualified # 🖖🏿 E1.0 vulcan salute: dark skin tone +1FAF1 ; fully-qualified # 🫱 E14.0 rightwards hand +1FAF1 1F3FB ; fully-qualified # 🫱🏻 E14.0 rightwards hand: light skin tone +1FAF1 1F3FC ; fully-qualified # 🫱🏼 E14.0 rightwards hand: medium-light skin tone +1FAF1 1F3FD ; fully-qualified # 🫱🏽 E14.0 rightwards hand: medium skin tone +1FAF1 1F3FE ; fully-qualified # 🫱🏾 E14.0 rightwards hand: medium-dark skin tone +1FAF1 1F3FF ; fully-qualified # 🫱🏿 E14.0 rightwards hand: dark skin tone +1FAF2 ; fully-qualified # 🫲 E14.0 leftwards hand +1FAF2 1F3FB ; fully-qualified # 🫲🏻 E14.0 leftwards hand: light skin tone +1FAF2 1F3FC ; fully-qualified # 🫲🏼 E14.0 leftwards hand: medium-light skin tone +1FAF2 1F3FD ; fully-qualified # 🫲🏽 E14.0 leftwards hand: medium skin tone +1FAF2 1F3FE ; fully-qualified # 🫲🏾 E14.0 leftwards hand: medium-dark skin tone +1FAF2 1F3FF ; fully-qualified # 🫲🏿 E14.0 leftwards hand: dark skin tone +1FAF3 ; fully-qualified # 🫳 E14.0 palm down hand +1FAF3 1F3FB ; fully-qualified # 🫳🏻 E14.0 palm down hand: light skin tone +1FAF3 1F3FC ; fully-qualified # 🫳🏼 E14.0 palm down hand: medium-light skin tone +1FAF3 1F3FD ; fully-qualified # 🫳🏽 E14.0 palm down hand: medium skin tone +1FAF3 1F3FE ; fully-qualified # 🫳🏾 E14.0 palm down hand: medium-dark skin tone +1FAF3 1F3FF ; fully-qualified # 🫳🏿 E14.0 palm down hand: dark skin tone +1FAF4 ; fully-qualified # 🫴 E14.0 palm up hand +1FAF4 1F3FB ; fully-qualified # 🫴🏻 E14.0 palm up hand: light skin tone +1FAF4 1F3FC ; fully-qualified # 🫴🏼 E14.0 palm up hand: medium-light skin tone +1FAF4 1F3FD ; fully-qualified # 🫴🏽 E14.0 palm up hand: medium skin tone +1FAF4 1F3FE ; fully-qualified # 🫴🏾 E14.0 palm up hand: medium-dark skin tone +1FAF4 1F3FF ; fully-qualified # 🫴🏿 E14.0 palm up hand: dark skin tone +1FAF7 ; fully-qualified # 🫷 E15.0 leftwards pushing hand +1FAF7 1F3FB ; fully-qualified # 🫷🏻 E15.0 leftwards pushing hand: light skin tone +1FAF7 1F3FC ; fully-qualified # 🫷🏼 E15.0 leftwards pushing hand: medium-light skin tone +1FAF7 1F3FD ; fully-qualified # 🫷🏽 E15.0 leftwards pushing hand: medium skin tone +1FAF7 1F3FE ; fully-qualified # 🫷🏾 E15.0 leftwards pushing hand: medium-dark skin tone +1FAF7 1F3FF ; fully-qualified # 🫷🏿 E15.0 leftwards pushing hand: dark skin tone +1FAF8 ; fully-qualified # 🫸 E15.0 rightwards pushing hand +1FAF8 1F3FB ; fully-qualified # 🫸🏻 E15.0 rightwards pushing hand: light skin tone +1FAF8 1F3FC ; fully-qualified # 🫸🏼 E15.0 rightwards pushing hand: medium-light skin tone +1FAF8 1F3FD ; fully-qualified # 🫸🏽 E15.0 rightwards pushing hand: medium skin tone +1FAF8 1F3FE ; fully-qualified # 🫸🏾 E15.0 rightwards pushing hand: medium-dark skin tone +1FAF8 1F3FF ; fully-qualified # 🫸🏿 E15.0 rightwards pushing hand: dark skin tone + +# subgroup: hand-fingers-partial +1F44C ; fully-qualified # 👌 E0.6 OK hand +1F44C 1F3FB ; fully-qualified # 👌🏻 E1.0 OK hand: light skin tone +1F44C 1F3FC ; fully-qualified # 👌🏼 E1.0 OK hand: medium-light skin tone +1F44C 1F3FD ; fully-qualified # 👌🏽 E1.0 OK hand: medium skin tone +1F44C 1F3FE ; fully-qualified # 👌🏾 E1.0 OK hand: medium-dark skin tone +1F44C 1F3FF ; fully-qualified # 👌🏿 E1.0 OK hand: dark skin tone +1F90C ; fully-qualified # 🤌 E13.0 pinched fingers +1F90C 1F3FB ; fully-qualified # 🤌🏻 E13.0 pinched fingers: light skin tone +1F90C 1F3FC ; fully-qualified # 🤌🏼 E13.0 pinched fingers: medium-light skin tone +1F90C 1F3FD ; fully-qualified # 🤌🏽 E13.0 pinched fingers: medium skin tone +1F90C 1F3FE ; fully-qualified # 🤌🏾 E13.0 pinched fingers: medium-dark skin tone +1F90C 1F3FF ; fully-qualified # 🤌🏿 E13.0 pinched fingers: dark skin tone +1F90F ; fully-qualified # 🤏 E12.0 pinching hand +1F90F 1F3FB ; fully-qualified # 🤏🏻 E12.0 pinching hand: light skin tone +1F90F 1F3FC ; fully-qualified # 🤏🏼 E12.0 pinching hand: medium-light skin tone +1F90F 1F3FD ; fully-qualified # 🤏🏽 E12.0 pinching hand: medium skin tone +1F90F 1F3FE ; fully-qualified # 🤏🏾 E12.0 pinching hand: medium-dark skin tone +1F90F 1F3FF ; fully-qualified # 🤏🏿 E12.0 pinching hand: dark skin tone +270C FE0F ; fully-qualified # ✌️ E0.6 victory hand +270C ; unqualified # ✌ E0.6 victory hand +270C 1F3FB ; fully-qualified # ✌🏻 E1.0 victory hand: light skin tone +270C 1F3FC ; fully-qualified # ✌🏼 E1.0 victory hand: medium-light skin tone +270C 1F3FD ; fully-qualified # ✌🏽 E1.0 victory hand: medium skin tone +270C 1F3FE ; fully-qualified # ✌🏾 E1.0 victory hand: medium-dark skin tone +270C 1F3FF ; fully-qualified # ✌🏿 E1.0 victory hand: dark skin tone +1F91E ; fully-qualified # 🤞 E3.0 crossed fingers +1F91E 1F3FB ; fully-qualified # 🤞🏻 E3.0 crossed fingers: light skin tone +1F91E 1F3FC ; fully-qualified # 🤞🏼 E3.0 crossed fingers: medium-light skin tone +1F91E 1F3FD ; fully-qualified # 🤞🏽 E3.0 crossed fingers: medium skin tone +1F91E 1F3FE ; fully-qualified # 🤞🏾 E3.0 crossed fingers: medium-dark skin tone +1F91E 1F3FF ; fully-qualified # 🤞🏿 E3.0 crossed fingers: dark skin tone +1FAF0 ; fully-qualified # 🫰 E14.0 hand with index finger and thumb crossed +1FAF0 1F3FB ; fully-qualified # 🫰🏻 E14.0 hand with index finger and thumb crossed: light skin tone +1FAF0 1F3FC ; fully-qualified # 🫰🏼 E14.0 hand with index finger and thumb crossed: medium-light skin tone +1FAF0 1F3FD ; fully-qualified # 🫰🏽 E14.0 hand with index finger and thumb crossed: medium skin tone +1FAF0 1F3FE ; fully-qualified # 🫰🏾 E14.0 hand with index finger and thumb crossed: medium-dark skin tone +1FAF0 1F3FF ; fully-qualified # 🫰🏿 E14.0 hand with index finger and thumb crossed: dark skin tone +1F91F ; fully-qualified # 🤟 E5.0 love-you gesture +1F91F 1F3FB ; fully-qualified # 🤟🏻 E5.0 love-you gesture: light skin tone +1F91F 1F3FC ; fully-qualified # 🤟🏼 E5.0 love-you gesture: medium-light skin tone +1F91F 1F3FD ; fully-qualified # 🤟🏽 E5.0 love-you gesture: medium skin tone +1F91F 1F3FE ; fully-qualified # 🤟🏾 E5.0 love-you gesture: medium-dark skin tone +1F91F 1F3FF ; fully-qualified # 🤟🏿 E5.0 love-you gesture: dark skin tone +1F918 ; fully-qualified # 🤘 E1.0 sign of the horns +1F918 1F3FB ; fully-qualified # 🤘🏻 E1.0 sign of the horns: light skin tone +1F918 1F3FC ; fully-qualified # 🤘🏼 E1.0 sign of the horns: medium-light skin tone +1F918 1F3FD ; fully-qualified # 🤘🏽 E1.0 sign of the horns: medium skin tone +1F918 1F3FE ; fully-qualified # 🤘🏾 E1.0 sign of the horns: medium-dark skin tone +1F918 1F3FF ; fully-qualified # 🤘🏿 E1.0 sign of the horns: dark skin tone +1F919 ; fully-qualified # 🤙 E3.0 call me hand +1F919 1F3FB ; fully-qualified # 🤙🏻 E3.0 call me hand: light skin tone +1F919 1F3FC ; fully-qualified # 🤙🏼 E3.0 call me hand: medium-light skin tone +1F919 1F3FD ; fully-qualified # 🤙🏽 E3.0 call me hand: medium skin tone +1F919 1F3FE ; fully-qualified # 🤙🏾 E3.0 call me hand: medium-dark skin tone +1F919 1F3FF ; fully-qualified # 🤙🏿 E3.0 call me hand: dark skin tone + +# subgroup: hand-single-finger +1F448 ; fully-qualified # 👈 E0.6 backhand index pointing left +1F448 1F3FB ; fully-qualified # 👈🏻 E1.0 backhand index pointing left: light skin tone +1F448 1F3FC ; fully-qualified # 👈🏼 E1.0 backhand index pointing left: medium-light skin tone +1F448 1F3FD ; fully-qualified # 👈🏽 E1.0 backhand index pointing left: medium skin tone +1F448 1F3FE ; fully-qualified # 👈🏾 E1.0 backhand index pointing left: medium-dark skin tone +1F448 1F3FF ; fully-qualified # 👈🏿 E1.0 backhand index pointing left: dark skin tone +1F449 ; fully-qualified # 👉 E0.6 backhand index pointing right +1F449 1F3FB ; fully-qualified # 👉🏻 E1.0 backhand index pointing right: light skin tone +1F449 1F3FC ; fully-qualified # 👉🏼 E1.0 backhand index pointing right: medium-light skin tone +1F449 1F3FD ; fully-qualified # 👉🏽 E1.0 backhand index pointing right: medium skin tone +1F449 1F3FE ; fully-qualified # 👉🏾 E1.0 backhand index pointing right: medium-dark skin tone +1F449 1F3FF ; fully-qualified # 👉🏿 E1.0 backhand index pointing right: dark skin tone +1F446 ; fully-qualified # 👆 E0.6 backhand index pointing up +1F446 1F3FB ; fully-qualified # 👆🏻 E1.0 backhand index pointing up: light skin tone +1F446 1F3FC ; fully-qualified # 👆🏼 E1.0 backhand index pointing up: medium-light skin tone +1F446 1F3FD ; fully-qualified # 👆🏽 E1.0 backhand index pointing up: medium skin tone +1F446 1F3FE ; fully-qualified # 👆🏾 E1.0 backhand index pointing up: medium-dark skin tone +1F446 1F3FF ; fully-qualified # 👆🏿 E1.0 backhand index pointing up: dark skin tone +1F595 ; fully-qualified # 🖕 E1.0 middle finger +1F595 1F3FB ; fully-qualified # 🖕🏻 E1.0 middle finger: light skin tone +1F595 1F3FC ; fully-qualified # 🖕🏼 E1.0 middle finger: medium-light skin tone +1F595 1F3FD ; fully-qualified # 🖕🏽 E1.0 middle finger: medium skin tone +1F595 1F3FE ; fully-qualified # 🖕🏾 E1.0 middle finger: medium-dark skin tone +1F595 1F3FF ; fully-qualified # 🖕🏿 E1.0 middle finger: dark skin tone +1F447 ; fully-qualified # 👇 E0.6 backhand index pointing down +1F447 1F3FB ; fully-qualified # 👇🏻 E1.0 backhand index pointing down: light skin tone +1F447 1F3FC ; fully-qualified # 👇🏼 E1.0 backhand index pointing down: medium-light skin tone +1F447 1F3FD ; fully-qualified # 👇🏽 E1.0 backhand index pointing down: medium skin tone +1F447 1F3FE ; fully-qualified # 👇🏾 E1.0 backhand index pointing down: medium-dark skin tone +1F447 1F3FF ; fully-qualified # 👇🏿 E1.0 backhand index pointing down: dark skin tone +261D FE0F ; fully-qualified # ☝️ E0.6 index pointing up +261D ; unqualified # ☝ E0.6 index pointing up +261D 1F3FB ; fully-qualified # ☝🏻 E1.0 index pointing up: light skin tone +261D 1F3FC ; fully-qualified # ☝🏼 E1.0 index pointing up: medium-light skin tone +261D 1F3FD ; fully-qualified # ☝🏽 E1.0 index pointing up: medium skin tone +261D 1F3FE ; fully-qualified # ☝🏾 E1.0 index pointing up: medium-dark skin tone +261D 1F3FF ; fully-qualified # ☝🏿 E1.0 index pointing up: dark skin tone +1FAF5 ; fully-qualified # 🫵 E14.0 index pointing at the viewer +1FAF5 1F3FB ; fully-qualified # 🫵🏻 E14.0 index pointing at the viewer: light skin tone +1FAF5 1F3FC ; fully-qualified # 🫵🏼 E14.0 index pointing at the viewer: medium-light skin tone +1FAF5 1F3FD ; fully-qualified # 🫵🏽 E14.0 index pointing at the viewer: medium skin tone +1FAF5 1F3FE ; fully-qualified # 🫵🏾 E14.0 index pointing at the viewer: medium-dark skin tone +1FAF5 1F3FF ; fully-qualified # 🫵🏿 E14.0 index pointing at the viewer: dark skin tone + +# subgroup: hand-fingers-closed +1F44D ; fully-qualified # 👍 E0.6 thumbs up +1F44D 1F3FB ; fully-qualified # 👍🏻 E1.0 thumbs up: light skin tone +1F44D 1F3FC ; fully-qualified # 👍🏼 E1.0 thumbs up: medium-light skin tone +1F44D 1F3FD ; fully-qualified # 👍🏽 E1.0 thumbs up: medium skin tone +1F44D 1F3FE ; fully-qualified # 👍🏾 E1.0 thumbs up: medium-dark skin tone +1F44D 1F3FF ; fully-qualified # 👍🏿 E1.0 thumbs up: dark skin tone +1F44E ; fully-qualified # 👎 E0.6 thumbs down +1F44E 1F3FB ; fully-qualified # 👎🏻 E1.0 thumbs down: light skin tone +1F44E 1F3FC ; fully-qualified # 👎🏼 E1.0 thumbs down: medium-light skin tone +1F44E 1F3FD ; fully-qualified # 👎🏽 E1.0 thumbs down: medium skin tone +1F44E 1F3FE ; fully-qualified # 👎🏾 E1.0 thumbs down: medium-dark skin tone +1F44E 1F3FF ; fully-qualified # 👎🏿 E1.0 thumbs down: dark skin tone +270A ; fully-qualified # ✊ E0.6 raised fist +270A 1F3FB ; fully-qualified # ✊🏻 E1.0 raised fist: light skin tone +270A 1F3FC ; fully-qualified # ✊🏼 E1.0 raised fist: medium-light skin tone +270A 1F3FD ; fully-qualified # ✊🏽 E1.0 raised fist: medium skin tone +270A 1F3FE ; fully-qualified # ✊🏾 E1.0 raised fist: medium-dark skin tone +270A 1F3FF ; fully-qualified # ✊🏿 E1.0 raised fist: dark skin tone +1F44A ; fully-qualified # 👊 E0.6 oncoming fist +1F44A 1F3FB ; fully-qualified # 👊🏻 E1.0 oncoming fist: light skin tone +1F44A 1F3FC ; fully-qualified # 👊🏼 E1.0 oncoming fist: medium-light skin tone +1F44A 1F3FD ; fully-qualified # 👊🏽 E1.0 oncoming fist: medium skin tone +1F44A 1F3FE ; fully-qualified # 👊🏾 E1.0 oncoming fist: medium-dark skin tone +1F44A 1F3FF ; fully-qualified # 👊🏿 E1.0 oncoming fist: dark skin tone +1F91B ; fully-qualified # 🤛 E3.0 left-facing fist +1F91B 1F3FB ; fully-qualified # 🤛🏻 E3.0 left-facing fist: light skin tone +1F91B 1F3FC ; fully-qualified # 🤛🏼 E3.0 left-facing fist: medium-light skin tone +1F91B 1F3FD ; fully-qualified # 🤛🏽 E3.0 left-facing fist: medium skin tone +1F91B 1F3FE ; fully-qualified # 🤛🏾 E3.0 left-facing fist: medium-dark skin tone +1F91B 1F3FF ; fully-qualified # 🤛🏿 E3.0 left-facing fist: dark skin tone +1F91C ; fully-qualified # 🤜 E3.0 right-facing fist +1F91C 1F3FB ; fully-qualified # 🤜🏻 E3.0 right-facing fist: light skin tone +1F91C 1F3FC ; fully-qualified # 🤜🏼 E3.0 right-facing fist: medium-light skin tone +1F91C 1F3FD ; fully-qualified # 🤜🏽 E3.0 right-facing fist: medium skin tone +1F91C 1F3FE ; fully-qualified # 🤜🏾 E3.0 right-facing fist: medium-dark skin tone +1F91C 1F3FF ; fully-qualified # 🤜🏿 E3.0 right-facing fist: dark skin tone + +# subgroup: hands +1F44F ; fully-qualified # 👏 E0.6 clapping hands +1F44F 1F3FB ; fully-qualified # 👏🏻 E1.0 clapping hands: light skin tone +1F44F 1F3FC ; fully-qualified # 👏🏼 E1.0 clapping hands: medium-light skin tone +1F44F 1F3FD ; fully-qualified # 👏🏽 E1.0 clapping hands: medium skin tone +1F44F 1F3FE ; fully-qualified # 👏🏾 E1.0 clapping hands: medium-dark skin tone +1F44F 1F3FF ; fully-qualified # 👏🏿 E1.0 clapping hands: dark skin tone +1F64C ; fully-qualified # 🙌 E0.6 raising hands +1F64C 1F3FB ; fully-qualified # 🙌🏻 E1.0 raising hands: light skin tone +1F64C 1F3FC ; fully-qualified # 🙌🏼 E1.0 raising hands: medium-light skin tone +1F64C 1F3FD ; fully-qualified # 🙌🏽 E1.0 raising hands: medium skin tone +1F64C 1F3FE ; fully-qualified # 🙌🏾 E1.0 raising hands: medium-dark skin tone +1F64C 1F3FF ; fully-qualified # 🙌🏿 E1.0 raising hands: dark skin tone +1FAF6 ; fully-qualified # 🫶 E14.0 heart hands +1FAF6 1F3FB ; fully-qualified # 🫶🏻 E14.0 heart hands: light skin tone +1FAF6 1F3FC ; fully-qualified # 🫶🏼 E14.0 heart hands: medium-light skin tone +1FAF6 1F3FD ; fully-qualified # 🫶🏽 E14.0 heart hands: medium skin tone +1FAF6 1F3FE ; fully-qualified # 🫶🏾 E14.0 heart hands: medium-dark skin tone +1FAF6 1F3FF ; fully-qualified # 🫶🏿 E14.0 heart hands: dark skin tone +1F450 ; fully-qualified # 👐 E0.6 open hands +1F450 1F3FB ; fully-qualified # 👐🏻 E1.0 open hands: light skin tone +1F450 1F3FC ; fully-qualified # 👐🏼 E1.0 open hands: medium-light skin tone +1F450 1F3FD ; fully-qualified # 👐🏽 E1.0 open hands: medium skin tone +1F450 1F3FE ; fully-qualified # 👐🏾 E1.0 open hands: medium-dark skin tone +1F450 1F3FF ; fully-qualified # 👐🏿 E1.0 open hands: dark skin tone +1F932 ; fully-qualified # 🤲 E5.0 palms up together +1F932 1F3FB ; fully-qualified # 🤲🏻 E5.0 palms up together: light skin tone +1F932 1F3FC ; fully-qualified # 🤲🏼 E5.0 palms up together: medium-light skin tone +1F932 1F3FD ; fully-qualified # 🤲🏽 E5.0 palms up together: medium skin tone +1F932 1F3FE ; fully-qualified # 🤲🏾 E5.0 palms up together: medium-dark skin tone +1F932 1F3FF ; fully-qualified # 🤲🏿 E5.0 palms up together: dark skin tone +1F91D ; fully-qualified # 🤝 E3.0 handshake +1F91D 1F3FB ; fully-qualified # 🤝🏻 E14.0 handshake: light skin tone +1F91D 1F3FC ; fully-qualified # 🤝🏼 E14.0 handshake: medium-light skin tone +1F91D 1F3FD ; fully-qualified # 🤝🏽 E14.0 handshake: medium skin tone +1F91D 1F3FE ; fully-qualified # 🤝🏾 E14.0 handshake: medium-dark skin tone +1F91D 1F3FF ; fully-qualified # 🤝🏿 E14.0 handshake: dark skin tone +1FAF1 1F3FB 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏻‍🫲🏼 E14.0 handshake: light skin tone, medium-light skin tone +1FAF1 1F3FB 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏻‍🫲🏽 E14.0 handshake: light skin tone, medium skin tone +1FAF1 1F3FB 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏻‍🫲🏾 E14.0 handshake: light skin tone, medium-dark skin tone +1FAF1 1F3FB 200D 1FAF2 1F3FF ; fully-qualified # 🫱🏻‍🫲🏿 E14.0 handshake: light skin tone, dark skin tone +1FAF1 1F3FC 200D 1FAF2 1F3FB ; fully-qualified # 🫱🏼‍🫲🏻 E14.0 handshake: medium-light skin tone, light skin tone +1FAF1 1F3FC 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏼‍🫲🏽 E14.0 handshake: medium-light skin tone, medium skin tone +1FAF1 1F3FC 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏼‍🫲🏾 E14.0 handshake: medium-light skin tone, medium-dark skin tone +1FAF1 1F3FC 200D 1FAF2 1F3FF ; fully-qualified # 🫱🏼‍🫲🏿 E14.0 handshake: medium-light skin tone, dark skin tone +1FAF1 1F3FD 200D 1FAF2 1F3FB ; fully-qualified # 🫱🏽‍🫲🏻 E14.0 handshake: medium skin tone, light skin tone +1FAF1 1F3FD 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏽‍🫲🏼 E14.0 handshake: medium skin tone, medium-light skin tone +1FAF1 1F3FD 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏽‍🫲🏾 E14.0 handshake: medium skin tone, medium-dark skin tone +1FAF1 1F3FD 200D 1FAF2 1F3FF ; fully-qualified # 🫱🏽‍🫲🏿 E14.0 handshake: medium skin tone, dark skin tone +1FAF1 1F3FE 200D 1FAF2 1F3FB ; fully-qualified # 🫱🏾‍🫲🏻 E14.0 handshake: medium-dark skin tone, light skin tone +1FAF1 1F3FE 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏾‍🫲🏼 E14.0 handshake: medium-dark skin tone, medium-light skin tone +1FAF1 1F3FE 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏾‍🫲🏽 E14.0 handshake: medium-dark skin tone, medium skin tone +1FAF1 1F3FE 200D 1FAF2 1F3FF ; fully-qualified # 🫱🏾‍🫲🏿 E14.0 handshake: medium-dark skin tone, dark skin tone +1FAF1 1F3FF 200D 1FAF2 1F3FB ; fully-qualified # 🫱🏿‍🫲🏻 E14.0 handshake: dark skin tone, light skin tone +1FAF1 1F3FF 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏿‍🫲🏼 E14.0 handshake: dark skin tone, medium-light skin tone +1FAF1 1F3FF 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏿‍🫲🏽 E14.0 handshake: dark skin tone, medium skin tone +1FAF1 1F3FF 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏿‍🫲🏾 E14.0 handshake: dark skin tone, medium-dark skin tone +1F64F ; fully-qualified # 🙏 E0.6 folded hands +1F64F 1F3FB ; fully-qualified # 🙏🏻 E1.0 folded hands: light skin tone +1F64F 1F3FC ; fully-qualified # 🙏🏼 E1.0 folded hands: medium-light skin tone +1F64F 1F3FD ; fully-qualified # 🙏🏽 E1.0 folded hands: medium skin tone +1F64F 1F3FE ; fully-qualified # 🙏🏾 E1.0 folded hands: medium-dark skin tone +1F64F 1F3FF ; fully-qualified # 🙏🏿 E1.0 folded hands: dark skin tone + +# subgroup: hand-prop +270D FE0F ; fully-qualified # ✍️ E0.7 writing hand +270D ; unqualified # ✍ E0.7 writing hand +270D 1F3FB ; fully-qualified # ✍🏻 E1.0 writing hand: light skin tone +270D 1F3FC ; fully-qualified # ✍🏼 E1.0 writing hand: medium-light skin tone +270D 1F3FD ; fully-qualified # ✍🏽 E1.0 writing hand: medium skin tone +270D 1F3FE ; fully-qualified # ✍🏾 E1.0 writing hand: medium-dark skin tone +270D 1F3FF ; fully-qualified # ✍🏿 E1.0 writing hand: dark skin tone +1F485 ; fully-qualified # 💅 E0.6 nail polish +1F485 1F3FB ; fully-qualified # 💅🏻 E1.0 nail polish: light skin tone +1F485 1F3FC ; fully-qualified # 💅🏼 E1.0 nail polish: medium-light skin tone +1F485 1F3FD ; fully-qualified # 💅🏽 E1.0 nail polish: medium skin tone +1F485 1F3FE ; fully-qualified # 💅🏾 E1.0 nail polish: medium-dark skin tone +1F485 1F3FF ; fully-qualified # 💅🏿 E1.0 nail polish: dark skin tone +1F933 ; fully-qualified # 🤳 E3.0 selfie +1F933 1F3FB ; fully-qualified # 🤳🏻 E3.0 selfie: light skin tone +1F933 1F3FC ; fully-qualified # 🤳🏼 E3.0 selfie: medium-light skin tone +1F933 1F3FD ; fully-qualified # 🤳🏽 E3.0 selfie: medium skin tone +1F933 1F3FE ; fully-qualified # 🤳🏾 E3.0 selfie: medium-dark skin tone +1F933 1F3FF ; fully-qualified # 🤳🏿 E3.0 selfie: dark skin tone + +# subgroup: body-parts +1F4AA ; fully-qualified # 💪 E0.6 flexed biceps +1F4AA 1F3FB ; fully-qualified # 💪🏻 E1.0 flexed biceps: light skin tone +1F4AA 1F3FC ; fully-qualified # 💪🏼 E1.0 flexed biceps: medium-light skin tone +1F4AA 1F3FD ; fully-qualified # 💪🏽 E1.0 flexed biceps: medium skin tone +1F4AA 1F3FE ; fully-qualified # 💪🏾 E1.0 flexed biceps: medium-dark skin tone +1F4AA 1F3FF ; fully-qualified # 💪🏿 E1.0 flexed biceps: dark skin tone +1F9BE ; fully-qualified # 🦾 E12.0 mechanical arm +1F9BF ; fully-qualified # 🦿 E12.0 mechanical leg +1F9B5 ; fully-qualified # 🦵 E11.0 leg +1F9B5 1F3FB ; fully-qualified # 🦵🏻 E11.0 leg: light skin tone +1F9B5 1F3FC ; fully-qualified # 🦵🏼 E11.0 leg: medium-light skin tone +1F9B5 1F3FD ; fully-qualified # 🦵🏽 E11.0 leg: medium skin tone +1F9B5 1F3FE ; fully-qualified # 🦵🏾 E11.0 leg: medium-dark skin tone +1F9B5 1F3FF ; fully-qualified # 🦵🏿 E11.0 leg: dark skin tone +1F9B6 ; fully-qualified # 🦶 E11.0 foot +1F9B6 1F3FB ; fully-qualified # 🦶🏻 E11.0 foot: light skin tone +1F9B6 1F3FC ; fully-qualified # 🦶🏼 E11.0 foot: medium-light skin tone +1F9B6 1F3FD ; fully-qualified # 🦶🏽 E11.0 foot: medium skin tone +1F9B6 1F3FE ; fully-qualified # 🦶🏾 E11.0 foot: medium-dark skin tone +1F9B6 1F3FF ; fully-qualified # 🦶🏿 E11.0 foot: dark skin tone +1F442 ; fully-qualified # 👂 E0.6 ear +1F442 1F3FB ; fully-qualified # 👂🏻 E1.0 ear: light skin tone +1F442 1F3FC ; fully-qualified # 👂🏼 E1.0 ear: medium-light skin tone +1F442 1F3FD ; fully-qualified # 👂🏽 E1.0 ear: medium skin tone +1F442 1F3FE ; fully-qualified # 👂🏾 E1.0 ear: medium-dark skin tone +1F442 1F3FF ; fully-qualified # 👂🏿 E1.0 ear: dark skin tone +1F9BB ; fully-qualified # 🦻 E12.0 ear with hearing aid +1F9BB 1F3FB ; fully-qualified # 🦻🏻 E12.0 ear with hearing aid: light skin tone +1F9BB 1F3FC ; fully-qualified # 🦻🏼 E12.0 ear with hearing aid: medium-light skin tone +1F9BB 1F3FD ; fully-qualified # 🦻🏽 E12.0 ear with hearing aid: medium skin tone +1F9BB 1F3FE ; fully-qualified # 🦻🏾 E12.0 ear with hearing aid: medium-dark skin tone +1F9BB 1F3FF ; fully-qualified # 🦻🏿 E12.0 ear with hearing aid: dark skin tone +1F443 ; fully-qualified # 👃 E0.6 nose +1F443 1F3FB ; fully-qualified # 👃🏻 E1.0 nose: light skin tone +1F443 1F3FC ; fully-qualified # 👃🏼 E1.0 nose: medium-light skin tone +1F443 1F3FD ; fully-qualified # 👃🏽 E1.0 nose: medium skin tone +1F443 1F3FE ; fully-qualified # 👃🏾 E1.0 nose: medium-dark skin tone +1F443 1F3FF ; fully-qualified # 👃🏿 E1.0 nose: dark skin tone +1F9E0 ; fully-qualified # 🧠 E5.0 brain +1FAC0 ; fully-qualified # 🫀 E13.0 anatomical heart +1FAC1 ; fully-qualified # 🫁 E13.0 lungs +1F9B7 ; fully-qualified # 🦷 E11.0 tooth +1F9B4 ; fully-qualified # 🦴 E11.0 bone +1F440 ; fully-qualified # 👀 E0.6 eyes +1F441 FE0F ; fully-qualified # 👁️ E0.7 eye +1F441 ; unqualified # 👁 E0.7 eye +1F445 ; fully-qualified # 👅 E0.6 tongue +1F444 ; fully-qualified # 👄 E0.6 mouth +1FAE6 ; fully-qualified # 🫦 E14.0 biting lip + +# subgroup: person +1F476 ; fully-qualified # 👶 E0.6 baby +1F476 1F3FB ; fully-qualified # 👶🏻 E1.0 baby: light skin tone +1F476 1F3FC ; fully-qualified # 👶🏼 E1.0 baby: medium-light skin tone +1F476 1F3FD ; fully-qualified # 👶🏽 E1.0 baby: medium skin tone +1F476 1F3FE ; fully-qualified # 👶🏾 E1.0 baby: medium-dark skin tone +1F476 1F3FF ; fully-qualified # 👶🏿 E1.0 baby: dark skin tone +1F9D2 ; fully-qualified # 🧒 E5.0 child +1F9D2 1F3FB ; fully-qualified # 🧒🏻 E5.0 child: light skin tone +1F9D2 1F3FC ; fully-qualified # 🧒🏼 E5.0 child: medium-light skin tone +1F9D2 1F3FD ; fully-qualified # 🧒🏽 E5.0 child: medium skin tone +1F9D2 1F3FE ; fully-qualified # 🧒🏾 E5.0 child: medium-dark skin tone +1F9D2 1F3FF ; fully-qualified # 🧒🏿 E5.0 child: dark skin tone +1F466 ; fully-qualified # 👦 E0.6 boy +1F466 1F3FB ; fully-qualified # 👦🏻 E1.0 boy: light skin tone +1F466 1F3FC ; fully-qualified # 👦🏼 E1.0 boy: medium-light skin tone +1F466 1F3FD ; fully-qualified # 👦🏽 E1.0 boy: medium skin tone +1F466 1F3FE ; fully-qualified # 👦🏾 E1.0 boy: medium-dark skin tone +1F466 1F3FF ; fully-qualified # 👦🏿 E1.0 boy: dark skin tone +1F467 ; fully-qualified # 👧 E0.6 girl +1F467 1F3FB ; fully-qualified # 👧🏻 E1.0 girl: light skin tone +1F467 1F3FC ; fully-qualified # 👧🏼 E1.0 girl: medium-light skin tone +1F467 1F3FD ; fully-qualified # 👧🏽 E1.0 girl: medium skin tone +1F467 1F3FE ; fully-qualified # 👧🏾 E1.0 girl: medium-dark skin tone +1F467 1F3FF ; fully-qualified # 👧🏿 E1.0 girl: dark skin tone +1F9D1 ; fully-qualified # 🧑 E5.0 person +1F9D1 1F3FB ; fully-qualified # 🧑🏻 E5.0 person: light skin tone +1F9D1 1F3FC ; fully-qualified # 🧑🏼 E5.0 person: medium-light skin tone +1F9D1 1F3FD ; fully-qualified # 🧑🏽 E5.0 person: medium skin tone +1F9D1 1F3FE ; fully-qualified # 🧑🏾 E5.0 person: medium-dark skin tone +1F9D1 1F3FF ; fully-qualified # 🧑🏿 E5.0 person: dark skin tone +1F471 ; fully-qualified # 👱 E0.6 person: blond hair +1F471 1F3FB ; fully-qualified # 👱🏻 E1.0 person: light skin tone, blond hair +1F471 1F3FC ; fully-qualified # 👱🏼 E1.0 person: medium-light skin tone, blond hair +1F471 1F3FD ; fully-qualified # 👱🏽 E1.0 person: medium skin tone, blond hair +1F471 1F3FE ; fully-qualified # 👱🏾 E1.0 person: medium-dark skin tone, blond hair +1F471 1F3FF ; fully-qualified # 👱🏿 E1.0 person: dark skin tone, blond hair +1F468 ; fully-qualified # 👨 E0.6 man +1F468 1F3FB ; fully-qualified # 👨🏻 E1.0 man: light skin tone +1F468 1F3FC ; fully-qualified # 👨🏼 E1.0 man: medium-light skin tone +1F468 1F3FD ; fully-qualified # 👨🏽 E1.0 man: medium skin tone +1F468 1F3FE ; fully-qualified # 👨🏾 E1.0 man: medium-dark skin tone +1F468 1F3FF ; fully-qualified # 👨🏿 E1.0 man: dark skin tone +1F9D4 ; fully-qualified # 🧔 E5.0 person: beard +1F9D4 1F3FB ; fully-qualified # 🧔🏻 E5.0 person: light skin tone, beard +1F9D4 1F3FC ; fully-qualified # 🧔🏼 E5.0 person: medium-light skin tone, beard +1F9D4 1F3FD ; fully-qualified # 🧔🏽 E5.0 person: medium skin tone, beard +1F9D4 1F3FE ; fully-qualified # 🧔🏾 E5.0 person: medium-dark skin tone, beard +1F9D4 1F3FF ; fully-qualified # 🧔🏿 E5.0 person: dark skin tone, beard +1F9D4 200D 2642 FE0F ; fully-qualified # 🧔‍♂️ E13.1 man: beard +1F9D4 200D 2642 ; minimally-qualified # 🧔‍♂ E13.1 man: beard +1F9D4 1F3FB 200D 2642 FE0F ; fully-qualified # 🧔🏻‍♂️ E13.1 man: light skin tone, beard +1F9D4 1F3FB 200D 2642 ; minimally-qualified # 🧔🏻‍♂ E13.1 man: light skin tone, beard +1F9D4 1F3FC 200D 2642 FE0F ; fully-qualified # 🧔🏼‍♂️ E13.1 man: medium-light skin tone, beard +1F9D4 1F3FC 200D 2642 ; minimally-qualified # 🧔🏼‍♂ E13.1 man: medium-light skin tone, beard +1F9D4 1F3FD 200D 2642 FE0F ; fully-qualified # 🧔🏽‍♂️ E13.1 man: medium skin tone, beard +1F9D4 1F3FD 200D 2642 ; minimally-qualified # 🧔🏽‍♂ E13.1 man: medium skin tone, beard +1F9D4 1F3FE 200D 2642 FE0F ; fully-qualified # 🧔🏾‍♂️ E13.1 man: medium-dark skin tone, beard +1F9D4 1F3FE 200D 2642 ; minimally-qualified # 🧔🏾‍♂ E13.1 man: medium-dark skin tone, beard +1F9D4 1F3FF 200D 2642 FE0F ; fully-qualified # 🧔🏿‍♂️ E13.1 man: dark skin tone, beard +1F9D4 1F3FF 200D 2642 ; minimally-qualified # 🧔🏿‍♂ E13.1 man: dark skin tone, beard +1F9D4 200D 2640 FE0F ; fully-qualified # 🧔‍♀️ E13.1 woman: beard +1F9D4 200D 2640 ; minimally-qualified # 🧔‍♀ E13.1 woman: beard +1F9D4 1F3FB 200D 2640 FE0F ; fully-qualified # 🧔🏻‍♀️ E13.1 woman: light skin tone, beard +1F9D4 1F3FB 200D 2640 ; minimally-qualified # 🧔🏻‍♀ E13.1 woman: light skin tone, beard +1F9D4 1F3FC 200D 2640 FE0F ; fully-qualified # 🧔🏼‍♀️ E13.1 woman: medium-light skin tone, beard +1F9D4 1F3FC 200D 2640 ; minimally-qualified # 🧔🏼‍♀ E13.1 woman: medium-light skin tone, beard +1F9D4 1F3FD 200D 2640 FE0F ; fully-qualified # 🧔🏽‍♀️ E13.1 woman: medium skin tone, beard +1F9D4 1F3FD 200D 2640 ; minimally-qualified # 🧔🏽‍♀ E13.1 woman: medium skin tone, beard +1F9D4 1F3FE 200D 2640 FE0F ; fully-qualified # 🧔🏾‍♀️ E13.1 woman: medium-dark skin tone, beard +1F9D4 1F3FE 200D 2640 ; minimally-qualified # 🧔🏾‍♀ E13.1 woman: medium-dark skin tone, beard +1F9D4 1F3FF 200D 2640 FE0F ; fully-qualified # 🧔🏿‍♀️ E13.1 woman: dark skin tone, beard +1F9D4 1F3FF 200D 2640 ; minimally-qualified # 🧔🏿‍♀ E13.1 woman: dark skin tone, beard +1F468 200D 1F9B0 ; fully-qualified # 👨‍🦰 E11.0 man: red hair +1F468 1F3FB 200D 1F9B0 ; fully-qualified # 👨🏻‍🦰 E11.0 man: light skin tone, red hair +1F468 1F3FC 200D 1F9B0 ; fully-qualified # 👨🏼‍🦰 E11.0 man: medium-light skin tone, red hair +1F468 1F3FD 200D 1F9B0 ; fully-qualified # 👨🏽‍🦰 E11.0 man: medium skin tone, red hair +1F468 1F3FE 200D 1F9B0 ; fully-qualified # 👨🏾‍🦰 E11.0 man: medium-dark skin tone, red hair +1F468 1F3FF 200D 1F9B0 ; fully-qualified # 👨🏿‍🦰 E11.0 man: dark skin tone, red hair +1F468 200D 1F9B1 ; fully-qualified # 👨‍🦱 E11.0 man: curly hair +1F468 1F3FB 200D 1F9B1 ; fully-qualified # 👨🏻‍🦱 E11.0 man: light skin tone, curly hair +1F468 1F3FC 200D 1F9B1 ; fully-qualified # 👨🏼‍🦱 E11.0 man: medium-light skin tone, curly hair +1F468 1F3FD 200D 1F9B1 ; fully-qualified # 👨🏽‍🦱 E11.0 man: medium skin tone, curly hair +1F468 1F3FE 200D 1F9B1 ; fully-qualified # 👨🏾‍🦱 E11.0 man: medium-dark skin tone, curly hair +1F468 1F3FF 200D 1F9B1 ; fully-qualified # 👨🏿‍🦱 E11.0 man: dark skin tone, curly hair +1F468 200D 1F9B3 ; fully-qualified # 👨‍🦳 E11.0 man: white hair +1F468 1F3FB 200D 1F9B3 ; fully-qualified # 👨🏻‍🦳 E11.0 man: light skin tone, white hair +1F468 1F3FC 200D 1F9B3 ; fully-qualified # 👨🏼‍🦳 E11.0 man: medium-light skin tone, white hair +1F468 1F3FD 200D 1F9B3 ; fully-qualified # 👨🏽‍🦳 E11.0 man: medium skin tone, white hair +1F468 1F3FE 200D 1F9B3 ; fully-qualified # 👨🏾‍🦳 E11.0 man: medium-dark skin tone, white hair +1F468 1F3FF 200D 1F9B3 ; fully-qualified # 👨🏿‍🦳 E11.0 man: dark skin tone, white hair +1F468 200D 1F9B2 ; fully-qualified # 👨‍🦲 E11.0 man: bald +1F468 1F3FB 200D 1F9B2 ; fully-qualified # 👨🏻‍🦲 E11.0 man: light skin tone, bald +1F468 1F3FC 200D 1F9B2 ; fully-qualified # 👨🏼‍🦲 E11.0 man: medium-light skin tone, bald +1F468 1F3FD 200D 1F9B2 ; fully-qualified # 👨🏽‍🦲 E11.0 man: medium skin tone, bald +1F468 1F3FE 200D 1F9B2 ; fully-qualified # 👨🏾‍🦲 E11.0 man: medium-dark skin tone, bald +1F468 1F3FF 200D 1F9B2 ; fully-qualified # 👨🏿‍🦲 E11.0 man: dark skin tone, bald +1F469 ; fully-qualified # 👩 E0.6 woman +1F469 1F3FB ; fully-qualified # 👩🏻 E1.0 woman: light skin tone +1F469 1F3FC ; fully-qualified # 👩🏼 E1.0 woman: medium-light skin tone +1F469 1F3FD ; fully-qualified # 👩🏽 E1.0 woman: medium skin tone +1F469 1F3FE ; fully-qualified # 👩🏾 E1.0 woman: medium-dark skin tone +1F469 1F3FF ; fully-qualified # 👩🏿 E1.0 woman: dark skin tone +1F469 200D 1F9B0 ; fully-qualified # 👩‍🦰 E11.0 woman: red hair +1F469 1F3FB 200D 1F9B0 ; fully-qualified # 👩🏻‍🦰 E11.0 woman: light skin tone, red hair +1F469 1F3FC 200D 1F9B0 ; fully-qualified # 👩🏼‍🦰 E11.0 woman: medium-light skin tone, red hair +1F469 1F3FD 200D 1F9B0 ; fully-qualified # 👩🏽‍🦰 E11.0 woman: medium skin tone, red hair +1F469 1F3FE 200D 1F9B0 ; fully-qualified # 👩🏾‍🦰 E11.0 woman: medium-dark skin tone, red hair +1F469 1F3FF 200D 1F9B0 ; fully-qualified # 👩🏿‍🦰 E11.0 woman: dark skin tone, red hair +1F9D1 200D 1F9B0 ; fully-qualified # 🧑‍🦰 E12.1 person: red hair +1F9D1 1F3FB 200D 1F9B0 ; fully-qualified # 🧑🏻‍🦰 E12.1 person: light skin tone, red hair +1F9D1 1F3FC 200D 1F9B0 ; fully-qualified # 🧑🏼‍🦰 E12.1 person: medium-light skin tone, red hair +1F9D1 1F3FD 200D 1F9B0 ; fully-qualified # 🧑🏽‍🦰 E12.1 person: medium skin tone, red hair +1F9D1 1F3FE 200D 1F9B0 ; fully-qualified # 🧑🏾‍🦰 E12.1 person: medium-dark skin tone, red hair +1F9D1 1F3FF 200D 1F9B0 ; fully-qualified # 🧑🏿‍🦰 E12.1 person: dark skin tone, red hair +1F469 200D 1F9B1 ; fully-qualified # 👩‍🦱 E11.0 woman: curly hair +1F469 1F3FB 200D 1F9B1 ; fully-qualified # 👩🏻‍🦱 E11.0 woman: light skin tone, curly hair +1F469 1F3FC 200D 1F9B1 ; fully-qualified # 👩🏼‍🦱 E11.0 woman: medium-light skin tone, curly hair +1F469 1F3FD 200D 1F9B1 ; fully-qualified # 👩🏽‍🦱 E11.0 woman: medium skin tone, curly hair +1F469 1F3FE 200D 1F9B1 ; fully-qualified # 👩🏾‍🦱 E11.0 woman: medium-dark skin tone, curly hair +1F469 1F3FF 200D 1F9B1 ; fully-qualified # 👩🏿‍🦱 E11.0 woman: dark skin tone, curly hair +1F9D1 200D 1F9B1 ; fully-qualified # 🧑‍🦱 E12.1 person: curly hair +1F9D1 1F3FB 200D 1F9B1 ; fully-qualified # 🧑🏻‍🦱 E12.1 person: light skin tone, curly hair +1F9D1 1F3FC 200D 1F9B1 ; fully-qualified # 🧑🏼‍🦱 E12.1 person: medium-light skin tone, curly hair +1F9D1 1F3FD 200D 1F9B1 ; fully-qualified # 🧑🏽‍🦱 E12.1 person: medium skin tone, curly hair +1F9D1 1F3FE 200D 1F9B1 ; fully-qualified # 🧑🏾‍🦱 E12.1 person: medium-dark skin tone, curly hair +1F9D1 1F3FF 200D 1F9B1 ; fully-qualified # 🧑🏿‍🦱 E12.1 person: dark skin tone, curly hair +1F469 200D 1F9B3 ; fully-qualified # 👩‍🦳 E11.0 woman: white hair +1F469 1F3FB 200D 1F9B3 ; fully-qualified # 👩🏻‍🦳 E11.0 woman: light skin tone, white hair +1F469 1F3FC 200D 1F9B3 ; fully-qualified # 👩🏼‍🦳 E11.0 woman: medium-light skin tone, white hair +1F469 1F3FD 200D 1F9B3 ; fully-qualified # 👩🏽‍🦳 E11.0 woman: medium skin tone, white hair +1F469 1F3FE 200D 1F9B3 ; fully-qualified # 👩🏾‍🦳 E11.0 woman: medium-dark skin tone, white hair +1F469 1F3FF 200D 1F9B3 ; fully-qualified # 👩🏿‍🦳 E11.0 woman: dark skin tone, white hair +1F9D1 200D 1F9B3 ; fully-qualified # 🧑‍🦳 E12.1 person: white hair +1F9D1 1F3FB 200D 1F9B3 ; fully-qualified # 🧑🏻‍🦳 E12.1 person: light skin tone, white hair +1F9D1 1F3FC 200D 1F9B3 ; fully-qualified # 🧑🏼‍🦳 E12.1 person: medium-light skin tone, white hair +1F9D1 1F3FD 200D 1F9B3 ; fully-qualified # 🧑🏽‍🦳 E12.1 person: medium skin tone, white hair +1F9D1 1F3FE 200D 1F9B3 ; fully-qualified # 🧑🏾‍🦳 E12.1 person: medium-dark skin tone, white hair +1F9D1 1F3FF 200D 1F9B3 ; fully-qualified # 🧑🏿‍🦳 E12.1 person: dark skin tone, white hair +1F469 200D 1F9B2 ; fully-qualified # 👩‍🦲 E11.0 woman: bald +1F469 1F3FB 200D 1F9B2 ; fully-qualified # 👩🏻‍🦲 E11.0 woman: light skin tone, bald +1F469 1F3FC 200D 1F9B2 ; fully-qualified # 👩🏼‍🦲 E11.0 woman: medium-light skin tone, bald +1F469 1F3FD 200D 1F9B2 ; fully-qualified # 👩🏽‍🦲 E11.0 woman: medium skin tone, bald +1F469 1F3FE 200D 1F9B2 ; fully-qualified # 👩🏾‍🦲 E11.0 woman: medium-dark skin tone, bald +1F469 1F3FF 200D 1F9B2 ; fully-qualified # 👩🏿‍🦲 E11.0 woman: dark skin tone, bald +1F9D1 200D 1F9B2 ; fully-qualified # 🧑‍🦲 E12.1 person: bald +1F9D1 1F3FB 200D 1F9B2 ; fully-qualified # 🧑🏻‍🦲 E12.1 person: light skin tone, bald +1F9D1 1F3FC 200D 1F9B2 ; fully-qualified # 🧑🏼‍🦲 E12.1 person: medium-light skin tone, bald +1F9D1 1F3FD 200D 1F9B2 ; fully-qualified # 🧑🏽‍🦲 E12.1 person: medium skin tone, bald +1F9D1 1F3FE 200D 1F9B2 ; fully-qualified # 🧑🏾‍🦲 E12.1 person: medium-dark skin tone, bald +1F9D1 1F3FF 200D 1F9B2 ; fully-qualified # 🧑🏿‍🦲 E12.1 person: dark skin tone, bald +1F471 200D 2640 FE0F ; fully-qualified # 👱‍♀️ E4.0 woman: blond hair +1F471 200D 2640 ; minimally-qualified # 👱‍♀ E4.0 woman: blond hair +1F471 1F3FB 200D 2640 FE0F ; fully-qualified # 👱🏻‍♀️ E4.0 woman: light skin tone, blond hair +1F471 1F3FB 200D 2640 ; minimally-qualified # 👱🏻‍♀ E4.0 woman: light skin tone, blond hair +1F471 1F3FC 200D 2640 FE0F ; fully-qualified # 👱🏼‍♀️ E4.0 woman: medium-light skin tone, blond hair +1F471 1F3FC 200D 2640 ; minimally-qualified # 👱🏼‍♀ E4.0 woman: medium-light skin tone, blond hair +1F471 1F3FD 200D 2640 FE0F ; fully-qualified # 👱🏽‍♀️ E4.0 woman: medium skin tone, blond hair +1F471 1F3FD 200D 2640 ; minimally-qualified # 👱🏽‍♀ E4.0 woman: medium skin tone, blond hair +1F471 1F3FE 200D 2640 FE0F ; fully-qualified # 👱🏾‍♀️ E4.0 woman: medium-dark skin tone, blond hair +1F471 1F3FE 200D 2640 ; minimally-qualified # 👱🏾‍♀ E4.0 woman: medium-dark skin tone, blond hair +1F471 1F3FF 200D 2640 FE0F ; fully-qualified # 👱🏿‍♀️ E4.0 woman: dark skin tone, blond hair +1F471 1F3FF 200D 2640 ; minimally-qualified # 👱🏿‍♀ E4.0 woman: dark skin tone, blond hair +1F471 200D 2642 FE0F ; fully-qualified # 👱‍♂️ E4.0 man: blond hair +1F471 200D 2642 ; minimally-qualified # 👱‍♂ E4.0 man: blond hair +1F471 1F3FB 200D 2642 FE0F ; fully-qualified # 👱🏻‍♂️ E4.0 man: light skin tone, blond hair +1F471 1F3FB 200D 2642 ; minimally-qualified # 👱🏻‍♂ E4.0 man: light skin tone, blond hair +1F471 1F3FC 200D 2642 FE0F ; fully-qualified # 👱🏼‍♂️ E4.0 man: medium-light skin tone, blond hair +1F471 1F3FC 200D 2642 ; minimally-qualified # 👱🏼‍♂ E4.0 man: medium-light skin tone, blond hair +1F471 1F3FD 200D 2642 FE0F ; fully-qualified # 👱🏽‍♂️ E4.0 man: medium skin tone, blond hair +1F471 1F3FD 200D 2642 ; minimally-qualified # 👱🏽‍♂ E4.0 man: medium skin tone, blond hair +1F471 1F3FE 200D 2642 FE0F ; fully-qualified # 👱🏾‍♂️ E4.0 man: medium-dark skin tone, blond hair +1F471 1F3FE 200D 2642 ; minimally-qualified # 👱🏾‍♂ E4.0 man: medium-dark skin tone, blond hair +1F471 1F3FF 200D 2642 FE0F ; fully-qualified # 👱🏿‍♂️ E4.0 man: dark skin tone, blond hair +1F471 1F3FF 200D 2642 ; minimally-qualified # 👱🏿‍♂ E4.0 man: dark skin tone, blond hair +1F9D3 ; fully-qualified # 🧓 E5.0 older person +1F9D3 1F3FB ; fully-qualified # 🧓🏻 E5.0 older person: light skin tone +1F9D3 1F3FC ; fully-qualified # 🧓🏼 E5.0 older person: medium-light skin tone +1F9D3 1F3FD ; fully-qualified # 🧓🏽 E5.0 older person: medium skin tone +1F9D3 1F3FE ; fully-qualified # 🧓🏾 E5.0 older person: medium-dark skin tone +1F9D3 1F3FF ; fully-qualified # 🧓🏿 E5.0 older person: dark skin tone +1F474 ; fully-qualified # 👴 E0.6 old man +1F474 1F3FB ; fully-qualified # 👴🏻 E1.0 old man: light skin tone +1F474 1F3FC ; fully-qualified # 👴🏼 E1.0 old man: medium-light skin tone +1F474 1F3FD ; fully-qualified # 👴🏽 E1.0 old man: medium skin tone +1F474 1F3FE ; fully-qualified # 👴🏾 E1.0 old man: medium-dark skin tone +1F474 1F3FF ; fully-qualified # 👴🏿 E1.0 old man: dark skin tone +1F475 ; fully-qualified # 👵 E0.6 old woman +1F475 1F3FB ; fully-qualified # 👵🏻 E1.0 old woman: light skin tone +1F475 1F3FC ; fully-qualified # 👵🏼 E1.0 old woman: medium-light skin tone +1F475 1F3FD ; fully-qualified # 👵🏽 E1.0 old woman: medium skin tone +1F475 1F3FE ; fully-qualified # 👵🏾 E1.0 old woman: medium-dark skin tone +1F475 1F3FF ; fully-qualified # 👵🏿 E1.0 old woman: dark skin tone + +# subgroup: person-gesture +1F64D ; fully-qualified # 🙍 E0.6 person frowning +1F64D 1F3FB ; fully-qualified # 🙍🏻 E1.0 person frowning: light skin tone +1F64D 1F3FC ; fully-qualified # 🙍🏼 E1.0 person frowning: medium-light skin tone +1F64D 1F3FD ; fully-qualified # 🙍🏽 E1.0 person frowning: medium skin tone +1F64D 1F3FE ; fully-qualified # 🙍🏾 E1.0 person frowning: medium-dark skin tone +1F64D 1F3FF ; fully-qualified # 🙍🏿 E1.0 person frowning: dark skin tone +1F64D 200D 2642 FE0F ; fully-qualified # 🙍‍♂️ E4.0 man frowning +1F64D 200D 2642 ; minimally-qualified # 🙍‍♂ E4.0 man frowning +1F64D 1F3FB 200D 2642 FE0F ; fully-qualified # 🙍🏻‍♂️ E4.0 man frowning: light skin tone +1F64D 1F3FB 200D 2642 ; minimally-qualified # 🙍🏻‍♂ E4.0 man frowning: light skin tone +1F64D 1F3FC 200D 2642 FE0F ; fully-qualified # 🙍🏼‍♂️ E4.0 man frowning: medium-light skin tone +1F64D 1F3FC 200D 2642 ; minimally-qualified # 🙍🏼‍♂ E4.0 man frowning: medium-light skin tone +1F64D 1F3FD 200D 2642 FE0F ; fully-qualified # 🙍🏽‍♂️ E4.0 man frowning: medium skin tone +1F64D 1F3FD 200D 2642 ; minimally-qualified # 🙍🏽‍♂ E4.0 man frowning: medium skin tone +1F64D 1F3FE 200D 2642 FE0F ; fully-qualified # 🙍🏾‍♂️ E4.0 man frowning: medium-dark skin tone +1F64D 1F3FE 200D 2642 ; minimally-qualified # 🙍🏾‍♂ E4.0 man frowning: medium-dark skin tone +1F64D 1F3FF 200D 2642 FE0F ; fully-qualified # 🙍🏿‍♂️ E4.0 man frowning: dark skin tone +1F64D 1F3FF 200D 2642 ; minimally-qualified # 🙍🏿‍♂ E4.0 man frowning: dark skin tone +1F64D 200D 2640 FE0F ; fully-qualified # 🙍‍♀️ E4.0 woman frowning +1F64D 200D 2640 ; minimally-qualified # 🙍‍♀ E4.0 woman frowning +1F64D 1F3FB 200D 2640 FE0F ; fully-qualified # 🙍🏻‍♀️ E4.0 woman frowning: light skin tone +1F64D 1F3FB 200D 2640 ; minimally-qualified # 🙍🏻‍♀ E4.0 woman frowning: light skin tone +1F64D 1F3FC 200D 2640 FE0F ; fully-qualified # 🙍🏼‍♀️ E4.0 woman frowning: medium-light skin tone +1F64D 1F3FC 200D 2640 ; minimally-qualified # 🙍🏼‍♀ E4.0 woman frowning: medium-light skin tone +1F64D 1F3FD 200D 2640 FE0F ; fully-qualified # 🙍🏽‍♀️ E4.0 woman frowning: medium skin tone +1F64D 1F3FD 200D 2640 ; minimally-qualified # 🙍🏽‍♀ E4.0 woman frowning: medium skin tone +1F64D 1F3FE 200D 2640 FE0F ; fully-qualified # 🙍🏾‍♀️ E4.0 woman frowning: medium-dark skin tone +1F64D 1F3FE 200D 2640 ; minimally-qualified # 🙍🏾‍♀ E4.0 woman frowning: medium-dark skin tone +1F64D 1F3FF 200D 2640 FE0F ; fully-qualified # 🙍🏿‍♀️ E4.0 woman frowning: dark skin tone +1F64D 1F3FF 200D 2640 ; minimally-qualified # 🙍🏿‍♀ E4.0 woman frowning: dark skin tone +1F64E ; fully-qualified # 🙎 E0.6 person pouting +1F64E 1F3FB ; fully-qualified # 🙎🏻 E1.0 person pouting: light skin tone +1F64E 1F3FC ; fully-qualified # 🙎🏼 E1.0 person pouting: medium-light skin tone +1F64E 1F3FD ; fully-qualified # 🙎🏽 E1.0 person pouting: medium skin tone +1F64E 1F3FE ; fully-qualified # 🙎🏾 E1.0 person pouting: medium-dark skin tone +1F64E 1F3FF ; fully-qualified # 🙎🏿 E1.0 person pouting: dark skin tone +1F64E 200D 2642 FE0F ; fully-qualified # 🙎‍♂️ E4.0 man pouting +1F64E 200D 2642 ; minimally-qualified # 🙎‍♂ E4.0 man pouting +1F64E 1F3FB 200D 2642 FE0F ; fully-qualified # 🙎🏻‍♂️ E4.0 man pouting: light skin tone +1F64E 1F3FB 200D 2642 ; minimally-qualified # 🙎🏻‍♂ E4.0 man pouting: light skin tone +1F64E 1F3FC 200D 2642 FE0F ; fully-qualified # 🙎🏼‍♂️ E4.0 man pouting: medium-light skin tone +1F64E 1F3FC 200D 2642 ; minimally-qualified # 🙎🏼‍♂ E4.0 man pouting: medium-light skin tone +1F64E 1F3FD 200D 2642 FE0F ; fully-qualified # 🙎🏽‍♂️ E4.0 man pouting: medium skin tone +1F64E 1F3FD 200D 2642 ; minimally-qualified # 🙎🏽‍♂ E4.0 man pouting: medium skin tone +1F64E 1F3FE 200D 2642 FE0F ; fully-qualified # 🙎🏾‍♂️ E4.0 man pouting: medium-dark skin tone +1F64E 1F3FE 200D 2642 ; minimally-qualified # 🙎🏾‍♂ E4.0 man pouting: medium-dark skin tone +1F64E 1F3FF 200D 2642 FE0F ; fully-qualified # 🙎🏿‍♂️ E4.0 man pouting: dark skin tone +1F64E 1F3FF 200D 2642 ; minimally-qualified # 🙎🏿‍♂ E4.0 man pouting: dark skin tone +1F64E 200D 2640 FE0F ; fully-qualified # 🙎‍♀️ E4.0 woman pouting +1F64E 200D 2640 ; minimally-qualified # 🙎‍♀ E4.0 woman pouting +1F64E 1F3FB 200D 2640 FE0F ; fully-qualified # 🙎🏻‍♀️ E4.0 woman pouting: light skin tone +1F64E 1F3FB 200D 2640 ; minimally-qualified # 🙎🏻‍♀ E4.0 woman pouting: light skin tone +1F64E 1F3FC 200D 2640 FE0F ; fully-qualified # 🙎🏼‍♀️ E4.0 woman pouting: medium-light skin tone +1F64E 1F3FC 200D 2640 ; minimally-qualified # 🙎🏼‍♀ E4.0 woman pouting: medium-light skin tone +1F64E 1F3FD 200D 2640 FE0F ; fully-qualified # 🙎🏽‍♀️ E4.0 woman pouting: medium skin tone +1F64E 1F3FD 200D 2640 ; minimally-qualified # 🙎🏽‍♀ E4.0 woman pouting: medium skin tone +1F64E 1F3FE 200D 2640 FE0F ; fully-qualified # 🙎🏾‍♀️ E4.0 woman pouting: medium-dark skin tone +1F64E 1F3FE 200D 2640 ; minimally-qualified # 🙎🏾‍♀ E4.0 woman pouting: medium-dark skin tone +1F64E 1F3FF 200D 2640 FE0F ; fully-qualified # 🙎🏿‍♀️ E4.0 woman pouting: dark skin tone +1F64E 1F3FF 200D 2640 ; minimally-qualified # 🙎🏿‍♀ E4.0 woman pouting: dark skin tone +1F645 ; fully-qualified # 🙅 E0.6 person gesturing NO +1F645 1F3FB ; fully-qualified # 🙅🏻 E1.0 person gesturing NO: light skin tone +1F645 1F3FC ; fully-qualified # 🙅🏼 E1.0 person gesturing NO: medium-light skin tone +1F645 1F3FD ; fully-qualified # 🙅🏽 E1.0 person gesturing NO: medium skin tone +1F645 1F3FE ; fully-qualified # 🙅🏾 E1.0 person gesturing NO: medium-dark skin tone +1F645 1F3FF ; fully-qualified # 🙅🏿 E1.0 person gesturing NO: dark skin tone +1F645 200D 2642 FE0F ; fully-qualified # 🙅‍♂️ E4.0 man gesturing NO +1F645 200D 2642 ; minimally-qualified # 🙅‍♂ E4.0 man gesturing NO +1F645 1F3FB 200D 2642 FE0F ; fully-qualified # 🙅🏻‍♂️ E4.0 man gesturing NO: light skin tone +1F645 1F3FB 200D 2642 ; minimally-qualified # 🙅🏻‍♂ E4.0 man gesturing NO: light skin tone +1F645 1F3FC 200D 2642 FE0F ; fully-qualified # 🙅🏼‍♂️ E4.0 man gesturing NO: medium-light skin tone +1F645 1F3FC 200D 2642 ; minimally-qualified # 🙅🏼‍♂ E4.0 man gesturing NO: medium-light skin tone +1F645 1F3FD 200D 2642 FE0F ; fully-qualified # 🙅🏽‍♂️ E4.0 man gesturing NO: medium skin tone +1F645 1F3FD 200D 2642 ; minimally-qualified # 🙅🏽‍♂ E4.0 man gesturing NO: medium skin tone +1F645 1F3FE 200D 2642 FE0F ; fully-qualified # 🙅🏾‍♂️ E4.0 man gesturing NO: medium-dark skin tone +1F645 1F3FE 200D 2642 ; minimally-qualified # 🙅🏾‍♂ E4.0 man gesturing NO: medium-dark skin tone +1F645 1F3FF 200D 2642 FE0F ; fully-qualified # 🙅🏿‍♂️ E4.0 man gesturing NO: dark skin tone +1F645 1F3FF 200D 2642 ; minimally-qualified # 🙅🏿‍♂ E4.0 man gesturing NO: dark skin tone +1F645 200D 2640 FE0F ; fully-qualified # 🙅‍♀️ E4.0 woman gesturing NO +1F645 200D 2640 ; minimally-qualified # 🙅‍♀ E4.0 woman gesturing NO +1F645 1F3FB 200D 2640 FE0F ; fully-qualified # 🙅🏻‍♀️ E4.0 woman gesturing NO: light skin tone +1F645 1F3FB 200D 2640 ; minimally-qualified # 🙅🏻‍♀ E4.0 woman gesturing NO: light skin tone +1F645 1F3FC 200D 2640 FE0F ; fully-qualified # 🙅🏼‍♀️ E4.0 woman gesturing NO: medium-light skin tone +1F645 1F3FC 200D 2640 ; minimally-qualified # 🙅🏼‍♀ E4.0 woman gesturing NO: medium-light skin tone +1F645 1F3FD 200D 2640 FE0F ; fully-qualified # 🙅🏽‍♀️ E4.0 woman gesturing NO: medium skin tone +1F645 1F3FD 200D 2640 ; minimally-qualified # 🙅🏽‍♀ E4.0 woman gesturing NO: medium skin tone +1F645 1F3FE 200D 2640 FE0F ; fully-qualified # 🙅🏾‍♀️ E4.0 woman gesturing NO: medium-dark skin tone +1F645 1F3FE 200D 2640 ; minimally-qualified # 🙅🏾‍♀ E4.0 woman gesturing NO: medium-dark skin tone +1F645 1F3FF 200D 2640 FE0F ; fully-qualified # 🙅🏿‍♀️ E4.0 woman gesturing NO: dark skin tone +1F645 1F3FF 200D 2640 ; minimally-qualified # 🙅🏿‍♀ E4.0 woman gesturing NO: dark skin tone +1F646 ; fully-qualified # 🙆 E0.6 person gesturing OK +1F646 1F3FB ; fully-qualified # 🙆🏻 E1.0 person gesturing OK: light skin tone +1F646 1F3FC ; fully-qualified # 🙆🏼 E1.0 person gesturing OK: medium-light skin tone +1F646 1F3FD ; fully-qualified # 🙆🏽 E1.0 person gesturing OK: medium skin tone +1F646 1F3FE ; fully-qualified # 🙆🏾 E1.0 person gesturing OK: medium-dark skin tone +1F646 1F3FF ; fully-qualified # 🙆🏿 E1.0 person gesturing OK: dark skin tone +1F646 200D 2642 FE0F ; fully-qualified # 🙆‍♂️ E4.0 man gesturing OK +1F646 200D 2642 ; minimally-qualified # 🙆‍♂ E4.0 man gesturing OK +1F646 1F3FB 200D 2642 FE0F ; fully-qualified # 🙆🏻‍♂️ E4.0 man gesturing OK: light skin tone +1F646 1F3FB 200D 2642 ; minimally-qualified # 🙆🏻‍♂ E4.0 man gesturing OK: light skin tone +1F646 1F3FC 200D 2642 FE0F ; fully-qualified # 🙆🏼‍♂️ E4.0 man gesturing OK: medium-light skin tone +1F646 1F3FC 200D 2642 ; minimally-qualified # 🙆🏼‍♂ E4.0 man gesturing OK: medium-light skin tone +1F646 1F3FD 200D 2642 FE0F ; fully-qualified # 🙆🏽‍♂️ E4.0 man gesturing OK: medium skin tone +1F646 1F3FD 200D 2642 ; minimally-qualified # 🙆🏽‍♂ E4.0 man gesturing OK: medium skin tone +1F646 1F3FE 200D 2642 FE0F ; fully-qualified # 🙆🏾‍♂️ E4.0 man gesturing OK: medium-dark skin tone +1F646 1F3FE 200D 2642 ; minimally-qualified # 🙆🏾‍♂ E4.0 man gesturing OK: medium-dark skin tone +1F646 1F3FF 200D 2642 FE0F ; fully-qualified # 🙆🏿‍♂️ E4.0 man gesturing OK: dark skin tone +1F646 1F3FF 200D 2642 ; minimally-qualified # 🙆🏿‍♂ E4.0 man gesturing OK: dark skin tone +1F646 200D 2640 FE0F ; fully-qualified # 🙆‍♀️ E4.0 woman gesturing OK +1F646 200D 2640 ; minimally-qualified # 🙆‍♀ E4.0 woman gesturing OK +1F646 1F3FB 200D 2640 FE0F ; fully-qualified # 🙆🏻‍♀️ E4.0 woman gesturing OK: light skin tone +1F646 1F3FB 200D 2640 ; minimally-qualified # 🙆🏻‍♀ E4.0 woman gesturing OK: light skin tone +1F646 1F3FC 200D 2640 FE0F ; fully-qualified # 🙆🏼‍♀️ E4.0 woman gesturing OK: medium-light skin tone +1F646 1F3FC 200D 2640 ; minimally-qualified # 🙆🏼‍♀ E4.0 woman gesturing OK: medium-light skin tone +1F646 1F3FD 200D 2640 FE0F ; fully-qualified # 🙆🏽‍♀️ E4.0 woman gesturing OK: medium skin tone +1F646 1F3FD 200D 2640 ; minimally-qualified # 🙆🏽‍♀ E4.0 woman gesturing OK: medium skin tone +1F646 1F3FE 200D 2640 FE0F ; fully-qualified # 🙆🏾‍♀️ E4.0 woman gesturing OK: medium-dark skin tone +1F646 1F3FE 200D 2640 ; minimally-qualified # 🙆🏾‍♀ E4.0 woman gesturing OK: medium-dark skin tone +1F646 1F3FF 200D 2640 FE0F ; fully-qualified # 🙆🏿‍♀️ E4.0 woman gesturing OK: dark skin tone +1F646 1F3FF 200D 2640 ; minimally-qualified # 🙆🏿‍♀ E4.0 woman gesturing OK: dark skin tone +1F481 ; fully-qualified # 💁 E0.6 person tipping hand +1F481 1F3FB ; fully-qualified # 💁🏻 E1.0 person tipping hand: light skin tone +1F481 1F3FC ; fully-qualified # 💁🏼 E1.0 person tipping hand: medium-light skin tone +1F481 1F3FD ; fully-qualified # 💁🏽 E1.0 person tipping hand: medium skin tone +1F481 1F3FE ; fully-qualified # 💁🏾 E1.0 person tipping hand: medium-dark skin tone +1F481 1F3FF ; fully-qualified # 💁🏿 E1.0 person tipping hand: dark skin tone +1F481 200D 2642 FE0F ; fully-qualified # 💁‍♂️ E4.0 man tipping hand +1F481 200D 2642 ; minimally-qualified # 💁‍♂ E4.0 man tipping hand +1F481 1F3FB 200D 2642 FE0F ; fully-qualified # 💁🏻‍♂️ E4.0 man tipping hand: light skin tone +1F481 1F3FB 200D 2642 ; minimally-qualified # 💁🏻‍♂ E4.0 man tipping hand: light skin tone +1F481 1F3FC 200D 2642 FE0F ; fully-qualified # 💁🏼‍♂️ E4.0 man tipping hand: medium-light skin tone +1F481 1F3FC 200D 2642 ; minimally-qualified # 💁🏼‍♂ E4.0 man tipping hand: medium-light skin tone +1F481 1F3FD 200D 2642 FE0F ; fully-qualified # 💁🏽‍♂️ E4.0 man tipping hand: medium skin tone +1F481 1F3FD 200D 2642 ; minimally-qualified # 💁🏽‍♂ E4.0 man tipping hand: medium skin tone +1F481 1F3FE 200D 2642 FE0F ; fully-qualified # 💁🏾‍♂️ E4.0 man tipping hand: medium-dark skin tone +1F481 1F3FE 200D 2642 ; minimally-qualified # 💁🏾‍♂ E4.0 man tipping hand: medium-dark skin tone +1F481 1F3FF 200D 2642 FE0F ; fully-qualified # 💁🏿‍♂️ E4.0 man tipping hand: dark skin tone +1F481 1F3FF 200D 2642 ; minimally-qualified # 💁🏿‍♂ E4.0 man tipping hand: dark skin tone +1F481 200D 2640 FE0F ; fully-qualified # 💁‍♀️ E4.0 woman tipping hand +1F481 200D 2640 ; minimally-qualified # 💁‍♀ E4.0 woman tipping hand +1F481 1F3FB 200D 2640 FE0F ; fully-qualified # 💁🏻‍♀️ E4.0 woman tipping hand: light skin tone +1F481 1F3FB 200D 2640 ; minimally-qualified # 💁🏻‍♀ E4.0 woman tipping hand: light skin tone +1F481 1F3FC 200D 2640 FE0F ; fully-qualified # 💁🏼‍♀️ E4.0 woman tipping hand: medium-light skin tone +1F481 1F3FC 200D 2640 ; minimally-qualified # 💁🏼‍♀ E4.0 woman tipping hand: medium-light skin tone +1F481 1F3FD 200D 2640 FE0F ; fully-qualified # 💁🏽‍♀️ E4.0 woman tipping hand: medium skin tone +1F481 1F3FD 200D 2640 ; minimally-qualified # 💁🏽‍♀ E4.0 woman tipping hand: medium skin tone +1F481 1F3FE 200D 2640 FE0F ; fully-qualified # 💁🏾‍♀️ E4.0 woman tipping hand: medium-dark skin tone +1F481 1F3FE 200D 2640 ; minimally-qualified # 💁🏾‍♀ E4.0 woman tipping hand: medium-dark skin tone +1F481 1F3FF 200D 2640 FE0F ; fully-qualified # 💁🏿‍♀️ E4.0 woman tipping hand: dark skin tone +1F481 1F3FF 200D 2640 ; minimally-qualified # 💁🏿‍♀ E4.0 woman tipping hand: dark skin tone +1F64B ; fully-qualified # 🙋 E0.6 person raising hand +1F64B 1F3FB ; fully-qualified # 🙋🏻 E1.0 person raising hand: light skin tone +1F64B 1F3FC ; fully-qualified # 🙋🏼 E1.0 person raising hand: medium-light skin tone +1F64B 1F3FD ; fully-qualified # 🙋🏽 E1.0 person raising hand: medium skin tone +1F64B 1F3FE ; fully-qualified # 🙋🏾 E1.0 person raising hand: medium-dark skin tone +1F64B 1F3FF ; fully-qualified # 🙋🏿 E1.0 person raising hand: dark skin tone +1F64B 200D 2642 FE0F ; fully-qualified # 🙋‍♂️ E4.0 man raising hand +1F64B 200D 2642 ; minimally-qualified # 🙋‍♂ E4.0 man raising hand +1F64B 1F3FB 200D 2642 FE0F ; fully-qualified # 🙋🏻‍♂️ E4.0 man raising hand: light skin tone +1F64B 1F3FB 200D 2642 ; minimally-qualified # 🙋🏻‍♂ E4.0 man raising hand: light skin tone +1F64B 1F3FC 200D 2642 FE0F ; fully-qualified # 🙋🏼‍♂️ E4.0 man raising hand: medium-light skin tone +1F64B 1F3FC 200D 2642 ; minimally-qualified # 🙋🏼‍♂ E4.0 man raising hand: medium-light skin tone +1F64B 1F3FD 200D 2642 FE0F ; fully-qualified # 🙋🏽‍♂️ E4.0 man raising hand: medium skin tone +1F64B 1F3FD 200D 2642 ; minimally-qualified # 🙋🏽‍♂ E4.0 man raising hand: medium skin tone +1F64B 1F3FE 200D 2642 FE0F ; fully-qualified # 🙋🏾‍♂️ E4.0 man raising hand: medium-dark skin tone +1F64B 1F3FE 200D 2642 ; minimally-qualified # 🙋🏾‍♂ E4.0 man raising hand: medium-dark skin tone +1F64B 1F3FF 200D 2642 FE0F ; fully-qualified # 🙋🏿‍♂️ E4.0 man raising hand: dark skin tone +1F64B 1F3FF 200D 2642 ; minimally-qualified # 🙋🏿‍♂ E4.0 man raising hand: dark skin tone +1F64B 200D 2640 FE0F ; fully-qualified # 🙋‍♀️ E4.0 woman raising hand +1F64B 200D 2640 ; minimally-qualified # 🙋‍♀ E4.0 woman raising hand +1F64B 1F3FB 200D 2640 FE0F ; fully-qualified # 🙋🏻‍♀️ E4.0 woman raising hand: light skin tone +1F64B 1F3FB 200D 2640 ; minimally-qualified # 🙋🏻‍♀ E4.0 woman raising hand: light skin tone +1F64B 1F3FC 200D 2640 FE0F ; fully-qualified # 🙋🏼‍♀️ E4.0 woman raising hand: medium-light skin tone +1F64B 1F3FC 200D 2640 ; minimally-qualified # 🙋🏼‍♀ E4.0 woman raising hand: medium-light skin tone +1F64B 1F3FD 200D 2640 FE0F ; fully-qualified # 🙋🏽‍♀️ E4.0 woman raising hand: medium skin tone +1F64B 1F3FD 200D 2640 ; minimally-qualified # 🙋🏽‍♀ E4.0 woman raising hand: medium skin tone +1F64B 1F3FE 200D 2640 FE0F ; fully-qualified # 🙋🏾‍♀️ E4.0 woman raising hand: medium-dark skin tone +1F64B 1F3FE 200D 2640 ; minimally-qualified # 🙋🏾‍♀ E4.0 woman raising hand: medium-dark skin tone +1F64B 1F3FF 200D 2640 FE0F ; fully-qualified # 🙋🏿‍♀️ E4.0 woman raising hand: dark skin tone +1F64B 1F3FF 200D 2640 ; minimally-qualified # 🙋🏿‍♀ E4.0 woman raising hand: dark skin tone +1F9CF ; fully-qualified # 🧏 E12.0 deaf person +1F9CF 1F3FB ; fully-qualified # 🧏🏻 E12.0 deaf person: light skin tone +1F9CF 1F3FC ; fully-qualified # 🧏🏼 E12.0 deaf person: medium-light skin tone +1F9CF 1F3FD ; fully-qualified # 🧏🏽 E12.0 deaf person: medium skin tone +1F9CF 1F3FE ; fully-qualified # 🧏🏾 E12.0 deaf person: medium-dark skin tone +1F9CF 1F3FF ; fully-qualified # 🧏🏿 E12.0 deaf person: dark skin tone +1F9CF 200D 2642 FE0F ; fully-qualified # 🧏‍♂️ E12.0 deaf man +1F9CF 200D 2642 ; minimally-qualified # 🧏‍♂ E12.0 deaf man +1F9CF 1F3FB 200D 2642 FE0F ; fully-qualified # 🧏🏻‍♂️ E12.0 deaf man: light skin tone +1F9CF 1F3FB 200D 2642 ; minimally-qualified # 🧏🏻‍♂ E12.0 deaf man: light skin tone +1F9CF 1F3FC 200D 2642 FE0F ; fully-qualified # 🧏🏼‍♂️ E12.0 deaf man: medium-light skin tone +1F9CF 1F3FC 200D 2642 ; minimally-qualified # 🧏🏼‍♂ E12.0 deaf man: medium-light skin tone +1F9CF 1F3FD 200D 2642 FE0F ; fully-qualified # 🧏🏽‍♂️ E12.0 deaf man: medium skin tone +1F9CF 1F3FD 200D 2642 ; minimally-qualified # 🧏🏽‍♂ E12.0 deaf man: medium skin tone +1F9CF 1F3FE 200D 2642 FE0F ; fully-qualified # 🧏🏾‍♂️ E12.0 deaf man: medium-dark skin tone +1F9CF 1F3FE 200D 2642 ; minimally-qualified # 🧏🏾‍♂ E12.0 deaf man: medium-dark skin tone +1F9CF 1F3FF 200D 2642 FE0F ; fully-qualified # 🧏🏿‍♂️ E12.0 deaf man: dark skin tone +1F9CF 1F3FF 200D 2642 ; minimally-qualified # 🧏🏿‍♂ E12.0 deaf man: dark skin tone +1F9CF 200D 2640 FE0F ; fully-qualified # 🧏‍♀️ E12.0 deaf woman +1F9CF 200D 2640 ; minimally-qualified # 🧏‍♀ E12.0 deaf woman +1F9CF 1F3FB 200D 2640 FE0F ; fully-qualified # 🧏🏻‍♀️ E12.0 deaf woman: light skin tone +1F9CF 1F3FB 200D 2640 ; minimally-qualified # 🧏🏻‍♀ E12.0 deaf woman: light skin tone +1F9CF 1F3FC 200D 2640 FE0F ; fully-qualified # 🧏🏼‍♀️ E12.0 deaf woman: medium-light skin tone +1F9CF 1F3FC 200D 2640 ; minimally-qualified # 🧏🏼‍♀ E12.0 deaf woman: medium-light skin tone +1F9CF 1F3FD 200D 2640 FE0F ; fully-qualified # 🧏🏽‍♀️ E12.0 deaf woman: medium skin tone +1F9CF 1F3FD 200D 2640 ; minimally-qualified # 🧏🏽‍♀ E12.0 deaf woman: medium skin tone +1F9CF 1F3FE 200D 2640 FE0F ; fully-qualified # 🧏🏾‍♀️ E12.0 deaf woman: medium-dark skin tone +1F9CF 1F3FE 200D 2640 ; minimally-qualified # 🧏🏾‍♀ E12.0 deaf woman: medium-dark skin tone +1F9CF 1F3FF 200D 2640 FE0F ; fully-qualified # 🧏🏿‍♀️ E12.0 deaf woman: dark skin tone +1F9CF 1F3FF 200D 2640 ; minimally-qualified # 🧏🏿‍♀ E12.0 deaf woman: dark skin tone +1F647 ; fully-qualified # 🙇 E0.6 person bowing +1F647 1F3FB ; fully-qualified # 🙇🏻 E1.0 person bowing: light skin tone +1F647 1F3FC ; fully-qualified # 🙇🏼 E1.0 person bowing: medium-light skin tone +1F647 1F3FD ; fully-qualified # 🙇🏽 E1.0 person bowing: medium skin tone +1F647 1F3FE ; fully-qualified # 🙇🏾 E1.0 person bowing: medium-dark skin tone +1F647 1F3FF ; fully-qualified # 🙇🏿 E1.0 person bowing: dark skin tone +1F647 200D 2642 FE0F ; fully-qualified # 🙇‍♂️ E4.0 man bowing +1F647 200D 2642 ; minimally-qualified # 🙇‍♂ E4.0 man bowing +1F647 1F3FB 200D 2642 FE0F ; fully-qualified # 🙇🏻‍♂️ E4.0 man bowing: light skin tone +1F647 1F3FB 200D 2642 ; minimally-qualified # 🙇🏻‍♂ E4.0 man bowing: light skin tone +1F647 1F3FC 200D 2642 FE0F ; fully-qualified # 🙇🏼‍♂️ E4.0 man bowing: medium-light skin tone +1F647 1F3FC 200D 2642 ; minimally-qualified # 🙇🏼‍♂ E4.0 man bowing: medium-light skin tone +1F647 1F3FD 200D 2642 FE0F ; fully-qualified # 🙇🏽‍♂️ E4.0 man bowing: medium skin tone +1F647 1F3FD 200D 2642 ; minimally-qualified # 🙇🏽‍♂ E4.0 man bowing: medium skin tone +1F647 1F3FE 200D 2642 FE0F ; fully-qualified # 🙇🏾‍♂️ E4.0 man bowing: medium-dark skin tone +1F647 1F3FE 200D 2642 ; minimally-qualified # 🙇🏾‍♂ E4.0 man bowing: medium-dark skin tone +1F647 1F3FF 200D 2642 FE0F ; fully-qualified # 🙇🏿‍♂️ E4.0 man bowing: dark skin tone +1F647 1F3FF 200D 2642 ; minimally-qualified # 🙇🏿‍♂ E4.0 man bowing: dark skin tone +1F647 200D 2640 FE0F ; fully-qualified # 🙇‍♀️ E4.0 woman bowing +1F647 200D 2640 ; minimally-qualified # 🙇‍♀ E4.0 woman bowing +1F647 1F3FB 200D 2640 FE0F ; fully-qualified # 🙇🏻‍♀️ E4.0 woman bowing: light skin tone +1F647 1F3FB 200D 2640 ; minimally-qualified # 🙇🏻‍♀ E4.0 woman bowing: light skin tone +1F647 1F3FC 200D 2640 FE0F ; fully-qualified # 🙇🏼‍♀️ E4.0 woman bowing: medium-light skin tone +1F647 1F3FC 200D 2640 ; minimally-qualified # 🙇🏼‍♀ E4.0 woman bowing: medium-light skin tone +1F647 1F3FD 200D 2640 FE0F ; fully-qualified # 🙇🏽‍♀️ E4.0 woman bowing: medium skin tone +1F647 1F3FD 200D 2640 ; minimally-qualified # 🙇🏽‍♀ E4.0 woman bowing: medium skin tone +1F647 1F3FE 200D 2640 FE0F ; fully-qualified # 🙇🏾‍♀️ E4.0 woman bowing: medium-dark skin tone +1F647 1F3FE 200D 2640 ; minimally-qualified # 🙇🏾‍♀ E4.0 woman bowing: medium-dark skin tone +1F647 1F3FF 200D 2640 FE0F ; fully-qualified # 🙇🏿‍♀️ E4.0 woman bowing: dark skin tone +1F647 1F3FF 200D 2640 ; minimally-qualified # 🙇🏿‍♀ E4.0 woman bowing: dark skin tone +1F926 ; fully-qualified # 🤦 E3.0 person facepalming +1F926 1F3FB ; fully-qualified # 🤦🏻 E3.0 person facepalming: light skin tone +1F926 1F3FC ; fully-qualified # 🤦🏼 E3.0 person facepalming: medium-light skin tone +1F926 1F3FD ; fully-qualified # 🤦🏽 E3.0 person facepalming: medium skin tone +1F926 1F3FE ; fully-qualified # 🤦🏾 E3.0 person facepalming: medium-dark skin tone +1F926 1F3FF ; fully-qualified # 🤦🏿 E3.0 person facepalming: dark skin tone +1F926 200D 2642 FE0F ; fully-qualified # 🤦‍♂️ E4.0 man facepalming +1F926 200D 2642 ; minimally-qualified # 🤦‍♂ E4.0 man facepalming +1F926 1F3FB 200D 2642 FE0F ; fully-qualified # 🤦🏻‍♂️ E4.0 man facepalming: light skin tone +1F926 1F3FB 200D 2642 ; minimally-qualified # 🤦🏻‍♂ E4.0 man facepalming: light skin tone +1F926 1F3FC 200D 2642 FE0F ; fully-qualified # 🤦🏼‍♂️ E4.0 man facepalming: medium-light skin tone +1F926 1F3FC 200D 2642 ; minimally-qualified # 🤦🏼‍♂ E4.0 man facepalming: medium-light skin tone +1F926 1F3FD 200D 2642 FE0F ; fully-qualified # 🤦🏽‍♂️ E4.0 man facepalming: medium skin tone +1F926 1F3FD 200D 2642 ; minimally-qualified # 🤦🏽‍♂ E4.0 man facepalming: medium skin tone +1F926 1F3FE 200D 2642 FE0F ; fully-qualified # 🤦🏾‍♂️ E4.0 man facepalming: medium-dark skin tone +1F926 1F3FE 200D 2642 ; minimally-qualified # 🤦🏾‍♂ E4.0 man facepalming: medium-dark skin tone +1F926 1F3FF 200D 2642 FE0F ; fully-qualified # 🤦🏿‍♂️ E4.0 man facepalming: dark skin tone +1F926 1F3FF 200D 2642 ; minimally-qualified # 🤦🏿‍♂ E4.0 man facepalming: dark skin tone +1F926 200D 2640 FE0F ; fully-qualified # 🤦‍♀️ E4.0 woman facepalming +1F926 200D 2640 ; minimally-qualified # 🤦‍♀ E4.0 woman facepalming +1F926 1F3FB 200D 2640 FE0F ; fully-qualified # 🤦🏻‍♀️ E4.0 woman facepalming: light skin tone +1F926 1F3FB 200D 2640 ; minimally-qualified # 🤦🏻‍♀ E4.0 woman facepalming: light skin tone +1F926 1F3FC 200D 2640 FE0F ; fully-qualified # 🤦🏼‍♀️ E4.0 woman facepalming: medium-light skin tone +1F926 1F3FC 200D 2640 ; minimally-qualified # 🤦🏼‍♀ E4.0 woman facepalming: medium-light skin tone +1F926 1F3FD 200D 2640 FE0F ; fully-qualified # 🤦🏽‍♀️ E4.0 woman facepalming: medium skin tone +1F926 1F3FD 200D 2640 ; minimally-qualified # 🤦🏽‍♀ E4.0 woman facepalming: medium skin tone +1F926 1F3FE 200D 2640 FE0F ; fully-qualified # 🤦🏾‍♀️ E4.0 woman facepalming: medium-dark skin tone +1F926 1F3FE 200D 2640 ; minimally-qualified # 🤦🏾‍♀ E4.0 woman facepalming: medium-dark skin tone +1F926 1F3FF 200D 2640 FE0F ; fully-qualified # 🤦🏿‍♀️ E4.0 woman facepalming: dark skin tone +1F926 1F3FF 200D 2640 ; minimally-qualified # 🤦🏿‍♀ E4.0 woman facepalming: dark skin tone +1F937 ; fully-qualified # 🤷 E3.0 person shrugging +1F937 1F3FB ; fully-qualified # 🤷🏻 E3.0 person shrugging: light skin tone +1F937 1F3FC ; fully-qualified # 🤷🏼 E3.0 person shrugging: medium-light skin tone +1F937 1F3FD ; fully-qualified # 🤷🏽 E3.0 person shrugging: medium skin tone +1F937 1F3FE ; fully-qualified # 🤷🏾 E3.0 person shrugging: medium-dark skin tone +1F937 1F3FF ; fully-qualified # 🤷🏿 E3.0 person shrugging: dark skin tone +1F937 200D 2642 FE0F ; fully-qualified # 🤷‍♂️ E4.0 man shrugging +1F937 200D 2642 ; minimally-qualified # 🤷‍♂ E4.0 man shrugging +1F937 1F3FB 200D 2642 FE0F ; fully-qualified # 🤷🏻‍♂️ E4.0 man shrugging: light skin tone +1F937 1F3FB 200D 2642 ; minimally-qualified # 🤷🏻‍♂ E4.0 man shrugging: light skin tone +1F937 1F3FC 200D 2642 FE0F ; fully-qualified # 🤷🏼‍♂️ E4.0 man shrugging: medium-light skin tone +1F937 1F3FC 200D 2642 ; minimally-qualified # 🤷🏼‍♂ E4.0 man shrugging: medium-light skin tone +1F937 1F3FD 200D 2642 FE0F ; fully-qualified # 🤷🏽‍♂️ E4.0 man shrugging: medium skin tone +1F937 1F3FD 200D 2642 ; minimally-qualified # 🤷🏽‍♂ E4.0 man shrugging: medium skin tone +1F937 1F3FE 200D 2642 FE0F ; fully-qualified # 🤷🏾‍♂️ E4.0 man shrugging: medium-dark skin tone +1F937 1F3FE 200D 2642 ; minimally-qualified # 🤷🏾‍♂ E4.0 man shrugging: medium-dark skin tone +1F937 1F3FF 200D 2642 FE0F ; fully-qualified # 🤷🏿‍♂️ E4.0 man shrugging: dark skin tone +1F937 1F3FF 200D 2642 ; minimally-qualified # 🤷🏿‍♂ E4.0 man shrugging: dark skin tone +1F937 200D 2640 FE0F ; fully-qualified # 🤷‍♀️ E4.0 woman shrugging +1F937 200D 2640 ; minimally-qualified # 🤷‍♀ E4.0 woman shrugging +1F937 1F3FB 200D 2640 FE0F ; fully-qualified # 🤷🏻‍♀️ E4.0 woman shrugging: light skin tone +1F937 1F3FB 200D 2640 ; minimally-qualified # 🤷🏻‍♀ E4.0 woman shrugging: light skin tone +1F937 1F3FC 200D 2640 FE0F ; fully-qualified # 🤷🏼‍♀️ E4.0 woman shrugging: medium-light skin tone +1F937 1F3FC 200D 2640 ; minimally-qualified # 🤷🏼‍♀ E4.0 woman shrugging: medium-light skin tone +1F937 1F3FD 200D 2640 FE0F ; fully-qualified # 🤷🏽‍♀️ E4.0 woman shrugging: medium skin tone +1F937 1F3FD 200D 2640 ; minimally-qualified # 🤷🏽‍♀ E4.0 woman shrugging: medium skin tone +1F937 1F3FE 200D 2640 FE0F ; fully-qualified # 🤷🏾‍♀️ E4.0 woman shrugging: medium-dark skin tone +1F937 1F3FE 200D 2640 ; minimally-qualified # 🤷🏾‍♀ E4.0 woman shrugging: medium-dark skin tone +1F937 1F3FF 200D 2640 FE0F ; fully-qualified # 🤷🏿‍♀️ E4.0 woman shrugging: dark skin tone +1F937 1F3FF 200D 2640 ; minimally-qualified # 🤷🏿‍♀ E4.0 woman shrugging: dark skin tone + +# subgroup: person-role +1F9D1 200D 2695 FE0F ; fully-qualified # 🧑‍⚕️ E12.1 health worker +1F9D1 200D 2695 ; minimally-qualified # 🧑‍⚕ E12.1 health worker +1F9D1 1F3FB 200D 2695 FE0F ; fully-qualified # 🧑🏻‍⚕️ E12.1 health worker: light skin tone +1F9D1 1F3FB 200D 2695 ; minimally-qualified # 🧑🏻‍⚕ E12.1 health worker: light skin tone +1F9D1 1F3FC 200D 2695 FE0F ; fully-qualified # 🧑🏼‍⚕️ E12.1 health worker: medium-light skin tone +1F9D1 1F3FC 200D 2695 ; minimally-qualified # 🧑🏼‍⚕ E12.1 health worker: medium-light skin tone +1F9D1 1F3FD 200D 2695 FE0F ; fully-qualified # 🧑🏽‍⚕️ E12.1 health worker: medium skin tone +1F9D1 1F3FD 200D 2695 ; minimally-qualified # 🧑🏽‍⚕ E12.1 health worker: medium skin tone +1F9D1 1F3FE 200D 2695 FE0F ; fully-qualified # 🧑🏾‍⚕️ E12.1 health worker: medium-dark skin tone +1F9D1 1F3FE 200D 2695 ; minimally-qualified # 🧑🏾‍⚕ E12.1 health worker: medium-dark skin tone +1F9D1 1F3FF 200D 2695 FE0F ; fully-qualified # 🧑🏿‍⚕️ E12.1 health worker: dark skin tone +1F9D1 1F3FF 200D 2695 ; minimally-qualified # 🧑🏿‍⚕ E12.1 health worker: dark skin tone +1F468 200D 2695 FE0F ; fully-qualified # 👨‍⚕️ E4.0 man health worker +1F468 200D 2695 ; minimally-qualified # 👨‍⚕ E4.0 man health worker +1F468 1F3FB 200D 2695 FE0F ; fully-qualified # 👨🏻‍⚕️ E4.0 man health worker: light skin tone +1F468 1F3FB 200D 2695 ; minimally-qualified # 👨🏻‍⚕ E4.0 man health worker: light skin tone +1F468 1F3FC 200D 2695 FE0F ; fully-qualified # 👨🏼‍⚕️ E4.0 man health worker: medium-light skin tone +1F468 1F3FC 200D 2695 ; minimally-qualified # 👨🏼‍⚕ E4.0 man health worker: medium-light skin tone +1F468 1F3FD 200D 2695 FE0F ; fully-qualified # 👨🏽‍⚕️ E4.0 man health worker: medium skin tone +1F468 1F3FD 200D 2695 ; minimally-qualified # 👨🏽‍⚕ E4.0 man health worker: medium skin tone +1F468 1F3FE 200D 2695 FE0F ; fully-qualified # 👨🏾‍⚕️ E4.0 man health worker: medium-dark skin tone +1F468 1F3FE 200D 2695 ; minimally-qualified # 👨🏾‍⚕ E4.0 man health worker: medium-dark skin tone +1F468 1F3FF 200D 2695 FE0F ; fully-qualified # 👨🏿‍⚕️ E4.0 man health worker: dark skin tone +1F468 1F3FF 200D 2695 ; minimally-qualified # 👨🏿‍⚕ E4.0 man health worker: dark skin tone +1F469 200D 2695 FE0F ; fully-qualified # 👩‍⚕️ E4.0 woman health worker +1F469 200D 2695 ; minimally-qualified # 👩‍⚕ E4.0 woman health worker +1F469 1F3FB 200D 2695 FE0F ; fully-qualified # 👩🏻‍⚕️ E4.0 woman health worker: light skin tone +1F469 1F3FB 200D 2695 ; minimally-qualified # 👩🏻‍⚕ E4.0 woman health worker: light skin tone +1F469 1F3FC 200D 2695 FE0F ; fully-qualified # 👩🏼‍⚕️ E4.0 woman health worker: medium-light skin tone +1F469 1F3FC 200D 2695 ; minimally-qualified # 👩🏼‍⚕ E4.0 woman health worker: medium-light skin tone +1F469 1F3FD 200D 2695 FE0F ; fully-qualified # 👩🏽‍⚕️ E4.0 woman health worker: medium skin tone +1F469 1F3FD 200D 2695 ; minimally-qualified # 👩🏽‍⚕ E4.0 woman health worker: medium skin tone +1F469 1F3FE 200D 2695 FE0F ; fully-qualified # 👩🏾‍⚕️ E4.0 woman health worker: medium-dark skin tone +1F469 1F3FE 200D 2695 ; minimally-qualified # 👩🏾‍⚕ E4.0 woman health worker: medium-dark skin tone +1F469 1F3FF 200D 2695 FE0F ; fully-qualified # 👩🏿‍⚕️ E4.0 woman health worker: dark skin tone +1F469 1F3FF 200D 2695 ; minimally-qualified # 👩🏿‍⚕ E4.0 woman health worker: dark skin tone +1F9D1 200D 1F393 ; fully-qualified # 🧑‍🎓 E12.1 student +1F9D1 1F3FB 200D 1F393 ; fully-qualified # 🧑🏻‍🎓 E12.1 student: light skin tone +1F9D1 1F3FC 200D 1F393 ; fully-qualified # 🧑🏼‍🎓 E12.1 student: medium-light skin tone +1F9D1 1F3FD 200D 1F393 ; fully-qualified # 🧑🏽‍🎓 E12.1 student: medium skin tone +1F9D1 1F3FE 200D 1F393 ; fully-qualified # 🧑🏾‍🎓 E12.1 student: medium-dark skin tone +1F9D1 1F3FF 200D 1F393 ; fully-qualified # 🧑🏿‍🎓 E12.1 student: dark skin tone +1F468 200D 1F393 ; fully-qualified # 👨‍🎓 E4.0 man student +1F468 1F3FB 200D 1F393 ; fully-qualified # 👨🏻‍🎓 E4.0 man student: light skin tone +1F468 1F3FC 200D 1F393 ; fully-qualified # 👨🏼‍🎓 E4.0 man student: medium-light skin tone +1F468 1F3FD 200D 1F393 ; fully-qualified # 👨🏽‍🎓 E4.0 man student: medium skin tone +1F468 1F3FE 200D 1F393 ; fully-qualified # 👨🏾‍🎓 E4.0 man student: medium-dark skin tone +1F468 1F3FF 200D 1F393 ; fully-qualified # 👨🏿‍🎓 E4.0 man student: dark skin tone +1F469 200D 1F393 ; fully-qualified # 👩‍🎓 E4.0 woman student +1F469 1F3FB 200D 1F393 ; fully-qualified # 👩🏻‍🎓 E4.0 woman student: light skin tone +1F469 1F3FC 200D 1F393 ; fully-qualified # 👩🏼‍🎓 E4.0 woman student: medium-light skin tone +1F469 1F3FD 200D 1F393 ; fully-qualified # 👩🏽‍🎓 E4.0 woman student: medium skin tone +1F469 1F3FE 200D 1F393 ; fully-qualified # 👩🏾‍🎓 E4.0 woman student: medium-dark skin tone +1F469 1F3FF 200D 1F393 ; fully-qualified # 👩🏿‍🎓 E4.0 woman student: dark skin tone +1F9D1 200D 1F3EB ; fully-qualified # 🧑‍🏫 E12.1 teacher +1F9D1 1F3FB 200D 1F3EB ; fully-qualified # 🧑🏻‍🏫 E12.1 teacher: light skin tone +1F9D1 1F3FC 200D 1F3EB ; fully-qualified # 🧑🏼‍🏫 E12.1 teacher: medium-light skin tone +1F9D1 1F3FD 200D 1F3EB ; fully-qualified # 🧑🏽‍🏫 E12.1 teacher: medium skin tone +1F9D1 1F3FE 200D 1F3EB ; fully-qualified # 🧑🏾‍🏫 E12.1 teacher: medium-dark skin tone +1F9D1 1F3FF 200D 1F3EB ; fully-qualified # 🧑🏿‍🏫 E12.1 teacher: dark skin tone +1F468 200D 1F3EB ; fully-qualified # 👨‍🏫 E4.0 man teacher +1F468 1F3FB 200D 1F3EB ; fully-qualified # 👨🏻‍🏫 E4.0 man teacher: light skin tone +1F468 1F3FC 200D 1F3EB ; fully-qualified # 👨🏼‍🏫 E4.0 man teacher: medium-light skin tone +1F468 1F3FD 200D 1F3EB ; fully-qualified # 👨🏽‍🏫 E4.0 man teacher: medium skin tone +1F468 1F3FE 200D 1F3EB ; fully-qualified # 👨🏾‍🏫 E4.0 man teacher: medium-dark skin tone +1F468 1F3FF 200D 1F3EB ; fully-qualified # 👨🏿‍🏫 E4.0 man teacher: dark skin tone +1F469 200D 1F3EB ; fully-qualified # 👩‍🏫 E4.0 woman teacher +1F469 1F3FB 200D 1F3EB ; fully-qualified # 👩🏻‍🏫 E4.0 woman teacher: light skin tone +1F469 1F3FC 200D 1F3EB ; fully-qualified # 👩🏼‍🏫 E4.0 woman teacher: medium-light skin tone +1F469 1F3FD 200D 1F3EB ; fully-qualified # 👩🏽‍🏫 E4.0 woman teacher: medium skin tone +1F469 1F3FE 200D 1F3EB ; fully-qualified # 👩🏾‍🏫 E4.0 woman teacher: medium-dark skin tone +1F469 1F3FF 200D 1F3EB ; fully-qualified # 👩🏿‍🏫 E4.0 woman teacher: dark skin tone +1F9D1 200D 2696 FE0F ; fully-qualified # 🧑‍⚖️ E12.1 judge +1F9D1 200D 2696 ; minimally-qualified # 🧑‍⚖ E12.1 judge +1F9D1 1F3FB 200D 2696 FE0F ; fully-qualified # 🧑🏻‍⚖️ E12.1 judge: light skin tone +1F9D1 1F3FB 200D 2696 ; minimally-qualified # 🧑🏻‍⚖ E12.1 judge: light skin tone +1F9D1 1F3FC 200D 2696 FE0F ; fully-qualified # 🧑🏼‍⚖️ E12.1 judge: medium-light skin tone +1F9D1 1F3FC 200D 2696 ; minimally-qualified # 🧑🏼‍⚖ E12.1 judge: medium-light skin tone +1F9D1 1F3FD 200D 2696 FE0F ; fully-qualified # 🧑🏽‍⚖️ E12.1 judge: medium skin tone +1F9D1 1F3FD 200D 2696 ; minimally-qualified # 🧑🏽‍⚖ E12.1 judge: medium skin tone +1F9D1 1F3FE 200D 2696 FE0F ; fully-qualified # 🧑🏾‍⚖️ E12.1 judge: medium-dark skin tone +1F9D1 1F3FE 200D 2696 ; minimally-qualified # 🧑🏾‍⚖ E12.1 judge: medium-dark skin tone +1F9D1 1F3FF 200D 2696 FE0F ; fully-qualified # 🧑🏿‍⚖️ E12.1 judge: dark skin tone +1F9D1 1F3FF 200D 2696 ; minimally-qualified # 🧑🏿‍⚖ E12.1 judge: dark skin tone +1F468 200D 2696 FE0F ; fully-qualified # 👨‍⚖️ E4.0 man judge +1F468 200D 2696 ; minimally-qualified # 👨‍⚖ E4.0 man judge +1F468 1F3FB 200D 2696 FE0F ; fully-qualified # 👨🏻‍⚖️ E4.0 man judge: light skin tone +1F468 1F3FB 200D 2696 ; minimally-qualified # 👨🏻‍⚖ E4.0 man judge: light skin tone +1F468 1F3FC 200D 2696 FE0F ; fully-qualified # 👨🏼‍⚖️ E4.0 man judge: medium-light skin tone +1F468 1F3FC 200D 2696 ; minimally-qualified # 👨🏼‍⚖ E4.0 man judge: medium-light skin tone +1F468 1F3FD 200D 2696 FE0F ; fully-qualified # 👨🏽‍⚖️ E4.0 man judge: medium skin tone +1F468 1F3FD 200D 2696 ; minimally-qualified # 👨🏽‍⚖ E4.0 man judge: medium skin tone +1F468 1F3FE 200D 2696 FE0F ; fully-qualified # 👨🏾‍⚖️ E4.0 man judge: medium-dark skin tone +1F468 1F3FE 200D 2696 ; minimally-qualified # 👨🏾‍⚖ E4.0 man judge: medium-dark skin tone +1F468 1F3FF 200D 2696 FE0F ; fully-qualified # 👨🏿‍⚖️ E4.0 man judge: dark skin tone +1F468 1F3FF 200D 2696 ; minimally-qualified # 👨🏿‍⚖ E4.0 man judge: dark skin tone +1F469 200D 2696 FE0F ; fully-qualified # 👩‍⚖️ E4.0 woman judge +1F469 200D 2696 ; minimally-qualified # 👩‍⚖ E4.0 woman judge +1F469 1F3FB 200D 2696 FE0F ; fully-qualified # 👩🏻‍⚖️ E4.0 woman judge: light skin tone +1F469 1F3FB 200D 2696 ; minimally-qualified # 👩🏻‍⚖ E4.0 woman judge: light skin tone +1F469 1F3FC 200D 2696 FE0F ; fully-qualified # 👩🏼‍⚖️ E4.0 woman judge: medium-light skin tone +1F469 1F3FC 200D 2696 ; minimally-qualified # 👩🏼‍⚖ E4.0 woman judge: medium-light skin tone +1F469 1F3FD 200D 2696 FE0F ; fully-qualified # 👩🏽‍⚖️ E4.0 woman judge: medium skin tone +1F469 1F3FD 200D 2696 ; minimally-qualified # 👩🏽‍⚖ E4.0 woman judge: medium skin tone +1F469 1F3FE 200D 2696 FE0F ; fully-qualified # 👩🏾‍⚖️ E4.0 woman judge: medium-dark skin tone +1F469 1F3FE 200D 2696 ; minimally-qualified # 👩🏾‍⚖ E4.0 woman judge: medium-dark skin tone +1F469 1F3FF 200D 2696 FE0F ; fully-qualified # 👩🏿‍⚖️ E4.0 woman judge: dark skin tone +1F469 1F3FF 200D 2696 ; minimally-qualified # 👩🏿‍⚖ E4.0 woman judge: dark skin tone +1F9D1 200D 1F33E ; fully-qualified # 🧑‍🌾 E12.1 farmer +1F9D1 1F3FB 200D 1F33E ; fully-qualified # 🧑🏻‍🌾 E12.1 farmer: light skin tone +1F9D1 1F3FC 200D 1F33E ; fully-qualified # 🧑🏼‍🌾 E12.1 farmer: medium-light skin tone +1F9D1 1F3FD 200D 1F33E ; fully-qualified # 🧑🏽‍🌾 E12.1 farmer: medium skin tone +1F9D1 1F3FE 200D 1F33E ; fully-qualified # 🧑🏾‍🌾 E12.1 farmer: medium-dark skin tone +1F9D1 1F3FF 200D 1F33E ; fully-qualified # 🧑🏿‍🌾 E12.1 farmer: dark skin tone +1F468 200D 1F33E ; fully-qualified # 👨‍🌾 E4.0 man farmer +1F468 1F3FB 200D 1F33E ; fully-qualified # 👨🏻‍🌾 E4.0 man farmer: light skin tone +1F468 1F3FC 200D 1F33E ; fully-qualified # 👨🏼‍🌾 E4.0 man farmer: medium-light skin tone +1F468 1F3FD 200D 1F33E ; fully-qualified # 👨🏽‍🌾 E4.0 man farmer: medium skin tone +1F468 1F3FE 200D 1F33E ; fully-qualified # 👨🏾‍🌾 E4.0 man farmer: medium-dark skin tone +1F468 1F3FF 200D 1F33E ; fully-qualified # 👨🏿‍🌾 E4.0 man farmer: dark skin tone +1F469 200D 1F33E ; fully-qualified # 👩‍🌾 E4.0 woman farmer +1F469 1F3FB 200D 1F33E ; fully-qualified # 👩🏻‍🌾 E4.0 woman farmer: light skin tone +1F469 1F3FC 200D 1F33E ; fully-qualified # 👩🏼‍🌾 E4.0 woman farmer: medium-light skin tone +1F469 1F3FD 200D 1F33E ; fully-qualified # 👩🏽‍🌾 E4.0 woman farmer: medium skin tone +1F469 1F3FE 200D 1F33E ; fully-qualified # 👩🏾‍🌾 E4.0 woman farmer: medium-dark skin tone +1F469 1F3FF 200D 1F33E ; fully-qualified # 👩🏿‍🌾 E4.0 woman farmer: dark skin tone +1F9D1 200D 1F373 ; fully-qualified # 🧑‍🍳 E12.1 cook +1F9D1 1F3FB 200D 1F373 ; fully-qualified # 🧑🏻‍🍳 E12.1 cook: light skin tone +1F9D1 1F3FC 200D 1F373 ; fully-qualified # 🧑🏼‍🍳 E12.1 cook: medium-light skin tone +1F9D1 1F3FD 200D 1F373 ; fully-qualified # 🧑🏽‍🍳 E12.1 cook: medium skin tone +1F9D1 1F3FE 200D 1F373 ; fully-qualified # 🧑🏾‍🍳 E12.1 cook: medium-dark skin tone +1F9D1 1F3FF 200D 1F373 ; fully-qualified # 🧑🏿‍🍳 E12.1 cook: dark skin tone +1F468 200D 1F373 ; fully-qualified # 👨‍🍳 E4.0 man cook +1F468 1F3FB 200D 1F373 ; fully-qualified # 👨🏻‍🍳 E4.0 man cook: light skin tone +1F468 1F3FC 200D 1F373 ; fully-qualified # 👨🏼‍🍳 E4.0 man cook: medium-light skin tone +1F468 1F3FD 200D 1F373 ; fully-qualified # 👨🏽‍🍳 E4.0 man cook: medium skin tone +1F468 1F3FE 200D 1F373 ; fully-qualified # 👨🏾‍🍳 E4.0 man cook: medium-dark skin tone +1F468 1F3FF 200D 1F373 ; fully-qualified # 👨🏿‍🍳 E4.0 man cook: dark skin tone +1F469 200D 1F373 ; fully-qualified # 👩‍🍳 E4.0 woman cook +1F469 1F3FB 200D 1F373 ; fully-qualified # 👩🏻‍🍳 E4.0 woman cook: light skin tone +1F469 1F3FC 200D 1F373 ; fully-qualified # 👩🏼‍🍳 E4.0 woman cook: medium-light skin tone +1F469 1F3FD 200D 1F373 ; fully-qualified # 👩🏽‍🍳 E4.0 woman cook: medium skin tone +1F469 1F3FE 200D 1F373 ; fully-qualified # 👩🏾‍🍳 E4.0 woman cook: medium-dark skin tone +1F469 1F3FF 200D 1F373 ; fully-qualified # 👩🏿‍🍳 E4.0 woman cook: dark skin tone +1F9D1 200D 1F527 ; fully-qualified # 🧑‍🔧 E12.1 mechanic +1F9D1 1F3FB 200D 1F527 ; fully-qualified # 🧑🏻‍🔧 E12.1 mechanic: light skin tone +1F9D1 1F3FC 200D 1F527 ; fully-qualified # 🧑🏼‍🔧 E12.1 mechanic: medium-light skin tone +1F9D1 1F3FD 200D 1F527 ; fully-qualified # 🧑🏽‍🔧 E12.1 mechanic: medium skin tone +1F9D1 1F3FE 200D 1F527 ; fully-qualified # 🧑🏾‍🔧 E12.1 mechanic: medium-dark skin tone +1F9D1 1F3FF 200D 1F527 ; fully-qualified # 🧑🏿‍🔧 E12.1 mechanic: dark skin tone +1F468 200D 1F527 ; fully-qualified # 👨‍🔧 E4.0 man mechanic +1F468 1F3FB 200D 1F527 ; fully-qualified # 👨🏻‍🔧 E4.0 man mechanic: light skin tone +1F468 1F3FC 200D 1F527 ; fully-qualified # 👨🏼‍🔧 E4.0 man mechanic: medium-light skin tone +1F468 1F3FD 200D 1F527 ; fully-qualified # 👨🏽‍🔧 E4.0 man mechanic: medium skin tone +1F468 1F3FE 200D 1F527 ; fully-qualified # 👨🏾‍🔧 E4.0 man mechanic: medium-dark skin tone +1F468 1F3FF 200D 1F527 ; fully-qualified # 👨🏿‍🔧 E4.0 man mechanic: dark skin tone +1F469 200D 1F527 ; fully-qualified # 👩‍🔧 E4.0 woman mechanic +1F469 1F3FB 200D 1F527 ; fully-qualified # 👩🏻‍🔧 E4.0 woman mechanic: light skin tone +1F469 1F3FC 200D 1F527 ; fully-qualified # 👩🏼‍🔧 E4.0 woman mechanic: medium-light skin tone +1F469 1F3FD 200D 1F527 ; fully-qualified # 👩🏽‍🔧 E4.0 woman mechanic: medium skin tone +1F469 1F3FE 200D 1F527 ; fully-qualified # 👩🏾‍🔧 E4.0 woman mechanic: medium-dark skin tone +1F469 1F3FF 200D 1F527 ; fully-qualified # 👩🏿‍🔧 E4.0 woman mechanic: dark skin tone +1F9D1 200D 1F3ED ; fully-qualified # 🧑‍🏭 E12.1 factory worker +1F9D1 1F3FB 200D 1F3ED ; fully-qualified # 🧑🏻‍🏭 E12.1 factory worker: light skin tone +1F9D1 1F3FC 200D 1F3ED ; fully-qualified # 🧑🏼‍🏭 E12.1 factory worker: medium-light skin tone +1F9D1 1F3FD 200D 1F3ED ; fully-qualified # 🧑🏽‍🏭 E12.1 factory worker: medium skin tone +1F9D1 1F3FE 200D 1F3ED ; fully-qualified # 🧑🏾‍🏭 E12.1 factory worker: medium-dark skin tone +1F9D1 1F3FF 200D 1F3ED ; fully-qualified # 🧑🏿‍🏭 E12.1 factory worker: dark skin tone +1F468 200D 1F3ED ; fully-qualified # 👨‍🏭 E4.0 man factory worker +1F468 1F3FB 200D 1F3ED ; fully-qualified # 👨🏻‍🏭 E4.0 man factory worker: light skin tone +1F468 1F3FC 200D 1F3ED ; fully-qualified # 👨🏼‍🏭 E4.0 man factory worker: medium-light skin tone +1F468 1F3FD 200D 1F3ED ; fully-qualified # 👨🏽‍🏭 E4.0 man factory worker: medium skin tone +1F468 1F3FE 200D 1F3ED ; fully-qualified # 👨🏾‍🏭 E4.0 man factory worker: medium-dark skin tone +1F468 1F3FF 200D 1F3ED ; fully-qualified # 👨🏿‍🏭 E4.0 man factory worker: dark skin tone +1F469 200D 1F3ED ; fully-qualified # 👩‍🏭 E4.0 woman factory worker +1F469 1F3FB 200D 1F3ED ; fully-qualified # 👩🏻‍🏭 E4.0 woman factory worker: light skin tone +1F469 1F3FC 200D 1F3ED ; fully-qualified # 👩🏼‍🏭 E4.0 woman factory worker: medium-light skin tone +1F469 1F3FD 200D 1F3ED ; fully-qualified # 👩🏽‍🏭 E4.0 woman factory worker: medium skin tone +1F469 1F3FE 200D 1F3ED ; fully-qualified # 👩🏾‍🏭 E4.0 woman factory worker: medium-dark skin tone +1F469 1F3FF 200D 1F3ED ; fully-qualified # 👩🏿‍🏭 E4.0 woman factory worker: dark skin tone +1F9D1 200D 1F4BC ; fully-qualified # 🧑‍💼 E12.1 office worker +1F9D1 1F3FB 200D 1F4BC ; fully-qualified # 🧑🏻‍💼 E12.1 office worker: light skin tone +1F9D1 1F3FC 200D 1F4BC ; fully-qualified # 🧑🏼‍💼 E12.1 office worker: medium-light skin tone +1F9D1 1F3FD 200D 1F4BC ; fully-qualified # 🧑🏽‍💼 E12.1 office worker: medium skin tone +1F9D1 1F3FE 200D 1F4BC ; fully-qualified # 🧑🏾‍💼 E12.1 office worker: medium-dark skin tone +1F9D1 1F3FF 200D 1F4BC ; fully-qualified # 🧑🏿‍💼 E12.1 office worker: dark skin tone +1F468 200D 1F4BC ; fully-qualified # 👨‍💼 E4.0 man office worker +1F468 1F3FB 200D 1F4BC ; fully-qualified # 👨🏻‍💼 E4.0 man office worker: light skin tone +1F468 1F3FC 200D 1F4BC ; fully-qualified # 👨🏼‍💼 E4.0 man office worker: medium-light skin tone +1F468 1F3FD 200D 1F4BC ; fully-qualified # 👨🏽‍💼 E4.0 man office worker: medium skin tone +1F468 1F3FE 200D 1F4BC ; fully-qualified # 👨🏾‍💼 E4.0 man office worker: medium-dark skin tone +1F468 1F3FF 200D 1F4BC ; fully-qualified # 👨🏿‍💼 E4.0 man office worker: dark skin tone +1F469 200D 1F4BC ; fully-qualified # 👩‍💼 E4.0 woman office worker +1F469 1F3FB 200D 1F4BC ; fully-qualified # 👩🏻‍💼 E4.0 woman office worker: light skin tone +1F469 1F3FC 200D 1F4BC ; fully-qualified # 👩🏼‍💼 E4.0 woman office worker: medium-light skin tone +1F469 1F3FD 200D 1F4BC ; fully-qualified # 👩🏽‍💼 E4.0 woman office worker: medium skin tone +1F469 1F3FE 200D 1F4BC ; fully-qualified # 👩🏾‍💼 E4.0 woman office worker: medium-dark skin tone +1F469 1F3FF 200D 1F4BC ; fully-qualified # 👩🏿‍💼 E4.0 woman office worker: dark skin tone +1F9D1 200D 1F52C ; fully-qualified # 🧑‍🔬 E12.1 scientist +1F9D1 1F3FB 200D 1F52C ; fully-qualified # 🧑🏻‍🔬 E12.1 scientist: light skin tone +1F9D1 1F3FC 200D 1F52C ; fully-qualified # 🧑🏼‍🔬 E12.1 scientist: medium-light skin tone +1F9D1 1F3FD 200D 1F52C ; fully-qualified # 🧑🏽‍🔬 E12.1 scientist: medium skin tone +1F9D1 1F3FE 200D 1F52C ; fully-qualified # 🧑🏾‍🔬 E12.1 scientist: medium-dark skin tone +1F9D1 1F3FF 200D 1F52C ; fully-qualified # 🧑🏿‍🔬 E12.1 scientist: dark skin tone +1F468 200D 1F52C ; fully-qualified # 👨‍🔬 E4.0 man scientist +1F468 1F3FB 200D 1F52C ; fully-qualified # 👨🏻‍🔬 E4.0 man scientist: light skin tone +1F468 1F3FC 200D 1F52C ; fully-qualified # 👨🏼‍🔬 E4.0 man scientist: medium-light skin tone +1F468 1F3FD 200D 1F52C ; fully-qualified # 👨🏽‍🔬 E4.0 man scientist: medium skin tone +1F468 1F3FE 200D 1F52C ; fully-qualified # 👨🏾‍🔬 E4.0 man scientist: medium-dark skin tone +1F468 1F3FF 200D 1F52C ; fully-qualified # 👨🏿‍🔬 E4.0 man scientist: dark skin tone +1F469 200D 1F52C ; fully-qualified # 👩‍🔬 E4.0 woman scientist +1F469 1F3FB 200D 1F52C ; fully-qualified # 👩🏻‍🔬 E4.0 woman scientist: light skin tone +1F469 1F3FC 200D 1F52C ; fully-qualified # 👩🏼‍🔬 E4.0 woman scientist: medium-light skin tone +1F469 1F3FD 200D 1F52C ; fully-qualified # 👩🏽‍🔬 E4.0 woman scientist: medium skin tone +1F469 1F3FE 200D 1F52C ; fully-qualified # 👩🏾‍🔬 E4.0 woman scientist: medium-dark skin tone +1F469 1F3FF 200D 1F52C ; fully-qualified # 👩🏿‍🔬 E4.0 woman scientist: dark skin tone +1F9D1 200D 1F4BB ; fully-qualified # 🧑‍💻 E12.1 technologist +1F9D1 1F3FB 200D 1F4BB ; fully-qualified # 🧑🏻‍💻 E12.1 technologist: light skin tone +1F9D1 1F3FC 200D 1F4BB ; fully-qualified # 🧑🏼‍💻 E12.1 technologist: medium-light skin tone +1F9D1 1F3FD 200D 1F4BB ; fully-qualified # 🧑🏽‍💻 E12.1 technologist: medium skin tone +1F9D1 1F3FE 200D 1F4BB ; fully-qualified # 🧑🏾‍💻 E12.1 technologist: medium-dark skin tone +1F9D1 1F3FF 200D 1F4BB ; fully-qualified # 🧑🏿‍💻 E12.1 technologist: dark skin tone +1F468 200D 1F4BB ; fully-qualified # 👨‍💻 E4.0 man technologist +1F468 1F3FB 200D 1F4BB ; fully-qualified # 👨🏻‍💻 E4.0 man technologist: light skin tone +1F468 1F3FC 200D 1F4BB ; fully-qualified # 👨🏼‍💻 E4.0 man technologist: medium-light skin tone +1F468 1F3FD 200D 1F4BB ; fully-qualified # 👨🏽‍💻 E4.0 man technologist: medium skin tone +1F468 1F3FE 200D 1F4BB ; fully-qualified # 👨🏾‍💻 E4.0 man technologist: medium-dark skin tone +1F468 1F3FF 200D 1F4BB ; fully-qualified # 👨🏿‍💻 E4.0 man technologist: dark skin tone +1F469 200D 1F4BB ; fully-qualified # 👩‍💻 E4.0 woman technologist +1F469 1F3FB 200D 1F4BB ; fully-qualified # 👩🏻‍💻 E4.0 woman technologist: light skin tone +1F469 1F3FC 200D 1F4BB ; fully-qualified # 👩🏼‍💻 E4.0 woman technologist: medium-light skin tone +1F469 1F3FD 200D 1F4BB ; fully-qualified # 👩🏽‍💻 E4.0 woman technologist: medium skin tone +1F469 1F3FE 200D 1F4BB ; fully-qualified # 👩🏾‍💻 E4.0 woman technologist: medium-dark skin tone +1F469 1F3FF 200D 1F4BB ; fully-qualified # 👩🏿‍💻 E4.0 woman technologist: dark skin tone +1F9D1 200D 1F3A4 ; fully-qualified # 🧑‍🎤 E12.1 singer +1F9D1 1F3FB 200D 1F3A4 ; fully-qualified # 🧑🏻‍🎤 E12.1 singer: light skin tone +1F9D1 1F3FC 200D 1F3A4 ; fully-qualified # 🧑🏼‍🎤 E12.1 singer: medium-light skin tone +1F9D1 1F3FD 200D 1F3A4 ; fully-qualified # 🧑🏽‍🎤 E12.1 singer: medium skin tone +1F9D1 1F3FE 200D 1F3A4 ; fully-qualified # 🧑🏾‍🎤 E12.1 singer: medium-dark skin tone +1F9D1 1F3FF 200D 1F3A4 ; fully-qualified # 🧑🏿‍🎤 E12.1 singer: dark skin tone +1F468 200D 1F3A4 ; fully-qualified # 👨‍🎤 E4.0 man singer +1F468 1F3FB 200D 1F3A4 ; fully-qualified # 👨🏻‍🎤 E4.0 man singer: light skin tone +1F468 1F3FC 200D 1F3A4 ; fully-qualified # 👨🏼‍🎤 E4.0 man singer: medium-light skin tone +1F468 1F3FD 200D 1F3A4 ; fully-qualified # 👨🏽‍🎤 E4.0 man singer: medium skin tone +1F468 1F3FE 200D 1F3A4 ; fully-qualified # 👨🏾‍🎤 E4.0 man singer: medium-dark skin tone +1F468 1F3FF 200D 1F3A4 ; fully-qualified # 👨🏿‍🎤 E4.0 man singer: dark skin tone +1F469 200D 1F3A4 ; fully-qualified # 👩‍🎤 E4.0 woman singer +1F469 1F3FB 200D 1F3A4 ; fully-qualified # 👩🏻‍🎤 E4.0 woman singer: light skin tone +1F469 1F3FC 200D 1F3A4 ; fully-qualified # 👩🏼‍🎤 E4.0 woman singer: medium-light skin tone +1F469 1F3FD 200D 1F3A4 ; fully-qualified # 👩🏽‍🎤 E4.0 woman singer: medium skin tone +1F469 1F3FE 200D 1F3A4 ; fully-qualified # 👩🏾‍🎤 E4.0 woman singer: medium-dark skin tone +1F469 1F3FF 200D 1F3A4 ; fully-qualified # 👩🏿‍🎤 E4.0 woman singer: dark skin tone +1F9D1 200D 1F3A8 ; fully-qualified # 🧑‍🎨 E12.1 artist +1F9D1 1F3FB 200D 1F3A8 ; fully-qualified # 🧑🏻‍🎨 E12.1 artist: light skin tone +1F9D1 1F3FC 200D 1F3A8 ; fully-qualified # 🧑🏼‍🎨 E12.1 artist: medium-light skin tone +1F9D1 1F3FD 200D 1F3A8 ; fully-qualified # 🧑🏽‍🎨 E12.1 artist: medium skin tone +1F9D1 1F3FE 200D 1F3A8 ; fully-qualified # 🧑🏾‍🎨 E12.1 artist: medium-dark skin tone +1F9D1 1F3FF 200D 1F3A8 ; fully-qualified # 🧑🏿‍🎨 E12.1 artist: dark skin tone +1F468 200D 1F3A8 ; fully-qualified # 👨‍🎨 E4.0 man artist +1F468 1F3FB 200D 1F3A8 ; fully-qualified # 👨🏻‍🎨 E4.0 man artist: light skin tone +1F468 1F3FC 200D 1F3A8 ; fully-qualified # 👨🏼‍🎨 E4.0 man artist: medium-light skin tone +1F468 1F3FD 200D 1F3A8 ; fully-qualified # 👨🏽‍🎨 E4.0 man artist: medium skin tone +1F468 1F3FE 200D 1F3A8 ; fully-qualified # 👨🏾‍🎨 E4.0 man artist: medium-dark skin tone +1F468 1F3FF 200D 1F3A8 ; fully-qualified # 👨🏿‍🎨 E4.0 man artist: dark skin tone +1F469 200D 1F3A8 ; fully-qualified # 👩‍🎨 E4.0 woman artist +1F469 1F3FB 200D 1F3A8 ; fully-qualified # 👩🏻‍🎨 E4.0 woman artist: light skin tone +1F469 1F3FC 200D 1F3A8 ; fully-qualified # 👩🏼‍🎨 E4.0 woman artist: medium-light skin tone +1F469 1F3FD 200D 1F3A8 ; fully-qualified # 👩🏽‍🎨 E4.0 woman artist: medium skin tone +1F469 1F3FE 200D 1F3A8 ; fully-qualified # 👩🏾‍🎨 E4.0 woman artist: medium-dark skin tone +1F469 1F3FF 200D 1F3A8 ; fully-qualified # 👩🏿‍🎨 E4.0 woman artist: dark skin tone +1F9D1 200D 2708 FE0F ; fully-qualified # 🧑‍✈️ E12.1 pilot +1F9D1 200D 2708 ; minimally-qualified # 🧑‍✈ E12.1 pilot +1F9D1 1F3FB 200D 2708 FE0F ; fully-qualified # 🧑🏻‍✈️ E12.1 pilot: light skin tone +1F9D1 1F3FB 200D 2708 ; minimally-qualified # 🧑🏻‍✈ E12.1 pilot: light skin tone +1F9D1 1F3FC 200D 2708 FE0F ; fully-qualified # 🧑🏼‍✈️ E12.1 pilot: medium-light skin tone +1F9D1 1F3FC 200D 2708 ; minimally-qualified # 🧑🏼‍✈ E12.1 pilot: medium-light skin tone +1F9D1 1F3FD 200D 2708 FE0F ; fully-qualified # 🧑🏽‍✈️ E12.1 pilot: medium skin tone +1F9D1 1F3FD 200D 2708 ; minimally-qualified # 🧑🏽‍✈ E12.1 pilot: medium skin tone +1F9D1 1F3FE 200D 2708 FE0F ; fully-qualified # 🧑🏾‍✈️ E12.1 pilot: medium-dark skin tone +1F9D1 1F3FE 200D 2708 ; minimally-qualified # 🧑🏾‍✈ E12.1 pilot: medium-dark skin tone +1F9D1 1F3FF 200D 2708 FE0F ; fully-qualified # 🧑🏿‍✈️ E12.1 pilot: dark skin tone +1F9D1 1F3FF 200D 2708 ; minimally-qualified # 🧑🏿‍✈ E12.1 pilot: dark skin tone +1F468 200D 2708 FE0F ; fully-qualified # 👨‍✈️ E4.0 man pilot +1F468 200D 2708 ; minimally-qualified # 👨‍✈ E4.0 man pilot +1F468 1F3FB 200D 2708 FE0F ; fully-qualified # 👨🏻‍✈️ E4.0 man pilot: light skin tone +1F468 1F3FB 200D 2708 ; minimally-qualified # 👨🏻‍✈ E4.0 man pilot: light skin tone +1F468 1F3FC 200D 2708 FE0F ; fully-qualified # 👨🏼‍✈️ E4.0 man pilot: medium-light skin tone +1F468 1F3FC 200D 2708 ; minimally-qualified # 👨🏼‍✈ E4.0 man pilot: medium-light skin tone +1F468 1F3FD 200D 2708 FE0F ; fully-qualified # 👨🏽‍✈️ E4.0 man pilot: medium skin tone +1F468 1F3FD 200D 2708 ; minimally-qualified # 👨🏽‍✈ E4.0 man pilot: medium skin tone +1F468 1F3FE 200D 2708 FE0F ; fully-qualified # 👨🏾‍✈️ E4.0 man pilot: medium-dark skin tone +1F468 1F3FE 200D 2708 ; minimally-qualified # 👨🏾‍✈ E4.0 man pilot: medium-dark skin tone +1F468 1F3FF 200D 2708 FE0F ; fully-qualified # 👨🏿‍✈️ E4.0 man pilot: dark skin tone +1F468 1F3FF 200D 2708 ; minimally-qualified # 👨🏿‍✈ E4.0 man pilot: dark skin tone +1F469 200D 2708 FE0F ; fully-qualified # 👩‍✈️ E4.0 woman pilot +1F469 200D 2708 ; minimally-qualified # 👩‍✈ E4.0 woman pilot +1F469 1F3FB 200D 2708 FE0F ; fully-qualified # 👩🏻‍✈️ E4.0 woman pilot: light skin tone +1F469 1F3FB 200D 2708 ; minimally-qualified # 👩🏻‍✈ E4.0 woman pilot: light skin tone +1F469 1F3FC 200D 2708 FE0F ; fully-qualified # 👩🏼‍✈️ E4.0 woman pilot: medium-light skin tone +1F469 1F3FC 200D 2708 ; minimally-qualified # 👩🏼‍✈ E4.0 woman pilot: medium-light skin tone +1F469 1F3FD 200D 2708 FE0F ; fully-qualified # 👩🏽‍✈️ E4.0 woman pilot: medium skin tone +1F469 1F3FD 200D 2708 ; minimally-qualified # 👩🏽‍✈ E4.0 woman pilot: medium skin tone +1F469 1F3FE 200D 2708 FE0F ; fully-qualified # 👩🏾‍✈️ E4.0 woman pilot: medium-dark skin tone +1F469 1F3FE 200D 2708 ; minimally-qualified # 👩🏾‍✈ E4.0 woman pilot: medium-dark skin tone +1F469 1F3FF 200D 2708 FE0F ; fully-qualified # 👩🏿‍✈️ E4.0 woman pilot: dark skin tone +1F469 1F3FF 200D 2708 ; minimally-qualified # 👩🏿‍✈ E4.0 woman pilot: dark skin tone +1F9D1 200D 1F680 ; fully-qualified # 🧑‍🚀 E12.1 astronaut +1F9D1 1F3FB 200D 1F680 ; fully-qualified # 🧑🏻‍🚀 E12.1 astronaut: light skin tone +1F9D1 1F3FC 200D 1F680 ; fully-qualified # 🧑🏼‍🚀 E12.1 astronaut: medium-light skin tone +1F9D1 1F3FD 200D 1F680 ; fully-qualified # 🧑🏽‍🚀 E12.1 astronaut: medium skin tone +1F9D1 1F3FE 200D 1F680 ; fully-qualified # 🧑🏾‍🚀 E12.1 astronaut: medium-dark skin tone +1F9D1 1F3FF 200D 1F680 ; fully-qualified # 🧑🏿‍🚀 E12.1 astronaut: dark skin tone +1F468 200D 1F680 ; fully-qualified # 👨‍🚀 E4.0 man astronaut +1F468 1F3FB 200D 1F680 ; fully-qualified # 👨🏻‍🚀 E4.0 man astronaut: light skin tone +1F468 1F3FC 200D 1F680 ; fully-qualified # 👨🏼‍🚀 E4.0 man astronaut: medium-light skin tone +1F468 1F3FD 200D 1F680 ; fully-qualified # 👨🏽‍🚀 E4.0 man astronaut: medium skin tone +1F468 1F3FE 200D 1F680 ; fully-qualified # 👨🏾‍🚀 E4.0 man astronaut: medium-dark skin tone +1F468 1F3FF 200D 1F680 ; fully-qualified # 👨🏿‍🚀 E4.0 man astronaut: dark skin tone +1F469 200D 1F680 ; fully-qualified # 👩‍🚀 E4.0 woman astronaut +1F469 1F3FB 200D 1F680 ; fully-qualified # 👩🏻‍🚀 E4.0 woman astronaut: light skin tone +1F469 1F3FC 200D 1F680 ; fully-qualified # 👩🏼‍🚀 E4.0 woman astronaut: medium-light skin tone +1F469 1F3FD 200D 1F680 ; fully-qualified # 👩🏽‍🚀 E4.0 woman astronaut: medium skin tone +1F469 1F3FE 200D 1F680 ; fully-qualified # 👩🏾‍🚀 E4.0 woman astronaut: medium-dark skin tone +1F469 1F3FF 200D 1F680 ; fully-qualified # 👩🏿‍🚀 E4.0 woman astronaut: dark skin tone +1F9D1 200D 1F692 ; fully-qualified # 🧑‍🚒 E12.1 firefighter +1F9D1 1F3FB 200D 1F692 ; fully-qualified # 🧑🏻‍🚒 E12.1 firefighter: light skin tone +1F9D1 1F3FC 200D 1F692 ; fully-qualified # 🧑🏼‍🚒 E12.1 firefighter: medium-light skin tone +1F9D1 1F3FD 200D 1F692 ; fully-qualified # 🧑🏽‍🚒 E12.1 firefighter: medium skin tone +1F9D1 1F3FE 200D 1F692 ; fully-qualified # 🧑🏾‍🚒 E12.1 firefighter: medium-dark skin tone +1F9D1 1F3FF 200D 1F692 ; fully-qualified # 🧑🏿‍🚒 E12.1 firefighter: dark skin tone +1F468 200D 1F692 ; fully-qualified # 👨‍🚒 E4.0 man firefighter +1F468 1F3FB 200D 1F692 ; fully-qualified # 👨🏻‍🚒 E4.0 man firefighter: light skin tone +1F468 1F3FC 200D 1F692 ; fully-qualified # 👨🏼‍🚒 E4.0 man firefighter: medium-light skin tone +1F468 1F3FD 200D 1F692 ; fully-qualified # 👨🏽‍🚒 E4.0 man firefighter: medium skin tone +1F468 1F3FE 200D 1F692 ; fully-qualified # 👨🏾‍🚒 E4.0 man firefighter: medium-dark skin tone +1F468 1F3FF 200D 1F692 ; fully-qualified # 👨🏿‍🚒 E4.0 man firefighter: dark skin tone +1F469 200D 1F692 ; fully-qualified # 👩‍🚒 E4.0 woman firefighter +1F469 1F3FB 200D 1F692 ; fully-qualified # 👩🏻‍🚒 E4.0 woman firefighter: light skin tone +1F469 1F3FC 200D 1F692 ; fully-qualified # 👩🏼‍🚒 E4.0 woman firefighter: medium-light skin tone +1F469 1F3FD 200D 1F692 ; fully-qualified # 👩🏽‍🚒 E4.0 woman firefighter: medium skin tone +1F469 1F3FE 200D 1F692 ; fully-qualified # 👩🏾‍🚒 E4.0 woman firefighter: medium-dark skin tone +1F469 1F3FF 200D 1F692 ; fully-qualified # 👩🏿‍🚒 E4.0 woman firefighter: dark skin tone +1F46E ; fully-qualified # 👮 E0.6 police officer +1F46E 1F3FB ; fully-qualified # 👮🏻 E1.0 police officer: light skin tone +1F46E 1F3FC ; fully-qualified # 👮🏼 E1.0 police officer: medium-light skin tone +1F46E 1F3FD ; fully-qualified # 👮🏽 E1.0 police officer: medium skin tone +1F46E 1F3FE ; fully-qualified # 👮🏾 E1.0 police officer: medium-dark skin tone +1F46E 1F3FF ; fully-qualified # 👮🏿 E1.0 police officer: dark skin tone +1F46E 200D 2642 FE0F ; fully-qualified # 👮‍♂️ E4.0 man police officer +1F46E 200D 2642 ; minimally-qualified # 👮‍♂ E4.0 man police officer +1F46E 1F3FB 200D 2642 FE0F ; fully-qualified # 👮🏻‍♂️ E4.0 man police officer: light skin tone +1F46E 1F3FB 200D 2642 ; minimally-qualified # 👮🏻‍♂ E4.0 man police officer: light skin tone +1F46E 1F3FC 200D 2642 FE0F ; fully-qualified # 👮🏼‍♂️ E4.0 man police officer: medium-light skin tone +1F46E 1F3FC 200D 2642 ; minimally-qualified # 👮🏼‍♂ E4.0 man police officer: medium-light skin tone +1F46E 1F3FD 200D 2642 FE0F ; fully-qualified # 👮🏽‍♂️ E4.0 man police officer: medium skin tone +1F46E 1F3FD 200D 2642 ; minimally-qualified # 👮🏽‍♂ E4.0 man police officer: medium skin tone +1F46E 1F3FE 200D 2642 FE0F ; fully-qualified # 👮🏾‍♂️ E4.0 man police officer: medium-dark skin tone +1F46E 1F3FE 200D 2642 ; minimally-qualified # 👮🏾‍♂ E4.0 man police officer: medium-dark skin tone +1F46E 1F3FF 200D 2642 FE0F ; fully-qualified # 👮🏿‍♂️ E4.0 man police officer: dark skin tone +1F46E 1F3FF 200D 2642 ; minimally-qualified # 👮🏿‍♂ E4.0 man police officer: dark skin tone +1F46E 200D 2640 FE0F ; fully-qualified # 👮‍♀️ E4.0 woman police officer +1F46E 200D 2640 ; minimally-qualified # 👮‍♀ E4.0 woman police officer +1F46E 1F3FB 200D 2640 FE0F ; fully-qualified # 👮🏻‍♀️ E4.0 woman police officer: light skin tone +1F46E 1F3FB 200D 2640 ; minimally-qualified # 👮🏻‍♀ E4.0 woman police officer: light skin tone +1F46E 1F3FC 200D 2640 FE0F ; fully-qualified # 👮🏼‍♀️ E4.0 woman police officer: medium-light skin tone +1F46E 1F3FC 200D 2640 ; minimally-qualified # 👮🏼‍♀ E4.0 woman police officer: medium-light skin tone +1F46E 1F3FD 200D 2640 FE0F ; fully-qualified # 👮🏽‍♀️ E4.0 woman police officer: medium skin tone +1F46E 1F3FD 200D 2640 ; minimally-qualified # 👮🏽‍♀ E4.0 woman police officer: medium skin tone +1F46E 1F3FE 200D 2640 FE0F ; fully-qualified # 👮🏾‍♀️ E4.0 woman police officer: medium-dark skin tone +1F46E 1F3FE 200D 2640 ; minimally-qualified # 👮🏾‍♀ E4.0 woman police officer: medium-dark skin tone +1F46E 1F3FF 200D 2640 FE0F ; fully-qualified # 👮🏿‍♀️ E4.0 woman police officer: dark skin tone +1F46E 1F3FF 200D 2640 ; minimally-qualified # 👮🏿‍♀ E4.0 woman police officer: dark skin tone +1F575 FE0F ; fully-qualified # 🕵️ E0.7 detective +1F575 ; unqualified # 🕵 E0.7 detective +1F575 1F3FB ; fully-qualified # 🕵🏻 E2.0 detective: light skin tone +1F575 1F3FC ; fully-qualified # 🕵🏼 E2.0 detective: medium-light skin tone +1F575 1F3FD ; fully-qualified # 🕵🏽 E2.0 detective: medium skin tone +1F575 1F3FE ; fully-qualified # 🕵🏾 E2.0 detective: medium-dark skin tone +1F575 1F3FF ; fully-qualified # 🕵🏿 E2.0 detective: dark skin tone +1F575 FE0F 200D 2642 FE0F ; fully-qualified # 🕵️‍♂️ E4.0 man detective +1F575 200D 2642 FE0F ; unqualified # 🕵‍♂️ E4.0 man detective +1F575 FE0F 200D 2642 ; minimally-qualified # 🕵️‍♂ E4.0 man detective +1F575 200D 2642 ; unqualified # 🕵‍♂ E4.0 man detective +1F575 1F3FB 200D 2642 FE0F ; fully-qualified # 🕵🏻‍♂️ E4.0 man detective: light skin tone +1F575 1F3FB 200D 2642 ; minimally-qualified # 🕵🏻‍♂ E4.0 man detective: light skin tone +1F575 1F3FC 200D 2642 FE0F ; fully-qualified # 🕵🏼‍♂️ E4.0 man detective: medium-light skin tone +1F575 1F3FC 200D 2642 ; minimally-qualified # 🕵🏼‍♂ E4.0 man detective: medium-light skin tone +1F575 1F3FD 200D 2642 FE0F ; fully-qualified # 🕵🏽‍♂️ E4.0 man detective: medium skin tone +1F575 1F3FD 200D 2642 ; minimally-qualified # 🕵🏽‍♂ E4.0 man detective: medium skin tone +1F575 1F3FE 200D 2642 FE0F ; fully-qualified # 🕵🏾‍♂️ E4.0 man detective: medium-dark skin tone +1F575 1F3FE 200D 2642 ; minimally-qualified # 🕵🏾‍♂ E4.0 man detective: medium-dark skin tone +1F575 1F3FF 200D 2642 FE0F ; fully-qualified # 🕵🏿‍♂️ E4.0 man detective: dark skin tone +1F575 1F3FF 200D 2642 ; minimally-qualified # 🕵🏿‍♂ E4.0 man detective: dark skin tone +1F575 FE0F 200D 2640 FE0F ; fully-qualified # 🕵️‍♀️ E4.0 woman detective +1F575 200D 2640 FE0F ; unqualified # 🕵‍♀️ E4.0 woman detective +1F575 FE0F 200D 2640 ; minimally-qualified # 🕵️‍♀ E4.0 woman detective +1F575 200D 2640 ; unqualified # 🕵‍♀ E4.0 woman detective +1F575 1F3FB 200D 2640 FE0F ; fully-qualified # 🕵🏻‍♀️ E4.0 woman detective: light skin tone +1F575 1F3FB 200D 2640 ; minimally-qualified # 🕵🏻‍♀ E4.0 woman detective: light skin tone +1F575 1F3FC 200D 2640 FE0F ; fully-qualified # 🕵🏼‍♀️ E4.0 woman detective: medium-light skin tone +1F575 1F3FC 200D 2640 ; minimally-qualified # 🕵🏼‍♀ E4.0 woman detective: medium-light skin tone +1F575 1F3FD 200D 2640 FE0F ; fully-qualified # 🕵🏽‍♀️ E4.0 woman detective: medium skin tone +1F575 1F3FD 200D 2640 ; minimally-qualified # 🕵🏽‍♀ E4.0 woman detective: medium skin tone +1F575 1F3FE 200D 2640 FE0F ; fully-qualified # 🕵🏾‍♀️ E4.0 woman detective: medium-dark skin tone +1F575 1F3FE 200D 2640 ; minimally-qualified # 🕵🏾‍♀ E4.0 woman detective: medium-dark skin tone +1F575 1F3FF 200D 2640 FE0F ; fully-qualified # 🕵🏿‍♀️ E4.0 woman detective: dark skin tone +1F575 1F3FF 200D 2640 ; minimally-qualified # 🕵🏿‍♀ E4.0 woman detective: dark skin tone +1F482 ; fully-qualified # 💂 E0.6 guard +1F482 1F3FB ; fully-qualified # 💂🏻 E1.0 guard: light skin tone +1F482 1F3FC ; fully-qualified # 💂🏼 E1.0 guard: medium-light skin tone +1F482 1F3FD ; fully-qualified # 💂🏽 E1.0 guard: medium skin tone +1F482 1F3FE ; fully-qualified # 💂🏾 E1.0 guard: medium-dark skin tone +1F482 1F3FF ; fully-qualified # 💂🏿 E1.0 guard: dark skin tone +1F482 200D 2642 FE0F ; fully-qualified # 💂‍♂️ E4.0 man guard +1F482 200D 2642 ; minimally-qualified # 💂‍♂ E4.0 man guard +1F482 1F3FB 200D 2642 FE0F ; fully-qualified # 💂🏻‍♂️ E4.0 man guard: light skin tone +1F482 1F3FB 200D 2642 ; minimally-qualified # 💂🏻‍♂ E4.0 man guard: light skin tone +1F482 1F3FC 200D 2642 FE0F ; fully-qualified # 💂🏼‍♂️ E4.0 man guard: medium-light skin tone +1F482 1F3FC 200D 2642 ; minimally-qualified # 💂🏼‍♂ E4.0 man guard: medium-light skin tone +1F482 1F3FD 200D 2642 FE0F ; fully-qualified # 💂🏽‍♂️ E4.0 man guard: medium skin tone +1F482 1F3FD 200D 2642 ; minimally-qualified # 💂🏽‍♂ E4.0 man guard: medium skin tone +1F482 1F3FE 200D 2642 FE0F ; fully-qualified # 💂🏾‍♂️ E4.0 man guard: medium-dark skin tone +1F482 1F3FE 200D 2642 ; minimally-qualified # 💂🏾‍♂ E4.0 man guard: medium-dark skin tone +1F482 1F3FF 200D 2642 FE0F ; fully-qualified # 💂🏿‍♂️ E4.0 man guard: dark skin tone +1F482 1F3FF 200D 2642 ; minimally-qualified # 💂🏿‍♂ E4.0 man guard: dark skin tone +1F482 200D 2640 FE0F ; fully-qualified # 💂‍♀️ E4.0 woman guard +1F482 200D 2640 ; minimally-qualified # 💂‍♀ E4.0 woman guard +1F482 1F3FB 200D 2640 FE0F ; fully-qualified # 💂🏻‍♀️ E4.0 woman guard: light skin tone +1F482 1F3FB 200D 2640 ; minimally-qualified # 💂🏻‍♀ E4.0 woman guard: light skin tone +1F482 1F3FC 200D 2640 FE0F ; fully-qualified # 💂🏼‍♀️ E4.0 woman guard: medium-light skin tone +1F482 1F3FC 200D 2640 ; minimally-qualified # 💂🏼‍♀ E4.0 woman guard: medium-light skin tone +1F482 1F3FD 200D 2640 FE0F ; fully-qualified # 💂🏽‍♀️ E4.0 woman guard: medium skin tone +1F482 1F3FD 200D 2640 ; minimally-qualified # 💂🏽‍♀ E4.0 woman guard: medium skin tone +1F482 1F3FE 200D 2640 FE0F ; fully-qualified # 💂🏾‍♀️ E4.0 woman guard: medium-dark skin tone +1F482 1F3FE 200D 2640 ; minimally-qualified # 💂🏾‍♀ E4.0 woman guard: medium-dark skin tone +1F482 1F3FF 200D 2640 FE0F ; fully-qualified # 💂🏿‍♀️ E4.0 woman guard: dark skin tone +1F482 1F3FF 200D 2640 ; minimally-qualified # 💂🏿‍♀ E4.0 woman guard: dark skin tone +1F977 ; fully-qualified # 🥷 E13.0 ninja +1F977 1F3FB ; fully-qualified # 🥷🏻 E13.0 ninja: light skin tone +1F977 1F3FC ; fully-qualified # 🥷🏼 E13.0 ninja: medium-light skin tone +1F977 1F3FD ; fully-qualified # 🥷🏽 E13.0 ninja: medium skin tone +1F977 1F3FE ; fully-qualified # 🥷🏾 E13.0 ninja: medium-dark skin tone +1F977 1F3FF ; fully-qualified # 🥷🏿 E13.0 ninja: dark skin tone +1F477 ; fully-qualified # 👷 E0.6 construction worker +1F477 1F3FB ; fully-qualified # 👷🏻 E1.0 construction worker: light skin tone +1F477 1F3FC ; fully-qualified # 👷🏼 E1.0 construction worker: medium-light skin tone +1F477 1F3FD ; fully-qualified # 👷🏽 E1.0 construction worker: medium skin tone +1F477 1F3FE ; fully-qualified # 👷🏾 E1.0 construction worker: medium-dark skin tone +1F477 1F3FF ; fully-qualified # 👷🏿 E1.0 construction worker: dark skin tone +1F477 200D 2642 FE0F ; fully-qualified # 👷‍♂️ E4.0 man construction worker +1F477 200D 2642 ; minimally-qualified # 👷‍♂ E4.0 man construction worker +1F477 1F3FB 200D 2642 FE0F ; fully-qualified # 👷🏻‍♂️ E4.0 man construction worker: light skin tone +1F477 1F3FB 200D 2642 ; minimally-qualified # 👷🏻‍♂ E4.0 man construction worker: light skin tone +1F477 1F3FC 200D 2642 FE0F ; fully-qualified # 👷🏼‍♂️ E4.0 man construction worker: medium-light skin tone +1F477 1F3FC 200D 2642 ; minimally-qualified # 👷🏼‍♂ E4.0 man construction worker: medium-light skin tone +1F477 1F3FD 200D 2642 FE0F ; fully-qualified # 👷🏽‍♂️ E4.0 man construction worker: medium skin tone +1F477 1F3FD 200D 2642 ; minimally-qualified # 👷🏽‍♂ E4.0 man construction worker: medium skin tone +1F477 1F3FE 200D 2642 FE0F ; fully-qualified # 👷🏾‍♂️ E4.0 man construction worker: medium-dark skin tone +1F477 1F3FE 200D 2642 ; minimally-qualified # 👷🏾‍♂ E4.0 man construction worker: medium-dark skin tone +1F477 1F3FF 200D 2642 FE0F ; fully-qualified # 👷🏿‍♂️ E4.0 man construction worker: dark skin tone +1F477 1F3FF 200D 2642 ; minimally-qualified # 👷🏿‍♂ E4.0 man construction worker: dark skin tone +1F477 200D 2640 FE0F ; fully-qualified # 👷‍♀️ E4.0 woman construction worker +1F477 200D 2640 ; minimally-qualified # 👷‍♀ E4.0 woman construction worker +1F477 1F3FB 200D 2640 FE0F ; fully-qualified # 👷🏻‍♀️ E4.0 woman construction worker: light skin tone +1F477 1F3FB 200D 2640 ; minimally-qualified # 👷🏻‍♀ E4.0 woman construction worker: light skin tone +1F477 1F3FC 200D 2640 FE0F ; fully-qualified # 👷🏼‍♀️ E4.0 woman construction worker: medium-light skin tone +1F477 1F3FC 200D 2640 ; minimally-qualified # 👷🏼‍♀ E4.0 woman construction worker: medium-light skin tone +1F477 1F3FD 200D 2640 FE0F ; fully-qualified # 👷🏽‍♀️ E4.0 woman construction worker: medium skin tone +1F477 1F3FD 200D 2640 ; minimally-qualified # 👷🏽‍♀ E4.0 woman construction worker: medium skin tone +1F477 1F3FE 200D 2640 FE0F ; fully-qualified # 👷🏾‍♀️ E4.0 woman construction worker: medium-dark skin tone +1F477 1F3FE 200D 2640 ; minimally-qualified # 👷🏾‍♀ E4.0 woman construction worker: medium-dark skin tone +1F477 1F3FF 200D 2640 FE0F ; fully-qualified # 👷🏿‍♀️ E4.0 woman construction worker: dark skin tone +1F477 1F3FF 200D 2640 ; minimally-qualified # 👷🏿‍♀ E4.0 woman construction worker: dark skin tone +1FAC5 ; fully-qualified # 🫅 E14.0 person with crown +1FAC5 1F3FB ; fully-qualified # 🫅🏻 E14.0 person with crown: light skin tone +1FAC5 1F3FC ; fully-qualified # 🫅🏼 E14.0 person with crown: medium-light skin tone +1FAC5 1F3FD ; fully-qualified # 🫅🏽 E14.0 person with crown: medium skin tone +1FAC5 1F3FE ; fully-qualified # 🫅🏾 E14.0 person with crown: medium-dark skin tone +1FAC5 1F3FF ; fully-qualified # 🫅🏿 E14.0 person with crown: dark skin tone +1F934 ; fully-qualified # 🤴 E3.0 prince +1F934 1F3FB ; fully-qualified # 🤴🏻 E3.0 prince: light skin tone +1F934 1F3FC ; fully-qualified # 🤴🏼 E3.0 prince: medium-light skin tone +1F934 1F3FD ; fully-qualified # 🤴🏽 E3.0 prince: medium skin tone +1F934 1F3FE ; fully-qualified # 🤴🏾 E3.0 prince: medium-dark skin tone +1F934 1F3FF ; fully-qualified # 🤴🏿 E3.0 prince: dark skin tone +1F478 ; fully-qualified # 👸 E0.6 princess +1F478 1F3FB ; fully-qualified # 👸🏻 E1.0 princess: light skin tone +1F478 1F3FC ; fully-qualified # 👸🏼 E1.0 princess: medium-light skin tone +1F478 1F3FD ; fully-qualified # 👸🏽 E1.0 princess: medium skin tone +1F478 1F3FE ; fully-qualified # 👸🏾 E1.0 princess: medium-dark skin tone +1F478 1F3FF ; fully-qualified # 👸🏿 E1.0 princess: dark skin tone +1F473 ; fully-qualified # 👳 E0.6 person wearing turban +1F473 1F3FB ; fully-qualified # 👳🏻 E1.0 person wearing turban: light skin tone +1F473 1F3FC ; fully-qualified # 👳🏼 E1.0 person wearing turban: medium-light skin tone +1F473 1F3FD ; fully-qualified # 👳🏽 E1.0 person wearing turban: medium skin tone +1F473 1F3FE ; fully-qualified # 👳🏾 E1.0 person wearing turban: medium-dark skin tone +1F473 1F3FF ; fully-qualified # 👳🏿 E1.0 person wearing turban: dark skin tone +1F473 200D 2642 FE0F ; fully-qualified # 👳‍♂️ E4.0 man wearing turban +1F473 200D 2642 ; minimally-qualified # 👳‍♂ E4.0 man wearing turban +1F473 1F3FB 200D 2642 FE0F ; fully-qualified # 👳🏻‍♂️ E4.0 man wearing turban: light skin tone +1F473 1F3FB 200D 2642 ; minimally-qualified # 👳🏻‍♂ E4.0 man wearing turban: light skin tone +1F473 1F3FC 200D 2642 FE0F ; fully-qualified # 👳🏼‍♂️ E4.0 man wearing turban: medium-light skin tone +1F473 1F3FC 200D 2642 ; minimally-qualified # 👳🏼‍♂ E4.0 man wearing turban: medium-light skin tone +1F473 1F3FD 200D 2642 FE0F ; fully-qualified # 👳🏽‍♂️ E4.0 man wearing turban: medium skin tone +1F473 1F3FD 200D 2642 ; minimally-qualified # 👳🏽‍♂ E4.0 man wearing turban: medium skin tone +1F473 1F3FE 200D 2642 FE0F ; fully-qualified # 👳🏾‍♂️ E4.0 man wearing turban: medium-dark skin tone +1F473 1F3FE 200D 2642 ; minimally-qualified # 👳🏾‍♂ E4.0 man wearing turban: medium-dark skin tone +1F473 1F3FF 200D 2642 FE0F ; fully-qualified # 👳🏿‍♂️ E4.0 man wearing turban: dark skin tone +1F473 1F3FF 200D 2642 ; minimally-qualified # 👳🏿‍♂ E4.0 man wearing turban: dark skin tone +1F473 200D 2640 FE0F ; fully-qualified # 👳‍♀️ E4.0 woman wearing turban +1F473 200D 2640 ; minimally-qualified # 👳‍♀ E4.0 woman wearing turban +1F473 1F3FB 200D 2640 FE0F ; fully-qualified # 👳🏻‍♀️ E4.0 woman wearing turban: light skin tone +1F473 1F3FB 200D 2640 ; minimally-qualified # 👳🏻‍♀ E4.0 woman wearing turban: light skin tone +1F473 1F3FC 200D 2640 FE0F ; fully-qualified # 👳🏼‍♀️ E4.0 woman wearing turban: medium-light skin tone +1F473 1F3FC 200D 2640 ; minimally-qualified # 👳🏼‍♀ E4.0 woman wearing turban: medium-light skin tone +1F473 1F3FD 200D 2640 FE0F ; fully-qualified # 👳🏽‍♀️ E4.0 woman wearing turban: medium skin tone +1F473 1F3FD 200D 2640 ; minimally-qualified # 👳🏽‍♀ E4.0 woman wearing turban: medium skin tone +1F473 1F3FE 200D 2640 FE0F ; fully-qualified # 👳🏾‍♀️ E4.0 woman wearing turban: medium-dark skin tone +1F473 1F3FE 200D 2640 ; minimally-qualified # 👳🏾‍♀ E4.0 woman wearing turban: medium-dark skin tone +1F473 1F3FF 200D 2640 FE0F ; fully-qualified # 👳🏿‍♀️ E4.0 woman wearing turban: dark skin tone +1F473 1F3FF 200D 2640 ; minimally-qualified # 👳🏿‍♀ E4.0 woman wearing turban: dark skin tone +1F472 ; fully-qualified # 👲 E0.6 person with skullcap +1F472 1F3FB ; fully-qualified # 👲🏻 E1.0 person with skullcap: light skin tone +1F472 1F3FC ; fully-qualified # 👲🏼 E1.0 person with skullcap: medium-light skin tone +1F472 1F3FD ; fully-qualified # 👲🏽 E1.0 person with skullcap: medium skin tone +1F472 1F3FE ; fully-qualified # 👲🏾 E1.0 person with skullcap: medium-dark skin tone +1F472 1F3FF ; fully-qualified # 👲🏿 E1.0 person with skullcap: dark skin tone +1F9D5 ; fully-qualified # 🧕 E5.0 woman with headscarf +1F9D5 1F3FB ; fully-qualified # 🧕🏻 E5.0 woman with headscarf: light skin tone +1F9D5 1F3FC ; fully-qualified # 🧕🏼 E5.0 woman with headscarf: medium-light skin tone +1F9D5 1F3FD ; fully-qualified # 🧕🏽 E5.0 woman with headscarf: medium skin tone +1F9D5 1F3FE ; fully-qualified # 🧕🏾 E5.0 woman with headscarf: medium-dark skin tone +1F9D5 1F3FF ; fully-qualified # 🧕🏿 E5.0 woman with headscarf: dark skin tone +1F935 ; fully-qualified # 🤵 E3.0 person in tuxedo +1F935 1F3FB ; fully-qualified # 🤵🏻 E3.0 person in tuxedo: light skin tone +1F935 1F3FC ; fully-qualified # 🤵🏼 E3.0 person in tuxedo: medium-light skin tone +1F935 1F3FD ; fully-qualified # 🤵🏽 E3.0 person in tuxedo: medium skin tone +1F935 1F3FE ; fully-qualified # 🤵🏾 E3.0 person in tuxedo: medium-dark skin tone +1F935 1F3FF ; fully-qualified # 🤵🏿 E3.0 person in tuxedo: dark skin tone +1F935 200D 2642 FE0F ; fully-qualified # 🤵‍♂️ E13.0 man in tuxedo +1F935 200D 2642 ; minimally-qualified # 🤵‍♂ E13.0 man in tuxedo +1F935 1F3FB 200D 2642 FE0F ; fully-qualified # 🤵🏻‍♂️ E13.0 man in tuxedo: light skin tone +1F935 1F3FB 200D 2642 ; minimally-qualified # 🤵🏻‍♂ E13.0 man in tuxedo: light skin tone +1F935 1F3FC 200D 2642 FE0F ; fully-qualified # 🤵🏼‍♂️ E13.0 man in tuxedo: medium-light skin tone +1F935 1F3FC 200D 2642 ; minimally-qualified # 🤵🏼‍♂ E13.0 man in tuxedo: medium-light skin tone +1F935 1F3FD 200D 2642 FE0F ; fully-qualified # 🤵🏽‍♂️ E13.0 man in tuxedo: medium skin tone +1F935 1F3FD 200D 2642 ; minimally-qualified # 🤵🏽‍♂ E13.0 man in tuxedo: medium skin tone +1F935 1F3FE 200D 2642 FE0F ; fully-qualified # 🤵🏾‍♂️ E13.0 man in tuxedo: medium-dark skin tone +1F935 1F3FE 200D 2642 ; minimally-qualified # 🤵🏾‍♂ E13.0 man in tuxedo: medium-dark skin tone +1F935 1F3FF 200D 2642 FE0F ; fully-qualified # 🤵🏿‍♂️ E13.0 man in tuxedo: dark skin tone +1F935 1F3FF 200D 2642 ; minimally-qualified # 🤵🏿‍♂ E13.0 man in tuxedo: dark skin tone +1F935 200D 2640 FE0F ; fully-qualified # 🤵‍♀️ E13.0 woman in tuxedo +1F935 200D 2640 ; minimally-qualified # 🤵‍♀ E13.0 woman in tuxedo +1F935 1F3FB 200D 2640 FE0F ; fully-qualified # 🤵🏻‍♀️ E13.0 woman in tuxedo: light skin tone +1F935 1F3FB 200D 2640 ; minimally-qualified # 🤵🏻‍♀ E13.0 woman in tuxedo: light skin tone +1F935 1F3FC 200D 2640 FE0F ; fully-qualified # 🤵🏼‍♀️ E13.0 woman in tuxedo: medium-light skin tone +1F935 1F3FC 200D 2640 ; minimally-qualified # 🤵🏼‍♀ E13.0 woman in tuxedo: medium-light skin tone +1F935 1F3FD 200D 2640 FE0F ; fully-qualified # 🤵🏽‍♀️ E13.0 woman in tuxedo: medium skin tone +1F935 1F3FD 200D 2640 ; minimally-qualified # 🤵🏽‍♀ E13.0 woman in tuxedo: medium skin tone +1F935 1F3FE 200D 2640 FE0F ; fully-qualified # 🤵🏾‍♀️ E13.0 woman in tuxedo: medium-dark skin tone +1F935 1F3FE 200D 2640 ; minimally-qualified # 🤵🏾‍♀ E13.0 woman in tuxedo: medium-dark skin tone +1F935 1F3FF 200D 2640 FE0F ; fully-qualified # 🤵🏿‍♀️ E13.0 woman in tuxedo: dark skin tone +1F935 1F3FF 200D 2640 ; minimally-qualified # 🤵🏿‍♀ E13.0 woman in tuxedo: dark skin tone +1F470 ; fully-qualified # 👰 E0.6 person with veil +1F470 1F3FB ; fully-qualified # 👰🏻 E1.0 person with veil: light skin tone +1F470 1F3FC ; fully-qualified # 👰🏼 E1.0 person with veil: medium-light skin tone +1F470 1F3FD ; fully-qualified # 👰🏽 E1.0 person with veil: medium skin tone +1F470 1F3FE ; fully-qualified # 👰🏾 E1.0 person with veil: medium-dark skin tone +1F470 1F3FF ; fully-qualified # 👰🏿 E1.0 person with veil: dark skin tone +1F470 200D 2642 FE0F ; fully-qualified # 👰‍♂️ E13.0 man with veil +1F470 200D 2642 ; minimally-qualified # 👰‍♂ E13.0 man with veil +1F470 1F3FB 200D 2642 FE0F ; fully-qualified # 👰🏻‍♂️ E13.0 man with veil: light skin tone +1F470 1F3FB 200D 2642 ; minimally-qualified # 👰🏻‍♂ E13.0 man with veil: light skin tone +1F470 1F3FC 200D 2642 FE0F ; fully-qualified # 👰🏼‍♂️ E13.0 man with veil: medium-light skin tone +1F470 1F3FC 200D 2642 ; minimally-qualified # 👰🏼‍♂ E13.0 man with veil: medium-light skin tone +1F470 1F3FD 200D 2642 FE0F ; fully-qualified # 👰🏽‍♂️ E13.0 man with veil: medium skin tone +1F470 1F3FD 200D 2642 ; minimally-qualified # 👰🏽‍♂ E13.0 man with veil: medium skin tone +1F470 1F3FE 200D 2642 FE0F ; fully-qualified # 👰🏾‍♂️ E13.0 man with veil: medium-dark skin tone +1F470 1F3FE 200D 2642 ; minimally-qualified # 👰🏾‍♂ E13.0 man with veil: medium-dark skin tone +1F470 1F3FF 200D 2642 FE0F ; fully-qualified # 👰🏿‍♂️ E13.0 man with veil: dark skin tone +1F470 1F3FF 200D 2642 ; minimally-qualified # 👰🏿‍♂ E13.0 man with veil: dark skin tone +1F470 200D 2640 FE0F ; fully-qualified # 👰‍♀️ E13.0 woman with veil +1F470 200D 2640 ; minimally-qualified # 👰‍♀ E13.0 woman with veil +1F470 1F3FB 200D 2640 FE0F ; fully-qualified # 👰🏻‍♀️ E13.0 woman with veil: light skin tone +1F470 1F3FB 200D 2640 ; minimally-qualified # 👰🏻‍♀ E13.0 woman with veil: light skin tone +1F470 1F3FC 200D 2640 FE0F ; fully-qualified # 👰🏼‍♀️ E13.0 woman with veil: medium-light skin tone +1F470 1F3FC 200D 2640 ; minimally-qualified # 👰🏼‍♀ E13.0 woman with veil: medium-light skin tone +1F470 1F3FD 200D 2640 FE0F ; fully-qualified # 👰🏽‍♀️ E13.0 woman with veil: medium skin tone +1F470 1F3FD 200D 2640 ; minimally-qualified # 👰🏽‍♀ E13.0 woman with veil: medium skin tone +1F470 1F3FE 200D 2640 FE0F ; fully-qualified # 👰🏾‍♀️ E13.0 woman with veil: medium-dark skin tone +1F470 1F3FE 200D 2640 ; minimally-qualified # 👰🏾‍♀ E13.0 woman with veil: medium-dark skin tone +1F470 1F3FF 200D 2640 FE0F ; fully-qualified # 👰🏿‍♀️ E13.0 woman with veil: dark skin tone +1F470 1F3FF 200D 2640 ; minimally-qualified # 👰🏿‍♀ E13.0 woman with veil: dark skin tone +1F930 ; fully-qualified # 🤰 E3.0 pregnant woman +1F930 1F3FB ; fully-qualified # 🤰🏻 E3.0 pregnant woman: light skin tone +1F930 1F3FC ; fully-qualified # 🤰🏼 E3.0 pregnant woman: medium-light skin tone +1F930 1F3FD ; fully-qualified # 🤰🏽 E3.0 pregnant woman: medium skin tone +1F930 1F3FE ; fully-qualified # 🤰🏾 E3.0 pregnant woman: medium-dark skin tone +1F930 1F3FF ; fully-qualified # 🤰🏿 E3.0 pregnant woman: dark skin tone +1FAC3 ; fully-qualified # 🫃 E14.0 pregnant man +1FAC3 1F3FB ; fully-qualified # 🫃🏻 E14.0 pregnant man: light skin tone +1FAC3 1F3FC ; fully-qualified # 🫃🏼 E14.0 pregnant man: medium-light skin tone +1FAC3 1F3FD ; fully-qualified # 🫃🏽 E14.0 pregnant man: medium skin tone +1FAC3 1F3FE ; fully-qualified # 🫃🏾 E14.0 pregnant man: medium-dark skin tone +1FAC3 1F3FF ; fully-qualified # 🫃🏿 E14.0 pregnant man: dark skin tone +1FAC4 ; fully-qualified # 🫄 E14.0 pregnant person +1FAC4 1F3FB ; fully-qualified # 🫄🏻 E14.0 pregnant person: light skin tone +1FAC4 1F3FC ; fully-qualified # 🫄🏼 E14.0 pregnant person: medium-light skin tone +1FAC4 1F3FD ; fully-qualified # 🫄🏽 E14.0 pregnant person: medium skin tone +1FAC4 1F3FE ; fully-qualified # 🫄🏾 E14.0 pregnant person: medium-dark skin tone +1FAC4 1F3FF ; fully-qualified # 🫄🏿 E14.0 pregnant person: dark skin tone +1F931 ; fully-qualified # 🤱 E5.0 breast-feeding +1F931 1F3FB ; fully-qualified # 🤱🏻 E5.0 breast-feeding: light skin tone +1F931 1F3FC ; fully-qualified # 🤱🏼 E5.0 breast-feeding: medium-light skin tone +1F931 1F3FD ; fully-qualified # 🤱🏽 E5.0 breast-feeding: medium skin tone +1F931 1F3FE ; fully-qualified # 🤱🏾 E5.0 breast-feeding: medium-dark skin tone +1F931 1F3FF ; fully-qualified # 🤱🏿 E5.0 breast-feeding: dark skin tone +1F469 200D 1F37C ; fully-qualified # 👩‍🍼 E13.0 woman feeding baby +1F469 1F3FB 200D 1F37C ; fully-qualified # 👩🏻‍🍼 E13.0 woman feeding baby: light skin tone +1F469 1F3FC 200D 1F37C ; fully-qualified # 👩🏼‍🍼 E13.0 woman feeding baby: medium-light skin tone +1F469 1F3FD 200D 1F37C ; fully-qualified # 👩🏽‍🍼 E13.0 woman feeding baby: medium skin tone +1F469 1F3FE 200D 1F37C ; fully-qualified # 👩🏾‍🍼 E13.0 woman feeding baby: medium-dark skin tone +1F469 1F3FF 200D 1F37C ; fully-qualified # 👩🏿‍🍼 E13.0 woman feeding baby: dark skin tone +1F468 200D 1F37C ; fully-qualified # 👨‍🍼 E13.0 man feeding baby +1F468 1F3FB 200D 1F37C ; fully-qualified # 👨🏻‍🍼 E13.0 man feeding baby: light skin tone +1F468 1F3FC 200D 1F37C ; fully-qualified # 👨🏼‍🍼 E13.0 man feeding baby: medium-light skin tone +1F468 1F3FD 200D 1F37C ; fully-qualified # 👨🏽‍🍼 E13.0 man feeding baby: medium skin tone +1F468 1F3FE 200D 1F37C ; fully-qualified # 👨🏾‍🍼 E13.0 man feeding baby: medium-dark skin tone +1F468 1F3FF 200D 1F37C ; fully-qualified # 👨🏿‍🍼 E13.0 man feeding baby: dark skin tone +1F9D1 200D 1F37C ; fully-qualified # 🧑‍🍼 E13.0 person feeding baby +1F9D1 1F3FB 200D 1F37C ; fully-qualified # 🧑🏻‍🍼 E13.0 person feeding baby: light skin tone +1F9D1 1F3FC 200D 1F37C ; fully-qualified # 🧑🏼‍🍼 E13.0 person feeding baby: medium-light skin tone +1F9D1 1F3FD 200D 1F37C ; fully-qualified # 🧑🏽‍🍼 E13.0 person feeding baby: medium skin tone +1F9D1 1F3FE 200D 1F37C ; fully-qualified # 🧑🏾‍🍼 E13.0 person feeding baby: medium-dark skin tone +1F9D1 1F3FF 200D 1F37C ; fully-qualified # 🧑🏿‍🍼 E13.0 person feeding baby: dark skin tone + +# subgroup: person-fantasy +1F47C ; fully-qualified # 👼 E0.6 baby angel +1F47C 1F3FB ; fully-qualified # 👼🏻 E1.0 baby angel: light skin tone +1F47C 1F3FC ; fully-qualified # 👼🏼 E1.0 baby angel: medium-light skin tone +1F47C 1F3FD ; fully-qualified # 👼🏽 E1.0 baby angel: medium skin tone +1F47C 1F3FE ; fully-qualified # 👼🏾 E1.0 baby angel: medium-dark skin tone +1F47C 1F3FF ; fully-qualified # 👼🏿 E1.0 baby angel: dark skin tone +1F385 ; fully-qualified # 🎅 E0.6 Santa Claus +1F385 1F3FB ; fully-qualified # 🎅🏻 E1.0 Santa Claus: light skin tone +1F385 1F3FC ; fully-qualified # 🎅🏼 E1.0 Santa Claus: medium-light skin tone +1F385 1F3FD ; fully-qualified # 🎅🏽 E1.0 Santa Claus: medium skin tone +1F385 1F3FE ; fully-qualified # 🎅🏾 E1.0 Santa Claus: medium-dark skin tone +1F385 1F3FF ; fully-qualified # 🎅🏿 E1.0 Santa Claus: dark skin tone +1F936 ; fully-qualified # 🤶 E3.0 Mrs. Claus +1F936 1F3FB ; fully-qualified # 🤶🏻 E3.0 Mrs. Claus: light skin tone +1F936 1F3FC ; fully-qualified # 🤶🏼 E3.0 Mrs. Claus: medium-light skin tone +1F936 1F3FD ; fully-qualified # 🤶🏽 E3.0 Mrs. Claus: medium skin tone +1F936 1F3FE ; fully-qualified # 🤶🏾 E3.0 Mrs. Claus: medium-dark skin tone +1F936 1F3FF ; fully-qualified # 🤶🏿 E3.0 Mrs. Claus: dark skin tone +1F9D1 200D 1F384 ; fully-qualified # 🧑‍🎄 E13.0 mx claus +1F9D1 1F3FB 200D 1F384 ; fully-qualified # 🧑🏻‍🎄 E13.0 mx claus: light skin tone +1F9D1 1F3FC 200D 1F384 ; fully-qualified # 🧑🏼‍🎄 E13.0 mx claus: medium-light skin tone +1F9D1 1F3FD 200D 1F384 ; fully-qualified # 🧑🏽‍🎄 E13.0 mx claus: medium skin tone +1F9D1 1F3FE 200D 1F384 ; fully-qualified # 🧑🏾‍🎄 E13.0 mx claus: medium-dark skin tone +1F9D1 1F3FF 200D 1F384 ; fully-qualified # 🧑🏿‍🎄 E13.0 mx claus: dark skin tone +1F9B8 ; fully-qualified # 🦸 E11.0 superhero +1F9B8 1F3FB ; fully-qualified # 🦸🏻 E11.0 superhero: light skin tone +1F9B8 1F3FC ; fully-qualified # 🦸🏼 E11.0 superhero: medium-light skin tone +1F9B8 1F3FD ; fully-qualified # 🦸🏽 E11.0 superhero: medium skin tone +1F9B8 1F3FE ; fully-qualified # 🦸🏾 E11.0 superhero: medium-dark skin tone +1F9B8 1F3FF ; fully-qualified # 🦸🏿 E11.0 superhero: dark skin tone +1F9B8 200D 2642 FE0F ; fully-qualified # 🦸‍♂️ E11.0 man superhero +1F9B8 200D 2642 ; minimally-qualified # 🦸‍♂ E11.0 man superhero +1F9B8 1F3FB 200D 2642 FE0F ; fully-qualified # 🦸🏻‍♂️ E11.0 man superhero: light skin tone +1F9B8 1F3FB 200D 2642 ; minimally-qualified # 🦸🏻‍♂ E11.0 man superhero: light skin tone +1F9B8 1F3FC 200D 2642 FE0F ; fully-qualified # 🦸🏼‍♂️ E11.0 man superhero: medium-light skin tone +1F9B8 1F3FC 200D 2642 ; minimally-qualified # 🦸🏼‍♂ E11.0 man superhero: medium-light skin tone +1F9B8 1F3FD 200D 2642 FE0F ; fully-qualified # 🦸🏽‍♂️ E11.0 man superhero: medium skin tone +1F9B8 1F3FD 200D 2642 ; minimally-qualified # 🦸🏽‍♂ E11.0 man superhero: medium skin tone +1F9B8 1F3FE 200D 2642 FE0F ; fully-qualified # 🦸🏾‍♂️ E11.0 man superhero: medium-dark skin tone +1F9B8 1F3FE 200D 2642 ; minimally-qualified # 🦸🏾‍♂ E11.0 man superhero: medium-dark skin tone +1F9B8 1F3FF 200D 2642 FE0F ; fully-qualified # 🦸🏿‍♂️ E11.0 man superhero: dark skin tone +1F9B8 1F3FF 200D 2642 ; minimally-qualified # 🦸🏿‍♂ E11.0 man superhero: dark skin tone +1F9B8 200D 2640 FE0F ; fully-qualified # 🦸‍♀️ E11.0 woman superhero +1F9B8 200D 2640 ; minimally-qualified # 🦸‍♀ E11.0 woman superhero +1F9B8 1F3FB 200D 2640 FE0F ; fully-qualified # 🦸🏻‍♀️ E11.0 woman superhero: light skin tone +1F9B8 1F3FB 200D 2640 ; minimally-qualified # 🦸🏻‍♀ E11.0 woman superhero: light skin tone +1F9B8 1F3FC 200D 2640 FE0F ; fully-qualified # 🦸🏼‍♀️ E11.0 woman superhero: medium-light skin tone +1F9B8 1F3FC 200D 2640 ; minimally-qualified # 🦸🏼‍♀ E11.0 woman superhero: medium-light skin tone +1F9B8 1F3FD 200D 2640 FE0F ; fully-qualified # 🦸🏽‍♀️ E11.0 woman superhero: medium skin tone +1F9B8 1F3FD 200D 2640 ; minimally-qualified # 🦸🏽‍♀ E11.0 woman superhero: medium skin tone +1F9B8 1F3FE 200D 2640 FE0F ; fully-qualified # 🦸🏾‍♀️ E11.0 woman superhero: medium-dark skin tone +1F9B8 1F3FE 200D 2640 ; minimally-qualified # 🦸🏾‍♀ E11.0 woman superhero: medium-dark skin tone +1F9B8 1F3FF 200D 2640 FE0F ; fully-qualified # 🦸🏿‍♀️ E11.0 woman superhero: dark skin tone +1F9B8 1F3FF 200D 2640 ; minimally-qualified # 🦸🏿‍♀ E11.0 woman superhero: dark skin tone +1F9B9 ; fully-qualified # 🦹 E11.0 supervillain +1F9B9 1F3FB ; fully-qualified # 🦹🏻 E11.0 supervillain: light skin tone +1F9B9 1F3FC ; fully-qualified # 🦹🏼 E11.0 supervillain: medium-light skin tone +1F9B9 1F3FD ; fully-qualified # 🦹🏽 E11.0 supervillain: medium skin tone +1F9B9 1F3FE ; fully-qualified # 🦹🏾 E11.0 supervillain: medium-dark skin tone +1F9B9 1F3FF ; fully-qualified # 🦹🏿 E11.0 supervillain: dark skin tone +1F9B9 200D 2642 FE0F ; fully-qualified # 🦹‍♂️ E11.0 man supervillain +1F9B9 200D 2642 ; minimally-qualified # 🦹‍♂ E11.0 man supervillain +1F9B9 1F3FB 200D 2642 FE0F ; fully-qualified # 🦹🏻‍♂️ E11.0 man supervillain: light skin tone +1F9B9 1F3FB 200D 2642 ; minimally-qualified # 🦹🏻‍♂ E11.0 man supervillain: light skin tone +1F9B9 1F3FC 200D 2642 FE0F ; fully-qualified # 🦹🏼‍♂️ E11.0 man supervillain: medium-light skin tone +1F9B9 1F3FC 200D 2642 ; minimally-qualified # 🦹🏼‍♂ E11.0 man supervillain: medium-light skin tone +1F9B9 1F3FD 200D 2642 FE0F ; fully-qualified # 🦹🏽‍♂️ E11.0 man supervillain: medium skin tone +1F9B9 1F3FD 200D 2642 ; minimally-qualified # 🦹🏽‍♂ E11.0 man supervillain: medium skin tone +1F9B9 1F3FE 200D 2642 FE0F ; fully-qualified # 🦹🏾‍♂️ E11.0 man supervillain: medium-dark skin tone +1F9B9 1F3FE 200D 2642 ; minimally-qualified # 🦹🏾‍♂ E11.0 man supervillain: medium-dark skin tone +1F9B9 1F3FF 200D 2642 FE0F ; fully-qualified # 🦹🏿‍♂️ E11.0 man supervillain: dark skin tone +1F9B9 1F3FF 200D 2642 ; minimally-qualified # 🦹🏿‍♂ E11.0 man supervillain: dark skin tone +1F9B9 200D 2640 FE0F ; fully-qualified # 🦹‍♀️ E11.0 woman supervillain +1F9B9 200D 2640 ; minimally-qualified # 🦹‍♀ E11.0 woman supervillain +1F9B9 1F3FB 200D 2640 FE0F ; fully-qualified # 🦹🏻‍♀️ E11.0 woman supervillain: light skin tone +1F9B9 1F3FB 200D 2640 ; minimally-qualified # 🦹🏻‍♀ E11.0 woman supervillain: light skin tone +1F9B9 1F3FC 200D 2640 FE0F ; fully-qualified # 🦹🏼‍♀️ E11.0 woman supervillain: medium-light skin tone +1F9B9 1F3FC 200D 2640 ; minimally-qualified # 🦹🏼‍♀ E11.0 woman supervillain: medium-light skin tone +1F9B9 1F3FD 200D 2640 FE0F ; fully-qualified # 🦹🏽‍♀️ E11.0 woman supervillain: medium skin tone +1F9B9 1F3FD 200D 2640 ; minimally-qualified # 🦹🏽‍♀ E11.0 woman supervillain: medium skin tone +1F9B9 1F3FE 200D 2640 FE0F ; fully-qualified # 🦹🏾‍♀️ E11.0 woman supervillain: medium-dark skin tone +1F9B9 1F3FE 200D 2640 ; minimally-qualified # 🦹🏾‍♀ E11.0 woman supervillain: medium-dark skin tone +1F9B9 1F3FF 200D 2640 FE0F ; fully-qualified # 🦹🏿‍♀️ E11.0 woman supervillain: dark skin tone +1F9B9 1F3FF 200D 2640 ; minimally-qualified # 🦹🏿‍♀ E11.0 woman supervillain: dark skin tone +1F9D9 ; fully-qualified # 🧙 E5.0 mage +1F9D9 1F3FB ; fully-qualified # 🧙🏻 E5.0 mage: light skin tone +1F9D9 1F3FC ; fully-qualified # 🧙🏼 E5.0 mage: medium-light skin tone +1F9D9 1F3FD ; fully-qualified # 🧙🏽 E5.0 mage: medium skin tone +1F9D9 1F3FE ; fully-qualified # 🧙🏾 E5.0 mage: medium-dark skin tone +1F9D9 1F3FF ; fully-qualified # 🧙🏿 E5.0 mage: dark skin tone +1F9D9 200D 2642 FE0F ; fully-qualified # 🧙‍♂️ E5.0 man mage +1F9D9 200D 2642 ; minimally-qualified # 🧙‍♂ E5.0 man mage +1F9D9 1F3FB 200D 2642 FE0F ; fully-qualified # 🧙🏻‍♂️ E5.0 man mage: light skin tone +1F9D9 1F3FB 200D 2642 ; minimally-qualified # 🧙🏻‍♂ E5.0 man mage: light skin tone +1F9D9 1F3FC 200D 2642 FE0F ; fully-qualified # 🧙🏼‍♂️ E5.0 man mage: medium-light skin tone +1F9D9 1F3FC 200D 2642 ; minimally-qualified # 🧙🏼‍♂ E5.0 man mage: medium-light skin tone +1F9D9 1F3FD 200D 2642 FE0F ; fully-qualified # 🧙🏽‍♂️ E5.0 man mage: medium skin tone +1F9D9 1F3FD 200D 2642 ; minimally-qualified # 🧙🏽‍♂ E5.0 man mage: medium skin tone +1F9D9 1F3FE 200D 2642 FE0F ; fully-qualified # 🧙🏾‍♂️ E5.0 man mage: medium-dark skin tone +1F9D9 1F3FE 200D 2642 ; minimally-qualified # 🧙🏾‍♂ E5.0 man mage: medium-dark skin tone +1F9D9 1F3FF 200D 2642 FE0F ; fully-qualified # 🧙🏿‍♂️ E5.0 man mage: dark skin tone +1F9D9 1F3FF 200D 2642 ; minimally-qualified # 🧙🏿‍♂ E5.0 man mage: dark skin tone +1F9D9 200D 2640 FE0F ; fully-qualified # 🧙‍♀️ E5.0 woman mage +1F9D9 200D 2640 ; minimally-qualified # 🧙‍♀ E5.0 woman mage +1F9D9 1F3FB 200D 2640 FE0F ; fully-qualified # 🧙🏻‍♀️ E5.0 woman mage: light skin tone +1F9D9 1F3FB 200D 2640 ; minimally-qualified # 🧙🏻‍♀ E5.0 woman mage: light skin tone +1F9D9 1F3FC 200D 2640 FE0F ; fully-qualified # 🧙🏼‍♀️ E5.0 woman mage: medium-light skin tone +1F9D9 1F3FC 200D 2640 ; minimally-qualified # 🧙🏼‍♀ E5.0 woman mage: medium-light skin tone +1F9D9 1F3FD 200D 2640 FE0F ; fully-qualified # 🧙🏽‍♀️ E5.0 woman mage: medium skin tone +1F9D9 1F3FD 200D 2640 ; minimally-qualified # 🧙🏽‍♀ E5.0 woman mage: medium skin tone +1F9D9 1F3FE 200D 2640 FE0F ; fully-qualified # 🧙🏾‍♀️ E5.0 woman mage: medium-dark skin tone +1F9D9 1F3FE 200D 2640 ; minimally-qualified # 🧙🏾‍♀ E5.0 woman mage: medium-dark skin tone +1F9D9 1F3FF 200D 2640 FE0F ; fully-qualified # 🧙🏿‍♀️ E5.0 woman mage: dark skin tone +1F9D9 1F3FF 200D 2640 ; minimally-qualified # 🧙🏿‍♀ E5.0 woman mage: dark skin tone +1F9DA ; fully-qualified # 🧚 E5.0 fairy +1F9DA 1F3FB ; fully-qualified # 🧚🏻 E5.0 fairy: light skin tone +1F9DA 1F3FC ; fully-qualified # 🧚🏼 E5.0 fairy: medium-light skin tone +1F9DA 1F3FD ; fully-qualified # 🧚🏽 E5.0 fairy: medium skin tone +1F9DA 1F3FE ; fully-qualified # 🧚🏾 E5.0 fairy: medium-dark skin tone +1F9DA 1F3FF ; fully-qualified # 🧚🏿 E5.0 fairy: dark skin tone +1F9DA 200D 2642 FE0F ; fully-qualified # 🧚‍♂️ E5.0 man fairy +1F9DA 200D 2642 ; minimally-qualified # 🧚‍♂ E5.0 man fairy +1F9DA 1F3FB 200D 2642 FE0F ; fully-qualified # 🧚🏻‍♂️ E5.0 man fairy: light skin tone +1F9DA 1F3FB 200D 2642 ; minimally-qualified # 🧚🏻‍♂ E5.0 man fairy: light skin tone +1F9DA 1F3FC 200D 2642 FE0F ; fully-qualified # 🧚🏼‍♂️ E5.0 man fairy: medium-light skin tone +1F9DA 1F3FC 200D 2642 ; minimally-qualified # 🧚🏼‍♂ E5.0 man fairy: medium-light skin tone +1F9DA 1F3FD 200D 2642 FE0F ; fully-qualified # 🧚🏽‍♂️ E5.0 man fairy: medium skin tone +1F9DA 1F3FD 200D 2642 ; minimally-qualified # 🧚🏽‍♂ E5.0 man fairy: medium skin tone +1F9DA 1F3FE 200D 2642 FE0F ; fully-qualified # 🧚🏾‍♂️ E5.0 man fairy: medium-dark skin tone +1F9DA 1F3FE 200D 2642 ; minimally-qualified # 🧚🏾‍♂ E5.0 man fairy: medium-dark skin tone +1F9DA 1F3FF 200D 2642 FE0F ; fully-qualified # 🧚🏿‍♂️ E5.0 man fairy: dark skin tone +1F9DA 1F3FF 200D 2642 ; minimally-qualified # 🧚🏿‍♂ E5.0 man fairy: dark skin tone +1F9DA 200D 2640 FE0F ; fully-qualified # 🧚‍♀️ E5.0 woman fairy +1F9DA 200D 2640 ; minimally-qualified # 🧚‍♀ E5.0 woman fairy +1F9DA 1F3FB 200D 2640 FE0F ; fully-qualified # 🧚🏻‍♀️ E5.0 woman fairy: light skin tone +1F9DA 1F3FB 200D 2640 ; minimally-qualified # 🧚🏻‍♀ E5.0 woman fairy: light skin tone +1F9DA 1F3FC 200D 2640 FE0F ; fully-qualified # 🧚🏼‍♀️ E5.0 woman fairy: medium-light skin tone +1F9DA 1F3FC 200D 2640 ; minimally-qualified # 🧚🏼‍♀ E5.0 woman fairy: medium-light skin tone +1F9DA 1F3FD 200D 2640 FE0F ; fully-qualified # 🧚🏽‍♀️ E5.0 woman fairy: medium skin tone +1F9DA 1F3FD 200D 2640 ; minimally-qualified # 🧚🏽‍♀ E5.0 woman fairy: medium skin tone +1F9DA 1F3FE 200D 2640 FE0F ; fully-qualified # 🧚🏾‍♀️ E5.0 woman fairy: medium-dark skin tone +1F9DA 1F3FE 200D 2640 ; minimally-qualified # 🧚🏾‍♀ E5.0 woman fairy: medium-dark skin tone +1F9DA 1F3FF 200D 2640 FE0F ; fully-qualified # 🧚🏿‍♀️ E5.0 woman fairy: dark skin tone +1F9DA 1F3FF 200D 2640 ; minimally-qualified # 🧚🏿‍♀ E5.0 woman fairy: dark skin tone +1F9DB ; fully-qualified # 🧛 E5.0 vampire +1F9DB 1F3FB ; fully-qualified # 🧛🏻 E5.0 vampire: light skin tone +1F9DB 1F3FC ; fully-qualified # 🧛🏼 E5.0 vampire: medium-light skin tone +1F9DB 1F3FD ; fully-qualified # 🧛🏽 E5.0 vampire: medium skin tone +1F9DB 1F3FE ; fully-qualified # 🧛🏾 E5.0 vampire: medium-dark skin tone +1F9DB 1F3FF ; fully-qualified # 🧛🏿 E5.0 vampire: dark skin tone +1F9DB 200D 2642 FE0F ; fully-qualified # 🧛‍♂️ E5.0 man vampire +1F9DB 200D 2642 ; minimally-qualified # 🧛‍♂ E5.0 man vampire +1F9DB 1F3FB 200D 2642 FE0F ; fully-qualified # 🧛🏻‍♂️ E5.0 man vampire: light skin tone +1F9DB 1F3FB 200D 2642 ; minimally-qualified # 🧛🏻‍♂ E5.0 man vampire: light skin tone +1F9DB 1F3FC 200D 2642 FE0F ; fully-qualified # 🧛🏼‍♂️ E5.0 man vampire: medium-light skin tone +1F9DB 1F3FC 200D 2642 ; minimally-qualified # 🧛🏼‍♂ E5.0 man vampire: medium-light skin tone +1F9DB 1F3FD 200D 2642 FE0F ; fully-qualified # 🧛🏽‍♂️ E5.0 man vampire: medium skin tone +1F9DB 1F3FD 200D 2642 ; minimally-qualified # 🧛🏽‍♂ E5.0 man vampire: medium skin tone +1F9DB 1F3FE 200D 2642 FE0F ; fully-qualified # 🧛🏾‍♂️ E5.0 man vampire: medium-dark skin tone +1F9DB 1F3FE 200D 2642 ; minimally-qualified # 🧛🏾‍♂ E5.0 man vampire: medium-dark skin tone +1F9DB 1F3FF 200D 2642 FE0F ; fully-qualified # 🧛🏿‍♂️ E5.0 man vampire: dark skin tone +1F9DB 1F3FF 200D 2642 ; minimally-qualified # 🧛🏿‍♂ E5.0 man vampire: dark skin tone +1F9DB 200D 2640 FE0F ; fully-qualified # 🧛‍♀️ E5.0 woman vampire +1F9DB 200D 2640 ; minimally-qualified # 🧛‍♀ E5.0 woman vampire +1F9DB 1F3FB 200D 2640 FE0F ; fully-qualified # 🧛🏻‍♀️ E5.0 woman vampire: light skin tone +1F9DB 1F3FB 200D 2640 ; minimally-qualified # 🧛🏻‍♀ E5.0 woman vampire: light skin tone +1F9DB 1F3FC 200D 2640 FE0F ; fully-qualified # 🧛🏼‍♀️ E5.0 woman vampire: medium-light skin tone +1F9DB 1F3FC 200D 2640 ; minimally-qualified # 🧛🏼‍♀ E5.0 woman vampire: medium-light skin tone +1F9DB 1F3FD 200D 2640 FE0F ; fully-qualified # 🧛🏽‍♀️ E5.0 woman vampire: medium skin tone +1F9DB 1F3FD 200D 2640 ; minimally-qualified # 🧛🏽‍♀ E5.0 woman vampire: medium skin tone +1F9DB 1F3FE 200D 2640 FE0F ; fully-qualified # 🧛🏾‍♀️ E5.0 woman vampire: medium-dark skin tone +1F9DB 1F3FE 200D 2640 ; minimally-qualified # 🧛🏾‍♀ E5.0 woman vampire: medium-dark skin tone +1F9DB 1F3FF 200D 2640 FE0F ; fully-qualified # 🧛🏿‍♀️ E5.0 woman vampire: dark skin tone +1F9DB 1F3FF 200D 2640 ; minimally-qualified # 🧛🏿‍♀ E5.0 woman vampire: dark skin tone +1F9DC ; fully-qualified # 🧜 E5.0 merperson +1F9DC 1F3FB ; fully-qualified # 🧜🏻 E5.0 merperson: light skin tone +1F9DC 1F3FC ; fully-qualified # 🧜🏼 E5.0 merperson: medium-light skin tone +1F9DC 1F3FD ; fully-qualified # 🧜🏽 E5.0 merperson: medium skin tone +1F9DC 1F3FE ; fully-qualified # 🧜🏾 E5.0 merperson: medium-dark skin tone +1F9DC 1F3FF ; fully-qualified # 🧜🏿 E5.0 merperson: dark skin tone +1F9DC 200D 2642 FE0F ; fully-qualified # 🧜‍♂️ E5.0 merman +1F9DC 200D 2642 ; minimally-qualified # 🧜‍♂ E5.0 merman +1F9DC 1F3FB 200D 2642 FE0F ; fully-qualified # 🧜🏻‍♂️ E5.0 merman: light skin tone +1F9DC 1F3FB 200D 2642 ; minimally-qualified # 🧜🏻‍♂ E5.0 merman: light skin tone +1F9DC 1F3FC 200D 2642 FE0F ; fully-qualified # 🧜🏼‍♂️ E5.0 merman: medium-light skin tone +1F9DC 1F3FC 200D 2642 ; minimally-qualified # 🧜🏼‍♂ E5.0 merman: medium-light skin tone +1F9DC 1F3FD 200D 2642 FE0F ; fully-qualified # 🧜🏽‍♂️ E5.0 merman: medium skin tone +1F9DC 1F3FD 200D 2642 ; minimally-qualified # 🧜🏽‍♂ E5.0 merman: medium skin tone +1F9DC 1F3FE 200D 2642 FE0F ; fully-qualified # 🧜🏾‍♂️ E5.0 merman: medium-dark skin tone +1F9DC 1F3FE 200D 2642 ; minimally-qualified # 🧜🏾‍♂ E5.0 merman: medium-dark skin tone +1F9DC 1F3FF 200D 2642 FE0F ; fully-qualified # 🧜🏿‍♂️ E5.0 merman: dark skin tone +1F9DC 1F3FF 200D 2642 ; minimally-qualified # 🧜🏿‍♂ E5.0 merman: dark skin tone +1F9DC 200D 2640 FE0F ; fully-qualified # 🧜‍♀️ E5.0 mermaid +1F9DC 200D 2640 ; minimally-qualified # 🧜‍♀ E5.0 mermaid +1F9DC 1F3FB 200D 2640 FE0F ; fully-qualified # 🧜🏻‍♀️ E5.0 mermaid: light skin tone +1F9DC 1F3FB 200D 2640 ; minimally-qualified # 🧜🏻‍♀ E5.0 mermaid: light skin tone +1F9DC 1F3FC 200D 2640 FE0F ; fully-qualified # 🧜🏼‍♀️ E5.0 mermaid: medium-light skin tone +1F9DC 1F3FC 200D 2640 ; minimally-qualified # 🧜🏼‍♀ E5.0 mermaid: medium-light skin tone +1F9DC 1F3FD 200D 2640 FE0F ; fully-qualified # 🧜🏽‍♀️ E5.0 mermaid: medium skin tone +1F9DC 1F3FD 200D 2640 ; minimally-qualified # 🧜🏽‍♀ E5.0 mermaid: medium skin tone +1F9DC 1F3FE 200D 2640 FE0F ; fully-qualified # 🧜🏾‍♀️ E5.0 mermaid: medium-dark skin tone +1F9DC 1F3FE 200D 2640 ; minimally-qualified # 🧜🏾‍♀ E5.0 mermaid: medium-dark skin tone +1F9DC 1F3FF 200D 2640 FE0F ; fully-qualified # 🧜🏿‍♀️ E5.0 mermaid: dark skin tone +1F9DC 1F3FF 200D 2640 ; minimally-qualified # 🧜🏿‍♀ E5.0 mermaid: dark skin tone +1F9DD ; fully-qualified # 🧝 E5.0 elf +1F9DD 1F3FB ; fully-qualified # 🧝🏻 E5.0 elf: light skin tone +1F9DD 1F3FC ; fully-qualified # 🧝🏼 E5.0 elf: medium-light skin tone +1F9DD 1F3FD ; fully-qualified # 🧝🏽 E5.0 elf: medium skin tone +1F9DD 1F3FE ; fully-qualified # 🧝🏾 E5.0 elf: medium-dark skin tone +1F9DD 1F3FF ; fully-qualified # 🧝🏿 E5.0 elf: dark skin tone +1F9DD 200D 2642 FE0F ; fully-qualified # 🧝‍♂️ E5.0 man elf +1F9DD 200D 2642 ; minimally-qualified # 🧝‍♂ E5.0 man elf +1F9DD 1F3FB 200D 2642 FE0F ; fully-qualified # 🧝🏻‍♂️ E5.0 man elf: light skin tone +1F9DD 1F3FB 200D 2642 ; minimally-qualified # 🧝🏻‍♂ E5.0 man elf: light skin tone +1F9DD 1F3FC 200D 2642 FE0F ; fully-qualified # 🧝🏼‍♂️ E5.0 man elf: medium-light skin tone +1F9DD 1F3FC 200D 2642 ; minimally-qualified # 🧝🏼‍♂ E5.0 man elf: medium-light skin tone +1F9DD 1F3FD 200D 2642 FE0F ; fully-qualified # 🧝🏽‍♂️ E5.0 man elf: medium skin tone +1F9DD 1F3FD 200D 2642 ; minimally-qualified # 🧝🏽‍♂ E5.0 man elf: medium skin tone +1F9DD 1F3FE 200D 2642 FE0F ; fully-qualified # 🧝🏾‍♂️ E5.0 man elf: medium-dark skin tone +1F9DD 1F3FE 200D 2642 ; minimally-qualified # 🧝🏾‍♂ E5.0 man elf: medium-dark skin tone +1F9DD 1F3FF 200D 2642 FE0F ; fully-qualified # 🧝🏿‍♂️ E5.0 man elf: dark skin tone +1F9DD 1F3FF 200D 2642 ; minimally-qualified # 🧝🏿‍♂ E5.0 man elf: dark skin tone +1F9DD 200D 2640 FE0F ; fully-qualified # 🧝‍♀️ E5.0 woman elf +1F9DD 200D 2640 ; minimally-qualified # 🧝‍♀ E5.0 woman elf +1F9DD 1F3FB 200D 2640 FE0F ; fully-qualified # 🧝🏻‍♀️ E5.0 woman elf: light skin tone +1F9DD 1F3FB 200D 2640 ; minimally-qualified # 🧝🏻‍♀ E5.0 woman elf: light skin tone +1F9DD 1F3FC 200D 2640 FE0F ; fully-qualified # 🧝🏼‍♀️ E5.0 woman elf: medium-light skin tone +1F9DD 1F3FC 200D 2640 ; minimally-qualified # 🧝🏼‍♀ E5.0 woman elf: medium-light skin tone +1F9DD 1F3FD 200D 2640 FE0F ; fully-qualified # 🧝🏽‍♀️ E5.0 woman elf: medium skin tone +1F9DD 1F3FD 200D 2640 ; minimally-qualified # 🧝🏽‍♀ E5.0 woman elf: medium skin tone +1F9DD 1F3FE 200D 2640 FE0F ; fully-qualified # 🧝🏾‍♀️ E5.0 woman elf: medium-dark skin tone +1F9DD 1F3FE 200D 2640 ; minimally-qualified # 🧝🏾‍♀ E5.0 woman elf: medium-dark skin tone +1F9DD 1F3FF 200D 2640 FE0F ; fully-qualified # 🧝🏿‍♀️ E5.0 woman elf: dark skin tone +1F9DD 1F3FF 200D 2640 ; minimally-qualified # 🧝🏿‍♀ E5.0 woman elf: dark skin tone +1F9DE ; fully-qualified # 🧞 E5.0 genie +1F9DE 200D 2642 FE0F ; fully-qualified # 🧞‍♂️ E5.0 man genie +1F9DE 200D 2642 ; minimally-qualified # 🧞‍♂ E5.0 man genie +1F9DE 200D 2640 FE0F ; fully-qualified # 🧞‍♀️ E5.0 woman genie +1F9DE 200D 2640 ; minimally-qualified # 🧞‍♀ E5.0 woman genie +1F9DF ; fully-qualified # 🧟 E5.0 zombie +1F9DF 200D 2642 FE0F ; fully-qualified # 🧟‍♂️ E5.0 man zombie +1F9DF 200D 2642 ; minimally-qualified # 🧟‍♂ E5.0 man zombie +1F9DF 200D 2640 FE0F ; fully-qualified # 🧟‍♀️ E5.0 woman zombie +1F9DF 200D 2640 ; minimally-qualified # 🧟‍♀ E5.0 woman zombie +1F9CC ; fully-qualified # 🧌 E14.0 troll + +# subgroup: person-activity +1F486 ; fully-qualified # 💆 E0.6 person getting massage +1F486 1F3FB ; fully-qualified # 💆🏻 E1.0 person getting massage: light skin tone +1F486 1F3FC ; fully-qualified # 💆🏼 E1.0 person getting massage: medium-light skin tone +1F486 1F3FD ; fully-qualified # 💆🏽 E1.0 person getting massage: medium skin tone +1F486 1F3FE ; fully-qualified # 💆🏾 E1.0 person getting massage: medium-dark skin tone +1F486 1F3FF ; fully-qualified # 💆🏿 E1.0 person getting massage: dark skin tone +1F486 200D 2642 FE0F ; fully-qualified # 💆‍♂️ E4.0 man getting massage +1F486 200D 2642 ; minimally-qualified # 💆‍♂ E4.0 man getting massage +1F486 1F3FB 200D 2642 FE0F ; fully-qualified # 💆🏻‍♂️ E4.0 man getting massage: light skin tone +1F486 1F3FB 200D 2642 ; minimally-qualified # 💆🏻‍♂ E4.0 man getting massage: light skin tone +1F486 1F3FC 200D 2642 FE0F ; fully-qualified # 💆🏼‍♂️ E4.0 man getting massage: medium-light skin tone +1F486 1F3FC 200D 2642 ; minimally-qualified # 💆🏼‍♂ E4.0 man getting massage: medium-light skin tone +1F486 1F3FD 200D 2642 FE0F ; fully-qualified # 💆🏽‍♂️ E4.0 man getting massage: medium skin tone +1F486 1F3FD 200D 2642 ; minimally-qualified # 💆🏽‍♂ E4.0 man getting massage: medium skin tone +1F486 1F3FE 200D 2642 FE0F ; fully-qualified # 💆🏾‍♂️ E4.0 man getting massage: medium-dark skin tone +1F486 1F3FE 200D 2642 ; minimally-qualified # 💆🏾‍♂ E4.0 man getting massage: medium-dark skin tone +1F486 1F3FF 200D 2642 FE0F ; fully-qualified # 💆🏿‍♂️ E4.0 man getting massage: dark skin tone +1F486 1F3FF 200D 2642 ; minimally-qualified # 💆🏿‍♂ E4.0 man getting massage: dark skin tone +1F486 200D 2640 FE0F ; fully-qualified # 💆‍♀️ E4.0 woman getting massage +1F486 200D 2640 ; minimally-qualified # 💆‍♀ E4.0 woman getting massage +1F486 1F3FB 200D 2640 FE0F ; fully-qualified # 💆🏻‍♀️ E4.0 woman getting massage: light skin tone +1F486 1F3FB 200D 2640 ; minimally-qualified # 💆🏻‍♀ E4.0 woman getting massage: light skin tone +1F486 1F3FC 200D 2640 FE0F ; fully-qualified # 💆🏼‍♀️ E4.0 woman getting massage: medium-light skin tone +1F486 1F3FC 200D 2640 ; minimally-qualified # 💆🏼‍♀ E4.0 woman getting massage: medium-light skin tone +1F486 1F3FD 200D 2640 FE0F ; fully-qualified # 💆🏽‍♀️ E4.0 woman getting massage: medium skin tone +1F486 1F3FD 200D 2640 ; minimally-qualified # 💆🏽‍♀ E4.0 woman getting massage: medium skin tone +1F486 1F3FE 200D 2640 FE0F ; fully-qualified # 💆🏾‍♀️ E4.0 woman getting massage: medium-dark skin tone +1F486 1F3FE 200D 2640 ; minimally-qualified # 💆🏾‍♀ E4.0 woman getting massage: medium-dark skin tone +1F486 1F3FF 200D 2640 FE0F ; fully-qualified # 💆🏿‍♀️ E4.0 woman getting massage: dark skin tone +1F486 1F3FF 200D 2640 ; minimally-qualified # 💆🏿‍♀ E4.0 woman getting massage: dark skin tone +1F487 ; fully-qualified # 💇 E0.6 person getting haircut +1F487 1F3FB ; fully-qualified # 💇🏻 E1.0 person getting haircut: light skin tone +1F487 1F3FC ; fully-qualified # 💇🏼 E1.0 person getting haircut: medium-light skin tone +1F487 1F3FD ; fully-qualified # 💇🏽 E1.0 person getting haircut: medium skin tone +1F487 1F3FE ; fully-qualified # 💇🏾 E1.0 person getting haircut: medium-dark skin tone +1F487 1F3FF ; fully-qualified # 💇🏿 E1.0 person getting haircut: dark skin tone +1F487 200D 2642 FE0F ; fully-qualified # 💇‍♂️ E4.0 man getting haircut +1F487 200D 2642 ; minimally-qualified # 💇‍♂ E4.0 man getting haircut +1F487 1F3FB 200D 2642 FE0F ; fully-qualified # 💇🏻‍♂️ E4.0 man getting haircut: light skin tone +1F487 1F3FB 200D 2642 ; minimally-qualified # 💇🏻‍♂ E4.0 man getting haircut: light skin tone +1F487 1F3FC 200D 2642 FE0F ; fully-qualified # 💇🏼‍♂️ E4.0 man getting haircut: medium-light skin tone +1F487 1F3FC 200D 2642 ; minimally-qualified # 💇🏼‍♂ E4.0 man getting haircut: medium-light skin tone +1F487 1F3FD 200D 2642 FE0F ; fully-qualified # 💇🏽‍♂️ E4.0 man getting haircut: medium skin tone +1F487 1F3FD 200D 2642 ; minimally-qualified # 💇🏽‍♂ E4.0 man getting haircut: medium skin tone +1F487 1F3FE 200D 2642 FE0F ; fully-qualified # 💇🏾‍♂️ E4.0 man getting haircut: medium-dark skin tone +1F487 1F3FE 200D 2642 ; minimally-qualified # 💇🏾‍♂ E4.0 man getting haircut: medium-dark skin tone +1F487 1F3FF 200D 2642 FE0F ; fully-qualified # 💇🏿‍♂️ E4.0 man getting haircut: dark skin tone +1F487 1F3FF 200D 2642 ; minimally-qualified # 💇🏿‍♂ E4.0 man getting haircut: dark skin tone +1F487 200D 2640 FE0F ; fully-qualified # 💇‍♀️ E4.0 woman getting haircut +1F487 200D 2640 ; minimally-qualified # 💇‍♀ E4.0 woman getting haircut +1F487 1F3FB 200D 2640 FE0F ; fully-qualified # 💇🏻‍♀️ E4.0 woman getting haircut: light skin tone +1F487 1F3FB 200D 2640 ; minimally-qualified # 💇🏻‍♀ E4.0 woman getting haircut: light skin tone +1F487 1F3FC 200D 2640 FE0F ; fully-qualified # 💇🏼‍♀️ E4.0 woman getting haircut: medium-light skin tone +1F487 1F3FC 200D 2640 ; minimally-qualified # 💇🏼‍♀ E4.0 woman getting haircut: medium-light skin tone +1F487 1F3FD 200D 2640 FE0F ; fully-qualified # 💇🏽‍♀️ E4.0 woman getting haircut: medium skin tone +1F487 1F3FD 200D 2640 ; minimally-qualified # 💇🏽‍♀ E4.0 woman getting haircut: medium skin tone +1F487 1F3FE 200D 2640 FE0F ; fully-qualified # 💇🏾‍♀️ E4.0 woman getting haircut: medium-dark skin tone +1F487 1F3FE 200D 2640 ; minimally-qualified # 💇🏾‍♀ E4.0 woman getting haircut: medium-dark skin tone +1F487 1F3FF 200D 2640 FE0F ; fully-qualified # 💇🏿‍♀️ E4.0 woman getting haircut: dark skin tone +1F487 1F3FF 200D 2640 ; minimally-qualified # 💇🏿‍♀ E4.0 woman getting haircut: dark skin tone +1F6B6 ; fully-qualified # 🚶 E0.6 person walking +1F6B6 1F3FB ; fully-qualified # 🚶🏻 E1.0 person walking: light skin tone +1F6B6 1F3FC ; fully-qualified # 🚶🏼 E1.0 person walking: medium-light skin tone +1F6B6 1F3FD ; fully-qualified # 🚶🏽 E1.0 person walking: medium skin tone +1F6B6 1F3FE ; fully-qualified # 🚶🏾 E1.0 person walking: medium-dark skin tone +1F6B6 1F3FF ; fully-qualified # 🚶🏿 E1.0 person walking: dark skin tone +1F6B6 200D 2642 FE0F ; fully-qualified # 🚶‍♂️ E4.0 man walking +1F6B6 200D 2642 ; minimally-qualified # 🚶‍♂ E4.0 man walking +1F6B6 1F3FB 200D 2642 FE0F ; fully-qualified # 🚶🏻‍♂️ E4.0 man walking: light skin tone +1F6B6 1F3FB 200D 2642 ; minimally-qualified # 🚶🏻‍♂ E4.0 man walking: light skin tone +1F6B6 1F3FC 200D 2642 FE0F ; fully-qualified # 🚶🏼‍♂️ E4.0 man walking: medium-light skin tone +1F6B6 1F3FC 200D 2642 ; minimally-qualified # 🚶🏼‍♂ E4.0 man walking: medium-light skin tone +1F6B6 1F3FD 200D 2642 FE0F ; fully-qualified # 🚶🏽‍♂️ E4.0 man walking: medium skin tone +1F6B6 1F3FD 200D 2642 ; minimally-qualified # 🚶🏽‍♂ E4.0 man walking: medium skin tone +1F6B6 1F3FE 200D 2642 FE0F ; fully-qualified # 🚶🏾‍♂️ E4.0 man walking: medium-dark skin tone +1F6B6 1F3FE 200D 2642 ; minimally-qualified # 🚶🏾‍♂ E4.0 man walking: medium-dark skin tone +1F6B6 1F3FF 200D 2642 FE0F ; fully-qualified # 🚶🏿‍♂️ E4.0 man walking: dark skin tone +1F6B6 1F3FF 200D 2642 ; minimally-qualified # 🚶🏿‍♂ E4.0 man walking: dark skin tone +1F6B6 200D 2640 FE0F ; fully-qualified # 🚶‍♀️ E4.0 woman walking +1F6B6 200D 2640 ; minimally-qualified # 🚶‍♀ E4.0 woman walking +1F6B6 1F3FB 200D 2640 FE0F ; fully-qualified # 🚶🏻‍♀️ E4.0 woman walking: light skin tone +1F6B6 1F3FB 200D 2640 ; minimally-qualified # 🚶🏻‍♀ E4.0 woman walking: light skin tone +1F6B6 1F3FC 200D 2640 FE0F ; fully-qualified # 🚶🏼‍♀️ E4.0 woman walking: medium-light skin tone +1F6B6 1F3FC 200D 2640 ; minimally-qualified # 🚶🏼‍♀ E4.0 woman walking: medium-light skin tone +1F6B6 1F3FD 200D 2640 FE0F ; fully-qualified # 🚶🏽‍♀️ E4.0 woman walking: medium skin tone +1F6B6 1F3FD 200D 2640 ; minimally-qualified # 🚶🏽‍♀ E4.0 woman walking: medium skin tone +1F6B6 1F3FE 200D 2640 FE0F ; fully-qualified # 🚶🏾‍♀️ E4.0 woman walking: medium-dark skin tone +1F6B6 1F3FE 200D 2640 ; minimally-qualified # 🚶🏾‍♀ E4.0 woman walking: medium-dark skin tone +1F6B6 1F3FF 200D 2640 FE0F ; fully-qualified # 🚶🏿‍♀️ E4.0 woman walking: dark skin tone +1F6B6 1F3FF 200D 2640 ; minimally-qualified # 🚶🏿‍♀ E4.0 woman walking: dark skin tone +1F9CD ; fully-qualified # 🧍 E12.0 person standing +1F9CD 1F3FB ; fully-qualified # 🧍🏻 E12.0 person standing: light skin tone +1F9CD 1F3FC ; fully-qualified # 🧍🏼 E12.0 person standing: medium-light skin tone +1F9CD 1F3FD ; fully-qualified # 🧍🏽 E12.0 person standing: medium skin tone +1F9CD 1F3FE ; fully-qualified # 🧍🏾 E12.0 person standing: medium-dark skin tone +1F9CD 1F3FF ; fully-qualified # 🧍🏿 E12.0 person standing: dark skin tone +1F9CD 200D 2642 FE0F ; fully-qualified # 🧍‍♂️ E12.0 man standing +1F9CD 200D 2642 ; minimally-qualified # 🧍‍♂ E12.0 man standing +1F9CD 1F3FB 200D 2642 FE0F ; fully-qualified # 🧍🏻‍♂️ E12.0 man standing: light skin tone +1F9CD 1F3FB 200D 2642 ; minimally-qualified # 🧍🏻‍♂ E12.0 man standing: light skin tone +1F9CD 1F3FC 200D 2642 FE0F ; fully-qualified # 🧍🏼‍♂️ E12.0 man standing: medium-light skin tone +1F9CD 1F3FC 200D 2642 ; minimally-qualified # 🧍🏼‍♂ E12.0 man standing: medium-light skin tone +1F9CD 1F3FD 200D 2642 FE0F ; fully-qualified # 🧍🏽‍♂️ E12.0 man standing: medium skin tone +1F9CD 1F3FD 200D 2642 ; minimally-qualified # 🧍🏽‍♂ E12.0 man standing: medium skin tone +1F9CD 1F3FE 200D 2642 FE0F ; fully-qualified # 🧍🏾‍♂️ E12.0 man standing: medium-dark skin tone +1F9CD 1F3FE 200D 2642 ; minimally-qualified # 🧍🏾‍♂ E12.0 man standing: medium-dark skin tone +1F9CD 1F3FF 200D 2642 FE0F ; fully-qualified # 🧍🏿‍♂️ E12.0 man standing: dark skin tone +1F9CD 1F3FF 200D 2642 ; minimally-qualified # 🧍🏿‍♂ E12.0 man standing: dark skin tone +1F9CD 200D 2640 FE0F ; fully-qualified # 🧍‍♀️ E12.0 woman standing +1F9CD 200D 2640 ; minimally-qualified # 🧍‍♀ E12.0 woman standing +1F9CD 1F3FB 200D 2640 FE0F ; fully-qualified # 🧍🏻‍♀️ E12.0 woman standing: light skin tone +1F9CD 1F3FB 200D 2640 ; minimally-qualified # 🧍🏻‍♀ E12.0 woman standing: light skin tone +1F9CD 1F3FC 200D 2640 FE0F ; fully-qualified # 🧍🏼‍♀️ E12.0 woman standing: medium-light skin tone +1F9CD 1F3FC 200D 2640 ; minimally-qualified # 🧍🏼‍♀ E12.0 woman standing: medium-light skin tone +1F9CD 1F3FD 200D 2640 FE0F ; fully-qualified # 🧍🏽‍♀️ E12.0 woman standing: medium skin tone +1F9CD 1F3FD 200D 2640 ; minimally-qualified # 🧍🏽‍♀ E12.0 woman standing: medium skin tone +1F9CD 1F3FE 200D 2640 FE0F ; fully-qualified # 🧍🏾‍♀️ E12.0 woman standing: medium-dark skin tone +1F9CD 1F3FE 200D 2640 ; minimally-qualified # 🧍🏾‍♀ E12.0 woman standing: medium-dark skin tone +1F9CD 1F3FF 200D 2640 FE0F ; fully-qualified # 🧍🏿‍♀️ E12.0 woman standing: dark skin tone +1F9CD 1F3FF 200D 2640 ; minimally-qualified # 🧍🏿‍♀ E12.0 woman standing: dark skin tone +1F9CE ; fully-qualified # 🧎 E12.0 person kneeling +1F9CE 1F3FB ; fully-qualified # 🧎🏻 E12.0 person kneeling: light skin tone +1F9CE 1F3FC ; fully-qualified # 🧎🏼 E12.0 person kneeling: medium-light skin tone +1F9CE 1F3FD ; fully-qualified # 🧎🏽 E12.0 person kneeling: medium skin tone +1F9CE 1F3FE ; fully-qualified # 🧎🏾 E12.0 person kneeling: medium-dark skin tone +1F9CE 1F3FF ; fully-qualified # 🧎🏿 E12.0 person kneeling: dark skin tone +1F9CE 200D 2642 FE0F ; fully-qualified # 🧎‍♂️ E12.0 man kneeling +1F9CE 200D 2642 ; minimally-qualified # 🧎‍♂ E12.0 man kneeling +1F9CE 1F3FB 200D 2642 FE0F ; fully-qualified # 🧎🏻‍♂️ E12.0 man kneeling: light skin tone +1F9CE 1F3FB 200D 2642 ; minimally-qualified # 🧎🏻‍♂ E12.0 man kneeling: light skin tone +1F9CE 1F3FC 200D 2642 FE0F ; fully-qualified # 🧎🏼‍♂️ E12.0 man kneeling: medium-light skin tone +1F9CE 1F3FC 200D 2642 ; minimally-qualified # 🧎🏼‍♂ E12.0 man kneeling: medium-light skin tone +1F9CE 1F3FD 200D 2642 FE0F ; fully-qualified # 🧎🏽‍♂️ E12.0 man kneeling: medium skin tone +1F9CE 1F3FD 200D 2642 ; minimally-qualified # 🧎🏽‍♂ E12.0 man kneeling: medium skin tone +1F9CE 1F3FE 200D 2642 FE0F ; fully-qualified # 🧎🏾‍♂️ E12.0 man kneeling: medium-dark skin tone +1F9CE 1F3FE 200D 2642 ; minimally-qualified # 🧎🏾‍♂ E12.0 man kneeling: medium-dark skin tone +1F9CE 1F3FF 200D 2642 FE0F ; fully-qualified # 🧎🏿‍♂️ E12.0 man kneeling: dark skin tone +1F9CE 1F3FF 200D 2642 ; minimally-qualified # 🧎🏿‍♂ E12.0 man kneeling: dark skin tone +1F9CE 200D 2640 FE0F ; fully-qualified # 🧎‍♀️ E12.0 woman kneeling +1F9CE 200D 2640 ; minimally-qualified # 🧎‍♀ E12.0 woman kneeling +1F9CE 1F3FB 200D 2640 FE0F ; fully-qualified # 🧎🏻‍♀️ E12.0 woman kneeling: light skin tone +1F9CE 1F3FB 200D 2640 ; minimally-qualified # 🧎🏻‍♀ E12.0 woman kneeling: light skin tone +1F9CE 1F3FC 200D 2640 FE0F ; fully-qualified # 🧎🏼‍♀️ E12.0 woman kneeling: medium-light skin tone +1F9CE 1F3FC 200D 2640 ; minimally-qualified # 🧎🏼‍♀ E12.0 woman kneeling: medium-light skin tone +1F9CE 1F3FD 200D 2640 FE0F ; fully-qualified # 🧎🏽‍♀️ E12.0 woman kneeling: medium skin tone +1F9CE 1F3FD 200D 2640 ; minimally-qualified # 🧎🏽‍♀ E12.0 woman kneeling: medium skin tone +1F9CE 1F3FE 200D 2640 FE0F ; fully-qualified # 🧎🏾‍♀️ E12.0 woman kneeling: medium-dark skin tone +1F9CE 1F3FE 200D 2640 ; minimally-qualified # 🧎🏾‍♀ E12.0 woman kneeling: medium-dark skin tone +1F9CE 1F3FF 200D 2640 FE0F ; fully-qualified # 🧎🏿‍♀️ E12.0 woman kneeling: dark skin tone +1F9CE 1F3FF 200D 2640 ; minimally-qualified # 🧎🏿‍♀ E12.0 woman kneeling: dark skin tone +1F9D1 200D 1F9AF ; fully-qualified # 🧑‍🦯 E12.1 person with white cane +1F9D1 1F3FB 200D 1F9AF ; fully-qualified # 🧑🏻‍🦯 E12.1 person with white cane: light skin tone +1F9D1 1F3FC 200D 1F9AF ; fully-qualified # 🧑🏼‍🦯 E12.1 person with white cane: medium-light skin tone +1F9D1 1F3FD 200D 1F9AF ; fully-qualified # 🧑🏽‍🦯 E12.1 person with white cane: medium skin tone +1F9D1 1F3FE 200D 1F9AF ; fully-qualified # 🧑🏾‍🦯 E12.1 person with white cane: medium-dark skin tone +1F9D1 1F3FF 200D 1F9AF ; fully-qualified # 🧑🏿‍🦯 E12.1 person with white cane: dark skin tone +1F468 200D 1F9AF ; fully-qualified # 👨‍🦯 E12.0 man with white cane +1F468 1F3FB 200D 1F9AF ; fully-qualified # 👨🏻‍🦯 E12.0 man with white cane: light skin tone +1F468 1F3FC 200D 1F9AF ; fully-qualified # 👨🏼‍🦯 E12.0 man with white cane: medium-light skin tone +1F468 1F3FD 200D 1F9AF ; fully-qualified # 👨🏽‍🦯 E12.0 man with white cane: medium skin tone +1F468 1F3FE 200D 1F9AF ; fully-qualified # 👨🏾‍🦯 E12.0 man with white cane: medium-dark skin tone +1F468 1F3FF 200D 1F9AF ; fully-qualified # 👨🏿‍🦯 E12.0 man with white cane: dark skin tone +1F469 200D 1F9AF ; fully-qualified # 👩‍🦯 E12.0 woman with white cane +1F469 1F3FB 200D 1F9AF ; fully-qualified # 👩🏻‍🦯 E12.0 woman with white cane: light skin tone +1F469 1F3FC 200D 1F9AF ; fully-qualified # 👩🏼‍🦯 E12.0 woman with white cane: medium-light skin tone +1F469 1F3FD 200D 1F9AF ; fully-qualified # 👩🏽‍🦯 E12.0 woman with white cane: medium skin tone +1F469 1F3FE 200D 1F9AF ; fully-qualified # 👩🏾‍🦯 E12.0 woman with white cane: medium-dark skin tone +1F469 1F3FF 200D 1F9AF ; fully-qualified # 👩🏿‍🦯 E12.0 woman with white cane: dark skin tone +1F9D1 200D 1F9BC ; fully-qualified # 🧑‍🦼 E12.1 person in motorized wheelchair +1F9D1 1F3FB 200D 1F9BC ; fully-qualified # 🧑🏻‍🦼 E12.1 person in motorized wheelchair: light skin tone +1F9D1 1F3FC 200D 1F9BC ; fully-qualified # 🧑🏼‍🦼 E12.1 person in motorized wheelchair: medium-light skin tone +1F9D1 1F3FD 200D 1F9BC ; fully-qualified # 🧑🏽‍🦼 E12.1 person in motorized wheelchair: medium skin tone +1F9D1 1F3FE 200D 1F9BC ; fully-qualified # 🧑🏾‍🦼 E12.1 person in motorized wheelchair: medium-dark skin tone +1F9D1 1F3FF 200D 1F9BC ; fully-qualified # 🧑🏿‍🦼 E12.1 person in motorized wheelchair: dark skin tone +1F468 200D 1F9BC ; fully-qualified # 👨‍🦼 E12.0 man in motorized wheelchair +1F468 1F3FB 200D 1F9BC ; fully-qualified # 👨🏻‍🦼 E12.0 man in motorized wheelchair: light skin tone +1F468 1F3FC 200D 1F9BC ; fully-qualified # 👨🏼‍🦼 E12.0 man in motorized wheelchair: medium-light skin tone +1F468 1F3FD 200D 1F9BC ; fully-qualified # 👨🏽‍🦼 E12.0 man in motorized wheelchair: medium skin tone +1F468 1F3FE 200D 1F9BC ; fully-qualified # 👨🏾‍🦼 E12.0 man in motorized wheelchair: medium-dark skin tone +1F468 1F3FF 200D 1F9BC ; fully-qualified # 👨🏿‍🦼 E12.0 man in motorized wheelchair: dark skin tone +1F469 200D 1F9BC ; fully-qualified # 👩‍🦼 E12.0 woman in motorized wheelchair +1F469 1F3FB 200D 1F9BC ; fully-qualified # 👩🏻‍🦼 E12.0 woman in motorized wheelchair: light skin tone +1F469 1F3FC 200D 1F9BC ; fully-qualified # 👩🏼‍🦼 E12.0 woman in motorized wheelchair: medium-light skin tone +1F469 1F3FD 200D 1F9BC ; fully-qualified # 👩🏽‍🦼 E12.0 woman in motorized wheelchair: medium skin tone +1F469 1F3FE 200D 1F9BC ; fully-qualified # 👩🏾‍🦼 E12.0 woman in motorized wheelchair: medium-dark skin tone +1F469 1F3FF 200D 1F9BC ; fully-qualified # 👩🏿‍🦼 E12.0 woman in motorized wheelchair: dark skin tone +1F9D1 200D 1F9BD ; fully-qualified # 🧑‍🦽 E12.1 person in manual wheelchair +1F9D1 1F3FB 200D 1F9BD ; fully-qualified # 🧑🏻‍🦽 E12.1 person in manual wheelchair: light skin tone +1F9D1 1F3FC 200D 1F9BD ; fully-qualified # 🧑🏼‍🦽 E12.1 person in manual wheelchair: medium-light skin tone +1F9D1 1F3FD 200D 1F9BD ; fully-qualified # 🧑🏽‍🦽 E12.1 person in manual wheelchair: medium skin tone +1F9D1 1F3FE 200D 1F9BD ; fully-qualified # 🧑🏾‍🦽 E12.1 person in manual wheelchair: medium-dark skin tone +1F9D1 1F3FF 200D 1F9BD ; fully-qualified # 🧑🏿‍🦽 E12.1 person in manual wheelchair: dark skin tone +1F468 200D 1F9BD ; fully-qualified # 👨‍🦽 E12.0 man in manual wheelchair +1F468 1F3FB 200D 1F9BD ; fully-qualified # 👨🏻‍🦽 E12.0 man in manual wheelchair: light skin tone +1F468 1F3FC 200D 1F9BD ; fully-qualified # 👨🏼‍🦽 E12.0 man in manual wheelchair: medium-light skin tone +1F468 1F3FD 200D 1F9BD ; fully-qualified # 👨🏽‍🦽 E12.0 man in manual wheelchair: medium skin tone +1F468 1F3FE 200D 1F9BD ; fully-qualified # 👨🏾‍🦽 E12.0 man in manual wheelchair: medium-dark skin tone +1F468 1F3FF 200D 1F9BD ; fully-qualified # 👨🏿‍🦽 E12.0 man in manual wheelchair: dark skin tone +1F469 200D 1F9BD ; fully-qualified # 👩‍🦽 E12.0 woman in manual wheelchair +1F469 1F3FB 200D 1F9BD ; fully-qualified # 👩🏻‍🦽 E12.0 woman in manual wheelchair: light skin tone +1F469 1F3FC 200D 1F9BD ; fully-qualified # 👩🏼‍🦽 E12.0 woman in manual wheelchair: medium-light skin tone +1F469 1F3FD 200D 1F9BD ; fully-qualified # 👩🏽‍🦽 E12.0 woman in manual wheelchair: medium skin tone +1F469 1F3FE 200D 1F9BD ; fully-qualified # 👩🏾‍🦽 E12.0 woman in manual wheelchair: medium-dark skin tone +1F469 1F3FF 200D 1F9BD ; fully-qualified # 👩🏿‍🦽 E12.0 woman in manual wheelchair: dark skin tone +1F3C3 ; fully-qualified # 🏃 E0.6 person running +1F3C3 1F3FB ; fully-qualified # 🏃🏻 E1.0 person running: light skin tone +1F3C3 1F3FC ; fully-qualified # 🏃🏼 E1.0 person running: medium-light skin tone +1F3C3 1F3FD ; fully-qualified # 🏃🏽 E1.0 person running: medium skin tone +1F3C3 1F3FE ; fully-qualified # 🏃🏾 E1.0 person running: medium-dark skin tone +1F3C3 1F3FF ; fully-qualified # 🏃🏿 E1.0 person running: dark skin tone +1F3C3 200D 2642 FE0F ; fully-qualified # 🏃‍♂️ E4.0 man running +1F3C3 200D 2642 ; minimally-qualified # 🏃‍♂ E4.0 man running +1F3C3 1F3FB 200D 2642 FE0F ; fully-qualified # 🏃🏻‍♂️ E4.0 man running: light skin tone +1F3C3 1F3FB 200D 2642 ; minimally-qualified # 🏃🏻‍♂ E4.0 man running: light skin tone +1F3C3 1F3FC 200D 2642 FE0F ; fully-qualified # 🏃🏼‍♂️ E4.0 man running: medium-light skin tone +1F3C3 1F3FC 200D 2642 ; minimally-qualified # 🏃🏼‍♂ E4.0 man running: medium-light skin tone +1F3C3 1F3FD 200D 2642 FE0F ; fully-qualified # 🏃🏽‍♂️ E4.0 man running: medium skin tone +1F3C3 1F3FD 200D 2642 ; minimally-qualified # 🏃🏽‍♂ E4.0 man running: medium skin tone +1F3C3 1F3FE 200D 2642 FE0F ; fully-qualified # 🏃🏾‍♂️ E4.0 man running: medium-dark skin tone +1F3C3 1F3FE 200D 2642 ; minimally-qualified # 🏃🏾‍♂ E4.0 man running: medium-dark skin tone +1F3C3 1F3FF 200D 2642 FE0F ; fully-qualified # 🏃🏿‍♂️ E4.0 man running: dark skin tone +1F3C3 1F3FF 200D 2642 ; minimally-qualified # 🏃🏿‍♂ E4.0 man running: dark skin tone +1F3C3 200D 2640 FE0F ; fully-qualified # 🏃‍♀️ E4.0 woman running +1F3C3 200D 2640 ; minimally-qualified # 🏃‍♀ E4.0 woman running +1F3C3 1F3FB 200D 2640 FE0F ; fully-qualified # 🏃🏻‍♀️ E4.0 woman running: light skin tone +1F3C3 1F3FB 200D 2640 ; minimally-qualified # 🏃🏻‍♀ E4.0 woman running: light skin tone +1F3C3 1F3FC 200D 2640 FE0F ; fully-qualified # 🏃🏼‍♀️ E4.0 woman running: medium-light skin tone +1F3C3 1F3FC 200D 2640 ; minimally-qualified # 🏃🏼‍♀ E4.0 woman running: medium-light skin tone +1F3C3 1F3FD 200D 2640 FE0F ; fully-qualified # 🏃🏽‍♀️ E4.0 woman running: medium skin tone +1F3C3 1F3FD 200D 2640 ; minimally-qualified # 🏃🏽‍♀ E4.0 woman running: medium skin tone +1F3C3 1F3FE 200D 2640 FE0F ; fully-qualified # 🏃🏾‍♀️ E4.0 woman running: medium-dark skin tone +1F3C3 1F3FE 200D 2640 ; minimally-qualified # 🏃🏾‍♀ E4.0 woman running: medium-dark skin tone +1F3C3 1F3FF 200D 2640 FE0F ; fully-qualified # 🏃🏿‍♀️ E4.0 woman running: dark skin tone +1F3C3 1F3FF 200D 2640 ; minimally-qualified # 🏃🏿‍♀ E4.0 woman running: dark skin tone +1F483 ; fully-qualified # 💃 E0.6 woman dancing +1F483 1F3FB ; fully-qualified # 💃🏻 E1.0 woman dancing: light skin tone +1F483 1F3FC ; fully-qualified # 💃🏼 E1.0 woman dancing: medium-light skin tone +1F483 1F3FD ; fully-qualified # 💃🏽 E1.0 woman dancing: medium skin tone +1F483 1F3FE ; fully-qualified # 💃🏾 E1.0 woman dancing: medium-dark skin tone +1F483 1F3FF ; fully-qualified # 💃🏿 E1.0 woman dancing: dark skin tone +1F57A ; fully-qualified # 🕺 E3.0 man dancing +1F57A 1F3FB ; fully-qualified # 🕺🏻 E3.0 man dancing: light skin tone +1F57A 1F3FC ; fully-qualified # 🕺🏼 E3.0 man dancing: medium-light skin tone +1F57A 1F3FD ; fully-qualified # 🕺🏽 E3.0 man dancing: medium skin tone +1F57A 1F3FE ; fully-qualified # 🕺🏾 E3.0 man dancing: medium-dark skin tone +1F57A 1F3FF ; fully-qualified # 🕺🏿 E3.0 man dancing: dark skin tone +1F574 FE0F ; fully-qualified # 🕴️ E0.7 person in suit levitating +1F574 ; unqualified # 🕴 E0.7 person in suit levitating +1F574 1F3FB ; fully-qualified # 🕴🏻 E4.0 person in suit levitating: light skin tone +1F574 1F3FC ; fully-qualified # 🕴🏼 E4.0 person in suit levitating: medium-light skin tone +1F574 1F3FD ; fully-qualified # 🕴🏽 E4.0 person in suit levitating: medium skin tone +1F574 1F3FE ; fully-qualified # 🕴🏾 E4.0 person in suit levitating: medium-dark skin tone +1F574 1F3FF ; fully-qualified # 🕴🏿 E4.0 person in suit levitating: dark skin tone +1F46F ; fully-qualified # 👯 E0.6 people with bunny ears +1F46F 200D 2642 FE0F ; fully-qualified # 👯‍♂️ E4.0 men with bunny ears +1F46F 200D 2642 ; minimally-qualified # 👯‍♂ E4.0 men with bunny ears +1F46F 200D 2640 FE0F ; fully-qualified # 👯‍♀️ E4.0 women with bunny ears +1F46F 200D 2640 ; minimally-qualified # 👯‍♀ E4.0 women with bunny ears +1F9D6 ; fully-qualified # 🧖 E5.0 person in steamy room +1F9D6 1F3FB ; fully-qualified # 🧖🏻 E5.0 person in steamy room: light skin tone +1F9D6 1F3FC ; fully-qualified # 🧖🏼 E5.0 person in steamy room: medium-light skin tone +1F9D6 1F3FD ; fully-qualified # 🧖🏽 E5.0 person in steamy room: medium skin tone +1F9D6 1F3FE ; fully-qualified # 🧖🏾 E5.0 person in steamy room: medium-dark skin tone +1F9D6 1F3FF ; fully-qualified # 🧖🏿 E5.0 person in steamy room: dark skin tone +1F9D6 200D 2642 FE0F ; fully-qualified # 🧖‍♂️ E5.0 man in steamy room +1F9D6 200D 2642 ; minimally-qualified # 🧖‍♂ E5.0 man in steamy room +1F9D6 1F3FB 200D 2642 FE0F ; fully-qualified # 🧖🏻‍♂️ E5.0 man in steamy room: light skin tone +1F9D6 1F3FB 200D 2642 ; minimally-qualified # 🧖🏻‍♂ E5.0 man in steamy room: light skin tone +1F9D6 1F3FC 200D 2642 FE0F ; fully-qualified # 🧖🏼‍♂️ E5.0 man in steamy room: medium-light skin tone +1F9D6 1F3FC 200D 2642 ; minimally-qualified # 🧖🏼‍♂ E5.0 man in steamy room: medium-light skin tone +1F9D6 1F3FD 200D 2642 FE0F ; fully-qualified # 🧖🏽‍♂️ E5.0 man in steamy room: medium skin tone +1F9D6 1F3FD 200D 2642 ; minimally-qualified # 🧖🏽‍♂ E5.0 man in steamy room: medium skin tone +1F9D6 1F3FE 200D 2642 FE0F ; fully-qualified # 🧖🏾‍♂️ E5.0 man in steamy room: medium-dark skin tone +1F9D6 1F3FE 200D 2642 ; minimally-qualified # 🧖🏾‍♂ E5.0 man in steamy room: medium-dark skin tone +1F9D6 1F3FF 200D 2642 FE0F ; fully-qualified # 🧖🏿‍♂️ E5.0 man in steamy room: dark skin tone +1F9D6 1F3FF 200D 2642 ; minimally-qualified # 🧖🏿‍♂ E5.0 man in steamy room: dark skin tone +1F9D6 200D 2640 FE0F ; fully-qualified # 🧖‍♀️ E5.0 woman in steamy room +1F9D6 200D 2640 ; minimally-qualified # 🧖‍♀ E5.0 woman in steamy room +1F9D6 1F3FB 200D 2640 FE0F ; fully-qualified # 🧖🏻‍♀️ E5.0 woman in steamy room: light skin tone +1F9D6 1F3FB 200D 2640 ; minimally-qualified # 🧖🏻‍♀ E5.0 woman in steamy room: light skin tone +1F9D6 1F3FC 200D 2640 FE0F ; fully-qualified # 🧖🏼‍♀️ E5.0 woman in steamy room: medium-light skin tone +1F9D6 1F3FC 200D 2640 ; minimally-qualified # 🧖🏼‍♀ E5.0 woman in steamy room: medium-light skin tone +1F9D6 1F3FD 200D 2640 FE0F ; fully-qualified # 🧖🏽‍♀️ E5.0 woman in steamy room: medium skin tone +1F9D6 1F3FD 200D 2640 ; minimally-qualified # 🧖🏽‍♀ E5.0 woman in steamy room: medium skin tone +1F9D6 1F3FE 200D 2640 FE0F ; fully-qualified # 🧖🏾‍♀️ E5.0 woman in steamy room: medium-dark skin tone +1F9D6 1F3FE 200D 2640 ; minimally-qualified # 🧖🏾‍♀ E5.0 woman in steamy room: medium-dark skin tone +1F9D6 1F3FF 200D 2640 FE0F ; fully-qualified # 🧖🏿‍♀️ E5.0 woman in steamy room: dark skin tone +1F9D6 1F3FF 200D 2640 ; minimally-qualified # 🧖🏿‍♀ E5.0 woman in steamy room: dark skin tone +1F9D7 ; fully-qualified # 🧗 E5.0 person climbing +1F9D7 1F3FB ; fully-qualified # 🧗🏻 E5.0 person climbing: light skin tone +1F9D7 1F3FC ; fully-qualified # 🧗🏼 E5.0 person climbing: medium-light skin tone +1F9D7 1F3FD ; fully-qualified # 🧗🏽 E5.0 person climbing: medium skin tone +1F9D7 1F3FE ; fully-qualified # 🧗🏾 E5.0 person climbing: medium-dark skin tone +1F9D7 1F3FF ; fully-qualified # 🧗🏿 E5.0 person climbing: dark skin tone +1F9D7 200D 2642 FE0F ; fully-qualified # 🧗‍♂️ E5.0 man climbing +1F9D7 200D 2642 ; minimally-qualified # 🧗‍♂ E5.0 man climbing +1F9D7 1F3FB 200D 2642 FE0F ; fully-qualified # 🧗🏻‍♂️ E5.0 man climbing: light skin tone +1F9D7 1F3FB 200D 2642 ; minimally-qualified # 🧗🏻‍♂ E5.0 man climbing: light skin tone +1F9D7 1F3FC 200D 2642 FE0F ; fully-qualified # 🧗🏼‍♂️ E5.0 man climbing: medium-light skin tone +1F9D7 1F3FC 200D 2642 ; minimally-qualified # 🧗🏼‍♂ E5.0 man climbing: medium-light skin tone +1F9D7 1F3FD 200D 2642 FE0F ; fully-qualified # 🧗🏽‍♂️ E5.0 man climbing: medium skin tone +1F9D7 1F3FD 200D 2642 ; minimally-qualified # 🧗🏽‍♂ E5.0 man climbing: medium skin tone +1F9D7 1F3FE 200D 2642 FE0F ; fully-qualified # 🧗🏾‍♂️ E5.0 man climbing: medium-dark skin tone +1F9D7 1F3FE 200D 2642 ; minimally-qualified # 🧗🏾‍♂ E5.0 man climbing: medium-dark skin tone +1F9D7 1F3FF 200D 2642 FE0F ; fully-qualified # 🧗🏿‍♂️ E5.0 man climbing: dark skin tone +1F9D7 1F3FF 200D 2642 ; minimally-qualified # 🧗🏿‍♂ E5.0 man climbing: dark skin tone +1F9D7 200D 2640 FE0F ; fully-qualified # 🧗‍♀️ E5.0 woman climbing +1F9D7 200D 2640 ; minimally-qualified # 🧗‍♀ E5.0 woman climbing +1F9D7 1F3FB 200D 2640 FE0F ; fully-qualified # 🧗🏻‍♀️ E5.0 woman climbing: light skin tone +1F9D7 1F3FB 200D 2640 ; minimally-qualified # 🧗🏻‍♀ E5.0 woman climbing: light skin tone +1F9D7 1F3FC 200D 2640 FE0F ; fully-qualified # 🧗🏼‍♀️ E5.0 woman climbing: medium-light skin tone +1F9D7 1F3FC 200D 2640 ; minimally-qualified # 🧗🏼‍♀ E5.0 woman climbing: medium-light skin tone +1F9D7 1F3FD 200D 2640 FE0F ; fully-qualified # 🧗🏽‍♀️ E5.0 woman climbing: medium skin tone +1F9D7 1F3FD 200D 2640 ; minimally-qualified # 🧗🏽‍♀ E5.0 woman climbing: medium skin tone +1F9D7 1F3FE 200D 2640 FE0F ; fully-qualified # 🧗🏾‍♀️ E5.0 woman climbing: medium-dark skin tone +1F9D7 1F3FE 200D 2640 ; minimally-qualified # 🧗🏾‍♀ E5.0 woman climbing: medium-dark skin tone +1F9D7 1F3FF 200D 2640 FE0F ; fully-qualified # 🧗🏿‍♀️ E5.0 woman climbing: dark skin tone +1F9D7 1F3FF 200D 2640 ; minimally-qualified # 🧗🏿‍♀ E5.0 woman climbing: dark skin tone + +# subgroup: person-sport +1F93A ; fully-qualified # 🤺 E3.0 person fencing +1F3C7 ; fully-qualified # 🏇 E1.0 horse racing +1F3C7 1F3FB ; fully-qualified # 🏇🏻 E1.0 horse racing: light skin tone +1F3C7 1F3FC ; fully-qualified # 🏇🏼 E1.0 horse racing: medium-light skin tone +1F3C7 1F3FD ; fully-qualified # 🏇🏽 E1.0 horse racing: medium skin tone +1F3C7 1F3FE ; fully-qualified # 🏇🏾 E1.0 horse racing: medium-dark skin tone +1F3C7 1F3FF ; fully-qualified # 🏇🏿 E1.0 horse racing: dark skin tone +26F7 FE0F ; fully-qualified # ⛷️ E0.7 skier +26F7 ; unqualified # ⛷ E0.7 skier +1F3C2 ; fully-qualified # 🏂 E0.6 snowboarder +1F3C2 1F3FB ; fully-qualified # 🏂🏻 E1.0 snowboarder: light skin tone +1F3C2 1F3FC ; fully-qualified # 🏂🏼 E1.0 snowboarder: medium-light skin tone +1F3C2 1F3FD ; fully-qualified # 🏂🏽 E1.0 snowboarder: medium skin tone +1F3C2 1F3FE ; fully-qualified # 🏂🏾 E1.0 snowboarder: medium-dark skin tone +1F3C2 1F3FF ; fully-qualified # 🏂🏿 E1.0 snowboarder: dark skin tone +1F3CC FE0F ; fully-qualified # 🏌️ E0.7 person golfing +1F3CC ; unqualified # 🏌 E0.7 person golfing +1F3CC 1F3FB ; fully-qualified # 🏌🏻 E4.0 person golfing: light skin tone +1F3CC 1F3FC ; fully-qualified # 🏌🏼 E4.0 person golfing: medium-light skin tone +1F3CC 1F3FD ; fully-qualified # 🏌🏽 E4.0 person golfing: medium skin tone +1F3CC 1F3FE ; fully-qualified # 🏌🏾 E4.0 person golfing: medium-dark skin tone +1F3CC 1F3FF ; fully-qualified # 🏌🏿 E4.0 person golfing: dark skin tone +1F3CC FE0F 200D 2642 FE0F ; fully-qualified # 🏌️‍♂️ E4.0 man golfing +1F3CC 200D 2642 FE0F ; unqualified # 🏌‍♂️ E4.0 man golfing +1F3CC FE0F 200D 2642 ; minimally-qualified # 🏌️‍♂ E4.0 man golfing +1F3CC 200D 2642 ; unqualified # 🏌‍♂ E4.0 man golfing +1F3CC 1F3FB 200D 2642 FE0F ; fully-qualified # 🏌🏻‍♂️ E4.0 man golfing: light skin tone +1F3CC 1F3FB 200D 2642 ; minimally-qualified # 🏌🏻‍♂ E4.0 man golfing: light skin tone +1F3CC 1F3FC 200D 2642 FE0F ; fully-qualified # 🏌🏼‍♂️ E4.0 man golfing: medium-light skin tone +1F3CC 1F3FC 200D 2642 ; minimally-qualified # 🏌🏼‍♂ E4.0 man golfing: medium-light skin tone +1F3CC 1F3FD 200D 2642 FE0F ; fully-qualified # 🏌🏽‍♂️ E4.0 man golfing: medium skin tone +1F3CC 1F3FD 200D 2642 ; minimally-qualified # 🏌🏽‍♂ E4.0 man golfing: medium skin tone +1F3CC 1F3FE 200D 2642 FE0F ; fully-qualified # 🏌🏾‍♂️ E4.0 man golfing: medium-dark skin tone +1F3CC 1F3FE 200D 2642 ; minimally-qualified # 🏌🏾‍♂ E4.0 man golfing: medium-dark skin tone +1F3CC 1F3FF 200D 2642 FE0F ; fully-qualified # 🏌🏿‍♂️ E4.0 man golfing: dark skin tone +1F3CC 1F3FF 200D 2642 ; minimally-qualified # 🏌🏿‍♂ E4.0 man golfing: dark skin tone +1F3CC FE0F 200D 2640 FE0F ; fully-qualified # 🏌️‍♀️ E4.0 woman golfing +1F3CC 200D 2640 FE0F ; unqualified # 🏌‍♀️ E4.0 woman golfing +1F3CC FE0F 200D 2640 ; minimally-qualified # 🏌️‍♀ E4.0 woman golfing +1F3CC 200D 2640 ; unqualified # 🏌‍♀ E4.0 woman golfing +1F3CC 1F3FB 200D 2640 FE0F ; fully-qualified # 🏌🏻‍♀️ E4.0 woman golfing: light skin tone +1F3CC 1F3FB 200D 2640 ; minimally-qualified # 🏌🏻‍♀ E4.0 woman golfing: light skin tone +1F3CC 1F3FC 200D 2640 FE0F ; fully-qualified # 🏌🏼‍♀️ E4.0 woman golfing: medium-light skin tone +1F3CC 1F3FC 200D 2640 ; minimally-qualified # 🏌🏼‍♀ E4.0 woman golfing: medium-light skin tone +1F3CC 1F3FD 200D 2640 FE0F ; fully-qualified # 🏌🏽‍♀️ E4.0 woman golfing: medium skin tone +1F3CC 1F3FD 200D 2640 ; minimally-qualified # 🏌🏽‍♀ E4.0 woman golfing: medium skin tone +1F3CC 1F3FE 200D 2640 FE0F ; fully-qualified # 🏌🏾‍♀️ E4.0 woman golfing: medium-dark skin tone +1F3CC 1F3FE 200D 2640 ; minimally-qualified # 🏌🏾‍♀ E4.0 woman golfing: medium-dark skin tone +1F3CC 1F3FF 200D 2640 FE0F ; fully-qualified # 🏌🏿‍♀️ E4.0 woman golfing: dark skin tone +1F3CC 1F3FF 200D 2640 ; minimally-qualified # 🏌🏿‍♀ E4.0 woman golfing: dark skin tone +1F3C4 ; fully-qualified # 🏄 E0.6 person surfing +1F3C4 1F3FB ; fully-qualified # 🏄🏻 E1.0 person surfing: light skin tone +1F3C4 1F3FC ; fully-qualified # 🏄🏼 E1.0 person surfing: medium-light skin tone +1F3C4 1F3FD ; fully-qualified # 🏄🏽 E1.0 person surfing: medium skin tone +1F3C4 1F3FE ; fully-qualified # 🏄🏾 E1.0 person surfing: medium-dark skin tone +1F3C4 1F3FF ; fully-qualified # 🏄🏿 E1.0 person surfing: dark skin tone +1F3C4 200D 2642 FE0F ; fully-qualified # 🏄‍♂️ E4.0 man surfing +1F3C4 200D 2642 ; minimally-qualified # 🏄‍♂ E4.0 man surfing +1F3C4 1F3FB 200D 2642 FE0F ; fully-qualified # 🏄🏻‍♂️ E4.0 man surfing: light skin tone +1F3C4 1F3FB 200D 2642 ; minimally-qualified # 🏄🏻‍♂ E4.0 man surfing: light skin tone +1F3C4 1F3FC 200D 2642 FE0F ; fully-qualified # 🏄🏼‍♂️ E4.0 man surfing: medium-light skin tone +1F3C4 1F3FC 200D 2642 ; minimally-qualified # 🏄🏼‍♂ E4.0 man surfing: medium-light skin tone +1F3C4 1F3FD 200D 2642 FE0F ; fully-qualified # 🏄🏽‍♂️ E4.0 man surfing: medium skin tone +1F3C4 1F3FD 200D 2642 ; minimally-qualified # 🏄🏽‍♂ E4.0 man surfing: medium skin tone +1F3C4 1F3FE 200D 2642 FE0F ; fully-qualified # 🏄🏾‍♂️ E4.0 man surfing: medium-dark skin tone +1F3C4 1F3FE 200D 2642 ; minimally-qualified # 🏄🏾‍♂ E4.0 man surfing: medium-dark skin tone +1F3C4 1F3FF 200D 2642 FE0F ; fully-qualified # 🏄🏿‍♂️ E4.0 man surfing: dark skin tone +1F3C4 1F3FF 200D 2642 ; minimally-qualified # 🏄🏿‍♂ E4.0 man surfing: dark skin tone +1F3C4 200D 2640 FE0F ; fully-qualified # 🏄‍♀️ E4.0 woman surfing +1F3C4 200D 2640 ; minimally-qualified # 🏄‍♀ E4.0 woman surfing +1F3C4 1F3FB 200D 2640 FE0F ; fully-qualified # 🏄🏻‍♀️ E4.0 woman surfing: light skin tone +1F3C4 1F3FB 200D 2640 ; minimally-qualified # 🏄🏻‍♀ E4.0 woman surfing: light skin tone +1F3C4 1F3FC 200D 2640 FE0F ; fully-qualified # 🏄🏼‍♀️ E4.0 woman surfing: medium-light skin tone +1F3C4 1F3FC 200D 2640 ; minimally-qualified # 🏄🏼‍♀ E4.0 woman surfing: medium-light skin tone +1F3C4 1F3FD 200D 2640 FE0F ; fully-qualified # 🏄🏽‍♀️ E4.0 woman surfing: medium skin tone +1F3C4 1F3FD 200D 2640 ; minimally-qualified # 🏄🏽‍♀ E4.0 woman surfing: medium skin tone +1F3C4 1F3FE 200D 2640 FE0F ; fully-qualified # 🏄🏾‍♀️ E4.0 woman surfing: medium-dark skin tone +1F3C4 1F3FE 200D 2640 ; minimally-qualified # 🏄🏾‍♀ E4.0 woman surfing: medium-dark skin tone +1F3C4 1F3FF 200D 2640 FE0F ; fully-qualified # 🏄🏿‍♀️ E4.0 woman surfing: dark skin tone +1F3C4 1F3FF 200D 2640 ; minimally-qualified # 🏄🏿‍♀ E4.0 woman surfing: dark skin tone +1F6A3 ; fully-qualified # 🚣 E1.0 person rowing boat +1F6A3 1F3FB ; fully-qualified # 🚣🏻 E1.0 person rowing boat: light skin tone +1F6A3 1F3FC ; fully-qualified # 🚣🏼 E1.0 person rowing boat: medium-light skin tone +1F6A3 1F3FD ; fully-qualified # 🚣🏽 E1.0 person rowing boat: medium skin tone +1F6A3 1F3FE ; fully-qualified # 🚣🏾 E1.0 person rowing boat: medium-dark skin tone +1F6A3 1F3FF ; fully-qualified # 🚣🏿 E1.0 person rowing boat: dark skin tone +1F6A3 200D 2642 FE0F ; fully-qualified # 🚣‍♂️ E4.0 man rowing boat +1F6A3 200D 2642 ; minimally-qualified # 🚣‍♂ E4.0 man rowing boat +1F6A3 1F3FB 200D 2642 FE0F ; fully-qualified # 🚣🏻‍♂️ E4.0 man rowing boat: light skin tone +1F6A3 1F3FB 200D 2642 ; minimally-qualified # 🚣🏻‍♂ E4.0 man rowing boat: light skin tone +1F6A3 1F3FC 200D 2642 FE0F ; fully-qualified # 🚣🏼‍♂️ E4.0 man rowing boat: medium-light skin tone +1F6A3 1F3FC 200D 2642 ; minimally-qualified # 🚣🏼‍♂ E4.0 man rowing boat: medium-light skin tone +1F6A3 1F3FD 200D 2642 FE0F ; fully-qualified # 🚣🏽‍♂️ E4.0 man rowing boat: medium skin tone +1F6A3 1F3FD 200D 2642 ; minimally-qualified # 🚣🏽‍♂ E4.0 man rowing boat: medium skin tone +1F6A3 1F3FE 200D 2642 FE0F ; fully-qualified # 🚣🏾‍♂️ E4.0 man rowing boat: medium-dark skin tone +1F6A3 1F3FE 200D 2642 ; minimally-qualified # 🚣🏾‍♂ E4.0 man rowing boat: medium-dark skin tone +1F6A3 1F3FF 200D 2642 FE0F ; fully-qualified # 🚣🏿‍♂️ E4.0 man rowing boat: dark skin tone +1F6A3 1F3FF 200D 2642 ; minimally-qualified # 🚣🏿‍♂ E4.0 man rowing boat: dark skin tone +1F6A3 200D 2640 FE0F ; fully-qualified # 🚣‍♀️ E4.0 woman rowing boat +1F6A3 200D 2640 ; minimally-qualified # 🚣‍♀ E4.0 woman rowing boat +1F6A3 1F3FB 200D 2640 FE0F ; fully-qualified # 🚣🏻‍♀️ E4.0 woman rowing boat: light skin tone +1F6A3 1F3FB 200D 2640 ; minimally-qualified # 🚣🏻‍♀ E4.0 woman rowing boat: light skin tone +1F6A3 1F3FC 200D 2640 FE0F ; fully-qualified # 🚣🏼‍♀️ E4.0 woman rowing boat: medium-light skin tone +1F6A3 1F3FC 200D 2640 ; minimally-qualified # 🚣🏼‍♀ E4.0 woman rowing boat: medium-light skin tone +1F6A3 1F3FD 200D 2640 FE0F ; fully-qualified # 🚣🏽‍♀️ E4.0 woman rowing boat: medium skin tone +1F6A3 1F3FD 200D 2640 ; minimally-qualified # 🚣🏽‍♀ E4.0 woman rowing boat: medium skin tone +1F6A3 1F3FE 200D 2640 FE0F ; fully-qualified # 🚣🏾‍♀️ E4.0 woman rowing boat: medium-dark skin tone +1F6A3 1F3FE 200D 2640 ; minimally-qualified # 🚣🏾‍♀ E4.0 woman rowing boat: medium-dark skin tone +1F6A3 1F3FF 200D 2640 FE0F ; fully-qualified # 🚣🏿‍♀️ E4.0 woman rowing boat: dark skin tone +1F6A3 1F3FF 200D 2640 ; minimally-qualified # 🚣🏿‍♀ E4.0 woman rowing boat: dark skin tone +1F3CA ; fully-qualified # 🏊 E0.6 person swimming +1F3CA 1F3FB ; fully-qualified # 🏊🏻 E1.0 person swimming: light skin tone +1F3CA 1F3FC ; fully-qualified # 🏊🏼 E1.0 person swimming: medium-light skin tone +1F3CA 1F3FD ; fully-qualified # 🏊🏽 E1.0 person swimming: medium skin tone +1F3CA 1F3FE ; fully-qualified # 🏊🏾 E1.0 person swimming: medium-dark skin tone +1F3CA 1F3FF ; fully-qualified # 🏊🏿 E1.0 person swimming: dark skin tone +1F3CA 200D 2642 FE0F ; fully-qualified # 🏊‍♂️ E4.0 man swimming +1F3CA 200D 2642 ; minimally-qualified # 🏊‍♂ E4.0 man swimming +1F3CA 1F3FB 200D 2642 FE0F ; fully-qualified # 🏊🏻‍♂️ E4.0 man swimming: light skin tone +1F3CA 1F3FB 200D 2642 ; minimally-qualified # 🏊🏻‍♂ E4.0 man swimming: light skin tone +1F3CA 1F3FC 200D 2642 FE0F ; fully-qualified # 🏊🏼‍♂️ E4.0 man swimming: medium-light skin tone +1F3CA 1F3FC 200D 2642 ; minimally-qualified # 🏊🏼‍♂ E4.0 man swimming: medium-light skin tone +1F3CA 1F3FD 200D 2642 FE0F ; fully-qualified # 🏊🏽‍♂️ E4.0 man swimming: medium skin tone +1F3CA 1F3FD 200D 2642 ; minimally-qualified # 🏊🏽‍♂ E4.0 man swimming: medium skin tone +1F3CA 1F3FE 200D 2642 FE0F ; fully-qualified # 🏊🏾‍♂️ E4.0 man swimming: medium-dark skin tone +1F3CA 1F3FE 200D 2642 ; minimally-qualified # 🏊🏾‍♂ E4.0 man swimming: medium-dark skin tone +1F3CA 1F3FF 200D 2642 FE0F ; fully-qualified # 🏊🏿‍♂️ E4.0 man swimming: dark skin tone +1F3CA 1F3FF 200D 2642 ; minimally-qualified # 🏊🏿‍♂ E4.0 man swimming: dark skin tone +1F3CA 200D 2640 FE0F ; fully-qualified # 🏊‍♀️ E4.0 woman swimming +1F3CA 200D 2640 ; minimally-qualified # 🏊‍♀ E4.0 woman swimming +1F3CA 1F3FB 200D 2640 FE0F ; fully-qualified # 🏊🏻‍♀️ E4.0 woman swimming: light skin tone +1F3CA 1F3FB 200D 2640 ; minimally-qualified # 🏊🏻‍♀ E4.0 woman swimming: light skin tone +1F3CA 1F3FC 200D 2640 FE0F ; fully-qualified # 🏊🏼‍♀️ E4.0 woman swimming: medium-light skin tone +1F3CA 1F3FC 200D 2640 ; minimally-qualified # 🏊🏼‍♀ E4.0 woman swimming: medium-light skin tone +1F3CA 1F3FD 200D 2640 FE0F ; fully-qualified # 🏊🏽‍♀️ E4.0 woman swimming: medium skin tone +1F3CA 1F3FD 200D 2640 ; minimally-qualified # 🏊🏽‍♀ E4.0 woman swimming: medium skin tone +1F3CA 1F3FE 200D 2640 FE0F ; fully-qualified # 🏊🏾‍♀️ E4.0 woman swimming: medium-dark skin tone +1F3CA 1F3FE 200D 2640 ; minimally-qualified # 🏊🏾‍♀ E4.0 woman swimming: medium-dark skin tone +1F3CA 1F3FF 200D 2640 FE0F ; fully-qualified # 🏊🏿‍♀️ E4.0 woman swimming: dark skin tone +1F3CA 1F3FF 200D 2640 ; minimally-qualified # 🏊🏿‍♀ E4.0 woman swimming: dark skin tone +26F9 FE0F ; fully-qualified # ⛹️ E0.7 person bouncing ball +26F9 ; unqualified # ⛹ E0.7 person bouncing ball +26F9 1F3FB ; fully-qualified # ⛹🏻 E2.0 person bouncing ball: light skin tone +26F9 1F3FC ; fully-qualified # ⛹🏼 E2.0 person bouncing ball: medium-light skin tone +26F9 1F3FD ; fully-qualified # ⛹🏽 E2.0 person bouncing ball: medium skin tone +26F9 1F3FE ; fully-qualified # ⛹🏾 E2.0 person bouncing ball: medium-dark skin tone +26F9 1F3FF ; fully-qualified # ⛹🏿 E2.0 person bouncing ball: dark skin tone +26F9 FE0F 200D 2642 FE0F ; fully-qualified # ⛹️‍♂️ E4.0 man bouncing ball +26F9 200D 2642 FE0F ; unqualified # ⛹‍♂️ E4.0 man bouncing ball +26F9 FE0F 200D 2642 ; minimally-qualified # ⛹️‍♂ E4.0 man bouncing ball +26F9 200D 2642 ; unqualified # ⛹‍♂ E4.0 man bouncing ball +26F9 1F3FB 200D 2642 FE0F ; fully-qualified # ⛹🏻‍♂️ E4.0 man bouncing ball: light skin tone +26F9 1F3FB 200D 2642 ; minimally-qualified # ⛹🏻‍♂ E4.0 man bouncing ball: light skin tone +26F9 1F3FC 200D 2642 FE0F ; fully-qualified # ⛹🏼‍♂️ E4.0 man bouncing ball: medium-light skin tone +26F9 1F3FC 200D 2642 ; minimally-qualified # ⛹🏼‍♂ E4.0 man bouncing ball: medium-light skin tone +26F9 1F3FD 200D 2642 FE0F ; fully-qualified # ⛹🏽‍♂️ E4.0 man bouncing ball: medium skin tone +26F9 1F3FD 200D 2642 ; minimally-qualified # ⛹🏽‍♂ E4.0 man bouncing ball: medium skin tone +26F9 1F3FE 200D 2642 FE0F ; fully-qualified # ⛹🏾‍♂️ E4.0 man bouncing ball: medium-dark skin tone +26F9 1F3FE 200D 2642 ; minimally-qualified # ⛹🏾‍♂ E4.0 man bouncing ball: medium-dark skin tone +26F9 1F3FF 200D 2642 FE0F ; fully-qualified # ⛹🏿‍♂️ E4.0 man bouncing ball: dark skin tone +26F9 1F3FF 200D 2642 ; minimally-qualified # ⛹🏿‍♂ E4.0 man bouncing ball: dark skin tone +26F9 FE0F 200D 2640 FE0F ; fully-qualified # ⛹️‍♀️ E4.0 woman bouncing ball +26F9 200D 2640 FE0F ; unqualified # ⛹‍♀️ E4.0 woman bouncing ball +26F9 FE0F 200D 2640 ; minimally-qualified # ⛹️‍♀ E4.0 woman bouncing ball +26F9 200D 2640 ; unqualified # ⛹‍♀ E4.0 woman bouncing ball +26F9 1F3FB 200D 2640 FE0F ; fully-qualified # ⛹🏻‍♀️ E4.0 woman bouncing ball: light skin tone +26F9 1F3FB 200D 2640 ; minimally-qualified # ⛹🏻‍♀ E4.0 woman bouncing ball: light skin tone +26F9 1F3FC 200D 2640 FE0F ; fully-qualified # ⛹🏼‍♀️ E4.0 woman bouncing ball: medium-light skin tone +26F9 1F3FC 200D 2640 ; minimally-qualified # ⛹🏼‍♀ E4.0 woman bouncing ball: medium-light skin tone +26F9 1F3FD 200D 2640 FE0F ; fully-qualified # ⛹🏽‍♀️ E4.0 woman bouncing ball: medium skin tone +26F9 1F3FD 200D 2640 ; minimally-qualified # ⛹🏽‍♀ E4.0 woman bouncing ball: medium skin tone +26F9 1F3FE 200D 2640 FE0F ; fully-qualified # ⛹🏾‍♀️ E4.0 woman bouncing ball: medium-dark skin tone +26F9 1F3FE 200D 2640 ; minimally-qualified # ⛹🏾‍♀ E4.0 woman bouncing ball: medium-dark skin tone +26F9 1F3FF 200D 2640 FE0F ; fully-qualified # ⛹🏿‍♀️ E4.0 woman bouncing ball: dark skin tone +26F9 1F3FF 200D 2640 ; minimally-qualified # ⛹🏿‍♀ E4.0 woman bouncing ball: dark skin tone +1F3CB FE0F ; fully-qualified # 🏋️ E0.7 person lifting weights +1F3CB ; unqualified # 🏋 E0.7 person lifting weights +1F3CB 1F3FB ; fully-qualified # 🏋🏻 E2.0 person lifting weights: light skin tone +1F3CB 1F3FC ; fully-qualified # 🏋🏼 E2.0 person lifting weights: medium-light skin tone +1F3CB 1F3FD ; fully-qualified # 🏋🏽 E2.0 person lifting weights: medium skin tone +1F3CB 1F3FE ; fully-qualified # 🏋🏾 E2.0 person lifting weights: medium-dark skin tone +1F3CB 1F3FF ; fully-qualified # 🏋🏿 E2.0 person lifting weights: dark skin tone +1F3CB FE0F 200D 2642 FE0F ; fully-qualified # 🏋️‍♂️ E4.0 man lifting weights +1F3CB 200D 2642 FE0F ; unqualified # 🏋‍♂️ E4.0 man lifting weights +1F3CB FE0F 200D 2642 ; minimally-qualified # 🏋️‍♂ E4.0 man lifting weights +1F3CB 200D 2642 ; unqualified # 🏋‍♂ E4.0 man lifting weights +1F3CB 1F3FB 200D 2642 FE0F ; fully-qualified # 🏋🏻‍♂️ E4.0 man lifting weights: light skin tone +1F3CB 1F3FB 200D 2642 ; minimally-qualified # 🏋🏻‍♂ E4.0 man lifting weights: light skin tone +1F3CB 1F3FC 200D 2642 FE0F ; fully-qualified # 🏋🏼‍♂️ E4.0 man lifting weights: medium-light skin tone +1F3CB 1F3FC 200D 2642 ; minimally-qualified # 🏋🏼‍♂ E4.0 man lifting weights: medium-light skin tone +1F3CB 1F3FD 200D 2642 FE0F ; fully-qualified # 🏋🏽‍♂️ E4.0 man lifting weights: medium skin tone +1F3CB 1F3FD 200D 2642 ; minimally-qualified # 🏋🏽‍♂ E4.0 man lifting weights: medium skin tone +1F3CB 1F3FE 200D 2642 FE0F ; fully-qualified # 🏋🏾‍♂️ E4.0 man lifting weights: medium-dark skin tone +1F3CB 1F3FE 200D 2642 ; minimally-qualified # 🏋🏾‍♂ E4.0 man lifting weights: medium-dark skin tone +1F3CB 1F3FF 200D 2642 FE0F ; fully-qualified # 🏋🏿‍♂️ E4.0 man lifting weights: dark skin tone +1F3CB 1F3FF 200D 2642 ; minimally-qualified # 🏋🏿‍♂ E4.0 man lifting weights: dark skin tone +1F3CB FE0F 200D 2640 FE0F ; fully-qualified # 🏋️‍♀️ E4.0 woman lifting weights +1F3CB 200D 2640 FE0F ; unqualified # 🏋‍♀️ E4.0 woman lifting weights +1F3CB FE0F 200D 2640 ; minimally-qualified # 🏋️‍♀ E4.0 woman lifting weights +1F3CB 200D 2640 ; unqualified # 🏋‍♀ E4.0 woman lifting weights +1F3CB 1F3FB 200D 2640 FE0F ; fully-qualified # 🏋🏻‍♀️ E4.0 woman lifting weights: light skin tone +1F3CB 1F3FB 200D 2640 ; minimally-qualified # 🏋🏻‍♀ E4.0 woman lifting weights: light skin tone +1F3CB 1F3FC 200D 2640 FE0F ; fully-qualified # 🏋🏼‍♀️ E4.0 woman lifting weights: medium-light skin tone +1F3CB 1F3FC 200D 2640 ; minimally-qualified # 🏋🏼‍♀ E4.0 woman lifting weights: medium-light skin tone +1F3CB 1F3FD 200D 2640 FE0F ; fully-qualified # 🏋🏽‍♀️ E4.0 woman lifting weights: medium skin tone +1F3CB 1F3FD 200D 2640 ; minimally-qualified # 🏋🏽‍♀ E4.0 woman lifting weights: medium skin tone +1F3CB 1F3FE 200D 2640 FE0F ; fully-qualified # 🏋🏾‍♀️ E4.0 woman lifting weights: medium-dark skin tone +1F3CB 1F3FE 200D 2640 ; minimally-qualified # 🏋🏾‍♀ E4.0 woman lifting weights: medium-dark skin tone +1F3CB 1F3FF 200D 2640 FE0F ; fully-qualified # 🏋🏿‍♀️ E4.0 woman lifting weights: dark skin tone +1F3CB 1F3FF 200D 2640 ; minimally-qualified # 🏋🏿‍♀ E4.0 woman lifting weights: dark skin tone +1F6B4 ; fully-qualified # 🚴 E1.0 person biking +1F6B4 1F3FB ; fully-qualified # 🚴🏻 E1.0 person biking: light skin tone +1F6B4 1F3FC ; fully-qualified # 🚴🏼 E1.0 person biking: medium-light skin tone +1F6B4 1F3FD ; fully-qualified # 🚴🏽 E1.0 person biking: medium skin tone +1F6B4 1F3FE ; fully-qualified # 🚴🏾 E1.0 person biking: medium-dark skin tone +1F6B4 1F3FF ; fully-qualified # 🚴🏿 E1.0 person biking: dark skin tone +1F6B4 200D 2642 FE0F ; fully-qualified # 🚴‍♂️ E4.0 man biking +1F6B4 200D 2642 ; minimally-qualified # 🚴‍♂ E4.0 man biking +1F6B4 1F3FB 200D 2642 FE0F ; fully-qualified # 🚴🏻‍♂️ E4.0 man biking: light skin tone +1F6B4 1F3FB 200D 2642 ; minimally-qualified # 🚴🏻‍♂ E4.0 man biking: light skin tone +1F6B4 1F3FC 200D 2642 FE0F ; fully-qualified # 🚴🏼‍♂️ E4.0 man biking: medium-light skin tone +1F6B4 1F3FC 200D 2642 ; minimally-qualified # 🚴🏼‍♂ E4.0 man biking: medium-light skin tone +1F6B4 1F3FD 200D 2642 FE0F ; fully-qualified # 🚴🏽‍♂️ E4.0 man biking: medium skin tone +1F6B4 1F3FD 200D 2642 ; minimally-qualified # 🚴🏽‍♂ E4.0 man biking: medium skin tone +1F6B4 1F3FE 200D 2642 FE0F ; fully-qualified # 🚴🏾‍♂️ E4.0 man biking: medium-dark skin tone +1F6B4 1F3FE 200D 2642 ; minimally-qualified # 🚴🏾‍♂ E4.0 man biking: medium-dark skin tone +1F6B4 1F3FF 200D 2642 FE0F ; fully-qualified # 🚴🏿‍♂️ E4.0 man biking: dark skin tone +1F6B4 1F3FF 200D 2642 ; minimally-qualified # 🚴🏿‍♂ E4.0 man biking: dark skin tone +1F6B4 200D 2640 FE0F ; fully-qualified # 🚴‍♀️ E4.0 woman biking +1F6B4 200D 2640 ; minimally-qualified # 🚴‍♀ E4.0 woman biking +1F6B4 1F3FB 200D 2640 FE0F ; fully-qualified # 🚴🏻‍♀️ E4.0 woman biking: light skin tone +1F6B4 1F3FB 200D 2640 ; minimally-qualified # 🚴🏻‍♀ E4.0 woman biking: light skin tone +1F6B4 1F3FC 200D 2640 FE0F ; fully-qualified # 🚴🏼‍♀️ E4.0 woman biking: medium-light skin tone +1F6B4 1F3FC 200D 2640 ; minimally-qualified # 🚴🏼‍♀ E4.0 woman biking: medium-light skin tone +1F6B4 1F3FD 200D 2640 FE0F ; fully-qualified # 🚴🏽‍♀️ E4.0 woman biking: medium skin tone +1F6B4 1F3FD 200D 2640 ; minimally-qualified # 🚴🏽‍♀ E4.0 woman biking: medium skin tone +1F6B4 1F3FE 200D 2640 FE0F ; fully-qualified # 🚴🏾‍♀️ E4.0 woman biking: medium-dark skin tone +1F6B4 1F3FE 200D 2640 ; minimally-qualified # 🚴🏾‍♀ E4.0 woman biking: medium-dark skin tone +1F6B4 1F3FF 200D 2640 FE0F ; fully-qualified # 🚴🏿‍♀️ E4.0 woman biking: dark skin tone +1F6B4 1F3FF 200D 2640 ; minimally-qualified # 🚴🏿‍♀ E4.0 woman biking: dark skin tone +1F6B5 ; fully-qualified # 🚵 E1.0 person mountain biking +1F6B5 1F3FB ; fully-qualified # 🚵🏻 E1.0 person mountain biking: light skin tone +1F6B5 1F3FC ; fully-qualified # 🚵🏼 E1.0 person mountain biking: medium-light skin tone +1F6B5 1F3FD ; fully-qualified # 🚵🏽 E1.0 person mountain biking: medium skin tone +1F6B5 1F3FE ; fully-qualified # 🚵🏾 E1.0 person mountain biking: medium-dark skin tone +1F6B5 1F3FF ; fully-qualified # 🚵🏿 E1.0 person mountain biking: dark skin tone +1F6B5 200D 2642 FE0F ; fully-qualified # 🚵‍♂️ E4.0 man mountain biking +1F6B5 200D 2642 ; minimally-qualified # 🚵‍♂ E4.0 man mountain biking +1F6B5 1F3FB 200D 2642 FE0F ; fully-qualified # 🚵🏻‍♂️ E4.0 man mountain biking: light skin tone +1F6B5 1F3FB 200D 2642 ; minimally-qualified # 🚵🏻‍♂ E4.0 man mountain biking: light skin tone +1F6B5 1F3FC 200D 2642 FE0F ; fully-qualified # 🚵🏼‍♂️ E4.0 man mountain biking: medium-light skin tone +1F6B5 1F3FC 200D 2642 ; minimally-qualified # 🚵🏼‍♂ E4.0 man mountain biking: medium-light skin tone +1F6B5 1F3FD 200D 2642 FE0F ; fully-qualified # 🚵🏽‍♂️ E4.0 man mountain biking: medium skin tone +1F6B5 1F3FD 200D 2642 ; minimally-qualified # 🚵🏽‍♂ E4.0 man mountain biking: medium skin tone +1F6B5 1F3FE 200D 2642 FE0F ; fully-qualified # 🚵🏾‍♂️ E4.0 man mountain biking: medium-dark skin tone +1F6B5 1F3FE 200D 2642 ; minimally-qualified # 🚵🏾‍♂ E4.0 man mountain biking: medium-dark skin tone +1F6B5 1F3FF 200D 2642 FE0F ; fully-qualified # 🚵🏿‍♂️ E4.0 man mountain biking: dark skin tone +1F6B5 1F3FF 200D 2642 ; minimally-qualified # 🚵🏿‍♂ E4.0 man mountain biking: dark skin tone +1F6B5 200D 2640 FE0F ; fully-qualified # 🚵‍♀️ E4.0 woman mountain biking +1F6B5 200D 2640 ; minimally-qualified # 🚵‍♀ E4.0 woman mountain biking +1F6B5 1F3FB 200D 2640 FE0F ; fully-qualified # 🚵🏻‍♀️ E4.0 woman mountain biking: light skin tone +1F6B5 1F3FB 200D 2640 ; minimally-qualified # 🚵🏻‍♀ E4.0 woman mountain biking: light skin tone +1F6B5 1F3FC 200D 2640 FE0F ; fully-qualified # 🚵🏼‍♀️ E4.0 woman mountain biking: medium-light skin tone +1F6B5 1F3FC 200D 2640 ; minimally-qualified # 🚵🏼‍♀ E4.0 woman mountain biking: medium-light skin tone +1F6B5 1F3FD 200D 2640 FE0F ; fully-qualified # 🚵🏽‍♀️ E4.0 woman mountain biking: medium skin tone +1F6B5 1F3FD 200D 2640 ; minimally-qualified # 🚵🏽‍♀ E4.0 woman mountain biking: medium skin tone +1F6B5 1F3FE 200D 2640 FE0F ; fully-qualified # 🚵🏾‍♀️ E4.0 woman mountain biking: medium-dark skin tone +1F6B5 1F3FE 200D 2640 ; minimally-qualified # 🚵🏾‍♀ E4.0 woman mountain biking: medium-dark skin tone +1F6B5 1F3FF 200D 2640 FE0F ; fully-qualified # 🚵🏿‍♀️ E4.0 woman mountain biking: dark skin tone +1F6B5 1F3FF 200D 2640 ; minimally-qualified # 🚵🏿‍♀ E4.0 woman mountain biking: dark skin tone +1F938 ; fully-qualified # 🤸 E3.0 person cartwheeling +1F938 1F3FB ; fully-qualified # 🤸🏻 E3.0 person cartwheeling: light skin tone +1F938 1F3FC ; fully-qualified # 🤸🏼 E3.0 person cartwheeling: medium-light skin tone +1F938 1F3FD ; fully-qualified # 🤸🏽 E3.0 person cartwheeling: medium skin tone +1F938 1F3FE ; fully-qualified # 🤸🏾 E3.0 person cartwheeling: medium-dark skin tone +1F938 1F3FF ; fully-qualified # 🤸🏿 E3.0 person cartwheeling: dark skin tone +1F938 200D 2642 FE0F ; fully-qualified # 🤸‍♂️ E4.0 man cartwheeling +1F938 200D 2642 ; minimally-qualified # 🤸‍♂ E4.0 man cartwheeling +1F938 1F3FB 200D 2642 FE0F ; fully-qualified # 🤸🏻‍♂️ E4.0 man cartwheeling: light skin tone +1F938 1F3FB 200D 2642 ; minimally-qualified # 🤸🏻‍♂ E4.0 man cartwheeling: light skin tone +1F938 1F3FC 200D 2642 FE0F ; fully-qualified # 🤸🏼‍♂️ E4.0 man cartwheeling: medium-light skin tone +1F938 1F3FC 200D 2642 ; minimally-qualified # 🤸🏼‍♂ E4.0 man cartwheeling: medium-light skin tone +1F938 1F3FD 200D 2642 FE0F ; fully-qualified # 🤸🏽‍♂️ E4.0 man cartwheeling: medium skin tone +1F938 1F3FD 200D 2642 ; minimally-qualified # 🤸🏽‍♂ E4.0 man cartwheeling: medium skin tone +1F938 1F3FE 200D 2642 FE0F ; fully-qualified # 🤸🏾‍♂️ E4.0 man cartwheeling: medium-dark skin tone +1F938 1F3FE 200D 2642 ; minimally-qualified # 🤸🏾‍♂ E4.0 man cartwheeling: medium-dark skin tone +1F938 1F3FF 200D 2642 FE0F ; fully-qualified # 🤸🏿‍♂️ E4.0 man cartwheeling: dark skin tone +1F938 1F3FF 200D 2642 ; minimally-qualified # 🤸🏿‍♂ E4.0 man cartwheeling: dark skin tone +1F938 200D 2640 FE0F ; fully-qualified # 🤸‍♀️ E4.0 woman cartwheeling +1F938 200D 2640 ; minimally-qualified # 🤸‍♀ E4.0 woman cartwheeling +1F938 1F3FB 200D 2640 FE0F ; fully-qualified # 🤸🏻‍♀️ E4.0 woman cartwheeling: light skin tone +1F938 1F3FB 200D 2640 ; minimally-qualified # 🤸🏻‍♀ E4.0 woman cartwheeling: light skin tone +1F938 1F3FC 200D 2640 FE0F ; fully-qualified # 🤸🏼‍♀️ E4.0 woman cartwheeling: medium-light skin tone +1F938 1F3FC 200D 2640 ; minimally-qualified # 🤸🏼‍♀ E4.0 woman cartwheeling: medium-light skin tone +1F938 1F3FD 200D 2640 FE0F ; fully-qualified # 🤸🏽‍♀️ E4.0 woman cartwheeling: medium skin tone +1F938 1F3FD 200D 2640 ; minimally-qualified # 🤸🏽‍♀ E4.0 woman cartwheeling: medium skin tone +1F938 1F3FE 200D 2640 FE0F ; fully-qualified # 🤸🏾‍♀️ E4.0 woman cartwheeling: medium-dark skin tone +1F938 1F3FE 200D 2640 ; minimally-qualified # 🤸🏾‍♀ E4.0 woman cartwheeling: medium-dark skin tone +1F938 1F3FF 200D 2640 FE0F ; fully-qualified # 🤸🏿‍♀️ E4.0 woman cartwheeling: dark skin tone +1F938 1F3FF 200D 2640 ; minimally-qualified # 🤸🏿‍♀ E4.0 woman cartwheeling: dark skin tone +1F93C ; fully-qualified # 🤼 E3.0 people wrestling +1F93C 200D 2642 FE0F ; fully-qualified # 🤼‍♂️ E4.0 men wrestling +1F93C 200D 2642 ; minimally-qualified # 🤼‍♂ E4.0 men wrestling +1F93C 200D 2640 FE0F ; fully-qualified # 🤼‍♀️ E4.0 women wrestling +1F93C 200D 2640 ; minimally-qualified # 🤼‍♀ E4.0 women wrestling +1F93D ; fully-qualified # 🤽 E3.0 person playing water polo +1F93D 1F3FB ; fully-qualified # 🤽🏻 E3.0 person playing water polo: light skin tone +1F93D 1F3FC ; fully-qualified # 🤽🏼 E3.0 person playing water polo: medium-light skin tone +1F93D 1F3FD ; fully-qualified # 🤽🏽 E3.0 person playing water polo: medium skin tone +1F93D 1F3FE ; fully-qualified # 🤽🏾 E3.0 person playing water polo: medium-dark skin tone +1F93D 1F3FF ; fully-qualified # 🤽🏿 E3.0 person playing water polo: dark skin tone +1F93D 200D 2642 FE0F ; fully-qualified # 🤽‍♂️ E4.0 man playing water polo +1F93D 200D 2642 ; minimally-qualified # 🤽‍♂ E4.0 man playing water polo +1F93D 1F3FB 200D 2642 FE0F ; fully-qualified # 🤽🏻‍♂️ E4.0 man playing water polo: light skin tone +1F93D 1F3FB 200D 2642 ; minimally-qualified # 🤽🏻‍♂ E4.0 man playing water polo: light skin tone +1F93D 1F3FC 200D 2642 FE0F ; fully-qualified # 🤽🏼‍♂️ E4.0 man playing water polo: medium-light skin tone +1F93D 1F3FC 200D 2642 ; minimally-qualified # 🤽🏼‍♂ E4.0 man playing water polo: medium-light skin tone +1F93D 1F3FD 200D 2642 FE0F ; fully-qualified # 🤽🏽‍♂️ E4.0 man playing water polo: medium skin tone +1F93D 1F3FD 200D 2642 ; minimally-qualified # 🤽🏽‍♂ E4.0 man playing water polo: medium skin tone +1F93D 1F3FE 200D 2642 FE0F ; fully-qualified # 🤽🏾‍♂️ E4.0 man playing water polo: medium-dark skin tone +1F93D 1F3FE 200D 2642 ; minimally-qualified # 🤽🏾‍♂ E4.0 man playing water polo: medium-dark skin tone +1F93D 1F3FF 200D 2642 FE0F ; fully-qualified # 🤽🏿‍♂️ E4.0 man playing water polo: dark skin tone +1F93D 1F3FF 200D 2642 ; minimally-qualified # 🤽🏿‍♂ E4.0 man playing water polo: dark skin tone +1F93D 200D 2640 FE0F ; fully-qualified # 🤽‍♀️ E4.0 woman playing water polo +1F93D 200D 2640 ; minimally-qualified # 🤽‍♀ E4.0 woman playing water polo +1F93D 1F3FB 200D 2640 FE0F ; fully-qualified # 🤽🏻‍♀️ E4.0 woman playing water polo: light skin tone +1F93D 1F3FB 200D 2640 ; minimally-qualified # 🤽🏻‍♀ E4.0 woman playing water polo: light skin tone +1F93D 1F3FC 200D 2640 FE0F ; fully-qualified # 🤽🏼‍♀️ E4.0 woman playing water polo: medium-light skin tone +1F93D 1F3FC 200D 2640 ; minimally-qualified # 🤽🏼‍♀ E4.0 woman playing water polo: medium-light skin tone +1F93D 1F3FD 200D 2640 FE0F ; fully-qualified # 🤽🏽‍♀️ E4.0 woman playing water polo: medium skin tone +1F93D 1F3FD 200D 2640 ; minimally-qualified # 🤽🏽‍♀ E4.0 woman playing water polo: medium skin tone +1F93D 1F3FE 200D 2640 FE0F ; fully-qualified # 🤽🏾‍♀️ E4.0 woman playing water polo: medium-dark skin tone +1F93D 1F3FE 200D 2640 ; minimally-qualified # 🤽🏾‍♀ E4.0 woman playing water polo: medium-dark skin tone +1F93D 1F3FF 200D 2640 FE0F ; fully-qualified # 🤽🏿‍♀️ E4.0 woman playing water polo: dark skin tone +1F93D 1F3FF 200D 2640 ; minimally-qualified # 🤽🏿‍♀ E4.0 woman playing water polo: dark skin tone +1F93E ; fully-qualified # 🤾 E3.0 person playing handball +1F93E 1F3FB ; fully-qualified # 🤾🏻 E3.0 person playing handball: light skin tone +1F93E 1F3FC ; fully-qualified # 🤾🏼 E3.0 person playing handball: medium-light skin tone +1F93E 1F3FD ; fully-qualified # 🤾🏽 E3.0 person playing handball: medium skin tone +1F93E 1F3FE ; fully-qualified # 🤾🏾 E3.0 person playing handball: medium-dark skin tone +1F93E 1F3FF ; fully-qualified # 🤾🏿 E3.0 person playing handball: dark skin tone +1F93E 200D 2642 FE0F ; fully-qualified # 🤾‍♂️ E4.0 man playing handball +1F93E 200D 2642 ; minimally-qualified # 🤾‍♂ E4.0 man playing handball +1F93E 1F3FB 200D 2642 FE0F ; fully-qualified # 🤾🏻‍♂️ E4.0 man playing handball: light skin tone +1F93E 1F3FB 200D 2642 ; minimally-qualified # 🤾🏻‍♂ E4.0 man playing handball: light skin tone +1F93E 1F3FC 200D 2642 FE0F ; fully-qualified # 🤾🏼‍♂️ E4.0 man playing handball: medium-light skin tone +1F93E 1F3FC 200D 2642 ; minimally-qualified # 🤾🏼‍♂ E4.0 man playing handball: medium-light skin tone +1F93E 1F3FD 200D 2642 FE0F ; fully-qualified # 🤾🏽‍♂️ E4.0 man playing handball: medium skin tone +1F93E 1F3FD 200D 2642 ; minimally-qualified # 🤾🏽‍♂ E4.0 man playing handball: medium skin tone +1F93E 1F3FE 200D 2642 FE0F ; fully-qualified # 🤾🏾‍♂️ E4.0 man playing handball: medium-dark skin tone +1F93E 1F3FE 200D 2642 ; minimally-qualified # 🤾🏾‍♂ E4.0 man playing handball: medium-dark skin tone +1F93E 1F3FF 200D 2642 FE0F ; fully-qualified # 🤾🏿‍♂️ E4.0 man playing handball: dark skin tone +1F93E 1F3FF 200D 2642 ; minimally-qualified # 🤾🏿‍♂ E4.0 man playing handball: dark skin tone +1F93E 200D 2640 FE0F ; fully-qualified # 🤾‍♀️ E4.0 woman playing handball +1F93E 200D 2640 ; minimally-qualified # 🤾‍♀ E4.0 woman playing handball +1F93E 1F3FB 200D 2640 FE0F ; fully-qualified # 🤾🏻‍♀️ E4.0 woman playing handball: light skin tone +1F93E 1F3FB 200D 2640 ; minimally-qualified # 🤾🏻‍♀ E4.0 woman playing handball: light skin tone +1F93E 1F3FC 200D 2640 FE0F ; fully-qualified # 🤾🏼‍♀️ E4.0 woman playing handball: medium-light skin tone +1F93E 1F3FC 200D 2640 ; minimally-qualified # 🤾🏼‍♀ E4.0 woman playing handball: medium-light skin tone +1F93E 1F3FD 200D 2640 FE0F ; fully-qualified # 🤾🏽‍♀️ E4.0 woman playing handball: medium skin tone +1F93E 1F3FD 200D 2640 ; minimally-qualified # 🤾🏽‍♀ E4.0 woman playing handball: medium skin tone +1F93E 1F3FE 200D 2640 FE0F ; fully-qualified # 🤾🏾‍♀️ E4.0 woman playing handball: medium-dark skin tone +1F93E 1F3FE 200D 2640 ; minimally-qualified # 🤾🏾‍♀ E4.0 woman playing handball: medium-dark skin tone +1F93E 1F3FF 200D 2640 FE0F ; fully-qualified # 🤾🏿‍♀️ E4.0 woman playing handball: dark skin tone +1F93E 1F3FF 200D 2640 ; minimally-qualified # 🤾🏿‍♀ E4.0 woman playing handball: dark skin tone +1F939 ; fully-qualified # 🤹 E3.0 person juggling +1F939 1F3FB ; fully-qualified # 🤹🏻 E3.0 person juggling: light skin tone +1F939 1F3FC ; fully-qualified # 🤹🏼 E3.0 person juggling: medium-light skin tone +1F939 1F3FD ; fully-qualified # 🤹🏽 E3.0 person juggling: medium skin tone +1F939 1F3FE ; fully-qualified # 🤹🏾 E3.0 person juggling: medium-dark skin tone +1F939 1F3FF ; fully-qualified # 🤹🏿 E3.0 person juggling: dark skin tone +1F939 200D 2642 FE0F ; fully-qualified # 🤹‍♂️ E4.0 man juggling +1F939 200D 2642 ; minimally-qualified # 🤹‍♂ E4.0 man juggling +1F939 1F3FB 200D 2642 FE0F ; fully-qualified # 🤹🏻‍♂️ E4.0 man juggling: light skin tone +1F939 1F3FB 200D 2642 ; minimally-qualified # 🤹🏻‍♂ E4.0 man juggling: light skin tone +1F939 1F3FC 200D 2642 FE0F ; fully-qualified # 🤹🏼‍♂️ E4.0 man juggling: medium-light skin tone +1F939 1F3FC 200D 2642 ; minimally-qualified # 🤹🏼‍♂ E4.0 man juggling: medium-light skin tone +1F939 1F3FD 200D 2642 FE0F ; fully-qualified # 🤹🏽‍♂️ E4.0 man juggling: medium skin tone +1F939 1F3FD 200D 2642 ; minimally-qualified # 🤹🏽‍♂ E4.0 man juggling: medium skin tone +1F939 1F3FE 200D 2642 FE0F ; fully-qualified # 🤹🏾‍♂️ E4.0 man juggling: medium-dark skin tone +1F939 1F3FE 200D 2642 ; minimally-qualified # 🤹🏾‍♂ E4.0 man juggling: medium-dark skin tone +1F939 1F3FF 200D 2642 FE0F ; fully-qualified # 🤹🏿‍♂️ E4.0 man juggling: dark skin tone +1F939 1F3FF 200D 2642 ; minimally-qualified # 🤹🏿‍♂ E4.0 man juggling: dark skin tone +1F939 200D 2640 FE0F ; fully-qualified # 🤹‍♀️ E4.0 woman juggling +1F939 200D 2640 ; minimally-qualified # 🤹‍♀ E4.0 woman juggling +1F939 1F3FB 200D 2640 FE0F ; fully-qualified # 🤹🏻‍♀️ E4.0 woman juggling: light skin tone +1F939 1F3FB 200D 2640 ; minimally-qualified # 🤹🏻‍♀ E4.0 woman juggling: light skin tone +1F939 1F3FC 200D 2640 FE0F ; fully-qualified # 🤹🏼‍♀️ E4.0 woman juggling: medium-light skin tone +1F939 1F3FC 200D 2640 ; minimally-qualified # 🤹🏼‍♀ E4.0 woman juggling: medium-light skin tone +1F939 1F3FD 200D 2640 FE0F ; fully-qualified # 🤹🏽‍♀️ E4.0 woman juggling: medium skin tone +1F939 1F3FD 200D 2640 ; minimally-qualified # 🤹🏽‍♀ E4.0 woman juggling: medium skin tone +1F939 1F3FE 200D 2640 FE0F ; fully-qualified # 🤹🏾‍♀️ E4.0 woman juggling: medium-dark skin tone +1F939 1F3FE 200D 2640 ; minimally-qualified # 🤹🏾‍♀ E4.0 woman juggling: medium-dark skin tone +1F939 1F3FF 200D 2640 FE0F ; fully-qualified # 🤹🏿‍♀️ E4.0 woman juggling: dark skin tone +1F939 1F3FF 200D 2640 ; minimally-qualified # 🤹🏿‍♀ E4.0 woman juggling: dark skin tone + +# subgroup: person-resting +1F9D8 ; fully-qualified # 🧘 E5.0 person in lotus position +1F9D8 1F3FB ; fully-qualified # 🧘🏻 E5.0 person in lotus position: light skin tone +1F9D8 1F3FC ; fully-qualified # 🧘🏼 E5.0 person in lotus position: medium-light skin tone +1F9D8 1F3FD ; fully-qualified # 🧘🏽 E5.0 person in lotus position: medium skin tone +1F9D8 1F3FE ; fully-qualified # 🧘🏾 E5.0 person in lotus position: medium-dark skin tone +1F9D8 1F3FF ; fully-qualified # 🧘🏿 E5.0 person in lotus position: dark skin tone +1F9D8 200D 2642 FE0F ; fully-qualified # 🧘‍♂️ E5.0 man in lotus position +1F9D8 200D 2642 ; minimally-qualified # 🧘‍♂ E5.0 man in lotus position +1F9D8 1F3FB 200D 2642 FE0F ; fully-qualified # 🧘🏻‍♂️ E5.0 man in lotus position: light skin tone +1F9D8 1F3FB 200D 2642 ; minimally-qualified # 🧘🏻‍♂ E5.0 man in lotus position: light skin tone +1F9D8 1F3FC 200D 2642 FE0F ; fully-qualified # 🧘🏼‍♂️ E5.0 man in lotus position: medium-light skin tone +1F9D8 1F3FC 200D 2642 ; minimally-qualified # 🧘🏼‍♂ E5.0 man in lotus position: medium-light skin tone +1F9D8 1F3FD 200D 2642 FE0F ; fully-qualified # 🧘🏽‍♂️ E5.0 man in lotus position: medium skin tone +1F9D8 1F3FD 200D 2642 ; minimally-qualified # 🧘🏽‍♂ E5.0 man in lotus position: medium skin tone +1F9D8 1F3FE 200D 2642 FE0F ; fully-qualified # 🧘🏾‍♂️ E5.0 man in lotus position: medium-dark skin tone +1F9D8 1F3FE 200D 2642 ; minimally-qualified # 🧘🏾‍♂ E5.0 man in lotus position: medium-dark skin tone +1F9D8 1F3FF 200D 2642 FE0F ; fully-qualified # 🧘🏿‍♂️ E5.0 man in lotus position: dark skin tone +1F9D8 1F3FF 200D 2642 ; minimally-qualified # 🧘🏿‍♂ E5.0 man in lotus position: dark skin tone +1F9D8 200D 2640 FE0F ; fully-qualified # 🧘‍♀️ E5.0 woman in lotus position +1F9D8 200D 2640 ; minimally-qualified # 🧘‍♀ E5.0 woman in lotus position +1F9D8 1F3FB 200D 2640 FE0F ; fully-qualified # 🧘🏻‍♀️ E5.0 woman in lotus position: light skin tone +1F9D8 1F3FB 200D 2640 ; minimally-qualified # 🧘🏻‍♀ E5.0 woman in lotus position: light skin tone +1F9D8 1F3FC 200D 2640 FE0F ; fully-qualified # 🧘🏼‍♀️ E5.0 woman in lotus position: medium-light skin tone +1F9D8 1F3FC 200D 2640 ; minimally-qualified # 🧘🏼‍♀ E5.0 woman in lotus position: medium-light skin tone +1F9D8 1F3FD 200D 2640 FE0F ; fully-qualified # 🧘🏽‍♀️ E5.0 woman in lotus position: medium skin tone +1F9D8 1F3FD 200D 2640 ; minimally-qualified # 🧘🏽‍♀ E5.0 woman in lotus position: medium skin tone +1F9D8 1F3FE 200D 2640 FE0F ; fully-qualified # 🧘🏾‍♀️ E5.0 woman in lotus position: medium-dark skin tone +1F9D8 1F3FE 200D 2640 ; minimally-qualified # 🧘🏾‍♀ E5.0 woman in lotus position: medium-dark skin tone +1F9D8 1F3FF 200D 2640 FE0F ; fully-qualified # 🧘🏿‍♀️ E5.0 woman in lotus position: dark skin tone +1F9D8 1F3FF 200D 2640 ; minimally-qualified # 🧘🏿‍♀ E5.0 woman in lotus position: dark skin tone +1F6C0 ; fully-qualified # 🛀 E0.6 person taking bath +1F6C0 1F3FB ; fully-qualified # 🛀🏻 E1.0 person taking bath: light skin tone +1F6C0 1F3FC ; fully-qualified # 🛀🏼 E1.0 person taking bath: medium-light skin tone +1F6C0 1F3FD ; fully-qualified # 🛀🏽 E1.0 person taking bath: medium skin tone +1F6C0 1F3FE ; fully-qualified # 🛀🏾 E1.0 person taking bath: medium-dark skin tone +1F6C0 1F3FF ; fully-qualified # 🛀🏿 E1.0 person taking bath: dark skin tone +1F6CC ; fully-qualified # 🛌 E1.0 person in bed +1F6CC 1F3FB ; fully-qualified # 🛌🏻 E4.0 person in bed: light skin tone +1F6CC 1F3FC ; fully-qualified # 🛌🏼 E4.0 person in bed: medium-light skin tone +1F6CC 1F3FD ; fully-qualified # 🛌🏽 E4.0 person in bed: medium skin tone +1F6CC 1F3FE ; fully-qualified # 🛌🏾 E4.0 person in bed: medium-dark skin tone +1F6CC 1F3FF ; fully-qualified # 🛌🏿 E4.0 person in bed: dark skin tone + +# subgroup: family +1F9D1 200D 1F91D 200D 1F9D1 ; fully-qualified # 🧑‍🤝‍🧑 E12.0 people holding hands +1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏻‍🤝‍🧑🏻 E12.0 people holding hands: light skin tone +1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏻‍🤝‍🧑🏼 E12.1 people holding hands: light skin tone, medium-light skin tone +1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏻‍🤝‍🧑🏽 E12.1 people holding hands: light skin tone, medium skin tone +1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏻‍🤝‍🧑🏾 E12.1 people holding hands: light skin tone, medium-dark skin tone +1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏻‍🤝‍🧑🏿 E12.1 people holding hands: light skin tone, dark skin tone +1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏼‍🤝‍🧑🏻 E12.0 people holding hands: medium-light skin tone, light skin tone +1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏼‍🤝‍🧑🏼 E12.0 people holding hands: medium-light skin tone +1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏼‍🤝‍🧑🏽 E12.1 people holding hands: medium-light skin tone, medium skin tone +1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏼‍🤝‍🧑🏾 E12.1 people holding hands: medium-light skin tone, medium-dark skin tone +1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏼‍🤝‍🧑🏿 E12.1 people holding hands: medium-light skin tone, dark skin tone +1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏽‍🤝‍🧑🏻 E12.0 people holding hands: medium skin tone, light skin tone +1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏽‍🤝‍🧑🏼 E12.0 people holding hands: medium skin tone, medium-light skin tone +1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏽‍🤝‍🧑🏽 E12.0 people holding hands: medium skin tone +1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏽‍🤝‍🧑🏾 E12.1 people holding hands: medium skin tone, medium-dark skin tone +1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏽‍🤝‍🧑🏿 E12.1 people holding hands: medium skin tone, dark skin tone +1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏾‍🤝‍🧑🏻 E12.0 people holding hands: medium-dark skin tone, light skin tone +1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏾‍🤝‍🧑🏼 E12.0 people holding hands: medium-dark skin tone, medium-light skin tone +1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏾‍🤝‍🧑🏽 E12.0 people holding hands: medium-dark skin tone, medium skin tone +1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏾‍🤝‍🧑🏾 E12.0 people holding hands: medium-dark skin tone +1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏾‍🤝‍🧑🏿 E12.1 people holding hands: medium-dark skin tone, dark skin tone +1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏿‍🤝‍🧑🏻 E12.0 people holding hands: dark skin tone, light skin tone +1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏿‍🤝‍🧑🏼 E12.0 people holding hands: dark skin tone, medium-light skin tone +1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏿‍🤝‍🧑🏽 E12.0 people holding hands: dark skin tone, medium skin tone +1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏿‍🤝‍🧑🏾 E12.0 people holding hands: dark skin tone, medium-dark skin tone +1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏿‍🤝‍🧑🏿 E12.0 people holding hands: dark skin tone +1F46D ; fully-qualified # 👭 E1.0 women holding hands +1F46D 1F3FB ; fully-qualified # 👭🏻 E12.0 women holding hands: light skin tone +1F469 1F3FB 200D 1F91D 200D 1F469 1F3FC ; fully-qualified # 👩🏻‍🤝‍👩🏼 E12.1 women holding hands: light skin tone, medium-light skin tone +1F469 1F3FB 200D 1F91D 200D 1F469 1F3FD ; fully-qualified # 👩🏻‍🤝‍👩🏽 E12.1 women holding hands: light skin tone, medium skin tone +1F469 1F3FB 200D 1F91D 200D 1F469 1F3FE ; fully-qualified # 👩🏻‍🤝‍👩🏾 E12.1 women holding hands: light skin tone, medium-dark skin tone +1F469 1F3FB 200D 1F91D 200D 1F469 1F3FF ; fully-qualified # 👩🏻‍🤝‍👩🏿 E12.1 women holding hands: light skin tone, dark skin tone +1F469 1F3FC 200D 1F91D 200D 1F469 1F3FB ; fully-qualified # 👩🏼‍🤝‍👩🏻 E12.0 women holding hands: medium-light skin tone, light skin tone +1F46D 1F3FC ; fully-qualified # 👭🏼 E12.0 women holding hands: medium-light skin tone +1F469 1F3FC 200D 1F91D 200D 1F469 1F3FD ; fully-qualified # 👩🏼‍🤝‍👩🏽 E12.1 women holding hands: medium-light skin tone, medium skin tone +1F469 1F3FC 200D 1F91D 200D 1F469 1F3FE ; fully-qualified # 👩🏼‍🤝‍👩🏾 E12.1 women holding hands: medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 1F91D 200D 1F469 1F3FF ; fully-qualified # 👩🏼‍🤝‍👩🏿 E12.1 women holding hands: medium-light skin tone, dark skin tone +1F469 1F3FD 200D 1F91D 200D 1F469 1F3FB ; fully-qualified # 👩🏽‍🤝‍👩🏻 E12.0 women holding hands: medium skin tone, light skin tone +1F469 1F3FD 200D 1F91D 200D 1F469 1F3FC ; fully-qualified # 👩🏽‍🤝‍👩🏼 E12.0 women holding hands: medium skin tone, medium-light skin tone +1F46D 1F3FD ; fully-qualified # 👭🏽 E12.0 women holding hands: medium skin tone +1F469 1F3FD 200D 1F91D 200D 1F469 1F3FE ; fully-qualified # 👩🏽‍🤝‍👩🏾 E12.1 women holding hands: medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 1F91D 200D 1F469 1F3FF ; fully-qualified # 👩🏽‍🤝‍👩🏿 E12.1 women holding hands: medium skin tone, dark skin tone +1F469 1F3FE 200D 1F91D 200D 1F469 1F3FB ; fully-qualified # 👩🏾‍🤝‍👩🏻 E12.0 women holding hands: medium-dark skin tone, light skin tone +1F469 1F3FE 200D 1F91D 200D 1F469 1F3FC ; fully-qualified # 👩🏾‍🤝‍👩🏼 E12.0 women holding hands: medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 1F91D 200D 1F469 1F3FD ; fully-qualified # 👩🏾‍🤝‍👩🏽 E12.0 women holding hands: medium-dark skin tone, medium skin tone +1F46D 1F3FE ; fully-qualified # 👭🏾 E12.0 women holding hands: medium-dark skin tone +1F469 1F3FE 200D 1F91D 200D 1F469 1F3FF ; fully-qualified # 👩🏾‍🤝‍👩🏿 E12.1 women holding hands: medium-dark skin tone, dark skin tone +1F469 1F3FF 200D 1F91D 200D 1F469 1F3FB ; fully-qualified # 👩🏿‍🤝‍👩🏻 E12.0 women holding hands: dark skin tone, light skin tone +1F469 1F3FF 200D 1F91D 200D 1F469 1F3FC ; fully-qualified # 👩🏿‍🤝‍👩🏼 E12.0 women holding hands: dark skin tone, medium-light skin tone +1F469 1F3FF 200D 1F91D 200D 1F469 1F3FD ; fully-qualified # 👩🏿‍🤝‍👩🏽 E12.0 women holding hands: dark skin tone, medium skin tone +1F469 1F3FF 200D 1F91D 200D 1F469 1F3FE ; fully-qualified # 👩🏿‍🤝‍👩🏾 E12.0 women holding hands: dark skin tone, medium-dark skin tone +1F46D 1F3FF ; fully-qualified # 👭🏿 E12.0 women holding hands: dark skin tone +1F46B ; fully-qualified # 👫 E0.6 woman and man holding hands +1F46B 1F3FB ; fully-qualified # 👫🏻 E12.0 woman and man holding hands: light skin tone +1F469 1F3FB 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👩🏻‍🤝‍👨🏼 E12.0 woman and man holding hands: light skin tone, medium-light skin tone +1F469 1F3FB 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👩🏻‍🤝‍👨🏽 E12.0 woman and man holding hands: light skin tone, medium skin tone +1F469 1F3FB 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👩🏻‍🤝‍👨🏾 E12.0 woman and man holding hands: light skin tone, medium-dark skin tone +1F469 1F3FB 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👩🏻‍🤝‍👨🏿 E12.0 woman and man holding hands: light skin tone, dark skin tone +1F469 1F3FC 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👩🏼‍🤝‍👨🏻 E12.0 woman and man holding hands: medium-light skin tone, light skin tone +1F46B 1F3FC ; fully-qualified # 👫🏼 E12.0 woman and man holding hands: medium-light skin tone +1F469 1F3FC 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👩🏼‍🤝‍👨🏽 E12.0 woman and man holding hands: medium-light skin tone, medium skin tone +1F469 1F3FC 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👩🏼‍🤝‍👨🏾 E12.0 woman and man holding hands: medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👩🏼‍🤝‍👨🏿 E12.0 woman and man holding hands: medium-light skin tone, dark skin tone +1F469 1F3FD 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👩🏽‍🤝‍👨🏻 E12.0 woman and man holding hands: medium skin tone, light skin tone +1F469 1F3FD 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👩🏽‍🤝‍👨🏼 E12.0 woman and man holding hands: medium skin tone, medium-light skin tone +1F46B 1F3FD ; fully-qualified # 👫🏽 E12.0 woman and man holding hands: medium skin tone +1F469 1F3FD 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👩🏽‍🤝‍👨🏾 E12.0 woman and man holding hands: medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👩🏽‍🤝‍👨🏿 E12.0 woman and man holding hands: medium skin tone, dark skin tone +1F469 1F3FE 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👩🏾‍🤝‍👨🏻 E12.0 woman and man holding hands: medium-dark skin tone, light skin tone +1F469 1F3FE 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👩🏾‍🤝‍👨🏼 E12.0 woman and man holding hands: medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👩🏾‍🤝‍👨🏽 E12.0 woman and man holding hands: medium-dark skin tone, medium skin tone +1F46B 1F3FE ; fully-qualified # 👫🏾 E12.0 woman and man holding hands: medium-dark skin tone +1F469 1F3FE 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👩🏾‍🤝‍👨🏿 E12.0 woman and man holding hands: medium-dark skin tone, dark skin tone +1F469 1F3FF 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👩🏿‍🤝‍👨🏻 E12.0 woman and man holding hands: dark skin tone, light skin tone +1F469 1F3FF 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👩🏿‍🤝‍👨🏼 E12.0 woman and man holding hands: dark skin tone, medium-light skin tone +1F469 1F3FF 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👩🏿‍🤝‍👨🏽 E12.0 woman and man holding hands: dark skin tone, medium skin tone +1F469 1F3FF 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👩🏿‍🤝‍👨🏾 E12.0 woman and man holding hands: dark skin tone, medium-dark skin tone +1F46B 1F3FF ; fully-qualified # 👫🏿 E12.0 woman and man holding hands: dark skin tone +1F46C ; fully-qualified # 👬 E1.0 men holding hands +1F46C 1F3FB ; fully-qualified # 👬🏻 E12.0 men holding hands: light skin tone +1F468 1F3FB 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👨🏻‍🤝‍👨🏼 E12.1 men holding hands: light skin tone, medium-light skin tone +1F468 1F3FB 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👨🏻‍🤝‍👨🏽 E12.1 men holding hands: light skin tone, medium skin tone +1F468 1F3FB 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👨🏻‍🤝‍👨🏾 E12.1 men holding hands: light skin tone, medium-dark skin tone +1F468 1F3FB 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👨🏻‍🤝‍👨🏿 E12.1 men holding hands: light skin tone, dark skin tone +1F468 1F3FC 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👨🏼‍🤝‍👨🏻 E12.0 men holding hands: medium-light skin tone, light skin tone +1F46C 1F3FC ; fully-qualified # 👬🏼 E12.0 men holding hands: medium-light skin tone +1F468 1F3FC 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👨🏼‍🤝‍👨🏽 E12.1 men holding hands: medium-light skin tone, medium skin tone +1F468 1F3FC 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👨🏼‍🤝‍👨🏾 E12.1 men holding hands: medium-light skin tone, medium-dark skin tone +1F468 1F3FC 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👨🏼‍🤝‍👨🏿 E12.1 men holding hands: medium-light skin tone, dark skin tone +1F468 1F3FD 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👨🏽‍🤝‍👨🏻 E12.0 men holding hands: medium skin tone, light skin tone +1F468 1F3FD 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👨🏽‍🤝‍👨🏼 E12.0 men holding hands: medium skin tone, medium-light skin tone +1F46C 1F3FD ; fully-qualified # 👬🏽 E12.0 men holding hands: medium skin tone +1F468 1F3FD 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👨🏽‍🤝‍👨🏾 E12.1 men holding hands: medium skin tone, medium-dark skin tone +1F468 1F3FD 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👨🏽‍🤝‍👨🏿 E12.1 men holding hands: medium skin tone, dark skin tone +1F468 1F3FE 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👨🏾‍🤝‍👨🏻 E12.0 men holding hands: medium-dark skin tone, light skin tone +1F468 1F3FE 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👨🏾‍🤝‍👨🏼 E12.0 men holding hands: medium-dark skin tone, medium-light skin tone +1F468 1F3FE 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👨🏾‍🤝‍👨🏽 E12.0 men holding hands: medium-dark skin tone, medium skin tone +1F46C 1F3FE ; fully-qualified # 👬🏾 E12.0 men holding hands: medium-dark skin tone +1F468 1F3FE 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👨🏾‍🤝‍👨🏿 E12.1 men holding hands: medium-dark skin tone, dark skin tone +1F468 1F3FF 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👨🏿‍🤝‍👨🏻 E12.0 men holding hands: dark skin tone, light skin tone +1F468 1F3FF 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👨🏿‍🤝‍👨🏼 E12.0 men holding hands: dark skin tone, medium-light skin tone +1F468 1F3FF 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👨🏿‍🤝‍👨🏽 E12.0 men holding hands: dark skin tone, medium skin tone +1F468 1F3FF 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👨🏿‍🤝‍👨🏾 E12.0 men holding hands: dark skin tone, medium-dark skin tone +1F46C 1F3FF ; fully-qualified # 👬🏿 E12.0 men holding hands: dark skin tone +1F48F ; fully-qualified # 💏 E0.6 kiss +1F48F 1F3FB ; fully-qualified # 💏🏻 E13.1 kiss: light skin tone +1F48F 1F3FC ; fully-qualified # 💏🏼 E13.1 kiss: medium-light skin tone +1F48F 1F3FD ; fully-qualified # 💏🏽 E13.1 kiss: medium skin tone +1F48F 1F3FE ; fully-qualified # 💏🏾 E13.1 kiss: medium-dark skin tone +1F48F 1F3FF ; fully-qualified # 💏🏿 E13.1 kiss: dark skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏻‍❤️‍💋‍🧑🏼 E13.1 kiss: person, person, light skin tone, medium-light skin tone +1F9D1 1F3FB 200D 2764 200D 1F48B 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏻‍❤‍💋‍🧑🏼 E13.1 kiss: person, person, light skin tone, medium-light skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏻‍❤️‍💋‍🧑🏽 E13.1 kiss: person, person, light skin tone, medium skin tone +1F9D1 1F3FB 200D 2764 200D 1F48B 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏻‍❤‍💋‍🧑🏽 E13.1 kiss: person, person, light skin tone, medium skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏻‍❤️‍💋‍🧑🏾 E13.1 kiss: person, person, light skin tone, medium-dark skin tone +1F9D1 1F3FB 200D 2764 200D 1F48B 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏻‍❤‍💋‍🧑🏾 E13.1 kiss: person, person, light skin tone, medium-dark skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏻‍❤️‍💋‍🧑🏿 E13.1 kiss: person, person, light skin tone, dark skin tone +1F9D1 1F3FB 200D 2764 200D 1F48B 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏻‍❤‍💋‍🧑🏿 E13.1 kiss: person, person, light skin tone, dark skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏼‍❤️‍💋‍🧑🏻 E13.1 kiss: person, person, medium-light skin tone, light skin tone +1F9D1 1F3FC 200D 2764 200D 1F48B 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏼‍❤‍💋‍🧑🏻 E13.1 kiss: person, person, medium-light skin tone, light skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏼‍❤️‍💋‍🧑🏽 E13.1 kiss: person, person, medium-light skin tone, medium skin tone +1F9D1 1F3FC 200D 2764 200D 1F48B 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏼‍❤‍💋‍🧑🏽 E13.1 kiss: person, person, medium-light skin tone, medium skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏼‍❤️‍💋‍🧑🏾 E13.1 kiss: person, person, medium-light skin tone, medium-dark skin tone +1F9D1 1F3FC 200D 2764 200D 1F48B 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏼‍❤‍💋‍🧑🏾 E13.1 kiss: person, person, medium-light skin tone, medium-dark skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏼‍❤️‍💋‍🧑🏿 E13.1 kiss: person, person, medium-light skin tone, dark skin tone +1F9D1 1F3FC 200D 2764 200D 1F48B 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏼‍❤‍💋‍🧑🏿 E13.1 kiss: person, person, medium-light skin tone, dark skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏽‍❤️‍💋‍🧑🏻 E13.1 kiss: person, person, medium skin tone, light skin tone +1F9D1 1F3FD 200D 2764 200D 1F48B 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏽‍❤‍💋‍🧑🏻 E13.1 kiss: person, person, medium skin tone, light skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏽‍❤️‍💋‍🧑🏼 E13.1 kiss: person, person, medium skin tone, medium-light skin tone +1F9D1 1F3FD 200D 2764 200D 1F48B 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏽‍❤‍💋‍🧑🏼 E13.1 kiss: person, person, medium skin tone, medium-light skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏽‍❤️‍💋‍🧑🏾 E13.1 kiss: person, person, medium skin tone, medium-dark skin tone +1F9D1 1F3FD 200D 2764 200D 1F48B 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏽‍❤‍💋‍🧑🏾 E13.1 kiss: person, person, medium skin tone, medium-dark skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏽‍❤️‍💋‍🧑🏿 E13.1 kiss: person, person, medium skin tone, dark skin tone +1F9D1 1F3FD 200D 2764 200D 1F48B 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏽‍❤‍💋‍🧑🏿 E13.1 kiss: person, person, medium skin tone, dark skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏾‍❤️‍💋‍🧑🏻 E13.1 kiss: person, person, medium-dark skin tone, light skin tone +1F9D1 1F3FE 200D 2764 200D 1F48B 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏾‍❤‍💋‍🧑🏻 E13.1 kiss: person, person, medium-dark skin tone, light skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏾‍❤️‍💋‍🧑🏼 E13.1 kiss: person, person, medium-dark skin tone, medium-light skin tone +1F9D1 1F3FE 200D 2764 200D 1F48B 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏾‍❤‍💋‍🧑🏼 E13.1 kiss: person, person, medium-dark skin tone, medium-light skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏾‍❤️‍💋‍🧑🏽 E13.1 kiss: person, person, medium-dark skin tone, medium skin tone +1F9D1 1F3FE 200D 2764 200D 1F48B 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏾‍❤‍💋‍🧑🏽 E13.1 kiss: person, person, medium-dark skin tone, medium skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏾‍❤️‍💋‍🧑🏿 E13.1 kiss: person, person, medium-dark skin tone, dark skin tone +1F9D1 1F3FE 200D 2764 200D 1F48B 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏾‍❤‍💋‍🧑🏿 E13.1 kiss: person, person, medium-dark skin tone, dark skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏿‍❤️‍💋‍🧑🏻 E13.1 kiss: person, person, dark skin tone, light skin tone +1F9D1 1F3FF 200D 2764 200D 1F48B 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏿‍❤‍💋‍🧑🏻 E13.1 kiss: person, person, dark skin tone, light skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏿‍❤️‍💋‍🧑🏼 E13.1 kiss: person, person, dark skin tone, medium-light skin tone +1F9D1 1F3FF 200D 2764 200D 1F48B 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏿‍❤‍💋‍🧑🏼 E13.1 kiss: person, person, dark skin tone, medium-light skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏿‍❤️‍💋‍🧑🏽 E13.1 kiss: person, person, dark skin tone, medium skin tone +1F9D1 1F3FF 200D 2764 200D 1F48B 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏿‍❤‍💋‍🧑🏽 E13.1 kiss: person, person, dark skin tone, medium skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏿‍❤️‍💋‍🧑🏾 E13.1 kiss: person, person, dark skin tone, medium-dark skin tone +1F9D1 1F3FF 200D 2764 200D 1F48B 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏿‍❤‍💋‍🧑🏾 E13.1 kiss: person, person, dark skin tone, medium-dark skin tone +1F469 200D 2764 FE0F 200D 1F48B 200D 1F468 ; fully-qualified # 👩‍❤️‍💋‍👨 E2.0 kiss: woman, man +1F469 200D 2764 200D 1F48B 200D 1F468 ; minimally-qualified # 👩‍❤‍💋‍👨 E2.0 kiss: woman, man +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👩🏻‍❤️‍💋‍👨🏻 E13.1 kiss: woman, man, light skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👩🏻‍❤‍💋‍👨🏻 E13.1 kiss: woman, man, light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👩🏻‍❤️‍💋‍👨🏼 E13.1 kiss: woman, man, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👩🏻‍❤‍💋‍👨🏼 E13.1 kiss: woman, man, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👩🏻‍❤️‍💋‍👨🏽 E13.1 kiss: woman, man, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👩🏻‍❤‍💋‍👨🏽 E13.1 kiss: woman, man, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👩🏻‍❤️‍💋‍👨🏾 E13.1 kiss: woman, man, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👩🏻‍❤‍💋‍👨🏾 E13.1 kiss: woman, man, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👩🏻‍❤️‍💋‍👨🏿 E13.1 kiss: woman, man, light skin tone, dark skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👩🏻‍❤‍💋‍👨🏿 E13.1 kiss: woman, man, light skin tone, dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👩🏼‍❤️‍💋‍👨🏻 E13.1 kiss: woman, man, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👩🏼‍❤‍💋‍👨🏻 E13.1 kiss: woman, man, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👩🏼‍❤️‍💋‍👨🏼 E13.1 kiss: woman, man, medium-light skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👩🏼‍❤‍💋‍👨🏼 E13.1 kiss: woman, man, medium-light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👩🏼‍❤️‍💋‍👨🏽 E13.1 kiss: woman, man, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👩🏼‍❤‍💋‍👨🏽 E13.1 kiss: woman, man, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👩🏼‍❤️‍💋‍👨🏾 E13.1 kiss: woman, man, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👩🏼‍❤‍💋‍👨🏾 E13.1 kiss: woman, man, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👩🏼‍❤️‍💋‍👨🏿 E13.1 kiss: woman, man, medium-light skin tone, dark skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👩🏼‍❤‍💋‍👨🏿 E13.1 kiss: woman, man, medium-light skin tone, dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👩🏽‍❤️‍💋‍👨🏻 E13.1 kiss: woman, man, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👩🏽‍❤‍💋‍👨🏻 E13.1 kiss: woman, man, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👩🏽‍❤️‍💋‍👨🏼 E13.1 kiss: woman, man, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👩🏽‍❤‍💋‍👨🏼 E13.1 kiss: woman, man, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👩🏽‍❤️‍💋‍👨🏽 E13.1 kiss: woman, man, medium skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👩🏽‍❤‍💋‍👨🏽 E13.1 kiss: woman, man, medium skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👩🏽‍❤️‍💋‍👨🏾 E13.1 kiss: woman, man, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👩🏽‍❤‍💋‍👨🏾 E13.1 kiss: woman, man, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👩🏽‍❤️‍💋‍👨🏿 E13.1 kiss: woman, man, medium skin tone, dark skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👩🏽‍❤‍💋‍👨🏿 E13.1 kiss: woman, man, medium skin tone, dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👩🏾‍❤️‍💋‍👨🏻 E13.1 kiss: woman, man, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👩🏾‍❤‍💋‍👨🏻 E13.1 kiss: woman, man, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👩🏾‍❤️‍💋‍👨🏼 E13.1 kiss: woman, man, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👩🏾‍❤‍💋‍👨🏼 E13.1 kiss: woman, man, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👩🏾‍❤️‍💋‍👨🏽 E13.1 kiss: woman, man, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👩🏾‍❤‍💋‍👨🏽 E13.1 kiss: woman, man, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👩🏾‍❤️‍💋‍👨🏾 E13.1 kiss: woman, man, medium-dark skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👩🏾‍❤‍💋‍👨🏾 E13.1 kiss: woman, man, medium-dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👩🏾‍❤️‍💋‍👨🏿 E13.1 kiss: woman, man, medium-dark skin tone, dark skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👩🏾‍❤‍💋‍👨🏿 E13.1 kiss: woman, man, medium-dark skin tone, dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👩🏿‍❤️‍💋‍👨🏻 E13.1 kiss: woman, man, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👩🏿‍❤‍💋‍👨🏻 E13.1 kiss: woman, man, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👩🏿‍❤️‍💋‍👨🏼 E13.1 kiss: woman, man, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👩🏿‍❤‍💋‍👨🏼 E13.1 kiss: woman, man, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👩🏿‍❤️‍💋‍👨🏽 E13.1 kiss: woman, man, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👩🏿‍❤‍💋‍👨🏽 E13.1 kiss: woman, man, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👩🏿‍❤️‍💋‍👨🏾 E13.1 kiss: woman, man, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👩🏿‍❤‍💋‍👨🏾 E13.1 kiss: woman, man, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👩🏿‍❤️‍💋‍👨🏿 E13.1 kiss: woman, man, dark skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👩🏿‍❤‍💋‍👨🏿 E13.1 kiss: woman, man, dark skin tone +1F468 200D 2764 FE0F 200D 1F48B 200D 1F468 ; fully-qualified # 👨‍❤️‍💋‍👨 E2.0 kiss: man, man +1F468 200D 2764 200D 1F48B 200D 1F468 ; minimally-qualified # 👨‍❤‍💋‍👨 E2.0 kiss: man, man +1F468 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👨🏻‍❤️‍💋‍👨🏻 E13.1 kiss: man, man, light skin tone +1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👨🏻‍❤‍💋‍👨🏻 E13.1 kiss: man, man, light skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👨🏻‍❤️‍💋‍👨🏼 E13.1 kiss: man, man, light skin tone, medium-light skin tone +1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👨🏻‍❤‍💋‍👨🏼 E13.1 kiss: man, man, light skin tone, medium-light skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👨🏻‍❤️‍💋‍👨🏽 E13.1 kiss: man, man, light skin tone, medium skin tone +1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👨🏻‍❤‍💋‍👨🏽 E13.1 kiss: man, man, light skin tone, medium skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👨🏻‍❤️‍💋‍👨🏾 E13.1 kiss: man, man, light skin tone, medium-dark skin tone +1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👨🏻‍❤‍💋‍👨🏾 E13.1 kiss: man, man, light skin tone, medium-dark skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👨🏻‍❤️‍💋‍👨🏿 E13.1 kiss: man, man, light skin tone, dark skin tone +1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👨🏻‍❤‍💋‍👨🏿 E13.1 kiss: man, man, light skin tone, dark skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👨🏼‍❤️‍💋‍👨🏻 E13.1 kiss: man, man, medium-light skin tone, light skin tone +1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👨🏼‍❤‍💋‍👨🏻 E13.1 kiss: man, man, medium-light skin tone, light skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👨🏼‍❤️‍💋‍👨🏼 E13.1 kiss: man, man, medium-light skin tone +1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👨🏼‍❤‍💋‍👨🏼 E13.1 kiss: man, man, medium-light skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👨🏼‍❤️‍💋‍👨🏽 E13.1 kiss: man, man, medium-light skin tone, medium skin tone +1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👨🏼‍❤‍💋‍👨🏽 E13.1 kiss: man, man, medium-light skin tone, medium skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👨🏼‍❤️‍💋‍👨🏾 E13.1 kiss: man, man, medium-light skin tone, medium-dark skin tone +1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👨🏼‍❤‍💋‍👨🏾 E13.1 kiss: man, man, medium-light skin tone, medium-dark skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👨🏼‍❤️‍💋‍👨🏿 E13.1 kiss: man, man, medium-light skin tone, dark skin tone +1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👨🏼‍❤‍💋‍👨🏿 E13.1 kiss: man, man, medium-light skin tone, dark skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👨🏽‍❤️‍💋‍👨🏻 E13.1 kiss: man, man, medium skin tone, light skin tone +1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👨🏽‍❤‍💋‍👨🏻 E13.1 kiss: man, man, medium skin tone, light skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👨🏽‍❤️‍💋‍👨🏼 E13.1 kiss: man, man, medium skin tone, medium-light skin tone +1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👨🏽‍❤‍💋‍👨🏼 E13.1 kiss: man, man, medium skin tone, medium-light skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👨🏽‍❤️‍💋‍👨🏽 E13.1 kiss: man, man, medium skin tone +1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👨🏽‍❤‍💋‍👨🏽 E13.1 kiss: man, man, medium skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👨🏽‍❤️‍💋‍👨🏾 E13.1 kiss: man, man, medium skin tone, medium-dark skin tone +1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👨🏽‍❤‍💋‍👨🏾 E13.1 kiss: man, man, medium skin tone, medium-dark skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👨🏽‍❤️‍💋‍👨🏿 E13.1 kiss: man, man, medium skin tone, dark skin tone +1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👨🏽‍❤‍💋‍👨🏿 E13.1 kiss: man, man, medium skin tone, dark skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👨🏾‍❤️‍💋‍👨🏻 E13.1 kiss: man, man, medium-dark skin tone, light skin tone +1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👨🏾‍❤‍💋‍👨🏻 E13.1 kiss: man, man, medium-dark skin tone, light skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👨🏾‍❤️‍💋‍👨🏼 E13.1 kiss: man, man, medium-dark skin tone, medium-light skin tone +1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👨🏾‍❤‍💋‍👨🏼 E13.1 kiss: man, man, medium-dark skin tone, medium-light skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👨🏾‍❤️‍💋‍👨🏽 E13.1 kiss: man, man, medium-dark skin tone, medium skin tone +1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👨🏾‍❤‍💋‍👨🏽 E13.1 kiss: man, man, medium-dark skin tone, medium skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👨🏾‍❤️‍💋‍👨🏾 E13.1 kiss: man, man, medium-dark skin tone +1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👨🏾‍❤‍💋‍👨🏾 E13.1 kiss: man, man, medium-dark skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👨🏾‍❤️‍💋‍👨🏿 E13.1 kiss: man, man, medium-dark skin tone, dark skin tone +1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👨🏾‍❤‍💋‍👨🏿 E13.1 kiss: man, man, medium-dark skin tone, dark skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👨🏿‍❤️‍💋‍👨🏻 E13.1 kiss: man, man, dark skin tone, light skin tone +1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👨🏿‍❤‍💋‍👨🏻 E13.1 kiss: man, man, dark skin tone, light skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👨🏿‍❤️‍💋‍👨🏼 E13.1 kiss: man, man, dark skin tone, medium-light skin tone +1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👨🏿‍❤‍💋‍👨🏼 E13.1 kiss: man, man, dark skin tone, medium-light skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👨🏿‍❤️‍💋‍👨🏽 E13.1 kiss: man, man, dark skin tone, medium skin tone +1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👨🏿‍❤‍💋‍👨🏽 E13.1 kiss: man, man, dark skin tone, medium skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👨🏿‍❤️‍💋‍👨🏾 E13.1 kiss: man, man, dark skin tone, medium-dark skin tone +1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👨🏿‍❤‍💋‍👨🏾 E13.1 kiss: man, man, dark skin tone, medium-dark skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👨🏿‍❤️‍💋‍👨🏿 E13.1 kiss: man, man, dark skin tone +1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👨🏿‍❤‍💋‍👨🏿 E13.1 kiss: man, man, dark skin tone +1F469 200D 2764 FE0F 200D 1F48B 200D 1F469 ; fully-qualified # 👩‍❤️‍💋‍👩 E2.0 kiss: woman, woman +1F469 200D 2764 200D 1F48B 200D 1F469 ; minimally-qualified # 👩‍❤‍💋‍👩 E2.0 kiss: woman, woman +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FB ; fully-qualified # 👩🏻‍❤️‍💋‍👩🏻 E13.1 kiss: woman, woman, light skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FB ; minimally-qualified # 👩🏻‍❤‍💋‍👩🏻 E13.1 kiss: woman, woman, light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FC ; fully-qualified # 👩🏻‍❤️‍💋‍👩🏼 E13.1 kiss: woman, woman, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FC ; minimally-qualified # 👩🏻‍❤‍💋‍👩🏼 E13.1 kiss: woman, woman, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FD ; fully-qualified # 👩🏻‍❤️‍💋‍👩🏽 E13.1 kiss: woman, woman, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FD ; minimally-qualified # 👩🏻‍❤‍💋‍👩🏽 E13.1 kiss: woman, woman, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FE ; fully-qualified # 👩🏻‍❤️‍💋‍👩🏾 E13.1 kiss: woman, woman, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FE ; minimally-qualified # 👩🏻‍❤‍💋‍👩🏾 E13.1 kiss: woman, woman, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FF ; fully-qualified # 👩🏻‍❤️‍💋‍👩🏿 E13.1 kiss: woman, woman, light skin tone, dark skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FF ; minimally-qualified # 👩🏻‍❤‍💋‍👩🏿 E13.1 kiss: woman, woman, light skin tone, dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FB ; fully-qualified # 👩🏼‍❤️‍💋‍👩🏻 E13.1 kiss: woman, woman, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FB ; minimally-qualified # 👩🏼‍❤‍💋‍👩🏻 E13.1 kiss: woman, woman, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FC ; fully-qualified # 👩🏼‍❤️‍💋‍👩🏼 E13.1 kiss: woman, woman, medium-light skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FC ; minimally-qualified # 👩🏼‍❤‍💋‍👩🏼 E13.1 kiss: woman, woman, medium-light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FD ; fully-qualified # 👩🏼‍❤️‍💋‍👩🏽 E13.1 kiss: woman, woman, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FD ; minimally-qualified # 👩🏼‍❤‍💋‍👩🏽 E13.1 kiss: woman, woman, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FE ; fully-qualified # 👩🏼‍❤️‍💋‍👩🏾 E13.1 kiss: woman, woman, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FE ; minimally-qualified # 👩🏼‍❤‍💋‍👩🏾 E13.1 kiss: woman, woman, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FF ; fully-qualified # 👩🏼‍❤️‍💋‍👩🏿 E13.1 kiss: woman, woman, medium-light skin tone, dark skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FF ; minimally-qualified # 👩🏼‍❤‍💋‍👩🏿 E13.1 kiss: woman, woman, medium-light skin tone, dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FB ; fully-qualified # 👩🏽‍❤️‍💋‍👩🏻 E13.1 kiss: woman, woman, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FB ; minimally-qualified # 👩🏽‍❤‍💋‍👩🏻 E13.1 kiss: woman, woman, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FC ; fully-qualified # 👩🏽‍❤️‍💋‍👩🏼 E13.1 kiss: woman, woman, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FC ; minimally-qualified # 👩🏽‍❤‍💋‍👩🏼 E13.1 kiss: woman, woman, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FD ; fully-qualified # 👩🏽‍❤️‍💋‍👩🏽 E13.1 kiss: woman, woman, medium skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FD ; minimally-qualified # 👩🏽‍❤‍💋‍👩🏽 E13.1 kiss: woman, woman, medium skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FE ; fully-qualified # 👩🏽‍❤️‍💋‍👩🏾 E13.1 kiss: woman, woman, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FE ; minimally-qualified # 👩🏽‍❤‍💋‍👩🏾 E13.1 kiss: woman, woman, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FF ; fully-qualified # 👩🏽‍❤️‍💋‍👩🏿 E13.1 kiss: woman, woman, medium skin tone, dark skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FF ; minimally-qualified # 👩🏽‍❤‍💋‍👩🏿 E13.1 kiss: woman, woman, medium skin tone, dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FB ; fully-qualified # 👩🏾‍❤️‍💋‍👩🏻 E13.1 kiss: woman, woman, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FB ; minimally-qualified # 👩🏾‍❤‍💋‍👩🏻 E13.1 kiss: woman, woman, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FC ; fully-qualified # 👩🏾‍❤️‍💋‍👩🏼 E13.1 kiss: woman, woman, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FC ; minimally-qualified # 👩🏾‍❤‍💋‍👩🏼 E13.1 kiss: woman, woman, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FD ; fully-qualified # 👩🏾‍❤️‍💋‍👩🏽 E13.1 kiss: woman, woman, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FD ; minimally-qualified # 👩🏾‍❤‍💋‍👩🏽 E13.1 kiss: woman, woman, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FE ; fully-qualified # 👩🏾‍❤️‍💋‍👩🏾 E13.1 kiss: woman, woman, medium-dark skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FE ; minimally-qualified # 👩🏾‍❤‍💋‍👩🏾 E13.1 kiss: woman, woman, medium-dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FF ; fully-qualified # 👩🏾‍❤️‍💋‍👩🏿 E13.1 kiss: woman, woman, medium-dark skin tone, dark skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FF ; minimally-qualified # 👩🏾‍❤‍💋‍👩🏿 E13.1 kiss: woman, woman, medium-dark skin tone, dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FB ; fully-qualified # 👩🏿‍❤️‍💋‍👩🏻 E13.1 kiss: woman, woman, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FB ; minimally-qualified # 👩🏿‍❤‍💋‍👩🏻 E13.1 kiss: woman, woman, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FC ; fully-qualified # 👩🏿‍❤️‍💋‍👩🏼 E13.1 kiss: woman, woman, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FC ; minimally-qualified # 👩🏿‍❤‍💋‍👩🏼 E13.1 kiss: woman, woman, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FD ; fully-qualified # 👩🏿‍❤️‍💋‍👩🏽 E13.1 kiss: woman, woman, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FD ; minimally-qualified # 👩🏿‍❤‍💋‍👩🏽 E13.1 kiss: woman, woman, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FE ; fully-qualified # 👩🏿‍❤️‍💋‍👩🏾 E13.1 kiss: woman, woman, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FE ; minimally-qualified # 👩🏿‍❤‍💋‍👩🏾 E13.1 kiss: woman, woman, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FF ; fully-qualified # 👩🏿‍❤️‍💋‍👩🏿 E13.1 kiss: woman, woman, dark skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FF ; minimally-qualified # 👩🏿‍❤‍💋‍👩🏿 E13.1 kiss: woman, woman, dark skin tone +1F491 ; fully-qualified # 💑 E0.6 couple with heart +1F491 1F3FB ; fully-qualified # 💑🏻 E13.1 couple with heart: light skin tone +1F491 1F3FC ; fully-qualified # 💑🏼 E13.1 couple with heart: medium-light skin tone +1F491 1F3FD ; fully-qualified # 💑🏽 E13.1 couple with heart: medium skin tone +1F491 1F3FE ; fully-qualified # 💑🏾 E13.1 couple with heart: medium-dark skin tone +1F491 1F3FF ; fully-qualified # 💑🏿 E13.1 couple with heart: dark skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏻‍❤️‍🧑🏼 E13.1 couple with heart: person, person, light skin tone, medium-light skin tone +1F9D1 1F3FB 200D 2764 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏻‍❤‍🧑🏼 E13.1 couple with heart: person, person, light skin tone, medium-light skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏻‍❤️‍🧑🏽 E13.1 couple with heart: person, person, light skin tone, medium skin tone +1F9D1 1F3FB 200D 2764 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏻‍❤‍🧑🏽 E13.1 couple with heart: person, person, light skin tone, medium skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏻‍❤️‍🧑🏾 E13.1 couple with heart: person, person, light skin tone, medium-dark skin tone +1F9D1 1F3FB 200D 2764 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏻‍❤‍🧑🏾 E13.1 couple with heart: person, person, light skin tone, medium-dark skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏻‍❤️‍🧑🏿 E13.1 couple with heart: person, person, light skin tone, dark skin tone +1F9D1 1F3FB 200D 2764 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏻‍❤‍🧑🏿 E13.1 couple with heart: person, person, light skin tone, dark skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏼‍❤️‍🧑🏻 E13.1 couple with heart: person, person, medium-light skin tone, light skin tone +1F9D1 1F3FC 200D 2764 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏼‍❤‍🧑🏻 E13.1 couple with heart: person, person, medium-light skin tone, light skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏼‍❤️‍🧑🏽 E13.1 couple with heart: person, person, medium-light skin tone, medium skin tone +1F9D1 1F3FC 200D 2764 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏼‍❤‍🧑🏽 E13.1 couple with heart: person, person, medium-light skin tone, medium skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏼‍❤️‍🧑🏾 E13.1 couple with heart: person, person, medium-light skin tone, medium-dark skin tone +1F9D1 1F3FC 200D 2764 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏼‍❤‍🧑🏾 E13.1 couple with heart: person, person, medium-light skin tone, medium-dark skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏼‍❤️‍🧑🏿 E13.1 couple with heart: person, person, medium-light skin tone, dark skin tone +1F9D1 1F3FC 200D 2764 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏼‍❤‍🧑🏿 E13.1 couple with heart: person, person, medium-light skin tone, dark skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏽‍❤️‍🧑🏻 E13.1 couple with heart: person, person, medium skin tone, light skin tone +1F9D1 1F3FD 200D 2764 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏽‍❤‍🧑🏻 E13.1 couple with heart: person, person, medium skin tone, light skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏽‍❤️‍🧑🏼 E13.1 couple with heart: person, person, medium skin tone, medium-light skin tone +1F9D1 1F3FD 200D 2764 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏽‍❤‍🧑🏼 E13.1 couple with heart: person, person, medium skin tone, medium-light skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏽‍❤️‍🧑🏾 E13.1 couple with heart: person, person, medium skin tone, medium-dark skin tone +1F9D1 1F3FD 200D 2764 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏽‍❤‍🧑🏾 E13.1 couple with heart: person, person, medium skin tone, medium-dark skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏽‍❤️‍🧑🏿 E13.1 couple with heart: person, person, medium skin tone, dark skin tone +1F9D1 1F3FD 200D 2764 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏽‍❤‍🧑🏿 E13.1 couple with heart: person, person, medium skin tone, dark skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏾‍❤️‍🧑🏻 E13.1 couple with heart: person, person, medium-dark skin tone, light skin tone +1F9D1 1F3FE 200D 2764 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏾‍❤‍🧑🏻 E13.1 couple with heart: person, person, medium-dark skin tone, light skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏾‍❤️‍🧑🏼 E13.1 couple with heart: person, person, medium-dark skin tone, medium-light skin tone +1F9D1 1F3FE 200D 2764 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏾‍❤‍🧑🏼 E13.1 couple with heart: person, person, medium-dark skin tone, medium-light skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏾‍❤️‍🧑🏽 E13.1 couple with heart: person, person, medium-dark skin tone, medium skin tone +1F9D1 1F3FE 200D 2764 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏾‍❤‍🧑🏽 E13.1 couple with heart: person, person, medium-dark skin tone, medium skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏾‍❤️‍🧑🏿 E13.1 couple with heart: person, person, medium-dark skin tone, dark skin tone +1F9D1 1F3FE 200D 2764 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏾‍❤‍🧑🏿 E13.1 couple with heart: person, person, medium-dark skin tone, dark skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏿‍❤️‍🧑🏻 E13.1 couple with heart: person, person, dark skin tone, light skin tone +1F9D1 1F3FF 200D 2764 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏿‍❤‍🧑🏻 E13.1 couple with heart: person, person, dark skin tone, light skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏿‍❤️‍🧑🏼 E13.1 couple with heart: person, person, dark skin tone, medium-light skin tone +1F9D1 1F3FF 200D 2764 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏿‍❤‍🧑🏼 E13.1 couple with heart: person, person, dark skin tone, medium-light skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏿‍❤️‍🧑🏽 E13.1 couple with heart: person, person, dark skin tone, medium skin tone +1F9D1 1F3FF 200D 2764 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏿‍❤‍🧑🏽 E13.1 couple with heart: person, person, dark skin tone, medium skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏿‍❤️‍🧑🏾 E13.1 couple with heart: person, person, dark skin tone, medium-dark skin tone +1F9D1 1F3FF 200D 2764 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏿‍❤‍🧑🏾 E13.1 couple with heart: person, person, dark skin tone, medium-dark skin tone +1F469 200D 2764 FE0F 200D 1F468 ; fully-qualified # 👩‍❤️‍👨 E2.0 couple with heart: woman, man +1F469 200D 2764 200D 1F468 ; minimally-qualified # 👩‍❤‍👨 E2.0 couple with heart: woman, man +1F469 1F3FB 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👩🏻‍❤️‍👨🏻 E13.1 couple with heart: woman, man, light skin tone +1F469 1F3FB 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👩🏻‍❤‍👨🏻 E13.1 couple with heart: woman, man, light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👩🏻‍❤️‍👨🏼 E13.1 couple with heart: woman, man, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👩🏻‍❤‍👨🏼 E13.1 couple with heart: woman, man, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👩🏻‍❤️‍👨🏽 E13.1 couple with heart: woman, man, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👩🏻‍❤‍👨🏽 E13.1 couple with heart: woman, man, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👩🏻‍❤️‍👨🏾 E13.1 couple with heart: woman, man, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👩🏻‍❤‍👨🏾 E13.1 couple with heart: woman, man, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👩🏻‍❤️‍👨🏿 E13.1 couple with heart: woman, man, light skin tone, dark skin tone +1F469 1F3FB 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👩🏻‍❤‍👨🏿 E13.1 couple with heart: woman, man, light skin tone, dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👩🏼‍❤️‍👨🏻 E13.1 couple with heart: woman, man, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👩🏼‍❤‍👨🏻 E13.1 couple with heart: woman, man, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👩🏼‍❤️‍👨🏼 E13.1 couple with heart: woman, man, medium-light skin tone +1F469 1F3FC 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👩🏼‍❤‍👨🏼 E13.1 couple with heart: woman, man, medium-light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👩🏼‍❤️‍👨🏽 E13.1 couple with heart: woman, man, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👩🏼‍❤‍👨🏽 E13.1 couple with heart: woman, man, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👩🏼‍❤️‍👨🏾 E13.1 couple with heart: woman, man, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👩🏼‍❤‍👨🏾 E13.1 couple with heart: woman, man, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👩🏼‍❤️‍👨🏿 E13.1 couple with heart: woman, man, medium-light skin tone, dark skin tone +1F469 1F3FC 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👩🏼‍❤‍👨🏿 E13.1 couple with heart: woman, man, medium-light skin tone, dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👩🏽‍❤️‍👨🏻 E13.1 couple with heart: woman, man, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👩🏽‍❤‍👨🏻 E13.1 couple with heart: woman, man, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👩🏽‍❤️‍👨🏼 E13.1 couple with heart: woman, man, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👩🏽‍❤‍👨🏼 E13.1 couple with heart: woman, man, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👩🏽‍❤️‍👨🏽 E13.1 couple with heart: woman, man, medium skin tone +1F469 1F3FD 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👩🏽‍❤‍👨🏽 E13.1 couple with heart: woman, man, medium skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👩🏽‍❤️‍👨🏾 E13.1 couple with heart: woman, man, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👩🏽‍❤‍👨🏾 E13.1 couple with heart: woman, man, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👩🏽‍❤️‍👨🏿 E13.1 couple with heart: woman, man, medium skin tone, dark skin tone +1F469 1F3FD 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👩🏽‍❤‍👨🏿 E13.1 couple with heart: woman, man, medium skin tone, dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👩🏾‍❤️‍👨🏻 E13.1 couple with heart: woman, man, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👩🏾‍❤‍👨🏻 E13.1 couple with heart: woman, man, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👩🏾‍❤️‍👨🏼 E13.1 couple with heart: woman, man, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👩🏾‍❤‍👨🏼 E13.1 couple with heart: woman, man, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👩🏾‍❤️‍👨🏽 E13.1 couple with heart: woman, man, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👩🏾‍❤‍👨🏽 E13.1 couple with heart: woman, man, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👩🏾‍❤️‍👨🏾 E13.1 couple with heart: woman, man, medium-dark skin tone +1F469 1F3FE 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👩🏾‍❤‍👨🏾 E13.1 couple with heart: woman, man, medium-dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👩🏾‍❤️‍👨🏿 E13.1 couple with heart: woman, man, medium-dark skin tone, dark skin tone +1F469 1F3FE 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👩🏾‍❤‍👨🏿 E13.1 couple with heart: woman, man, medium-dark skin tone, dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👩🏿‍❤️‍👨🏻 E13.1 couple with heart: woman, man, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👩🏿‍❤‍👨🏻 E13.1 couple with heart: woman, man, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👩🏿‍❤️‍👨🏼 E13.1 couple with heart: woman, man, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👩🏿‍❤‍👨🏼 E13.1 couple with heart: woman, man, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👩🏿‍❤️‍👨🏽 E13.1 couple with heart: woman, man, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👩🏿‍❤‍👨🏽 E13.1 couple with heart: woman, man, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👩🏿‍❤️‍👨🏾 E13.1 couple with heart: woman, man, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👩🏿‍❤‍👨🏾 E13.1 couple with heart: woman, man, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👩🏿‍❤️‍👨🏿 E13.1 couple with heart: woman, man, dark skin tone +1F469 1F3FF 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👩🏿‍❤‍👨🏿 E13.1 couple with heart: woman, man, dark skin tone +1F468 200D 2764 FE0F 200D 1F468 ; fully-qualified # 👨‍❤️‍👨 E2.0 couple with heart: man, man +1F468 200D 2764 200D 1F468 ; minimally-qualified # 👨‍❤‍👨 E2.0 couple with heart: man, man +1F468 1F3FB 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👨🏻‍❤️‍👨🏻 E13.1 couple with heart: man, man, light skin tone +1F468 1F3FB 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👨🏻‍❤‍👨🏻 E13.1 couple with heart: man, man, light skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👨🏻‍❤️‍👨🏼 E13.1 couple with heart: man, man, light skin tone, medium-light skin tone +1F468 1F3FB 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👨🏻‍❤‍👨🏼 E13.1 couple with heart: man, man, light skin tone, medium-light skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👨🏻‍❤️‍👨🏽 E13.1 couple with heart: man, man, light skin tone, medium skin tone +1F468 1F3FB 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👨🏻‍❤‍👨🏽 E13.1 couple with heart: man, man, light skin tone, medium skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👨🏻‍❤️‍👨🏾 E13.1 couple with heart: man, man, light skin tone, medium-dark skin tone +1F468 1F3FB 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👨🏻‍❤‍👨🏾 E13.1 couple with heart: man, man, light skin tone, medium-dark skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👨🏻‍❤️‍👨🏿 E13.1 couple with heart: man, man, light skin tone, dark skin tone +1F468 1F3FB 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👨🏻‍❤‍👨🏿 E13.1 couple with heart: man, man, light skin tone, dark skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👨🏼‍❤️‍👨🏻 E13.1 couple with heart: man, man, medium-light skin tone, light skin tone +1F468 1F3FC 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👨🏼‍❤‍👨🏻 E13.1 couple with heart: man, man, medium-light skin tone, light skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👨🏼‍❤️‍👨🏼 E13.1 couple with heart: man, man, medium-light skin tone +1F468 1F3FC 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👨🏼‍❤‍👨🏼 E13.1 couple with heart: man, man, medium-light skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👨🏼‍❤️‍👨🏽 E13.1 couple with heart: man, man, medium-light skin tone, medium skin tone +1F468 1F3FC 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👨🏼‍❤‍👨🏽 E13.1 couple with heart: man, man, medium-light skin tone, medium skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👨🏼‍❤️‍👨🏾 E13.1 couple with heart: man, man, medium-light skin tone, medium-dark skin tone +1F468 1F3FC 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👨🏼‍❤‍👨🏾 E13.1 couple with heart: man, man, medium-light skin tone, medium-dark skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👨🏼‍❤️‍👨🏿 E13.1 couple with heart: man, man, medium-light skin tone, dark skin tone +1F468 1F3FC 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👨🏼‍❤‍👨🏿 E13.1 couple with heart: man, man, medium-light skin tone, dark skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👨🏽‍❤️‍👨🏻 E13.1 couple with heart: man, man, medium skin tone, light skin tone +1F468 1F3FD 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👨🏽‍❤‍👨🏻 E13.1 couple with heart: man, man, medium skin tone, light skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👨🏽‍❤️‍👨🏼 E13.1 couple with heart: man, man, medium skin tone, medium-light skin tone +1F468 1F3FD 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👨🏽‍❤‍👨🏼 E13.1 couple with heart: man, man, medium skin tone, medium-light skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👨🏽‍❤️‍👨🏽 E13.1 couple with heart: man, man, medium skin tone +1F468 1F3FD 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👨🏽‍❤‍👨🏽 E13.1 couple with heart: man, man, medium skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👨🏽‍❤️‍👨🏾 E13.1 couple with heart: man, man, medium skin tone, medium-dark skin tone +1F468 1F3FD 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👨🏽‍❤‍👨🏾 E13.1 couple with heart: man, man, medium skin tone, medium-dark skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👨🏽‍❤️‍👨🏿 E13.1 couple with heart: man, man, medium skin tone, dark skin tone +1F468 1F3FD 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👨🏽‍❤‍👨🏿 E13.1 couple with heart: man, man, medium skin tone, dark skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👨🏾‍❤️‍👨🏻 E13.1 couple with heart: man, man, medium-dark skin tone, light skin tone +1F468 1F3FE 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👨🏾‍❤‍👨🏻 E13.1 couple with heart: man, man, medium-dark skin tone, light skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👨🏾‍❤️‍👨🏼 E13.1 couple with heart: man, man, medium-dark skin tone, medium-light skin tone +1F468 1F3FE 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👨🏾‍❤‍👨🏼 E13.1 couple with heart: man, man, medium-dark skin tone, medium-light skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👨🏾‍❤️‍👨🏽 E13.1 couple with heart: man, man, medium-dark skin tone, medium skin tone +1F468 1F3FE 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👨🏾‍❤‍👨🏽 E13.1 couple with heart: man, man, medium-dark skin tone, medium skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👨🏾‍❤️‍👨🏾 E13.1 couple with heart: man, man, medium-dark skin tone +1F468 1F3FE 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👨🏾‍❤‍👨🏾 E13.1 couple with heart: man, man, medium-dark skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👨🏾‍❤️‍👨🏿 E13.1 couple with heart: man, man, medium-dark skin tone, dark skin tone +1F468 1F3FE 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👨🏾‍❤‍👨🏿 E13.1 couple with heart: man, man, medium-dark skin tone, dark skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👨🏿‍❤️‍👨🏻 E13.1 couple with heart: man, man, dark skin tone, light skin tone +1F468 1F3FF 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👨🏿‍❤‍👨🏻 E13.1 couple with heart: man, man, dark skin tone, light skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👨🏿‍❤️‍👨🏼 E13.1 couple with heart: man, man, dark skin tone, medium-light skin tone +1F468 1F3FF 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👨🏿‍❤‍👨🏼 E13.1 couple with heart: man, man, dark skin tone, medium-light skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👨🏿‍❤️‍👨🏽 E13.1 couple with heart: man, man, dark skin tone, medium skin tone +1F468 1F3FF 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👨🏿‍❤‍👨🏽 E13.1 couple with heart: man, man, dark skin tone, medium skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👨🏿‍❤️‍👨🏾 E13.1 couple with heart: man, man, dark skin tone, medium-dark skin tone +1F468 1F3FF 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👨🏿‍❤‍👨🏾 E13.1 couple with heart: man, man, dark skin tone, medium-dark skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👨🏿‍❤️‍👨🏿 E13.1 couple with heart: man, man, dark skin tone +1F468 1F3FF 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👨🏿‍❤‍👨🏿 E13.1 couple with heart: man, man, dark skin tone +1F469 200D 2764 FE0F 200D 1F469 ; fully-qualified # 👩‍❤️‍👩 E2.0 couple with heart: woman, woman +1F469 200D 2764 200D 1F469 ; minimally-qualified # 👩‍❤‍👩 E2.0 couple with heart: woman, woman +1F469 1F3FB 200D 2764 FE0F 200D 1F469 1F3FB ; fully-qualified # 👩🏻‍❤️‍👩🏻 E13.1 couple with heart: woman, woman, light skin tone +1F469 1F3FB 200D 2764 200D 1F469 1F3FB ; minimally-qualified # 👩🏻‍❤‍👩🏻 E13.1 couple with heart: woman, woman, light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F469 1F3FC ; fully-qualified # 👩🏻‍❤️‍👩🏼 E13.1 couple with heart: woman, woman, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 200D 1F469 1F3FC ; minimally-qualified # 👩🏻‍❤‍👩🏼 E13.1 couple with heart: woman, woman, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F469 1F3FD ; fully-qualified # 👩🏻‍❤️‍👩🏽 E13.1 couple with heart: woman, woman, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 200D 1F469 1F3FD ; minimally-qualified # 👩🏻‍❤‍👩🏽 E13.1 couple with heart: woman, woman, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F469 1F3FE ; fully-qualified # 👩🏻‍❤️‍👩🏾 E13.1 couple with heart: woman, woman, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 200D 1F469 1F3FE ; minimally-qualified # 👩🏻‍❤‍👩🏾 E13.1 couple with heart: woman, woman, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F469 1F3FF ; fully-qualified # 👩🏻‍❤️‍👩🏿 E13.1 couple with heart: woman, woman, light skin tone, dark skin tone +1F469 1F3FB 200D 2764 200D 1F469 1F3FF ; minimally-qualified # 👩🏻‍❤‍👩🏿 E13.1 couple with heart: woman, woman, light skin tone, dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F469 1F3FB ; fully-qualified # 👩🏼‍❤️‍👩🏻 E13.1 couple with heart: woman, woman, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 200D 1F469 1F3FB ; minimally-qualified # 👩🏼‍❤‍👩🏻 E13.1 couple with heart: woman, woman, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F469 1F3FC ; fully-qualified # 👩🏼‍❤️‍👩🏼 E13.1 couple with heart: woman, woman, medium-light skin tone +1F469 1F3FC 200D 2764 200D 1F469 1F3FC ; minimally-qualified # 👩🏼‍❤‍👩🏼 E13.1 couple with heart: woman, woman, medium-light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F469 1F3FD ; fully-qualified # 👩🏼‍❤️‍👩🏽 E13.1 couple with heart: woman, woman, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 200D 1F469 1F3FD ; minimally-qualified # 👩🏼‍❤‍👩🏽 E13.1 couple with heart: woman, woman, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F469 1F3FE ; fully-qualified # 👩🏼‍❤️‍👩🏾 E13.1 couple with heart: woman, woman, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 200D 1F469 1F3FE ; minimally-qualified # 👩🏼‍❤‍👩🏾 E13.1 couple with heart: woman, woman, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F469 1F3FF ; fully-qualified # 👩🏼‍❤️‍👩🏿 E13.1 couple with heart: woman, woman, medium-light skin tone, dark skin tone +1F469 1F3FC 200D 2764 200D 1F469 1F3FF ; minimally-qualified # 👩🏼‍❤‍👩🏿 E13.1 couple with heart: woman, woman, medium-light skin tone, dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F469 1F3FB ; fully-qualified # 👩🏽‍❤️‍👩🏻 E13.1 couple with heart: woman, woman, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 200D 1F469 1F3FB ; minimally-qualified # 👩🏽‍❤‍👩🏻 E13.1 couple with heart: woman, woman, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F469 1F3FC ; fully-qualified # 👩🏽‍❤️‍👩🏼 E13.1 couple with heart: woman, woman, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 200D 1F469 1F3FC ; minimally-qualified # 👩🏽‍❤‍👩🏼 E13.1 couple with heart: woman, woman, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F469 1F3FD ; fully-qualified # 👩🏽‍❤️‍👩🏽 E13.1 couple with heart: woman, woman, medium skin tone +1F469 1F3FD 200D 2764 200D 1F469 1F3FD ; minimally-qualified # 👩🏽‍❤‍👩🏽 E13.1 couple with heart: woman, woman, medium skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F469 1F3FE ; fully-qualified # 👩🏽‍❤️‍👩🏾 E13.1 couple with heart: woman, woman, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 200D 1F469 1F3FE ; minimally-qualified # 👩🏽‍❤‍👩🏾 E13.1 couple with heart: woman, woman, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F469 1F3FF ; fully-qualified # 👩🏽‍❤️‍👩🏿 E13.1 couple with heart: woman, woman, medium skin tone, dark skin tone +1F469 1F3FD 200D 2764 200D 1F469 1F3FF ; minimally-qualified # 👩🏽‍❤‍👩🏿 E13.1 couple with heart: woman, woman, medium skin tone, dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F469 1F3FB ; fully-qualified # 👩🏾‍❤️‍👩🏻 E13.1 couple with heart: woman, woman, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 200D 1F469 1F3FB ; minimally-qualified # 👩🏾‍❤‍👩🏻 E13.1 couple with heart: woman, woman, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F469 1F3FC ; fully-qualified # 👩🏾‍❤️‍👩🏼 E13.1 couple with heart: woman, woman, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 200D 1F469 1F3FC ; minimally-qualified # 👩🏾‍❤‍👩🏼 E13.1 couple with heart: woman, woman, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F469 1F3FD ; fully-qualified # 👩🏾‍❤️‍👩🏽 E13.1 couple with heart: woman, woman, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 200D 1F469 1F3FD ; minimally-qualified # 👩🏾‍❤‍👩🏽 E13.1 couple with heart: woman, woman, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F469 1F3FE ; fully-qualified # 👩🏾‍❤️‍👩🏾 E13.1 couple with heart: woman, woman, medium-dark skin tone +1F469 1F3FE 200D 2764 200D 1F469 1F3FE ; minimally-qualified # 👩🏾‍❤‍👩🏾 E13.1 couple with heart: woman, woman, medium-dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F469 1F3FF ; fully-qualified # 👩🏾‍❤️‍👩🏿 E13.1 couple with heart: woman, woman, medium-dark skin tone, dark skin tone +1F469 1F3FE 200D 2764 200D 1F469 1F3FF ; minimally-qualified # 👩🏾‍❤‍👩🏿 E13.1 couple with heart: woman, woman, medium-dark skin tone, dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F469 1F3FB ; fully-qualified # 👩🏿‍❤️‍👩🏻 E13.1 couple with heart: woman, woman, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 200D 1F469 1F3FB ; minimally-qualified # 👩🏿‍❤‍👩🏻 E13.1 couple with heart: woman, woman, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F469 1F3FC ; fully-qualified # 👩🏿‍❤️‍👩🏼 E13.1 couple with heart: woman, woman, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 200D 1F469 1F3FC ; minimally-qualified # 👩🏿‍❤‍👩🏼 E13.1 couple with heart: woman, woman, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F469 1F3FD ; fully-qualified # 👩🏿‍❤️‍👩🏽 E13.1 couple with heart: woman, woman, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 200D 1F469 1F3FD ; minimally-qualified # 👩🏿‍❤‍👩🏽 E13.1 couple with heart: woman, woman, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F469 1F3FE ; fully-qualified # 👩🏿‍❤️‍👩🏾 E13.1 couple with heart: woman, woman, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 200D 1F469 1F3FE ; minimally-qualified # 👩🏿‍❤‍👩🏾 E13.1 couple with heart: woman, woman, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F469 1F3FF ; fully-qualified # 👩🏿‍❤️‍👩🏿 E13.1 couple with heart: woman, woman, dark skin tone +1F469 1F3FF 200D 2764 200D 1F469 1F3FF ; minimally-qualified # 👩🏿‍❤‍👩🏿 E13.1 couple with heart: woman, woman, dark skin tone +1F46A ; fully-qualified # 👪 E0.6 family +1F468 200D 1F469 200D 1F466 ; fully-qualified # 👨‍👩‍👦 E2.0 family: man, woman, boy +1F468 200D 1F469 200D 1F467 ; fully-qualified # 👨‍👩‍👧 E2.0 family: man, woman, girl +1F468 200D 1F469 200D 1F467 200D 1F466 ; fully-qualified # 👨‍👩‍👧‍👦 E2.0 family: man, woman, girl, boy +1F468 200D 1F469 200D 1F466 200D 1F466 ; fully-qualified # 👨‍👩‍👦‍👦 E2.0 family: man, woman, boy, boy +1F468 200D 1F469 200D 1F467 200D 1F467 ; fully-qualified # 👨‍👩‍👧‍👧 E2.0 family: man, woman, girl, girl +1F468 200D 1F468 200D 1F466 ; fully-qualified # 👨‍👨‍👦 E2.0 family: man, man, boy +1F468 200D 1F468 200D 1F467 ; fully-qualified # 👨‍👨‍👧 E2.0 family: man, man, girl +1F468 200D 1F468 200D 1F467 200D 1F466 ; fully-qualified # 👨‍👨‍👧‍👦 E2.0 family: man, man, girl, boy +1F468 200D 1F468 200D 1F466 200D 1F466 ; fully-qualified # 👨‍👨‍👦‍👦 E2.0 family: man, man, boy, boy +1F468 200D 1F468 200D 1F467 200D 1F467 ; fully-qualified # 👨‍👨‍👧‍👧 E2.0 family: man, man, girl, girl +1F469 200D 1F469 200D 1F466 ; fully-qualified # 👩‍👩‍👦 E2.0 family: woman, woman, boy +1F469 200D 1F469 200D 1F467 ; fully-qualified # 👩‍👩‍👧 E2.0 family: woman, woman, girl +1F469 200D 1F469 200D 1F467 200D 1F466 ; fully-qualified # 👩‍👩‍👧‍👦 E2.0 family: woman, woman, girl, boy +1F469 200D 1F469 200D 1F466 200D 1F466 ; fully-qualified # 👩‍👩‍👦‍👦 E2.0 family: woman, woman, boy, boy +1F469 200D 1F469 200D 1F467 200D 1F467 ; fully-qualified # 👩‍👩‍👧‍👧 E2.0 family: woman, woman, girl, girl +1F468 200D 1F466 ; fully-qualified # 👨‍👦 E4.0 family: man, boy +1F468 200D 1F466 200D 1F466 ; fully-qualified # 👨‍👦‍👦 E4.0 family: man, boy, boy +1F468 200D 1F467 ; fully-qualified # 👨‍👧 E4.0 family: man, girl +1F468 200D 1F467 200D 1F466 ; fully-qualified # 👨‍👧‍👦 E4.0 family: man, girl, boy +1F468 200D 1F467 200D 1F467 ; fully-qualified # 👨‍👧‍👧 E4.0 family: man, girl, girl +1F469 200D 1F466 ; fully-qualified # 👩‍👦 E4.0 family: woman, boy +1F469 200D 1F466 200D 1F466 ; fully-qualified # 👩‍👦‍👦 E4.0 family: woman, boy, boy +1F469 200D 1F467 ; fully-qualified # 👩‍👧 E4.0 family: woman, girl +1F469 200D 1F467 200D 1F466 ; fully-qualified # 👩‍👧‍👦 E4.0 family: woman, girl, boy +1F469 200D 1F467 200D 1F467 ; fully-qualified # 👩‍👧‍👧 E4.0 family: woman, girl, girl + +# subgroup: person-symbol +1F5E3 FE0F ; fully-qualified # 🗣️ E0.7 speaking head +1F5E3 ; unqualified # 🗣 E0.7 speaking head +1F464 ; fully-qualified # 👤 E0.6 bust in silhouette +1F465 ; fully-qualified # 👥 E1.0 busts in silhouette +1FAC2 ; fully-qualified # 🫂 E13.0 people hugging +1F463 ; fully-qualified # 👣 E0.6 footprints + +# People & Body subtotal: 2998 +# People & Body subtotal: 508 w/o modifiers + +# group: Component + +# subgroup: skin-tone +1F3FB ; component # 🏻 E1.0 light skin tone +1F3FC ; component # 🏼 E1.0 medium-light skin tone +1F3FD ; component # 🏽 E1.0 medium skin tone +1F3FE ; component # 🏾 E1.0 medium-dark skin tone +1F3FF ; component # 🏿 E1.0 dark skin tone + +# subgroup: hair-style +1F9B0 ; component # 🦰 E11.0 red hair +1F9B1 ; component # 🦱 E11.0 curly hair +1F9B3 ; component # 🦳 E11.0 white hair +1F9B2 ; component # 🦲 E11.0 bald + +# Component subtotal: 9 +# Component subtotal: 4 w/o modifiers + +# group: Animals & Nature + +# subgroup: animal-mammal +1F435 ; fully-qualified # 🐵 E0.6 monkey face +1F412 ; fully-qualified # 🐒 E0.6 monkey +1F98D ; fully-qualified # 🦍 E3.0 gorilla +1F9A7 ; fully-qualified # 🦧 E12.0 orangutan +1F436 ; fully-qualified # 🐶 E0.6 dog face +1F415 ; fully-qualified # 🐕 E0.7 dog +1F9AE ; fully-qualified # 🦮 E12.0 guide dog +1F415 200D 1F9BA ; fully-qualified # 🐕‍🦺 E12.0 service dog +1F429 ; fully-qualified # 🐩 E0.6 poodle +1F43A ; fully-qualified # 🐺 E0.6 wolf +1F98A ; fully-qualified # 🦊 E3.0 fox +1F99D ; fully-qualified # 🦝 E11.0 raccoon +1F431 ; fully-qualified # 🐱 E0.6 cat face +1F408 ; fully-qualified # 🐈 E0.7 cat +1F408 200D 2B1B ; fully-qualified # 🐈‍⬛ E13.0 black cat +1F981 ; fully-qualified # 🦁 E1.0 lion +1F42F ; fully-qualified # 🐯 E0.6 tiger face +1F405 ; fully-qualified # 🐅 E1.0 tiger +1F406 ; fully-qualified # 🐆 E1.0 leopard +1F434 ; fully-qualified # 🐴 E0.6 horse face +1FACE ; fully-qualified # 🫎 E15.0 moose +1FACF ; fully-qualified # 🫏 E15.0 donkey +1F40E ; fully-qualified # 🐎 E0.6 horse +1F984 ; fully-qualified # 🦄 E1.0 unicorn +1F993 ; fully-qualified # 🦓 E5.0 zebra +1F98C ; fully-qualified # 🦌 E3.0 deer +1F9AC ; fully-qualified # 🦬 E13.0 bison +1F42E ; fully-qualified # 🐮 E0.6 cow face +1F402 ; fully-qualified # 🐂 E1.0 ox +1F403 ; fully-qualified # 🐃 E1.0 water buffalo +1F404 ; fully-qualified # 🐄 E1.0 cow +1F437 ; fully-qualified # 🐷 E0.6 pig face +1F416 ; fully-qualified # 🐖 E1.0 pig +1F417 ; fully-qualified # 🐗 E0.6 boar +1F43D ; fully-qualified # 🐽 E0.6 pig nose +1F40F ; fully-qualified # 🐏 E1.0 ram +1F411 ; fully-qualified # 🐑 E0.6 ewe +1F410 ; fully-qualified # 🐐 E1.0 goat +1F42A ; fully-qualified # 🐪 E1.0 camel +1F42B ; fully-qualified # 🐫 E0.6 two-hump camel +1F999 ; fully-qualified # 🦙 E11.0 llama +1F992 ; fully-qualified # 🦒 E5.0 giraffe +1F418 ; fully-qualified # 🐘 E0.6 elephant +1F9A3 ; fully-qualified # 🦣 E13.0 mammoth +1F98F ; fully-qualified # 🦏 E3.0 rhinoceros +1F99B ; fully-qualified # 🦛 E11.0 hippopotamus +1F42D ; fully-qualified # 🐭 E0.6 mouse face +1F401 ; fully-qualified # 🐁 E1.0 mouse +1F400 ; fully-qualified # 🐀 E1.0 rat +1F439 ; fully-qualified # 🐹 E0.6 hamster +1F430 ; fully-qualified # 🐰 E0.6 rabbit face +1F407 ; fully-qualified # 🐇 E1.0 rabbit +1F43F FE0F ; fully-qualified # 🐿️ E0.7 chipmunk +1F43F ; unqualified # 🐿 E0.7 chipmunk +1F9AB ; fully-qualified # 🦫 E13.0 beaver +1F994 ; fully-qualified # 🦔 E5.0 hedgehog +1F987 ; fully-qualified # 🦇 E3.0 bat +1F43B ; fully-qualified # 🐻 E0.6 bear +1F43B 200D 2744 FE0F ; fully-qualified # 🐻‍❄️ E13.0 polar bear +1F43B 200D 2744 ; minimally-qualified # 🐻‍❄ E13.0 polar bear +1F428 ; fully-qualified # 🐨 E0.6 koala +1F43C ; fully-qualified # 🐼 E0.6 panda +1F9A5 ; fully-qualified # 🦥 E12.0 sloth +1F9A6 ; fully-qualified # 🦦 E12.0 otter +1F9A8 ; fully-qualified # 🦨 E12.0 skunk +1F998 ; fully-qualified # 🦘 E11.0 kangaroo +1F9A1 ; fully-qualified # 🦡 E11.0 badger +1F43E ; fully-qualified # 🐾 E0.6 paw prints + +# subgroup: animal-bird +1F983 ; fully-qualified # 🦃 E1.0 turkey +1F414 ; fully-qualified # 🐔 E0.6 chicken +1F413 ; fully-qualified # 🐓 E1.0 rooster +1F423 ; fully-qualified # 🐣 E0.6 hatching chick +1F424 ; fully-qualified # 🐤 E0.6 baby chick +1F425 ; fully-qualified # 🐥 E0.6 front-facing baby chick +1F426 ; fully-qualified # 🐦 E0.6 bird +1F427 ; fully-qualified # 🐧 E0.6 penguin +1F54A FE0F ; fully-qualified # 🕊️ E0.7 dove +1F54A ; unqualified # 🕊 E0.7 dove +1F985 ; fully-qualified # 🦅 E3.0 eagle +1F986 ; fully-qualified # 🦆 E3.0 duck +1F9A2 ; fully-qualified # 🦢 E11.0 swan +1F989 ; fully-qualified # 🦉 E3.0 owl +1F9A4 ; fully-qualified # 🦤 E13.0 dodo +1FAB6 ; fully-qualified # 🪶 E13.0 feather +1F9A9 ; fully-qualified # 🦩 E12.0 flamingo +1F99A ; fully-qualified # 🦚 E11.0 peacock +1F99C ; fully-qualified # 🦜 E11.0 parrot +1FABD ; fully-qualified # 🪽 E15.0 wing +1F426 200D 2B1B ; fully-qualified # 🐦‍⬛ E15.0 black bird +1FABF ; fully-qualified # 🪿 E15.0 goose + +# subgroup: animal-amphibian +1F438 ; fully-qualified # 🐸 E0.6 frog + +# subgroup: animal-reptile +1F40A ; fully-qualified # 🐊 E1.0 crocodile +1F422 ; fully-qualified # 🐢 E0.6 turtle +1F98E ; fully-qualified # 🦎 E3.0 lizard +1F40D ; fully-qualified # 🐍 E0.6 snake +1F432 ; fully-qualified # 🐲 E0.6 dragon face +1F409 ; fully-qualified # 🐉 E1.0 dragon +1F995 ; fully-qualified # 🦕 E5.0 sauropod +1F996 ; fully-qualified # 🦖 E5.0 T-Rex + +# subgroup: animal-marine +1F433 ; fully-qualified # 🐳 E0.6 spouting whale +1F40B ; fully-qualified # 🐋 E1.0 whale +1F42C ; fully-qualified # 🐬 E0.6 dolphin +1F9AD ; fully-qualified # 🦭 E13.0 seal +1F41F ; fully-qualified # 🐟 E0.6 fish +1F420 ; fully-qualified # 🐠 E0.6 tropical fish +1F421 ; fully-qualified # 🐡 E0.6 blowfish +1F988 ; fully-qualified # 🦈 E3.0 shark +1F419 ; fully-qualified # 🐙 E0.6 octopus +1F41A ; fully-qualified # 🐚 E0.6 spiral shell +1FAB8 ; fully-qualified # 🪸 E14.0 coral +1FABC ; fully-qualified # 🪼 E15.0 jellyfish + +# subgroup: animal-bug +1F40C ; fully-qualified # 🐌 E0.6 snail +1F98B ; fully-qualified # 🦋 E3.0 butterfly +1F41B ; fully-qualified # 🐛 E0.6 bug +1F41C ; fully-qualified # 🐜 E0.6 ant +1F41D ; fully-qualified # 🐝 E0.6 honeybee +1FAB2 ; fully-qualified # 🪲 E13.0 beetle +1F41E ; fully-qualified # 🐞 E0.6 lady beetle +1F997 ; fully-qualified # 🦗 E5.0 cricket +1FAB3 ; fully-qualified # 🪳 E13.0 cockroach +1F577 FE0F ; fully-qualified # 🕷️ E0.7 spider +1F577 ; unqualified # 🕷 E0.7 spider +1F578 FE0F ; fully-qualified # 🕸️ E0.7 spider web +1F578 ; unqualified # 🕸 E0.7 spider web +1F982 ; fully-qualified # 🦂 E1.0 scorpion +1F99F ; fully-qualified # 🦟 E11.0 mosquito +1FAB0 ; fully-qualified # 🪰 E13.0 fly +1FAB1 ; fully-qualified # 🪱 E13.0 worm +1F9A0 ; fully-qualified # 🦠 E11.0 microbe + +# subgroup: plant-flower +1F490 ; fully-qualified # 💐 E0.6 bouquet +1F338 ; fully-qualified # 🌸 E0.6 cherry blossom +1F4AE ; fully-qualified # 💮 E0.6 white flower +1FAB7 ; fully-qualified # 🪷 E14.0 lotus +1F3F5 FE0F ; fully-qualified # 🏵️ E0.7 rosette +1F3F5 ; unqualified # 🏵 E0.7 rosette +1F339 ; fully-qualified # 🌹 E0.6 rose +1F940 ; fully-qualified # 🥀 E3.0 wilted flower +1F33A ; fully-qualified # 🌺 E0.6 hibiscus +1F33B ; fully-qualified # 🌻 E0.6 sunflower +1F33C ; fully-qualified # 🌼 E0.6 blossom +1F337 ; fully-qualified # 🌷 E0.6 tulip +1FABB ; fully-qualified # 🪻 E15.0 hyacinth + +# subgroup: plant-other +1F331 ; fully-qualified # 🌱 E0.6 seedling +1FAB4 ; fully-qualified # 🪴 E13.0 potted plant +1F332 ; fully-qualified # 🌲 E1.0 evergreen tree +1F333 ; fully-qualified # 🌳 E1.0 deciduous tree +1F334 ; fully-qualified # 🌴 E0.6 palm tree +1F335 ; fully-qualified # 🌵 E0.6 cactus +1F33E ; fully-qualified # 🌾 E0.6 sheaf of rice +1F33F ; fully-qualified # 🌿 E0.6 herb +2618 FE0F ; fully-qualified # ☘️ E1.0 shamrock +2618 ; unqualified # ☘ E1.0 shamrock +1F340 ; fully-qualified # 🍀 E0.6 four leaf clover +1F341 ; fully-qualified # 🍁 E0.6 maple leaf +1F342 ; fully-qualified # 🍂 E0.6 fallen leaf +1F343 ; fully-qualified # 🍃 E0.6 leaf fluttering in wind +1FAB9 ; fully-qualified # 🪹 E14.0 empty nest +1FABA ; fully-qualified # 🪺 E14.0 nest with eggs +1F344 ; fully-qualified # 🍄 E0.6 mushroom + +# Animals & Nature subtotal: 159 +# Animals & Nature subtotal: 159 w/o modifiers + +# group: Food & Drink + +# subgroup: food-fruit +1F347 ; fully-qualified # 🍇 E0.6 grapes +1F348 ; fully-qualified # 🍈 E0.6 melon +1F349 ; fully-qualified # 🍉 E0.6 watermelon +1F34A ; fully-qualified # 🍊 E0.6 tangerine +1F34B ; fully-qualified # 🍋 E1.0 lemon +1F34C ; fully-qualified # 🍌 E0.6 banana +1F34D ; fully-qualified # 🍍 E0.6 pineapple +1F96D ; fully-qualified # 🥭 E11.0 mango +1F34E ; fully-qualified # 🍎 E0.6 red apple +1F34F ; fully-qualified # 🍏 E0.6 green apple +1F350 ; fully-qualified # 🍐 E1.0 pear +1F351 ; fully-qualified # 🍑 E0.6 peach +1F352 ; fully-qualified # 🍒 E0.6 cherries +1F353 ; fully-qualified # 🍓 E0.6 strawberry +1FAD0 ; fully-qualified # 🫐 E13.0 blueberries +1F95D ; fully-qualified # 🥝 E3.0 kiwi fruit +1F345 ; fully-qualified # 🍅 E0.6 tomato +1FAD2 ; fully-qualified # 🫒 E13.0 olive +1F965 ; fully-qualified # 🥥 E5.0 coconut + +# subgroup: food-vegetable +1F951 ; fully-qualified # 🥑 E3.0 avocado +1F346 ; fully-qualified # 🍆 E0.6 eggplant +1F954 ; fully-qualified # 🥔 E3.0 potato +1F955 ; fully-qualified # 🥕 E3.0 carrot +1F33D ; fully-qualified # 🌽 E0.6 ear of corn +1F336 FE0F ; fully-qualified # 🌶️ E0.7 hot pepper +1F336 ; unqualified # 🌶 E0.7 hot pepper +1FAD1 ; fully-qualified # 🫑 E13.0 bell pepper +1F952 ; fully-qualified # 🥒 E3.0 cucumber +1F96C ; fully-qualified # 🥬 E11.0 leafy green +1F966 ; fully-qualified # 🥦 E5.0 broccoli +1F9C4 ; fully-qualified # 🧄 E12.0 garlic +1F9C5 ; fully-qualified # 🧅 E12.0 onion +1F95C ; fully-qualified # 🥜 E3.0 peanuts +1FAD8 ; fully-qualified # 🫘 E14.0 beans +1F330 ; fully-qualified # 🌰 E0.6 chestnut +1FADA ; fully-qualified # 🫚 E15.0 ginger root +1FADB ; fully-qualified # 🫛 E15.0 pea pod + +# subgroup: food-prepared +1F35E ; fully-qualified # 🍞 E0.6 bread +1F950 ; fully-qualified # 🥐 E3.0 croissant +1F956 ; fully-qualified # 🥖 E3.0 baguette bread +1FAD3 ; fully-qualified # 🫓 E13.0 flatbread +1F968 ; fully-qualified # 🥨 E5.0 pretzel +1F96F ; fully-qualified # 🥯 E11.0 bagel +1F95E ; fully-qualified # 🥞 E3.0 pancakes +1F9C7 ; fully-qualified # 🧇 E12.0 waffle +1F9C0 ; fully-qualified # 🧀 E1.0 cheese wedge +1F356 ; fully-qualified # 🍖 E0.6 meat on bone +1F357 ; fully-qualified # 🍗 E0.6 poultry leg +1F969 ; fully-qualified # 🥩 E5.0 cut of meat +1F953 ; fully-qualified # 🥓 E3.0 bacon +1F354 ; fully-qualified # 🍔 E0.6 hamburger +1F35F ; fully-qualified # 🍟 E0.6 french fries +1F355 ; fully-qualified # 🍕 E0.6 pizza +1F32D ; fully-qualified # 🌭 E1.0 hot dog +1F96A ; fully-qualified # 🥪 E5.0 sandwich +1F32E ; fully-qualified # 🌮 E1.0 taco +1F32F ; fully-qualified # 🌯 E1.0 burrito +1FAD4 ; fully-qualified # 🫔 E13.0 tamale +1F959 ; fully-qualified # 🥙 E3.0 stuffed flatbread +1F9C6 ; fully-qualified # 🧆 E12.0 falafel +1F95A ; fully-qualified # 🥚 E3.0 egg +1F373 ; fully-qualified # 🍳 E0.6 cooking +1F958 ; fully-qualified # 🥘 E3.0 shallow pan of food +1F372 ; fully-qualified # 🍲 E0.6 pot of food +1FAD5 ; fully-qualified # 🫕 E13.0 fondue +1F963 ; fully-qualified # 🥣 E5.0 bowl with spoon +1F957 ; fully-qualified # 🥗 E3.0 green salad +1F37F ; fully-qualified # 🍿 E1.0 popcorn +1F9C8 ; fully-qualified # 🧈 E12.0 butter +1F9C2 ; fully-qualified # 🧂 E11.0 salt +1F96B ; fully-qualified # 🥫 E5.0 canned food + +# subgroup: food-asian +1F371 ; fully-qualified # 🍱 E0.6 bento box +1F358 ; fully-qualified # 🍘 E0.6 rice cracker +1F359 ; fully-qualified # 🍙 E0.6 rice ball +1F35A ; fully-qualified # 🍚 E0.6 cooked rice +1F35B ; fully-qualified # 🍛 E0.6 curry rice +1F35C ; fully-qualified # 🍜 E0.6 steaming bowl +1F35D ; fully-qualified # 🍝 E0.6 spaghetti +1F360 ; fully-qualified # 🍠 E0.6 roasted sweet potato +1F362 ; fully-qualified # 🍢 E0.6 oden +1F363 ; fully-qualified # 🍣 E0.6 sushi +1F364 ; fully-qualified # 🍤 E0.6 fried shrimp +1F365 ; fully-qualified # 🍥 E0.6 fish cake with swirl +1F96E ; fully-qualified # 🥮 E11.0 moon cake +1F361 ; fully-qualified # 🍡 E0.6 dango +1F95F ; fully-qualified # 🥟 E5.0 dumpling +1F960 ; fully-qualified # 🥠 E5.0 fortune cookie +1F961 ; fully-qualified # 🥡 E5.0 takeout box + +# subgroup: food-marine +1F980 ; fully-qualified # 🦀 E1.0 crab +1F99E ; fully-qualified # 🦞 E11.0 lobster +1F990 ; fully-qualified # 🦐 E3.0 shrimp +1F991 ; fully-qualified # 🦑 E3.0 squid +1F9AA ; fully-qualified # 🦪 E12.0 oyster + +# subgroup: food-sweet +1F366 ; fully-qualified # 🍦 E0.6 soft ice cream +1F367 ; fully-qualified # 🍧 E0.6 shaved ice +1F368 ; fully-qualified # 🍨 E0.6 ice cream +1F369 ; fully-qualified # 🍩 E0.6 doughnut +1F36A ; fully-qualified # 🍪 E0.6 cookie +1F382 ; fully-qualified # 🎂 E0.6 birthday cake +1F370 ; fully-qualified # 🍰 E0.6 shortcake +1F9C1 ; fully-qualified # 🧁 E11.0 cupcake +1F967 ; fully-qualified # 🥧 E5.0 pie +1F36B ; fully-qualified # 🍫 E0.6 chocolate bar +1F36C ; fully-qualified # 🍬 E0.6 candy +1F36D ; fully-qualified # 🍭 E0.6 lollipop +1F36E ; fully-qualified # 🍮 E0.6 custard +1F36F ; fully-qualified # 🍯 E0.6 honey pot + +# subgroup: drink +1F37C ; fully-qualified # 🍼 E1.0 baby bottle +1F95B ; fully-qualified # 🥛 E3.0 glass of milk +2615 ; fully-qualified # ☕ E0.6 hot beverage +1FAD6 ; fully-qualified # 🫖 E13.0 teapot +1F375 ; fully-qualified # 🍵 E0.6 teacup without handle +1F376 ; fully-qualified # 🍶 E0.6 sake +1F37E ; fully-qualified # 🍾 E1.0 bottle with popping cork +1F377 ; fully-qualified # 🍷 E0.6 wine glass +1F378 ; fully-qualified # 🍸 E0.6 cocktail glass +1F379 ; fully-qualified # 🍹 E0.6 tropical drink +1F37A ; fully-qualified # 🍺 E0.6 beer mug +1F37B ; fully-qualified # 🍻 E0.6 clinking beer mugs +1F942 ; fully-qualified # 🥂 E3.0 clinking glasses +1F943 ; fully-qualified # 🥃 E3.0 tumbler glass +1FAD7 ; fully-qualified # 🫗 E14.0 pouring liquid +1F964 ; fully-qualified # 🥤 E5.0 cup with straw +1F9CB ; fully-qualified # 🧋 E13.0 bubble tea +1F9C3 ; fully-qualified # 🧃 E12.0 beverage box +1F9C9 ; fully-qualified # 🧉 E12.0 mate +1F9CA ; fully-qualified # 🧊 E12.0 ice + +# subgroup: dishware +1F962 ; fully-qualified # 🥢 E5.0 chopsticks +1F37D FE0F ; fully-qualified # 🍽️ E0.7 fork and knife with plate +1F37D ; unqualified # 🍽 E0.7 fork and knife with plate +1F374 ; fully-qualified # 🍴 E0.6 fork and knife +1F944 ; fully-qualified # 🥄 E3.0 spoon +1F52A ; fully-qualified # 🔪 E0.6 kitchen knife +1FAD9 ; fully-qualified # 🫙 E14.0 jar +1F3FA ; fully-qualified # 🏺 E1.0 amphora + +# Food & Drink subtotal: 135 +# Food & Drink subtotal: 135 w/o modifiers + +# group: Travel & Places + +# subgroup: place-map +1F30D ; fully-qualified # 🌍 E0.7 globe showing Europe-Africa +1F30E ; fully-qualified # 🌎 E0.7 globe showing Americas +1F30F ; fully-qualified # 🌏 E0.6 globe showing Asia-Australia +1F310 ; fully-qualified # 🌐 E1.0 globe with meridians +1F5FA FE0F ; fully-qualified # 🗺️ E0.7 world map +1F5FA ; unqualified # 🗺 E0.7 world map +1F5FE ; fully-qualified # 🗾 E0.6 map of Japan +1F9ED ; fully-qualified # 🧭 E11.0 compass + +# subgroup: place-geographic +1F3D4 FE0F ; fully-qualified # 🏔️ E0.7 snow-capped mountain +1F3D4 ; unqualified # 🏔 E0.7 snow-capped mountain +26F0 FE0F ; fully-qualified # ⛰️ E0.7 mountain +26F0 ; unqualified # ⛰ E0.7 mountain +1F30B ; fully-qualified # 🌋 E0.6 volcano +1F5FB ; fully-qualified # 🗻 E0.6 mount fuji +1F3D5 FE0F ; fully-qualified # 🏕️ E0.7 camping +1F3D5 ; unqualified # 🏕 E0.7 camping +1F3D6 FE0F ; fully-qualified # 🏖️ E0.7 beach with umbrella +1F3D6 ; unqualified # 🏖 E0.7 beach with umbrella +1F3DC FE0F ; fully-qualified # 🏜️ E0.7 desert +1F3DC ; unqualified # 🏜 E0.7 desert +1F3DD FE0F ; fully-qualified # 🏝️ E0.7 desert island +1F3DD ; unqualified # 🏝 E0.7 desert island +1F3DE FE0F ; fully-qualified # 🏞️ E0.7 national park +1F3DE ; unqualified # 🏞 E0.7 national park + +# subgroup: place-building +1F3DF FE0F ; fully-qualified # 🏟️ E0.7 stadium +1F3DF ; unqualified # 🏟 E0.7 stadium +1F3DB FE0F ; fully-qualified # 🏛️ E0.7 classical building +1F3DB ; unqualified # 🏛 E0.7 classical building +1F3D7 FE0F ; fully-qualified # 🏗️ E0.7 building construction +1F3D7 ; unqualified # 🏗 E0.7 building construction +1F9F1 ; fully-qualified # 🧱 E11.0 brick +1FAA8 ; fully-qualified # 🪨 E13.0 rock +1FAB5 ; fully-qualified # 🪵 E13.0 wood +1F6D6 ; fully-qualified # 🛖 E13.0 hut +1F3D8 FE0F ; fully-qualified # 🏘️ E0.7 houses +1F3D8 ; unqualified # 🏘 E0.7 houses +1F3DA FE0F ; fully-qualified # 🏚️ E0.7 derelict house +1F3DA ; unqualified # 🏚 E0.7 derelict house +1F3E0 ; fully-qualified # 🏠 E0.6 house +1F3E1 ; fully-qualified # 🏡 E0.6 house with garden +1F3E2 ; fully-qualified # 🏢 E0.6 office building +1F3E3 ; fully-qualified # 🏣 E0.6 Japanese post office +1F3E4 ; fully-qualified # 🏤 E1.0 post office +1F3E5 ; fully-qualified # 🏥 E0.6 hospital +1F3E6 ; fully-qualified # 🏦 E0.6 bank +1F3E8 ; fully-qualified # 🏨 E0.6 hotel +1F3E9 ; fully-qualified # 🏩 E0.6 love hotel +1F3EA ; fully-qualified # 🏪 E0.6 convenience store +1F3EB ; fully-qualified # 🏫 E0.6 school +1F3EC ; fully-qualified # 🏬 E0.6 department store +1F3ED ; fully-qualified # 🏭 E0.6 factory +1F3EF ; fully-qualified # 🏯 E0.6 Japanese castle +1F3F0 ; fully-qualified # 🏰 E0.6 castle +1F492 ; fully-qualified # 💒 E0.6 wedding +1F5FC ; fully-qualified # 🗼 E0.6 Tokyo tower +1F5FD ; fully-qualified # 🗽 E0.6 Statue of Liberty + +# subgroup: place-religious +26EA ; fully-qualified # ⛪ E0.6 church +1F54C ; fully-qualified # 🕌 E1.0 mosque +1F6D5 ; fully-qualified # 🛕 E12.0 hindu temple +1F54D ; fully-qualified # 🕍 E1.0 synagogue +26E9 FE0F ; fully-qualified # ⛩️ E0.7 shinto shrine +26E9 ; unqualified # ⛩ E0.7 shinto shrine +1F54B ; fully-qualified # 🕋 E1.0 kaaba + +# subgroup: place-other +26F2 ; fully-qualified # ⛲ E0.6 fountain +26FA ; fully-qualified # ⛺ E0.6 tent +1F301 ; fully-qualified # 🌁 E0.6 foggy +1F303 ; fully-qualified # 🌃 E0.6 night with stars +1F3D9 FE0F ; fully-qualified # 🏙️ E0.7 cityscape +1F3D9 ; unqualified # 🏙 E0.7 cityscape +1F304 ; fully-qualified # 🌄 E0.6 sunrise over mountains +1F305 ; fully-qualified # 🌅 E0.6 sunrise +1F306 ; fully-qualified # 🌆 E0.6 cityscape at dusk +1F307 ; fully-qualified # 🌇 E0.6 sunset +1F309 ; fully-qualified # 🌉 E0.6 bridge at night +2668 FE0F ; fully-qualified # ♨️ E0.6 hot springs +2668 ; unqualified # ♨ E0.6 hot springs +1F3A0 ; fully-qualified # 🎠 E0.6 carousel horse +1F6DD ; fully-qualified # 🛝 E14.0 playground slide +1F3A1 ; fully-qualified # 🎡 E0.6 ferris wheel +1F3A2 ; fully-qualified # 🎢 E0.6 roller coaster +1F488 ; fully-qualified # 💈 E0.6 barber pole +1F3AA ; fully-qualified # 🎪 E0.6 circus tent + +# subgroup: transport-ground +1F682 ; fully-qualified # 🚂 E1.0 locomotive +1F683 ; fully-qualified # 🚃 E0.6 railway car +1F684 ; fully-qualified # 🚄 E0.6 high-speed train +1F685 ; fully-qualified # 🚅 E0.6 bullet train +1F686 ; fully-qualified # 🚆 E1.0 train +1F687 ; fully-qualified # 🚇 E0.6 metro +1F688 ; fully-qualified # 🚈 E1.0 light rail +1F689 ; fully-qualified # 🚉 E0.6 station +1F68A ; fully-qualified # 🚊 E1.0 tram +1F69D ; fully-qualified # 🚝 E1.0 monorail +1F69E ; fully-qualified # 🚞 E1.0 mountain railway +1F68B ; fully-qualified # 🚋 E1.0 tram car +1F68C ; fully-qualified # 🚌 E0.6 bus +1F68D ; fully-qualified # 🚍 E0.7 oncoming bus +1F68E ; fully-qualified # 🚎 E1.0 trolleybus +1F690 ; fully-qualified # 🚐 E1.0 minibus +1F691 ; fully-qualified # 🚑 E0.6 ambulance +1F692 ; fully-qualified # 🚒 E0.6 fire engine +1F693 ; fully-qualified # 🚓 E0.6 police car +1F694 ; fully-qualified # 🚔 E0.7 oncoming police car +1F695 ; fully-qualified # 🚕 E0.6 taxi +1F696 ; fully-qualified # 🚖 E1.0 oncoming taxi +1F697 ; fully-qualified # 🚗 E0.6 automobile +1F698 ; fully-qualified # 🚘 E0.7 oncoming automobile +1F699 ; fully-qualified # 🚙 E0.6 sport utility vehicle +1F6FB ; fully-qualified # 🛻 E13.0 pickup truck +1F69A ; fully-qualified # 🚚 E0.6 delivery truck +1F69B ; fully-qualified # 🚛 E1.0 articulated lorry +1F69C ; fully-qualified # 🚜 E1.0 tractor +1F3CE FE0F ; fully-qualified # 🏎️ E0.7 racing car +1F3CE ; unqualified # 🏎 E0.7 racing car +1F3CD FE0F ; fully-qualified # 🏍️ E0.7 motorcycle +1F3CD ; unqualified # 🏍 E0.7 motorcycle +1F6F5 ; fully-qualified # 🛵 E3.0 motor scooter +1F9BD ; fully-qualified # 🦽 E12.0 manual wheelchair +1F9BC ; fully-qualified # 🦼 E12.0 motorized wheelchair +1F6FA ; fully-qualified # 🛺 E12.0 auto rickshaw +1F6B2 ; fully-qualified # 🚲 E0.6 bicycle +1F6F4 ; fully-qualified # 🛴 E3.0 kick scooter +1F6F9 ; fully-qualified # 🛹 E11.0 skateboard +1F6FC ; fully-qualified # 🛼 E13.0 roller skate +1F68F ; fully-qualified # 🚏 E0.6 bus stop +1F6E3 FE0F ; fully-qualified # 🛣️ E0.7 motorway +1F6E3 ; unqualified # 🛣 E0.7 motorway +1F6E4 FE0F ; fully-qualified # 🛤️ E0.7 railway track +1F6E4 ; unqualified # 🛤 E0.7 railway track +1F6E2 FE0F ; fully-qualified # 🛢️ E0.7 oil drum +1F6E2 ; unqualified # 🛢 E0.7 oil drum +26FD ; fully-qualified # ⛽ E0.6 fuel pump +1F6DE ; fully-qualified # 🛞 E14.0 wheel +1F6A8 ; fully-qualified # 🚨 E0.6 police car light +1F6A5 ; fully-qualified # 🚥 E0.6 horizontal traffic light +1F6A6 ; fully-qualified # 🚦 E1.0 vertical traffic light +1F6D1 ; fully-qualified # 🛑 E3.0 stop sign +1F6A7 ; fully-qualified # 🚧 E0.6 construction + +# subgroup: transport-water +2693 ; fully-qualified # ⚓ E0.6 anchor +1F6DF ; fully-qualified # 🛟 E14.0 ring buoy +26F5 ; fully-qualified # ⛵ E0.6 sailboat +1F6F6 ; fully-qualified # 🛶 E3.0 canoe +1F6A4 ; fully-qualified # 🚤 E0.6 speedboat +1F6F3 FE0F ; fully-qualified # 🛳️ E0.7 passenger ship +1F6F3 ; unqualified # 🛳 E0.7 passenger ship +26F4 FE0F ; fully-qualified # ⛴️ E0.7 ferry +26F4 ; unqualified # ⛴ E0.7 ferry +1F6E5 FE0F ; fully-qualified # 🛥️ E0.7 motor boat +1F6E5 ; unqualified # 🛥 E0.7 motor boat +1F6A2 ; fully-qualified # 🚢 E0.6 ship + +# subgroup: transport-air +2708 FE0F ; fully-qualified # ✈️ E0.6 airplane +2708 ; unqualified # ✈ E0.6 airplane +1F6E9 FE0F ; fully-qualified # 🛩️ E0.7 small airplane +1F6E9 ; unqualified # 🛩 E0.7 small airplane +1F6EB ; fully-qualified # 🛫 E1.0 airplane departure +1F6EC ; fully-qualified # 🛬 E1.0 airplane arrival +1FA82 ; fully-qualified # 🪂 E12.0 parachute +1F4BA ; fully-qualified # 💺 E0.6 seat +1F681 ; fully-qualified # 🚁 E1.0 helicopter +1F69F ; fully-qualified # 🚟 E1.0 suspension railway +1F6A0 ; fully-qualified # 🚠 E1.0 mountain cableway +1F6A1 ; fully-qualified # 🚡 E1.0 aerial tramway +1F6F0 FE0F ; fully-qualified # 🛰️ E0.7 satellite +1F6F0 ; unqualified # 🛰 E0.7 satellite +1F680 ; fully-qualified # 🚀 E0.6 rocket +1F6F8 ; fully-qualified # 🛸 E5.0 flying saucer + +# subgroup: hotel +1F6CE FE0F ; fully-qualified # 🛎️ E0.7 bellhop bell +1F6CE ; unqualified # 🛎 E0.7 bellhop bell +1F9F3 ; fully-qualified # 🧳 E11.0 luggage + +# subgroup: time +231B ; fully-qualified # ⌛ E0.6 hourglass done +23F3 ; fully-qualified # ⏳ E0.6 hourglass not done +231A ; fully-qualified # ⌚ E0.6 watch +23F0 ; fully-qualified # ⏰ E0.6 alarm clock +23F1 FE0F ; fully-qualified # ⏱️ E1.0 stopwatch +23F1 ; unqualified # ⏱ E1.0 stopwatch +23F2 FE0F ; fully-qualified # ⏲️ E1.0 timer clock +23F2 ; unqualified # ⏲ E1.0 timer clock +1F570 FE0F ; fully-qualified # 🕰️ E0.7 mantelpiece clock +1F570 ; unqualified # 🕰 E0.7 mantelpiece clock +1F55B ; fully-qualified # 🕛 E0.6 twelve o’clock +1F567 ; fully-qualified # 🕧 E0.7 twelve-thirty +1F550 ; fully-qualified # 🕐 E0.6 one o’clock +1F55C ; fully-qualified # 🕜 E0.7 one-thirty +1F551 ; fully-qualified # 🕑 E0.6 two o’clock +1F55D ; fully-qualified # 🕝 E0.7 two-thirty +1F552 ; fully-qualified # 🕒 E0.6 three o’clock +1F55E ; fully-qualified # 🕞 E0.7 three-thirty +1F553 ; fully-qualified # 🕓 E0.6 four o’clock +1F55F ; fully-qualified # 🕟 E0.7 four-thirty +1F554 ; fully-qualified # 🕔 E0.6 five o’clock +1F560 ; fully-qualified # 🕠 E0.7 five-thirty +1F555 ; fully-qualified # 🕕 E0.6 six o’clock +1F561 ; fully-qualified # 🕡 E0.7 six-thirty +1F556 ; fully-qualified # 🕖 E0.6 seven o’clock +1F562 ; fully-qualified # 🕢 E0.7 seven-thirty +1F557 ; fully-qualified # 🕗 E0.6 eight o’clock +1F563 ; fully-qualified # 🕣 E0.7 eight-thirty +1F558 ; fully-qualified # 🕘 E0.6 nine o’clock +1F564 ; fully-qualified # 🕤 E0.7 nine-thirty +1F559 ; fully-qualified # 🕙 E0.6 ten o’clock +1F565 ; fully-qualified # 🕥 E0.7 ten-thirty +1F55A ; fully-qualified # 🕚 E0.6 eleven o’clock +1F566 ; fully-qualified # 🕦 E0.7 eleven-thirty + +# subgroup: sky & weather +1F311 ; fully-qualified # 🌑 E0.6 new moon +1F312 ; fully-qualified # 🌒 E1.0 waxing crescent moon +1F313 ; fully-qualified # 🌓 E0.6 first quarter moon +1F314 ; fully-qualified # 🌔 E0.6 waxing gibbous moon +1F315 ; fully-qualified # 🌕 E0.6 full moon +1F316 ; fully-qualified # 🌖 E1.0 waning gibbous moon +1F317 ; fully-qualified # 🌗 E1.0 last quarter moon +1F318 ; fully-qualified # 🌘 E1.0 waning crescent moon +1F319 ; fully-qualified # 🌙 E0.6 crescent moon +1F31A ; fully-qualified # 🌚 E1.0 new moon face +1F31B ; fully-qualified # 🌛 E0.6 first quarter moon face +1F31C ; fully-qualified # 🌜 E0.7 last quarter moon face +1F321 FE0F ; fully-qualified # 🌡️ E0.7 thermometer +1F321 ; unqualified # 🌡 E0.7 thermometer +2600 FE0F ; fully-qualified # ☀️ E0.6 sun +2600 ; unqualified # ☀ E0.6 sun +1F31D ; fully-qualified # 🌝 E1.0 full moon face +1F31E ; fully-qualified # 🌞 E1.0 sun with face +1FA90 ; fully-qualified # 🪐 E12.0 ringed planet +2B50 ; fully-qualified # ⭐ E0.6 star +1F31F ; fully-qualified # 🌟 E0.6 glowing star +1F320 ; fully-qualified # 🌠 E0.6 shooting star +1F30C ; fully-qualified # 🌌 E0.6 milky way +2601 FE0F ; fully-qualified # ☁️ E0.6 cloud +2601 ; unqualified # ☁ E0.6 cloud +26C5 ; fully-qualified # ⛅ E0.6 sun behind cloud +26C8 FE0F ; fully-qualified # ⛈️ E0.7 cloud with lightning and rain +26C8 ; unqualified # ⛈ E0.7 cloud with lightning and rain +1F324 FE0F ; fully-qualified # 🌤️ E0.7 sun behind small cloud +1F324 ; unqualified # 🌤 E0.7 sun behind small cloud +1F325 FE0F ; fully-qualified # 🌥️ E0.7 sun behind large cloud +1F325 ; unqualified # 🌥 E0.7 sun behind large cloud +1F326 FE0F ; fully-qualified # 🌦️ E0.7 sun behind rain cloud +1F326 ; unqualified # 🌦 E0.7 sun behind rain cloud +1F327 FE0F ; fully-qualified # 🌧️ E0.7 cloud with rain +1F327 ; unqualified # 🌧 E0.7 cloud with rain +1F328 FE0F ; fully-qualified # 🌨️ E0.7 cloud with snow +1F328 ; unqualified # 🌨 E0.7 cloud with snow +1F329 FE0F ; fully-qualified # 🌩️ E0.7 cloud with lightning +1F329 ; unqualified # 🌩 E0.7 cloud with lightning +1F32A FE0F ; fully-qualified # 🌪️ E0.7 tornado +1F32A ; unqualified # 🌪 E0.7 tornado +1F32B FE0F ; fully-qualified # 🌫️ E0.7 fog +1F32B ; unqualified # 🌫 E0.7 fog +1F32C FE0F ; fully-qualified # 🌬️ E0.7 wind face +1F32C ; unqualified # 🌬 E0.7 wind face +1F300 ; fully-qualified # 🌀 E0.6 cyclone +1F308 ; fully-qualified # 🌈 E0.6 rainbow +1F302 ; fully-qualified # 🌂 E0.6 closed umbrella +2602 FE0F ; fully-qualified # ☂️ E0.7 umbrella +2602 ; unqualified # ☂ E0.7 umbrella +2614 ; fully-qualified # ☔ E0.6 umbrella with rain drops +26F1 FE0F ; fully-qualified # ⛱️ E0.7 umbrella on ground +26F1 ; unqualified # ⛱ E0.7 umbrella on ground +26A1 ; fully-qualified # ⚡ E0.6 high voltage +2744 FE0F ; fully-qualified # ❄️ E0.6 snowflake +2744 ; unqualified # ❄ E0.6 snowflake +2603 FE0F ; fully-qualified # ☃️ E0.7 snowman +2603 ; unqualified # ☃ E0.7 snowman +26C4 ; fully-qualified # ⛄ E0.6 snowman without snow +2604 FE0F ; fully-qualified # ☄️ E1.0 comet +2604 ; unqualified # ☄ E1.0 comet +1F525 ; fully-qualified # 🔥 E0.6 fire +1F4A7 ; fully-qualified # 💧 E0.6 droplet +1F30A ; fully-qualified # 🌊 E0.6 water wave + +# Travel & Places subtotal: 267 +# Travel & Places subtotal: 267 w/o modifiers + +# group: Activities + +# subgroup: event +1F383 ; fully-qualified # 🎃 E0.6 jack-o-lantern +1F384 ; fully-qualified # 🎄 E0.6 Christmas tree +1F386 ; fully-qualified # 🎆 E0.6 fireworks +1F387 ; fully-qualified # 🎇 E0.6 sparkler +1F9E8 ; fully-qualified # 🧨 E11.0 firecracker +2728 ; fully-qualified # ✨ E0.6 sparkles +1F388 ; fully-qualified # 🎈 E0.6 balloon +1F389 ; fully-qualified # 🎉 E0.6 party popper +1F38A ; fully-qualified # 🎊 E0.6 confetti ball +1F38B ; fully-qualified # 🎋 E0.6 tanabata tree +1F38D ; fully-qualified # 🎍 E0.6 pine decoration +1F38E ; fully-qualified # 🎎 E0.6 Japanese dolls +1F38F ; fully-qualified # 🎏 E0.6 carp streamer +1F390 ; fully-qualified # 🎐 E0.6 wind chime +1F391 ; fully-qualified # 🎑 E0.6 moon viewing ceremony +1F9E7 ; fully-qualified # 🧧 E11.0 red envelope +1F380 ; fully-qualified # 🎀 E0.6 ribbon +1F381 ; fully-qualified # 🎁 E0.6 wrapped gift +1F397 FE0F ; fully-qualified # 🎗️ E0.7 reminder ribbon +1F397 ; unqualified # 🎗 E0.7 reminder ribbon +1F39F FE0F ; fully-qualified # 🎟️ E0.7 admission tickets +1F39F ; unqualified # 🎟 E0.7 admission tickets +1F3AB ; fully-qualified # 🎫 E0.6 ticket + +# subgroup: award-medal +1F396 FE0F ; fully-qualified # 🎖️ E0.7 military medal +1F396 ; unqualified # 🎖 E0.7 military medal +1F3C6 ; fully-qualified # 🏆 E0.6 trophy +1F3C5 ; fully-qualified # 🏅 E1.0 sports medal +1F947 ; fully-qualified # 🥇 E3.0 1st place medal +1F948 ; fully-qualified # 🥈 E3.0 2nd place medal +1F949 ; fully-qualified # 🥉 E3.0 3rd place medal + +# subgroup: sport +26BD ; fully-qualified # ⚽ E0.6 soccer ball +26BE ; fully-qualified # ⚾ E0.6 baseball +1F94E ; fully-qualified # 🥎 E11.0 softball +1F3C0 ; fully-qualified # 🏀 E0.6 basketball +1F3D0 ; fully-qualified # 🏐 E1.0 volleyball +1F3C8 ; fully-qualified # 🏈 E0.6 american football +1F3C9 ; fully-qualified # 🏉 E1.0 rugby football +1F3BE ; fully-qualified # 🎾 E0.6 tennis +1F94F ; fully-qualified # 🥏 E11.0 flying disc +1F3B3 ; fully-qualified # 🎳 E0.6 bowling +1F3CF ; fully-qualified # 🏏 E1.0 cricket game +1F3D1 ; fully-qualified # 🏑 E1.0 field hockey +1F3D2 ; fully-qualified # 🏒 E1.0 ice hockey +1F94D ; fully-qualified # 🥍 E11.0 lacrosse +1F3D3 ; fully-qualified # 🏓 E1.0 ping pong +1F3F8 ; fully-qualified # 🏸 E1.0 badminton +1F94A ; fully-qualified # 🥊 E3.0 boxing glove +1F94B ; fully-qualified # 🥋 E3.0 martial arts uniform +1F945 ; fully-qualified # 🥅 E3.0 goal net +26F3 ; fully-qualified # ⛳ E0.6 flag in hole +26F8 FE0F ; fully-qualified # ⛸️ E0.7 ice skate +26F8 ; unqualified # ⛸ E0.7 ice skate +1F3A3 ; fully-qualified # 🎣 E0.6 fishing pole +1F93F ; fully-qualified # 🤿 E12.0 diving mask +1F3BD ; fully-qualified # 🎽 E0.6 running shirt +1F3BF ; fully-qualified # 🎿 E0.6 skis +1F6F7 ; fully-qualified # 🛷 E5.0 sled +1F94C ; fully-qualified # 🥌 E5.0 curling stone + +# subgroup: game +1F3AF ; fully-qualified # 🎯 E0.6 bullseye +1FA80 ; fully-qualified # 🪀 E12.0 yo-yo +1FA81 ; fully-qualified # 🪁 E12.0 kite +1F52B ; fully-qualified # 🔫 E0.6 water pistol +1F3B1 ; fully-qualified # 🎱 E0.6 pool 8 ball +1F52E ; fully-qualified # 🔮 E0.6 crystal ball +1FA84 ; fully-qualified # 🪄 E13.0 magic wand +1F3AE ; fully-qualified # 🎮 E0.6 video game +1F579 FE0F ; fully-qualified # 🕹️ E0.7 joystick +1F579 ; unqualified # 🕹 E0.7 joystick +1F3B0 ; fully-qualified # 🎰 E0.6 slot machine +1F3B2 ; fully-qualified # 🎲 E0.6 game die +1F9E9 ; fully-qualified # 🧩 E11.0 puzzle piece +1F9F8 ; fully-qualified # 🧸 E11.0 teddy bear +1FA85 ; fully-qualified # 🪅 E13.0 piñata +1FAA9 ; fully-qualified # 🪩 E14.0 mirror ball +1FA86 ; fully-qualified # 🪆 E13.0 nesting dolls +2660 FE0F ; fully-qualified # ♠️ E0.6 spade suit +2660 ; unqualified # ♠ E0.6 spade suit +2665 FE0F ; fully-qualified # ♥️ E0.6 heart suit +2665 ; unqualified # ♥ E0.6 heart suit +2666 FE0F ; fully-qualified # ♦️ E0.6 diamond suit +2666 ; unqualified # ♦ E0.6 diamond suit +2663 FE0F ; fully-qualified # ♣️ E0.6 club suit +2663 ; unqualified # ♣ E0.6 club suit +265F FE0F ; fully-qualified # ♟️ E11.0 chess pawn +265F ; unqualified # ♟ E11.0 chess pawn +1F0CF ; fully-qualified # 🃏 E0.6 joker +1F004 ; fully-qualified # 🀄 E0.6 mahjong red dragon +1F3B4 ; fully-qualified # 🎴 E0.6 flower playing cards + +# subgroup: arts & crafts +1F3AD ; fully-qualified # 🎭 E0.6 performing arts +1F5BC FE0F ; fully-qualified # 🖼️ E0.7 framed picture +1F5BC ; unqualified # 🖼 E0.7 framed picture +1F3A8 ; fully-qualified # 🎨 E0.6 artist palette +1F9F5 ; fully-qualified # 🧵 E11.0 thread +1FAA1 ; fully-qualified # 🪡 E13.0 sewing needle +1F9F6 ; fully-qualified # 🧶 E11.0 yarn +1FAA2 ; fully-qualified # 🪢 E13.0 knot + +# Activities subtotal: 96 +# Activities subtotal: 96 w/o modifiers + +# group: Objects + +# subgroup: clothing +1F453 ; fully-qualified # 👓 E0.6 glasses +1F576 FE0F ; fully-qualified # 🕶️ E0.7 sunglasses +1F576 ; unqualified # 🕶 E0.7 sunglasses +1F97D ; fully-qualified # 🥽 E11.0 goggles +1F97C ; fully-qualified # 🥼 E11.0 lab coat +1F9BA ; fully-qualified # 🦺 E12.0 safety vest +1F454 ; fully-qualified # 👔 E0.6 necktie +1F455 ; fully-qualified # 👕 E0.6 t-shirt +1F456 ; fully-qualified # 👖 E0.6 jeans +1F9E3 ; fully-qualified # 🧣 E5.0 scarf +1F9E4 ; fully-qualified # 🧤 E5.0 gloves +1F9E5 ; fully-qualified # 🧥 E5.0 coat +1F9E6 ; fully-qualified # 🧦 E5.0 socks +1F457 ; fully-qualified # 👗 E0.6 dress +1F458 ; fully-qualified # 👘 E0.6 kimono +1F97B ; fully-qualified # 🥻 E12.0 sari +1FA71 ; fully-qualified # 🩱 E12.0 one-piece swimsuit +1FA72 ; fully-qualified # 🩲 E12.0 briefs +1FA73 ; fully-qualified # 🩳 E12.0 shorts +1F459 ; fully-qualified # 👙 E0.6 bikini +1F45A ; fully-qualified # 👚 E0.6 woman’s clothes +1FAAD ; fully-qualified # 🪭 E15.0 folding hand fan +1F45B ; fully-qualified # 👛 E0.6 purse +1F45C ; fully-qualified # 👜 E0.6 handbag +1F45D ; fully-qualified # 👝 E0.6 clutch bag +1F6CD FE0F ; fully-qualified # 🛍️ E0.7 shopping bags +1F6CD ; unqualified # 🛍 E0.7 shopping bags +1F392 ; fully-qualified # 🎒 E0.6 backpack +1FA74 ; fully-qualified # 🩴 E13.0 thong sandal +1F45E ; fully-qualified # 👞 E0.6 man’s shoe +1F45F ; fully-qualified # 👟 E0.6 running shoe +1F97E ; fully-qualified # 🥾 E11.0 hiking boot +1F97F ; fully-qualified # 🥿 E11.0 flat shoe +1F460 ; fully-qualified # 👠 E0.6 high-heeled shoe +1F461 ; fully-qualified # 👡 E0.6 woman’s sandal +1FA70 ; fully-qualified # 🩰 E12.0 ballet shoes +1F462 ; fully-qualified # 👢 E0.6 woman’s boot +1FAAE ; fully-qualified # 🪮 E15.0 hair pick +1F451 ; fully-qualified # 👑 E0.6 crown +1F452 ; fully-qualified # 👒 E0.6 woman’s hat +1F3A9 ; fully-qualified # 🎩 E0.6 top hat +1F393 ; fully-qualified # 🎓 E0.6 graduation cap +1F9E2 ; fully-qualified # 🧢 E5.0 billed cap +1FA96 ; fully-qualified # 🪖 E13.0 military helmet +26D1 FE0F ; fully-qualified # ⛑️ E0.7 rescue worker’s helmet +26D1 ; unqualified # ⛑ E0.7 rescue worker’s helmet +1F4FF ; fully-qualified # 📿 E1.0 prayer beads +1F484 ; fully-qualified # 💄 E0.6 lipstick +1F48D ; fully-qualified # 💍 E0.6 ring +1F48E ; fully-qualified # 💎 E0.6 gem stone + +# subgroup: sound +1F507 ; fully-qualified # 🔇 E1.0 muted speaker +1F508 ; fully-qualified # 🔈 E0.7 speaker low volume +1F509 ; fully-qualified # 🔉 E1.0 speaker medium volume +1F50A ; fully-qualified # 🔊 E0.6 speaker high volume +1F4E2 ; fully-qualified # 📢 E0.6 loudspeaker +1F4E3 ; fully-qualified # 📣 E0.6 megaphone +1F4EF ; fully-qualified # 📯 E1.0 postal horn +1F514 ; fully-qualified # 🔔 E0.6 bell +1F515 ; fully-qualified # 🔕 E1.0 bell with slash + +# subgroup: music +1F3BC ; fully-qualified # 🎼 E0.6 musical score +1F3B5 ; fully-qualified # 🎵 E0.6 musical note +1F3B6 ; fully-qualified # 🎶 E0.6 musical notes +1F399 FE0F ; fully-qualified # 🎙️ E0.7 studio microphone +1F399 ; unqualified # 🎙 E0.7 studio microphone +1F39A FE0F ; fully-qualified # 🎚️ E0.7 level slider +1F39A ; unqualified # 🎚 E0.7 level slider +1F39B FE0F ; fully-qualified # 🎛️ E0.7 control knobs +1F39B ; unqualified # 🎛 E0.7 control knobs +1F3A4 ; fully-qualified # 🎤 E0.6 microphone +1F3A7 ; fully-qualified # 🎧 E0.6 headphone +1F4FB ; fully-qualified # 📻 E0.6 radio + +# subgroup: musical-instrument +1F3B7 ; fully-qualified # 🎷 E0.6 saxophone +1FA97 ; fully-qualified # 🪗 E13.0 accordion +1F3B8 ; fully-qualified # 🎸 E0.6 guitar +1F3B9 ; fully-qualified # 🎹 E0.6 musical keyboard +1F3BA ; fully-qualified # 🎺 E0.6 trumpet +1F3BB ; fully-qualified # 🎻 E0.6 violin +1FA95 ; fully-qualified # 🪕 E12.0 banjo +1F941 ; fully-qualified # 🥁 E3.0 drum +1FA98 ; fully-qualified # 🪘 E13.0 long drum +1FA87 ; fully-qualified # 🪇 E15.0 maracas +1FA88 ; fully-qualified # 🪈 E15.0 flute + +# subgroup: phone +1F4F1 ; fully-qualified # 📱 E0.6 mobile phone +1F4F2 ; fully-qualified # 📲 E0.6 mobile phone with arrow +260E FE0F ; fully-qualified # ☎️ E0.6 telephone +260E ; unqualified # ☎ E0.6 telephone +1F4DE ; fully-qualified # 📞 E0.6 telephone receiver +1F4DF ; fully-qualified # 📟 E0.6 pager +1F4E0 ; fully-qualified # 📠 E0.6 fax machine + +# subgroup: computer +1F50B ; fully-qualified # 🔋 E0.6 battery +1FAAB ; fully-qualified # 🪫 E14.0 low battery +1F50C ; fully-qualified # 🔌 E0.6 electric plug +1F4BB ; fully-qualified # 💻 E0.6 laptop +1F5A5 FE0F ; fully-qualified # 🖥️ E0.7 desktop computer +1F5A5 ; unqualified # 🖥 E0.7 desktop computer +1F5A8 FE0F ; fully-qualified # 🖨️ E0.7 printer +1F5A8 ; unqualified # 🖨 E0.7 printer +2328 FE0F ; fully-qualified # ⌨️ E1.0 keyboard +2328 ; unqualified # ⌨ E1.0 keyboard +1F5B1 FE0F ; fully-qualified # 🖱️ E0.7 computer mouse +1F5B1 ; unqualified # 🖱 E0.7 computer mouse +1F5B2 FE0F ; fully-qualified # 🖲️ E0.7 trackball +1F5B2 ; unqualified # 🖲 E0.7 trackball +1F4BD ; fully-qualified # 💽 E0.6 computer disk +1F4BE ; fully-qualified # 💾 E0.6 floppy disk +1F4BF ; fully-qualified # 💿 E0.6 optical disk +1F4C0 ; fully-qualified # 📀 E0.6 dvd +1F9EE ; fully-qualified # 🧮 E11.0 abacus + +# subgroup: light & video +1F3A5 ; fully-qualified # 🎥 E0.6 movie camera +1F39E FE0F ; fully-qualified # 🎞️ E0.7 film frames +1F39E ; unqualified # 🎞 E0.7 film frames +1F4FD FE0F ; fully-qualified # 📽️ E0.7 film projector +1F4FD ; unqualified # 📽 E0.7 film projector +1F3AC ; fully-qualified # 🎬 E0.6 clapper board +1F4FA ; fully-qualified # 📺 E0.6 television +1F4F7 ; fully-qualified # 📷 E0.6 camera +1F4F8 ; fully-qualified # 📸 E1.0 camera with flash +1F4F9 ; fully-qualified # 📹 E0.6 video camera +1F4FC ; fully-qualified # 📼 E0.6 videocassette +1F50D ; fully-qualified # 🔍 E0.6 magnifying glass tilted left +1F50E ; fully-qualified # 🔎 E0.6 magnifying glass tilted right +1F56F FE0F ; fully-qualified # 🕯️ E0.7 candle +1F56F ; unqualified # 🕯 E0.7 candle +1F4A1 ; fully-qualified # 💡 E0.6 light bulb +1F526 ; fully-qualified # 🔦 E0.6 flashlight +1F3EE ; fully-qualified # 🏮 E0.6 red paper lantern +1FA94 ; fully-qualified # 🪔 E12.0 diya lamp + +# subgroup: book-paper +1F4D4 ; fully-qualified # 📔 E0.6 notebook with decorative cover +1F4D5 ; fully-qualified # 📕 E0.6 closed book +1F4D6 ; fully-qualified # 📖 E0.6 open book +1F4D7 ; fully-qualified # 📗 E0.6 green book +1F4D8 ; fully-qualified # 📘 E0.6 blue book +1F4D9 ; fully-qualified # 📙 E0.6 orange book +1F4DA ; fully-qualified # 📚 E0.6 books +1F4D3 ; fully-qualified # 📓 E0.6 notebook +1F4D2 ; fully-qualified # 📒 E0.6 ledger +1F4C3 ; fully-qualified # 📃 E0.6 page with curl +1F4DC ; fully-qualified # 📜 E0.6 scroll +1F4C4 ; fully-qualified # 📄 E0.6 page facing up +1F4F0 ; fully-qualified # 📰 E0.6 newspaper +1F5DE FE0F ; fully-qualified # 🗞️ E0.7 rolled-up newspaper +1F5DE ; unqualified # 🗞 E0.7 rolled-up newspaper +1F4D1 ; fully-qualified # 📑 E0.6 bookmark tabs +1F516 ; fully-qualified # 🔖 E0.6 bookmark +1F3F7 FE0F ; fully-qualified # 🏷️ E0.7 label +1F3F7 ; unqualified # 🏷 E0.7 label + +# subgroup: money +1F4B0 ; fully-qualified # 💰 E0.6 money bag +1FA99 ; fully-qualified # 🪙 E13.0 coin +1F4B4 ; fully-qualified # 💴 E0.6 yen banknote +1F4B5 ; fully-qualified # 💵 E0.6 dollar banknote +1F4B6 ; fully-qualified # 💶 E1.0 euro banknote +1F4B7 ; fully-qualified # 💷 E1.0 pound banknote +1F4B8 ; fully-qualified # 💸 E0.6 money with wings +1F4B3 ; fully-qualified # 💳 E0.6 credit card +1F9FE ; fully-qualified # 🧾 E11.0 receipt +1F4B9 ; fully-qualified # 💹 E0.6 chart increasing with yen + +# subgroup: mail +2709 FE0F ; fully-qualified # ✉️ E0.6 envelope +2709 ; unqualified # ✉ E0.6 envelope +1F4E7 ; fully-qualified # 📧 E0.6 e-mail +1F4E8 ; fully-qualified # 📨 E0.6 incoming envelope +1F4E9 ; fully-qualified # 📩 E0.6 envelope with arrow +1F4E4 ; fully-qualified # 📤 E0.6 outbox tray +1F4E5 ; fully-qualified # 📥 E0.6 inbox tray +1F4E6 ; fully-qualified # 📦 E0.6 package +1F4EB ; fully-qualified # 📫 E0.6 closed mailbox with raised flag +1F4EA ; fully-qualified # 📪 E0.6 closed mailbox with lowered flag +1F4EC ; fully-qualified # 📬 E0.7 open mailbox with raised flag +1F4ED ; fully-qualified # 📭 E0.7 open mailbox with lowered flag +1F4EE ; fully-qualified # 📮 E0.6 postbox +1F5F3 FE0F ; fully-qualified # 🗳️ E0.7 ballot box with ballot +1F5F3 ; unqualified # 🗳 E0.7 ballot box with ballot + +# subgroup: writing +270F FE0F ; fully-qualified # ✏️ E0.6 pencil +270F ; unqualified # ✏ E0.6 pencil +2712 FE0F ; fully-qualified # ✒️ E0.6 black nib +2712 ; unqualified # ✒ E0.6 black nib +1F58B FE0F ; fully-qualified # 🖋️ E0.7 fountain pen +1F58B ; unqualified # 🖋 E0.7 fountain pen +1F58A FE0F ; fully-qualified # 🖊️ E0.7 pen +1F58A ; unqualified # 🖊 E0.7 pen +1F58C FE0F ; fully-qualified # 🖌️ E0.7 paintbrush +1F58C ; unqualified # 🖌 E0.7 paintbrush +1F58D FE0F ; fully-qualified # 🖍️ E0.7 crayon +1F58D ; unqualified # 🖍 E0.7 crayon +1F4DD ; fully-qualified # 📝 E0.6 memo + +# subgroup: office +1F4BC ; fully-qualified # 💼 E0.6 briefcase +1F4C1 ; fully-qualified # 📁 E0.6 file folder +1F4C2 ; fully-qualified # 📂 E0.6 open file folder +1F5C2 FE0F ; fully-qualified # 🗂️ E0.7 card index dividers +1F5C2 ; unqualified # 🗂 E0.7 card index dividers +1F4C5 ; fully-qualified # 📅 E0.6 calendar +1F4C6 ; fully-qualified # 📆 E0.6 tear-off calendar +1F5D2 FE0F ; fully-qualified # 🗒️ E0.7 spiral notepad +1F5D2 ; unqualified # 🗒 E0.7 spiral notepad +1F5D3 FE0F ; fully-qualified # 🗓️ E0.7 spiral calendar +1F5D3 ; unqualified # 🗓 E0.7 spiral calendar +1F4C7 ; fully-qualified # 📇 E0.6 card index +1F4C8 ; fully-qualified # 📈 E0.6 chart increasing +1F4C9 ; fully-qualified # 📉 E0.6 chart decreasing +1F4CA ; fully-qualified # 📊 E0.6 bar chart +1F4CB ; fully-qualified # 📋 E0.6 clipboard +1F4CC ; fully-qualified # 📌 E0.6 pushpin +1F4CD ; fully-qualified # 📍 E0.6 round pushpin +1F4CE ; fully-qualified # 📎 E0.6 paperclip +1F587 FE0F ; fully-qualified # 🖇️ E0.7 linked paperclips +1F587 ; unqualified # 🖇 E0.7 linked paperclips +1F4CF ; fully-qualified # 📏 E0.6 straight ruler +1F4D0 ; fully-qualified # 📐 E0.6 triangular ruler +2702 FE0F ; fully-qualified # ✂️ E0.6 scissors +2702 ; unqualified # ✂ E0.6 scissors +1F5C3 FE0F ; fully-qualified # 🗃️ E0.7 card file box +1F5C3 ; unqualified # 🗃 E0.7 card file box +1F5C4 FE0F ; fully-qualified # 🗄️ E0.7 file cabinet +1F5C4 ; unqualified # 🗄 E0.7 file cabinet +1F5D1 FE0F ; fully-qualified # 🗑️ E0.7 wastebasket +1F5D1 ; unqualified # 🗑 E0.7 wastebasket + +# subgroup: lock +1F512 ; fully-qualified # 🔒 E0.6 locked +1F513 ; fully-qualified # 🔓 E0.6 unlocked +1F50F ; fully-qualified # 🔏 E0.6 locked with pen +1F510 ; fully-qualified # 🔐 E0.6 locked with key +1F511 ; fully-qualified # 🔑 E0.6 key +1F5DD FE0F ; fully-qualified # 🗝️ E0.7 old key +1F5DD ; unqualified # 🗝 E0.7 old key + +# subgroup: tool +1F528 ; fully-qualified # 🔨 E0.6 hammer +1FA93 ; fully-qualified # 🪓 E12.0 axe +26CF FE0F ; fully-qualified # ⛏️ E0.7 pick +26CF ; unqualified # ⛏ E0.7 pick +2692 FE0F ; fully-qualified # ⚒️ E1.0 hammer and pick +2692 ; unqualified # ⚒ E1.0 hammer and pick +1F6E0 FE0F ; fully-qualified # 🛠️ E0.7 hammer and wrench +1F6E0 ; unqualified # 🛠 E0.7 hammer and wrench +1F5E1 FE0F ; fully-qualified # 🗡️ E0.7 dagger +1F5E1 ; unqualified # 🗡 E0.7 dagger +2694 FE0F ; fully-qualified # ⚔️ E1.0 crossed swords +2694 ; unqualified # ⚔ E1.0 crossed swords +1F4A3 ; fully-qualified # 💣 E0.6 bomb +1FA83 ; fully-qualified # 🪃 E13.0 boomerang +1F3F9 ; fully-qualified # 🏹 E1.0 bow and arrow +1F6E1 FE0F ; fully-qualified # 🛡️ E0.7 shield +1F6E1 ; unqualified # 🛡 E0.7 shield +1FA9A ; fully-qualified # 🪚 E13.0 carpentry saw +1F527 ; fully-qualified # 🔧 E0.6 wrench +1FA9B ; fully-qualified # 🪛 E13.0 screwdriver +1F529 ; fully-qualified # 🔩 E0.6 nut and bolt +2699 FE0F ; fully-qualified # ⚙️ E1.0 gear +2699 ; unqualified # ⚙ E1.0 gear +1F5DC FE0F ; fully-qualified # 🗜️ E0.7 clamp +1F5DC ; unqualified # 🗜 E0.7 clamp +2696 FE0F ; fully-qualified # ⚖️ E1.0 balance scale +2696 ; unqualified # ⚖ E1.0 balance scale +1F9AF ; fully-qualified # 🦯 E12.0 white cane +1F517 ; fully-qualified # 🔗 E0.6 link +26D3 FE0F ; fully-qualified # ⛓️ E0.7 chains +26D3 ; unqualified # ⛓ E0.7 chains +1FA9D ; fully-qualified # 🪝 E13.0 hook +1F9F0 ; fully-qualified # 🧰 E11.0 toolbox +1F9F2 ; fully-qualified # 🧲 E11.0 magnet +1FA9C ; fully-qualified # 🪜 E13.0 ladder + +# subgroup: science +2697 FE0F ; fully-qualified # ⚗️ E1.0 alembic +2697 ; unqualified # ⚗ E1.0 alembic +1F9EA ; fully-qualified # 🧪 E11.0 test tube +1F9EB ; fully-qualified # 🧫 E11.0 petri dish +1F9EC ; fully-qualified # 🧬 E11.0 dna +1F52C ; fully-qualified # 🔬 E1.0 microscope +1F52D ; fully-qualified # 🔭 E1.0 telescope +1F4E1 ; fully-qualified # 📡 E0.6 satellite antenna + +# subgroup: medical +1F489 ; fully-qualified # 💉 E0.6 syringe +1FA78 ; fully-qualified # 🩸 E12.0 drop of blood +1F48A ; fully-qualified # 💊 E0.6 pill +1FA79 ; fully-qualified # 🩹 E12.0 adhesive bandage +1FA7C ; fully-qualified # 🩼 E14.0 crutch +1FA7A ; fully-qualified # 🩺 E12.0 stethoscope +1FA7B ; fully-qualified # 🩻 E14.0 x-ray + +# subgroup: household +1F6AA ; fully-qualified # 🚪 E0.6 door +1F6D7 ; fully-qualified # 🛗 E13.0 elevator +1FA9E ; fully-qualified # 🪞 E13.0 mirror +1FA9F ; fully-qualified # 🪟 E13.0 window +1F6CF FE0F ; fully-qualified # 🛏️ E0.7 bed +1F6CF ; unqualified # 🛏 E0.7 bed +1F6CB FE0F ; fully-qualified # 🛋️ E0.7 couch and lamp +1F6CB ; unqualified # 🛋 E0.7 couch and lamp +1FA91 ; fully-qualified # 🪑 E12.0 chair +1F6BD ; fully-qualified # 🚽 E0.6 toilet +1FAA0 ; fully-qualified # 🪠 E13.0 plunger +1F6BF ; fully-qualified # 🚿 E1.0 shower +1F6C1 ; fully-qualified # 🛁 E1.0 bathtub +1FAA4 ; fully-qualified # 🪤 E13.0 mouse trap +1FA92 ; fully-qualified # 🪒 E12.0 razor +1F9F4 ; fully-qualified # 🧴 E11.0 lotion bottle +1F9F7 ; fully-qualified # 🧷 E11.0 safety pin +1F9F9 ; fully-qualified # 🧹 E11.0 broom +1F9FA ; fully-qualified # 🧺 E11.0 basket +1F9FB ; fully-qualified # 🧻 E11.0 roll of paper +1FAA3 ; fully-qualified # 🪣 E13.0 bucket +1F9FC ; fully-qualified # 🧼 E11.0 soap +1FAE7 ; fully-qualified # 🫧 E14.0 bubbles +1FAA5 ; fully-qualified # 🪥 E13.0 toothbrush +1F9FD ; fully-qualified # 🧽 E11.0 sponge +1F9EF ; fully-qualified # 🧯 E11.0 fire extinguisher +1F6D2 ; fully-qualified # 🛒 E3.0 shopping cart + +# subgroup: other-object +1F6AC ; fully-qualified # 🚬 E0.6 cigarette +26B0 FE0F ; fully-qualified # ⚰️ E1.0 coffin +26B0 ; unqualified # ⚰ E1.0 coffin +1FAA6 ; fully-qualified # 🪦 E13.0 headstone +26B1 FE0F ; fully-qualified # ⚱️ E1.0 funeral urn +26B1 ; unqualified # ⚱ E1.0 funeral urn +1F9FF ; fully-qualified # 🧿 E11.0 nazar amulet +1FAAC ; fully-qualified # 🪬 E14.0 hamsa +1F5FF ; fully-qualified # 🗿 E0.6 moai +1FAA7 ; fully-qualified # 🪧 E13.0 placard +1FAAA ; fully-qualified # 🪪 E14.0 identification card + +# Objects subtotal: 310 +# Objects subtotal: 310 w/o modifiers + +# group: Symbols + +# subgroup: transport-sign +1F3E7 ; fully-qualified # 🏧 E0.6 ATM sign +1F6AE ; fully-qualified # 🚮 E1.0 litter in bin sign +1F6B0 ; fully-qualified # 🚰 E1.0 potable water +267F ; fully-qualified # ♿ E0.6 wheelchair symbol +1F6B9 ; fully-qualified # 🚹 E0.6 men’s room +1F6BA ; fully-qualified # 🚺 E0.6 women’s room +1F6BB ; fully-qualified # 🚻 E0.6 restroom +1F6BC ; fully-qualified # 🚼 E0.6 baby symbol +1F6BE ; fully-qualified # 🚾 E0.6 water closet +1F6C2 ; fully-qualified # 🛂 E1.0 passport control +1F6C3 ; fully-qualified # 🛃 E1.0 customs +1F6C4 ; fully-qualified # 🛄 E1.0 baggage claim +1F6C5 ; fully-qualified # 🛅 E1.0 left luggage + +# subgroup: warning +26A0 FE0F ; fully-qualified # ⚠️ E0.6 warning +26A0 ; unqualified # ⚠ E0.6 warning +1F6B8 ; fully-qualified # 🚸 E1.0 children crossing +26D4 ; fully-qualified # ⛔ E0.6 no entry +1F6AB ; fully-qualified # 🚫 E0.6 prohibited +1F6B3 ; fully-qualified # 🚳 E1.0 no bicycles +1F6AD ; fully-qualified # 🚭 E0.6 no smoking +1F6AF ; fully-qualified # 🚯 E1.0 no littering +1F6B1 ; fully-qualified # 🚱 E1.0 non-potable water +1F6B7 ; fully-qualified # 🚷 E1.0 no pedestrians +1F4F5 ; fully-qualified # 📵 E1.0 no mobile phones +1F51E ; fully-qualified # 🔞 E0.6 no one under eighteen +2622 FE0F ; fully-qualified # ☢️ E1.0 radioactive +2622 ; unqualified # ☢ E1.0 radioactive +2623 FE0F ; fully-qualified # ☣️ E1.0 biohazard +2623 ; unqualified # ☣ E1.0 biohazard + +# subgroup: arrow +2B06 FE0F ; fully-qualified # ⬆️ E0.6 up arrow +2B06 ; unqualified # ⬆ E0.6 up arrow +2197 FE0F ; fully-qualified # ↗️ E0.6 up-right arrow +2197 ; unqualified # ↗ E0.6 up-right arrow +27A1 FE0F ; fully-qualified # ➡️ E0.6 right arrow +27A1 ; unqualified # ➡ E0.6 right arrow +2198 FE0F ; fully-qualified # ↘️ E0.6 down-right arrow +2198 ; unqualified # ↘ E0.6 down-right arrow +2B07 FE0F ; fully-qualified # ⬇️ E0.6 down arrow +2B07 ; unqualified # ⬇ E0.6 down arrow +2199 FE0F ; fully-qualified # ↙️ E0.6 down-left arrow +2199 ; unqualified # ↙ E0.6 down-left arrow +2B05 FE0F ; fully-qualified # ⬅️ E0.6 left arrow +2B05 ; unqualified # ⬅ E0.6 left arrow +2196 FE0F ; fully-qualified # ↖️ E0.6 up-left arrow +2196 ; unqualified # ↖ E0.6 up-left arrow +2195 FE0F ; fully-qualified # ↕️ E0.6 up-down arrow +2195 ; unqualified # ↕ E0.6 up-down arrow +2194 FE0F ; fully-qualified # ↔️ E0.6 left-right arrow +2194 ; unqualified # ↔ E0.6 left-right arrow +21A9 FE0F ; fully-qualified # ↩️ E0.6 right arrow curving left +21A9 ; unqualified # ↩ E0.6 right arrow curving left +21AA FE0F ; fully-qualified # ↪️ E0.6 left arrow curving right +21AA ; unqualified # ↪ E0.6 left arrow curving right +2934 FE0F ; fully-qualified # ⤴️ E0.6 right arrow curving up +2934 ; unqualified # ⤴ E0.6 right arrow curving up +2935 FE0F ; fully-qualified # ⤵️ E0.6 right arrow curving down +2935 ; unqualified # ⤵ E0.6 right arrow curving down +1F503 ; fully-qualified # 🔃 E0.6 clockwise vertical arrows +1F504 ; fully-qualified # 🔄 E1.0 counterclockwise arrows button +1F519 ; fully-qualified # 🔙 E0.6 BACK arrow +1F51A ; fully-qualified # 🔚 E0.6 END arrow +1F51B ; fully-qualified # 🔛 E0.6 ON! arrow +1F51C ; fully-qualified # 🔜 E0.6 SOON arrow +1F51D ; fully-qualified # 🔝 E0.6 TOP arrow + +# subgroup: religion +1F6D0 ; fully-qualified # 🛐 E1.0 place of worship +269B FE0F ; fully-qualified # ⚛️ E1.0 atom symbol +269B ; unqualified # ⚛ E1.0 atom symbol +1F549 FE0F ; fully-qualified # 🕉️ E0.7 om +1F549 ; unqualified # 🕉 E0.7 om +2721 FE0F ; fully-qualified # ✡️ E0.7 star of David +2721 ; unqualified # ✡ E0.7 star of David +2638 FE0F ; fully-qualified # ☸️ E0.7 wheel of dharma +2638 ; unqualified # ☸ E0.7 wheel of dharma +262F FE0F ; fully-qualified # ☯️ E0.7 yin yang +262F ; unqualified # ☯ E0.7 yin yang +271D FE0F ; fully-qualified # ✝️ E0.7 latin cross +271D ; unqualified # ✝ E0.7 latin cross +2626 FE0F ; fully-qualified # ☦️ E1.0 orthodox cross +2626 ; unqualified # ☦ E1.0 orthodox cross +262A FE0F ; fully-qualified # ☪️ E0.7 star and crescent +262A ; unqualified # ☪ E0.7 star and crescent +262E FE0F ; fully-qualified # ☮️ E1.0 peace symbol +262E ; unqualified # ☮ E1.0 peace symbol +1F54E ; fully-qualified # 🕎 E1.0 menorah +1F52F ; fully-qualified # 🔯 E0.6 dotted six-pointed star +1FAAF ; fully-qualified # 🪯 E15.0 khanda + +# subgroup: zodiac +2648 ; fully-qualified # ♈ E0.6 Aries +2649 ; fully-qualified # ♉ E0.6 Taurus +264A ; fully-qualified # ♊ E0.6 Gemini +264B ; fully-qualified # ♋ E0.6 Cancer +264C ; fully-qualified # ♌ E0.6 Leo +264D ; fully-qualified # ♍ E0.6 Virgo +264E ; fully-qualified # ♎ E0.6 Libra +264F ; fully-qualified # ♏ E0.6 Scorpio +2650 ; fully-qualified # ♐ E0.6 Sagittarius +2651 ; fully-qualified # ♑ E0.6 Capricorn +2652 ; fully-qualified # ♒ E0.6 Aquarius +2653 ; fully-qualified # ♓ E0.6 Pisces +26CE ; fully-qualified # ⛎ E0.6 Ophiuchus + +# subgroup: av-symbol +1F500 ; fully-qualified # 🔀 E1.0 shuffle tracks button +1F501 ; fully-qualified # 🔁 E1.0 repeat button +1F502 ; fully-qualified # 🔂 E1.0 repeat single button +25B6 FE0F ; fully-qualified # ▶️ E0.6 play button +25B6 ; unqualified # ▶ E0.6 play button +23E9 ; fully-qualified # ⏩ E0.6 fast-forward button +23ED FE0F ; fully-qualified # ⏭️ E0.7 next track button +23ED ; unqualified # ⏭ E0.7 next track button +23EF FE0F ; fully-qualified # ⏯️ E1.0 play or pause button +23EF ; unqualified # ⏯ E1.0 play or pause button +25C0 FE0F ; fully-qualified # ◀️ E0.6 reverse button +25C0 ; unqualified # ◀ E0.6 reverse button +23EA ; fully-qualified # ⏪ E0.6 fast reverse button +23EE FE0F ; fully-qualified # ⏮️ E0.7 last track button +23EE ; unqualified # ⏮ E0.7 last track button +1F53C ; fully-qualified # 🔼 E0.6 upwards button +23EB ; fully-qualified # ⏫ E0.6 fast up button +1F53D ; fully-qualified # 🔽 E0.6 downwards button +23EC ; fully-qualified # ⏬ E0.6 fast down button +23F8 FE0F ; fully-qualified # ⏸️ E0.7 pause button +23F8 ; unqualified # ⏸ E0.7 pause button +23F9 FE0F ; fully-qualified # ⏹️ E0.7 stop button +23F9 ; unqualified # ⏹ E0.7 stop button +23FA FE0F ; fully-qualified # ⏺️ E0.7 record button +23FA ; unqualified # ⏺ E0.7 record button +23CF FE0F ; fully-qualified # ⏏️ E1.0 eject button +23CF ; unqualified # ⏏ E1.0 eject button +1F3A6 ; fully-qualified # 🎦 E0.6 cinema +1F505 ; fully-qualified # 🔅 E1.0 dim button +1F506 ; fully-qualified # 🔆 E1.0 bright button +1F4F6 ; fully-qualified # 📶 E0.6 antenna bars +1F6DC ; fully-qualified # 🛜 E15.0 wireless +1F4F3 ; fully-qualified # 📳 E0.6 vibration mode +1F4F4 ; fully-qualified # 📴 E0.6 mobile phone off + +# subgroup: gender +2640 FE0F ; fully-qualified # ♀️ E4.0 female sign +2640 ; unqualified # ♀ E4.0 female sign +2642 FE0F ; fully-qualified # ♂️ E4.0 male sign +2642 ; unqualified # ♂ E4.0 male sign +26A7 FE0F ; fully-qualified # ⚧️ E13.0 transgender symbol +26A7 ; unqualified # ⚧ E13.0 transgender symbol + +# subgroup: math +2716 FE0F ; fully-qualified # ✖️ E0.6 multiply +2716 ; unqualified # ✖ E0.6 multiply +2795 ; fully-qualified # ➕ E0.6 plus +2796 ; fully-qualified # ➖ E0.6 minus +2797 ; fully-qualified # ➗ E0.6 divide +1F7F0 ; fully-qualified # 🟰 E14.0 heavy equals sign +267E FE0F ; fully-qualified # ♾️ E11.0 infinity +267E ; unqualified # ♾ E11.0 infinity + +# subgroup: punctuation +203C FE0F ; fully-qualified # ‼️ E0.6 double exclamation mark +203C ; unqualified # ‼ E0.6 double exclamation mark +2049 FE0F ; fully-qualified # ⁉️ E0.6 exclamation question mark +2049 ; unqualified # ⁉ E0.6 exclamation question mark +2753 ; fully-qualified # ❓ E0.6 red question mark +2754 ; fully-qualified # ❔ E0.6 white question mark +2755 ; fully-qualified # ❕ E0.6 white exclamation mark +2757 ; fully-qualified # ❗ E0.6 red exclamation mark +3030 FE0F ; fully-qualified # 〰️ E0.6 wavy dash +3030 ; unqualified # 〰 E0.6 wavy dash + +# subgroup: currency +1F4B1 ; fully-qualified # 💱 E0.6 currency exchange +1F4B2 ; fully-qualified # 💲 E0.6 heavy dollar sign + +# subgroup: other-symbol +2695 FE0F ; fully-qualified # ⚕️ E4.0 medical symbol +2695 ; unqualified # ⚕ E4.0 medical symbol +267B FE0F ; fully-qualified # ♻️ E0.6 recycling symbol +267B ; unqualified # ♻ E0.6 recycling symbol +269C FE0F ; fully-qualified # ⚜️ E1.0 fleur-de-lis +269C ; unqualified # ⚜ E1.0 fleur-de-lis +1F531 ; fully-qualified # 🔱 E0.6 trident emblem +1F4DB ; fully-qualified # 📛 E0.6 name badge +1F530 ; fully-qualified # 🔰 E0.6 Japanese symbol for beginner +2B55 ; fully-qualified # ⭕ E0.6 hollow red circle +2705 ; fully-qualified # ✅ E0.6 check mark button +2611 FE0F ; fully-qualified # ☑️ E0.6 check box with check +2611 ; unqualified # ☑ E0.6 check box with check +2714 FE0F ; fully-qualified # ✔️ E0.6 check mark +2714 ; unqualified # ✔ E0.6 check mark +274C ; fully-qualified # ❌ E0.6 cross mark +274E ; fully-qualified # ❎ E0.6 cross mark button +27B0 ; fully-qualified # ➰ E0.6 curly loop +27BF ; fully-qualified # ➿ E1.0 double curly loop +303D FE0F ; fully-qualified # 〽️ E0.6 part alternation mark +303D ; unqualified # 〽 E0.6 part alternation mark +2733 FE0F ; fully-qualified # ✳️ E0.6 eight-spoked asterisk +2733 ; unqualified # ✳ E0.6 eight-spoked asterisk +2734 FE0F ; fully-qualified # ✴️ E0.6 eight-pointed star +2734 ; unqualified # ✴ E0.6 eight-pointed star +2747 FE0F ; fully-qualified # ❇️ E0.6 sparkle +2747 ; unqualified # ❇ E0.6 sparkle +00A9 FE0F ; fully-qualified # ©️ E0.6 copyright +00A9 ; unqualified # © E0.6 copyright +00AE FE0F ; fully-qualified # ®️ E0.6 registered +00AE ; unqualified # ® E0.6 registered +2122 FE0F ; fully-qualified # ™️ E0.6 trade mark +2122 ; unqualified # ™ E0.6 trade mark + +# subgroup: keycap +0023 FE0F 20E3 ; fully-qualified # #️⃣ E0.6 keycap: # +0023 20E3 ; unqualified # #⃣ E0.6 keycap: # +002A FE0F 20E3 ; fully-qualified # *️⃣ E2.0 keycap: * +002A 20E3 ; unqualified # *⃣ E2.0 keycap: * +0030 FE0F 20E3 ; fully-qualified # 0️⃣ E0.6 keycap: 0 +0030 20E3 ; unqualified # 0⃣ E0.6 keycap: 0 +0031 FE0F 20E3 ; fully-qualified # 1️⃣ E0.6 keycap: 1 +0031 20E3 ; unqualified # 1⃣ E0.6 keycap: 1 +0032 FE0F 20E3 ; fully-qualified # 2️⃣ E0.6 keycap: 2 +0032 20E3 ; unqualified # 2⃣ E0.6 keycap: 2 +0033 FE0F 20E3 ; fully-qualified # 3️⃣ E0.6 keycap: 3 +0033 20E3 ; unqualified # 3⃣ E0.6 keycap: 3 +0034 FE0F 20E3 ; fully-qualified # 4️⃣ E0.6 keycap: 4 +0034 20E3 ; unqualified # 4⃣ E0.6 keycap: 4 +0035 FE0F 20E3 ; fully-qualified # 5️⃣ E0.6 keycap: 5 +0035 20E3 ; unqualified # 5⃣ E0.6 keycap: 5 +0036 FE0F 20E3 ; fully-qualified # 6️⃣ E0.6 keycap: 6 +0036 20E3 ; unqualified # 6⃣ E0.6 keycap: 6 +0037 FE0F 20E3 ; fully-qualified # 7️⃣ E0.6 keycap: 7 +0037 20E3 ; unqualified # 7⃣ E0.6 keycap: 7 +0038 FE0F 20E3 ; fully-qualified # 8️⃣ E0.6 keycap: 8 +0038 20E3 ; unqualified # 8⃣ E0.6 keycap: 8 +0039 FE0F 20E3 ; fully-qualified # 9️⃣ E0.6 keycap: 9 +0039 20E3 ; unqualified # 9⃣ E0.6 keycap: 9 +1F51F ; fully-qualified # 🔟 E0.6 keycap: 10 + +# subgroup: alphanum +1F520 ; fully-qualified # 🔠 E0.6 input latin uppercase +1F521 ; fully-qualified # 🔡 E0.6 input latin lowercase +1F522 ; fully-qualified # 🔢 E0.6 input numbers +1F523 ; fully-qualified # 🔣 E0.6 input symbols +1F524 ; fully-qualified # 🔤 E0.6 input latin letters +1F170 FE0F ; fully-qualified # 🅰️ E0.6 A button (blood type) +1F170 ; unqualified # 🅰 E0.6 A button (blood type) +1F18E ; fully-qualified # 🆎 E0.6 AB button (blood type) +1F171 FE0F ; fully-qualified # 🅱️ E0.6 B button (blood type) +1F171 ; unqualified # 🅱 E0.6 B button (blood type) +1F191 ; fully-qualified # 🆑 E0.6 CL button +1F192 ; fully-qualified # 🆒 E0.6 COOL button +1F193 ; fully-qualified # 🆓 E0.6 FREE button +2139 FE0F ; fully-qualified # ℹ️ E0.6 information +2139 ; unqualified # ℹ E0.6 information +1F194 ; fully-qualified # 🆔 E0.6 ID button +24C2 FE0F ; fully-qualified # Ⓜ️ E0.6 circled M +24C2 ; unqualified # Ⓜ E0.6 circled M +1F195 ; fully-qualified # 🆕 E0.6 NEW button +1F196 ; fully-qualified # 🆖 E0.6 NG button +1F17E FE0F ; fully-qualified # 🅾️ E0.6 O button (blood type) +1F17E ; unqualified # 🅾 E0.6 O button (blood type) +1F197 ; fully-qualified # 🆗 E0.6 OK button +1F17F FE0F ; fully-qualified # 🅿️ E0.6 P button +1F17F ; unqualified # 🅿 E0.6 P button +1F198 ; fully-qualified # 🆘 E0.6 SOS button +1F199 ; fully-qualified # 🆙 E0.6 UP! button +1F19A ; fully-qualified # 🆚 E0.6 VS button +1F201 ; fully-qualified # 🈁 E0.6 Japanese “here” button +1F202 FE0F ; fully-qualified # 🈂️ E0.6 Japanese “service charge” button +1F202 ; unqualified # 🈂 E0.6 Japanese “service charge” button +1F237 FE0F ; fully-qualified # 🈷️ E0.6 Japanese “monthly amount” button +1F237 ; unqualified # 🈷 E0.6 Japanese “monthly amount” button +1F236 ; fully-qualified # 🈶 E0.6 Japanese “not free of charge” button +1F22F ; fully-qualified # 🈯 E0.6 Japanese “reserved” button +1F250 ; fully-qualified # 🉐 E0.6 Japanese “bargain” button +1F239 ; fully-qualified # 🈹 E0.6 Japanese “discount” button +1F21A ; fully-qualified # 🈚 E0.6 Japanese “free of charge” button +1F232 ; fully-qualified # 🈲 E0.6 Japanese “prohibited” button +1F251 ; fully-qualified # 🉑 E0.6 Japanese “acceptable” button +1F238 ; fully-qualified # 🈸 E0.6 Japanese “application” button +1F234 ; fully-qualified # 🈴 E0.6 Japanese “passing grade” button +1F233 ; fully-qualified # 🈳 E0.6 Japanese “vacancy” button +3297 FE0F ; fully-qualified # ㊗️ E0.6 Japanese “congratulations” button +3297 ; unqualified # ㊗ E0.6 Japanese “congratulations” button +3299 FE0F ; fully-qualified # ㊙️ E0.6 Japanese “secret” button +3299 ; unqualified # ㊙ E0.6 Japanese “secret” button +1F23A ; fully-qualified # 🈺 E0.6 Japanese “open for business” button +1F235 ; fully-qualified # 🈵 E0.6 Japanese “no vacancy” button + +# subgroup: geometric +1F534 ; fully-qualified # 🔴 E0.6 red circle +1F7E0 ; fully-qualified # 🟠 E12.0 orange circle +1F7E1 ; fully-qualified # 🟡 E12.0 yellow circle +1F7E2 ; fully-qualified # 🟢 E12.0 green circle +1F535 ; fully-qualified # 🔵 E0.6 blue circle +1F7E3 ; fully-qualified # 🟣 E12.0 purple circle +1F7E4 ; fully-qualified # 🟤 E12.0 brown circle +26AB ; fully-qualified # ⚫ E0.6 black circle +26AA ; fully-qualified # ⚪ E0.6 white circle +1F7E5 ; fully-qualified # 🟥 E12.0 red square +1F7E7 ; fully-qualified # 🟧 E12.0 orange square +1F7E8 ; fully-qualified # 🟨 E12.0 yellow square +1F7E9 ; fully-qualified # 🟩 E12.0 green square +1F7E6 ; fully-qualified # 🟦 E12.0 blue square +1F7EA ; fully-qualified # 🟪 E12.0 purple square +1F7EB ; fully-qualified # 🟫 E12.0 brown square +2B1B ; fully-qualified # ⬛ E0.6 black large square +2B1C ; fully-qualified # ⬜ E0.6 white large square +25FC FE0F ; fully-qualified # ◼️ E0.6 black medium square +25FC ; unqualified # ◼ E0.6 black medium square +25FB FE0F ; fully-qualified # ◻️ E0.6 white medium square +25FB ; unqualified # ◻ E0.6 white medium square +25FE ; fully-qualified # ◾ E0.6 black medium-small square +25FD ; fully-qualified # ◽ E0.6 white medium-small square +25AA FE0F ; fully-qualified # ▪️ E0.6 black small square +25AA ; unqualified # ▪ E0.6 black small square +25AB FE0F ; fully-qualified # ▫️ E0.6 white small square +25AB ; unqualified # ▫ E0.6 white small square +1F536 ; fully-qualified # 🔶 E0.6 large orange diamond +1F537 ; fully-qualified # 🔷 E0.6 large blue diamond +1F538 ; fully-qualified # 🔸 E0.6 small orange diamond +1F539 ; fully-qualified # 🔹 E0.6 small blue diamond +1F53A ; fully-qualified # 🔺 E0.6 red triangle pointed up +1F53B ; fully-qualified # 🔻 E0.6 red triangle pointed down +1F4A0 ; fully-qualified # 💠 E0.6 diamond with a dot +1F518 ; fully-qualified # 🔘 E0.6 radio button +1F533 ; fully-qualified # 🔳 E0.6 white square button +1F532 ; fully-qualified # 🔲 E0.6 black square button + +# Symbols subtotal: 304 +# Symbols subtotal: 304 w/o modifiers + +# group: Flags + +# subgroup: flag +1F3C1 ; fully-qualified # 🏁 E0.6 chequered flag +1F6A9 ; fully-qualified # 🚩 E0.6 triangular flag +1F38C ; fully-qualified # 🎌 E0.6 crossed flags +1F3F4 ; fully-qualified # 🏴 E1.0 black flag +1F3F3 FE0F ; fully-qualified # 🏳️ E0.7 white flag +1F3F3 ; unqualified # 🏳 E0.7 white flag +1F3F3 FE0F 200D 1F308 ; fully-qualified # 🏳️‍🌈 E4.0 rainbow flag +1F3F3 200D 1F308 ; unqualified # 🏳‍🌈 E4.0 rainbow flag +1F3F3 FE0F 200D 26A7 FE0F ; fully-qualified # 🏳️‍⚧️ E13.0 transgender flag +1F3F3 200D 26A7 FE0F ; unqualified # 🏳‍⚧️ E13.0 transgender flag +1F3F3 FE0F 200D 26A7 ; minimally-qualified # 🏳️‍⚧ E13.0 transgender flag +1F3F3 200D 26A7 ; unqualified # 🏳‍⚧ E13.0 transgender flag +1F3F4 200D 2620 FE0F ; fully-qualified # 🏴‍☠️ E11.0 pirate flag +1F3F4 200D 2620 ; minimally-qualified # 🏴‍☠ E11.0 pirate flag + +# subgroup: country-flag +1F1E6 1F1E8 ; fully-qualified # 🇦🇨 E2.0 flag: Ascension Island +1F1E6 1F1E9 ; fully-qualified # 🇦🇩 E2.0 flag: Andorra +1F1E6 1F1EA ; fully-qualified # 🇦🇪 E2.0 flag: United Arab Emirates +1F1E6 1F1EB ; fully-qualified # 🇦🇫 E2.0 flag: Afghanistan +1F1E6 1F1EC ; fully-qualified # 🇦🇬 E2.0 flag: Antigua & Barbuda +1F1E6 1F1EE ; fully-qualified # 🇦🇮 E2.0 flag: Anguilla +1F1E6 1F1F1 ; fully-qualified # 🇦🇱 E2.0 flag: Albania +1F1E6 1F1F2 ; fully-qualified # 🇦🇲 E2.0 flag: Armenia +1F1E6 1F1F4 ; fully-qualified # 🇦🇴 E2.0 flag: Angola +1F1E6 1F1F6 ; fully-qualified # 🇦🇶 E2.0 flag: Antarctica +1F1E6 1F1F7 ; fully-qualified # 🇦🇷 E2.0 flag: Argentina +1F1E6 1F1F8 ; fully-qualified # 🇦🇸 E2.0 flag: American Samoa +1F1E6 1F1F9 ; fully-qualified # 🇦🇹 E2.0 flag: Austria +1F1E6 1F1FA ; fully-qualified # 🇦🇺 E2.0 flag: Australia +1F1E6 1F1FC ; fully-qualified # 🇦🇼 E2.0 flag: Aruba +1F1E6 1F1FD ; fully-qualified # 🇦🇽 E2.0 flag: Åland Islands +1F1E6 1F1FF ; fully-qualified # 🇦🇿 E2.0 flag: Azerbaijan +1F1E7 1F1E6 ; fully-qualified # 🇧🇦 E2.0 flag: Bosnia & Herzegovina +1F1E7 1F1E7 ; fully-qualified # 🇧🇧 E2.0 flag: Barbados +1F1E7 1F1E9 ; fully-qualified # 🇧🇩 E2.0 flag: Bangladesh +1F1E7 1F1EA ; fully-qualified # 🇧🇪 E2.0 flag: Belgium +1F1E7 1F1EB ; fully-qualified # 🇧🇫 E2.0 flag: Burkina Faso +1F1E7 1F1EC ; fully-qualified # 🇧🇬 E2.0 flag: Bulgaria +1F1E7 1F1ED ; fully-qualified # 🇧🇭 E2.0 flag: Bahrain +1F1E7 1F1EE ; fully-qualified # 🇧🇮 E2.0 flag: Burundi +1F1E7 1F1EF ; fully-qualified # 🇧🇯 E2.0 flag: Benin +1F1E7 1F1F1 ; fully-qualified # 🇧🇱 E2.0 flag: St. Barthélemy +1F1E7 1F1F2 ; fully-qualified # 🇧🇲 E2.0 flag: Bermuda +1F1E7 1F1F3 ; fully-qualified # 🇧🇳 E2.0 flag: Brunei +1F1E7 1F1F4 ; fully-qualified # 🇧🇴 E2.0 flag: Bolivia +1F1E7 1F1F6 ; fully-qualified # 🇧🇶 E2.0 flag: Caribbean Netherlands +1F1E7 1F1F7 ; fully-qualified # 🇧🇷 E2.0 flag: Brazil +1F1E7 1F1F8 ; fully-qualified # 🇧🇸 E2.0 flag: Bahamas +1F1E7 1F1F9 ; fully-qualified # 🇧🇹 E2.0 flag: Bhutan +1F1E7 1F1FB ; fully-qualified # 🇧🇻 E2.0 flag: Bouvet Island +1F1E7 1F1FC ; fully-qualified # 🇧🇼 E2.0 flag: Botswana +1F1E7 1F1FE ; fully-qualified # 🇧🇾 E2.0 flag: Belarus +1F1E7 1F1FF ; fully-qualified # 🇧🇿 E2.0 flag: Belize +1F1E8 1F1E6 ; fully-qualified # 🇨🇦 E2.0 flag: Canada +1F1E8 1F1E8 ; fully-qualified # 🇨🇨 E2.0 flag: Cocos (Keeling) Islands +1F1E8 1F1E9 ; fully-qualified # 🇨🇩 E2.0 flag: Congo - Kinshasa +1F1E8 1F1EB ; fully-qualified # 🇨🇫 E2.0 flag: Central African Republic +1F1E8 1F1EC ; fully-qualified # 🇨🇬 E2.0 flag: Congo - Brazzaville +1F1E8 1F1ED ; fully-qualified # 🇨🇭 E2.0 flag: Switzerland +1F1E8 1F1EE ; fully-qualified # 🇨🇮 E2.0 flag: Côte d’Ivoire +1F1E8 1F1F0 ; fully-qualified # 🇨🇰 E2.0 flag: Cook Islands +1F1E8 1F1F1 ; fully-qualified # 🇨🇱 E2.0 flag: Chile +1F1E8 1F1F2 ; fully-qualified # 🇨🇲 E2.0 flag: Cameroon +1F1E8 1F1F3 ; fully-qualified # 🇨🇳 E0.6 flag: China +1F1E8 1F1F4 ; fully-qualified # 🇨🇴 E2.0 flag: Colombia +1F1E8 1F1F5 ; fully-qualified # 🇨🇵 E2.0 flag: Clipperton Island +1F1E8 1F1F7 ; fully-qualified # 🇨🇷 E2.0 flag: Costa Rica +1F1E8 1F1FA ; fully-qualified # 🇨🇺 E2.0 flag: Cuba +1F1E8 1F1FB ; fully-qualified # 🇨🇻 E2.0 flag: Cape Verde +1F1E8 1F1FC ; fully-qualified # 🇨🇼 E2.0 flag: Curaçao +1F1E8 1F1FD ; fully-qualified # 🇨🇽 E2.0 flag: Christmas Island +1F1E8 1F1FE ; fully-qualified # 🇨🇾 E2.0 flag: Cyprus +1F1E8 1F1FF ; fully-qualified # 🇨🇿 E2.0 flag: Czechia +1F1E9 1F1EA ; fully-qualified # 🇩🇪 E0.6 flag: Germany +1F1E9 1F1EC ; fully-qualified # 🇩🇬 E2.0 flag: Diego Garcia +1F1E9 1F1EF ; fully-qualified # 🇩🇯 E2.0 flag: Djibouti +1F1E9 1F1F0 ; fully-qualified # 🇩🇰 E2.0 flag: Denmark +1F1E9 1F1F2 ; fully-qualified # 🇩🇲 E2.0 flag: Dominica +1F1E9 1F1F4 ; fully-qualified # 🇩🇴 E2.0 flag: Dominican Republic +1F1E9 1F1FF ; fully-qualified # 🇩🇿 E2.0 flag: Algeria +1F1EA 1F1E6 ; fully-qualified # 🇪🇦 E2.0 flag: Ceuta & Melilla +1F1EA 1F1E8 ; fully-qualified # 🇪🇨 E2.0 flag: Ecuador +1F1EA 1F1EA ; fully-qualified # 🇪🇪 E2.0 flag: Estonia +1F1EA 1F1EC ; fully-qualified # 🇪🇬 E2.0 flag: Egypt +1F1EA 1F1ED ; fully-qualified # 🇪🇭 E2.0 flag: Western Sahara +1F1EA 1F1F7 ; fully-qualified # 🇪🇷 E2.0 flag: Eritrea +1F1EA 1F1F8 ; fully-qualified # 🇪🇸 E0.6 flag: Spain +1F1EA 1F1F9 ; fully-qualified # 🇪🇹 E2.0 flag: Ethiopia +1F1EA 1F1FA ; fully-qualified # 🇪🇺 E2.0 flag: European Union +1F1EB 1F1EE ; fully-qualified # 🇫🇮 E2.0 flag: Finland +1F1EB 1F1EF ; fully-qualified # 🇫🇯 E2.0 flag: Fiji +1F1EB 1F1F0 ; fully-qualified # 🇫🇰 E2.0 flag: Falkland Islands +1F1EB 1F1F2 ; fully-qualified # 🇫🇲 E2.0 flag: Micronesia +1F1EB 1F1F4 ; fully-qualified # 🇫🇴 E2.0 flag: Faroe Islands +1F1EB 1F1F7 ; fully-qualified # 🇫🇷 E0.6 flag: France +1F1EC 1F1E6 ; fully-qualified # 🇬🇦 E2.0 flag: Gabon +1F1EC 1F1E7 ; fully-qualified # 🇬🇧 E0.6 flag: United Kingdom +1F1EC 1F1E9 ; fully-qualified # 🇬🇩 E2.0 flag: Grenada +1F1EC 1F1EA ; fully-qualified # 🇬🇪 E2.0 flag: Georgia +1F1EC 1F1EB ; fully-qualified # 🇬🇫 E2.0 flag: French Guiana +1F1EC 1F1EC ; fully-qualified # 🇬🇬 E2.0 flag: Guernsey +1F1EC 1F1ED ; fully-qualified # 🇬🇭 E2.0 flag: Ghana +1F1EC 1F1EE ; fully-qualified # 🇬🇮 E2.0 flag: Gibraltar +1F1EC 1F1F1 ; fully-qualified # 🇬🇱 E2.0 flag: Greenland +1F1EC 1F1F2 ; fully-qualified # 🇬🇲 E2.0 flag: Gambia +1F1EC 1F1F3 ; fully-qualified # 🇬🇳 E2.0 flag: Guinea +1F1EC 1F1F5 ; fully-qualified # 🇬🇵 E2.0 flag: Guadeloupe +1F1EC 1F1F6 ; fully-qualified # 🇬🇶 E2.0 flag: Equatorial Guinea +1F1EC 1F1F7 ; fully-qualified # 🇬🇷 E2.0 flag: Greece +1F1EC 1F1F8 ; fully-qualified # 🇬🇸 E2.0 flag: South Georgia & South Sandwich Islands +1F1EC 1F1F9 ; fully-qualified # 🇬🇹 E2.0 flag: Guatemala +1F1EC 1F1FA ; fully-qualified # 🇬🇺 E2.0 flag: Guam +1F1EC 1F1FC ; fully-qualified # 🇬🇼 E2.0 flag: Guinea-Bissau +1F1EC 1F1FE ; fully-qualified # 🇬🇾 E2.0 flag: Guyana +1F1ED 1F1F0 ; fully-qualified # 🇭🇰 E2.0 flag: Hong Kong SAR China +1F1ED 1F1F2 ; fully-qualified # 🇭🇲 E2.0 flag: Heard & McDonald Islands +1F1ED 1F1F3 ; fully-qualified # 🇭🇳 E2.0 flag: Honduras +1F1ED 1F1F7 ; fully-qualified # 🇭🇷 E2.0 flag: Croatia +1F1ED 1F1F9 ; fully-qualified # 🇭🇹 E2.0 flag: Haiti +1F1ED 1F1FA ; fully-qualified # 🇭🇺 E2.0 flag: Hungary +1F1EE 1F1E8 ; fully-qualified # 🇮🇨 E2.0 flag: Canary Islands +1F1EE 1F1E9 ; fully-qualified # 🇮🇩 E2.0 flag: Indonesia +1F1EE 1F1EA ; fully-qualified # 🇮🇪 E2.0 flag: Ireland +1F1EE 1F1F1 ; fully-qualified # 🇮🇱 E2.0 flag: Israel +1F1EE 1F1F2 ; fully-qualified # 🇮🇲 E2.0 flag: Isle of Man +1F1EE 1F1F3 ; fully-qualified # 🇮🇳 E2.0 flag: India +1F1EE 1F1F4 ; fully-qualified # 🇮🇴 E2.0 flag: British Indian Ocean Territory +1F1EE 1F1F6 ; fully-qualified # 🇮🇶 E2.0 flag: Iraq +1F1EE 1F1F7 ; fully-qualified # 🇮🇷 E2.0 flag: Iran +1F1EE 1F1F8 ; fully-qualified # 🇮🇸 E2.0 flag: Iceland +1F1EE 1F1F9 ; fully-qualified # 🇮🇹 E0.6 flag: Italy +1F1EF 1F1EA ; fully-qualified # 🇯🇪 E2.0 flag: Jersey +1F1EF 1F1F2 ; fully-qualified # 🇯🇲 E2.0 flag: Jamaica +1F1EF 1F1F4 ; fully-qualified # 🇯🇴 E2.0 flag: Jordan +1F1EF 1F1F5 ; fully-qualified # 🇯🇵 E0.6 flag: Japan +1F1F0 1F1EA ; fully-qualified # 🇰🇪 E2.0 flag: Kenya +1F1F0 1F1EC ; fully-qualified # 🇰🇬 E2.0 flag: Kyrgyzstan +1F1F0 1F1ED ; fully-qualified # 🇰🇭 E2.0 flag: Cambodia +1F1F0 1F1EE ; fully-qualified # 🇰🇮 E2.0 flag: Kiribati +1F1F0 1F1F2 ; fully-qualified # 🇰🇲 E2.0 flag: Comoros +1F1F0 1F1F3 ; fully-qualified # 🇰🇳 E2.0 flag: St. Kitts & Nevis +1F1F0 1F1F5 ; fully-qualified # 🇰🇵 E2.0 flag: North Korea +1F1F0 1F1F7 ; fully-qualified # 🇰🇷 E0.6 flag: South Korea +1F1F0 1F1FC ; fully-qualified # 🇰🇼 E2.0 flag: Kuwait +1F1F0 1F1FE ; fully-qualified # 🇰🇾 E2.0 flag: Cayman Islands +1F1F0 1F1FF ; fully-qualified # 🇰🇿 E2.0 flag: Kazakhstan +1F1F1 1F1E6 ; fully-qualified # 🇱🇦 E2.0 flag: Laos +1F1F1 1F1E7 ; fully-qualified # 🇱🇧 E2.0 flag: Lebanon +1F1F1 1F1E8 ; fully-qualified # 🇱🇨 E2.0 flag: St. Lucia +1F1F1 1F1EE ; fully-qualified # 🇱🇮 E2.0 flag: Liechtenstein +1F1F1 1F1F0 ; fully-qualified # 🇱🇰 E2.0 flag: Sri Lanka +1F1F1 1F1F7 ; fully-qualified # 🇱🇷 E2.0 flag: Liberia +1F1F1 1F1F8 ; fully-qualified # 🇱🇸 E2.0 flag: Lesotho +1F1F1 1F1F9 ; fully-qualified # 🇱🇹 E2.0 flag: Lithuania +1F1F1 1F1FA ; fully-qualified # 🇱🇺 E2.0 flag: Luxembourg +1F1F1 1F1FB ; fully-qualified # 🇱🇻 E2.0 flag: Latvia +1F1F1 1F1FE ; fully-qualified # 🇱🇾 E2.0 flag: Libya +1F1F2 1F1E6 ; fully-qualified # 🇲🇦 E2.0 flag: Morocco +1F1F2 1F1E8 ; fully-qualified # 🇲🇨 E2.0 flag: Monaco +1F1F2 1F1E9 ; fully-qualified # 🇲🇩 E2.0 flag: Moldova +1F1F2 1F1EA ; fully-qualified # 🇲🇪 E2.0 flag: Montenegro +1F1F2 1F1EB ; fully-qualified # 🇲🇫 E2.0 flag: St. Martin +1F1F2 1F1EC ; fully-qualified # 🇲🇬 E2.0 flag: Madagascar +1F1F2 1F1ED ; fully-qualified # 🇲🇭 E2.0 flag: Marshall Islands +1F1F2 1F1F0 ; fully-qualified # 🇲🇰 E2.0 flag: North Macedonia +1F1F2 1F1F1 ; fully-qualified # 🇲🇱 E2.0 flag: Mali +1F1F2 1F1F2 ; fully-qualified # 🇲🇲 E2.0 flag: Myanmar (Burma) +1F1F2 1F1F3 ; fully-qualified # 🇲🇳 E2.0 flag: Mongolia +1F1F2 1F1F4 ; fully-qualified # 🇲🇴 E2.0 flag: Macao SAR China +1F1F2 1F1F5 ; fully-qualified # 🇲🇵 E2.0 flag: Northern Mariana Islands +1F1F2 1F1F6 ; fully-qualified # 🇲🇶 E2.0 flag: Martinique +1F1F2 1F1F7 ; fully-qualified # 🇲🇷 E2.0 flag: Mauritania +1F1F2 1F1F8 ; fully-qualified # 🇲🇸 E2.0 flag: Montserrat +1F1F2 1F1F9 ; fully-qualified # 🇲🇹 E2.0 flag: Malta +1F1F2 1F1FA ; fully-qualified # 🇲🇺 E2.0 flag: Mauritius +1F1F2 1F1FB ; fully-qualified # 🇲🇻 E2.0 flag: Maldives +1F1F2 1F1FC ; fully-qualified # 🇲🇼 E2.0 flag: Malawi +1F1F2 1F1FD ; fully-qualified # 🇲🇽 E2.0 flag: Mexico +1F1F2 1F1FE ; fully-qualified # 🇲🇾 E2.0 flag: Malaysia +1F1F2 1F1FF ; fully-qualified # 🇲🇿 E2.0 flag: Mozambique +1F1F3 1F1E6 ; fully-qualified # 🇳🇦 E2.0 flag: Namibia +1F1F3 1F1E8 ; fully-qualified # 🇳🇨 E2.0 flag: New Caledonia +1F1F3 1F1EA ; fully-qualified # 🇳🇪 E2.0 flag: Niger +1F1F3 1F1EB ; fully-qualified # 🇳🇫 E2.0 flag: Norfolk Island +1F1F3 1F1EC ; fully-qualified # 🇳🇬 E2.0 flag: Nigeria +1F1F3 1F1EE ; fully-qualified # 🇳🇮 E2.0 flag: Nicaragua +1F1F3 1F1F1 ; fully-qualified # 🇳🇱 E2.0 flag: Netherlands +1F1F3 1F1F4 ; fully-qualified # 🇳🇴 E2.0 flag: Norway +1F1F3 1F1F5 ; fully-qualified # 🇳🇵 E2.0 flag: Nepal +1F1F3 1F1F7 ; fully-qualified # 🇳🇷 E2.0 flag: Nauru +1F1F3 1F1FA ; fully-qualified # 🇳🇺 E2.0 flag: Niue +1F1F3 1F1FF ; fully-qualified # 🇳🇿 E2.0 flag: New Zealand +1F1F4 1F1F2 ; fully-qualified # 🇴🇲 E2.0 flag: Oman +1F1F5 1F1E6 ; fully-qualified # 🇵🇦 E2.0 flag: Panama +1F1F5 1F1EA ; fully-qualified # 🇵🇪 E2.0 flag: Peru +1F1F5 1F1EB ; fully-qualified # 🇵🇫 E2.0 flag: French Polynesia +1F1F5 1F1EC ; fully-qualified # 🇵🇬 E2.0 flag: Papua New Guinea +1F1F5 1F1ED ; fully-qualified # 🇵🇭 E2.0 flag: Philippines +1F1F5 1F1F0 ; fully-qualified # 🇵🇰 E2.0 flag: Pakistan +1F1F5 1F1F1 ; fully-qualified # 🇵🇱 E2.0 flag: Poland +1F1F5 1F1F2 ; fully-qualified # 🇵🇲 E2.0 flag: St. Pierre & Miquelon +1F1F5 1F1F3 ; fully-qualified # 🇵🇳 E2.0 flag: Pitcairn Islands +1F1F5 1F1F7 ; fully-qualified # 🇵🇷 E2.0 flag: Puerto Rico +1F1F5 1F1F8 ; fully-qualified # 🇵🇸 E2.0 flag: Palestinian Territories +1F1F5 1F1F9 ; fully-qualified # 🇵🇹 E2.0 flag: Portugal +1F1F5 1F1FC ; fully-qualified # 🇵🇼 E2.0 flag: Palau +1F1F5 1F1FE ; fully-qualified # 🇵🇾 E2.0 flag: Paraguay +1F1F6 1F1E6 ; fully-qualified # 🇶🇦 E2.0 flag: Qatar +1F1F7 1F1EA ; fully-qualified # 🇷🇪 E2.0 flag: Réunion +1F1F7 1F1F4 ; fully-qualified # 🇷🇴 E2.0 flag: Romania +1F1F7 1F1F8 ; fully-qualified # 🇷🇸 E2.0 flag: Serbia +1F1F7 1F1FA ; fully-qualified # 🇷🇺 E0.6 flag: Russia +1F1F7 1F1FC ; fully-qualified # 🇷🇼 E2.0 flag: Rwanda +1F1F8 1F1E6 ; fully-qualified # 🇸🇦 E2.0 flag: Saudi Arabia +1F1F8 1F1E7 ; fully-qualified # 🇸🇧 E2.0 flag: Solomon Islands +1F1F8 1F1E8 ; fully-qualified # 🇸🇨 E2.0 flag: Seychelles +1F1F8 1F1E9 ; fully-qualified # 🇸🇩 E2.0 flag: Sudan +1F1F8 1F1EA ; fully-qualified # 🇸🇪 E2.0 flag: Sweden +1F1F8 1F1EC ; fully-qualified # 🇸🇬 E2.0 flag: Singapore +1F1F8 1F1ED ; fully-qualified # 🇸🇭 E2.0 flag: St. Helena +1F1F8 1F1EE ; fully-qualified # 🇸🇮 E2.0 flag: Slovenia +1F1F8 1F1EF ; fully-qualified # 🇸🇯 E2.0 flag: Svalbard & Jan Mayen +1F1F8 1F1F0 ; fully-qualified # 🇸🇰 E2.0 flag: Slovakia +1F1F8 1F1F1 ; fully-qualified # 🇸🇱 E2.0 flag: Sierra Leone +1F1F8 1F1F2 ; fully-qualified # 🇸🇲 E2.0 flag: San Marino +1F1F8 1F1F3 ; fully-qualified # 🇸🇳 E2.0 flag: Senegal +1F1F8 1F1F4 ; fully-qualified # 🇸🇴 E2.0 flag: Somalia +1F1F8 1F1F7 ; fully-qualified # 🇸🇷 E2.0 flag: Suriname +1F1F8 1F1F8 ; fully-qualified # 🇸🇸 E2.0 flag: South Sudan +1F1F8 1F1F9 ; fully-qualified # 🇸🇹 E2.0 flag: São Tomé & Príncipe +1F1F8 1F1FB ; fully-qualified # 🇸🇻 E2.0 flag: El Salvador +1F1F8 1F1FD ; fully-qualified # 🇸🇽 E2.0 flag: Sint Maarten +1F1F8 1F1FE ; fully-qualified # 🇸🇾 E2.0 flag: Syria +1F1F8 1F1FF ; fully-qualified # 🇸🇿 E2.0 flag: Eswatini +1F1F9 1F1E6 ; fully-qualified # 🇹🇦 E2.0 flag: Tristan da Cunha +1F1F9 1F1E8 ; fully-qualified # 🇹🇨 E2.0 flag: Turks & Caicos Islands +1F1F9 1F1E9 ; fully-qualified # 🇹🇩 E2.0 flag: Chad +1F1F9 1F1EB ; fully-qualified # 🇹🇫 E2.0 flag: French Southern Territories +1F1F9 1F1EC ; fully-qualified # 🇹🇬 E2.0 flag: Togo +1F1F9 1F1ED ; fully-qualified # 🇹🇭 E2.0 flag: Thailand +1F1F9 1F1EF ; fully-qualified # 🇹🇯 E2.0 flag: Tajikistan +1F1F9 1F1F0 ; fully-qualified # 🇹🇰 E2.0 flag: Tokelau +1F1F9 1F1F1 ; fully-qualified # 🇹🇱 E2.0 flag: Timor-Leste +1F1F9 1F1F2 ; fully-qualified # 🇹🇲 E2.0 flag: Turkmenistan +1F1F9 1F1F3 ; fully-qualified # 🇹🇳 E2.0 flag: Tunisia +1F1F9 1F1F4 ; fully-qualified # 🇹🇴 E2.0 flag: Tonga +1F1F9 1F1F7 ; fully-qualified # 🇹🇷 E2.0 flag: Turkey +1F1F9 1F1F9 ; fully-qualified # 🇹🇹 E2.0 flag: Trinidad & Tobago +1F1F9 1F1FB ; fully-qualified # 🇹🇻 E2.0 flag: Tuvalu +1F1F9 1F1FC ; fully-qualified # 🇹🇼 E2.0 flag: Taiwan +1F1F9 1F1FF ; fully-qualified # 🇹🇿 E2.0 flag: Tanzania +1F1FA 1F1E6 ; fully-qualified # 🇺🇦 E2.0 flag: Ukraine +1F1FA 1F1EC ; fully-qualified # 🇺🇬 E2.0 flag: Uganda +1F1FA 1F1F2 ; fully-qualified # 🇺🇲 E2.0 flag: U.S. Outlying Islands +1F1FA 1F1F3 ; fully-qualified # 🇺🇳 E4.0 flag: United Nations +1F1FA 1F1F8 ; fully-qualified # 🇺🇸 E0.6 flag: United States +1F1FA 1F1FE ; fully-qualified # 🇺🇾 E2.0 flag: Uruguay +1F1FA 1F1FF ; fully-qualified # 🇺🇿 E2.0 flag: Uzbekistan +1F1FB 1F1E6 ; fully-qualified # 🇻🇦 E2.0 flag: Vatican City +1F1FB 1F1E8 ; fully-qualified # 🇻🇨 E2.0 flag: St. Vincent & Grenadines +1F1FB 1F1EA ; fully-qualified # 🇻🇪 E2.0 flag: Venezuela +1F1FB 1F1EC ; fully-qualified # 🇻🇬 E2.0 flag: British Virgin Islands +1F1FB 1F1EE ; fully-qualified # 🇻🇮 E2.0 flag: U.S. Virgin Islands +1F1FB 1F1F3 ; fully-qualified # 🇻🇳 E2.0 flag: Vietnam +1F1FB 1F1FA ; fully-qualified # 🇻🇺 E2.0 flag: Vanuatu +1F1FC 1F1EB ; fully-qualified # 🇼🇫 E2.0 flag: Wallis & Futuna +1F1FC 1F1F8 ; fully-qualified # 🇼🇸 E2.0 flag: Samoa +1F1FD 1F1F0 ; fully-qualified # 🇽🇰 E2.0 flag: Kosovo +1F1FE 1F1EA ; fully-qualified # 🇾🇪 E2.0 flag: Yemen +1F1FE 1F1F9 ; fully-qualified # 🇾🇹 E2.0 flag: Mayotte +1F1FF 1F1E6 ; fully-qualified # 🇿🇦 E2.0 flag: South Africa +1F1FF 1F1F2 ; fully-qualified # 🇿🇲 E2.0 flag: Zambia +1F1FF 1F1FC ; fully-qualified # 🇿🇼 E2.0 flag: Zimbabwe + +# subgroup: subdivision-flag +1F3F4 E0067 E0062 E0065 E006E E0067 E007F ; fully-qualified # 🏴󠁧󠁢󠁥󠁮󠁧󠁿 E5.0 flag: England +1F3F4 E0067 E0062 E0073 E0063 E0074 E007F ; fully-qualified # 🏴󠁧󠁢󠁳󠁣󠁴󠁿 E5.0 flag: Scotland +1F3F4 E0067 E0062 E0077 E006C E0073 E007F ; fully-qualified # 🏴󠁧󠁢󠁷󠁬󠁳󠁿 E5.0 flag: Wales + +# Flags subtotal: 275 +# Flags subtotal: 275 w/o modifiers + +# Status Counts +# fully-qualified : 3655 +# minimally-qualified : 827 +# unqualified : 242 +# component : 9 + +#EOF \ No newline at end of file diff --git a/tools/make-emoji-keys/src/main/resources/emoji/ucd/15.1/emoji-test.txt b/tools/make-emoji-keys/src/main/resources/emoji/ucd/15.1/emoji-test.txt new file mode 100644 index 0000000000..1f50b23fa2 --- /dev/null +++ b/tools/make-emoji-keys/src/main/resources/emoji/ucd/15.1/emoji-test.txt @@ -0,0 +1,5325 @@ +# emoji-test.txt +# Date: 2023-06-05, 21:39:54 GMT +# © 2023 Unicode®, Inc. +# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. +# For terms of use, see https://www.unicode.org/terms_of_use.html +# +# Emoji Keyboard/Display Test Data for UTS #51 +# Version: 15.1 +# +# For documentation and usage, see https://www.unicode.org/reports/tr51 +# +# This file provides data for testing which emoji forms should be in keyboards and which should also be displayed/processed. +# Format: code points; status # emoji name +# Code points — list of one or more hex code points, separated by spaces +# Status +# component — an Emoji_Component, +# excluding Regional_Indicators, ASCII, and non-Emoji. +# fully-qualified — a fully-qualified emoji (see ED-18 in UTS #51), +# excluding Emoji_Component +# minimally-qualified — a minimally-qualified emoji (see ED-18a in UTS #51) +# unqualified — a unqualified emoji (See ED-19 in UTS #51) +# Notes: +# • This includes the emoji components that need emoji presentation (skin tone and hair) +# when isolated, but omits the components that need not have an emoji +# presentation when isolated. +# • The RGI set is covered by the listed fully-qualified emoji. +# • The listed minimally-qualified and unqualified cover all cases where an +# element of the RGI set is missing one or more emoji presentation selectors. +# • The file is in CLDR order, not codepoint order. This is recommended (but not required!) for keyboard palettes. +# • The groups and subgroups are illustrative. See the Emoji Order chart for more information. + + +# group: Smileys & Emotion + +# subgroup: face-smiling +1F600 ; fully-qualified # 😀 E1.0 grinning face +1F603 ; fully-qualified # 😃 E0.6 grinning face with big eyes +1F604 ; fully-qualified # 😄 E0.6 grinning face with smiling eyes +1F601 ; fully-qualified # 😁 E0.6 beaming face with smiling eyes +1F606 ; fully-qualified # 😆 E0.6 grinning squinting face +1F605 ; fully-qualified # 😅 E0.6 grinning face with sweat +1F923 ; fully-qualified # 🤣 E3.0 rolling on the floor laughing +1F602 ; fully-qualified # 😂 E0.6 face with tears of joy +1F642 ; fully-qualified # 🙂 E1.0 slightly smiling face +1F643 ; fully-qualified # 🙃 E1.0 upside-down face +1FAE0 ; fully-qualified # 🫠 E14.0 melting face +1F609 ; fully-qualified # 😉 E0.6 winking face +1F60A ; fully-qualified # 😊 E0.6 smiling face with smiling eyes +1F607 ; fully-qualified # 😇 E1.0 smiling face with halo + +# subgroup: face-affection +1F970 ; fully-qualified # 🥰 E11.0 smiling face with hearts +1F60D ; fully-qualified # 😍 E0.6 smiling face with heart-eyes +1F929 ; fully-qualified # 🤩 E5.0 star-struck +1F618 ; fully-qualified # 😘 E0.6 face blowing a kiss +1F617 ; fully-qualified # 😗 E1.0 kissing face +263A FE0F ; fully-qualified # ☺️ E0.6 smiling face +263A ; unqualified # ☺ E0.6 smiling face +1F61A ; fully-qualified # 😚 E0.6 kissing face with closed eyes +1F619 ; fully-qualified # 😙 E1.0 kissing face with smiling eyes +1F972 ; fully-qualified # 🥲 E13.0 smiling face with tear + +# subgroup: face-tongue +1F60B ; fully-qualified # 😋 E0.6 face savoring food +1F61B ; fully-qualified # 😛 E1.0 face with tongue +1F61C ; fully-qualified # 😜 E0.6 winking face with tongue +1F92A ; fully-qualified # 🤪 E5.0 zany face +1F61D ; fully-qualified # 😝 E0.6 squinting face with tongue +1F911 ; fully-qualified # 🤑 E1.0 money-mouth face + +# subgroup: face-hand +1F917 ; fully-qualified # 🤗 E1.0 smiling face with open hands +1F92D ; fully-qualified # 🤭 E5.0 face with hand over mouth +1FAE2 ; fully-qualified # 🫢 E14.0 face with open eyes and hand over mouth +1FAE3 ; fully-qualified # 🫣 E14.0 face with peeking eye +1F92B ; fully-qualified # 🤫 E5.0 shushing face +1F914 ; fully-qualified # 🤔 E1.0 thinking face +1FAE1 ; fully-qualified # 🫡 E14.0 saluting face + +# subgroup: face-neutral-skeptical +1F910 ; fully-qualified # 🤐 E1.0 zipper-mouth face +1F928 ; fully-qualified # 🤨 E5.0 face with raised eyebrow +1F610 ; fully-qualified # 😐 E0.7 neutral face +1F611 ; fully-qualified # 😑 E1.0 expressionless face +1F636 ; fully-qualified # 😶 E1.0 face without mouth +1FAE5 ; fully-qualified # 🫥 E14.0 dotted line face +1F636 200D 1F32B FE0F ; fully-qualified # 😶‍🌫️ E13.1 face in clouds +1F636 200D 1F32B ; minimally-qualified # 😶‍🌫 E13.1 face in clouds +1F60F ; fully-qualified # 😏 E0.6 smirking face +1F612 ; fully-qualified # 😒 E0.6 unamused face +1F644 ; fully-qualified # 🙄 E1.0 face with rolling eyes +1F62C ; fully-qualified # 😬 E1.0 grimacing face +1F62E 200D 1F4A8 ; fully-qualified # 😮‍💨 E13.1 face exhaling +1F925 ; fully-qualified # 🤥 E3.0 lying face +1FAE8 ; fully-qualified # 🫨 E15.0 shaking face +1F642 200D 2194 FE0F ; fully-qualified # 🙂‍↔️ E15.1 head shaking horizontally +1F642 200D 2194 ; minimally-qualified # 🙂‍↔ E15.1 head shaking horizontally +1F642 200D 2195 FE0F ; fully-qualified # 🙂‍↕️ E15.1 head shaking vertically +1F642 200D 2195 ; minimally-qualified # 🙂‍↕ E15.1 head shaking vertically + +# subgroup: face-sleepy +1F60C ; fully-qualified # 😌 E0.6 relieved face +1F614 ; fully-qualified # 😔 E0.6 pensive face +1F62A ; fully-qualified # 😪 E0.6 sleepy face +1F924 ; fully-qualified # 🤤 E3.0 drooling face +1F634 ; fully-qualified # 😴 E1.0 sleeping face + +# subgroup: face-unwell +1F637 ; fully-qualified # 😷 E0.6 face with medical mask +1F912 ; fully-qualified # 🤒 E1.0 face with thermometer +1F915 ; fully-qualified # 🤕 E1.0 face with head-bandage +1F922 ; fully-qualified # 🤢 E3.0 nauseated face +1F92E ; fully-qualified # 🤮 E5.0 face vomiting +1F927 ; fully-qualified # 🤧 E3.0 sneezing face +1F975 ; fully-qualified # 🥵 E11.0 hot face +1F976 ; fully-qualified # 🥶 E11.0 cold face +1F974 ; fully-qualified # 🥴 E11.0 woozy face +1F635 ; fully-qualified # 😵 E0.6 face with crossed-out eyes +1F635 200D 1F4AB ; fully-qualified # 😵‍💫 E13.1 face with spiral eyes +1F92F ; fully-qualified # 🤯 E5.0 exploding head + +# subgroup: face-hat +1F920 ; fully-qualified # 🤠 E3.0 cowboy hat face +1F973 ; fully-qualified # 🥳 E11.0 partying face +1F978 ; fully-qualified # 🥸 E13.0 disguised face + +# subgroup: face-glasses +1F60E ; fully-qualified # 😎 E1.0 smiling face with sunglasses +1F913 ; fully-qualified # 🤓 E1.0 nerd face +1F9D0 ; fully-qualified # 🧐 E5.0 face with monocle + +# subgroup: face-concerned +1F615 ; fully-qualified # 😕 E1.0 confused face +1FAE4 ; fully-qualified # 🫤 E14.0 face with diagonal mouth +1F61F ; fully-qualified # 😟 E1.0 worried face +1F641 ; fully-qualified # 🙁 E1.0 slightly frowning face +2639 FE0F ; fully-qualified # ☹️ E0.7 frowning face +2639 ; unqualified # ☹ E0.7 frowning face +1F62E ; fully-qualified # 😮 E1.0 face with open mouth +1F62F ; fully-qualified # 😯 E1.0 hushed face +1F632 ; fully-qualified # 😲 E0.6 astonished face +1F633 ; fully-qualified # 😳 E0.6 flushed face +1F97A ; fully-qualified # 🥺 E11.0 pleading face +1F979 ; fully-qualified # 🥹 E14.0 face holding back tears +1F626 ; fully-qualified # 😦 E1.0 frowning face with open mouth +1F627 ; fully-qualified # 😧 E1.0 anguished face +1F628 ; fully-qualified # 😨 E0.6 fearful face +1F630 ; fully-qualified # 😰 E0.6 anxious face with sweat +1F625 ; fully-qualified # 😥 E0.6 sad but relieved face +1F622 ; fully-qualified # 😢 E0.6 crying face +1F62D ; fully-qualified # 😭 E0.6 loudly crying face +1F631 ; fully-qualified # 😱 E0.6 face screaming in fear +1F616 ; fully-qualified # 😖 E0.6 confounded face +1F623 ; fully-qualified # 😣 E0.6 persevering face +1F61E ; fully-qualified # 😞 E0.6 disappointed face +1F613 ; fully-qualified # 😓 E0.6 downcast face with sweat +1F629 ; fully-qualified # 😩 E0.6 weary face +1F62B ; fully-qualified # 😫 E0.6 tired face +1F971 ; fully-qualified # 🥱 E12.0 yawning face + +# subgroup: face-negative +1F624 ; fully-qualified # 😤 E0.6 face with steam from nose +1F621 ; fully-qualified # 😡 E0.6 enraged face +1F620 ; fully-qualified # 😠 E0.6 angry face +1F92C ; fully-qualified # 🤬 E5.0 face with symbols on mouth +1F608 ; fully-qualified # 😈 E1.0 smiling face with horns +1F47F ; fully-qualified # 👿 E0.6 angry face with horns +1F480 ; fully-qualified # 💀 E0.6 skull +2620 FE0F ; fully-qualified # ☠️ E1.0 skull and crossbones +2620 ; unqualified # ☠ E1.0 skull and crossbones + +# subgroup: face-costume +1F4A9 ; fully-qualified # 💩 E0.6 pile of poo +1F921 ; fully-qualified # 🤡 E3.0 clown face +1F479 ; fully-qualified # 👹 E0.6 ogre +1F47A ; fully-qualified # 👺 E0.6 goblin +1F47B ; fully-qualified # 👻 E0.6 ghost +1F47D ; fully-qualified # 👽 E0.6 alien +1F47E ; fully-qualified # 👾 E0.6 alien monster +1F916 ; fully-qualified # 🤖 E1.0 robot + +# subgroup: cat-face +1F63A ; fully-qualified # 😺 E0.6 grinning cat +1F638 ; fully-qualified # 😸 E0.6 grinning cat with smiling eyes +1F639 ; fully-qualified # 😹 E0.6 cat with tears of joy +1F63B ; fully-qualified # 😻 E0.6 smiling cat with heart-eyes +1F63C ; fully-qualified # 😼 E0.6 cat with wry smile +1F63D ; fully-qualified # 😽 E0.6 kissing cat +1F640 ; fully-qualified # 🙀 E0.6 weary cat +1F63F ; fully-qualified # 😿 E0.6 crying cat +1F63E ; fully-qualified # 😾 E0.6 pouting cat + +# subgroup: monkey-face +1F648 ; fully-qualified # 🙈 E0.6 see-no-evil monkey +1F649 ; fully-qualified # 🙉 E0.6 hear-no-evil monkey +1F64A ; fully-qualified # 🙊 E0.6 speak-no-evil monkey + +# subgroup: heart +1F48C ; fully-qualified # 💌 E0.6 love letter +1F498 ; fully-qualified # 💘 E0.6 heart with arrow +1F49D ; fully-qualified # 💝 E0.6 heart with ribbon +1F496 ; fully-qualified # 💖 E0.6 sparkling heart +1F497 ; fully-qualified # 💗 E0.6 growing heart +1F493 ; fully-qualified # 💓 E0.6 beating heart +1F49E ; fully-qualified # 💞 E0.6 revolving hearts +1F495 ; fully-qualified # 💕 E0.6 two hearts +1F49F ; fully-qualified # 💟 E0.6 heart decoration +2763 FE0F ; fully-qualified # ❣️ E1.0 heart exclamation +2763 ; unqualified # ❣ E1.0 heart exclamation +1F494 ; fully-qualified # 💔 E0.6 broken heart +2764 FE0F 200D 1F525 ; fully-qualified # ❤️‍🔥 E13.1 heart on fire +2764 200D 1F525 ; unqualified # ❤‍🔥 E13.1 heart on fire +2764 FE0F 200D 1FA79 ; fully-qualified # ❤️‍🩹 E13.1 mending heart +2764 200D 1FA79 ; unqualified # ❤‍🩹 E13.1 mending heart +2764 FE0F ; fully-qualified # ❤️ E0.6 red heart +2764 ; unqualified # ❤ E0.6 red heart +1FA77 ; fully-qualified # 🩷 E15.0 pink heart +1F9E1 ; fully-qualified # 🧡 E5.0 orange heart +1F49B ; fully-qualified # 💛 E0.6 yellow heart +1F49A ; fully-qualified # 💚 E0.6 green heart +1F499 ; fully-qualified # 💙 E0.6 blue heart +1FA75 ; fully-qualified # 🩵 E15.0 light blue heart +1F49C ; fully-qualified # 💜 E0.6 purple heart +1F90E ; fully-qualified # 🤎 E12.0 brown heart +1F5A4 ; fully-qualified # 🖤 E3.0 black heart +1FA76 ; fully-qualified # 🩶 E15.0 grey heart +1F90D ; fully-qualified # 🤍 E12.0 white heart + +# subgroup: emotion +1F48B ; fully-qualified # 💋 E0.6 kiss mark +1F4AF ; fully-qualified # 💯 E0.6 hundred points +1F4A2 ; fully-qualified # 💢 E0.6 anger symbol +1F4A5 ; fully-qualified # 💥 E0.6 collision +1F4AB ; fully-qualified # 💫 E0.6 dizzy +1F4A6 ; fully-qualified # 💦 E0.6 sweat droplets +1F4A8 ; fully-qualified # 💨 E0.6 dashing away +1F573 FE0F ; fully-qualified # 🕳️ E0.7 hole +1F573 ; unqualified # 🕳 E0.7 hole +1F4AC ; fully-qualified # 💬 E0.6 speech balloon +1F441 FE0F 200D 1F5E8 FE0F ; fully-qualified # 👁️‍🗨️ E2.0 eye in speech bubble +1F441 200D 1F5E8 FE0F ; unqualified # 👁‍🗨️ E2.0 eye in speech bubble +1F441 FE0F 200D 1F5E8 ; minimally-qualified # 👁️‍🗨 E2.0 eye in speech bubble +1F441 200D 1F5E8 ; unqualified # 👁‍🗨 E2.0 eye in speech bubble +1F5E8 FE0F ; fully-qualified # 🗨️ E2.0 left speech bubble +1F5E8 ; unqualified # 🗨 E2.0 left speech bubble +1F5EF FE0F ; fully-qualified # 🗯️ E0.7 right anger bubble +1F5EF ; unqualified # 🗯 E0.7 right anger bubble +1F4AD ; fully-qualified # 💭 E1.0 thought balloon +1F4A4 ; fully-qualified # 💤 E0.6 ZZZ + +# Smileys & Emotion subtotal: 184 +# Smileys & Emotion subtotal: 184 w/o modifiers + +# group: People & Body + +# subgroup: hand-fingers-open +1F44B ; fully-qualified # 👋 E0.6 waving hand +1F44B 1F3FB ; fully-qualified # 👋🏻 E1.0 waving hand: light skin tone +1F44B 1F3FC ; fully-qualified # 👋🏼 E1.0 waving hand: medium-light skin tone +1F44B 1F3FD ; fully-qualified # 👋🏽 E1.0 waving hand: medium skin tone +1F44B 1F3FE ; fully-qualified # 👋🏾 E1.0 waving hand: medium-dark skin tone +1F44B 1F3FF ; fully-qualified # 👋🏿 E1.0 waving hand: dark skin tone +1F91A ; fully-qualified # 🤚 E3.0 raised back of hand +1F91A 1F3FB ; fully-qualified # 🤚🏻 E3.0 raised back of hand: light skin tone +1F91A 1F3FC ; fully-qualified # 🤚🏼 E3.0 raised back of hand: medium-light skin tone +1F91A 1F3FD ; fully-qualified # 🤚🏽 E3.0 raised back of hand: medium skin tone +1F91A 1F3FE ; fully-qualified # 🤚🏾 E3.0 raised back of hand: medium-dark skin tone +1F91A 1F3FF ; fully-qualified # 🤚🏿 E3.0 raised back of hand: dark skin tone +1F590 FE0F ; fully-qualified # 🖐️ E0.7 hand with fingers splayed +1F590 ; unqualified # 🖐 E0.7 hand with fingers splayed +1F590 1F3FB ; fully-qualified # 🖐🏻 E1.0 hand with fingers splayed: light skin tone +1F590 1F3FC ; fully-qualified # 🖐🏼 E1.0 hand with fingers splayed: medium-light skin tone +1F590 1F3FD ; fully-qualified # 🖐🏽 E1.0 hand with fingers splayed: medium skin tone +1F590 1F3FE ; fully-qualified # 🖐🏾 E1.0 hand with fingers splayed: medium-dark skin tone +1F590 1F3FF ; fully-qualified # 🖐🏿 E1.0 hand with fingers splayed: dark skin tone +270B ; fully-qualified # ✋ E0.6 raised hand +270B 1F3FB ; fully-qualified # ✋🏻 E1.0 raised hand: light skin tone +270B 1F3FC ; fully-qualified # ✋🏼 E1.0 raised hand: medium-light skin tone +270B 1F3FD ; fully-qualified # ✋🏽 E1.0 raised hand: medium skin tone +270B 1F3FE ; fully-qualified # ✋🏾 E1.0 raised hand: medium-dark skin tone +270B 1F3FF ; fully-qualified # ✋🏿 E1.0 raised hand: dark skin tone +1F596 ; fully-qualified # 🖖 E1.0 vulcan salute +1F596 1F3FB ; fully-qualified # 🖖🏻 E1.0 vulcan salute: light skin tone +1F596 1F3FC ; fully-qualified # 🖖🏼 E1.0 vulcan salute: medium-light skin tone +1F596 1F3FD ; fully-qualified # 🖖🏽 E1.0 vulcan salute: medium skin tone +1F596 1F3FE ; fully-qualified # 🖖🏾 E1.0 vulcan salute: medium-dark skin tone +1F596 1F3FF ; fully-qualified # 🖖🏿 E1.0 vulcan salute: dark skin tone +1FAF1 ; fully-qualified # 🫱 E14.0 rightwards hand +1FAF1 1F3FB ; fully-qualified # 🫱🏻 E14.0 rightwards hand: light skin tone +1FAF1 1F3FC ; fully-qualified # 🫱🏼 E14.0 rightwards hand: medium-light skin tone +1FAF1 1F3FD ; fully-qualified # 🫱🏽 E14.0 rightwards hand: medium skin tone +1FAF1 1F3FE ; fully-qualified # 🫱🏾 E14.0 rightwards hand: medium-dark skin tone +1FAF1 1F3FF ; fully-qualified # 🫱🏿 E14.0 rightwards hand: dark skin tone +1FAF2 ; fully-qualified # 🫲 E14.0 leftwards hand +1FAF2 1F3FB ; fully-qualified # 🫲🏻 E14.0 leftwards hand: light skin tone +1FAF2 1F3FC ; fully-qualified # 🫲🏼 E14.0 leftwards hand: medium-light skin tone +1FAF2 1F3FD ; fully-qualified # 🫲🏽 E14.0 leftwards hand: medium skin tone +1FAF2 1F3FE ; fully-qualified # 🫲🏾 E14.0 leftwards hand: medium-dark skin tone +1FAF2 1F3FF ; fully-qualified # 🫲🏿 E14.0 leftwards hand: dark skin tone +1FAF3 ; fully-qualified # 🫳 E14.0 palm down hand +1FAF3 1F3FB ; fully-qualified # 🫳🏻 E14.0 palm down hand: light skin tone +1FAF3 1F3FC ; fully-qualified # 🫳🏼 E14.0 palm down hand: medium-light skin tone +1FAF3 1F3FD ; fully-qualified # 🫳🏽 E14.0 palm down hand: medium skin tone +1FAF3 1F3FE ; fully-qualified # 🫳🏾 E14.0 palm down hand: medium-dark skin tone +1FAF3 1F3FF ; fully-qualified # 🫳🏿 E14.0 palm down hand: dark skin tone +1FAF4 ; fully-qualified # 🫴 E14.0 palm up hand +1FAF4 1F3FB ; fully-qualified # 🫴🏻 E14.0 palm up hand: light skin tone +1FAF4 1F3FC ; fully-qualified # 🫴🏼 E14.0 palm up hand: medium-light skin tone +1FAF4 1F3FD ; fully-qualified # 🫴🏽 E14.0 palm up hand: medium skin tone +1FAF4 1F3FE ; fully-qualified # 🫴🏾 E14.0 palm up hand: medium-dark skin tone +1FAF4 1F3FF ; fully-qualified # 🫴🏿 E14.0 palm up hand: dark skin tone +1FAF7 ; fully-qualified # 🫷 E15.0 leftwards pushing hand +1FAF7 1F3FB ; fully-qualified # 🫷🏻 E15.0 leftwards pushing hand: light skin tone +1FAF7 1F3FC ; fully-qualified # 🫷🏼 E15.0 leftwards pushing hand: medium-light skin tone +1FAF7 1F3FD ; fully-qualified # 🫷🏽 E15.0 leftwards pushing hand: medium skin tone +1FAF7 1F3FE ; fully-qualified # 🫷🏾 E15.0 leftwards pushing hand: medium-dark skin tone +1FAF7 1F3FF ; fully-qualified # 🫷🏿 E15.0 leftwards pushing hand: dark skin tone +1FAF8 ; fully-qualified # 🫸 E15.0 rightwards pushing hand +1FAF8 1F3FB ; fully-qualified # 🫸🏻 E15.0 rightwards pushing hand: light skin tone +1FAF8 1F3FC ; fully-qualified # 🫸🏼 E15.0 rightwards pushing hand: medium-light skin tone +1FAF8 1F3FD ; fully-qualified # 🫸🏽 E15.0 rightwards pushing hand: medium skin tone +1FAF8 1F3FE ; fully-qualified # 🫸🏾 E15.0 rightwards pushing hand: medium-dark skin tone +1FAF8 1F3FF ; fully-qualified # 🫸🏿 E15.0 rightwards pushing hand: dark skin tone + +# subgroup: hand-fingers-partial +1F44C ; fully-qualified # 👌 E0.6 OK hand +1F44C 1F3FB ; fully-qualified # 👌🏻 E1.0 OK hand: light skin tone +1F44C 1F3FC ; fully-qualified # 👌🏼 E1.0 OK hand: medium-light skin tone +1F44C 1F3FD ; fully-qualified # 👌🏽 E1.0 OK hand: medium skin tone +1F44C 1F3FE ; fully-qualified # 👌🏾 E1.0 OK hand: medium-dark skin tone +1F44C 1F3FF ; fully-qualified # 👌🏿 E1.0 OK hand: dark skin tone +1F90C ; fully-qualified # 🤌 E13.0 pinched fingers +1F90C 1F3FB ; fully-qualified # 🤌🏻 E13.0 pinched fingers: light skin tone +1F90C 1F3FC ; fully-qualified # 🤌🏼 E13.0 pinched fingers: medium-light skin tone +1F90C 1F3FD ; fully-qualified # 🤌🏽 E13.0 pinched fingers: medium skin tone +1F90C 1F3FE ; fully-qualified # 🤌🏾 E13.0 pinched fingers: medium-dark skin tone +1F90C 1F3FF ; fully-qualified # 🤌🏿 E13.0 pinched fingers: dark skin tone +1F90F ; fully-qualified # 🤏 E12.0 pinching hand +1F90F 1F3FB ; fully-qualified # 🤏🏻 E12.0 pinching hand: light skin tone +1F90F 1F3FC ; fully-qualified # 🤏🏼 E12.0 pinching hand: medium-light skin tone +1F90F 1F3FD ; fully-qualified # 🤏🏽 E12.0 pinching hand: medium skin tone +1F90F 1F3FE ; fully-qualified # 🤏🏾 E12.0 pinching hand: medium-dark skin tone +1F90F 1F3FF ; fully-qualified # 🤏🏿 E12.0 pinching hand: dark skin tone +270C FE0F ; fully-qualified # ✌️ E0.6 victory hand +270C ; unqualified # ✌ E0.6 victory hand +270C 1F3FB ; fully-qualified # ✌🏻 E1.0 victory hand: light skin tone +270C 1F3FC ; fully-qualified # ✌🏼 E1.0 victory hand: medium-light skin tone +270C 1F3FD ; fully-qualified # ✌🏽 E1.0 victory hand: medium skin tone +270C 1F3FE ; fully-qualified # ✌🏾 E1.0 victory hand: medium-dark skin tone +270C 1F3FF ; fully-qualified # ✌🏿 E1.0 victory hand: dark skin tone +1F91E ; fully-qualified # 🤞 E3.0 crossed fingers +1F91E 1F3FB ; fully-qualified # 🤞🏻 E3.0 crossed fingers: light skin tone +1F91E 1F3FC ; fully-qualified # 🤞🏼 E3.0 crossed fingers: medium-light skin tone +1F91E 1F3FD ; fully-qualified # 🤞🏽 E3.0 crossed fingers: medium skin tone +1F91E 1F3FE ; fully-qualified # 🤞🏾 E3.0 crossed fingers: medium-dark skin tone +1F91E 1F3FF ; fully-qualified # 🤞🏿 E3.0 crossed fingers: dark skin tone +1FAF0 ; fully-qualified # 🫰 E14.0 hand with index finger and thumb crossed +1FAF0 1F3FB ; fully-qualified # 🫰🏻 E14.0 hand with index finger and thumb crossed: light skin tone +1FAF0 1F3FC ; fully-qualified # 🫰🏼 E14.0 hand with index finger and thumb crossed: medium-light skin tone +1FAF0 1F3FD ; fully-qualified # 🫰🏽 E14.0 hand with index finger and thumb crossed: medium skin tone +1FAF0 1F3FE ; fully-qualified # 🫰🏾 E14.0 hand with index finger and thumb crossed: medium-dark skin tone +1FAF0 1F3FF ; fully-qualified # 🫰🏿 E14.0 hand with index finger and thumb crossed: dark skin tone +1F91F ; fully-qualified # 🤟 E5.0 love-you gesture +1F91F 1F3FB ; fully-qualified # 🤟🏻 E5.0 love-you gesture: light skin tone +1F91F 1F3FC ; fully-qualified # 🤟🏼 E5.0 love-you gesture: medium-light skin tone +1F91F 1F3FD ; fully-qualified # 🤟🏽 E5.0 love-you gesture: medium skin tone +1F91F 1F3FE ; fully-qualified # 🤟🏾 E5.0 love-you gesture: medium-dark skin tone +1F91F 1F3FF ; fully-qualified # 🤟🏿 E5.0 love-you gesture: dark skin tone +1F918 ; fully-qualified # 🤘 E1.0 sign of the horns +1F918 1F3FB ; fully-qualified # 🤘🏻 E1.0 sign of the horns: light skin tone +1F918 1F3FC ; fully-qualified # 🤘🏼 E1.0 sign of the horns: medium-light skin tone +1F918 1F3FD ; fully-qualified # 🤘🏽 E1.0 sign of the horns: medium skin tone +1F918 1F3FE ; fully-qualified # 🤘🏾 E1.0 sign of the horns: medium-dark skin tone +1F918 1F3FF ; fully-qualified # 🤘🏿 E1.0 sign of the horns: dark skin tone +1F919 ; fully-qualified # 🤙 E3.0 call me hand +1F919 1F3FB ; fully-qualified # 🤙🏻 E3.0 call me hand: light skin tone +1F919 1F3FC ; fully-qualified # 🤙🏼 E3.0 call me hand: medium-light skin tone +1F919 1F3FD ; fully-qualified # 🤙🏽 E3.0 call me hand: medium skin tone +1F919 1F3FE ; fully-qualified # 🤙🏾 E3.0 call me hand: medium-dark skin tone +1F919 1F3FF ; fully-qualified # 🤙🏿 E3.0 call me hand: dark skin tone + +# subgroup: hand-single-finger +1F448 ; fully-qualified # 👈 E0.6 backhand index pointing left +1F448 1F3FB ; fully-qualified # 👈🏻 E1.0 backhand index pointing left: light skin tone +1F448 1F3FC ; fully-qualified # 👈🏼 E1.0 backhand index pointing left: medium-light skin tone +1F448 1F3FD ; fully-qualified # 👈🏽 E1.0 backhand index pointing left: medium skin tone +1F448 1F3FE ; fully-qualified # 👈🏾 E1.0 backhand index pointing left: medium-dark skin tone +1F448 1F3FF ; fully-qualified # 👈🏿 E1.0 backhand index pointing left: dark skin tone +1F449 ; fully-qualified # 👉 E0.6 backhand index pointing right +1F449 1F3FB ; fully-qualified # 👉🏻 E1.0 backhand index pointing right: light skin tone +1F449 1F3FC ; fully-qualified # 👉🏼 E1.0 backhand index pointing right: medium-light skin tone +1F449 1F3FD ; fully-qualified # 👉🏽 E1.0 backhand index pointing right: medium skin tone +1F449 1F3FE ; fully-qualified # 👉🏾 E1.0 backhand index pointing right: medium-dark skin tone +1F449 1F3FF ; fully-qualified # 👉🏿 E1.0 backhand index pointing right: dark skin tone +1F446 ; fully-qualified # 👆 E0.6 backhand index pointing up +1F446 1F3FB ; fully-qualified # 👆🏻 E1.0 backhand index pointing up: light skin tone +1F446 1F3FC ; fully-qualified # 👆🏼 E1.0 backhand index pointing up: medium-light skin tone +1F446 1F3FD ; fully-qualified # 👆🏽 E1.0 backhand index pointing up: medium skin tone +1F446 1F3FE ; fully-qualified # 👆🏾 E1.0 backhand index pointing up: medium-dark skin tone +1F446 1F3FF ; fully-qualified # 👆🏿 E1.0 backhand index pointing up: dark skin tone +1F595 ; fully-qualified # 🖕 E1.0 middle finger +1F595 1F3FB ; fully-qualified # 🖕🏻 E1.0 middle finger: light skin tone +1F595 1F3FC ; fully-qualified # 🖕🏼 E1.0 middle finger: medium-light skin tone +1F595 1F3FD ; fully-qualified # 🖕🏽 E1.0 middle finger: medium skin tone +1F595 1F3FE ; fully-qualified # 🖕🏾 E1.0 middle finger: medium-dark skin tone +1F595 1F3FF ; fully-qualified # 🖕🏿 E1.0 middle finger: dark skin tone +1F447 ; fully-qualified # 👇 E0.6 backhand index pointing down +1F447 1F3FB ; fully-qualified # 👇🏻 E1.0 backhand index pointing down: light skin tone +1F447 1F3FC ; fully-qualified # 👇🏼 E1.0 backhand index pointing down: medium-light skin tone +1F447 1F3FD ; fully-qualified # 👇🏽 E1.0 backhand index pointing down: medium skin tone +1F447 1F3FE ; fully-qualified # 👇🏾 E1.0 backhand index pointing down: medium-dark skin tone +1F447 1F3FF ; fully-qualified # 👇🏿 E1.0 backhand index pointing down: dark skin tone +261D FE0F ; fully-qualified # ☝️ E0.6 index pointing up +261D ; unqualified # ☝ E0.6 index pointing up +261D 1F3FB ; fully-qualified # ☝🏻 E1.0 index pointing up: light skin tone +261D 1F3FC ; fully-qualified # ☝🏼 E1.0 index pointing up: medium-light skin tone +261D 1F3FD ; fully-qualified # ☝🏽 E1.0 index pointing up: medium skin tone +261D 1F3FE ; fully-qualified # ☝🏾 E1.0 index pointing up: medium-dark skin tone +261D 1F3FF ; fully-qualified # ☝🏿 E1.0 index pointing up: dark skin tone +1FAF5 ; fully-qualified # 🫵 E14.0 index pointing at the viewer +1FAF5 1F3FB ; fully-qualified # 🫵🏻 E14.0 index pointing at the viewer: light skin tone +1FAF5 1F3FC ; fully-qualified # 🫵🏼 E14.0 index pointing at the viewer: medium-light skin tone +1FAF5 1F3FD ; fully-qualified # 🫵🏽 E14.0 index pointing at the viewer: medium skin tone +1FAF5 1F3FE ; fully-qualified # 🫵🏾 E14.0 index pointing at the viewer: medium-dark skin tone +1FAF5 1F3FF ; fully-qualified # 🫵🏿 E14.0 index pointing at the viewer: dark skin tone + +# subgroup: hand-fingers-closed +1F44D ; fully-qualified # 👍 E0.6 thumbs up +1F44D 1F3FB ; fully-qualified # 👍🏻 E1.0 thumbs up: light skin tone +1F44D 1F3FC ; fully-qualified # 👍🏼 E1.0 thumbs up: medium-light skin tone +1F44D 1F3FD ; fully-qualified # 👍🏽 E1.0 thumbs up: medium skin tone +1F44D 1F3FE ; fully-qualified # 👍🏾 E1.0 thumbs up: medium-dark skin tone +1F44D 1F3FF ; fully-qualified # 👍🏿 E1.0 thumbs up: dark skin tone +1F44E ; fully-qualified # 👎 E0.6 thumbs down +1F44E 1F3FB ; fully-qualified # 👎🏻 E1.0 thumbs down: light skin tone +1F44E 1F3FC ; fully-qualified # 👎🏼 E1.0 thumbs down: medium-light skin tone +1F44E 1F3FD ; fully-qualified # 👎🏽 E1.0 thumbs down: medium skin tone +1F44E 1F3FE ; fully-qualified # 👎🏾 E1.0 thumbs down: medium-dark skin tone +1F44E 1F3FF ; fully-qualified # 👎🏿 E1.0 thumbs down: dark skin tone +270A ; fully-qualified # ✊ E0.6 raised fist +270A 1F3FB ; fully-qualified # ✊🏻 E1.0 raised fist: light skin tone +270A 1F3FC ; fully-qualified # ✊🏼 E1.0 raised fist: medium-light skin tone +270A 1F3FD ; fully-qualified # ✊🏽 E1.0 raised fist: medium skin tone +270A 1F3FE ; fully-qualified # ✊🏾 E1.0 raised fist: medium-dark skin tone +270A 1F3FF ; fully-qualified # ✊🏿 E1.0 raised fist: dark skin tone +1F44A ; fully-qualified # 👊 E0.6 oncoming fist +1F44A 1F3FB ; fully-qualified # 👊🏻 E1.0 oncoming fist: light skin tone +1F44A 1F3FC ; fully-qualified # 👊🏼 E1.0 oncoming fist: medium-light skin tone +1F44A 1F3FD ; fully-qualified # 👊🏽 E1.0 oncoming fist: medium skin tone +1F44A 1F3FE ; fully-qualified # 👊🏾 E1.0 oncoming fist: medium-dark skin tone +1F44A 1F3FF ; fully-qualified # 👊🏿 E1.0 oncoming fist: dark skin tone +1F91B ; fully-qualified # 🤛 E3.0 left-facing fist +1F91B 1F3FB ; fully-qualified # 🤛🏻 E3.0 left-facing fist: light skin tone +1F91B 1F3FC ; fully-qualified # 🤛🏼 E3.0 left-facing fist: medium-light skin tone +1F91B 1F3FD ; fully-qualified # 🤛🏽 E3.0 left-facing fist: medium skin tone +1F91B 1F3FE ; fully-qualified # 🤛🏾 E3.0 left-facing fist: medium-dark skin tone +1F91B 1F3FF ; fully-qualified # 🤛🏿 E3.0 left-facing fist: dark skin tone +1F91C ; fully-qualified # 🤜 E3.0 right-facing fist +1F91C 1F3FB ; fully-qualified # 🤜🏻 E3.0 right-facing fist: light skin tone +1F91C 1F3FC ; fully-qualified # 🤜🏼 E3.0 right-facing fist: medium-light skin tone +1F91C 1F3FD ; fully-qualified # 🤜🏽 E3.0 right-facing fist: medium skin tone +1F91C 1F3FE ; fully-qualified # 🤜🏾 E3.0 right-facing fist: medium-dark skin tone +1F91C 1F3FF ; fully-qualified # 🤜🏿 E3.0 right-facing fist: dark skin tone + +# subgroup: hands +1F44F ; fully-qualified # 👏 E0.6 clapping hands +1F44F 1F3FB ; fully-qualified # 👏🏻 E1.0 clapping hands: light skin tone +1F44F 1F3FC ; fully-qualified # 👏🏼 E1.0 clapping hands: medium-light skin tone +1F44F 1F3FD ; fully-qualified # 👏🏽 E1.0 clapping hands: medium skin tone +1F44F 1F3FE ; fully-qualified # 👏🏾 E1.0 clapping hands: medium-dark skin tone +1F44F 1F3FF ; fully-qualified # 👏🏿 E1.0 clapping hands: dark skin tone +1F64C ; fully-qualified # 🙌 E0.6 raising hands +1F64C 1F3FB ; fully-qualified # 🙌🏻 E1.0 raising hands: light skin tone +1F64C 1F3FC ; fully-qualified # 🙌🏼 E1.0 raising hands: medium-light skin tone +1F64C 1F3FD ; fully-qualified # 🙌🏽 E1.0 raising hands: medium skin tone +1F64C 1F3FE ; fully-qualified # 🙌🏾 E1.0 raising hands: medium-dark skin tone +1F64C 1F3FF ; fully-qualified # 🙌🏿 E1.0 raising hands: dark skin tone +1FAF6 ; fully-qualified # 🫶 E14.0 heart hands +1FAF6 1F3FB ; fully-qualified # 🫶🏻 E14.0 heart hands: light skin tone +1FAF6 1F3FC ; fully-qualified # 🫶🏼 E14.0 heart hands: medium-light skin tone +1FAF6 1F3FD ; fully-qualified # 🫶🏽 E14.0 heart hands: medium skin tone +1FAF6 1F3FE ; fully-qualified # 🫶🏾 E14.0 heart hands: medium-dark skin tone +1FAF6 1F3FF ; fully-qualified # 🫶🏿 E14.0 heart hands: dark skin tone +1F450 ; fully-qualified # 👐 E0.6 open hands +1F450 1F3FB ; fully-qualified # 👐🏻 E1.0 open hands: light skin tone +1F450 1F3FC ; fully-qualified # 👐🏼 E1.0 open hands: medium-light skin tone +1F450 1F3FD ; fully-qualified # 👐🏽 E1.0 open hands: medium skin tone +1F450 1F3FE ; fully-qualified # 👐🏾 E1.0 open hands: medium-dark skin tone +1F450 1F3FF ; fully-qualified # 👐🏿 E1.0 open hands: dark skin tone +1F932 ; fully-qualified # 🤲 E5.0 palms up together +1F932 1F3FB ; fully-qualified # 🤲🏻 E5.0 palms up together: light skin tone +1F932 1F3FC ; fully-qualified # 🤲🏼 E5.0 palms up together: medium-light skin tone +1F932 1F3FD ; fully-qualified # 🤲🏽 E5.0 palms up together: medium skin tone +1F932 1F3FE ; fully-qualified # 🤲🏾 E5.0 palms up together: medium-dark skin tone +1F932 1F3FF ; fully-qualified # 🤲🏿 E5.0 palms up together: dark skin tone +1F91D ; fully-qualified # 🤝 E3.0 handshake +1F91D 1F3FB ; fully-qualified # 🤝🏻 E14.0 handshake: light skin tone +1F91D 1F3FC ; fully-qualified # 🤝🏼 E14.0 handshake: medium-light skin tone +1F91D 1F3FD ; fully-qualified # 🤝🏽 E14.0 handshake: medium skin tone +1F91D 1F3FE ; fully-qualified # 🤝🏾 E14.0 handshake: medium-dark skin tone +1F91D 1F3FF ; fully-qualified # 🤝🏿 E14.0 handshake: dark skin tone +1FAF1 1F3FB 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏻‍🫲🏼 E14.0 handshake: light skin tone, medium-light skin tone +1FAF1 1F3FB 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏻‍🫲🏽 E14.0 handshake: light skin tone, medium skin tone +1FAF1 1F3FB 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏻‍🫲🏾 E14.0 handshake: light skin tone, medium-dark skin tone +1FAF1 1F3FB 200D 1FAF2 1F3FF ; fully-qualified # 🫱🏻‍🫲🏿 E14.0 handshake: light skin tone, dark skin tone +1FAF1 1F3FC 200D 1FAF2 1F3FB ; fully-qualified # 🫱🏼‍🫲🏻 E14.0 handshake: medium-light skin tone, light skin tone +1FAF1 1F3FC 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏼‍🫲🏽 E14.0 handshake: medium-light skin tone, medium skin tone +1FAF1 1F3FC 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏼‍🫲🏾 E14.0 handshake: medium-light skin tone, medium-dark skin tone +1FAF1 1F3FC 200D 1FAF2 1F3FF ; fully-qualified # 🫱🏼‍🫲🏿 E14.0 handshake: medium-light skin tone, dark skin tone +1FAF1 1F3FD 200D 1FAF2 1F3FB ; fully-qualified # 🫱🏽‍🫲🏻 E14.0 handshake: medium skin tone, light skin tone +1FAF1 1F3FD 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏽‍🫲🏼 E14.0 handshake: medium skin tone, medium-light skin tone +1FAF1 1F3FD 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏽‍🫲🏾 E14.0 handshake: medium skin tone, medium-dark skin tone +1FAF1 1F3FD 200D 1FAF2 1F3FF ; fully-qualified # 🫱🏽‍🫲🏿 E14.0 handshake: medium skin tone, dark skin tone +1FAF1 1F3FE 200D 1FAF2 1F3FB ; fully-qualified # 🫱🏾‍🫲🏻 E14.0 handshake: medium-dark skin tone, light skin tone +1FAF1 1F3FE 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏾‍🫲🏼 E14.0 handshake: medium-dark skin tone, medium-light skin tone +1FAF1 1F3FE 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏾‍🫲🏽 E14.0 handshake: medium-dark skin tone, medium skin tone +1FAF1 1F3FE 200D 1FAF2 1F3FF ; fully-qualified # 🫱🏾‍🫲🏿 E14.0 handshake: medium-dark skin tone, dark skin tone +1FAF1 1F3FF 200D 1FAF2 1F3FB ; fully-qualified # 🫱🏿‍🫲🏻 E14.0 handshake: dark skin tone, light skin tone +1FAF1 1F3FF 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏿‍🫲🏼 E14.0 handshake: dark skin tone, medium-light skin tone +1FAF1 1F3FF 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏿‍🫲🏽 E14.0 handshake: dark skin tone, medium skin tone +1FAF1 1F3FF 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏿‍🫲🏾 E14.0 handshake: dark skin tone, medium-dark skin tone +1F64F ; fully-qualified # 🙏 E0.6 folded hands +1F64F 1F3FB ; fully-qualified # 🙏🏻 E1.0 folded hands: light skin tone +1F64F 1F3FC ; fully-qualified # 🙏🏼 E1.0 folded hands: medium-light skin tone +1F64F 1F3FD ; fully-qualified # 🙏🏽 E1.0 folded hands: medium skin tone +1F64F 1F3FE ; fully-qualified # 🙏🏾 E1.0 folded hands: medium-dark skin tone +1F64F 1F3FF ; fully-qualified # 🙏🏿 E1.0 folded hands: dark skin tone + +# subgroup: hand-prop +270D FE0F ; fully-qualified # ✍️ E0.7 writing hand +270D ; unqualified # ✍ E0.7 writing hand +270D 1F3FB ; fully-qualified # ✍🏻 E1.0 writing hand: light skin tone +270D 1F3FC ; fully-qualified # ✍🏼 E1.0 writing hand: medium-light skin tone +270D 1F3FD ; fully-qualified # ✍🏽 E1.0 writing hand: medium skin tone +270D 1F3FE ; fully-qualified # ✍🏾 E1.0 writing hand: medium-dark skin tone +270D 1F3FF ; fully-qualified # ✍🏿 E1.0 writing hand: dark skin tone +1F485 ; fully-qualified # 💅 E0.6 nail polish +1F485 1F3FB ; fully-qualified # 💅🏻 E1.0 nail polish: light skin tone +1F485 1F3FC ; fully-qualified # 💅🏼 E1.0 nail polish: medium-light skin tone +1F485 1F3FD ; fully-qualified # 💅🏽 E1.0 nail polish: medium skin tone +1F485 1F3FE ; fully-qualified # 💅🏾 E1.0 nail polish: medium-dark skin tone +1F485 1F3FF ; fully-qualified # 💅🏿 E1.0 nail polish: dark skin tone +1F933 ; fully-qualified # 🤳 E3.0 selfie +1F933 1F3FB ; fully-qualified # 🤳🏻 E3.0 selfie: light skin tone +1F933 1F3FC ; fully-qualified # 🤳🏼 E3.0 selfie: medium-light skin tone +1F933 1F3FD ; fully-qualified # 🤳🏽 E3.0 selfie: medium skin tone +1F933 1F3FE ; fully-qualified # 🤳🏾 E3.0 selfie: medium-dark skin tone +1F933 1F3FF ; fully-qualified # 🤳🏿 E3.0 selfie: dark skin tone + +# subgroup: body-parts +1F4AA ; fully-qualified # 💪 E0.6 flexed biceps +1F4AA 1F3FB ; fully-qualified # 💪🏻 E1.0 flexed biceps: light skin tone +1F4AA 1F3FC ; fully-qualified # 💪🏼 E1.0 flexed biceps: medium-light skin tone +1F4AA 1F3FD ; fully-qualified # 💪🏽 E1.0 flexed biceps: medium skin tone +1F4AA 1F3FE ; fully-qualified # 💪🏾 E1.0 flexed biceps: medium-dark skin tone +1F4AA 1F3FF ; fully-qualified # 💪🏿 E1.0 flexed biceps: dark skin tone +1F9BE ; fully-qualified # 🦾 E12.0 mechanical arm +1F9BF ; fully-qualified # 🦿 E12.0 mechanical leg +1F9B5 ; fully-qualified # 🦵 E11.0 leg +1F9B5 1F3FB ; fully-qualified # 🦵🏻 E11.0 leg: light skin tone +1F9B5 1F3FC ; fully-qualified # 🦵🏼 E11.0 leg: medium-light skin tone +1F9B5 1F3FD ; fully-qualified # 🦵🏽 E11.0 leg: medium skin tone +1F9B5 1F3FE ; fully-qualified # 🦵🏾 E11.0 leg: medium-dark skin tone +1F9B5 1F3FF ; fully-qualified # 🦵🏿 E11.0 leg: dark skin tone +1F9B6 ; fully-qualified # 🦶 E11.0 foot +1F9B6 1F3FB ; fully-qualified # 🦶🏻 E11.0 foot: light skin tone +1F9B6 1F3FC ; fully-qualified # 🦶🏼 E11.0 foot: medium-light skin tone +1F9B6 1F3FD ; fully-qualified # 🦶🏽 E11.0 foot: medium skin tone +1F9B6 1F3FE ; fully-qualified # 🦶🏾 E11.0 foot: medium-dark skin tone +1F9B6 1F3FF ; fully-qualified # 🦶🏿 E11.0 foot: dark skin tone +1F442 ; fully-qualified # 👂 E0.6 ear +1F442 1F3FB ; fully-qualified # 👂🏻 E1.0 ear: light skin tone +1F442 1F3FC ; fully-qualified # 👂🏼 E1.0 ear: medium-light skin tone +1F442 1F3FD ; fully-qualified # 👂🏽 E1.0 ear: medium skin tone +1F442 1F3FE ; fully-qualified # 👂🏾 E1.0 ear: medium-dark skin tone +1F442 1F3FF ; fully-qualified # 👂🏿 E1.0 ear: dark skin tone +1F9BB ; fully-qualified # 🦻 E12.0 ear with hearing aid +1F9BB 1F3FB ; fully-qualified # 🦻🏻 E12.0 ear with hearing aid: light skin tone +1F9BB 1F3FC ; fully-qualified # 🦻🏼 E12.0 ear with hearing aid: medium-light skin tone +1F9BB 1F3FD ; fully-qualified # 🦻🏽 E12.0 ear with hearing aid: medium skin tone +1F9BB 1F3FE ; fully-qualified # 🦻🏾 E12.0 ear with hearing aid: medium-dark skin tone +1F9BB 1F3FF ; fully-qualified # 🦻🏿 E12.0 ear with hearing aid: dark skin tone +1F443 ; fully-qualified # 👃 E0.6 nose +1F443 1F3FB ; fully-qualified # 👃🏻 E1.0 nose: light skin tone +1F443 1F3FC ; fully-qualified # 👃🏼 E1.0 nose: medium-light skin tone +1F443 1F3FD ; fully-qualified # 👃🏽 E1.0 nose: medium skin tone +1F443 1F3FE ; fully-qualified # 👃🏾 E1.0 nose: medium-dark skin tone +1F443 1F3FF ; fully-qualified # 👃🏿 E1.0 nose: dark skin tone +1F9E0 ; fully-qualified # 🧠 E5.0 brain +1FAC0 ; fully-qualified # 🫀 E13.0 anatomical heart +1FAC1 ; fully-qualified # 🫁 E13.0 lungs +1F9B7 ; fully-qualified # 🦷 E11.0 tooth +1F9B4 ; fully-qualified # 🦴 E11.0 bone +1F440 ; fully-qualified # 👀 E0.6 eyes +1F441 FE0F ; fully-qualified # 👁️ E0.7 eye +1F441 ; unqualified # 👁 E0.7 eye +1F445 ; fully-qualified # 👅 E0.6 tongue +1F444 ; fully-qualified # 👄 E0.6 mouth +1FAE6 ; fully-qualified # 🫦 E14.0 biting lip + +# subgroup: person +1F476 ; fully-qualified # 👶 E0.6 baby +1F476 1F3FB ; fully-qualified # 👶🏻 E1.0 baby: light skin tone +1F476 1F3FC ; fully-qualified # 👶🏼 E1.0 baby: medium-light skin tone +1F476 1F3FD ; fully-qualified # 👶🏽 E1.0 baby: medium skin tone +1F476 1F3FE ; fully-qualified # 👶🏾 E1.0 baby: medium-dark skin tone +1F476 1F3FF ; fully-qualified # 👶🏿 E1.0 baby: dark skin tone +1F9D2 ; fully-qualified # 🧒 E5.0 child +1F9D2 1F3FB ; fully-qualified # 🧒🏻 E5.0 child: light skin tone +1F9D2 1F3FC ; fully-qualified # 🧒🏼 E5.0 child: medium-light skin tone +1F9D2 1F3FD ; fully-qualified # 🧒🏽 E5.0 child: medium skin tone +1F9D2 1F3FE ; fully-qualified # 🧒🏾 E5.0 child: medium-dark skin tone +1F9D2 1F3FF ; fully-qualified # 🧒🏿 E5.0 child: dark skin tone +1F466 ; fully-qualified # 👦 E0.6 boy +1F466 1F3FB ; fully-qualified # 👦🏻 E1.0 boy: light skin tone +1F466 1F3FC ; fully-qualified # 👦🏼 E1.0 boy: medium-light skin tone +1F466 1F3FD ; fully-qualified # 👦🏽 E1.0 boy: medium skin tone +1F466 1F3FE ; fully-qualified # 👦🏾 E1.0 boy: medium-dark skin tone +1F466 1F3FF ; fully-qualified # 👦🏿 E1.0 boy: dark skin tone +1F467 ; fully-qualified # 👧 E0.6 girl +1F467 1F3FB ; fully-qualified # 👧🏻 E1.0 girl: light skin tone +1F467 1F3FC ; fully-qualified # 👧🏼 E1.0 girl: medium-light skin tone +1F467 1F3FD ; fully-qualified # 👧🏽 E1.0 girl: medium skin tone +1F467 1F3FE ; fully-qualified # 👧🏾 E1.0 girl: medium-dark skin tone +1F467 1F3FF ; fully-qualified # 👧🏿 E1.0 girl: dark skin tone +1F9D1 ; fully-qualified # 🧑 E5.0 person +1F9D1 1F3FB ; fully-qualified # 🧑🏻 E5.0 person: light skin tone +1F9D1 1F3FC ; fully-qualified # 🧑🏼 E5.0 person: medium-light skin tone +1F9D1 1F3FD ; fully-qualified # 🧑🏽 E5.0 person: medium skin tone +1F9D1 1F3FE ; fully-qualified # 🧑🏾 E5.0 person: medium-dark skin tone +1F9D1 1F3FF ; fully-qualified # 🧑🏿 E5.0 person: dark skin tone +1F471 ; fully-qualified # 👱 E0.6 person: blond hair +1F471 1F3FB ; fully-qualified # 👱🏻 E1.0 person: light skin tone, blond hair +1F471 1F3FC ; fully-qualified # 👱🏼 E1.0 person: medium-light skin tone, blond hair +1F471 1F3FD ; fully-qualified # 👱🏽 E1.0 person: medium skin tone, blond hair +1F471 1F3FE ; fully-qualified # 👱🏾 E1.0 person: medium-dark skin tone, blond hair +1F471 1F3FF ; fully-qualified # 👱🏿 E1.0 person: dark skin tone, blond hair +1F468 ; fully-qualified # 👨 E0.6 man +1F468 1F3FB ; fully-qualified # 👨🏻 E1.0 man: light skin tone +1F468 1F3FC ; fully-qualified # 👨🏼 E1.0 man: medium-light skin tone +1F468 1F3FD ; fully-qualified # 👨🏽 E1.0 man: medium skin tone +1F468 1F3FE ; fully-qualified # 👨🏾 E1.0 man: medium-dark skin tone +1F468 1F3FF ; fully-qualified # 👨🏿 E1.0 man: dark skin tone +1F9D4 ; fully-qualified # 🧔 E5.0 person: beard +1F9D4 1F3FB ; fully-qualified # 🧔🏻 E5.0 person: light skin tone, beard +1F9D4 1F3FC ; fully-qualified # 🧔🏼 E5.0 person: medium-light skin tone, beard +1F9D4 1F3FD ; fully-qualified # 🧔🏽 E5.0 person: medium skin tone, beard +1F9D4 1F3FE ; fully-qualified # 🧔🏾 E5.0 person: medium-dark skin tone, beard +1F9D4 1F3FF ; fully-qualified # 🧔🏿 E5.0 person: dark skin tone, beard +1F9D4 200D 2642 FE0F ; fully-qualified # 🧔‍♂️ E13.1 man: beard +1F9D4 200D 2642 ; minimally-qualified # 🧔‍♂ E13.1 man: beard +1F9D4 1F3FB 200D 2642 FE0F ; fully-qualified # 🧔🏻‍♂️ E13.1 man: light skin tone, beard +1F9D4 1F3FB 200D 2642 ; minimally-qualified # 🧔🏻‍♂ E13.1 man: light skin tone, beard +1F9D4 1F3FC 200D 2642 FE0F ; fully-qualified # 🧔🏼‍♂️ E13.1 man: medium-light skin tone, beard +1F9D4 1F3FC 200D 2642 ; minimally-qualified # 🧔🏼‍♂ E13.1 man: medium-light skin tone, beard +1F9D4 1F3FD 200D 2642 FE0F ; fully-qualified # 🧔🏽‍♂️ E13.1 man: medium skin tone, beard +1F9D4 1F3FD 200D 2642 ; minimally-qualified # 🧔🏽‍♂ E13.1 man: medium skin tone, beard +1F9D4 1F3FE 200D 2642 FE0F ; fully-qualified # 🧔🏾‍♂️ E13.1 man: medium-dark skin tone, beard +1F9D4 1F3FE 200D 2642 ; minimally-qualified # 🧔🏾‍♂ E13.1 man: medium-dark skin tone, beard +1F9D4 1F3FF 200D 2642 FE0F ; fully-qualified # 🧔🏿‍♂️ E13.1 man: dark skin tone, beard +1F9D4 1F3FF 200D 2642 ; minimally-qualified # 🧔🏿‍♂ E13.1 man: dark skin tone, beard +1F9D4 200D 2640 FE0F ; fully-qualified # 🧔‍♀️ E13.1 woman: beard +1F9D4 200D 2640 ; minimally-qualified # 🧔‍♀ E13.1 woman: beard +1F9D4 1F3FB 200D 2640 FE0F ; fully-qualified # 🧔🏻‍♀️ E13.1 woman: light skin tone, beard +1F9D4 1F3FB 200D 2640 ; minimally-qualified # 🧔🏻‍♀ E13.1 woman: light skin tone, beard +1F9D4 1F3FC 200D 2640 FE0F ; fully-qualified # 🧔🏼‍♀️ E13.1 woman: medium-light skin tone, beard +1F9D4 1F3FC 200D 2640 ; minimally-qualified # 🧔🏼‍♀ E13.1 woman: medium-light skin tone, beard +1F9D4 1F3FD 200D 2640 FE0F ; fully-qualified # 🧔🏽‍♀️ E13.1 woman: medium skin tone, beard +1F9D4 1F3FD 200D 2640 ; minimally-qualified # 🧔🏽‍♀ E13.1 woman: medium skin tone, beard +1F9D4 1F3FE 200D 2640 FE0F ; fully-qualified # 🧔🏾‍♀️ E13.1 woman: medium-dark skin tone, beard +1F9D4 1F3FE 200D 2640 ; minimally-qualified # 🧔🏾‍♀ E13.1 woman: medium-dark skin tone, beard +1F9D4 1F3FF 200D 2640 FE0F ; fully-qualified # 🧔🏿‍♀️ E13.1 woman: dark skin tone, beard +1F9D4 1F3FF 200D 2640 ; minimally-qualified # 🧔🏿‍♀ E13.1 woman: dark skin tone, beard +1F468 200D 1F9B0 ; fully-qualified # 👨‍🦰 E11.0 man: red hair +1F468 1F3FB 200D 1F9B0 ; fully-qualified # 👨🏻‍🦰 E11.0 man: light skin tone, red hair +1F468 1F3FC 200D 1F9B0 ; fully-qualified # 👨🏼‍🦰 E11.0 man: medium-light skin tone, red hair +1F468 1F3FD 200D 1F9B0 ; fully-qualified # 👨🏽‍🦰 E11.0 man: medium skin tone, red hair +1F468 1F3FE 200D 1F9B0 ; fully-qualified # 👨🏾‍🦰 E11.0 man: medium-dark skin tone, red hair +1F468 1F3FF 200D 1F9B0 ; fully-qualified # 👨🏿‍🦰 E11.0 man: dark skin tone, red hair +1F468 200D 1F9B1 ; fully-qualified # 👨‍🦱 E11.0 man: curly hair +1F468 1F3FB 200D 1F9B1 ; fully-qualified # 👨🏻‍🦱 E11.0 man: light skin tone, curly hair +1F468 1F3FC 200D 1F9B1 ; fully-qualified # 👨🏼‍🦱 E11.0 man: medium-light skin tone, curly hair +1F468 1F3FD 200D 1F9B1 ; fully-qualified # 👨🏽‍🦱 E11.0 man: medium skin tone, curly hair +1F468 1F3FE 200D 1F9B1 ; fully-qualified # 👨🏾‍🦱 E11.0 man: medium-dark skin tone, curly hair +1F468 1F3FF 200D 1F9B1 ; fully-qualified # 👨🏿‍🦱 E11.0 man: dark skin tone, curly hair +1F468 200D 1F9B3 ; fully-qualified # 👨‍🦳 E11.0 man: white hair +1F468 1F3FB 200D 1F9B3 ; fully-qualified # 👨🏻‍🦳 E11.0 man: light skin tone, white hair +1F468 1F3FC 200D 1F9B3 ; fully-qualified # 👨🏼‍🦳 E11.0 man: medium-light skin tone, white hair +1F468 1F3FD 200D 1F9B3 ; fully-qualified # 👨🏽‍🦳 E11.0 man: medium skin tone, white hair +1F468 1F3FE 200D 1F9B3 ; fully-qualified # 👨🏾‍🦳 E11.0 man: medium-dark skin tone, white hair +1F468 1F3FF 200D 1F9B3 ; fully-qualified # 👨🏿‍🦳 E11.0 man: dark skin tone, white hair +1F468 200D 1F9B2 ; fully-qualified # 👨‍🦲 E11.0 man: bald +1F468 1F3FB 200D 1F9B2 ; fully-qualified # 👨🏻‍🦲 E11.0 man: light skin tone, bald +1F468 1F3FC 200D 1F9B2 ; fully-qualified # 👨🏼‍🦲 E11.0 man: medium-light skin tone, bald +1F468 1F3FD 200D 1F9B2 ; fully-qualified # 👨🏽‍🦲 E11.0 man: medium skin tone, bald +1F468 1F3FE 200D 1F9B2 ; fully-qualified # 👨🏾‍🦲 E11.0 man: medium-dark skin tone, bald +1F468 1F3FF 200D 1F9B2 ; fully-qualified # 👨🏿‍🦲 E11.0 man: dark skin tone, bald +1F469 ; fully-qualified # 👩 E0.6 woman +1F469 1F3FB ; fully-qualified # 👩🏻 E1.0 woman: light skin tone +1F469 1F3FC ; fully-qualified # 👩🏼 E1.0 woman: medium-light skin tone +1F469 1F3FD ; fully-qualified # 👩🏽 E1.0 woman: medium skin tone +1F469 1F3FE ; fully-qualified # 👩🏾 E1.0 woman: medium-dark skin tone +1F469 1F3FF ; fully-qualified # 👩🏿 E1.0 woman: dark skin tone +1F469 200D 1F9B0 ; fully-qualified # 👩‍🦰 E11.0 woman: red hair +1F469 1F3FB 200D 1F9B0 ; fully-qualified # 👩🏻‍🦰 E11.0 woman: light skin tone, red hair +1F469 1F3FC 200D 1F9B0 ; fully-qualified # 👩🏼‍🦰 E11.0 woman: medium-light skin tone, red hair +1F469 1F3FD 200D 1F9B0 ; fully-qualified # 👩🏽‍🦰 E11.0 woman: medium skin tone, red hair +1F469 1F3FE 200D 1F9B0 ; fully-qualified # 👩🏾‍🦰 E11.0 woman: medium-dark skin tone, red hair +1F469 1F3FF 200D 1F9B0 ; fully-qualified # 👩🏿‍🦰 E11.0 woman: dark skin tone, red hair +1F9D1 200D 1F9B0 ; fully-qualified # 🧑‍🦰 E12.1 person: red hair +1F9D1 1F3FB 200D 1F9B0 ; fully-qualified # 🧑🏻‍🦰 E12.1 person: light skin tone, red hair +1F9D1 1F3FC 200D 1F9B0 ; fully-qualified # 🧑🏼‍🦰 E12.1 person: medium-light skin tone, red hair +1F9D1 1F3FD 200D 1F9B0 ; fully-qualified # 🧑🏽‍🦰 E12.1 person: medium skin tone, red hair +1F9D1 1F3FE 200D 1F9B0 ; fully-qualified # 🧑🏾‍🦰 E12.1 person: medium-dark skin tone, red hair +1F9D1 1F3FF 200D 1F9B0 ; fully-qualified # 🧑🏿‍🦰 E12.1 person: dark skin tone, red hair +1F469 200D 1F9B1 ; fully-qualified # 👩‍🦱 E11.0 woman: curly hair +1F469 1F3FB 200D 1F9B1 ; fully-qualified # 👩🏻‍🦱 E11.0 woman: light skin tone, curly hair +1F469 1F3FC 200D 1F9B1 ; fully-qualified # 👩🏼‍🦱 E11.0 woman: medium-light skin tone, curly hair +1F469 1F3FD 200D 1F9B1 ; fully-qualified # 👩🏽‍🦱 E11.0 woman: medium skin tone, curly hair +1F469 1F3FE 200D 1F9B1 ; fully-qualified # 👩🏾‍🦱 E11.0 woman: medium-dark skin tone, curly hair +1F469 1F3FF 200D 1F9B1 ; fully-qualified # 👩🏿‍🦱 E11.0 woman: dark skin tone, curly hair +1F9D1 200D 1F9B1 ; fully-qualified # 🧑‍🦱 E12.1 person: curly hair +1F9D1 1F3FB 200D 1F9B1 ; fully-qualified # 🧑🏻‍🦱 E12.1 person: light skin tone, curly hair +1F9D1 1F3FC 200D 1F9B1 ; fully-qualified # 🧑🏼‍🦱 E12.1 person: medium-light skin tone, curly hair +1F9D1 1F3FD 200D 1F9B1 ; fully-qualified # 🧑🏽‍🦱 E12.1 person: medium skin tone, curly hair +1F9D1 1F3FE 200D 1F9B1 ; fully-qualified # 🧑🏾‍🦱 E12.1 person: medium-dark skin tone, curly hair +1F9D1 1F3FF 200D 1F9B1 ; fully-qualified # 🧑🏿‍🦱 E12.1 person: dark skin tone, curly hair +1F469 200D 1F9B3 ; fully-qualified # 👩‍🦳 E11.0 woman: white hair +1F469 1F3FB 200D 1F9B3 ; fully-qualified # 👩🏻‍🦳 E11.0 woman: light skin tone, white hair +1F469 1F3FC 200D 1F9B3 ; fully-qualified # 👩🏼‍🦳 E11.0 woman: medium-light skin tone, white hair +1F469 1F3FD 200D 1F9B3 ; fully-qualified # 👩🏽‍🦳 E11.0 woman: medium skin tone, white hair +1F469 1F3FE 200D 1F9B3 ; fully-qualified # 👩🏾‍🦳 E11.0 woman: medium-dark skin tone, white hair +1F469 1F3FF 200D 1F9B3 ; fully-qualified # 👩🏿‍🦳 E11.0 woman: dark skin tone, white hair +1F9D1 200D 1F9B3 ; fully-qualified # 🧑‍🦳 E12.1 person: white hair +1F9D1 1F3FB 200D 1F9B3 ; fully-qualified # 🧑🏻‍🦳 E12.1 person: light skin tone, white hair +1F9D1 1F3FC 200D 1F9B3 ; fully-qualified # 🧑🏼‍🦳 E12.1 person: medium-light skin tone, white hair +1F9D1 1F3FD 200D 1F9B3 ; fully-qualified # 🧑🏽‍🦳 E12.1 person: medium skin tone, white hair +1F9D1 1F3FE 200D 1F9B3 ; fully-qualified # 🧑🏾‍🦳 E12.1 person: medium-dark skin tone, white hair +1F9D1 1F3FF 200D 1F9B3 ; fully-qualified # 🧑🏿‍🦳 E12.1 person: dark skin tone, white hair +1F469 200D 1F9B2 ; fully-qualified # 👩‍🦲 E11.0 woman: bald +1F469 1F3FB 200D 1F9B2 ; fully-qualified # 👩🏻‍🦲 E11.0 woman: light skin tone, bald +1F469 1F3FC 200D 1F9B2 ; fully-qualified # 👩🏼‍🦲 E11.0 woman: medium-light skin tone, bald +1F469 1F3FD 200D 1F9B2 ; fully-qualified # 👩🏽‍🦲 E11.0 woman: medium skin tone, bald +1F469 1F3FE 200D 1F9B2 ; fully-qualified # 👩🏾‍🦲 E11.0 woman: medium-dark skin tone, bald +1F469 1F3FF 200D 1F9B2 ; fully-qualified # 👩🏿‍🦲 E11.0 woman: dark skin tone, bald +1F9D1 200D 1F9B2 ; fully-qualified # 🧑‍🦲 E12.1 person: bald +1F9D1 1F3FB 200D 1F9B2 ; fully-qualified # 🧑🏻‍🦲 E12.1 person: light skin tone, bald +1F9D1 1F3FC 200D 1F9B2 ; fully-qualified # 🧑🏼‍🦲 E12.1 person: medium-light skin tone, bald +1F9D1 1F3FD 200D 1F9B2 ; fully-qualified # 🧑🏽‍🦲 E12.1 person: medium skin tone, bald +1F9D1 1F3FE 200D 1F9B2 ; fully-qualified # 🧑🏾‍🦲 E12.1 person: medium-dark skin tone, bald +1F9D1 1F3FF 200D 1F9B2 ; fully-qualified # 🧑🏿‍🦲 E12.1 person: dark skin tone, bald +1F471 200D 2640 FE0F ; fully-qualified # 👱‍♀️ E4.0 woman: blond hair +1F471 200D 2640 ; minimally-qualified # 👱‍♀ E4.0 woman: blond hair +1F471 1F3FB 200D 2640 FE0F ; fully-qualified # 👱🏻‍♀️ E4.0 woman: light skin tone, blond hair +1F471 1F3FB 200D 2640 ; minimally-qualified # 👱🏻‍♀ E4.0 woman: light skin tone, blond hair +1F471 1F3FC 200D 2640 FE0F ; fully-qualified # 👱🏼‍♀️ E4.0 woman: medium-light skin tone, blond hair +1F471 1F3FC 200D 2640 ; minimally-qualified # 👱🏼‍♀ E4.0 woman: medium-light skin tone, blond hair +1F471 1F3FD 200D 2640 FE0F ; fully-qualified # 👱🏽‍♀️ E4.0 woman: medium skin tone, blond hair +1F471 1F3FD 200D 2640 ; minimally-qualified # 👱🏽‍♀ E4.0 woman: medium skin tone, blond hair +1F471 1F3FE 200D 2640 FE0F ; fully-qualified # 👱🏾‍♀️ E4.0 woman: medium-dark skin tone, blond hair +1F471 1F3FE 200D 2640 ; minimally-qualified # 👱🏾‍♀ E4.0 woman: medium-dark skin tone, blond hair +1F471 1F3FF 200D 2640 FE0F ; fully-qualified # 👱🏿‍♀️ E4.0 woman: dark skin tone, blond hair +1F471 1F3FF 200D 2640 ; minimally-qualified # 👱🏿‍♀ E4.0 woman: dark skin tone, blond hair +1F471 200D 2642 FE0F ; fully-qualified # 👱‍♂️ E4.0 man: blond hair +1F471 200D 2642 ; minimally-qualified # 👱‍♂ E4.0 man: blond hair +1F471 1F3FB 200D 2642 FE0F ; fully-qualified # 👱🏻‍♂️ E4.0 man: light skin tone, blond hair +1F471 1F3FB 200D 2642 ; minimally-qualified # 👱🏻‍♂ E4.0 man: light skin tone, blond hair +1F471 1F3FC 200D 2642 FE0F ; fully-qualified # 👱🏼‍♂️ E4.0 man: medium-light skin tone, blond hair +1F471 1F3FC 200D 2642 ; minimally-qualified # 👱🏼‍♂ E4.0 man: medium-light skin tone, blond hair +1F471 1F3FD 200D 2642 FE0F ; fully-qualified # 👱🏽‍♂️ E4.0 man: medium skin tone, blond hair +1F471 1F3FD 200D 2642 ; minimally-qualified # 👱🏽‍♂ E4.0 man: medium skin tone, blond hair +1F471 1F3FE 200D 2642 FE0F ; fully-qualified # 👱🏾‍♂️ E4.0 man: medium-dark skin tone, blond hair +1F471 1F3FE 200D 2642 ; minimally-qualified # 👱🏾‍♂ E4.0 man: medium-dark skin tone, blond hair +1F471 1F3FF 200D 2642 FE0F ; fully-qualified # 👱🏿‍♂️ E4.0 man: dark skin tone, blond hair +1F471 1F3FF 200D 2642 ; minimally-qualified # 👱🏿‍♂ E4.0 man: dark skin tone, blond hair +1F9D3 ; fully-qualified # 🧓 E5.0 older person +1F9D3 1F3FB ; fully-qualified # 🧓🏻 E5.0 older person: light skin tone +1F9D3 1F3FC ; fully-qualified # 🧓🏼 E5.0 older person: medium-light skin tone +1F9D3 1F3FD ; fully-qualified # 🧓🏽 E5.0 older person: medium skin tone +1F9D3 1F3FE ; fully-qualified # 🧓🏾 E5.0 older person: medium-dark skin tone +1F9D3 1F3FF ; fully-qualified # 🧓🏿 E5.0 older person: dark skin tone +1F474 ; fully-qualified # 👴 E0.6 old man +1F474 1F3FB ; fully-qualified # 👴🏻 E1.0 old man: light skin tone +1F474 1F3FC ; fully-qualified # 👴🏼 E1.0 old man: medium-light skin tone +1F474 1F3FD ; fully-qualified # 👴🏽 E1.0 old man: medium skin tone +1F474 1F3FE ; fully-qualified # 👴🏾 E1.0 old man: medium-dark skin tone +1F474 1F3FF ; fully-qualified # 👴🏿 E1.0 old man: dark skin tone +1F475 ; fully-qualified # 👵 E0.6 old woman +1F475 1F3FB ; fully-qualified # 👵🏻 E1.0 old woman: light skin tone +1F475 1F3FC ; fully-qualified # 👵🏼 E1.0 old woman: medium-light skin tone +1F475 1F3FD ; fully-qualified # 👵🏽 E1.0 old woman: medium skin tone +1F475 1F3FE ; fully-qualified # 👵🏾 E1.0 old woman: medium-dark skin tone +1F475 1F3FF ; fully-qualified # 👵🏿 E1.0 old woman: dark skin tone + +# subgroup: person-gesture +1F64D ; fully-qualified # 🙍 E0.6 person frowning +1F64D 1F3FB ; fully-qualified # 🙍🏻 E1.0 person frowning: light skin tone +1F64D 1F3FC ; fully-qualified # 🙍🏼 E1.0 person frowning: medium-light skin tone +1F64D 1F3FD ; fully-qualified # 🙍🏽 E1.0 person frowning: medium skin tone +1F64D 1F3FE ; fully-qualified # 🙍🏾 E1.0 person frowning: medium-dark skin tone +1F64D 1F3FF ; fully-qualified # 🙍🏿 E1.0 person frowning: dark skin tone +1F64D 200D 2642 FE0F ; fully-qualified # 🙍‍♂️ E4.0 man frowning +1F64D 200D 2642 ; minimally-qualified # 🙍‍♂ E4.0 man frowning +1F64D 1F3FB 200D 2642 FE0F ; fully-qualified # 🙍🏻‍♂️ E4.0 man frowning: light skin tone +1F64D 1F3FB 200D 2642 ; minimally-qualified # 🙍🏻‍♂ E4.0 man frowning: light skin tone +1F64D 1F3FC 200D 2642 FE0F ; fully-qualified # 🙍🏼‍♂️ E4.0 man frowning: medium-light skin tone +1F64D 1F3FC 200D 2642 ; minimally-qualified # 🙍🏼‍♂ E4.0 man frowning: medium-light skin tone +1F64D 1F3FD 200D 2642 FE0F ; fully-qualified # 🙍🏽‍♂️ E4.0 man frowning: medium skin tone +1F64D 1F3FD 200D 2642 ; minimally-qualified # 🙍🏽‍♂ E4.0 man frowning: medium skin tone +1F64D 1F3FE 200D 2642 FE0F ; fully-qualified # 🙍🏾‍♂️ E4.0 man frowning: medium-dark skin tone +1F64D 1F3FE 200D 2642 ; minimally-qualified # 🙍🏾‍♂ E4.0 man frowning: medium-dark skin tone +1F64D 1F3FF 200D 2642 FE0F ; fully-qualified # 🙍🏿‍♂️ E4.0 man frowning: dark skin tone +1F64D 1F3FF 200D 2642 ; minimally-qualified # 🙍🏿‍♂ E4.0 man frowning: dark skin tone +1F64D 200D 2640 FE0F ; fully-qualified # 🙍‍♀️ E4.0 woman frowning +1F64D 200D 2640 ; minimally-qualified # 🙍‍♀ E4.0 woman frowning +1F64D 1F3FB 200D 2640 FE0F ; fully-qualified # 🙍🏻‍♀️ E4.0 woman frowning: light skin tone +1F64D 1F3FB 200D 2640 ; minimally-qualified # 🙍🏻‍♀ E4.0 woman frowning: light skin tone +1F64D 1F3FC 200D 2640 FE0F ; fully-qualified # 🙍🏼‍♀️ E4.0 woman frowning: medium-light skin tone +1F64D 1F3FC 200D 2640 ; minimally-qualified # 🙍🏼‍♀ E4.0 woman frowning: medium-light skin tone +1F64D 1F3FD 200D 2640 FE0F ; fully-qualified # 🙍🏽‍♀️ E4.0 woman frowning: medium skin tone +1F64D 1F3FD 200D 2640 ; minimally-qualified # 🙍🏽‍♀ E4.0 woman frowning: medium skin tone +1F64D 1F3FE 200D 2640 FE0F ; fully-qualified # 🙍🏾‍♀️ E4.0 woman frowning: medium-dark skin tone +1F64D 1F3FE 200D 2640 ; minimally-qualified # 🙍🏾‍♀ E4.0 woman frowning: medium-dark skin tone +1F64D 1F3FF 200D 2640 FE0F ; fully-qualified # 🙍🏿‍♀️ E4.0 woman frowning: dark skin tone +1F64D 1F3FF 200D 2640 ; minimally-qualified # 🙍🏿‍♀ E4.0 woman frowning: dark skin tone +1F64E ; fully-qualified # 🙎 E0.6 person pouting +1F64E 1F3FB ; fully-qualified # 🙎🏻 E1.0 person pouting: light skin tone +1F64E 1F3FC ; fully-qualified # 🙎🏼 E1.0 person pouting: medium-light skin tone +1F64E 1F3FD ; fully-qualified # 🙎🏽 E1.0 person pouting: medium skin tone +1F64E 1F3FE ; fully-qualified # 🙎🏾 E1.0 person pouting: medium-dark skin tone +1F64E 1F3FF ; fully-qualified # 🙎🏿 E1.0 person pouting: dark skin tone +1F64E 200D 2642 FE0F ; fully-qualified # 🙎‍♂️ E4.0 man pouting +1F64E 200D 2642 ; minimally-qualified # 🙎‍♂ E4.0 man pouting +1F64E 1F3FB 200D 2642 FE0F ; fully-qualified # 🙎🏻‍♂️ E4.0 man pouting: light skin tone +1F64E 1F3FB 200D 2642 ; minimally-qualified # 🙎🏻‍♂ E4.0 man pouting: light skin tone +1F64E 1F3FC 200D 2642 FE0F ; fully-qualified # 🙎🏼‍♂️ E4.0 man pouting: medium-light skin tone +1F64E 1F3FC 200D 2642 ; minimally-qualified # 🙎🏼‍♂ E4.0 man pouting: medium-light skin tone +1F64E 1F3FD 200D 2642 FE0F ; fully-qualified # 🙎🏽‍♂️ E4.0 man pouting: medium skin tone +1F64E 1F3FD 200D 2642 ; minimally-qualified # 🙎🏽‍♂ E4.0 man pouting: medium skin tone +1F64E 1F3FE 200D 2642 FE0F ; fully-qualified # 🙎🏾‍♂️ E4.0 man pouting: medium-dark skin tone +1F64E 1F3FE 200D 2642 ; minimally-qualified # 🙎🏾‍♂ E4.0 man pouting: medium-dark skin tone +1F64E 1F3FF 200D 2642 FE0F ; fully-qualified # 🙎🏿‍♂️ E4.0 man pouting: dark skin tone +1F64E 1F3FF 200D 2642 ; minimally-qualified # 🙎🏿‍♂ E4.0 man pouting: dark skin tone +1F64E 200D 2640 FE0F ; fully-qualified # 🙎‍♀️ E4.0 woman pouting +1F64E 200D 2640 ; minimally-qualified # 🙎‍♀ E4.0 woman pouting +1F64E 1F3FB 200D 2640 FE0F ; fully-qualified # 🙎🏻‍♀️ E4.0 woman pouting: light skin tone +1F64E 1F3FB 200D 2640 ; minimally-qualified # 🙎🏻‍♀ E4.0 woman pouting: light skin tone +1F64E 1F3FC 200D 2640 FE0F ; fully-qualified # 🙎🏼‍♀️ E4.0 woman pouting: medium-light skin tone +1F64E 1F3FC 200D 2640 ; minimally-qualified # 🙎🏼‍♀ E4.0 woman pouting: medium-light skin tone +1F64E 1F3FD 200D 2640 FE0F ; fully-qualified # 🙎🏽‍♀️ E4.0 woman pouting: medium skin tone +1F64E 1F3FD 200D 2640 ; minimally-qualified # 🙎🏽‍♀ E4.0 woman pouting: medium skin tone +1F64E 1F3FE 200D 2640 FE0F ; fully-qualified # 🙎🏾‍♀️ E4.0 woman pouting: medium-dark skin tone +1F64E 1F3FE 200D 2640 ; minimally-qualified # 🙎🏾‍♀ E4.0 woman pouting: medium-dark skin tone +1F64E 1F3FF 200D 2640 FE0F ; fully-qualified # 🙎🏿‍♀️ E4.0 woman pouting: dark skin tone +1F64E 1F3FF 200D 2640 ; minimally-qualified # 🙎🏿‍♀ E4.0 woman pouting: dark skin tone +1F645 ; fully-qualified # 🙅 E0.6 person gesturing NO +1F645 1F3FB ; fully-qualified # 🙅🏻 E1.0 person gesturing NO: light skin tone +1F645 1F3FC ; fully-qualified # 🙅🏼 E1.0 person gesturing NO: medium-light skin tone +1F645 1F3FD ; fully-qualified # 🙅🏽 E1.0 person gesturing NO: medium skin tone +1F645 1F3FE ; fully-qualified # 🙅🏾 E1.0 person gesturing NO: medium-dark skin tone +1F645 1F3FF ; fully-qualified # 🙅🏿 E1.0 person gesturing NO: dark skin tone +1F645 200D 2642 FE0F ; fully-qualified # 🙅‍♂️ E4.0 man gesturing NO +1F645 200D 2642 ; minimally-qualified # 🙅‍♂ E4.0 man gesturing NO +1F645 1F3FB 200D 2642 FE0F ; fully-qualified # 🙅🏻‍♂️ E4.0 man gesturing NO: light skin tone +1F645 1F3FB 200D 2642 ; minimally-qualified # 🙅🏻‍♂ E4.0 man gesturing NO: light skin tone +1F645 1F3FC 200D 2642 FE0F ; fully-qualified # 🙅🏼‍♂️ E4.0 man gesturing NO: medium-light skin tone +1F645 1F3FC 200D 2642 ; minimally-qualified # 🙅🏼‍♂ E4.0 man gesturing NO: medium-light skin tone +1F645 1F3FD 200D 2642 FE0F ; fully-qualified # 🙅🏽‍♂️ E4.0 man gesturing NO: medium skin tone +1F645 1F3FD 200D 2642 ; minimally-qualified # 🙅🏽‍♂ E4.0 man gesturing NO: medium skin tone +1F645 1F3FE 200D 2642 FE0F ; fully-qualified # 🙅🏾‍♂️ E4.0 man gesturing NO: medium-dark skin tone +1F645 1F3FE 200D 2642 ; minimally-qualified # 🙅🏾‍♂ E4.0 man gesturing NO: medium-dark skin tone +1F645 1F3FF 200D 2642 FE0F ; fully-qualified # 🙅🏿‍♂️ E4.0 man gesturing NO: dark skin tone +1F645 1F3FF 200D 2642 ; minimally-qualified # 🙅🏿‍♂ E4.0 man gesturing NO: dark skin tone +1F645 200D 2640 FE0F ; fully-qualified # 🙅‍♀️ E4.0 woman gesturing NO +1F645 200D 2640 ; minimally-qualified # 🙅‍♀ E4.0 woman gesturing NO +1F645 1F3FB 200D 2640 FE0F ; fully-qualified # 🙅🏻‍♀️ E4.0 woman gesturing NO: light skin tone +1F645 1F3FB 200D 2640 ; minimally-qualified # 🙅🏻‍♀ E4.0 woman gesturing NO: light skin tone +1F645 1F3FC 200D 2640 FE0F ; fully-qualified # 🙅🏼‍♀️ E4.0 woman gesturing NO: medium-light skin tone +1F645 1F3FC 200D 2640 ; minimally-qualified # 🙅🏼‍♀ E4.0 woman gesturing NO: medium-light skin tone +1F645 1F3FD 200D 2640 FE0F ; fully-qualified # 🙅🏽‍♀️ E4.0 woman gesturing NO: medium skin tone +1F645 1F3FD 200D 2640 ; minimally-qualified # 🙅🏽‍♀ E4.0 woman gesturing NO: medium skin tone +1F645 1F3FE 200D 2640 FE0F ; fully-qualified # 🙅🏾‍♀️ E4.0 woman gesturing NO: medium-dark skin tone +1F645 1F3FE 200D 2640 ; minimally-qualified # 🙅🏾‍♀ E4.0 woman gesturing NO: medium-dark skin tone +1F645 1F3FF 200D 2640 FE0F ; fully-qualified # 🙅🏿‍♀️ E4.0 woman gesturing NO: dark skin tone +1F645 1F3FF 200D 2640 ; minimally-qualified # 🙅🏿‍♀ E4.0 woman gesturing NO: dark skin tone +1F646 ; fully-qualified # 🙆 E0.6 person gesturing OK +1F646 1F3FB ; fully-qualified # 🙆🏻 E1.0 person gesturing OK: light skin tone +1F646 1F3FC ; fully-qualified # 🙆🏼 E1.0 person gesturing OK: medium-light skin tone +1F646 1F3FD ; fully-qualified # 🙆🏽 E1.0 person gesturing OK: medium skin tone +1F646 1F3FE ; fully-qualified # 🙆🏾 E1.0 person gesturing OK: medium-dark skin tone +1F646 1F3FF ; fully-qualified # 🙆🏿 E1.0 person gesturing OK: dark skin tone +1F646 200D 2642 FE0F ; fully-qualified # 🙆‍♂️ E4.0 man gesturing OK +1F646 200D 2642 ; minimally-qualified # 🙆‍♂ E4.0 man gesturing OK +1F646 1F3FB 200D 2642 FE0F ; fully-qualified # 🙆🏻‍♂️ E4.0 man gesturing OK: light skin tone +1F646 1F3FB 200D 2642 ; minimally-qualified # 🙆🏻‍♂ E4.0 man gesturing OK: light skin tone +1F646 1F3FC 200D 2642 FE0F ; fully-qualified # 🙆🏼‍♂️ E4.0 man gesturing OK: medium-light skin tone +1F646 1F3FC 200D 2642 ; minimally-qualified # 🙆🏼‍♂ E4.0 man gesturing OK: medium-light skin tone +1F646 1F3FD 200D 2642 FE0F ; fully-qualified # 🙆🏽‍♂️ E4.0 man gesturing OK: medium skin tone +1F646 1F3FD 200D 2642 ; minimally-qualified # 🙆🏽‍♂ E4.0 man gesturing OK: medium skin tone +1F646 1F3FE 200D 2642 FE0F ; fully-qualified # 🙆🏾‍♂️ E4.0 man gesturing OK: medium-dark skin tone +1F646 1F3FE 200D 2642 ; minimally-qualified # 🙆🏾‍♂ E4.0 man gesturing OK: medium-dark skin tone +1F646 1F3FF 200D 2642 FE0F ; fully-qualified # 🙆🏿‍♂️ E4.0 man gesturing OK: dark skin tone +1F646 1F3FF 200D 2642 ; minimally-qualified # 🙆🏿‍♂ E4.0 man gesturing OK: dark skin tone +1F646 200D 2640 FE0F ; fully-qualified # 🙆‍♀️ E4.0 woman gesturing OK +1F646 200D 2640 ; minimally-qualified # 🙆‍♀ E4.0 woman gesturing OK +1F646 1F3FB 200D 2640 FE0F ; fully-qualified # 🙆🏻‍♀️ E4.0 woman gesturing OK: light skin tone +1F646 1F3FB 200D 2640 ; minimally-qualified # 🙆🏻‍♀ E4.0 woman gesturing OK: light skin tone +1F646 1F3FC 200D 2640 FE0F ; fully-qualified # 🙆🏼‍♀️ E4.0 woman gesturing OK: medium-light skin tone +1F646 1F3FC 200D 2640 ; minimally-qualified # 🙆🏼‍♀ E4.0 woman gesturing OK: medium-light skin tone +1F646 1F3FD 200D 2640 FE0F ; fully-qualified # 🙆🏽‍♀️ E4.0 woman gesturing OK: medium skin tone +1F646 1F3FD 200D 2640 ; minimally-qualified # 🙆🏽‍♀ E4.0 woman gesturing OK: medium skin tone +1F646 1F3FE 200D 2640 FE0F ; fully-qualified # 🙆🏾‍♀️ E4.0 woman gesturing OK: medium-dark skin tone +1F646 1F3FE 200D 2640 ; minimally-qualified # 🙆🏾‍♀ E4.0 woman gesturing OK: medium-dark skin tone +1F646 1F3FF 200D 2640 FE0F ; fully-qualified # 🙆🏿‍♀️ E4.0 woman gesturing OK: dark skin tone +1F646 1F3FF 200D 2640 ; minimally-qualified # 🙆🏿‍♀ E4.0 woman gesturing OK: dark skin tone +1F481 ; fully-qualified # 💁 E0.6 person tipping hand +1F481 1F3FB ; fully-qualified # 💁🏻 E1.0 person tipping hand: light skin tone +1F481 1F3FC ; fully-qualified # 💁🏼 E1.0 person tipping hand: medium-light skin tone +1F481 1F3FD ; fully-qualified # 💁🏽 E1.0 person tipping hand: medium skin tone +1F481 1F3FE ; fully-qualified # 💁🏾 E1.0 person tipping hand: medium-dark skin tone +1F481 1F3FF ; fully-qualified # 💁🏿 E1.0 person tipping hand: dark skin tone +1F481 200D 2642 FE0F ; fully-qualified # 💁‍♂️ E4.0 man tipping hand +1F481 200D 2642 ; minimally-qualified # 💁‍♂ E4.0 man tipping hand +1F481 1F3FB 200D 2642 FE0F ; fully-qualified # 💁🏻‍♂️ E4.0 man tipping hand: light skin tone +1F481 1F3FB 200D 2642 ; minimally-qualified # 💁🏻‍♂ E4.0 man tipping hand: light skin tone +1F481 1F3FC 200D 2642 FE0F ; fully-qualified # 💁🏼‍♂️ E4.0 man tipping hand: medium-light skin tone +1F481 1F3FC 200D 2642 ; minimally-qualified # 💁🏼‍♂ E4.0 man tipping hand: medium-light skin tone +1F481 1F3FD 200D 2642 FE0F ; fully-qualified # 💁🏽‍♂️ E4.0 man tipping hand: medium skin tone +1F481 1F3FD 200D 2642 ; minimally-qualified # 💁🏽‍♂ E4.0 man tipping hand: medium skin tone +1F481 1F3FE 200D 2642 FE0F ; fully-qualified # 💁🏾‍♂️ E4.0 man tipping hand: medium-dark skin tone +1F481 1F3FE 200D 2642 ; minimally-qualified # 💁🏾‍♂ E4.0 man tipping hand: medium-dark skin tone +1F481 1F3FF 200D 2642 FE0F ; fully-qualified # 💁🏿‍♂️ E4.0 man tipping hand: dark skin tone +1F481 1F3FF 200D 2642 ; minimally-qualified # 💁🏿‍♂ E4.0 man tipping hand: dark skin tone +1F481 200D 2640 FE0F ; fully-qualified # 💁‍♀️ E4.0 woman tipping hand +1F481 200D 2640 ; minimally-qualified # 💁‍♀ E4.0 woman tipping hand +1F481 1F3FB 200D 2640 FE0F ; fully-qualified # 💁🏻‍♀️ E4.0 woman tipping hand: light skin tone +1F481 1F3FB 200D 2640 ; minimally-qualified # 💁🏻‍♀ E4.0 woman tipping hand: light skin tone +1F481 1F3FC 200D 2640 FE0F ; fully-qualified # 💁🏼‍♀️ E4.0 woman tipping hand: medium-light skin tone +1F481 1F3FC 200D 2640 ; minimally-qualified # 💁🏼‍♀ E4.0 woman tipping hand: medium-light skin tone +1F481 1F3FD 200D 2640 FE0F ; fully-qualified # 💁🏽‍♀️ E4.0 woman tipping hand: medium skin tone +1F481 1F3FD 200D 2640 ; minimally-qualified # 💁🏽‍♀ E4.0 woman tipping hand: medium skin tone +1F481 1F3FE 200D 2640 FE0F ; fully-qualified # 💁🏾‍♀️ E4.0 woman tipping hand: medium-dark skin tone +1F481 1F3FE 200D 2640 ; minimally-qualified # 💁🏾‍♀ E4.0 woman tipping hand: medium-dark skin tone +1F481 1F3FF 200D 2640 FE0F ; fully-qualified # 💁🏿‍♀️ E4.0 woman tipping hand: dark skin tone +1F481 1F3FF 200D 2640 ; minimally-qualified # 💁🏿‍♀ E4.0 woman tipping hand: dark skin tone +1F64B ; fully-qualified # 🙋 E0.6 person raising hand +1F64B 1F3FB ; fully-qualified # 🙋🏻 E1.0 person raising hand: light skin tone +1F64B 1F3FC ; fully-qualified # 🙋🏼 E1.0 person raising hand: medium-light skin tone +1F64B 1F3FD ; fully-qualified # 🙋🏽 E1.0 person raising hand: medium skin tone +1F64B 1F3FE ; fully-qualified # 🙋🏾 E1.0 person raising hand: medium-dark skin tone +1F64B 1F3FF ; fully-qualified # 🙋🏿 E1.0 person raising hand: dark skin tone +1F64B 200D 2642 FE0F ; fully-qualified # 🙋‍♂️ E4.0 man raising hand +1F64B 200D 2642 ; minimally-qualified # 🙋‍♂ E4.0 man raising hand +1F64B 1F3FB 200D 2642 FE0F ; fully-qualified # 🙋🏻‍♂️ E4.0 man raising hand: light skin tone +1F64B 1F3FB 200D 2642 ; minimally-qualified # 🙋🏻‍♂ E4.0 man raising hand: light skin tone +1F64B 1F3FC 200D 2642 FE0F ; fully-qualified # 🙋🏼‍♂️ E4.0 man raising hand: medium-light skin tone +1F64B 1F3FC 200D 2642 ; minimally-qualified # 🙋🏼‍♂ E4.0 man raising hand: medium-light skin tone +1F64B 1F3FD 200D 2642 FE0F ; fully-qualified # 🙋🏽‍♂️ E4.0 man raising hand: medium skin tone +1F64B 1F3FD 200D 2642 ; minimally-qualified # 🙋🏽‍♂ E4.0 man raising hand: medium skin tone +1F64B 1F3FE 200D 2642 FE0F ; fully-qualified # 🙋🏾‍♂️ E4.0 man raising hand: medium-dark skin tone +1F64B 1F3FE 200D 2642 ; minimally-qualified # 🙋🏾‍♂ E4.0 man raising hand: medium-dark skin tone +1F64B 1F3FF 200D 2642 FE0F ; fully-qualified # 🙋🏿‍♂️ E4.0 man raising hand: dark skin tone +1F64B 1F3FF 200D 2642 ; minimally-qualified # 🙋🏿‍♂ E4.0 man raising hand: dark skin tone +1F64B 200D 2640 FE0F ; fully-qualified # 🙋‍♀️ E4.0 woman raising hand +1F64B 200D 2640 ; minimally-qualified # 🙋‍♀ E4.0 woman raising hand +1F64B 1F3FB 200D 2640 FE0F ; fully-qualified # 🙋🏻‍♀️ E4.0 woman raising hand: light skin tone +1F64B 1F3FB 200D 2640 ; minimally-qualified # 🙋🏻‍♀ E4.0 woman raising hand: light skin tone +1F64B 1F3FC 200D 2640 FE0F ; fully-qualified # 🙋🏼‍♀️ E4.0 woman raising hand: medium-light skin tone +1F64B 1F3FC 200D 2640 ; minimally-qualified # 🙋🏼‍♀ E4.0 woman raising hand: medium-light skin tone +1F64B 1F3FD 200D 2640 FE0F ; fully-qualified # 🙋🏽‍♀️ E4.0 woman raising hand: medium skin tone +1F64B 1F3FD 200D 2640 ; minimally-qualified # 🙋🏽‍♀ E4.0 woman raising hand: medium skin tone +1F64B 1F3FE 200D 2640 FE0F ; fully-qualified # 🙋🏾‍♀️ E4.0 woman raising hand: medium-dark skin tone +1F64B 1F3FE 200D 2640 ; minimally-qualified # 🙋🏾‍♀ E4.0 woman raising hand: medium-dark skin tone +1F64B 1F3FF 200D 2640 FE0F ; fully-qualified # 🙋🏿‍♀️ E4.0 woman raising hand: dark skin tone +1F64B 1F3FF 200D 2640 ; minimally-qualified # 🙋🏿‍♀ E4.0 woman raising hand: dark skin tone +1F9CF ; fully-qualified # 🧏 E12.0 deaf person +1F9CF 1F3FB ; fully-qualified # 🧏🏻 E12.0 deaf person: light skin tone +1F9CF 1F3FC ; fully-qualified # 🧏🏼 E12.0 deaf person: medium-light skin tone +1F9CF 1F3FD ; fully-qualified # 🧏🏽 E12.0 deaf person: medium skin tone +1F9CF 1F3FE ; fully-qualified # 🧏🏾 E12.0 deaf person: medium-dark skin tone +1F9CF 1F3FF ; fully-qualified # 🧏🏿 E12.0 deaf person: dark skin tone +1F9CF 200D 2642 FE0F ; fully-qualified # 🧏‍♂️ E12.0 deaf man +1F9CF 200D 2642 ; minimally-qualified # 🧏‍♂ E12.0 deaf man +1F9CF 1F3FB 200D 2642 FE0F ; fully-qualified # 🧏🏻‍♂️ E12.0 deaf man: light skin tone +1F9CF 1F3FB 200D 2642 ; minimally-qualified # 🧏🏻‍♂ E12.0 deaf man: light skin tone +1F9CF 1F3FC 200D 2642 FE0F ; fully-qualified # 🧏🏼‍♂️ E12.0 deaf man: medium-light skin tone +1F9CF 1F3FC 200D 2642 ; minimally-qualified # 🧏🏼‍♂ E12.0 deaf man: medium-light skin tone +1F9CF 1F3FD 200D 2642 FE0F ; fully-qualified # 🧏🏽‍♂️ E12.0 deaf man: medium skin tone +1F9CF 1F3FD 200D 2642 ; minimally-qualified # 🧏🏽‍♂ E12.0 deaf man: medium skin tone +1F9CF 1F3FE 200D 2642 FE0F ; fully-qualified # 🧏🏾‍♂️ E12.0 deaf man: medium-dark skin tone +1F9CF 1F3FE 200D 2642 ; minimally-qualified # 🧏🏾‍♂ E12.0 deaf man: medium-dark skin tone +1F9CF 1F3FF 200D 2642 FE0F ; fully-qualified # 🧏🏿‍♂️ E12.0 deaf man: dark skin tone +1F9CF 1F3FF 200D 2642 ; minimally-qualified # 🧏🏿‍♂ E12.0 deaf man: dark skin tone +1F9CF 200D 2640 FE0F ; fully-qualified # 🧏‍♀️ E12.0 deaf woman +1F9CF 200D 2640 ; minimally-qualified # 🧏‍♀ E12.0 deaf woman +1F9CF 1F3FB 200D 2640 FE0F ; fully-qualified # 🧏🏻‍♀️ E12.0 deaf woman: light skin tone +1F9CF 1F3FB 200D 2640 ; minimally-qualified # 🧏🏻‍♀ E12.0 deaf woman: light skin tone +1F9CF 1F3FC 200D 2640 FE0F ; fully-qualified # 🧏🏼‍♀️ E12.0 deaf woman: medium-light skin tone +1F9CF 1F3FC 200D 2640 ; minimally-qualified # 🧏🏼‍♀ E12.0 deaf woman: medium-light skin tone +1F9CF 1F3FD 200D 2640 FE0F ; fully-qualified # 🧏🏽‍♀️ E12.0 deaf woman: medium skin tone +1F9CF 1F3FD 200D 2640 ; minimally-qualified # 🧏🏽‍♀ E12.0 deaf woman: medium skin tone +1F9CF 1F3FE 200D 2640 FE0F ; fully-qualified # 🧏🏾‍♀️ E12.0 deaf woman: medium-dark skin tone +1F9CF 1F3FE 200D 2640 ; minimally-qualified # 🧏🏾‍♀ E12.0 deaf woman: medium-dark skin tone +1F9CF 1F3FF 200D 2640 FE0F ; fully-qualified # 🧏🏿‍♀️ E12.0 deaf woman: dark skin tone +1F9CF 1F3FF 200D 2640 ; minimally-qualified # 🧏🏿‍♀ E12.0 deaf woman: dark skin tone +1F647 ; fully-qualified # 🙇 E0.6 person bowing +1F647 1F3FB ; fully-qualified # 🙇🏻 E1.0 person bowing: light skin tone +1F647 1F3FC ; fully-qualified # 🙇🏼 E1.0 person bowing: medium-light skin tone +1F647 1F3FD ; fully-qualified # 🙇🏽 E1.0 person bowing: medium skin tone +1F647 1F3FE ; fully-qualified # 🙇🏾 E1.0 person bowing: medium-dark skin tone +1F647 1F3FF ; fully-qualified # 🙇🏿 E1.0 person bowing: dark skin tone +1F647 200D 2642 FE0F ; fully-qualified # 🙇‍♂️ E4.0 man bowing +1F647 200D 2642 ; minimally-qualified # 🙇‍♂ E4.0 man bowing +1F647 1F3FB 200D 2642 FE0F ; fully-qualified # 🙇🏻‍♂️ E4.0 man bowing: light skin tone +1F647 1F3FB 200D 2642 ; minimally-qualified # 🙇🏻‍♂ E4.0 man bowing: light skin tone +1F647 1F3FC 200D 2642 FE0F ; fully-qualified # 🙇🏼‍♂️ E4.0 man bowing: medium-light skin tone +1F647 1F3FC 200D 2642 ; minimally-qualified # 🙇🏼‍♂ E4.0 man bowing: medium-light skin tone +1F647 1F3FD 200D 2642 FE0F ; fully-qualified # 🙇🏽‍♂️ E4.0 man bowing: medium skin tone +1F647 1F3FD 200D 2642 ; minimally-qualified # 🙇🏽‍♂ E4.0 man bowing: medium skin tone +1F647 1F3FE 200D 2642 FE0F ; fully-qualified # 🙇🏾‍♂️ E4.0 man bowing: medium-dark skin tone +1F647 1F3FE 200D 2642 ; minimally-qualified # 🙇🏾‍♂ E4.0 man bowing: medium-dark skin tone +1F647 1F3FF 200D 2642 FE0F ; fully-qualified # 🙇🏿‍♂️ E4.0 man bowing: dark skin tone +1F647 1F3FF 200D 2642 ; minimally-qualified # 🙇🏿‍♂ E4.0 man bowing: dark skin tone +1F647 200D 2640 FE0F ; fully-qualified # 🙇‍♀️ E4.0 woman bowing +1F647 200D 2640 ; minimally-qualified # 🙇‍♀ E4.0 woman bowing +1F647 1F3FB 200D 2640 FE0F ; fully-qualified # 🙇🏻‍♀️ E4.0 woman bowing: light skin tone +1F647 1F3FB 200D 2640 ; minimally-qualified # 🙇🏻‍♀ E4.0 woman bowing: light skin tone +1F647 1F3FC 200D 2640 FE0F ; fully-qualified # 🙇🏼‍♀️ E4.0 woman bowing: medium-light skin tone +1F647 1F3FC 200D 2640 ; minimally-qualified # 🙇🏼‍♀ E4.0 woman bowing: medium-light skin tone +1F647 1F3FD 200D 2640 FE0F ; fully-qualified # 🙇🏽‍♀️ E4.0 woman bowing: medium skin tone +1F647 1F3FD 200D 2640 ; minimally-qualified # 🙇🏽‍♀ E4.0 woman bowing: medium skin tone +1F647 1F3FE 200D 2640 FE0F ; fully-qualified # 🙇🏾‍♀️ E4.0 woman bowing: medium-dark skin tone +1F647 1F3FE 200D 2640 ; minimally-qualified # 🙇🏾‍♀ E4.0 woman bowing: medium-dark skin tone +1F647 1F3FF 200D 2640 FE0F ; fully-qualified # 🙇🏿‍♀️ E4.0 woman bowing: dark skin tone +1F647 1F3FF 200D 2640 ; minimally-qualified # 🙇🏿‍♀ E4.0 woman bowing: dark skin tone +1F926 ; fully-qualified # 🤦 E3.0 person facepalming +1F926 1F3FB ; fully-qualified # 🤦🏻 E3.0 person facepalming: light skin tone +1F926 1F3FC ; fully-qualified # 🤦🏼 E3.0 person facepalming: medium-light skin tone +1F926 1F3FD ; fully-qualified # 🤦🏽 E3.0 person facepalming: medium skin tone +1F926 1F3FE ; fully-qualified # 🤦🏾 E3.0 person facepalming: medium-dark skin tone +1F926 1F3FF ; fully-qualified # 🤦🏿 E3.0 person facepalming: dark skin tone +1F926 200D 2642 FE0F ; fully-qualified # 🤦‍♂️ E4.0 man facepalming +1F926 200D 2642 ; minimally-qualified # 🤦‍♂ E4.0 man facepalming +1F926 1F3FB 200D 2642 FE0F ; fully-qualified # 🤦🏻‍♂️ E4.0 man facepalming: light skin tone +1F926 1F3FB 200D 2642 ; minimally-qualified # 🤦🏻‍♂ E4.0 man facepalming: light skin tone +1F926 1F3FC 200D 2642 FE0F ; fully-qualified # 🤦🏼‍♂️ E4.0 man facepalming: medium-light skin tone +1F926 1F3FC 200D 2642 ; minimally-qualified # 🤦🏼‍♂ E4.0 man facepalming: medium-light skin tone +1F926 1F3FD 200D 2642 FE0F ; fully-qualified # 🤦🏽‍♂️ E4.0 man facepalming: medium skin tone +1F926 1F3FD 200D 2642 ; minimally-qualified # 🤦🏽‍♂ E4.0 man facepalming: medium skin tone +1F926 1F3FE 200D 2642 FE0F ; fully-qualified # 🤦🏾‍♂️ E4.0 man facepalming: medium-dark skin tone +1F926 1F3FE 200D 2642 ; minimally-qualified # 🤦🏾‍♂ E4.0 man facepalming: medium-dark skin tone +1F926 1F3FF 200D 2642 FE0F ; fully-qualified # 🤦🏿‍♂️ E4.0 man facepalming: dark skin tone +1F926 1F3FF 200D 2642 ; minimally-qualified # 🤦🏿‍♂ E4.0 man facepalming: dark skin tone +1F926 200D 2640 FE0F ; fully-qualified # 🤦‍♀️ E4.0 woman facepalming +1F926 200D 2640 ; minimally-qualified # 🤦‍♀ E4.0 woman facepalming +1F926 1F3FB 200D 2640 FE0F ; fully-qualified # 🤦🏻‍♀️ E4.0 woman facepalming: light skin tone +1F926 1F3FB 200D 2640 ; minimally-qualified # 🤦🏻‍♀ E4.0 woman facepalming: light skin tone +1F926 1F3FC 200D 2640 FE0F ; fully-qualified # 🤦🏼‍♀️ E4.0 woman facepalming: medium-light skin tone +1F926 1F3FC 200D 2640 ; minimally-qualified # 🤦🏼‍♀ E4.0 woman facepalming: medium-light skin tone +1F926 1F3FD 200D 2640 FE0F ; fully-qualified # 🤦🏽‍♀️ E4.0 woman facepalming: medium skin tone +1F926 1F3FD 200D 2640 ; minimally-qualified # 🤦🏽‍♀ E4.0 woman facepalming: medium skin tone +1F926 1F3FE 200D 2640 FE0F ; fully-qualified # 🤦🏾‍♀️ E4.0 woman facepalming: medium-dark skin tone +1F926 1F3FE 200D 2640 ; minimally-qualified # 🤦🏾‍♀ E4.0 woman facepalming: medium-dark skin tone +1F926 1F3FF 200D 2640 FE0F ; fully-qualified # 🤦🏿‍♀️ E4.0 woman facepalming: dark skin tone +1F926 1F3FF 200D 2640 ; minimally-qualified # 🤦🏿‍♀ E4.0 woman facepalming: dark skin tone +1F937 ; fully-qualified # 🤷 E3.0 person shrugging +1F937 1F3FB ; fully-qualified # 🤷🏻 E3.0 person shrugging: light skin tone +1F937 1F3FC ; fully-qualified # 🤷🏼 E3.0 person shrugging: medium-light skin tone +1F937 1F3FD ; fully-qualified # 🤷🏽 E3.0 person shrugging: medium skin tone +1F937 1F3FE ; fully-qualified # 🤷🏾 E3.0 person shrugging: medium-dark skin tone +1F937 1F3FF ; fully-qualified # 🤷🏿 E3.0 person shrugging: dark skin tone +1F937 200D 2642 FE0F ; fully-qualified # 🤷‍♂️ E4.0 man shrugging +1F937 200D 2642 ; minimally-qualified # 🤷‍♂ E4.0 man shrugging +1F937 1F3FB 200D 2642 FE0F ; fully-qualified # 🤷🏻‍♂️ E4.0 man shrugging: light skin tone +1F937 1F3FB 200D 2642 ; minimally-qualified # 🤷🏻‍♂ E4.0 man shrugging: light skin tone +1F937 1F3FC 200D 2642 FE0F ; fully-qualified # 🤷🏼‍♂️ E4.0 man shrugging: medium-light skin tone +1F937 1F3FC 200D 2642 ; minimally-qualified # 🤷🏼‍♂ E4.0 man shrugging: medium-light skin tone +1F937 1F3FD 200D 2642 FE0F ; fully-qualified # 🤷🏽‍♂️ E4.0 man shrugging: medium skin tone +1F937 1F3FD 200D 2642 ; minimally-qualified # 🤷🏽‍♂ E4.0 man shrugging: medium skin tone +1F937 1F3FE 200D 2642 FE0F ; fully-qualified # 🤷🏾‍♂️ E4.0 man shrugging: medium-dark skin tone +1F937 1F3FE 200D 2642 ; minimally-qualified # 🤷🏾‍♂ E4.0 man shrugging: medium-dark skin tone +1F937 1F3FF 200D 2642 FE0F ; fully-qualified # 🤷🏿‍♂️ E4.0 man shrugging: dark skin tone +1F937 1F3FF 200D 2642 ; minimally-qualified # 🤷🏿‍♂ E4.0 man shrugging: dark skin tone +1F937 200D 2640 FE0F ; fully-qualified # 🤷‍♀️ E4.0 woman shrugging +1F937 200D 2640 ; minimally-qualified # 🤷‍♀ E4.0 woman shrugging +1F937 1F3FB 200D 2640 FE0F ; fully-qualified # 🤷🏻‍♀️ E4.0 woman shrugging: light skin tone +1F937 1F3FB 200D 2640 ; minimally-qualified # 🤷🏻‍♀ E4.0 woman shrugging: light skin tone +1F937 1F3FC 200D 2640 FE0F ; fully-qualified # 🤷🏼‍♀️ E4.0 woman shrugging: medium-light skin tone +1F937 1F3FC 200D 2640 ; minimally-qualified # 🤷🏼‍♀ E4.0 woman shrugging: medium-light skin tone +1F937 1F3FD 200D 2640 FE0F ; fully-qualified # 🤷🏽‍♀️ E4.0 woman shrugging: medium skin tone +1F937 1F3FD 200D 2640 ; minimally-qualified # 🤷🏽‍♀ E4.0 woman shrugging: medium skin tone +1F937 1F3FE 200D 2640 FE0F ; fully-qualified # 🤷🏾‍♀️ E4.0 woman shrugging: medium-dark skin tone +1F937 1F3FE 200D 2640 ; minimally-qualified # 🤷🏾‍♀ E4.0 woman shrugging: medium-dark skin tone +1F937 1F3FF 200D 2640 FE0F ; fully-qualified # 🤷🏿‍♀️ E4.0 woman shrugging: dark skin tone +1F937 1F3FF 200D 2640 ; minimally-qualified # 🤷🏿‍♀ E4.0 woman shrugging: dark skin tone + +# subgroup: person-role +1F9D1 200D 2695 FE0F ; fully-qualified # 🧑‍⚕️ E12.1 health worker +1F9D1 200D 2695 ; minimally-qualified # 🧑‍⚕ E12.1 health worker +1F9D1 1F3FB 200D 2695 FE0F ; fully-qualified # 🧑🏻‍⚕️ E12.1 health worker: light skin tone +1F9D1 1F3FB 200D 2695 ; minimally-qualified # 🧑🏻‍⚕ E12.1 health worker: light skin tone +1F9D1 1F3FC 200D 2695 FE0F ; fully-qualified # 🧑🏼‍⚕️ E12.1 health worker: medium-light skin tone +1F9D1 1F3FC 200D 2695 ; minimally-qualified # 🧑🏼‍⚕ E12.1 health worker: medium-light skin tone +1F9D1 1F3FD 200D 2695 FE0F ; fully-qualified # 🧑🏽‍⚕️ E12.1 health worker: medium skin tone +1F9D1 1F3FD 200D 2695 ; minimally-qualified # 🧑🏽‍⚕ E12.1 health worker: medium skin tone +1F9D1 1F3FE 200D 2695 FE0F ; fully-qualified # 🧑🏾‍⚕️ E12.1 health worker: medium-dark skin tone +1F9D1 1F3FE 200D 2695 ; minimally-qualified # 🧑🏾‍⚕ E12.1 health worker: medium-dark skin tone +1F9D1 1F3FF 200D 2695 FE0F ; fully-qualified # 🧑🏿‍⚕️ E12.1 health worker: dark skin tone +1F9D1 1F3FF 200D 2695 ; minimally-qualified # 🧑🏿‍⚕ E12.1 health worker: dark skin tone +1F468 200D 2695 FE0F ; fully-qualified # 👨‍⚕️ E4.0 man health worker +1F468 200D 2695 ; minimally-qualified # 👨‍⚕ E4.0 man health worker +1F468 1F3FB 200D 2695 FE0F ; fully-qualified # 👨🏻‍⚕️ E4.0 man health worker: light skin tone +1F468 1F3FB 200D 2695 ; minimally-qualified # 👨🏻‍⚕ E4.0 man health worker: light skin tone +1F468 1F3FC 200D 2695 FE0F ; fully-qualified # 👨🏼‍⚕️ E4.0 man health worker: medium-light skin tone +1F468 1F3FC 200D 2695 ; minimally-qualified # 👨🏼‍⚕ E4.0 man health worker: medium-light skin tone +1F468 1F3FD 200D 2695 FE0F ; fully-qualified # 👨🏽‍⚕️ E4.0 man health worker: medium skin tone +1F468 1F3FD 200D 2695 ; minimally-qualified # 👨🏽‍⚕ E4.0 man health worker: medium skin tone +1F468 1F3FE 200D 2695 FE0F ; fully-qualified # 👨🏾‍⚕️ E4.0 man health worker: medium-dark skin tone +1F468 1F3FE 200D 2695 ; minimally-qualified # 👨🏾‍⚕ E4.0 man health worker: medium-dark skin tone +1F468 1F3FF 200D 2695 FE0F ; fully-qualified # 👨🏿‍⚕️ E4.0 man health worker: dark skin tone +1F468 1F3FF 200D 2695 ; minimally-qualified # 👨🏿‍⚕ E4.0 man health worker: dark skin tone +1F469 200D 2695 FE0F ; fully-qualified # 👩‍⚕️ E4.0 woman health worker +1F469 200D 2695 ; minimally-qualified # 👩‍⚕ E4.0 woman health worker +1F469 1F3FB 200D 2695 FE0F ; fully-qualified # 👩🏻‍⚕️ E4.0 woman health worker: light skin tone +1F469 1F3FB 200D 2695 ; minimally-qualified # 👩🏻‍⚕ E4.0 woman health worker: light skin tone +1F469 1F3FC 200D 2695 FE0F ; fully-qualified # 👩🏼‍⚕️ E4.0 woman health worker: medium-light skin tone +1F469 1F3FC 200D 2695 ; minimally-qualified # 👩🏼‍⚕ E4.0 woman health worker: medium-light skin tone +1F469 1F3FD 200D 2695 FE0F ; fully-qualified # 👩🏽‍⚕️ E4.0 woman health worker: medium skin tone +1F469 1F3FD 200D 2695 ; minimally-qualified # 👩🏽‍⚕ E4.0 woman health worker: medium skin tone +1F469 1F3FE 200D 2695 FE0F ; fully-qualified # 👩🏾‍⚕️ E4.0 woman health worker: medium-dark skin tone +1F469 1F3FE 200D 2695 ; minimally-qualified # 👩🏾‍⚕ E4.0 woman health worker: medium-dark skin tone +1F469 1F3FF 200D 2695 FE0F ; fully-qualified # 👩🏿‍⚕️ E4.0 woman health worker: dark skin tone +1F469 1F3FF 200D 2695 ; minimally-qualified # 👩🏿‍⚕ E4.0 woman health worker: dark skin tone +1F9D1 200D 1F393 ; fully-qualified # 🧑‍🎓 E12.1 student +1F9D1 1F3FB 200D 1F393 ; fully-qualified # 🧑🏻‍🎓 E12.1 student: light skin tone +1F9D1 1F3FC 200D 1F393 ; fully-qualified # 🧑🏼‍🎓 E12.1 student: medium-light skin tone +1F9D1 1F3FD 200D 1F393 ; fully-qualified # 🧑🏽‍🎓 E12.1 student: medium skin tone +1F9D1 1F3FE 200D 1F393 ; fully-qualified # 🧑🏾‍🎓 E12.1 student: medium-dark skin tone +1F9D1 1F3FF 200D 1F393 ; fully-qualified # 🧑🏿‍🎓 E12.1 student: dark skin tone +1F468 200D 1F393 ; fully-qualified # 👨‍🎓 E4.0 man student +1F468 1F3FB 200D 1F393 ; fully-qualified # 👨🏻‍🎓 E4.0 man student: light skin tone +1F468 1F3FC 200D 1F393 ; fully-qualified # 👨🏼‍🎓 E4.0 man student: medium-light skin tone +1F468 1F3FD 200D 1F393 ; fully-qualified # 👨🏽‍🎓 E4.0 man student: medium skin tone +1F468 1F3FE 200D 1F393 ; fully-qualified # 👨🏾‍🎓 E4.0 man student: medium-dark skin tone +1F468 1F3FF 200D 1F393 ; fully-qualified # 👨🏿‍🎓 E4.0 man student: dark skin tone +1F469 200D 1F393 ; fully-qualified # 👩‍🎓 E4.0 woman student +1F469 1F3FB 200D 1F393 ; fully-qualified # 👩🏻‍🎓 E4.0 woman student: light skin tone +1F469 1F3FC 200D 1F393 ; fully-qualified # 👩🏼‍🎓 E4.0 woman student: medium-light skin tone +1F469 1F3FD 200D 1F393 ; fully-qualified # 👩🏽‍🎓 E4.0 woman student: medium skin tone +1F469 1F3FE 200D 1F393 ; fully-qualified # 👩🏾‍🎓 E4.0 woman student: medium-dark skin tone +1F469 1F3FF 200D 1F393 ; fully-qualified # 👩🏿‍🎓 E4.0 woman student: dark skin tone +1F9D1 200D 1F3EB ; fully-qualified # 🧑‍🏫 E12.1 teacher +1F9D1 1F3FB 200D 1F3EB ; fully-qualified # 🧑🏻‍🏫 E12.1 teacher: light skin tone +1F9D1 1F3FC 200D 1F3EB ; fully-qualified # 🧑🏼‍🏫 E12.1 teacher: medium-light skin tone +1F9D1 1F3FD 200D 1F3EB ; fully-qualified # 🧑🏽‍🏫 E12.1 teacher: medium skin tone +1F9D1 1F3FE 200D 1F3EB ; fully-qualified # 🧑🏾‍🏫 E12.1 teacher: medium-dark skin tone +1F9D1 1F3FF 200D 1F3EB ; fully-qualified # 🧑🏿‍🏫 E12.1 teacher: dark skin tone +1F468 200D 1F3EB ; fully-qualified # 👨‍🏫 E4.0 man teacher +1F468 1F3FB 200D 1F3EB ; fully-qualified # 👨🏻‍🏫 E4.0 man teacher: light skin tone +1F468 1F3FC 200D 1F3EB ; fully-qualified # 👨🏼‍🏫 E4.0 man teacher: medium-light skin tone +1F468 1F3FD 200D 1F3EB ; fully-qualified # 👨🏽‍🏫 E4.0 man teacher: medium skin tone +1F468 1F3FE 200D 1F3EB ; fully-qualified # 👨🏾‍🏫 E4.0 man teacher: medium-dark skin tone +1F468 1F3FF 200D 1F3EB ; fully-qualified # 👨🏿‍🏫 E4.0 man teacher: dark skin tone +1F469 200D 1F3EB ; fully-qualified # 👩‍🏫 E4.0 woman teacher +1F469 1F3FB 200D 1F3EB ; fully-qualified # 👩🏻‍🏫 E4.0 woman teacher: light skin tone +1F469 1F3FC 200D 1F3EB ; fully-qualified # 👩🏼‍🏫 E4.0 woman teacher: medium-light skin tone +1F469 1F3FD 200D 1F3EB ; fully-qualified # 👩🏽‍🏫 E4.0 woman teacher: medium skin tone +1F469 1F3FE 200D 1F3EB ; fully-qualified # 👩🏾‍🏫 E4.0 woman teacher: medium-dark skin tone +1F469 1F3FF 200D 1F3EB ; fully-qualified # 👩🏿‍🏫 E4.0 woman teacher: dark skin tone +1F9D1 200D 2696 FE0F ; fully-qualified # 🧑‍⚖️ E12.1 judge +1F9D1 200D 2696 ; minimally-qualified # 🧑‍⚖ E12.1 judge +1F9D1 1F3FB 200D 2696 FE0F ; fully-qualified # 🧑🏻‍⚖️ E12.1 judge: light skin tone +1F9D1 1F3FB 200D 2696 ; minimally-qualified # 🧑🏻‍⚖ E12.1 judge: light skin tone +1F9D1 1F3FC 200D 2696 FE0F ; fully-qualified # 🧑🏼‍⚖️ E12.1 judge: medium-light skin tone +1F9D1 1F3FC 200D 2696 ; minimally-qualified # 🧑🏼‍⚖ E12.1 judge: medium-light skin tone +1F9D1 1F3FD 200D 2696 FE0F ; fully-qualified # 🧑🏽‍⚖️ E12.1 judge: medium skin tone +1F9D1 1F3FD 200D 2696 ; minimally-qualified # 🧑🏽‍⚖ E12.1 judge: medium skin tone +1F9D1 1F3FE 200D 2696 FE0F ; fully-qualified # 🧑🏾‍⚖️ E12.1 judge: medium-dark skin tone +1F9D1 1F3FE 200D 2696 ; minimally-qualified # 🧑🏾‍⚖ E12.1 judge: medium-dark skin tone +1F9D1 1F3FF 200D 2696 FE0F ; fully-qualified # 🧑🏿‍⚖️ E12.1 judge: dark skin tone +1F9D1 1F3FF 200D 2696 ; minimally-qualified # 🧑🏿‍⚖ E12.1 judge: dark skin tone +1F468 200D 2696 FE0F ; fully-qualified # 👨‍⚖️ E4.0 man judge +1F468 200D 2696 ; minimally-qualified # 👨‍⚖ E4.0 man judge +1F468 1F3FB 200D 2696 FE0F ; fully-qualified # 👨🏻‍⚖️ E4.0 man judge: light skin tone +1F468 1F3FB 200D 2696 ; minimally-qualified # 👨🏻‍⚖ E4.0 man judge: light skin tone +1F468 1F3FC 200D 2696 FE0F ; fully-qualified # 👨🏼‍⚖️ E4.0 man judge: medium-light skin tone +1F468 1F3FC 200D 2696 ; minimally-qualified # 👨🏼‍⚖ E4.0 man judge: medium-light skin tone +1F468 1F3FD 200D 2696 FE0F ; fully-qualified # 👨🏽‍⚖️ E4.0 man judge: medium skin tone +1F468 1F3FD 200D 2696 ; minimally-qualified # 👨🏽‍⚖ E4.0 man judge: medium skin tone +1F468 1F3FE 200D 2696 FE0F ; fully-qualified # 👨🏾‍⚖️ E4.0 man judge: medium-dark skin tone +1F468 1F3FE 200D 2696 ; minimally-qualified # 👨🏾‍⚖ E4.0 man judge: medium-dark skin tone +1F468 1F3FF 200D 2696 FE0F ; fully-qualified # 👨🏿‍⚖️ E4.0 man judge: dark skin tone +1F468 1F3FF 200D 2696 ; minimally-qualified # 👨🏿‍⚖ E4.0 man judge: dark skin tone +1F469 200D 2696 FE0F ; fully-qualified # 👩‍⚖️ E4.0 woman judge +1F469 200D 2696 ; minimally-qualified # 👩‍⚖ E4.0 woman judge +1F469 1F3FB 200D 2696 FE0F ; fully-qualified # 👩🏻‍⚖️ E4.0 woman judge: light skin tone +1F469 1F3FB 200D 2696 ; minimally-qualified # 👩🏻‍⚖ E4.0 woman judge: light skin tone +1F469 1F3FC 200D 2696 FE0F ; fully-qualified # 👩🏼‍⚖️ E4.0 woman judge: medium-light skin tone +1F469 1F3FC 200D 2696 ; minimally-qualified # 👩🏼‍⚖ E4.0 woman judge: medium-light skin tone +1F469 1F3FD 200D 2696 FE0F ; fully-qualified # 👩🏽‍⚖️ E4.0 woman judge: medium skin tone +1F469 1F3FD 200D 2696 ; minimally-qualified # 👩🏽‍⚖ E4.0 woman judge: medium skin tone +1F469 1F3FE 200D 2696 FE0F ; fully-qualified # 👩🏾‍⚖️ E4.0 woman judge: medium-dark skin tone +1F469 1F3FE 200D 2696 ; minimally-qualified # 👩🏾‍⚖ E4.0 woman judge: medium-dark skin tone +1F469 1F3FF 200D 2696 FE0F ; fully-qualified # 👩🏿‍⚖️ E4.0 woman judge: dark skin tone +1F469 1F3FF 200D 2696 ; minimally-qualified # 👩🏿‍⚖ E4.0 woman judge: dark skin tone +1F9D1 200D 1F33E ; fully-qualified # 🧑‍🌾 E12.1 farmer +1F9D1 1F3FB 200D 1F33E ; fully-qualified # 🧑🏻‍🌾 E12.1 farmer: light skin tone +1F9D1 1F3FC 200D 1F33E ; fully-qualified # 🧑🏼‍🌾 E12.1 farmer: medium-light skin tone +1F9D1 1F3FD 200D 1F33E ; fully-qualified # 🧑🏽‍🌾 E12.1 farmer: medium skin tone +1F9D1 1F3FE 200D 1F33E ; fully-qualified # 🧑🏾‍🌾 E12.1 farmer: medium-dark skin tone +1F9D1 1F3FF 200D 1F33E ; fully-qualified # 🧑🏿‍🌾 E12.1 farmer: dark skin tone +1F468 200D 1F33E ; fully-qualified # 👨‍🌾 E4.0 man farmer +1F468 1F3FB 200D 1F33E ; fully-qualified # 👨🏻‍🌾 E4.0 man farmer: light skin tone +1F468 1F3FC 200D 1F33E ; fully-qualified # 👨🏼‍🌾 E4.0 man farmer: medium-light skin tone +1F468 1F3FD 200D 1F33E ; fully-qualified # 👨🏽‍🌾 E4.0 man farmer: medium skin tone +1F468 1F3FE 200D 1F33E ; fully-qualified # 👨🏾‍🌾 E4.0 man farmer: medium-dark skin tone +1F468 1F3FF 200D 1F33E ; fully-qualified # 👨🏿‍🌾 E4.0 man farmer: dark skin tone +1F469 200D 1F33E ; fully-qualified # 👩‍🌾 E4.0 woman farmer +1F469 1F3FB 200D 1F33E ; fully-qualified # 👩🏻‍🌾 E4.0 woman farmer: light skin tone +1F469 1F3FC 200D 1F33E ; fully-qualified # 👩🏼‍🌾 E4.0 woman farmer: medium-light skin tone +1F469 1F3FD 200D 1F33E ; fully-qualified # 👩🏽‍🌾 E4.0 woman farmer: medium skin tone +1F469 1F3FE 200D 1F33E ; fully-qualified # 👩🏾‍🌾 E4.0 woman farmer: medium-dark skin tone +1F469 1F3FF 200D 1F33E ; fully-qualified # 👩🏿‍🌾 E4.0 woman farmer: dark skin tone +1F9D1 200D 1F373 ; fully-qualified # 🧑‍🍳 E12.1 cook +1F9D1 1F3FB 200D 1F373 ; fully-qualified # 🧑🏻‍🍳 E12.1 cook: light skin tone +1F9D1 1F3FC 200D 1F373 ; fully-qualified # 🧑🏼‍🍳 E12.1 cook: medium-light skin tone +1F9D1 1F3FD 200D 1F373 ; fully-qualified # 🧑🏽‍🍳 E12.1 cook: medium skin tone +1F9D1 1F3FE 200D 1F373 ; fully-qualified # 🧑🏾‍🍳 E12.1 cook: medium-dark skin tone +1F9D1 1F3FF 200D 1F373 ; fully-qualified # 🧑🏿‍🍳 E12.1 cook: dark skin tone +1F468 200D 1F373 ; fully-qualified # 👨‍🍳 E4.0 man cook +1F468 1F3FB 200D 1F373 ; fully-qualified # 👨🏻‍🍳 E4.0 man cook: light skin tone +1F468 1F3FC 200D 1F373 ; fully-qualified # 👨🏼‍🍳 E4.0 man cook: medium-light skin tone +1F468 1F3FD 200D 1F373 ; fully-qualified # 👨🏽‍🍳 E4.0 man cook: medium skin tone +1F468 1F3FE 200D 1F373 ; fully-qualified # 👨🏾‍🍳 E4.0 man cook: medium-dark skin tone +1F468 1F3FF 200D 1F373 ; fully-qualified # 👨🏿‍🍳 E4.0 man cook: dark skin tone +1F469 200D 1F373 ; fully-qualified # 👩‍🍳 E4.0 woman cook +1F469 1F3FB 200D 1F373 ; fully-qualified # 👩🏻‍🍳 E4.0 woman cook: light skin tone +1F469 1F3FC 200D 1F373 ; fully-qualified # 👩🏼‍🍳 E4.0 woman cook: medium-light skin tone +1F469 1F3FD 200D 1F373 ; fully-qualified # 👩🏽‍🍳 E4.0 woman cook: medium skin tone +1F469 1F3FE 200D 1F373 ; fully-qualified # 👩🏾‍🍳 E4.0 woman cook: medium-dark skin tone +1F469 1F3FF 200D 1F373 ; fully-qualified # 👩🏿‍🍳 E4.0 woman cook: dark skin tone +1F9D1 200D 1F527 ; fully-qualified # 🧑‍🔧 E12.1 mechanic +1F9D1 1F3FB 200D 1F527 ; fully-qualified # 🧑🏻‍🔧 E12.1 mechanic: light skin tone +1F9D1 1F3FC 200D 1F527 ; fully-qualified # 🧑🏼‍🔧 E12.1 mechanic: medium-light skin tone +1F9D1 1F3FD 200D 1F527 ; fully-qualified # 🧑🏽‍🔧 E12.1 mechanic: medium skin tone +1F9D1 1F3FE 200D 1F527 ; fully-qualified # 🧑🏾‍🔧 E12.1 mechanic: medium-dark skin tone +1F9D1 1F3FF 200D 1F527 ; fully-qualified # 🧑🏿‍🔧 E12.1 mechanic: dark skin tone +1F468 200D 1F527 ; fully-qualified # 👨‍🔧 E4.0 man mechanic +1F468 1F3FB 200D 1F527 ; fully-qualified # 👨🏻‍🔧 E4.0 man mechanic: light skin tone +1F468 1F3FC 200D 1F527 ; fully-qualified # 👨🏼‍🔧 E4.0 man mechanic: medium-light skin tone +1F468 1F3FD 200D 1F527 ; fully-qualified # 👨🏽‍🔧 E4.0 man mechanic: medium skin tone +1F468 1F3FE 200D 1F527 ; fully-qualified # 👨🏾‍🔧 E4.0 man mechanic: medium-dark skin tone +1F468 1F3FF 200D 1F527 ; fully-qualified # 👨🏿‍🔧 E4.0 man mechanic: dark skin tone +1F469 200D 1F527 ; fully-qualified # 👩‍🔧 E4.0 woman mechanic +1F469 1F3FB 200D 1F527 ; fully-qualified # 👩🏻‍🔧 E4.0 woman mechanic: light skin tone +1F469 1F3FC 200D 1F527 ; fully-qualified # 👩🏼‍🔧 E4.0 woman mechanic: medium-light skin tone +1F469 1F3FD 200D 1F527 ; fully-qualified # 👩🏽‍🔧 E4.0 woman mechanic: medium skin tone +1F469 1F3FE 200D 1F527 ; fully-qualified # 👩🏾‍🔧 E4.0 woman mechanic: medium-dark skin tone +1F469 1F3FF 200D 1F527 ; fully-qualified # 👩🏿‍🔧 E4.0 woman mechanic: dark skin tone +1F9D1 200D 1F3ED ; fully-qualified # 🧑‍🏭 E12.1 factory worker +1F9D1 1F3FB 200D 1F3ED ; fully-qualified # 🧑🏻‍🏭 E12.1 factory worker: light skin tone +1F9D1 1F3FC 200D 1F3ED ; fully-qualified # 🧑🏼‍🏭 E12.1 factory worker: medium-light skin tone +1F9D1 1F3FD 200D 1F3ED ; fully-qualified # 🧑🏽‍🏭 E12.1 factory worker: medium skin tone +1F9D1 1F3FE 200D 1F3ED ; fully-qualified # 🧑🏾‍🏭 E12.1 factory worker: medium-dark skin tone +1F9D1 1F3FF 200D 1F3ED ; fully-qualified # 🧑🏿‍🏭 E12.1 factory worker: dark skin tone +1F468 200D 1F3ED ; fully-qualified # 👨‍🏭 E4.0 man factory worker +1F468 1F3FB 200D 1F3ED ; fully-qualified # 👨🏻‍🏭 E4.0 man factory worker: light skin tone +1F468 1F3FC 200D 1F3ED ; fully-qualified # 👨🏼‍🏭 E4.0 man factory worker: medium-light skin tone +1F468 1F3FD 200D 1F3ED ; fully-qualified # 👨🏽‍🏭 E4.0 man factory worker: medium skin tone +1F468 1F3FE 200D 1F3ED ; fully-qualified # 👨🏾‍🏭 E4.0 man factory worker: medium-dark skin tone +1F468 1F3FF 200D 1F3ED ; fully-qualified # 👨🏿‍🏭 E4.0 man factory worker: dark skin tone +1F469 200D 1F3ED ; fully-qualified # 👩‍🏭 E4.0 woman factory worker +1F469 1F3FB 200D 1F3ED ; fully-qualified # 👩🏻‍🏭 E4.0 woman factory worker: light skin tone +1F469 1F3FC 200D 1F3ED ; fully-qualified # 👩🏼‍🏭 E4.0 woman factory worker: medium-light skin tone +1F469 1F3FD 200D 1F3ED ; fully-qualified # 👩🏽‍🏭 E4.0 woman factory worker: medium skin tone +1F469 1F3FE 200D 1F3ED ; fully-qualified # 👩🏾‍🏭 E4.0 woman factory worker: medium-dark skin tone +1F469 1F3FF 200D 1F3ED ; fully-qualified # 👩🏿‍🏭 E4.0 woman factory worker: dark skin tone +1F9D1 200D 1F4BC ; fully-qualified # 🧑‍💼 E12.1 office worker +1F9D1 1F3FB 200D 1F4BC ; fully-qualified # 🧑🏻‍💼 E12.1 office worker: light skin tone +1F9D1 1F3FC 200D 1F4BC ; fully-qualified # 🧑🏼‍💼 E12.1 office worker: medium-light skin tone +1F9D1 1F3FD 200D 1F4BC ; fully-qualified # 🧑🏽‍💼 E12.1 office worker: medium skin tone +1F9D1 1F3FE 200D 1F4BC ; fully-qualified # 🧑🏾‍💼 E12.1 office worker: medium-dark skin tone +1F9D1 1F3FF 200D 1F4BC ; fully-qualified # 🧑🏿‍💼 E12.1 office worker: dark skin tone +1F468 200D 1F4BC ; fully-qualified # 👨‍💼 E4.0 man office worker +1F468 1F3FB 200D 1F4BC ; fully-qualified # 👨🏻‍💼 E4.0 man office worker: light skin tone +1F468 1F3FC 200D 1F4BC ; fully-qualified # 👨🏼‍💼 E4.0 man office worker: medium-light skin tone +1F468 1F3FD 200D 1F4BC ; fully-qualified # 👨🏽‍💼 E4.0 man office worker: medium skin tone +1F468 1F3FE 200D 1F4BC ; fully-qualified # 👨🏾‍💼 E4.0 man office worker: medium-dark skin tone +1F468 1F3FF 200D 1F4BC ; fully-qualified # 👨🏿‍💼 E4.0 man office worker: dark skin tone +1F469 200D 1F4BC ; fully-qualified # 👩‍💼 E4.0 woman office worker +1F469 1F3FB 200D 1F4BC ; fully-qualified # 👩🏻‍💼 E4.0 woman office worker: light skin tone +1F469 1F3FC 200D 1F4BC ; fully-qualified # 👩🏼‍💼 E4.0 woman office worker: medium-light skin tone +1F469 1F3FD 200D 1F4BC ; fully-qualified # 👩🏽‍💼 E4.0 woman office worker: medium skin tone +1F469 1F3FE 200D 1F4BC ; fully-qualified # 👩🏾‍💼 E4.0 woman office worker: medium-dark skin tone +1F469 1F3FF 200D 1F4BC ; fully-qualified # 👩🏿‍💼 E4.0 woman office worker: dark skin tone +1F9D1 200D 1F52C ; fully-qualified # 🧑‍🔬 E12.1 scientist +1F9D1 1F3FB 200D 1F52C ; fully-qualified # 🧑🏻‍🔬 E12.1 scientist: light skin tone +1F9D1 1F3FC 200D 1F52C ; fully-qualified # 🧑🏼‍🔬 E12.1 scientist: medium-light skin tone +1F9D1 1F3FD 200D 1F52C ; fully-qualified # 🧑🏽‍🔬 E12.1 scientist: medium skin tone +1F9D1 1F3FE 200D 1F52C ; fully-qualified # 🧑🏾‍🔬 E12.1 scientist: medium-dark skin tone +1F9D1 1F3FF 200D 1F52C ; fully-qualified # 🧑🏿‍🔬 E12.1 scientist: dark skin tone +1F468 200D 1F52C ; fully-qualified # 👨‍🔬 E4.0 man scientist +1F468 1F3FB 200D 1F52C ; fully-qualified # 👨🏻‍🔬 E4.0 man scientist: light skin tone +1F468 1F3FC 200D 1F52C ; fully-qualified # 👨🏼‍🔬 E4.0 man scientist: medium-light skin tone +1F468 1F3FD 200D 1F52C ; fully-qualified # 👨🏽‍🔬 E4.0 man scientist: medium skin tone +1F468 1F3FE 200D 1F52C ; fully-qualified # 👨🏾‍🔬 E4.0 man scientist: medium-dark skin tone +1F468 1F3FF 200D 1F52C ; fully-qualified # 👨🏿‍🔬 E4.0 man scientist: dark skin tone +1F469 200D 1F52C ; fully-qualified # 👩‍🔬 E4.0 woman scientist +1F469 1F3FB 200D 1F52C ; fully-qualified # 👩🏻‍🔬 E4.0 woman scientist: light skin tone +1F469 1F3FC 200D 1F52C ; fully-qualified # 👩🏼‍🔬 E4.0 woman scientist: medium-light skin tone +1F469 1F3FD 200D 1F52C ; fully-qualified # 👩🏽‍🔬 E4.0 woman scientist: medium skin tone +1F469 1F3FE 200D 1F52C ; fully-qualified # 👩🏾‍🔬 E4.0 woman scientist: medium-dark skin tone +1F469 1F3FF 200D 1F52C ; fully-qualified # 👩🏿‍🔬 E4.0 woman scientist: dark skin tone +1F9D1 200D 1F4BB ; fully-qualified # 🧑‍💻 E12.1 technologist +1F9D1 1F3FB 200D 1F4BB ; fully-qualified # 🧑🏻‍💻 E12.1 technologist: light skin tone +1F9D1 1F3FC 200D 1F4BB ; fully-qualified # 🧑🏼‍💻 E12.1 technologist: medium-light skin tone +1F9D1 1F3FD 200D 1F4BB ; fully-qualified # 🧑🏽‍💻 E12.1 technologist: medium skin tone +1F9D1 1F3FE 200D 1F4BB ; fully-qualified # 🧑🏾‍💻 E12.1 technologist: medium-dark skin tone +1F9D1 1F3FF 200D 1F4BB ; fully-qualified # 🧑🏿‍💻 E12.1 technologist: dark skin tone +1F468 200D 1F4BB ; fully-qualified # 👨‍💻 E4.0 man technologist +1F468 1F3FB 200D 1F4BB ; fully-qualified # 👨🏻‍💻 E4.0 man technologist: light skin tone +1F468 1F3FC 200D 1F4BB ; fully-qualified # 👨🏼‍💻 E4.0 man technologist: medium-light skin tone +1F468 1F3FD 200D 1F4BB ; fully-qualified # 👨🏽‍💻 E4.0 man technologist: medium skin tone +1F468 1F3FE 200D 1F4BB ; fully-qualified # 👨🏾‍💻 E4.0 man technologist: medium-dark skin tone +1F468 1F3FF 200D 1F4BB ; fully-qualified # 👨🏿‍💻 E4.0 man technologist: dark skin tone +1F469 200D 1F4BB ; fully-qualified # 👩‍💻 E4.0 woman technologist +1F469 1F3FB 200D 1F4BB ; fully-qualified # 👩🏻‍💻 E4.0 woman technologist: light skin tone +1F469 1F3FC 200D 1F4BB ; fully-qualified # 👩🏼‍💻 E4.0 woman technologist: medium-light skin tone +1F469 1F3FD 200D 1F4BB ; fully-qualified # 👩🏽‍💻 E4.0 woman technologist: medium skin tone +1F469 1F3FE 200D 1F4BB ; fully-qualified # 👩🏾‍💻 E4.0 woman technologist: medium-dark skin tone +1F469 1F3FF 200D 1F4BB ; fully-qualified # 👩🏿‍💻 E4.0 woman technologist: dark skin tone +1F9D1 200D 1F3A4 ; fully-qualified # 🧑‍🎤 E12.1 singer +1F9D1 1F3FB 200D 1F3A4 ; fully-qualified # 🧑🏻‍🎤 E12.1 singer: light skin tone +1F9D1 1F3FC 200D 1F3A4 ; fully-qualified # 🧑🏼‍🎤 E12.1 singer: medium-light skin tone +1F9D1 1F3FD 200D 1F3A4 ; fully-qualified # 🧑🏽‍🎤 E12.1 singer: medium skin tone +1F9D1 1F3FE 200D 1F3A4 ; fully-qualified # 🧑🏾‍🎤 E12.1 singer: medium-dark skin tone +1F9D1 1F3FF 200D 1F3A4 ; fully-qualified # 🧑🏿‍🎤 E12.1 singer: dark skin tone +1F468 200D 1F3A4 ; fully-qualified # 👨‍🎤 E4.0 man singer +1F468 1F3FB 200D 1F3A4 ; fully-qualified # 👨🏻‍🎤 E4.0 man singer: light skin tone +1F468 1F3FC 200D 1F3A4 ; fully-qualified # 👨🏼‍🎤 E4.0 man singer: medium-light skin tone +1F468 1F3FD 200D 1F3A4 ; fully-qualified # 👨🏽‍🎤 E4.0 man singer: medium skin tone +1F468 1F3FE 200D 1F3A4 ; fully-qualified # 👨🏾‍🎤 E4.0 man singer: medium-dark skin tone +1F468 1F3FF 200D 1F3A4 ; fully-qualified # 👨🏿‍🎤 E4.0 man singer: dark skin tone +1F469 200D 1F3A4 ; fully-qualified # 👩‍🎤 E4.0 woman singer +1F469 1F3FB 200D 1F3A4 ; fully-qualified # 👩🏻‍🎤 E4.0 woman singer: light skin tone +1F469 1F3FC 200D 1F3A4 ; fully-qualified # 👩🏼‍🎤 E4.0 woman singer: medium-light skin tone +1F469 1F3FD 200D 1F3A4 ; fully-qualified # 👩🏽‍🎤 E4.0 woman singer: medium skin tone +1F469 1F3FE 200D 1F3A4 ; fully-qualified # 👩🏾‍🎤 E4.0 woman singer: medium-dark skin tone +1F469 1F3FF 200D 1F3A4 ; fully-qualified # 👩🏿‍🎤 E4.0 woman singer: dark skin tone +1F9D1 200D 1F3A8 ; fully-qualified # 🧑‍🎨 E12.1 artist +1F9D1 1F3FB 200D 1F3A8 ; fully-qualified # 🧑🏻‍🎨 E12.1 artist: light skin tone +1F9D1 1F3FC 200D 1F3A8 ; fully-qualified # 🧑🏼‍🎨 E12.1 artist: medium-light skin tone +1F9D1 1F3FD 200D 1F3A8 ; fully-qualified # 🧑🏽‍🎨 E12.1 artist: medium skin tone +1F9D1 1F3FE 200D 1F3A8 ; fully-qualified # 🧑🏾‍🎨 E12.1 artist: medium-dark skin tone +1F9D1 1F3FF 200D 1F3A8 ; fully-qualified # 🧑🏿‍🎨 E12.1 artist: dark skin tone +1F468 200D 1F3A8 ; fully-qualified # 👨‍🎨 E4.0 man artist +1F468 1F3FB 200D 1F3A8 ; fully-qualified # 👨🏻‍🎨 E4.0 man artist: light skin tone +1F468 1F3FC 200D 1F3A8 ; fully-qualified # 👨🏼‍🎨 E4.0 man artist: medium-light skin tone +1F468 1F3FD 200D 1F3A8 ; fully-qualified # 👨🏽‍🎨 E4.0 man artist: medium skin tone +1F468 1F3FE 200D 1F3A8 ; fully-qualified # 👨🏾‍🎨 E4.0 man artist: medium-dark skin tone +1F468 1F3FF 200D 1F3A8 ; fully-qualified # 👨🏿‍🎨 E4.0 man artist: dark skin tone +1F469 200D 1F3A8 ; fully-qualified # 👩‍🎨 E4.0 woman artist +1F469 1F3FB 200D 1F3A8 ; fully-qualified # 👩🏻‍🎨 E4.0 woman artist: light skin tone +1F469 1F3FC 200D 1F3A8 ; fully-qualified # 👩🏼‍🎨 E4.0 woman artist: medium-light skin tone +1F469 1F3FD 200D 1F3A8 ; fully-qualified # 👩🏽‍🎨 E4.0 woman artist: medium skin tone +1F469 1F3FE 200D 1F3A8 ; fully-qualified # 👩🏾‍🎨 E4.0 woman artist: medium-dark skin tone +1F469 1F3FF 200D 1F3A8 ; fully-qualified # 👩🏿‍🎨 E4.0 woman artist: dark skin tone +1F9D1 200D 2708 FE0F ; fully-qualified # 🧑‍✈️ E12.1 pilot +1F9D1 200D 2708 ; minimally-qualified # 🧑‍✈ E12.1 pilot +1F9D1 1F3FB 200D 2708 FE0F ; fully-qualified # 🧑🏻‍✈️ E12.1 pilot: light skin tone +1F9D1 1F3FB 200D 2708 ; minimally-qualified # 🧑🏻‍✈ E12.1 pilot: light skin tone +1F9D1 1F3FC 200D 2708 FE0F ; fully-qualified # 🧑🏼‍✈️ E12.1 pilot: medium-light skin tone +1F9D1 1F3FC 200D 2708 ; minimally-qualified # 🧑🏼‍✈ E12.1 pilot: medium-light skin tone +1F9D1 1F3FD 200D 2708 FE0F ; fully-qualified # 🧑🏽‍✈️ E12.1 pilot: medium skin tone +1F9D1 1F3FD 200D 2708 ; minimally-qualified # 🧑🏽‍✈ E12.1 pilot: medium skin tone +1F9D1 1F3FE 200D 2708 FE0F ; fully-qualified # 🧑🏾‍✈️ E12.1 pilot: medium-dark skin tone +1F9D1 1F3FE 200D 2708 ; minimally-qualified # 🧑🏾‍✈ E12.1 pilot: medium-dark skin tone +1F9D1 1F3FF 200D 2708 FE0F ; fully-qualified # 🧑🏿‍✈️ E12.1 pilot: dark skin tone +1F9D1 1F3FF 200D 2708 ; minimally-qualified # 🧑🏿‍✈ E12.1 pilot: dark skin tone +1F468 200D 2708 FE0F ; fully-qualified # 👨‍✈️ E4.0 man pilot +1F468 200D 2708 ; minimally-qualified # 👨‍✈ E4.0 man pilot +1F468 1F3FB 200D 2708 FE0F ; fully-qualified # 👨🏻‍✈️ E4.0 man pilot: light skin tone +1F468 1F3FB 200D 2708 ; minimally-qualified # 👨🏻‍✈ E4.0 man pilot: light skin tone +1F468 1F3FC 200D 2708 FE0F ; fully-qualified # 👨🏼‍✈️ E4.0 man pilot: medium-light skin tone +1F468 1F3FC 200D 2708 ; minimally-qualified # 👨🏼‍✈ E4.0 man pilot: medium-light skin tone +1F468 1F3FD 200D 2708 FE0F ; fully-qualified # 👨🏽‍✈️ E4.0 man pilot: medium skin tone +1F468 1F3FD 200D 2708 ; minimally-qualified # 👨🏽‍✈ E4.0 man pilot: medium skin tone +1F468 1F3FE 200D 2708 FE0F ; fully-qualified # 👨🏾‍✈️ E4.0 man pilot: medium-dark skin tone +1F468 1F3FE 200D 2708 ; minimally-qualified # 👨🏾‍✈ E4.0 man pilot: medium-dark skin tone +1F468 1F3FF 200D 2708 FE0F ; fully-qualified # 👨🏿‍✈️ E4.0 man pilot: dark skin tone +1F468 1F3FF 200D 2708 ; minimally-qualified # 👨🏿‍✈ E4.0 man pilot: dark skin tone +1F469 200D 2708 FE0F ; fully-qualified # 👩‍✈️ E4.0 woman pilot +1F469 200D 2708 ; minimally-qualified # 👩‍✈ E4.0 woman pilot +1F469 1F3FB 200D 2708 FE0F ; fully-qualified # 👩🏻‍✈️ E4.0 woman pilot: light skin tone +1F469 1F3FB 200D 2708 ; minimally-qualified # 👩🏻‍✈ E4.0 woman pilot: light skin tone +1F469 1F3FC 200D 2708 FE0F ; fully-qualified # 👩🏼‍✈️ E4.0 woman pilot: medium-light skin tone +1F469 1F3FC 200D 2708 ; minimally-qualified # 👩🏼‍✈ E4.0 woman pilot: medium-light skin tone +1F469 1F3FD 200D 2708 FE0F ; fully-qualified # 👩🏽‍✈️ E4.0 woman pilot: medium skin tone +1F469 1F3FD 200D 2708 ; minimally-qualified # 👩🏽‍✈ E4.0 woman pilot: medium skin tone +1F469 1F3FE 200D 2708 FE0F ; fully-qualified # 👩🏾‍✈️ E4.0 woman pilot: medium-dark skin tone +1F469 1F3FE 200D 2708 ; minimally-qualified # 👩🏾‍✈ E4.0 woman pilot: medium-dark skin tone +1F469 1F3FF 200D 2708 FE0F ; fully-qualified # 👩🏿‍✈️ E4.0 woman pilot: dark skin tone +1F469 1F3FF 200D 2708 ; minimally-qualified # 👩🏿‍✈ E4.0 woman pilot: dark skin tone +1F9D1 200D 1F680 ; fully-qualified # 🧑‍🚀 E12.1 astronaut +1F9D1 1F3FB 200D 1F680 ; fully-qualified # 🧑🏻‍🚀 E12.1 astronaut: light skin tone +1F9D1 1F3FC 200D 1F680 ; fully-qualified # 🧑🏼‍🚀 E12.1 astronaut: medium-light skin tone +1F9D1 1F3FD 200D 1F680 ; fully-qualified # 🧑🏽‍🚀 E12.1 astronaut: medium skin tone +1F9D1 1F3FE 200D 1F680 ; fully-qualified # 🧑🏾‍🚀 E12.1 astronaut: medium-dark skin tone +1F9D1 1F3FF 200D 1F680 ; fully-qualified # 🧑🏿‍🚀 E12.1 astronaut: dark skin tone +1F468 200D 1F680 ; fully-qualified # 👨‍🚀 E4.0 man astronaut +1F468 1F3FB 200D 1F680 ; fully-qualified # 👨🏻‍🚀 E4.0 man astronaut: light skin tone +1F468 1F3FC 200D 1F680 ; fully-qualified # 👨🏼‍🚀 E4.0 man astronaut: medium-light skin tone +1F468 1F3FD 200D 1F680 ; fully-qualified # 👨🏽‍🚀 E4.0 man astronaut: medium skin tone +1F468 1F3FE 200D 1F680 ; fully-qualified # 👨🏾‍🚀 E4.0 man astronaut: medium-dark skin tone +1F468 1F3FF 200D 1F680 ; fully-qualified # 👨🏿‍🚀 E4.0 man astronaut: dark skin tone +1F469 200D 1F680 ; fully-qualified # 👩‍🚀 E4.0 woman astronaut +1F469 1F3FB 200D 1F680 ; fully-qualified # 👩🏻‍🚀 E4.0 woman astronaut: light skin tone +1F469 1F3FC 200D 1F680 ; fully-qualified # 👩🏼‍🚀 E4.0 woman astronaut: medium-light skin tone +1F469 1F3FD 200D 1F680 ; fully-qualified # 👩🏽‍🚀 E4.0 woman astronaut: medium skin tone +1F469 1F3FE 200D 1F680 ; fully-qualified # 👩🏾‍🚀 E4.0 woman astronaut: medium-dark skin tone +1F469 1F3FF 200D 1F680 ; fully-qualified # 👩🏿‍🚀 E4.0 woman astronaut: dark skin tone +1F9D1 200D 1F692 ; fully-qualified # 🧑‍🚒 E12.1 firefighter +1F9D1 1F3FB 200D 1F692 ; fully-qualified # 🧑🏻‍🚒 E12.1 firefighter: light skin tone +1F9D1 1F3FC 200D 1F692 ; fully-qualified # 🧑🏼‍🚒 E12.1 firefighter: medium-light skin tone +1F9D1 1F3FD 200D 1F692 ; fully-qualified # 🧑🏽‍🚒 E12.1 firefighter: medium skin tone +1F9D1 1F3FE 200D 1F692 ; fully-qualified # 🧑🏾‍🚒 E12.1 firefighter: medium-dark skin tone +1F9D1 1F3FF 200D 1F692 ; fully-qualified # 🧑🏿‍🚒 E12.1 firefighter: dark skin tone +1F468 200D 1F692 ; fully-qualified # 👨‍🚒 E4.0 man firefighter +1F468 1F3FB 200D 1F692 ; fully-qualified # 👨🏻‍🚒 E4.0 man firefighter: light skin tone +1F468 1F3FC 200D 1F692 ; fully-qualified # 👨🏼‍🚒 E4.0 man firefighter: medium-light skin tone +1F468 1F3FD 200D 1F692 ; fully-qualified # 👨🏽‍🚒 E4.0 man firefighter: medium skin tone +1F468 1F3FE 200D 1F692 ; fully-qualified # 👨🏾‍🚒 E4.0 man firefighter: medium-dark skin tone +1F468 1F3FF 200D 1F692 ; fully-qualified # 👨🏿‍🚒 E4.0 man firefighter: dark skin tone +1F469 200D 1F692 ; fully-qualified # 👩‍🚒 E4.0 woman firefighter +1F469 1F3FB 200D 1F692 ; fully-qualified # 👩🏻‍🚒 E4.0 woman firefighter: light skin tone +1F469 1F3FC 200D 1F692 ; fully-qualified # 👩🏼‍🚒 E4.0 woman firefighter: medium-light skin tone +1F469 1F3FD 200D 1F692 ; fully-qualified # 👩🏽‍🚒 E4.0 woman firefighter: medium skin tone +1F469 1F3FE 200D 1F692 ; fully-qualified # 👩🏾‍🚒 E4.0 woman firefighter: medium-dark skin tone +1F469 1F3FF 200D 1F692 ; fully-qualified # 👩🏿‍🚒 E4.0 woman firefighter: dark skin tone +1F46E ; fully-qualified # 👮 E0.6 police officer +1F46E 1F3FB ; fully-qualified # 👮🏻 E1.0 police officer: light skin tone +1F46E 1F3FC ; fully-qualified # 👮🏼 E1.0 police officer: medium-light skin tone +1F46E 1F3FD ; fully-qualified # 👮🏽 E1.0 police officer: medium skin tone +1F46E 1F3FE ; fully-qualified # 👮🏾 E1.0 police officer: medium-dark skin tone +1F46E 1F3FF ; fully-qualified # 👮🏿 E1.0 police officer: dark skin tone +1F46E 200D 2642 FE0F ; fully-qualified # 👮‍♂️ E4.0 man police officer +1F46E 200D 2642 ; minimally-qualified # 👮‍♂ E4.0 man police officer +1F46E 1F3FB 200D 2642 FE0F ; fully-qualified # 👮🏻‍♂️ E4.0 man police officer: light skin tone +1F46E 1F3FB 200D 2642 ; minimally-qualified # 👮🏻‍♂ E4.0 man police officer: light skin tone +1F46E 1F3FC 200D 2642 FE0F ; fully-qualified # 👮🏼‍♂️ E4.0 man police officer: medium-light skin tone +1F46E 1F3FC 200D 2642 ; minimally-qualified # 👮🏼‍♂ E4.0 man police officer: medium-light skin tone +1F46E 1F3FD 200D 2642 FE0F ; fully-qualified # 👮🏽‍♂️ E4.0 man police officer: medium skin tone +1F46E 1F3FD 200D 2642 ; minimally-qualified # 👮🏽‍♂ E4.0 man police officer: medium skin tone +1F46E 1F3FE 200D 2642 FE0F ; fully-qualified # 👮🏾‍♂️ E4.0 man police officer: medium-dark skin tone +1F46E 1F3FE 200D 2642 ; minimally-qualified # 👮🏾‍♂ E4.0 man police officer: medium-dark skin tone +1F46E 1F3FF 200D 2642 FE0F ; fully-qualified # 👮🏿‍♂️ E4.0 man police officer: dark skin tone +1F46E 1F3FF 200D 2642 ; minimally-qualified # 👮🏿‍♂ E4.0 man police officer: dark skin tone +1F46E 200D 2640 FE0F ; fully-qualified # 👮‍♀️ E4.0 woman police officer +1F46E 200D 2640 ; minimally-qualified # 👮‍♀ E4.0 woman police officer +1F46E 1F3FB 200D 2640 FE0F ; fully-qualified # 👮🏻‍♀️ E4.0 woman police officer: light skin tone +1F46E 1F3FB 200D 2640 ; minimally-qualified # 👮🏻‍♀ E4.0 woman police officer: light skin tone +1F46E 1F3FC 200D 2640 FE0F ; fully-qualified # 👮🏼‍♀️ E4.0 woman police officer: medium-light skin tone +1F46E 1F3FC 200D 2640 ; minimally-qualified # 👮🏼‍♀ E4.0 woman police officer: medium-light skin tone +1F46E 1F3FD 200D 2640 FE0F ; fully-qualified # 👮🏽‍♀️ E4.0 woman police officer: medium skin tone +1F46E 1F3FD 200D 2640 ; minimally-qualified # 👮🏽‍♀ E4.0 woman police officer: medium skin tone +1F46E 1F3FE 200D 2640 FE0F ; fully-qualified # 👮🏾‍♀️ E4.0 woman police officer: medium-dark skin tone +1F46E 1F3FE 200D 2640 ; minimally-qualified # 👮🏾‍♀ E4.0 woman police officer: medium-dark skin tone +1F46E 1F3FF 200D 2640 FE0F ; fully-qualified # 👮🏿‍♀️ E4.0 woman police officer: dark skin tone +1F46E 1F3FF 200D 2640 ; minimally-qualified # 👮🏿‍♀ E4.0 woman police officer: dark skin tone +1F575 FE0F ; fully-qualified # 🕵️ E0.7 detective +1F575 ; unqualified # 🕵 E0.7 detective +1F575 1F3FB ; fully-qualified # 🕵🏻 E2.0 detective: light skin tone +1F575 1F3FC ; fully-qualified # 🕵🏼 E2.0 detective: medium-light skin tone +1F575 1F3FD ; fully-qualified # 🕵🏽 E2.0 detective: medium skin tone +1F575 1F3FE ; fully-qualified # 🕵🏾 E2.0 detective: medium-dark skin tone +1F575 1F3FF ; fully-qualified # 🕵🏿 E2.0 detective: dark skin tone +1F575 FE0F 200D 2642 FE0F ; fully-qualified # 🕵️‍♂️ E4.0 man detective +1F575 200D 2642 FE0F ; unqualified # 🕵‍♂️ E4.0 man detective +1F575 FE0F 200D 2642 ; minimally-qualified # 🕵️‍♂ E4.0 man detective +1F575 200D 2642 ; unqualified # 🕵‍♂ E4.0 man detective +1F575 1F3FB 200D 2642 FE0F ; fully-qualified # 🕵🏻‍♂️ E4.0 man detective: light skin tone +1F575 1F3FB 200D 2642 ; minimally-qualified # 🕵🏻‍♂ E4.0 man detective: light skin tone +1F575 1F3FC 200D 2642 FE0F ; fully-qualified # 🕵🏼‍♂️ E4.0 man detective: medium-light skin tone +1F575 1F3FC 200D 2642 ; minimally-qualified # 🕵🏼‍♂ E4.0 man detective: medium-light skin tone +1F575 1F3FD 200D 2642 FE0F ; fully-qualified # 🕵🏽‍♂️ E4.0 man detective: medium skin tone +1F575 1F3FD 200D 2642 ; minimally-qualified # 🕵🏽‍♂ E4.0 man detective: medium skin tone +1F575 1F3FE 200D 2642 FE0F ; fully-qualified # 🕵🏾‍♂️ E4.0 man detective: medium-dark skin tone +1F575 1F3FE 200D 2642 ; minimally-qualified # 🕵🏾‍♂ E4.0 man detective: medium-dark skin tone +1F575 1F3FF 200D 2642 FE0F ; fully-qualified # 🕵🏿‍♂️ E4.0 man detective: dark skin tone +1F575 1F3FF 200D 2642 ; minimally-qualified # 🕵🏿‍♂ E4.0 man detective: dark skin tone +1F575 FE0F 200D 2640 FE0F ; fully-qualified # 🕵️‍♀️ E4.0 woman detective +1F575 200D 2640 FE0F ; unqualified # 🕵‍♀️ E4.0 woman detective +1F575 FE0F 200D 2640 ; minimally-qualified # 🕵️‍♀ E4.0 woman detective +1F575 200D 2640 ; unqualified # 🕵‍♀ E4.0 woman detective +1F575 1F3FB 200D 2640 FE0F ; fully-qualified # 🕵🏻‍♀️ E4.0 woman detective: light skin tone +1F575 1F3FB 200D 2640 ; minimally-qualified # 🕵🏻‍♀ E4.0 woman detective: light skin tone +1F575 1F3FC 200D 2640 FE0F ; fully-qualified # 🕵🏼‍♀️ E4.0 woman detective: medium-light skin tone +1F575 1F3FC 200D 2640 ; minimally-qualified # 🕵🏼‍♀ E4.0 woman detective: medium-light skin tone +1F575 1F3FD 200D 2640 FE0F ; fully-qualified # 🕵🏽‍♀️ E4.0 woman detective: medium skin tone +1F575 1F3FD 200D 2640 ; minimally-qualified # 🕵🏽‍♀ E4.0 woman detective: medium skin tone +1F575 1F3FE 200D 2640 FE0F ; fully-qualified # 🕵🏾‍♀️ E4.0 woman detective: medium-dark skin tone +1F575 1F3FE 200D 2640 ; minimally-qualified # 🕵🏾‍♀ E4.0 woman detective: medium-dark skin tone +1F575 1F3FF 200D 2640 FE0F ; fully-qualified # 🕵🏿‍♀️ E4.0 woman detective: dark skin tone +1F575 1F3FF 200D 2640 ; minimally-qualified # 🕵🏿‍♀ E4.0 woman detective: dark skin tone +1F482 ; fully-qualified # 💂 E0.6 guard +1F482 1F3FB ; fully-qualified # 💂🏻 E1.0 guard: light skin tone +1F482 1F3FC ; fully-qualified # 💂🏼 E1.0 guard: medium-light skin tone +1F482 1F3FD ; fully-qualified # 💂🏽 E1.0 guard: medium skin tone +1F482 1F3FE ; fully-qualified # 💂🏾 E1.0 guard: medium-dark skin tone +1F482 1F3FF ; fully-qualified # 💂🏿 E1.0 guard: dark skin tone +1F482 200D 2642 FE0F ; fully-qualified # 💂‍♂️ E4.0 man guard +1F482 200D 2642 ; minimally-qualified # 💂‍♂ E4.0 man guard +1F482 1F3FB 200D 2642 FE0F ; fully-qualified # 💂🏻‍♂️ E4.0 man guard: light skin tone +1F482 1F3FB 200D 2642 ; minimally-qualified # 💂🏻‍♂ E4.0 man guard: light skin tone +1F482 1F3FC 200D 2642 FE0F ; fully-qualified # 💂🏼‍♂️ E4.0 man guard: medium-light skin tone +1F482 1F3FC 200D 2642 ; minimally-qualified # 💂🏼‍♂ E4.0 man guard: medium-light skin tone +1F482 1F3FD 200D 2642 FE0F ; fully-qualified # 💂🏽‍♂️ E4.0 man guard: medium skin tone +1F482 1F3FD 200D 2642 ; minimally-qualified # 💂🏽‍♂ E4.0 man guard: medium skin tone +1F482 1F3FE 200D 2642 FE0F ; fully-qualified # 💂🏾‍♂️ E4.0 man guard: medium-dark skin tone +1F482 1F3FE 200D 2642 ; minimally-qualified # 💂🏾‍♂ E4.0 man guard: medium-dark skin tone +1F482 1F3FF 200D 2642 FE0F ; fully-qualified # 💂🏿‍♂️ E4.0 man guard: dark skin tone +1F482 1F3FF 200D 2642 ; minimally-qualified # 💂🏿‍♂ E4.0 man guard: dark skin tone +1F482 200D 2640 FE0F ; fully-qualified # 💂‍♀️ E4.0 woman guard +1F482 200D 2640 ; minimally-qualified # 💂‍♀ E4.0 woman guard +1F482 1F3FB 200D 2640 FE0F ; fully-qualified # 💂🏻‍♀️ E4.0 woman guard: light skin tone +1F482 1F3FB 200D 2640 ; minimally-qualified # 💂🏻‍♀ E4.0 woman guard: light skin tone +1F482 1F3FC 200D 2640 FE0F ; fully-qualified # 💂🏼‍♀️ E4.0 woman guard: medium-light skin tone +1F482 1F3FC 200D 2640 ; minimally-qualified # 💂🏼‍♀ E4.0 woman guard: medium-light skin tone +1F482 1F3FD 200D 2640 FE0F ; fully-qualified # 💂🏽‍♀️ E4.0 woman guard: medium skin tone +1F482 1F3FD 200D 2640 ; minimally-qualified # 💂🏽‍♀ E4.0 woman guard: medium skin tone +1F482 1F3FE 200D 2640 FE0F ; fully-qualified # 💂🏾‍♀️ E4.0 woman guard: medium-dark skin tone +1F482 1F3FE 200D 2640 ; minimally-qualified # 💂🏾‍♀ E4.0 woman guard: medium-dark skin tone +1F482 1F3FF 200D 2640 FE0F ; fully-qualified # 💂🏿‍♀️ E4.0 woman guard: dark skin tone +1F482 1F3FF 200D 2640 ; minimally-qualified # 💂🏿‍♀ E4.0 woman guard: dark skin tone +1F977 ; fully-qualified # 🥷 E13.0 ninja +1F977 1F3FB ; fully-qualified # 🥷🏻 E13.0 ninja: light skin tone +1F977 1F3FC ; fully-qualified # 🥷🏼 E13.0 ninja: medium-light skin tone +1F977 1F3FD ; fully-qualified # 🥷🏽 E13.0 ninja: medium skin tone +1F977 1F3FE ; fully-qualified # 🥷🏾 E13.0 ninja: medium-dark skin tone +1F977 1F3FF ; fully-qualified # 🥷🏿 E13.0 ninja: dark skin tone +1F477 ; fully-qualified # 👷 E0.6 construction worker +1F477 1F3FB ; fully-qualified # 👷🏻 E1.0 construction worker: light skin tone +1F477 1F3FC ; fully-qualified # 👷🏼 E1.0 construction worker: medium-light skin tone +1F477 1F3FD ; fully-qualified # 👷🏽 E1.0 construction worker: medium skin tone +1F477 1F3FE ; fully-qualified # 👷🏾 E1.0 construction worker: medium-dark skin tone +1F477 1F3FF ; fully-qualified # 👷🏿 E1.0 construction worker: dark skin tone +1F477 200D 2642 FE0F ; fully-qualified # 👷‍♂️ E4.0 man construction worker +1F477 200D 2642 ; minimally-qualified # 👷‍♂ E4.0 man construction worker +1F477 1F3FB 200D 2642 FE0F ; fully-qualified # 👷🏻‍♂️ E4.0 man construction worker: light skin tone +1F477 1F3FB 200D 2642 ; minimally-qualified # 👷🏻‍♂ E4.0 man construction worker: light skin tone +1F477 1F3FC 200D 2642 FE0F ; fully-qualified # 👷🏼‍♂️ E4.0 man construction worker: medium-light skin tone +1F477 1F3FC 200D 2642 ; minimally-qualified # 👷🏼‍♂ E4.0 man construction worker: medium-light skin tone +1F477 1F3FD 200D 2642 FE0F ; fully-qualified # 👷🏽‍♂️ E4.0 man construction worker: medium skin tone +1F477 1F3FD 200D 2642 ; minimally-qualified # 👷🏽‍♂ E4.0 man construction worker: medium skin tone +1F477 1F3FE 200D 2642 FE0F ; fully-qualified # 👷🏾‍♂️ E4.0 man construction worker: medium-dark skin tone +1F477 1F3FE 200D 2642 ; minimally-qualified # 👷🏾‍♂ E4.0 man construction worker: medium-dark skin tone +1F477 1F3FF 200D 2642 FE0F ; fully-qualified # 👷🏿‍♂️ E4.0 man construction worker: dark skin tone +1F477 1F3FF 200D 2642 ; minimally-qualified # 👷🏿‍♂ E4.0 man construction worker: dark skin tone +1F477 200D 2640 FE0F ; fully-qualified # 👷‍♀️ E4.0 woman construction worker +1F477 200D 2640 ; minimally-qualified # 👷‍♀ E4.0 woman construction worker +1F477 1F3FB 200D 2640 FE0F ; fully-qualified # 👷🏻‍♀️ E4.0 woman construction worker: light skin tone +1F477 1F3FB 200D 2640 ; minimally-qualified # 👷🏻‍♀ E4.0 woman construction worker: light skin tone +1F477 1F3FC 200D 2640 FE0F ; fully-qualified # 👷🏼‍♀️ E4.0 woman construction worker: medium-light skin tone +1F477 1F3FC 200D 2640 ; minimally-qualified # 👷🏼‍♀ E4.0 woman construction worker: medium-light skin tone +1F477 1F3FD 200D 2640 FE0F ; fully-qualified # 👷🏽‍♀️ E4.0 woman construction worker: medium skin tone +1F477 1F3FD 200D 2640 ; minimally-qualified # 👷🏽‍♀ E4.0 woman construction worker: medium skin tone +1F477 1F3FE 200D 2640 FE0F ; fully-qualified # 👷🏾‍♀️ E4.0 woman construction worker: medium-dark skin tone +1F477 1F3FE 200D 2640 ; minimally-qualified # 👷🏾‍♀ E4.0 woman construction worker: medium-dark skin tone +1F477 1F3FF 200D 2640 FE0F ; fully-qualified # 👷🏿‍♀️ E4.0 woman construction worker: dark skin tone +1F477 1F3FF 200D 2640 ; minimally-qualified # 👷🏿‍♀ E4.0 woman construction worker: dark skin tone +1FAC5 ; fully-qualified # 🫅 E14.0 person with crown +1FAC5 1F3FB ; fully-qualified # 🫅🏻 E14.0 person with crown: light skin tone +1FAC5 1F3FC ; fully-qualified # 🫅🏼 E14.0 person with crown: medium-light skin tone +1FAC5 1F3FD ; fully-qualified # 🫅🏽 E14.0 person with crown: medium skin tone +1FAC5 1F3FE ; fully-qualified # 🫅🏾 E14.0 person with crown: medium-dark skin tone +1FAC5 1F3FF ; fully-qualified # 🫅🏿 E14.0 person with crown: dark skin tone +1F934 ; fully-qualified # 🤴 E3.0 prince +1F934 1F3FB ; fully-qualified # 🤴🏻 E3.0 prince: light skin tone +1F934 1F3FC ; fully-qualified # 🤴🏼 E3.0 prince: medium-light skin tone +1F934 1F3FD ; fully-qualified # 🤴🏽 E3.0 prince: medium skin tone +1F934 1F3FE ; fully-qualified # 🤴🏾 E3.0 prince: medium-dark skin tone +1F934 1F3FF ; fully-qualified # 🤴🏿 E3.0 prince: dark skin tone +1F478 ; fully-qualified # 👸 E0.6 princess +1F478 1F3FB ; fully-qualified # 👸🏻 E1.0 princess: light skin tone +1F478 1F3FC ; fully-qualified # 👸🏼 E1.0 princess: medium-light skin tone +1F478 1F3FD ; fully-qualified # 👸🏽 E1.0 princess: medium skin tone +1F478 1F3FE ; fully-qualified # 👸🏾 E1.0 princess: medium-dark skin tone +1F478 1F3FF ; fully-qualified # 👸🏿 E1.0 princess: dark skin tone +1F473 ; fully-qualified # 👳 E0.6 person wearing turban +1F473 1F3FB ; fully-qualified # 👳🏻 E1.0 person wearing turban: light skin tone +1F473 1F3FC ; fully-qualified # 👳🏼 E1.0 person wearing turban: medium-light skin tone +1F473 1F3FD ; fully-qualified # 👳🏽 E1.0 person wearing turban: medium skin tone +1F473 1F3FE ; fully-qualified # 👳🏾 E1.0 person wearing turban: medium-dark skin tone +1F473 1F3FF ; fully-qualified # 👳🏿 E1.0 person wearing turban: dark skin tone +1F473 200D 2642 FE0F ; fully-qualified # 👳‍♂️ E4.0 man wearing turban +1F473 200D 2642 ; minimally-qualified # 👳‍♂ E4.0 man wearing turban +1F473 1F3FB 200D 2642 FE0F ; fully-qualified # 👳🏻‍♂️ E4.0 man wearing turban: light skin tone +1F473 1F3FB 200D 2642 ; minimally-qualified # 👳🏻‍♂ E4.0 man wearing turban: light skin tone +1F473 1F3FC 200D 2642 FE0F ; fully-qualified # 👳🏼‍♂️ E4.0 man wearing turban: medium-light skin tone +1F473 1F3FC 200D 2642 ; minimally-qualified # 👳🏼‍♂ E4.0 man wearing turban: medium-light skin tone +1F473 1F3FD 200D 2642 FE0F ; fully-qualified # 👳🏽‍♂️ E4.0 man wearing turban: medium skin tone +1F473 1F3FD 200D 2642 ; minimally-qualified # 👳🏽‍♂ E4.0 man wearing turban: medium skin tone +1F473 1F3FE 200D 2642 FE0F ; fully-qualified # 👳🏾‍♂️ E4.0 man wearing turban: medium-dark skin tone +1F473 1F3FE 200D 2642 ; minimally-qualified # 👳🏾‍♂ E4.0 man wearing turban: medium-dark skin tone +1F473 1F3FF 200D 2642 FE0F ; fully-qualified # 👳🏿‍♂️ E4.0 man wearing turban: dark skin tone +1F473 1F3FF 200D 2642 ; minimally-qualified # 👳🏿‍♂ E4.0 man wearing turban: dark skin tone +1F473 200D 2640 FE0F ; fully-qualified # 👳‍♀️ E4.0 woman wearing turban +1F473 200D 2640 ; minimally-qualified # 👳‍♀ E4.0 woman wearing turban +1F473 1F3FB 200D 2640 FE0F ; fully-qualified # 👳🏻‍♀️ E4.0 woman wearing turban: light skin tone +1F473 1F3FB 200D 2640 ; minimally-qualified # 👳🏻‍♀ E4.0 woman wearing turban: light skin tone +1F473 1F3FC 200D 2640 FE0F ; fully-qualified # 👳🏼‍♀️ E4.0 woman wearing turban: medium-light skin tone +1F473 1F3FC 200D 2640 ; minimally-qualified # 👳🏼‍♀ E4.0 woman wearing turban: medium-light skin tone +1F473 1F3FD 200D 2640 FE0F ; fully-qualified # 👳🏽‍♀️ E4.0 woman wearing turban: medium skin tone +1F473 1F3FD 200D 2640 ; minimally-qualified # 👳🏽‍♀ E4.0 woman wearing turban: medium skin tone +1F473 1F3FE 200D 2640 FE0F ; fully-qualified # 👳🏾‍♀️ E4.0 woman wearing turban: medium-dark skin tone +1F473 1F3FE 200D 2640 ; minimally-qualified # 👳🏾‍♀ E4.0 woman wearing turban: medium-dark skin tone +1F473 1F3FF 200D 2640 FE0F ; fully-qualified # 👳🏿‍♀️ E4.0 woman wearing turban: dark skin tone +1F473 1F3FF 200D 2640 ; minimally-qualified # 👳🏿‍♀ E4.0 woman wearing turban: dark skin tone +1F472 ; fully-qualified # 👲 E0.6 person with skullcap +1F472 1F3FB ; fully-qualified # 👲🏻 E1.0 person with skullcap: light skin tone +1F472 1F3FC ; fully-qualified # 👲🏼 E1.0 person with skullcap: medium-light skin tone +1F472 1F3FD ; fully-qualified # 👲🏽 E1.0 person with skullcap: medium skin tone +1F472 1F3FE ; fully-qualified # 👲🏾 E1.0 person with skullcap: medium-dark skin tone +1F472 1F3FF ; fully-qualified # 👲🏿 E1.0 person with skullcap: dark skin tone +1F9D5 ; fully-qualified # 🧕 E5.0 woman with headscarf +1F9D5 1F3FB ; fully-qualified # 🧕🏻 E5.0 woman with headscarf: light skin tone +1F9D5 1F3FC ; fully-qualified # 🧕🏼 E5.0 woman with headscarf: medium-light skin tone +1F9D5 1F3FD ; fully-qualified # 🧕🏽 E5.0 woman with headscarf: medium skin tone +1F9D5 1F3FE ; fully-qualified # 🧕🏾 E5.0 woman with headscarf: medium-dark skin tone +1F9D5 1F3FF ; fully-qualified # 🧕🏿 E5.0 woman with headscarf: dark skin tone +1F935 ; fully-qualified # 🤵 E3.0 person in tuxedo +1F935 1F3FB ; fully-qualified # 🤵🏻 E3.0 person in tuxedo: light skin tone +1F935 1F3FC ; fully-qualified # 🤵🏼 E3.0 person in tuxedo: medium-light skin tone +1F935 1F3FD ; fully-qualified # 🤵🏽 E3.0 person in tuxedo: medium skin tone +1F935 1F3FE ; fully-qualified # 🤵🏾 E3.0 person in tuxedo: medium-dark skin tone +1F935 1F3FF ; fully-qualified # 🤵🏿 E3.0 person in tuxedo: dark skin tone +1F935 200D 2642 FE0F ; fully-qualified # 🤵‍♂️ E13.0 man in tuxedo +1F935 200D 2642 ; minimally-qualified # 🤵‍♂ E13.0 man in tuxedo +1F935 1F3FB 200D 2642 FE0F ; fully-qualified # 🤵🏻‍♂️ E13.0 man in tuxedo: light skin tone +1F935 1F3FB 200D 2642 ; minimally-qualified # 🤵🏻‍♂ E13.0 man in tuxedo: light skin tone +1F935 1F3FC 200D 2642 FE0F ; fully-qualified # 🤵🏼‍♂️ E13.0 man in tuxedo: medium-light skin tone +1F935 1F3FC 200D 2642 ; minimally-qualified # 🤵🏼‍♂ E13.0 man in tuxedo: medium-light skin tone +1F935 1F3FD 200D 2642 FE0F ; fully-qualified # 🤵🏽‍♂️ E13.0 man in tuxedo: medium skin tone +1F935 1F3FD 200D 2642 ; minimally-qualified # 🤵🏽‍♂ E13.0 man in tuxedo: medium skin tone +1F935 1F3FE 200D 2642 FE0F ; fully-qualified # 🤵🏾‍♂️ E13.0 man in tuxedo: medium-dark skin tone +1F935 1F3FE 200D 2642 ; minimally-qualified # 🤵🏾‍♂ E13.0 man in tuxedo: medium-dark skin tone +1F935 1F3FF 200D 2642 FE0F ; fully-qualified # 🤵🏿‍♂️ E13.0 man in tuxedo: dark skin tone +1F935 1F3FF 200D 2642 ; minimally-qualified # 🤵🏿‍♂ E13.0 man in tuxedo: dark skin tone +1F935 200D 2640 FE0F ; fully-qualified # 🤵‍♀️ E13.0 woman in tuxedo +1F935 200D 2640 ; minimally-qualified # 🤵‍♀ E13.0 woman in tuxedo +1F935 1F3FB 200D 2640 FE0F ; fully-qualified # 🤵🏻‍♀️ E13.0 woman in tuxedo: light skin tone +1F935 1F3FB 200D 2640 ; minimally-qualified # 🤵🏻‍♀ E13.0 woman in tuxedo: light skin tone +1F935 1F3FC 200D 2640 FE0F ; fully-qualified # 🤵🏼‍♀️ E13.0 woman in tuxedo: medium-light skin tone +1F935 1F3FC 200D 2640 ; minimally-qualified # 🤵🏼‍♀ E13.0 woman in tuxedo: medium-light skin tone +1F935 1F3FD 200D 2640 FE0F ; fully-qualified # 🤵🏽‍♀️ E13.0 woman in tuxedo: medium skin tone +1F935 1F3FD 200D 2640 ; minimally-qualified # 🤵🏽‍♀ E13.0 woman in tuxedo: medium skin tone +1F935 1F3FE 200D 2640 FE0F ; fully-qualified # 🤵🏾‍♀️ E13.0 woman in tuxedo: medium-dark skin tone +1F935 1F3FE 200D 2640 ; minimally-qualified # 🤵🏾‍♀ E13.0 woman in tuxedo: medium-dark skin tone +1F935 1F3FF 200D 2640 FE0F ; fully-qualified # 🤵🏿‍♀️ E13.0 woman in tuxedo: dark skin tone +1F935 1F3FF 200D 2640 ; minimally-qualified # 🤵🏿‍♀ E13.0 woman in tuxedo: dark skin tone +1F470 ; fully-qualified # 👰 E0.6 person with veil +1F470 1F3FB ; fully-qualified # 👰🏻 E1.0 person with veil: light skin tone +1F470 1F3FC ; fully-qualified # 👰🏼 E1.0 person with veil: medium-light skin tone +1F470 1F3FD ; fully-qualified # 👰🏽 E1.0 person with veil: medium skin tone +1F470 1F3FE ; fully-qualified # 👰🏾 E1.0 person with veil: medium-dark skin tone +1F470 1F3FF ; fully-qualified # 👰🏿 E1.0 person with veil: dark skin tone +1F470 200D 2642 FE0F ; fully-qualified # 👰‍♂️ E13.0 man with veil +1F470 200D 2642 ; minimally-qualified # 👰‍♂ E13.0 man with veil +1F470 1F3FB 200D 2642 FE0F ; fully-qualified # 👰🏻‍♂️ E13.0 man with veil: light skin tone +1F470 1F3FB 200D 2642 ; minimally-qualified # 👰🏻‍♂ E13.0 man with veil: light skin tone +1F470 1F3FC 200D 2642 FE0F ; fully-qualified # 👰🏼‍♂️ E13.0 man with veil: medium-light skin tone +1F470 1F3FC 200D 2642 ; minimally-qualified # 👰🏼‍♂ E13.0 man with veil: medium-light skin tone +1F470 1F3FD 200D 2642 FE0F ; fully-qualified # 👰🏽‍♂️ E13.0 man with veil: medium skin tone +1F470 1F3FD 200D 2642 ; minimally-qualified # 👰🏽‍♂ E13.0 man with veil: medium skin tone +1F470 1F3FE 200D 2642 FE0F ; fully-qualified # 👰🏾‍♂️ E13.0 man with veil: medium-dark skin tone +1F470 1F3FE 200D 2642 ; minimally-qualified # 👰🏾‍♂ E13.0 man with veil: medium-dark skin tone +1F470 1F3FF 200D 2642 FE0F ; fully-qualified # 👰🏿‍♂️ E13.0 man with veil: dark skin tone +1F470 1F3FF 200D 2642 ; minimally-qualified # 👰🏿‍♂ E13.0 man with veil: dark skin tone +1F470 200D 2640 FE0F ; fully-qualified # 👰‍♀️ E13.0 woman with veil +1F470 200D 2640 ; minimally-qualified # 👰‍♀ E13.0 woman with veil +1F470 1F3FB 200D 2640 FE0F ; fully-qualified # 👰🏻‍♀️ E13.0 woman with veil: light skin tone +1F470 1F3FB 200D 2640 ; minimally-qualified # 👰🏻‍♀ E13.0 woman with veil: light skin tone +1F470 1F3FC 200D 2640 FE0F ; fully-qualified # 👰🏼‍♀️ E13.0 woman with veil: medium-light skin tone +1F470 1F3FC 200D 2640 ; minimally-qualified # 👰🏼‍♀ E13.0 woman with veil: medium-light skin tone +1F470 1F3FD 200D 2640 FE0F ; fully-qualified # 👰🏽‍♀️ E13.0 woman with veil: medium skin tone +1F470 1F3FD 200D 2640 ; minimally-qualified # 👰🏽‍♀ E13.0 woman with veil: medium skin tone +1F470 1F3FE 200D 2640 FE0F ; fully-qualified # 👰🏾‍♀️ E13.0 woman with veil: medium-dark skin tone +1F470 1F3FE 200D 2640 ; minimally-qualified # 👰🏾‍♀ E13.0 woman with veil: medium-dark skin tone +1F470 1F3FF 200D 2640 FE0F ; fully-qualified # 👰🏿‍♀️ E13.0 woman with veil: dark skin tone +1F470 1F3FF 200D 2640 ; minimally-qualified # 👰🏿‍♀ E13.0 woman with veil: dark skin tone +1F930 ; fully-qualified # 🤰 E3.0 pregnant woman +1F930 1F3FB ; fully-qualified # 🤰🏻 E3.0 pregnant woman: light skin tone +1F930 1F3FC ; fully-qualified # 🤰🏼 E3.0 pregnant woman: medium-light skin tone +1F930 1F3FD ; fully-qualified # 🤰🏽 E3.0 pregnant woman: medium skin tone +1F930 1F3FE ; fully-qualified # 🤰🏾 E3.0 pregnant woman: medium-dark skin tone +1F930 1F3FF ; fully-qualified # 🤰🏿 E3.0 pregnant woman: dark skin tone +1FAC3 ; fully-qualified # 🫃 E14.0 pregnant man +1FAC3 1F3FB ; fully-qualified # 🫃🏻 E14.0 pregnant man: light skin tone +1FAC3 1F3FC ; fully-qualified # 🫃🏼 E14.0 pregnant man: medium-light skin tone +1FAC3 1F3FD ; fully-qualified # 🫃🏽 E14.0 pregnant man: medium skin tone +1FAC3 1F3FE ; fully-qualified # 🫃🏾 E14.0 pregnant man: medium-dark skin tone +1FAC3 1F3FF ; fully-qualified # 🫃🏿 E14.0 pregnant man: dark skin tone +1FAC4 ; fully-qualified # 🫄 E14.0 pregnant person +1FAC4 1F3FB ; fully-qualified # 🫄🏻 E14.0 pregnant person: light skin tone +1FAC4 1F3FC ; fully-qualified # 🫄🏼 E14.0 pregnant person: medium-light skin tone +1FAC4 1F3FD ; fully-qualified # 🫄🏽 E14.0 pregnant person: medium skin tone +1FAC4 1F3FE ; fully-qualified # 🫄🏾 E14.0 pregnant person: medium-dark skin tone +1FAC4 1F3FF ; fully-qualified # 🫄🏿 E14.0 pregnant person: dark skin tone +1F931 ; fully-qualified # 🤱 E5.0 breast-feeding +1F931 1F3FB ; fully-qualified # 🤱🏻 E5.0 breast-feeding: light skin tone +1F931 1F3FC ; fully-qualified # 🤱🏼 E5.0 breast-feeding: medium-light skin tone +1F931 1F3FD ; fully-qualified # 🤱🏽 E5.0 breast-feeding: medium skin tone +1F931 1F3FE ; fully-qualified # 🤱🏾 E5.0 breast-feeding: medium-dark skin tone +1F931 1F3FF ; fully-qualified # 🤱🏿 E5.0 breast-feeding: dark skin tone +1F469 200D 1F37C ; fully-qualified # 👩‍🍼 E13.0 woman feeding baby +1F469 1F3FB 200D 1F37C ; fully-qualified # 👩🏻‍🍼 E13.0 woman feeding baby: light skin tone +1F469 1F3FC 200D 1F37C ; fully-qualified # 👩🏼‍🍼 E13.0 woman feeding baby: medium-light skin tone +1F469 1F3FD 200D 1F37C ; fully-qualified # 👩🏽‍🍼 E13.0 woman feeding baby: medium skin tone +1F469 1F3FE 200D 1F37C ; fully-qualified # 👩🏾‍🍼 E13.0 woman feeding baby: medium-dark skin tone +1F469 1F3FF 200D 1F37C ; fully-qualified # 👩🏿‍🍼 E13.0 woman feeding baby: dark skin tone +1F468 200D 1F37C ; fully-qualified # 👨‍🍼 E13.0 man feeding baby +1F468 1F3FB 200D 1F37C ; fully-qualified # 👨🏻‍🍼 E13.0 man feeding baby: light skin tone +1F468 1F3FC 200D 1F37C ; fully-qualified # 👨🏼‍🍼 E13.0 man feeding baby: medium-light skin tone +1F468 1F3FD 200D 1F37C ; fully-qualified # 👨🏽‍🍼 E13.0 man feeding baby: medium skin tone +1F468 1F3FE 200D 1F37C ; fully-qualified # 👨🏾‍🍼 E13.0 man feeding baby: medium-dark skin tone +1F468 1F3FF 200D 1F37C ; fully-qualified # 👨🏿‍🍼 E13.0 man feeding baby: dark skin tone +1F9D1 200D 1F37C ; fully-qualified # 🧑‍🍼 E13.0 person feeding baby +1F9D1 1F3FB 200D 1F37C ; fully-qualified # 🧑🏻‍🍼 E13.0 person feeding baby: light skin tone +1F9D1 1F3FC 200D 1F37C ; fully-qualified # 🧑🏼‍🍼 E13.0 person feeding baby: medium-light skin tone +1F9D1 1F3FD 200D 1F37C ; fully-qualified # 🧑🏽‍🍼 E13.0 person feeding baby: medium skin tone +1F9D1 1F3FE 200D 1F37C ; fully-qualified # 🧑🏾‍🍼 E13.0 person feeding baby: medium-dark skin tone +1F9D1 1F3FF 200D 1F37C ; fully-qualified # 🧑🏿‍🍼 E13.0 person feeding baby: dark skin tone + +# subgroup: person-fantasy +1F47C ; fully-qualified # 👼 E0.6 baby angel +1F47C 1F3FB ; fully-qualified # 👼🏻 E1.0 baby angel: light skin tone +1F47C 1F3FC ; fully-qualified # 👼🏼 E1.0 baby angel: medium-light skin tone +1F47C 1F3FD ; fully-qualified # 👼🏽 E1.0 baby angel: medium skin tone +1F47C 1F3FE ; fully-qualified # 👼🏾 E1.0 baby angel: medium-dark skin tone +1F47C 1F3FF ; fully-qualified # 👼🏿 E1.0 baby angel: dark skin tone +1F385 ; fully-qualified # 🎅 E0.6 Santa Claus +1F385 1F3FB ; fully-qualified # 🎅🏻 E1.0 Santa Claus: light skin tone +1F385 1F3FC ; fully-qualified # 🎅🏼 E1.0 Santa Claus: medium-light skin tone +1F385 1F3FD ; fully-qualified # 🎅🏽 E1.0 Santa Claus: medium skin tone +1F385 1F3FE ; fully-qualified # 🎅🏾 E1.0 Santa Claus: medium-dark skin tone +1F385 1F3FF ; fully-qualified # 🎅🏿 E1.0 Santa Claus: dark skin tone +1F936 ; fully-qualified # 🤶 E3.0 Mrs. Claus +1F936 1F3FB ; fully-qualified # 🤶🏻 E3.0 Mrs. Claus: light skin tone +1F936 1F3FC ; fully-qualified # 🤶🏼 E3.0 Mrs. Claus: medium-light skin tone +1F936 1F3FD ; fully-qualified # 🤶🏽 E3.0 Mrs. Claus: medium skin tone +1F936 1F3FE ; fully-qualified # 🤶🏾 E3.0 Mrs. Claus: medium-dark skin tone +1F936 1F3FF ; fully-qualified # 🤶🏿 E3.0 Mrs. Claus: dark skin tone +1F9D1 200D 1F384 ; fully-qualified # 🧑‍🎄 E13.0 mx claus +1F9D1 1F3FB 200D 1F384 ; fully-qualified # 🧑🏻‍🎄 E13.0 mx claus: light skin tone +1F9D1 1F3FC 200D 1F384 ; fully-qualified # 🧑🏼‍🎄 E13.0 mx claus: medium-light skin tone +1F9D1 1F3FD 200D 1F384 ; fully-qualified # 🧑🏽‍🎄 E13.0 mx claus: medium skin tone +1F9D1 1F3FE 200D 1F384 ; fully-qualified # 🧑🏾‍🎄 E13.0 mx claus: medium-dark skin tone +1F9D1 1F3FF 200D 1F384 ; fully-qualified # 🧑🏿‍🎄 E13.0 mx claus: dark skin tone +1F9B8 ; fully-qualified # 🦸 E11.0 superhero +1F9B8 1F3FB ; fully-qualified # 🦸🏻 E11.0 superhero: light skin tone +1F9B8 1F3FC ; fully-qualified # 🦸🏼 E11.0 superhero: medium-light skin tone +1F9B8 1F3FD ; fully-qualified # 🦸🏽 E11.0 superhero: medium skin tone +1F9B8 1F3FE ; fully-qualified # 🦸🏾 E11.0 superhero: medium-dark skin tone +1F9B8 1F3FF ; fully-qualified # 🦸🏿 E11.0 superhero: dark skin tone +1F9B8 200D 2642 FE0F ; fully-qualified # 🦸‍♂️ E11.0 man superhero +1F9B8 200D 2642 ; minimally-qualified # 🦸‍♂ E11.0 man superhero +1F9B8 1F3FB 200D 2642 FE0F ; fully-qualified # 🦸🏻‍♂️ E11.0 man superhero: light skin tone +1F9B8 1F3FB 200D 2642 ; minimally-qualified # 🦸🏻‍♂ E11.0 man superhero: light skin tone +1F9B8 1F3FC 200D 2642 FE0F ; fully-qualified # 🦸🏼‍♂️ E11.0 man superhero: medium-light skin tone +1F9B8 1F3FC 200D 2642 ; minimally-qualified # 🦸🏼‍♂ E11.0 man superhero: medium-light skin tone +1F9B8 1F3FD 200D 2642 FE0F ; fully-qualified # 🦸🏽‍♂️ E11.0 man superhero: medium skin tone +1F9B8 1F3FD 200D 2642 ; minimally-qualified # 🦸🏽‍♂ E11.0 man superhero: medium skin tone +1F9B8 1F3FE 200D 2642 FE0F ; fully-qualified # 🦸🏾‍♂️ E11.0 man superhero: medium-dark skin tone +1F9B8 1F3FE 200D 2642 ; minimally-qualified # 🦸🏾‍♂ E11.0 man superhero: medium-dark skin tone +1F9B8 1F3FF 200D 2642 FE0F ; fully-qualified # 🦸🏿‍♂️ E11.0 man superhero: dark skin tone +1F9B8 1F3FF 200D 2642 ; minimally-qualified # 🦸🏿‍♂ E11.0 man superhero: dark skin tone +1F9B8 200D 2640 FE0F ; fully-qualified # 🦸‍♀️ E11.0 woman superhero +1F9B8 200D 2640 ; minimally-qualified # 🦸‍♀ E11.0 woman superhero +1F9B8 1F3FB 200D 2640 FE0F ; fully-qualified # 🦸🏻‍♀️ E11.0 woman superhero: light skin tone +1F9B8 1F3FB 200D 2640 ; minimally-qualified # 🦸🏻‍♀ E11.0 woman superhero: light skin tone +1F9B8 1F3FC 200D 2640 FE0F ; fully-qualified # 🦸🏼‍♀️ E11.0 woman superhero: medium-light skin tone +1F9B8 1F3FC 200D 2640 ; minimally-qualified # 🦸🏼‍♀ E11.0 woman superhero: medium-light skin tone +1F9B8 1F3FD 200D 2640 FE0F ; fully-qualified # 🦸🏽‍♀️ E11.0 woman superhero: medium skin tone +1F9B8 1F3FD 200D 2640 ; minimally-qualified # 🦸🏽‍♀ E11.0 woman superhero: medium skin tone +1F9B8 1F3FE 200D 2640 FE0F ; fully-qualified # 🦸🏾‍♀️ E11.0 woman superhero: medium-dark skin tone +1F9B8 1F3FE 200D 2640 ; minimally-qualified # 🦸🏾‍♀ E11.0 woman superhero: medium-dark skin tone +1F9B8 1F3FF 200D 2640 FE0F ; fully-qualified # 🦸🏿‍♀️ E11.0 woman superhero: dark skin tone +1F9B8 1F3FF 200D 2640 ; minimally-qualified # 🦸🏿‍♀ E11.0 woman superhero: dark skin tone +1F9B9 ; fully-qualified # 🦹 E11.0 supervillain +1F9B9 1F3FB ; fully-qualified # 🦹🏻 E11.0 supervillain: light skin tone +1F9B9 1F3FC ; fully-qualified # 🦹🏼 E11.0 supervillain: medium-light skin tone +1F9B9 1F3FD ; fully-qualified # 🦹🏽 E11.0 supervillain: medium skin tone +1F9B9 1F3FE ; fully-qualified # 🦹🏾 E11.0 supervillain: medium-dark skin tone +1F9B9 1F3FF ; fully-qualified # 🦹🏿 E11.0 supervillain: dark skin tone +1F9B9 200D 2642 FE0F ; fully-qualified # 🦹‍♂️ E11.0 man supervillain +1F9B9 200D 2642 ; minimally-qualified # 🦹‍♂ E11.0 man supervillain +1F9B9 1F3FB 200D 2642 FE0F ; fully-qualified # 🦹🏻‍♂️ E11.0 man supervillain: light skin tone +1F9B9 1F3FB 200D 2642 ; minimally-qualified # 🦹🏻‍♂ E11.0 man supervillain: light skin tone +1F9B9 1F3FC 200D 2642 FE0F ; fully-qualified # 🦹🏼‍♂️ E11.0 man supervillain: medium-light skin tone +1F9B9 1F3FC 200D 2642 ; minimally-qualified # 🦹🏼‍♂ E11.0 man supervillain: medium-light skin tone +1F9B9 1F3FD 200D 2642 FE0F ; fully-qualified # 🦹🏽‍♂️ E11.0 man supervillain: medium skin tone +1F9B9 1F3FD 200D 2642 ; minimally-qualified # 🦹🏽‍♂ E11.0 man supervillain: medium skin tone +1F9B9 1F3FE 200D 2642 FE0F ; fully-qualified # 🦹🏾‍♂️ E11.0 man supervillain: medium-dark skin tone +1F9B9 1F3FE 200D 2642 ; minimally-qualified # 🦹🏾‍♂ E11.0 man supervillain: medium-dark skin tone +1F9B9 1F3FF 200D 2642 FE0F ; fully-qualified # 🦹🏿‍♂️ E11.0 man supervillain: dark skin tone +1F9B9 1F3FF 200D 2642 ; minimally-qualified # 🦹🏿‍♂ E11.0 man supervillain: dark skin tone +1F9B9 200D 2640 FE0F ; fully-qualified # 🦹‍♀️ E11.0 woman supervillain +1F9B9 200D 2640 ; minimally-qualified # 🦹‍♀ E11.0 woman supervillain +1F9B9 1F3FB 200D 2640 FE0F ; fully-qualified # 🦹🏻‍♀️ E11.0 woman supervillain: light skin tone +1F9B9 1F3FB 200D 2640 ; minimally-qualified # 🦹🏻‍♀ E11.0 woman supervillain: light skin tone +1F9B9 1F3FC 200D 2640 FE0F ; fully-qualified # 🦹🏼‍♀️ E11.0 woman supervillain: medium-light skin tone +1F9B9 1F3FC 200D 2640 ; minimally-qualified # 🦹🏼‍♀ E11.0 woman supervillain: medium-light skin tone +1F9B9 1F3FD 200D 2640 FE0F ; fully-qualified # 🦹🏽‍♀️ E11.0 woman supervillain: medium skin tone +1F9B9 1F3FD 200D 2640 ; minimally-qualified # 🦹🏽‍♀ E11.0 woman supervillain: medium skin tone +1F9B9 1F3FE 200D 2640 FE0F ; fully-qualified # 🦹🏾‍♀️ E11.0 woman supervillain: medium-dark skin tone +1F9B9 1F3FE 200D 2640 ; minimally-qualified # 🦹🏾‍♀ E11.0 woman supervillain: medium-dark skin tone +1F9B9 1F3FF 200D 2640 FE0F ; fully-qualified # 🦹🏿‍♀️ E11.0 woman supervillain: dark skin tone +1F9B9 1F3FF 200D 2640 ; minimally-qualified # 🦹🏿‍♀ E11.0 woman supervillain: dark skin tone +1F9D9 ; fully-qualified # 🧙 E5.0 mage +1F9D9 1F3FB ; fully-qualified # 🧙🏻 E5.0 mage: light skin tone +1F9D9 1F3FC ; fully-qualified # 🧙🏼 E5.0 mage: medium-light skin tone +1F9D9 1F3FD ; fully-qualified # 🧙🏽 E5.0 mage: medium skin tone +1F9D9 1F3FE ; fully-qualified # 🧙🏾 E5.0 mage: medium-dark skin tone +1F9D9 1F3FF ; fully-qualified # 🧙🏿 E5.0 mage: dark skin tone +1F9D9 200D 2642 FE0F ; fully-qualified # 🧙‍♂️ E5.0 man mage +1F9D9 200D 2642 ; minimally-qualified # 🧙‍♂ E5.0 man mage +1F9D9 1F3FB 200D 2642 FE0F ; fully-qualified # 🧙🏻‍♂️ E5.0 man mage: light skin tone +1F9D9 1F3FB 200D 2642 ; minimally-qualified # 🧙🏻‍♂ E5.0 man mage: light skin tone +1F9D9 1F3FC 200D 2642 FE0F ; fully-qualified # 🧙🏼‍♂️ E5.0 man mage: medium-light skin tone +1F9D9 1F3FC 200D 2642 ; minimally-qualified # 🧙🏼‍♂ E5.0 man mage: medium-light skin tone +1F9D9 1F3FD 200D 2642 FE0F ; fully-qualified # 🧙🏽‍♂️ E5.0 man mage: medium skin tone +1F9D9 1F3FD 200D 2642 ; minimally-qualified # 🧙🏽‍♂ E5.0 man mage: medium skin tone +1F9D9 1F3FE 200D 2642 FE0F ; fully-qualified # 🧙🏾‍♂️ E5.0 man mage: medium-dark skin tone +1F9D9 1F3FE 200D 2642 ; minimally-qualified # 🧙🏾‍♂ E5.0 man mage: medium-dark skin tone +1F9D9 1F3FF 200D 2642 FE0F ; fully-qualified # 🧙🏿‍♂️ E5.0 man mage: dark skin tone +1F9D9 1F3FF 200D 2642 ; minimally-qualified # 🧙🏿‍♂ E5.0 man mage: dark skin tone +1F9D9 200D 2640 FE0F ; fully-qualified # 🧙‍♀️ E5.0 woman mage +1F9D9 200D 2640 ; minimally-qualified # 🧙‍♀ E5.0 woman mage +1F9D9 1F3FB 200D 2640 FE0F ; fully-qualified # 🧙🏻‍♀️ E5.0 woman mage: light skin tone +1F9D9 1F3FB 200D 2640 ; minimally-qualified # 🧙🏻‍♀ E5.0 woman mage: light skin tone +1F9D9 1F3FC 200D 2640 FE0F ; fully-qualified # 🧙🏼‍♀️ E5.0 woman mage: medium-light skin tone +1F9D9 1F3FC 200D 2640 ; minimally-qualified # 🧙🏼‍♀ E5.0 woman mage: medium-light skin tone +1F9D9 1F3FD 200D 2640 FE0F ; fully-qualified # 🧙🏽‍♀️ E5.0 woman mage: medium skin tone +1F9D9 1F3FD 200D 2640 ; minimally-qualified # 🧙🏽‍♀ E5.0 woman mage: medium skin tone +1F9D9 1F3FE 200D 2640 FE0F ; fully-qualified # 🧙🏾‍♀️ E5.0 woman mage: medium-dark skin tone +1F9D9 1F3FE 200D 2640 ; minimally-qualified # 🧙🏾‍♀ E5.0 woman mage: medium-dark skin tone +1F9D9 1F3FF 200D 2640 FE0F ; fully-qualified # 🧙🏿‍♀️ E5.0 woman mage: dark skin tone +1F9D9 1F3FF 200D 2640 ; minimally-qualified # 🧙🏿‍♀ E5.0 woman mage: dark skin tone +1F9DA ; fully-qualified # 🧚 E5.0 fairy +1F9DA 1F3FB ; fully-qualified # 🧚🏻 E5.0 fairy: light skin tone +1F9DA 1F3FC ; fully-qualified # 🧚🏼 E5.0 fairy: medium-light skin tone +1F9DA 1F3FD ; fully-qualified # 🧚🏽 E5.0 fairy: medium skin tone +1F9DA 1F3FE ; fully-qualified # 🧚🏾 E5.0 fairy: medium-dark skin tone +1F9DA 1F3FF ; fully-qualified # 🧚🏿 E5.0 fairy: dark skin tone +1F9DA 200D 2642 FE0F ; fully-qualified # 🧚‍♂️ E5.0 man fairy +1F9DA 200D 2642 ; minimally-qualified # 🧚‍♂ E5.0 man fairy +1F9DA 1F3FB 200D 2642 FE0F ; fully-qualified # 🧚🏻‍♂️ E5.0 man fairy: light skin tone +1F9DA 1F3FB 200D 2642 ; minimally-qualified # 🧚🏻‍♂ E5.0 man fairy: light skin tone +1F9DA 1F3FC 200D 2642 FE0F ; fully-qualified # 🧚🏼‍♂️ E5.0 man fairy: medium-light skin tone +1F9DA 1F3FC 200D 2642 ; minimally-qualified # 🧚🏼‍♂ E5.0 man fairy: medium-light skin tone +1F9DA 1F3FD 200D 2642 FE0F ; fully-qualified # 🧚🏽‍♂️ E5.0 man fairy: medium skin tone +1F9DA 1F3FD 200D 2642 ; minimally-qualified # 🧚🏽‍♂ E5.0 man fairy: medium skin tone +1F9DA 1F3FE 200D 2642 FE0F ; fully-qualified # 🧚🏾‍♂️ E5.0 man fairy: medium-dark skin tone +1F9DA 1F3FE 200D 2642 ; minimally-qualified # 🧚🏾‍♂ E5.0 man fairy: medium-dark skin tone +1F9DA 1F3FF 200D 2642 FE0F ; fully-qualified # 🧚🏿‍♂️ E5.0 man fairy: dark skin tone +1F9DA 1F3FF 200D 2642 ; minimally-qualified # 🧚🏿‍♂ E5.0 man fairy: dark skin tone +1F9DA 200D 2640 FE0F ; fully-qualified # 🧚‍♀️ E5.0 woman fairy +1F9DA 200D 2640 ; minimally-qualified # 🧚‍♀ E5.0 woman fairy +1F9DA 1F3FB 200D 2640 FE0F ; fully-qualified # 🧚🏻‍♀️ E5.0 woman fairy: light skin tone +1F9DA 1F3FB 200D 2640 ; minimally-qualified # 🧚🏻‍♀ E5.0 woman fairy: light skin tone +1F9DA 1F3FC 200D 2640 FE0F ; fully-qualified # 🧚🏼‍♀️ E5.0 woman fairy: medium-light skin tone +1F9DA 1F3FC 200D 2640 ; minimally-qualified # 🧚🏼‍♀ E5.0 woman fairy: medium-light skin tone +1F9DA 1F3FD 200D 2640 FE0F ; fully-qualified # 🧚🏽‍♀️ E5.0 woman fairy: medium skin tone +1F9DA 1F3FD 200D 2640 ; minimally-qualified # 🧚🏽‍♀ E5.0 woman fairy: medium skin tone +1F9DA 1F3FE 200D 2640 FE0F ; fully-qualified # 🧚🏾‍♀️ E5.0 woman fairy: medium-dark skin tone +1F9DA 1F3FE 200D 2640 ; minimally-qualified # 🧚🏾‍♀ E5.0 woman fairy: medium-dark skin tone +1F9DA 1F3FF 200D 2640 FE0F ; fully-qualified # 🧚🏿‍♀️ E5.0 woman fairy: dark skin tone +1F9DA 1F3FF 200D 2640 ; minimally-qualified # 🧚🏿‍♀ E5.0 woman fairy: dark skin tone +1F9DB ; fully-qualified # 🧛 E5.0 vampire +1F9DB 1F3FB ; fully-qualified # 🧛🏻 E5.0 vampire: light skin tone +1F9DB 1F3FC ; fully-qualified # 🧛🏼 E5.0 vampire: medium-light skin tone +1F9DB 1F3FD ; fully-qualified # 🧛🏽 E5.0 vampire: medium skin tone +1F9DB 1F3FE ; fully-qualified # 🧛🏾 E5.0 vampire: medium-dark skin tone +1F9DB 1F3FF ; fully-qualified # 🧛🏿 E5.0 vampire: dark skin tone +1F9DB 200D 2642 FE0F ; fully-qualified # 🧛‍♂️ E5.0 man vampire +1F9DB 200D 2642 ; minimally-qualified # 🧛‍♂ E5.0 man vampire +1F9DB 1F3FB 200D 2642 FE0F ; fully-qualified # 🧛🏻‍♂️ E5.0 man vampire: light skin tone +1F9DB 1F3FB 200D 2642 ; minimally-qualified # 🧛🏻‍♂ E5.0 man vampire: light skin tone +1F9DB 1F3FC 200D 2642 FE0F ; fully-qualified # 🧛🏼‍♂️ E5.0 man vampire: medium-light skin tone +1F9DB 1F3FC 200D 2642 ; minimally-qualified # 🧛🏼‍♂ E5.0 man vampire: medium-light skin tone +1F9DB 1F3FD 200D 2642 FE0F ; fully-qualified # 🧛🏽‍♂️ E5.0 man vampire: medium skin tone +1F9DB 1F3FD 200D 2642 ; minimally-qualified # 🧛🏽‍♂ E5.0 man vampire: medium skin tone +1F9DB 1F3FE 200D 2642 FE0F ; fully-qualified # 🧛🏾‍♂️ E5.0 man vampire: medium-dark skin tone +1F9DB 1F3FE 200D 2642 ; minimally-qualified # 🧛🏾‍♂ E5.0 man vampire: medium-dark skin tone +1F9DB 1F3FF 200D 2642 FE0F ; fully-qualified # 🧛🏿‍♂️ E5.0 man vampire: dark skin tone +1F9DB 1F3FF 200D 2642 ; minimally-qualified # 🧛🏿‍♂ E5.0 man vampire: dark skin tone +1F9DB 200D 2640 FE0F ; fully-qualified # 🧛‍♀️ E5.0 woman vampire +1F9DB 200D 2640 ; minimally-qualified # 🧛‍♀ E5.0 woman vampire +1F9DB 1F3FB 200D 2640 FE0F ; fully-qualified # 🧛🏻‍♀️ E5.0 woman vampire: light skin tone +1F9DB 1F3FB 200D 2640 ; minimally-qualified # 🧛🏻‍♀ E5.0 woman vampire: light skin tone +1F9DB 1F3FC 200D 2640 FE0F ; fully-qualified # 🧛🏼‍♀️ E5.0 woman vampire: medium-light skin tone +1F9DB 1F3FC 200D 2640 ; minimally-qualified # 🧛🏼‍♀ E5.0 woman vampire: medium-light skin tone +1F9DB 1F3FD 200D 2640 FE0F ; fully-qualified # 🧛🏽‍♀️ E5.0 woman vampire: medium skin tone +1F9DB 1F3FD 200D 2640 ; minimally-qualified # 🧛🏽‍♀ E5.0 woman vampire: medium skin tone +1F9DB 1F3FE 200D 2640 FE0F ; fully-qualified # 🧛🏾‍♀️ E5.0 woman vampire: medium-dark skin tone +1F9DB 1F3FE 200D 2640 ; minimally-qualified # 🧛🏾‍♀ E5.0 woman vampire: medium-dark skin tone +1F9DB 1F3FF 200D 2640 FE0F ; fully-qualified # 🧛🏿‍♀️ E5.0 woman vampire: dark skin tone +1F9DB 1F3FF 200D 2640 ; minimally-qualified # 🧛🏿‍♀ E5.0 woman vampire: dark skin tone +1F9DC ; fully-qualified # 🧜 E5.0 merperson +1F9DC 1F3FB ; fully-qualified # 🧜🏻 E5.0 merperson: light skin tone +1F9DC 1F3FC ; fully-qualified # 🧜🏼 E5.0 merperson: medium-light skin tone +1F9DC 1F3FD ; fully-qualified # 🧜🏽 E5.0 merperson: medium skin tone +1F9DC 1F3FE ; fully-qualified # 🧜🏾 E5.0 merperson: medium-dark skin tone +1F9DC 1F3FF ; fully-qualified # 🧜🏿 E5.0 merperson: dark skin tone +1F9DC 200D 2642 FE0F ; fully-qualified # 🧜‍♂️ E5.0 merman +1F9DC 200D 2642 ; minimally-qualified # 🧜‍♂ E5.0 merman +1F9DC 1F3FB 200D 2642 FE0F ; fully-qualified # 🧜🏻‍♂️ E5.0 merman: light skin tone +1F9DC 1F3FB 200D 2642 ; minimally-qualified # 🧜🏻‍♂ E5.0 merman: light skin tone +1F9DC 1F3FC 200D 2642 FE0F ; fully-qualified # 🧜🏼‍♂️ E5.0 merman: medium-light skin tone +1F9DC 1F3FC 200D 2642 ; minimally-qualified # 🧜🏼‍♂ E5.0 merman: medium-light skin tone +1F9DC 1F3FD 200D 2642 FE0F ; fully-qualified # 🧜🏽‍♂️ E5.0 merman: medium skin tone +1F9DC 1F3FD 200D 2642 ; minimally-qualified # 🧜🏽‍♂ E5.0 merman: medium skin tone +1F9DC 1F3FE 200D 2642 FE0F ; fully-qualified # 🧜🏾‍♂️ E5.0 merman: medium-dark skin tone +1F9DC 1F3FE 200D 2642 ; minimally-qualified # 🧜🏾‍♂ E5.0 merman: medium-dark skin tone +1F9DC 1F3FF 200D 2642 FE0F ; fully-qualified # 🧜🏿‍♂️ E5.0 merman: dark skin tone +1F9DC 1F3FF 200D 2642 ; minimally-qualified # 🧜🏿‍♂ E5.0 merman: dark skin tone +1F9DC 200D 2640 FE0F ; fully-qualified # 🧜‍♀️ E5.0 mermaid +1F9DC 200D 2640 ; minimally-qualified # 🧜‍♀ E5.0 mermaid +1F9DC 1F3FB 200D 2640 FE0F ; fully-qualified # 🧜🏻‍♀️ E5.0 mermaid: light skin tone +1F9DC 1F3FB 200D 2640 ; minimally-qualified # 🧜🏻‍♀ E5.0 mermaid: light skin tone +1F9DC 1F3FC 200D 2640 FE0F ; fully-qualified # 🧜🏼‍♀️ E5.0 mermaid: medium-light skin tone +1F9DC 1F3FC 200D 2640 ; minimally-qualified # 🧜🏼‍♀ E5.0 mermaid: medium-light skin tone +1F9DC 1F3FD 200D 2640 FE0F ; fully-qualified # 🧜🏽‍♀️ E5.0 mermaid: medium skin tone +1F9DC 1F3FD 200D 2640 ; minimally-qualified # 🧜🏽‍♀ E5.0 mermaid: medium skin tone +1F9DC 1F3FE 200D 2640 FE0F ; fully-qualified # 🧜🏾‍♀️ E5.0 mermaid: medium-dark skin tone +1F9DC 1F3FE 200D 2640 ; minimally-qualified # 🧜🏾‍♀ E5.0 mermaid: medium-dark skin tone +1F9DC 1F3FF 200D 2640 FE0F ; fully-qualified # 🧜🏿‍♀️ E5.0 mermaid: dark skin tone +1F9DC 1F3FF 200D 2640 ; minimally-qualified # 🧜🏿‍♀ E5.0 mermaid: dark skin tone +1F9DD ; fully-qualified # 🧝 E5.0 elf +1F9DD 1F3FB ; fully-qualified # 🧝🏻 E5.0 elf: light skin tone +1F9DD 1F3FC ; fully-qualified # 🧝🏼 E5.0 elf: medium-light skin tone +1F9DD 1F3FD ; fully-qualified # 🧝🏽 E5.0 elf: medium skin tone +1F9DD 1F3FE ; fully-qualified # 🧝🏾 E5.0 elf: medium-dark skin tone +1F9DD 1F3FF ; fully-qualified # 🧝🏿 E5.0 elf: dark skin tone +1F9DD 200D 2642 FE0F ; fully-qualified # 🧝‍♂️ E5.0 man elf +1F9DD 200D 2642 ; minimally-qualified # 🧝‍♂ E5.0 man elf +1F9DD 1F3FB 200D 2642 FE0F ; fully-qualified # 🧝🏻‍♂️ E5.0 man elf: light skin tone +1F9DD 1F3FB 200D 2642 ; minimally-qualified # 🧝🏻‍♂ E5.0 man elf: light skin tone +1F9DD 1F3FC 200D 2642 FE0F ; fully-qualified # 🧝🏼‍♂️ E5.0 man elf: medium-light skin tone +1F9DD 1F3FC 200D 2642 ; minimally-qualified # 🧝🏼‍♂ E5.0 man elf: medium-light skin tone +1F9DD 1F3FD 200D 2642 FE0F ; fully-qualified # 🧝🏽‍♂️ E5.0 man elf: medium skin tone +1F9DD 1F3FD 200D 2642 ; minimally-qualified # 🧝🏽‍♂ E5.0 man elf: medium skin tone +1F9DD 1F3FE 200D 2642 FE0F ; fully-qualified # 🧝🏾‍♂️ E5.0 man elf: medium-dark skin tone +1F9DD 1F3FE 200D 2642 ; minimally-qualified # 🧝🏾‍♂ E5.0 man elf: medium-dark skin tone +1F9DD 1F3FF 200D 2642 FE0F ; fully-qualified # 🧝🏿‍♂️ E5.0 man elf: dark skin tone +1F9DD 1F3FF 200D 2642 ; minimally-qualified # 🧝🏿‍♂ E5.0 man elf: dark skin tone +1F9DD 200D 2640 FE0F ; fully-qualified # 🧝‍♀️ E5.0 woman elf +1F9DD 200D 2640 ; minimally-qualified # 🧝‍♀ E5.0 woman elf +1F9DD 1F3FB 200D 2640 FE0F ; fully-qualified # 🧝🏻‍♀️ E5.0 woman elf: light skin tone +1F9DD 1F3FB 200D 2640 ; minimally-qualified # 🧝🏻‍♀ E5.0 woman elf: light skin tone +1F9DD 1F3FC 200D 2640 FE0F ; fully-qualified # 🧝🏼‍♀️ E5.0 woman elf: medium-light skin tone +1F9DD 1F3FC 200D 2640 ; minimally-qualified # 🧝🏼‍♀ E5.0 woman elf: medium-light skin tone +1F9DD 1F3FD 200D 2640 FE0F ; fully-qualified # 🧝🏽‍♀️ E5.0 woman elf: medium skin tone +1F9DD 1F3FD 200D 2640 ; minimally-qualified # 🧝🏽‍♀ E5.0 woman elf: medium skin tone +1F9DD 1F3FE 200D 2640 FE0F ; fully-qualified # 🧝🏾‍♀️ E5.0 woman elf: medium-dark skin tone +1F9DD 1F3FE 200D 2640 ; minimally-qualified # 🧝🏾‍♀ E5.0 woman elf: medium-dark skin tone +1F9DD 1F3FF 200D 2640 FE0F ; fully-qualified # 🧝🏿‍♀️ E5.0 woman elf: dark skin tone +1F9DD 1F3FF 200D 2640 ; minimally-qualified # 🧝🏿‍♀ E5.0 woman elf: dark skin tone +1F9DE ; fully-qualified # 🧞 E5.0 genie +1F9DE 200D 2642 FE0F ; fully-qualified # 🧞‍♂️ E5.0 man genie +1F9DE 200D 2642 ; minimally-qualified # 🧞‍♂ E5.0 man genie +1F9DE 200D 2640 FE0F ; fully-qualified # 🧞‍♀️ E5.0 woman genie +1F9DE 200D 2640 ; minimally-qualified # 🧞‍♀ E5.0 woman genie +1F9DF ; fully-qualified # 🧟 E5.0 zombie +1F9DF 200D 2642 FE0F ; fully-qualified # 🧟‍♂️ E5.0 man zombie +1F9DF 200D 2642 ; minimally-qualified # 🧟‍♂ E5.0 man zombie +1F9DF 200D 2640 FE0F ; fully-qualified # 🧟‍♀️ E5.0 woman zombie +1F9DF 200D 2640 ; minimally-qualified # 🧟‍♀ E5.0 woman zombie +1F9CC ; fully-qualified # 🧌 E14.0 troll + +# subgroup: person-activity +1F486 ; fully-qualified # 💆 E0.6 person getting massage +1F486 1F3FB ; fully-qualified # 💆🏻 E1.0 person getting massage: light skin tone +1F486 1F3FC ; fully-qualified # 💆🏼 E1.0 person getting massage: medium-light skin tone +1F486 1F3FD ; fully-qualified # 💆🏽 E1.0 person getting massage: medium skin tone +1F486 1F3FE ; fully-qualified # 💆🏾 E1.0 person getting massage: medium-dark skin tone +1F486 1F3FF ; fully-qualified # 💆🏿 E1.0 person getting massage: dark skin tone +1F486 200D 2642 FE0F ; fully-qualified # 💆‍♂️ E4.0 man getting massage +1F486 200D 2642 ; minimally-qualified # 💆‍♂ E4.0 man getting massage +1F486 1F3FB 200D 2642 FE0F ; fully-qualified # 💆🏻‍♂️ E4.0 man getting massage: light skin tone +1F486 1F3FB 200D 2642 ; minimally-qualified # 💆🏻‍♂ E4.0 man getting massage: light skin tone +1F486 1F3FC 200D 2642 FE0F ; fully-qualified # 💆🏼‍♂️ E4.0 man getting massage: medium-light skin tone +1F486 1F3FC 200D 2642 ; minimally-qualified # 💆🏼‍♂ E4.0 man getting massage: medium-light skin tone +1F486 1F3FD 200D 2642 FE0F ; fully-qualified # 💆🏽‍♂️ E4.0 man getting massage: medium skin tone +1F486 1F3FD 200D 2642 ; minimally-qualified # 💆🏽‍♂ E4.0 man getting massage: medium skin tone +1F486 1F3FE 200D 2642 FE0F ; fully-qualified # 💆🏾‍♂️ E4.0 man getting massage: medium-dark skin tone +1F486 1F3FE 200D 2642 ; minimally-qualified # 💆🏾‍♂ E4.0 man getting massage: medium-dark skin tone +1F486 1F3FF 200D 2642 FE0F ; fully-qualified # 💆🏿‍♂️ E4.0 man getting massage: dark skin tone +1F486 1F3FF 200D 2642 ; minimally-qualified # 💆🏿‍♂ E4.0 man getting massage: dark skin tone +1F486 200D 2640 FE0F ; fully-qualified # 💆‍♀️ E4.0 woman getting massage +1F486 200D 2640 ; minimally-qualified # 💆‍♀ E4.0 woman getting massage +1F486 1F3FB 200D 2640 FE0F ; fully-qualified # 💆🏻‍♀️ E4.0 woman getting massage: light skin tone +1F486 1F3FB 200D 2640 ; minimally-qualified # 💆🏻‍♀ E4.0 woman getting massage: light skin tone +1F486 1F3FC 200D 2640 FE0F ; fully-qualified # 💆🏼‍♀️ E4.0 woman getting massage: medium-light skin tone +1F486 1F3FC 200D 2640 ; minimally-qualified # 💆🏼‍♀ E4.0 woman getting massage: medium-light skin tone +1F486 1F3FD 200D 2640 FE0F ; fully-qualified # 💆🏽‍♀️ E4.0 woman getting massage: medium skin tone +1F486 1F3FD 200D 2640 ; minimally-qualified # 💆🏽‍♀ E4.0 woman getting massage: medium skin tone +1F486 1F3FE 200D 2640 FE0F ; fully-qualified # 💆🏾‍♀️ E4.0 woman getting massage: medium-dark skin tone +1F486 1F3FE 200D 2640 ; minimally-qualified # 💆🏾‍♀ E4.0 woman getting massage: medium-dark skin tone +1F486 1F3FF 200D 2640 FE0F ; fully-qualified # 💆🏿‍♀️ E4.0 woman getting massage: dark skin tone +1F486 1F3FF 200D 2640 ; minimally-qualified # 💆🏿‍♀ E4.0 woman getting massage: dark skin tone +1F487 ; fully-qualified # 💇 E0.6 person getting haircut +1F487 1F3FB ; fully-qualified # 💇🏻 E1.0 person getting haircut: light skin tone +1F487 1F3FC ; fully-qualified # 💇🏼 E1.0 person getting haircut: medium-light skin tone +1F487 1F3FD ; fully-qualified # 💇🏽 E1.0 person getting haircut: medium skin tone +1F487 1F3FE ; fully-qualified # 💇🏾 E1.0 person getting haircut: medium-dark skin tone +1F487 1F3FF ; fully-qualified # 💇🏿 E1.0 person getting haircut: dark skin tone +1F487 200D 2642 FE0F ; fully-qualified # 💇‍♂️ E4.0 man getting haircut +1F487 200D 2642 ; minimally-qualified # 💇‍♂ E4.0 man getting haircut +1F487 1F3FB 200D 2642 FE0F ; fully-qualified # 💇🏻‍♂️ E4.0 man getting haircut: light skin tone +1F487 1F3FB 200D 2642 ; minimally-qualified # 💇🏻‍♂ E4.0 man getting haircut: light skin tone +1F487 1F3FC 200D 2642 FE0F ; fully-qualified # 💇🏼‍♂️ E4.0 man getting haircut: medium-light skin tone +1F487 1F3FC 200D 2642 ; minimally-qualified # 💇🏼‍♂ E4.0 man getting haircut: medium-light skin tone +1F487 1F3FD 200D 2642 FE0F ; fully-qualified # 💇🏽‍♂️ E4.0 man getting haircut: medium skin tone +1F487 1F3FD 200D 2642 ; minimally-qualified # 💇🏽‍♂ E4.0 man getting haircut: medium skin tone +1F487 1F3FE 200D 2642 FE0F ; fully-qualified # 💇🏾‍♂️ E4.0 man getting haircut: medium-dark skin tone +1F487 1F3FE 200D 2642 ; minimally-qualified # 💇🏾‍♂ E4.0 man getting haircut: medium-dark skin tone +1F487 1F3FF 200D 2642 FE0F ; fully-qualified # 💇🏿‍♂️ E4.0 man getting haircut: dark skin tone +1F487 1F3FF 200D 2642 ; minimally-qualified # 💇🏿‍♂ E4.0 man getting haircut: dark skin tone +1F487 200D 2640 FE0F ; fully-qualified # 💇‍♀️ E4.0 woman getting haircut +1F487 200D 2640 ; minimally-qualified # 💇‍♀ E4.0 woman getting haircut +1F487 1F3FB 200D 2640 FE0F ; fully-qualified # 💇🏻‍♀️ E4.0 woman getting haircut: light skin tone +1F487 1F3FB 200D 2640 ; minimally-qualified # 💇🏻‍♀ E4.0 woman getting haircut: light skin tone +1F487 1F3FC 200D 2640 FE0F ; fully-qualified # 💇🏼‍♀️ E4.0 woman getting haircut: medium-light skin tone +1F487 1F3FC 200D 2640 ; minimally-qualified # 💇🏼‍♀ E4.0 woman getting haircut: medium-light skin tone +1F487 1F3FD 200D 2640 FE0F ; fully-qualified # 💇🏽‍♀️ E4.0 woman getting haircut: medium skin tone +1F487 1F3FD 200D 2640 ; minimally-qualified # 💇🏽‍♀ E4.0 woman getting haircut: medium skin tone +1F487 1F3FE 200D 2640 FE0F ; fully-qualified # 💇🏾‍♀️ E4.0 woman getting haircut: medium-dark skin tone +1F487 1F3FE 200D 2640 ; minimally-qualified # 💇🏾‍♀ E4.0 woman getting haircut: medium-dark skin tone +1F487 1F3FF 200D 2640 FE0F ; fully-qualified # 💇🏿‍♀️ E4.0 woman getting haircut: dark skin tone +1F487 1F3FF 200D 2640 ; minimally-qualified # 💇🏿‍♀ E4.0 woman getting haircut: dark skin tone +1F6B6 ; fully-qualified # 🚶 E0.6 person walking +1F6B6 1F3FB ; fully-qualified # 🚶🏻 E1.0 person walking: light skin tone +1F6B6 1F3FC ; fully-qualified # 🚶🏼 E1.0 person walking: medium-light skin tone +1F6B6 1F3FD ; fully-qualified # 🚶🏽 E1.0 person walking: medium skin tone +1F6B6 1F3FE ; fully-qualified # 🚶🏾 E1.0 person walking: medium-dark skin tone +1F6B6 1F3FF ; fully-qualified # 🚶🏿 E1.0 person walking: dark skin tone +1F6B6 200D 2642 FE0F ; fully-qualified # 🚶‍♂️ E4.0 man walking +1F6B6 200D 2642 ; minimally-qualified # 🚶‍♂ E4.0 man walking +1F6B6 1F3FB 200D 2642 FE0F ; fully-qualified # 🚶🏻‍♂️ E4.0 man walking: light skin tone +1F6B6 1F3FB 200D 2642 ; minimally-qualified # 🚶🏻‍♂ E4.0 man walking: light skin tone +1F6B6 1F3FC 200D 2642 FE0F ; fully-qualified # 🚶🏼‍♂️ E4.0 man walking: medium-light skin tone +1F6B6 1F3FC 200D 2642 ; minimally-qualified # 🚶🏼‍♂ E4.0 man walking: medium-light skin tone +1F6B6 1F3FD 200D 2642 FE0F ; fully-qualified # 🚶🏽‍♂️ E4.0 man walking: medium skin tone +1F6B6 1F3FD 200D 2642 ; minimally-qualified # 🚶🏽‍♂ E4.0 man walking: medium skin tone +1F6B6 1F3FE 200D 2642 FE0F ; fully-qualified # 🚶🏾‍♂️ E4.0 man walking: medium-dark skin tone +1F6B6 1F3FE 200D 2642 ; minimally-qualified # 🚶🏾‍♂ E4.0 man walking: medium-dark skin tone +1F6B6 1F3FF 200D 2642 FE0F ; fully-qualified # 🚶🏿‍♂️ E4.0 man walking: dark skin tone +1F6B6 1F3FF 200D 2642 ; minimally-qualified # 🚶🏿‍♂ E4.0 man walking: dark skin tone +1F6B6 200D 2640 FE0F ; fully-qualified # 🚶‍♀️ E4.0 woman walking +1F6B6 200D 2640 ; minimally-qualified # 🚶‍♀ E4.0 woman walking +1F6B6 1F3FB 200D 2640 FE0F ; fully-qualified # 🚶🏻‍♀️ E4.0 woman walking: light skin tone +1F6B6 1F3FB 200D 2640 ; minimally-qualified # 🚶🏻‍♀ E4.0 woman walking: light skin tone +1F6B6 1F3FC 200D 2640 FE0F ; fully-qualified # 🚶🏼‍♀️ E4.0 woman walking: medium-light skin tone +1F6B6 1F3FC 200D 2640 ; minimally-qualified # 🚶🏼‍♀ E4.0 woman walking: medium-light skin tone +1F6B6 1F3FD 200D 2640 FE0F ; fully-qualified # 🚶🏽‍♀️ E4.0 woman walking: medium skin tone +1F6B6 1F3FD 200D 2640 ; minimally-qualified # 🚶🏽‍♀ E4.0 woman walking: medium skin tone +1F6B6 1F3FE 200D 2640 FE0F ; fully-qualified # 🚶🏾‍♀️ E4.0 woman walking: medium-dark skin tone +1F6B6 1F3FE 200D 2640 ; minimally-qualified # 🚶🏾‍♀ E4.0 woman walking: medium-dark skin tone +1F6B6 1F3FF 200D 2640 FE0F ; fully-qualified # 🚶🏿‍♀️ E4.0 woman walking: dark skin tone +1F6B6 1F3FF 200D 2640 ; minimally-qualified # 🚶🏿‍♀ E4.0 woman walking: dark skin tone +1F6B6 200D 27A1 FE0F ; fully-qualified # 🚶‍➡️ E15.1 person walking facing right +1F6B6 200D 27A1 ; minimally-qualified # 🚶‍➡ E15.1 person walking facing right +1F6B6 1F3FB 200D 27A1 FE0F ; fully-qualified # 🚶🏻‍➡️ E15.1 person walking facing right: light skin tone +1F6B6 1F3FB 200D 27A1 ; minimally-qualified # 🚶🏻‍➡ E15.1 person walking facing right: light skin tone +1F6B6 1F3FC 200D 27A1 FE0F ; fully-qualified # 🚶🏼‍➡️ E15.1 person walking facing right: medium-light skin tone +1F6B6 1F3FC 200D 27A1 ; minimally-qualified # 🚶🏼‍➡ E15.1 person walking facing right: medium-light skin tone +1F6B6 1F3FD 200D 27A1 FE0F ; fully-qualified # 🚶🏽‍➡️ E15.1 person walking facing right: medium skin tone +1F6B6 1F3FD 200D 27A1 ; minimally-qualified # 🚶🏽‍➡ E15.1 person walking facing right: medium skin tone +1F6B6 1F3FE 200D 27A1 FE0F ; fully-qualified # 🚶🏾‍➡️ E15.1 person walking facing right: medium-dark skin tone +1F6B6 1F3FE 200D 27A1 ; minimally-qualified # 🚶🏾‍➡ E15.1 person walking facing right: medium-dark skin tone +1F6B6 1F3FF 200D 27A1 FE0F ; fully-qualified # 🚶🏿‍➡️ E15.1 person walking facing right: dark skin tone +1F6B6 1F3FF 200D 27A1 ; minimally-qualified # 🚶🏿‍➡ E15.1 person walking facing right: dark skin tone +1F6B6 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶‍♀️‍➡️ E15.1 woman walking facing right +1F6B6 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🚶‍♀‍➡️ E15.1 woman walking facing right +1F6B6 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🚶‍♀️‍➡ E15.1 woman walking facing right +1F6B6 200D 2640 200D 27A1 ; minimally-qualified # 🚶‍♀‍➡ E15.1 woman walking facing right +1F6B6 1F3FB 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶🏻‍♀️‍➡️ E15.1 woman walking facing right: light skin tone +1F6B6 1F3FB 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🚶🏻‍♀‍➡️ E15.1 woman walking facing right: light skin tone +1F6B6 1F3FB 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🚶🏻‍♀️‍➡ E15.1 woman walking facing right: light skin tone +1F6B6 1F3FB 200D 2640 200D 27A1 ; minimally-qualified # 🚶🏻‍♀‍➡ E15.1 woman walking facing right: light skin tone +1F6B6 1F3FC 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶🏼‍♀️‍➡️ E15.1 woman walking facing right: medium-light skin tone +1F6B6 1F3FC 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🚶🏼‍♀‍➡️ E15.1 woman walking facing right: medium-light skin tone +1F6B6 1F3FC 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🚶🏼‍♀️‍➡ E15.1 woman walking facing right: medium-light skin tone +1F6B6 1F3FC 200D 2640 200D 27A1 ; minimally-qualified # 🚶🏼‍♀‍➡ E15.1 woman walking facing right: medium-light skin tone +1F6B6 1F3FD 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶🏽‍♀️‍➡️ E15.1 woman walking facing right: medium skin tone +1F6B6 1F3FD 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🚶🏽‍♀‍➡️ E15.1 woman walking facing right: medium skin tone +1F6B6 1F3FD 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🚶🏽‍♀️‍➡ E15.1 woman walking facing right: medium skin tone +1F6B6 1F3FD 200D 2640 200D 27A1 ; minimally-qualified # 🚶🏽‍♀‍➡ E15.1 woman walking facing right: medium skin tone +1F6B6 1F3FE 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶🏾‍♀️‍➡️ E15.1 woman walking facing right: medium-dark skin tone +1F6B6 1F3FE 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🚶🏾‍♀‍➡️ E15.1 woman walking facing right: medium-dark skin tone +1F6B6 1F3FE 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🚶🏾‍♀️‍➡ E15.1 woman walking facing right: medium-dark skin tone +1F6B6 1F3FE 200D 2640 200D 27A1 ; minimally-qualified # 🚶🏾‍♀‍➡ E15.1 woman walking facing right: medium-dark skin tone +1F6B6 1F3FF 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶🏿‍♀️‍➡️ E15.1 woman walking facing right: dark skin tone +1F6B6 1F3FF 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🚶🏿‍♀‍➡️ E15.1 woman walking facing right: dark skin tone +1F6B6 1F3FF 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🚶🏿‍♀️‍➡ E15.1 woman walking facing right: dark skin tone +1F6B6 1F3FF 200D 2640 200D 27A1 ; minimally-qualified # 🚶🏿‍♀‍➡ E15.1 woman walking facing right: dark skin tone +1F6B6 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶‍♂️‍➡️ E15.1 man walking facing right +1F6B6 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🚶‍♂‍➡️ E15.1 man walking facing right +1F6B6 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🚶‍♂️‍➡ E15.1 man walking facing right +1F6B6 200D 2642 200D 27A1 ; minimally-qualified # 🚶‍♂‍➡ E15.1 man walking facing right +1F6B6 1F3FB 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶🏻‍♂️‍➡️ E15.1 man walking facing right: light skin tone +1F6B6 1F3FB 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🚶🏻‍♂‍➡️ E15.1 man walking facing right: light skin tone +1F6B6 1F3FB 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🚶🏻‍♂️‍➡ E15.1 man walking facing right: light skin tone +1F6B6 1F3FB 200D 2642 200D 27A1 ; minimally-qualified # 🚶🏻‍♂‍➡ E15.1 man walking facing right: light skin tone +1F6B6 1F3FC 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶🏼‍♂️‍➡️ E15.1 man walking facing right: medium-light skin tone +1F6B6 1F3FC 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🚶🏼‍♂‍➡️ E15.1 man walking facing right: medium-light skin tone +1F6B6 1F3FC 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🚶🏼‍♂️‍➡ E15.1 man walking facing right: medium-light skin tone +1F6B6 1F3FC 200D 2642 200D 27A1 ; minimally-qualified # 🚶🏼‍♂‍➡ E15.1 man walking facing right: medium-light skin tone +1F6B6 1F3FD 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶🏽‍♂️‍➡️ E15.1 man walking facing right: medium skin tone +1F6B6 1F3FD 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🚶🏽‍♂‍➡️ E15.1 man walking facing right: medium skin tone +1F6B6 1F3FD 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🚶🏽‍♂️‍➡ E15.1 man walking facing right: medium skin tone +1F6B6 1F3FD 200D 2642 200D 27A1 ; minimally-qualified # 🚶🏽‍♂‍➡ E15.1 man walking facing right: medium skin tone +1F6B6 1F3FE 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶🏾‍♂️‍➡️ E15.1 man walking facing right: medium-dark skin tone +1F6B6 1F3FE 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🚶🏾‍♂‍➡️ E15.1 man walking facing right: medium-dark skin tone +1F6B6 1F3FE 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🚶🏾‍♂️‍➡ E15.1 man walking facing right: medium-dark skin tone +1F6B6 1F3FE 200D 2642 200D 27A1 ; minimally-qualified # 🚶🏾‍♂‍➡ E15.1 man walking facing right: medium-dark skin tone +1F6B6 1F3FF 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶🏿‍♂️‍➡️ E15.1 man walking facing right: dark skin tone +1F6B6 1F3FF 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🚶🏿‍♂‍➡️ E15.1 man walking facing right: dark skin tone +1F6B6 1F3FF 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🚶🏿‍♂️‍➡ E15.1 man walking facing right: dark skin tone +1F6B6 1F3FF 200D 2642 200D 27A1 ; minimally-qualified # 🚶🏿‍♂‍➡ E15.1 man walking facing right: dark skin tone +1F9CD ; fully-qualified # 🧍 E12.0 person standing +1F9CD 1F3FB ; fully-qualified # 🧍🏻 E12.0 person standing: light skin tone +1F9CD 1F3FC ; fully-qualified # 🧍🏼 E12.0 person standing: medium-light skin tone +1F9CD 1F3FD ; fully-qualified # 🧍🏽 E12.0 person standing: medium skin tone +1F9CD 1F3FE ; fully-qualified # 🧍🏾 E12.0 person standing: medium-dark skin tone +1F9CD 1F3FF ; fully-qualified # 🧍🏿 E12.0 person standing: dark skin tone +1F9CD 200D 2642 FE0F ; fully-qualified # 🧍‍♂️ E12.0 man standing +1F9CD 200D 2642 ; minimally-qualified # 🧍‍♂ E12.0 man standing +1F9CD 1F3FB 200D 2642 FE0F ; fully-qualified # 🧍🏻‍♂️ E12.0 man standing: light skin tone +1F9CD 1F3FB 200D 2642 ; minimally-qualified # 🧍🏻‍♂ E12.0 man standing: light skin tone +1F9CD 1F3FC 200D 2642 FE0F ; fully-qualified # 🧍🏼‍♂️ E12.0 man standing: medium-light skin tone +1F9CD 1F3FC 200D 2642 ; minimally-qualified # 🧍🏼‍♂ E12.0 man standing: medium-light skin tone +1F9CD 1F3FD 200D 2642 FE0F ; fully-qualified # 🧍🏽‍♂️ E12.0 man standing: medium skin tone +1F9CD 1F3FD 200D 2642 ; minimally-qualified # 🧍🏽‍♂ E12.0 man standing: medium skin tone +1F9CD 1F3FE 200D 2642 FE0F ; fully-qualified # 🧍🏾‍♂️ E12.0 man standing: medium-dark skin tone +1F9CD 1F3FE 200D 2642 ; minimally-qualified # 🧍🏾‍♂ E12.0 man standing: medium-dark skin tone +1F9CD 1F3FF 200D 2642 FE0F ; fully-qualified # 🧍🏿‍♂️ E12.0 man standing: dark skin tone +1F9CD 1F3FF 200D 2642 ; minimally-qualified # 🧍🏿‍♂ E12.0 man standing: dark skin tone +1F9CD 200D 2640 FE0F ; fully-qualified # 🧍‍♀️ E12.0 woman standing +1F9CD 200D 2640 ; minimally-qualified # 🧍‍♀ E12.0 woman standing +1F9CD 1F3FB 200D 2640 FE0F ; fully-qualified # 🧍🏻‍♀️ E12.0 woman standing: light skin tone +1F9CD 1F3FB 200D 2640 ; minimally-qualified # 🧍🏻‍♀ E12.0 woman standing: light skin tone +1F9CD 1F3FC 200D 2640 FE0F ; fully-qualified # 🧍🏼‍♀️ E12.0 woman standing: medium-light skin tone +1F9CD 1F3FC 200D 2640 ; minimally-qualified # 🧍🏼‍♀ E12.0 woman standing: medium-light skin tone +1F9CD 1F3FD 200D 2640 FE0F ; fully-qualified # 🧍🏽‍♀️ E12.0 woman standing: medium skin tone +1F9CD 1F3FD 200D 2640 ; minimally-qualified # 🧍🏽‍♀ E12.0 woman standing: medium skin tone +1F9CD 1F3FE 200D 2640 FE0F ; fully-qualified # 🧍🏾‍♀️ E12.0 woman standing: medium-dark skin tone +1F9CD 1F3FE 200D 2640 ; minimally-qualified # 🧍🏾‍♀ E12.0 woman standing: medium-dark skin tone +1F9CD 1F3FF 200D 2640 FE0F ; fully-qualified # 🧍🏿‍♀️ E12.0 woman standing: dark skin tone +1F9CD 1F3FF 200D 2640 ; minimally-qualified # 🧍🏿‍♀ E12.0 woman standing: dark skin tone +1F9CE ; fully-qualified # 🧎 E12.0 person kneeling +1F9CE 1F3FB ; fully-qualified # 🧎🏻 E12.0 person kneeling: light skin tone +1F9CE 1F3FC ; fully-qualified # 🧎🏼 E12.0 person kneeling: medium-light skin tone +1F9CE 1F3FD ; fully-qualified # 🧎🏽 E12.0 person kneeling: medium skin tone +1F9CE 1F3FE ; fully-qualified # 🧎🏾 E12.0 person kneeling: medium-dark skin tone +1F9CE 1F3FF ; fully-qualified # 🧎🏿 E12.0 person kneeling: dark skin tone +1F9CE 200D 2642 FE0F ; fully-qualified # 🧎‍♂️ E12.0 man kneeling +1F9CE 200D 2642 ; minimally-qualified # 🧎‍♂ E12.0 man kneeling +1F9CE 1F3FB 200D 2642 FE0F ; fully-qualified # 🧎🏻‍♂️ E12.0 man kneeling: light skin tone +1F9CE 1F3FB 200D 2642 ; minimally-qualified # 🧎🏻‍♂ E12.0 man kneeling: light skin tone +1F9CE 1F3FC 200D 2642 FE0F ; fully-qualified # 🧎🏼‍♂️ E12.0 man kneeling: medium-light skin tone +1F9CE 1F3FC 200D 2642 ; minimally-qualified # 🧎🏼‍♂ E12.0 man kneeling: medium-light skin tone +1F9CE 1F3FD 200D 2642 FE0F ; fully-qualified # 🧎🏽‍♂️ E12.0 man kneeling: medium skin tone +1F9CE 1F3FD 200D 2642 ; minimally-qualified # 🧎🏽‍♂ E12.0 man kneeling: medium skin tone +1F9CE 1F3FE 200D 2642 FE0F ; fully-qualified # 🧎🏾‍♂️ E12.0 man kneeling: medium-dark skin tone +1F9CE 1F3FE 200D 2642 ; minimally-qualified # 🧎🏾‍♂ E12.0 man kneeling: medium-dark skin tone +1F9CE 1F3FF 200D 2642 FE0F ; fully-qualified # 🧎🏿‍♂️ E12.0 man kneeling: dark skin tone +1F9CE 1F3FF 200D 2642 ; minimally-qualified # 🧎🏿‍♂ E12.0 man kneeling: dark skin tone +1F9CE 200D 2640 FE0F ; fully-qualified # 🧎‍♀️ E12.0 woman kneeling +1F9CE 200D 2640 ; minimally-qualified # 🧎‍♀ E12.0 woman kneeling +1F9CE 1F3FB 200D 2640 FE0F ; fully-qualified # 🧎🏻‍♀️ E12.0 woman kneeling: light skin tone +1F9CE 1F3FB 200D 2640 ; minimally-qualified # 🧎🏻‍♀ E12.0 woman kneeling: light skin tone +1F9CE 1F3FC 200D 2640 FE0F ; fully-qualified # 🧎🏼‍♀️ E12.0 woman kneeling: medium-light skin tone +1F9CE 1F3FC 200D 2640 ; minimally-qualified # 🧎🏼‍♀ E12.0 woman kneeling: medium-light skin tone +1F9CE 1F3FD 200D 2640 FE0F ; fully-qualified # 🧎🏽‍♀️ E12.0 woman kneeling: medium skin tone +1F9CE 1F3FD 200D 2640 ; minimally-qualified # 🧎🏽‍♀ E12.0 woman kneeling: medium skin tone +1F9CE 1F3FE 200D 2640 FE0F ; fully-qualified # 🧎🏾‍♀️ E12.0 woman kneeling: medium-dark skin tone +1F9CE 1F3FE 200D 2640 ; minimally-qualified # 🧎🏾‍♀ E12.0 woman kneeling: medium-dark skin tone +1F9CE 1F3FF 200D 2640 FE0F ; fully-qualified # 🧎🏿‍♀️ E12.0 woman kneeling: dark skin tone +1F9CE 1F3FF 200D 2640 ; minimally-qualified # 🧎🏿‍♀ E12.0 woman kneeling: dark skin tone +1F9CE 200D 27A1 FE0F ; fully-qualified # 🧎‍➡️ E15.1 person kneeling facing right +1F9CE 200D 27A1 ; minimally-qualified # 🧎‍➡ E15.1 person kneeling facing right +1F9CE 1F3FB 200D 27A1 FE0F ; fully-qualified # 🧎🏻‍➡️ E15.1 person kneeling facing right: light skin tone +1F9CE 1F3FB 200D 27A1 ; minimally-qualified # 🧎🏻‍➡ E15.1 person kneeling facing right: light skin tone +1F9CE 1F3FC 200D 27A1 FE0F ; fully-qualified # 🧎🏼‍➡️ E15.1 person kneeling facing right: medium-light skin tone +1F9CE 1F3FC 200D 27A1 ; minimally-qualified # 🧎🏼‍➡ E15.1 person kneeling facing right: medium-light skin tone +1F9CE 1F3FD 200D 27A1 FE0F ; fully-qualified # 🧎🏽‍➡️ E15.1 person kneeling facing right: medium skin tone +1F9CE 1F3FD 200D 27A1 ; minimally-qualified # 🧎🏽‍➡ E15.1 person kneeling facing right: medium skin tone +1F9CE 1F3FE 200D 27A1 FE0F ; fully-qualified # 🧎🏾‍➡️ E15.1 person kneeling facing right: medium-dark skin tone +1F9CE 1F3FE 200D 27A1 ; minimally-qualified # 🧎🏾‍➡ E15.1 person kneeling facing right: medium-dark skin tone +1F9CE 1F3FF 200D 27A1 FE0F ; fully-qualified # 🧎🏿‍➡️ E15.1 person kneeling facing right: dark skin tone +1F9CE 1F3FF 200D 27A1 ; minimally-qualified # 🧎🏿‍➡ E15.1 person kneeling facing right: dark skin tone +1F9CE 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎‍♀️‍➡️ E15.1 woman kneeling facing right +1F9CE 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🧎‍♀‍➡️ E15.1 woman kneeling facing right +1F9CE 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🧎‍♀️‍➡ E15.1 woman kneeling facing right +1F9CE 200D 2640 200D 27A1 ; minimally-qualified # 🧎‍♀‍➡ E15.1 woman kneeling facing right +1F9CE 1F3FB 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎🏻‍♀️‍➡️ E15.1 woman kneeling facing right: light skin tone +1F9CE 1F3FB 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🧎🏻‍♀‍➡️ E15.1 woman kneeling facing right: light skin tone +1F9CE 1F3FB 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🧎🏻‍♀️‍➡ E15.1 woman kneeling facing right: light skin tone +1F9CE 1F3FB 200D 2640 200D 27A1 ; minimally-qualified # 🧎🏻‍♀‍➡ E15.1 woman kneeling facing right: light skin tone +1F9CE 1F3FC 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎🏼‍♀️‍➡️ E15.1 woman kneeling facing right: medium-light skin tone +1F9CE 1F3FC 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🧎🏼‍♀‍➡️ E15.1 woman kneeling facing right: medium-light skin tone +1F9CE 1F3FC 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🧎🏼‍♀️‍➡ E15.1 woman kneeling facing right: medium-light skin tone +1F9CE 1F3FC 200D 2640 200D 27A1 ; minimally-qualified # 🧎🏼‍♀‍➡ E15.1 woman kneeling facing right: medium-light skin tone +1F9CE 1F3FD 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎🏽‍♀️‍➡️ E15.1 woman kneeling facing right: medium skin tone +1F9CE 1F3FD 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🧎🏽‍♀‍➡️ E15.1 woman kneeling facing right: medium skin tone +1F9CE 1F3FD 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🧎🏽‍♀️‍➡ E15.1 woman kneeling facing right: medium skin tone +1F9CE 1F3FD 200D 2640 200D 27A1 ; minimally-qualified # 🧎🏽‍♀‍➡ E15.1 woman kneeling facing right: medium skin tone +1F9CE 1F3FE 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎🏾‍♀️‍➡️ E15.1 woman kneeling facing right: medium-dark skin tone +1F9CE 1F3FE 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🧎🏾‍♀‍➡️ E15.1 woman kneeling facing right: medium-dark skin tone +1F9CE 1F3FE 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🧎🏾‍♀️‍➡ E15.1 woman kneeling facing right: medium-dark skin tone +1F9CE 1F3FE 200D 2640 200D 27A1 ; minimally-qualified # 🧎🏾‍♀‍➡ E15.1 woman kneeling facing right: medium-dark skin tone +1F9CE 1F3FF 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎🏿‍♀️‍➡️ E15.1 woman kneeling facing right: dark skin tone +1F9CE 1F3FF 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🧎🏿‍♀‍➡️ E15.1 woman kneeling facing right: dark skin tone +1F9CE 1F3FF 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🧎🏿‍♀️‍➡ E15.1 woman kneeling facing right: dark skin tone +1F9CE 1F3FF 200D 2640 200D 27A1 ; minimally-qualified # 🧎🏿‍♀‍➡ E15.1 woman kneeling facing right: dark skin tone +1F9CE 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎‍♂️‍➡️ E15.1 man kneeling facing right +1F9CE 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🧎‍♂‍➡️ E15.1 man kneeling facing right +1F9CE 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🧎‍♂️‍➡ E15.1 man kneeling facing right +1F9CE 200D 2642 200D 27A1 ; minimally-qualified # 🧎‍♂‍➡ E15.1 man kneeling facing right +1F9CE 1F3FB 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎🏻‍♂️‍➡️ E15.1 man kneeling facing right: light skin tone +1F9CE 1F3FB 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🧎🏻‍♂‍➡️ E15.1 man kneeling facing right: light skin tone +1F9CE 1F3FB 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🧎🏻‍♂️‍➡ E15.1 man kneeling facing right: light skin tone +1F9CE 1F3FB 200D 2642 200D 27A1 ; minimally-qualified # 🧎🏻‍♂‍➡ E15.1 man kneeling facing right: light skin tone +1F9CE 1F3FC 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎🏼‍♂️‍➡️ E15.1 man kneeling facing right: medium-light skin tone +1F9CE 1F3FC 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🧎🏼‍♂‍➡️ E15.1 man kneeling facing right: medium-light skin tone +1F9CE 1F3FC 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🧎🏼‍♂️‍➡ E15.1 man kneeling facing right: medium-light skin tone +1F9CE 1F3FC 200D 2642 200D 27A1 ; minimally-qualified # 🧎🏼‍♂‍➡ E15.1 man kneeling facing right: medium-light skin tone +1F9CE 1F3FD 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎🏽‍♂️‍➡️ E15.1 man kneeling facing right: medium skin tone +1F9CE 1F3FD 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🧎🏽‍♂‍➡️ E15.1 man kneeling facing right: medium skin tone +1F9CE 1F3FD 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🧎🏽‍♂️‍➡ E15.1 man kneeling facing right: medium skin tone +1F9CE 1F3FD 200D 2642 200D 27A1 ; minimally-qualified # 🧎🏽‍♂‍➡ E15.1 man kneeling facing right: medium skin tone +1F9CE 1F3FE 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎🏾‍♂️‍➡️ E15.1 man kneeling facing right: medium-dark skin tone +1F9CE 1F3FE 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🧎🏾‍♂‍➡️ E15.1 man kneeling facing right: medium-dark skin tone +1F9CE 1F3FE 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🧎🏾‍♂️‍➡ E15.1 man kneeling facing right: medium-dark skin tone +1F9CE 1F3FE 200D 2642 200D 27A1 ; minimally-qualified # 🧎🏾‍♂‍➡ E15.1 man kneeling facing right: medium-dark skin tone +1F9CE 1F3FF 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎🏿‍♂️‍➡️ E15.1 man kneeling facing right: dark skin tone +1F9CE 1F3FF 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🧎🏿‍♂‍➡️ E15.1 man kneeling facing right: dark skin tone +1F9CE 1F3FF 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🧎🏿‍♂️‍➡ E15.1 man kneeling facing right: dark skin tone +1F9CE 1F3FF 200D 2642 200D 27A1 ; minimally-qualified # 🧎🏿‍♂‍➡ E15.1 man kneeling facing right: dark skin tone +1F9D1 200D 1F9AF ; fully-qualified # 🧑‍🦯 E12.1 person with white cane +1F9D1 1F3FB 200D 1F9AF ; fully-qualified # 🧑🏻‍🦯 E12.1 person with white cane: light skin tone +1F9D1 1F3FC 200D 1F9AF ; fully-qualified # 🧑🏼‍🦯 E12.1 person with white cane: medium-light skin tone +1F9D1 1F3FD 200D 1F9AF ; fully-qualified # 🧑🏽‍🦯 E12.1 person with white cane: medium skin tone +1F9D1 1F3FE 200D 1F9AF ; fully-qualified # 🧑🏾‍🦯 E12.1 person with white cane: medium-dark skin tone +1F9D1 1F3FF 200D 1F9AF ; fully-qualified # 🧑🏿‍🦯 E12.1 person with white cane: dark skin tone +1F9D1 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 🧑‍🦯‍➡️ E15.1 person with white cane facing right +1F9D1 200D 1F9AF 200D 27A1 ; minimally-qualified # 🧑‍🦯‍➡ E15.1 person with white cane facing right +1F9D1 1F3FB 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 🧑🏻‍🦯‍➡️ E15.1 person with white cane facing right: light skin tone +1F9D1 1F3FB 200D 1F9AF 200D 27A1 ; minimally-qualified # 🧑🏻‍🦯‍➡ E15.1 person with white cane facing right: light skin tone +1F9D1 1F3FC 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 🧑🏼‍🦯‍➡️ E15.1 person with white cane facing right: medium-light skin tone +1F9D1 1F3FC 200D 1F9AF 200D 27A1 ; minimally-qualified # 🧑🏼‍🦯‍➡ E15.1 person with white cane facing right: medium-light skin tone +1F9D1 1F3FD 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 🧑🏽‍🦯‍➡️ E15.1 person with white cane facing right: medium skin tone +1F9D1 1F3FD 200D 1F9AF 200D 27A1 ; minimally-qualified # 🧑🏽‍🦯‍➡ E15.1 person with white cane facing right: medium skin tone +1F9D1 1F3FE 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 🧑🏾‍🦯‍➡️ E15.1 person with white cane facing right: medium-dark skin tone +1F9D1 1F3FE 200D 1F9AF 200D 27A1 ; minimally-qualified # 🧑🏾‍🦯‍➡ E15.1 person with white cane facing right: medium-dark skin tone +1F9D1 1F3FF 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 🧑🏿‍🦯‍➡️ E15.1 person with white cane facing right: dark skin tone +1F9D1 1F3FF 200D 1F9AF 200D 27A1 ; minimally-qualified # 🧑🏿‍🦯‍➡ E15.1 person with white cane facing right: dark skin tone +1F468 200D 1F9AF ; fully-qualified # 👨‍🦯 E12.0 man with white cane +1F468 1F3FB 200D 1F9AF ; fully-qualified # 👨🏻‍🦯 E12.0 man with white cane: light skin tone +1F468 1F3FC 200D 1F9AF ; fully-qualified # 👨🏼‍🦯 E12.0 man with white cane: medium-light skin tone +1F468 1F3FD 200D 1F9AF ; fully-qualified # 👨🏽‍🦯 E12.0 man with white cane: medium skin tone +1F468 1F3FE 200D 1F9AF ; fully-qualified # 👨🏾‍🦯 E12.0 man with white cane: medium-dark skin tone +1F468 1F3FF 200D 1F9AF ; fully-qualified # 👨🏿‍🦯 E12.0 man with white cane: dark skin tone +1F468 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👨‍🦯‍➡️ E15.1 man with white cane facing right +1F468 200D 1F9AF 200D 27A1 ; minimally-qualified # 👨‍🦯‍➡ E15.1 man with white cane facing right +1F468 1F3FB 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👨🏻‍🦯‍➡️ E15.1 man with white cane facing right: light skin tone +1F468 1F3FB 200D 1F9AF 200D 27A1 ; minimally-qualified # 👨🏻‍🦯‍➡ E15.1 man with white cane facing right: light skin tone +1F468 1F3FC 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👨🏼‍🦯‍➡️ E15.1 man with white cane facing right: medium-light skin tone +1F468 1F3FC 200D 1F9AF 200D 27A1 ; minimally-qualified # 👨🏼‍🦯‍➡ E15.1 man with white cane facing right: medium-light skin tone +1F468 1F3FD 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👨🏽‍🦯‍➡️ E15.1 man with white cane facing right: medium skin tone +1F468 1F3FD 200D 1F9AF 200D 27A1 ; minimally-qualified # 👨🏽‍🦯‍➡ E15.1 man with white cane facing right: medium skin tone +1F468 1F3FE 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👨🏾‍🦯‍➡️ E15.1 man with white cane facing right: medium-dark skin tone +1F468 1F3FE 200D 1F9AF 200D 27A1 ; minimally-qualified # 👨🏾‍🦯‍➡ E15.1 man with white cane facing right: medium-dark skin tone +1F468 1F3FF 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👨🏿‍🦯‍➡️ E15.1 man with white cane facing right: dark skin tone +1F468 1F3FF 200D 1F9AF 200D 27A1 ; minimally-qualified # 👨🏿‍🦯‍➡ E15.1 man with white cane facing right: dark skin tone +1F469 200D 1F9AF ; fully-qualified # 👩‍🦯 E12.0 woman with white cane +1F469 1F3FB 200D 1F9AF ; fully-qualified # 👩🏻‍🦯 E12.0 woman with white cane: light skin tone +1F469 1F3FC 200D 1F9AF ; fully-qualified # 👩🏼‍🦯 E12.0 woman with white cane: medium-light skin tone +1F469 1F3FD 200D 1F9AF ; fully-qualified # 👩🏽‍🦯 E12.0 woman with white cane: medium skin tone +1F469 1F3FE 200D 1F9AF ; fully-qualified # 👩🏾‍🦯 E12.0 woman with white cane: medium-dark skin tone +1F469 1F3FF 200D 1F9AF ; fully-qualified # 👩🏿‍🦯 E12.0 woman with white cane: dark skin tone +1F469 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👩‍🦯‍➡️ E15.1 woman with white cane facing right +1F469 200D 1F9AF 200D 27A1 ; minimally-qualified # 👩‍🦯‍➡ E15.1 woman with white cane facing right +1F469 1F3FB 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👩🏻‍🦯‍➡️ E15.1 woman with white cane facing right: light skin tone +1F469 1F3FB 200D 1F9AF 200D 27A1 ; minimally-qualified # 👩🏻‍🦯‍➡ E15.1 woman with white cane facing right: light skin tone +1F469 1F3FC 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👩🏼‍🦯‍➡️ E15.1 woman with white cane facing right: medium-light skin tone +1F469 1F3FC 200D 1F9AF 200D 27A1 ; minimally-qualified # 👩🏼‍🦯‍➡ E15.1 woman with white cane facing right: medium-light skin tone +1F469 1F3FD 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👩🏽‍🦯‍➡️ E15.1 woman with white cane facing right: medium skin tone +1F469 1F3FD 200D 1F9AF 200D 27A1 ; minimally-qualified # 👩🏽‍🦯‍➡ E15.1 woman with white cane facing right: medium skin tone +1F469 1F3FE 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👩🏾‍🦯‍➡️ E15.1 woman with white cane facing right: medium-dark skin tone +1F469 1F3FE 200D 1F9AF 200D 27A1 ; minimally-qualified # 👩🏾‍🦯‍➡ E15.1 woman with white cane facing right: medium-dark skin tone +1F469 1F3FF 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👩🏿‍🦯‍➡️ E15.1 woman with white cane facing right: dark skin tone +1F469 1F3FF 200D 1F9AF 200D 27A1 ; minimally-qualified # 👩🏿‍🦯‍➡ E15.1 woman with white cane facing right: dark skin tone +1F9D1 200D 1F9BC ; fully-qualified # 🧑‍🦼 E12.1 person in motorized wheelchair +1F9D1 1F3FB 200D 1F9BC ; fully-qualified # 🧑🏻‍🦼 E12.1 person in motorized wheelchair: light skin tone +1F9D1 1F3FC 200D 1F9BC ; fully-qualified # 🧑🏼‍🦼 E12.1 person in motorized wheelchair: medium-light skin tone +1F9D1 1F3FD 200D 1F9BC ; fully-qualified # 🧑🏽‍🦼 E12.1 person in motorized wheelchair: medium skin tone +1F9D1 1F3FE 200D 1F9BC ; fully-qualified # 🧑🏾‍🦼 E12.1 person in motorized wheelchair: medium-dark skin tone +1F9D1 1F3FF 200D 1F9BC ; fully-qualified # 🧑🏿‍🦼 E12.1 person in motorized wheelchair: dark skin tone +1F9D1 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 🧑‍🦼‍➡️ E15.1 person in motorized wheelchair facing right +1F9D1 200D 1F9BC 200D 27A1 ; minimally-qualified # 🧑‍🦼‍➡ E15.1 person in motorized wheelchair facing right +1F9D1 1F3FB 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 🧑🏻‍🦼‍➡️ E15.1 person in motorized wheelchair facing right: light skin tone +1F9D1 1F3FB 200D 1F9BC 200D 27A1 ; minimally-qualified # 🧑🏻‍🦼‍➡ E15.1 person in motorized wheelchair facing right: light skin tone +1F9D1 1F3FC 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 🧑🏼‍🦼‍➡️ E15.1 person in motorized wheelchair facing right: medium-light skin tone +1F9D1 1F3FC 200D 1F9BC 200D 27A1 ; minimally-qualified # 🧑🏼‍🦼‍➡ E15.1 person in motorized wheelchair facing right: medium-light skin tone +1F9D1 1F3FD 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 🧑🏽‍🦼‍➡️ E15.1 person in motorized wheelchair facing right: medium skin tone +1F9D1 1F3FD 200D 1F9BC 200D 27A1 ; minimally-qualified # 🧑🏽‍🦼‍➡ E15.1 person in motorized wheelchair facing right: medium skin tone +1F9D1 1F3FE 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 🧑🏾‍🦼‍➡️ E15.1 person in motorized wheelchair facing right: medium-dark skin tone +1F9D1 1F3FE 200D 1F9BC 200D 27A1 ; minimally-qualified # 🧑🏾‍🦼‍➡ E15.1 person in motorized wheelchair facing right: medium-dark skin tone +1F9D1 1F3FF 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 🧑🏿‍🦼‍➡️ E15.1 person in motorized wheelchair facing right: dark skin tone +1F9D1 1F3FF 200D 1F9BC 200D 27A1 ; minimally-qualified # 🧑🏿‍🦼‍➡ E15.1 person in motorized wheelchair facing right: dark skin tone +1F468 200D 1F9BC ; fully-qualified # 👨‍🦼 E12.0 man in motorized wheelchair +1F468 1F3FB 200D 1F9BC ; fully-qualified # 👨🏻‍🦼 E12.0 man in motorized wheelchair: light skin tone +1F468 1F3FC 200D 1F9BC ; fully-qualified # 👨🏼‍🦼 E12.0 man in motorized wheelchair: medium-light skin tone +1F468 1F3FD 200D 1F9BC ; fully-qualified # 👨🏽‍🦼 E12.0 man in motorized wheelchair: medium skin tone +1F468 1F3FE 200D 1F9BC ; fully-qualified # 👨🏾‍🦼 E12.0 man in motorized wheelchair: medium-dark skin tone +1F468 1F3FF 200D 1F9BC ; fully-qualified # 👨🏿‍🦼 E12.0 man in motorized wheelchair: dark skin tone +1F468 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👨‍🦼‍➡️ E15.1 man in motorized wheelchair facing right +1F468 200D 1F9BC 200D 27A1 ; minimally-qualified # 👨‍🦼‍➡ E15.1 man in motorized wheelchair facing right +1F468 1F3FB 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👨🏻‍🦼‍➡️ E15.1 man in motorized wheelchair facing right: light skin tone +1F468 1F3FB 200D 1F9BC 200D 27A1 ; minimally-qualified # 👨🏻‍🦼‍➡ E15.1 man in motorized wheelchair facing right: light skin tone +1F468 1F3FC 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👨🏼‍🦼‍➡️ E15.1 man in motorized wheelchair facing right: medium-light skin tone +1F468 1F3FC 200D 1F9BC 200D 27A1 ; minimally-qualified # 👨🏼‍🦼‍➡ E15.1 man in motorized wheelchair facing right: medium-light skin tone +1F468 1F3FD 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👨🏽‍🦼‍➡️ E15.1 man in motorized wheelchair facing right: medium skin tone +1F468 1F3FD 200D 1F9BC 200D 27A1 ; minimally-qualified # 👨🏽‍🦼‍➡ E15.1 man in motorized wheelchair facing right: medium skin tone +1F468 1F3FE 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👨🏾‍🦼‍➡️ E15.1 man in motorized wheelchair facing right: medium-dark skin tone +1F468 1F3FE 200D 1F9BC 200D 27A1 ; minimally-qualified # 👨🏾‍🦼‍➡ E15.1 man in motorized wheelchair facing right: medium-dark skin tone +1F468 1F3FF 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👨🏿‍🦼‍➡️ E15.1 man in motorized wheelchair facing right: dark skin tone +1F468 1F3FF 200D 1F9BC 200D 27A1 ; minimally-qualified # 👨🏿‍🦼‍➡ E15.1 man in motorized wheelchair facing right: dark skin tone +1F469 200D 1F9BC ; fully-qualified # 👩‍🦼 E12.0 woman in motorized wheelchair +1F469 1F3FB 200D 1F9BC ; fully-qualified # 👩🏻‍🦼 E12.0 woman in motorized wheelchair: light skin tone +1F469 1F3FC 200D 1F9BC ; fully-qualified # 👩🏼‍🦼 E12.0 woman in motorized wheelchair: medium-light skin tone +1F469 1F3FD 200D 1F9BC ; fully-qualified # 👩🏽‍🦼 E12.0 woman in motorized wheelchair: medium skin tone +1F469 1F3FE 200D 1F9BC ; fully-qualified # 👩🏾‍🦼 E12.0 woman in motorized wheelchair: medium-dark skin tone +1F469 1F3FF 200D 1F9BC ; fully-qualified # 👩🏿‍🦼 E12.0 woman in motorized wheelchair: dark skin tone +1F469 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👩‍🦼‍➡️ E15.1 woman in motorized wheelchair facing right +1F469 200D 1F9BC 200D 27A1 ; minimally-qualified # 👩‍🦼‍➡ E15.1 woman in motorized wheelchair facing right +1F469 1F3FB 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👩🏻‍🦼‍➡️ E15.1 woman in motorized wheelchair facing right: light skin tone +1F469 1F3FB 200D 1F9BC 200D 27A1 ; minimally-qualified # 👩🏻‍🦼‍➡ E15.1 woman in motorized wheelchair facing right: light skin tone +1F469 1F3FC 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👩🏼‍🦼‍➡️ E15.1 woman in motorized wheelchair facing right: medium-light skin tone +1F469 1F3FC 200D 1F9BC 200D 27A1 ; minimally-qualified # 👩🏼‍🦼‍➡ E15.1 woman in motorized wheelchair facing right: medium-light skin tone +1F469 1F3FD 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👩🏽‍🦼‍➡️ E15.1 woman in motorized wheelchair facing right: medium skin tone +1F469 1F3FD 200D 1F9BC 200D 27A1 ; minimally-qualified # 👩🏽‍🦼‍➡ E15.1 woman in motorized wheelchair facing right: medium skin tone +1F469 1F3FE 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👩🏾‍🦼‍➡️ E15.1 woman in motorized wheelchair facing right: medium-dark skin tone +1F469 1F3FE 200D 1F9BC 200D 27A1 ; minimally-qualified # 👩🏾‍🦼‍➡ E15.1 woman in motorized wheelchair facing right: medium-dark skin tone +1F469 1F3FF 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👩🏿‍🦼‍➡️ E15.1 woman in motorized wheelchair facing right: dark skin tone +1F469 1F3FF 200D 1F9BC 200D 27A1 ; minimally-qualified # 👩🏿‍🦼‍➡ E15.1 woman in motorized wheelchair facing right: dark skin tone +1F9D1 200D 1F9BD ; fully-qualified # 🧑‍🦽 E12.1 person in manual wheelchair +1F9D1 1F3FB 200D 1F9BD ; fully-qualified # 🧑🏻‍🦽 E12.1 person in manual wheelchair: light skin tone +1F9D1 1F3FC 200D 1F9BD ; fully-qualified # 🧑🏼‍🦽 E12.1 person in manual wheelchair: medium-light skin tone +1F9D1 1F3FD 200D 1F9BD ; fully-qualified # 🧑🏽‍🦽 E12.1 person in manual wheelchair: medium skin tone +1F9D1 1F3FE 200D 1F9BD ; fully-qualified # 🧑🏾‍🦽 E12.1 person in manual wheelchair: medium-dark skin tone +1F9D1 1F3FF 200D 1F9BD ; fully-qualified # 🧑🏿‍🦽 E12.1 person in manual wheelchair: dark skin tone +1F9D1 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 🧑‍🦽‍➡️ E15.1 person in manual wheelchair facing right +1F9D1 200D 1F9BD 200D 27A1 ; minimally-qualified # 🧑‍🦽‍➡ E15.1 person in manual wheelchair facing right +1F9D1 1F3FB 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 🧑🏻‍🦽‍➡️ E15.1 person in manual wheelchair facing right: light skin tone +1F9D1 1F3FB 200D 1F9BD 200D 27A1 ; minimally-qualified # 🧑🏻‍🦽‍➡ E15.1 person in manual wheelchair facing right: light skin tone +1F9D1 1F3FC 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 🧑🏼‍🦽‍➡️ E15.1 person in manual wheelchair facing right: medium-light skin tone +1F9D1 1F3FC 200D 1F9BD 200D 27A1 ; minimally-qualified # 🧑🏼‍🦽‍➡ E15.1 person in manual wheelchair facing right: medium-light skin tone +1F9D1 1F3FD 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 🧑🏽‍🦽‍➡️ E15.1 person in manual wheelchair facing right: medium skin tone +1F9D1 1F3FD 200D 1F9BD 200D 27A1 ; minimally-qualified # 🧑🏽‍🦽‍➡ E15.1 person in manual wheelchair facing right: medium skin tone +1F9D1 1F3FE 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 🧑🏾‍🦽‍➡️ E15.1 person in manual wheelchair facing right: medium-dark skin tone +1F9D1 1F3FE 200D 1F9BD 200D 27A1 ; minimally-qualified # 🧑🏾‍🦽‍➡ E15.1 person in manual wheelchair facing right: medium-dark skin tone +1F9D1 1F3FF 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 🧑🏿‍🦽‍➡️ E15.1 person in manual wheelchair facing right: dark skin tone +1F9D1 1F3FF 200D 1F9BD 200D 27A1 ; minimally-qualified # 🧑🏿‍🦽‍➡ E15.1 person in manual wheelchair facing right: dark skin tone +1F468 200D 1F9BD ; fully-qualified # 👨‍🦽 E12.0 man in manual wheelchair +1F468 1F3FB 200D 1F9BD ; fully-qualified # 👨🏻‍🦽 E12.0 man in manual wheelchair: light skin tone +1F468 1F3FC 200D 1F9BD ; fully-qualified # 👨🏼‍🦽 E12.0 man in manual wheelchair: medium-light skin tone +1F468 1F3FD 200D 1F9BD ; fully-qualified # 👨🏽‍🦽 E12.0 man in manual wheelchair: medium skin tone +1F468 1F3FE 200D 1F9BD ; fully-qualified # 👨🏾‍🦽 E12.0 man in manual wheelchair: medium-dark skin tone +1F468 1F3FF 200D 1F9BD ; fully-qualified # 👨🏿‍🦽 E12.0 man in manual wheelchair: dark skin tone +1F468 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👨‍🦽‍➡️ E15.1 man in manual wheelchair facing right +1F468 200D 1F9BD 200D 27A1 ; minimally-qualified # 👨‍🦽‍➡ E15.1 man in manual wheelchair facing right +1F468 1F3FB 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👨🏻‍🦽‍➡️ E15.1 man in manual wheelchair facing right: light skin tone +1F468 1F3FB 200D 1F9BD 200D 27A1 ; minimally-qualified # 👨🏻‍🦽‍➡ E15.1 man in manual wheelchair facing right: light skin tone +1F468 1F3FC 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👨🏼‍🦽‍➡️ E15.1 man in manual wheelchair facing right: medium-light skin tone +1F468 1F3FC 200D 1F9BD 200D 27A1 ; minimally-qualified # 👨🏼‍🦽‍➡ E15.1 man in manual wheelchair facing right: medium-light skin tone +1F468 1F3FD 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👨🏽‍🦽‍➡️ E15.1 man in manual wheelchair facing right: medium skin tone +1F468 1F3FD 200D 1F9BD 200D 27A1 ; minimally-qualified # 👨🏽‍🦽‍➡ E15.1 man in manual wheelchair facing right: medium skin tone +1F468 1F3FE 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👨🏾‍🦽‍➡️ E15.1 man in manual wheelchair facing right: medium-dark skin tone +1F468 1F3FE 200D 1F9BD 200D 27A1 ; minimally-qualified # 👨🏾‍🦽‍➡ E15.1 man in manual wheelchair facing right: medium-dark skin tone +1F468 1F3FF 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👨🏿‍🦽‍➡️ E15.1 man in manual wheelchair facing right: dark skin tone +1F468 1F3FF 200D 1F9BD 200D 27A1 ; minimally-qualified # 👨🏿‍🦽‍➡ E15.1 man in manual wheelchair facing right: dark skin tone +1F469 200D 1F9BD ; fully-qualified # 👩‍🦽 E12.0 woman in manual wheelchair +1F469 1F3FB 200D 1F9BD ; fully-qualified # 👩🏻‍🦽 E12.0 woman in manual wheelchair: light skin tone +1F469 1F3FC 200D 1F9BD ; fully-qualified # 👩🏼‍🦽 E12.0 woman in manual wheelchair: medium-light skin tone +1F469 1F3FD 200D 1F9BD ; fully-qualified # 👩🏽‍🦽 E12.0 woman in manual wheelchair: medium skin tone +1F469 1F3FE 200D 1F9BD ; fully-qualified # 👩🏾‍🦽 E12.0 woman in manual wheelchair: medium-dark skin tone +1F469 1F3FF 200D 1F9BD ; fully-qualified # 👩🏿‍🦽 E12.0 woman in manual wheelchair: dark skin tone +1F469 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👩‍🦽‍➡️ E15.1 woman in manual wheelchair facing right +1F469 200D 1F9BD 200D 27A1 ; minimally-qualified # 👩‍🦽‍➡ E15.1 woman in manual wheelchair facing right +1F469 1F3FB 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👩🏻‍🦽‍➡️ E15.1 woman in manual wheelchair facing right: light skin tone +1F469 1F3FB 200D 1F9BD 200D 27A1 ; minimally-qualified # 👩🏻‍🦽‍➡ E15.1 woman in manual wheelchair facing right: light skin tone +1F469 1F3FC 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👩🏼‍🦽‍➡️ E15.1 woman in manual wheelchair facing right: medium-light skin tone +1F469 1F3FC 200D 1F9BD 200D 27A1 ; minimally-qualified # 👩🏼‍🦽‍➡ E15.1 woman in manual wheelchair facing right: medium-light skin tone +1F469 1F3FD 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👩🏽‍🦽‍➡️ E15.1 woman in manual wheelchair facing right: medium skin tone +1F469 1F3FD 200D 1F9BD 200D 27A1 ; minimally-qualified # 👩🏽‍🦽‍➡ E15.1 woman in manual wheelchair facing right: medium skin tone +1F469 1F3FE 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👩🏾‍🦽‍➡️ E15.1 woman in manual wheelchair facing right: medium-dark skin tone +1F469 1F3FE 200D 1F9BD 200D 27A1 ; minimally-qualified # 👩🏾‍🦽‍➡ E15.1 woman in manual wheelchair facing right: medium-dark skin tone +1F469 1F3FF 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👩🏿‍🦽‍➡️ E15.1 woman in manual wheelchair facing right: dark skin tone +1F469 1F3FF 200D 1F9BD 200D 27A1 ; minimally-qualified # 👩🏿‍🦽‍➡ E15.1 woman in manual wheelchair facing right: dark skin tone +1F3C3 ; fully-qualified # 🏃 E0.6 person running +1F3C3 1F3FB ; fully-qualified # 🏃🏻 E1.0 person running: light skin tone +1F3C3 1F3FC ; fully-qualified # 🏃🏼 E1.0 person running: medium-light skin tone +1F3C3 1F3FD ; fully-qualified # 🏃🏽 E1.0 person running: medium skin tone +1F3C3 1F3FE ; fully-qualified # 🏃🏾 E1.0 person running: medium-dark skin tone +1F3C3 1F3FF ; fully-qualified # 🏃🏿 E1.0 person running: dark skin tone +1F3C3 200D 2642 FE0F ; fully-qualified # 🏃‍♂️ E4.0 man running +1F3C3 200D 2642 ; minimally-qualified # 🏃‍♂ E4.0 man running +1F3C3 1F3FB 200D 2642 FE0F ; fully-qualified # 🏃🏻‍♂️ E4.0 man running: light skin tone +1F3C3 1F3FB 200D 2642 ; minimally-qualified # 🏃🏻‍♂ E4.0 man running: light skin tone +1F3C3 1F3FC 200D 2642 FE0F ; fully-qualified # 🏃🏼‍♂️ E4.0 man running: medium-light skin tone +1F3C3 1F3FC 200D 2642 ; minimally-qualified # 🏃🏼‍♂ E4.0 man running: medium-light skin tone +1F3C3 1F3FD 200D 2642 FE0F ; fully-qualified # 🏃🏽‍♂️ E4.0 man running: medium skin tone +1F3C3 1F3FD 200D 2642 ; minimally-qualified # 🏃🏽‍♂ E4.0 man running: medium skin tone +1F3C3 1F3FE 200D 2642 FE0F ; fully-qualified # 🏃🏾‍♂️ E4.0 man running: medium-dark skin tone +1F3C3 1F3FE 200D 2642 ; minimally-qualified # 🏃🏾‍♂ E4.0 man running: medium-dark skin tone +1F3C3 1F3FF 200D 2642 FE0F ; fully-qualified # 🏃🏿‍♂️ E4.0 man running: dark skin tone +1F3C3 1F3FF 200D 2642 ; minimally-qualified # 🏃🏿‍♂ E4.0 man running: dark skin tone +1F3C3 200D 2640 FE0F ; fully-qualified # 🏃‍♀️ E4.0 woman running +1F3C3 200D 2640 ; minimally-qualified # 🏃‍♀ E4.0 woman running +1F3C3 1F3FB 200D 2640 FE0F ; fully-qualified # 🏃🏻‍♀️ E4.0 woman running: light skin tone +1F3C3 1F3FB 200D 2640 ; minimally-qualified # 🏃🏻‍♀ E4.0 woman running: light skin tone +1F3C3 1F3FC 200D 2640 FE0F ; fully-qualified # 🏃🏼‍♀️ E4.0 woman running: medium-light skin tone +1F3C3 1F3FC 200D 2640 ; minimally-qualified # 🏃🏼‍♀ E4.0 woman running: medium-light skin tone +1F3C3 1F3FD 200D 2640 FE0F ; fully-qualified # 🏃🏽‍♀️ E4.0 woman running: medium skin tone +1F3C3 1F3FD 200D 2640 ; minimally-qualified # 🏃🏽‍♀ E4.0 woman running: medium skin tone +1F3C3 1F3FE 200D 2640 FE0F ; fully-qualified # 🏃🏾‍♀️ E4.0 woman running: medium-dark skin tone +1F3C3 1F3FE 200D 2640 ; minimally-qualified # 🏃🏾‍♀ E4.0 woman running: medium-dark skin tone +1F3C3 1F3FF 200D 2640 FE0F ; fully-qualified # 🏃🏿‍♀️ E4.0 woman running: dark skin tone +1F3C3 1F3FF 200D 2640 ; minimally-qualified # 🏃🏿‍♀ E4.0 woman running: dark skin tone +1F3C3 200D 27A1 FE0F ; fully-qualified # 🏃‍➡️ E15.1 person running facing right +1F3C3 200D 27A1 ; minimally-qualified # 🏃‍➡ E15.1 person running facing right +1F3C3 1F3FB 200D 27A1 FE0F ; fully-qualified # 🏃🏻‍➡️ E15.1 person running facing right: light skin tone +1F3C3 1F3FB 200D 27A1 ; minimally-qualified # 🏃🏻‍➡ E15.1 person running facing right: light skin tone +1F3C3 1F3FC 200D 27A1 FE0F ; fully-qualified # 🏃🏼‍➡️ E15.1 person running facing right: medium-light skin tone +1F3C3 1F3FC 200D 27A1 ; minimally-qualified # 🏃🏼‍➡ E15.1 person running facing right: medium-light skin tone +1F3C3 1F3FD 200D 27A1 FE0F ; fully-qualified # 🏃🏽‍➡️ E15.1 person running facing right: medium skin tone +1F3C3 1F3FD 200D 27A1 ; minimally-qualified # 🏃🏽‍➡ E15.1 person running facing right: medium skin tone +1F3C3 1F3FE 200D 27A1 FE0F ; fully-qualified # 🏃🏾‍➡️ E15.1 person running facing right: medium-dark skin tone +1F3C3 1F3FE 200D 27A1 ; minimally-qualified # 🏃🏾‍➡ E15.1 person running facing right: medium-dark skin tone +1F3C3 1F3FF 200D 27A1 FE0F ; fully-qualified # 🏃🏿‍➡️ E15.1 person running facing right: dark skin tone +1F3C3 1F3FF 200D 27A1 ; minimally-qualified # 🏃🏿‍➡ E15.1 person running facing right: dark skin tone +1F3C3 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃‍♀️‍➡️ E15.1 woman running facing right +1F3C3 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🏃‍♀‍➡️ E15.1 woman running facing right +1F3C3 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🏃‍♀️‍➡ E15.1 woman running facing right +1F3C3 200D 2640 200D 27A1 ; minimally-qualified # 🏃‍♀‍➡ E15.1 woman running facing right +1F3C3 1F3FB 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃🏻‍♀️‍➡️ E15.1 woman running facing right: light skin tone +1F3C3 1F3FB 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🏃🏻‍♀‍➡️ E15.1 woman running facing right: light skin tone +1F3C3 1F3FB 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🏃🏻‍♀️‍➡ E15.1 woman running facing right: light skin tone +1F3C3 1F3FB 200D 2640 200D 27A1 ; minimally-qualified # 🏃🏻‍♀‍➡ E15.1 woman running facing right: light skin tone +1F3C3 1F3FC 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃🏼‍♀️‍➡️ E15.1 woman running facing right: medium-light skin tone +1F3C3 1F3FC 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🏃🏼‍♀‍➡️ E15.1 woman running facing right: medium-light skin tone +1F3C3 1F3FC 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🏃🏼‍♀️‍➡ E15.1 woman running facing right: medium-light skin tone +1F3C3 1F3FC 200D 2640 200D 27A1 ; minimally-qualified # 🏃🏼‍♀‍➡ E15.1 woman running facing right: medium-light skin tone +1F3C3 1F3FD 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃🏽‍♀️‍➡️ E15.1 woman running facing right: medium skin tone +1F3C3 1F3FD 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🏃🏽‍♀‍➡️ E15.1 woman running facing right: medium skin tone +1F3C3 1F3FD 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🏃🏽‍♀️‍➡ E15.1 woman running facing right: medium skin tone +1F3C3 1F3FD 200D 2640 200D 27A1 ; minimally-qualified # 🏃🏽‍♀‍➡ E15.1 woman running facing right: medium skin tone +1F3C3 1F3FE 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃🏾‍♀️‍➡️ E15.1 woman running facing right: medium-dark skin tone +1F3C3 1F3FE 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🏃🏾‍♀‍➡️ E15.1 woman running facing right: medium-dark skin tone +1F3C3 1F3FE 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🏃🏾‍♀️‍➡ E15.1 woman running facing right: medium-dark skin tone +1F3C3 1F3FE 200D 2640 200D 27A1 ; minimally-qualified # 🏃🏾‍♀‍➡ E15.1 woman running facing right: medium-dark skin tone +1F3C3 1F3FF 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃🏿‍♀️‍➡️ E15.1 woman running facing right: dark skin tone +1F3C3 1F3FF 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🏃🏿‍♀‍➡️ E15.1 woman running facing right: dark skin tone +1F3C3 1F3FF 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🏃🏿‍♀️‍➡ E15.1 woman running facing right: dark skin tone +1F3C3 1F3FF 200D 2640 200D 27A1 ; minimally-qualified # 🏃🏿‍♀‍➡ E15.1 woman running facing right: dark skin tone +1F3C3 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃‍♂️‍➡️ E15.1 man running facing right +1F3C3 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🏃‍♂‍➡️ E15.1 man running facing right +1F3C3 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🏃‍♂️‍➡ E15.1 man running facing right +1F3C3 200D 2642 200D 27A1 ; minimally-qualified # 🏃‍♂‍➡ E15.1 man running facing right +1F3C3 1F3FB 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃🏻‍♂️‍➡️ E15.1 man running facing right: light skin tone +1F3C3 1F3FB 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🏃🏻‍♂‍➡️ E15.1 man running facing right: light skin tone +1F3C3 1F3FB 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🏃🏻‍♂️‍➡ E15.1 man running facing right: light skin tone +1F3C3 1F3FB 200D 2642 200D 27A1 ; minimally-qualified # 🏃🏻‍♂‍➡ E15.1 man running facing right: light skin tone +1F3C3 1F3FC 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃🏼‍♂️‍➡️ E15.1 man running facing right: medium-light skin tone +1F3C3 1F3FC 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🏃🏼‍♂‍➡️ E15.1 man running facing right: medium-light skin tone +1F3C3 1F3FC 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🏃🏼‍♂️‍➡ E15.1 man running facing right: medium-light skin tone +1F3C3 1F3FC 200D 2642 200D 27A1 ; minimally-qualified # 🏃🏼‍♂‍➡ E15.1 man running facing right: medium-light skin tone +1F3C3 1F3FD 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃🏽‍♂️‍➡️ E15.1 man running facing right: medium skin tone +1F3C3 1F3FD 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🏃🏽‍♂‍➡️ E15.1 man running facing right: medium skin tone +1F3C3 1F3FD 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🏃🏽‍♂️‍➡ E15.1 man running facing right: medium skin tone +1F3C3 1F3FD 200D 2642 200D 27A1 ; minimally-qualified # 🏃🏽‍♂‍➡ E15.1 man running facing right: medium skin tone +1F3C3 1F3FE 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃🏾‍♂️‍➡️ E15.1 man running facing right: medium-dark skin tone +1F3C3 1F3FE 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🏃🏾‍♂‍➡️ E15.1 man running facing right: medium-dark skin tone +1F3C3 1F3FE 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🏃🏾‍♂️‍➡ E15.1 man running facing right: medium-dark skin tone +1F3C3 1F3FE 200D 2642 200D 27A1 ; minimally-qualified # 🏃🏾‍♂‍➡ E15.1 man running facing right: medium-dark skin tone +1F3C3 1F3FF 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃🏿‍♂️‍➡️ E15.1 man running facing right: dark skin tone +1F3C3 1F3FF 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🏃🏿‍♂‍➡️ E15.1 man running facing right: dark skin tone +1F3C3 1F3FF 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🏃🏿‍♂️‍➡ E15.1 man running facing right: dark skin tone +1F3C3 1F3FF 200D 2642 200D 27A1 ; minimally-qualified # 🏃🏿‍♂‍➡ E15.1 man running facing right: dark skin tone +1F483 ; fully-qualified # 💃 E0.6 woman dancing +1F483 1F3FB ; fully-qualified # 💃🏻 E1.0 woman dancing: light skin tone +1F483 1F3FC ; fully-qualified # 💃🏼 E1.0 woman dancing: medium-light skin tone +1F483 1F3FD ; fully-qualified # 💃🏽 E1.0 woman dancing: medium skin tone +1F483 1F3FE ; fully-qualified # 💃🏾 E1.0 woman dancing: medium-dark skin tone +1F483 1F3FF ; fully-qualified # 💃🏿 E1.0 woman dancing: dark skin tone +1F57A ; fully-qualified # 🕺 E3.0 man dancing +1F57A 1F3FB ; fully-qualified # 🕺🏻 E3.0 man dancing: light skin tone +1F57A 1F3FC ; fully-qualified # 🕺🏼 E3.0 man dancing: medium-light skin tone +1F57A 1F3FD ; fully-qualified # 🕺🏽 E3.0 man dancing: medium skin tone +1F57A 1F3FE ; fully-qualified # 🕺🏾 E3.0 man dancing: medium-dark skin tone +1F57A 1F3FF ; fully-qualified # 🕺🏿 E3.0 man dancing: dark skin tone +1F574 FE0F ; fully-qualified # 🕴️ E0.7 person in suit levitating +1F574 ; unqualified # 🕴 E0.7 person in suit levitating +1F574 1F3FB ; fully-qualified # 🕴🏻 E4.0 person in suit levitating: light skin tone +1F574 1F3FC ; fully-qualified # 🕴🏼 E4.0 person in suit levitating: medium-light skin tone +1F574 1F3FD ; fully-qualified # 🕴🏽 E4.0 person in suit levitating: medium skin tone +1F574 1F3FE ; fully-qualified # 🕴🏾 E4.0 person in suit levitating: medium-dark skin tone +1F574 1F3FF ; fully-qualified # 🕴🏿 E4.0 person in suit levitating: dark skin tone +1F46F ; fully-qualified # 👯 E0.6 people with bunny ears +1F46F 200D 2642 FE0F ; fully-qualified # 👯‍♂️ E4.0 men with bunny ears +1F46F 200D 2642 ; minimally-qualified # 👯‍♂ E4.0 men with bunny ears +1F46F 200D 2640 FE0F ; fully-qualified # 👯‍♀️ E4.0 women with bunny ears +1F46F 200D 2640 ; minimally-qualified # 👯‍♀ E4.0 women with bunny ears +1F9D6 ; fully-qualified # 🧖 E5.0 person in steamy room +1F9D6 1F3FB ; fully-qualified # 🧖🏻 E5.0 person in steamy room: light skin tone +1F9D6 1F3FC ; fully-qualified # 🧖🏼 E5.0 person in steamy room: medium-light skin tone +1F9D6 1F3FD ; fully-qualified # 🧖🏽 E5.0 person in steamy room: medium skin tone +1F9D6 1F3FE ; fully-qualified # 🧖🏾 E5.0 person in steamy room: medium-dark skin tone +1F9D6 1F3FF ; fully-qualified # 🧖🏿 E5.0 person in steamy room: dark skin tone +1F9D6 200D 2642 FE0F ; fully-qualified # 🧖‍♂️ E5.0 man in steamy room +1F9D6 200D 2642 ; minimally-qualified # 🧖‍♂ E5.0 man in steamy room +1F9D6 1F3FB 200D 2642 FE0F ; fully-qualified # 🧖🏻‍♂️ E5.0 man in steamy room: light skin tone +1F9D6 1F3FB 200D 2642 ; minimally-qualified # 🧖🏻‍♂ E5.0 man in steamy room: light skin tone +1F9D6 1F3FC 200D 2642 FE0F ; fully-qualified # 🧖🏼‍♂️ E5.0 man in steamy room: medium-light skin tone +1F9D6 1F3FC 200D 2642 ; minimally-qualified # 🧖🏼‍♂ E5.0 man in steamy room: medium-light skin tone +1F9D6 1F3FD 200D 2642 FE0F ; fully-qualified # 🧖🏽‍♂️ E5.0 man in steamy room: medium skin tone +1F9D6 1F3FD 200D 2642 ; minimally-qualified # 🧖🏽‍♂ E5.0 man in steamy room: medium skin tone +1F9D6 1F3FE 200D 2642 FE0F ; fully-qualified # 🧖🏾‍♂️ E5.0 man in steamy room: medium-dark skin tone +1F9D6 1F3FE 200D 2642 ; minimally-qualified # 🧖🏾‍♂ E5.0 man in steamy room: medium-dark skin tone +1F9D6 1F3FF 200D 2642 FE0F ; fully-qualified # 🧖🏿‍♂️ E5.0 man in steamy room: dark skin tone +1F9D6 1F3FF 200D 2642 ; minimally-qualified # 🧖🏿‍♂ E5.0 man in steamy room: dark skin tone +1F9D6 200D 2640 FE0F ; fully-qualified # 🧖‍♀️ E5.0 woman in steamy room +1F9D6 200D 2640 ; minimally-qualified # 🧖‍♀ E5.0 woman in steamy room +1F9D6 1F3FB 200D 2640 FE0F ; fully-qualified # 🧖🏻‍♀️ E5.0 woman in steamy room: light skin tone +1F9D6 1F3FB 200D 2640 ; minimally-qualified # 🧖🏻‍♀ E5.0 woman in steamy room: light skin tone +1F9D6 1F3FC 200D 2640 FE0F ; fully-qualified # 🧖🏼‍♀️ E5.0 woman in steamy room: medium-light skin tone +1F9D6 1F3FC 200D 2640 ; minimally-qualified # 🧖🏼‍♀ E5.0 woman in steamy room: medium-light skin tone +1F9D6 1F3FD 200D 2640 FE0F ; fully-qualified # 🧖🏽‍♀️ E5.0 woman in steamy room: medium skin tone +1F9D6 1F3FD 200D 2640 ; minimally-qualified # 🧖🏽‍♀ E5.0 woman in steamy room: medium skin tone +1F9D6 1F3FE 200D 2640 FE0F ; fully-qualified # 🧖🏾‍♀️ E5.0 woman in steamy room: medium-dark skin tone +1F9D6 1F3FE 200D 2640 ; minimally-qualified # 🧖🏾‍♀ E5.0 woman in steamy room: medium-dark skin tone +1F9D6 1F3FF 200D 2640 FE0F ; fully-qualified # 🧖🏿‍♀️ E5.0 woman in steamy room: dark skin tone +1F9D6 1F3FF 200D 2640 ; minimally-qualified # 🧖🏿‍♀ E5.0 woman in steamy room: dark skin tone +1F9D7 ; fully-qualified # 🧗 E5.0 person climbing +1F9D7 1F3FB ; fully-qualified # 🧗🏻 E5.0 person climbing: light skin tone +1F9D7 1F3FC ; fully-qualified # 🧗🏼 E5.0 person climbing: medium-light skin tone +1F9D7 1F3FD ; fully-qualified # 🧗🏽 E5.0 person climbing: medium skin tone +1F9D7 1F3FE ; fully-qualified # 🧗🏾 E5.0 person climbing: medium-dark skin tone +1F9D7 1F3FF ; fully-qualified # 🧗🏿 E5.0 person climbing: dark skin tone +1F9D7 200D 2642 FE0F ; fully-qualified # 🧗‍♂️ E5.0 man climbing +1F9D7 200D 2642 ; minimally-qualified # 🧗‍♂ E5.0 man climbing +1F9D7 1F3FB 200D 2642 FE0F ; fully-qualified # 🧗🏻‍♂️ E5.0 man climbing: light skin tone +1F9D7 1F3FB 200D 2642 ; minimally-qualified # 🧗🏻‍♂ E5.0 man climbing: light skin tone +1F9D7 1F3FC 200D 2642 FE0F ; fully-qualified # 🧗🏼‍♂️ E5.0 man climbing: medium-light skin tone +1F9D7 1F3FC 200D 2642 ; minimally-qualified # 🧗🏼‍♂ E5.0 man climbing: medium-light skin tone +1F9D7 1F3FD 200D 2642 FE0F ; fully-qualified # 🧗🏽‍♂️ E5.0 man climbing: medium skin tone +1F9D7 1F3FD 200D 2642 ; minimally-qualified # 🧗🏽‍♂ E5.0 man climbing: medium skin tone +1F9D7 1F3FE 200D 2642 FE0F ; fully-qualified # 🧗🏾‍♂️ E5.0 man climbing: medium-dark skin tone +1F9D7 1F3FE 200D 2642 ; minimally-qualified # 🧗🏾‍♂ E5.0 man climbing: medium-dark skin tone +1F9D7 1F3FF 200D 2642 FE0F ; fully-qualified # 🧗🏿‍♂️ E5.0 man climbing: dark skin tone +1F9D7 1F3FF 200D 2642 ; minimally-qualified # 🧗🏿‍♂ E5.0 man climbing: dark skin tone +1F9D7 200D 2640 FE0F ; fully-qualified # 🧗‍♀️ E5.0 woman climbing +1F9D7 200D 2640 ; minimally-qualified # 🧗‍♀ E5.0 woman climbing +1F9D7 1F3FB 200D 2640 FE0F ; fully-qualified # 🧗🏻‍♀️ E5.0 woman climbing: light skin tone +1F9D7 1F3FB 200D 2640 ; minimally-qualified # 🧗🏻‍♀ E5.0 woman climbing: light skin tone +1F9D7 1F3FC 200D 2640 FE0F ; fully-qualified # 🧗🏼‍♀️ E5.0 woman climbing: medium-light skin tone +1F9D7 1F3FC 200D 2640 ; minimally-qualified # 🧗🏼‍♀ E5.0 woman climbing: medium-light skin tone +1F9D7 1F3FD 200D 2640 FE0F ; fully-qualified # 🧗🏽‍♀️ E5.0 woman climbing: medium skin tone +1F9D7 1F3FD 200D 2640 ; minimally-qualified # 🧗🏽‍♀ E5.0 woman climbing: medium skin tone +1F9D7 1F3FE 200D 2640 FE0F ; fully-qualified # 🧗🏾‍♀️ E5.0 woman climbing: medium-dark skin tone +1F9D7 1F3FE 200D 2640 ; minimally-qualified # 🧗🏾‍♀ E5.0 woman climbing: medium-dark skin tone +1F9D7 1F3FF 200D 2640 FE0F ; fully-qualified # 🧗🏿‍♀️ E5.0 woman climbing: dark skin tone +1F9D7 1F3FF 200D 2640 ; minimally-qualified # 🧗🏿‍♀ E5.0 woman climbing: dark skin tone + +# subgroup: person-sport +1F93A ; fully-qualified # 🤺 E3.0 person fencing +1F3C7 ; fully-qualified # 🏇 E1.0 horse racing +1F3C7 1F3FB ; fully-qualified # 🏇🏻 E1.0 horse racing: light skin tone +1F3C7 1F3FC ; fully-qualified # 🏇🏼 E1.0 horse racing: medium-light skin tone +1F3C7 1F3FD ; fully-qualified # 🏇🏽 E1.0 horse racing: medium skin tone +1F3C7 1F3FE ; fully-qualified # 🏇🏾 E1.0 horse racing: medium-dark skin tone +1F3C7 1F3FF ; fully-qualified # 🏇🏿 E1.0 horse racing: dark skin tone +26F7 FE0F ; fully-qualified # ⛷️ E0.7 skier +26F7 ; unqualified # ⛷ E0.7 skier +1F3C2 ; fully-qualified # 🏂 E0.6 snowboarder +1F3C2 1F3FB ; fully-qualified # 🏂🏻 E1.0 snowboarder: light skin tone +1F3C2 1F3FC ; fully-qualified # 🏂🏼 E1.0 snowboarder: medium-light skin tone +1F3C2 1F3FD ; fully-qualified # 🏂🏽 E1.0 snowboarder: medium skin tone +1F3C2 1F3FE ; fully-qualified # 🏂🏾 E1.0 snowboarder: medium-dark skin tone +1F3C2 1F3FF ; fully-qualified # 🏂🏿 E1.0 snowboarder: dark skin tone +1F3CC FE0F ; fully-qualified # 🏌️ E0.7 person golfing +1F3CC ; unqualified # 🏌 E0.7 person golfing +1F3CC 1F3FB ; fully-qualified # 🏌🏻 E4.0 person golfing: light skin tone +1F3CC 1F3FC ; fully-qualified # 🏌🏼 E4.0 person golfing: medium-light skin tone +1F3CC 1F3FD ; fully-qualified # 🏌🏽 E4.0 person golfing: medium skin tone +1F3CC 1F3FE ; fully-qualified # 🏌🏾 E4.0 person golfing: medium-dark skin tone +1F3CC 1F3FF ; fully-qualified # 🏌🏿 E4.0 person golfing: dark skin tone +1F3CC FE0F 200D 2642 FE0F ; fully-qualified # 🏌️‍♂️ E4.0 man golfing +1F3CC 200D 2642 FE0F ; unqualified # 🏌‍♂️ E4.0 man golfing +1F3CC FE0F 200D 2642 ; minimally-qualified # 🏌️‍♂ E4.0 man golfing +1F3CC 200D 2642 ; unqualified # 🏌‍♂ E4.0 man golfing +1F3CC 1F3FB 200D 2642 FE0F ; fully-qualified # 🏌🏻‍♂️ E4.0 man golfing: light skin tone +1F3CC 1F3FB 200D 2642 ; minimally-qualified # 🏌🏻‍♂ E4.0 man golfing: light skin tone +1F3CC 1F3FC 200D 2642 FE0F ; fully-qualified # 🏌🏼‍♂️ E4.0 man golfing: medium-light skin tone +1F3CC 1F3FC 200D 2642 ; minimally-qualified # 🏌🏼‍♂ E4.0 man golfing: medium-light skin tone +1F3CC 1F3FD 200D 2642 FE0F ; fully-qualified # 🏌🏽‍♂️ E4.0 man golfing: medium skin tone +1F3CC 1F3FD 200D 2642 ; minimally-qualified # 🏌🏽‍♂ E4.0 man golfing: medium skin tone +1F3CC 1F3FE 200D 2642 FE0F ; fully-qualified # 🏌🏾‍♂️ E4.0 man golfing: medium-dark skin tone +1F3CC 1F3FE 200D 2642 ; minimally-qualified # 🏌🏾‍♂ E4.0 man golfing: medium-dark skin tone +1F3CC 1F3FF 200D 2642 FE0F ; fully-qualified # 🏌🏿‍♂️ E4.0 man golfing: dark skin tone +1F3CC 1F3FF 200D 2642 ; minimally-qualified # 🏌🏿‍♂ E4.0 man golfing: dark skin tone +1F3CC FE0F 200D 2640 FE0F ; fully-qualified # 🏌️‍♀️ E4.0 woman golfing +1F3CC 200D 2640 FE0F ; unqualified # 🏌‍♀️ E4.0 woman golfing +1F3CC FE0F 200D 2640 ; minimally-qualified # 🏌️‍♀ E4.0 woman golfing +1F3CC 200D 2640 ; unqualified # 🏌‍♀ E4.0 woman golfing +1F3CC 1F3FB 200D 2640 FE0F ; fully-qualified # 🏌🏻‍♀️ E4.0 woman golfing: light skin tone +1F3CC 1F3FB 200D 2640 ; minimally-qualified # 🏌🏻‍♀ E4.0 woman golfing: light skin tone +1F3CC 1F3FC 200D 2640 FE0F ; fully-qualified # 🏌🏼‍♀️ E4.0 woman golfing: medium-light skin tone +1F3CC 1F3FC 200D 2640 ; minimally-qualified # 🏌🏼‍♀ E4.0 woman golfing: medium-light skin tone +1F3CC 1F3FD 200D 2640 FE0F ; fully-qualified # 🏌🏽‍♀️ E4.0 woman golfing: medium skin tone +1F3CC 1F3FD 200D 2640 ; minimally-qualified # 🏌🏽‍♀ E4.0 woman golfing: medium skin tone +1F3CC 1F3FE 200D 2640 FE0F ; fully-qualified # 🏌🏾‍♀️ E4.0 woman golfing: medium-dark skin tone +1F3CC 1F3FE 200D 2640 ; minimally-qualified # 🏌🏾‍♀ E4.0 woman golfing: medium-dark skin tone +1F3CC 1F3FF 200D 2640 FE0F ; fully-qualified # 🏌🏿‍♀️ E4.0 woman golfing: dark skin tone +1F3CC 1F3FF 200D 2640 ; minimally-qualified # 🏌🏿‍♀ E4.0 woman golfing: dark skin tone +1F3C4 ; fully-qualified # 🏄 E0.6 person surfing +1F3C4 1F3FB ; fully-qualified # 🏄🏻 E1.0 person surfing: light skin tone +1F3C4 1F3FC ; fully-qualified # 🏄🏼 E1.0 person surfing: medium-light skin tone +1F3C4 1F3FD ; fully-qualified # 🏄🏽 E1.0 person surfing: medium skin tone +1F3C4 1F3FE ; fully-qualified # 🏄🏾 E1.0 person surfing: medium-dark skin tone +1F3C4 1F3FF ; fully-qualified # 🏄🏿 E1.0 person surfing: dark skin tone +1F3C4 200D 2642 FE0F ; fully-qualified # 🏄‍♂️ E4.0 man surfing +1F3C4 200D 2642 ; minimally-qualified # 🏄‍♂ E4.0 man surfing +1F3C4 1F3FB 200D 2642 FE0F ; fully-qualified # 🏄🏻‍♂️ E4.0 man surfing: light skin tone +1F3C4 1F3FB 200D 2642 ; minimally-qualified # 🏄🏻‍♂ E4.0 man surfing: light skin tone +1F3C4 1F3FC 200D 2642 FE0F ; fully-qualified # 🏄🏼‍♂️ E4.0 man surfing: medium-light skin tone +1F3C4 1F3FC 200D 2642 ; minimally-qualified # 🏄🏼‍♂ E4.0 man surfing: medium-light skin tone +1F3C4 1F3FD 200D 2642 FE0F ; fully-qualified # 🏄🏽‍♂️ E4.0 man surfing: medium skin tone +1F3C4 1F3FD 200D 2642 ; minimally-qualified # 🏄🏽‍♂ E4.0 man surfing: medium skin tone +1F3C4 1F3FE 200D 2642 FE0F ; fully-qualified # 🏄🏾‍♂️ E4.0 man surfing: medium-dark skin tone +1F3C4 1F3FE 200D 2642 ; minimally-qualified # 🏄🏾‍♂ E4.0 man surfing: medium-dark skin tone +1F3C4 1F3FF 200D 2642 FE0F ; fully-qualified # 🏄🏿‍♂️ E4.0 man surfing: dark skin tone +1F3C4 1F3FF 200D 2642 ; minimally-qualified # 🏄🏿‍♂ E4.0 man surfing: dark skin tone +1F3C4 200D 2640 FE0F ; fully-qualified # 🏄‍♀️ E4.0 woman surfing +1F3C4 200D 2640 ; minimally-qualified # 🏄‍♀ E4.0 woman surfing +1F3C4 1F3FB 200D 2640 FE0F ; fully-qualified # 🏄🏻‍♀️ E4.0 woman surfing: light skin tone +1F3C4 1F3FB 200D 2640 ; minimally-qualified # 🏄🏻‍♀ E4.0 woman surfing: light skin tone +1F3C4 1F3FC 200D 2640 FE0F ; fully-qualified # 🏄🏼‍♀️ E4.0 woman surfing: medium-light skin tone +1F3C4 1F3FC 200D 2640 ; minimally-qualified # 🏄🏼‍♀ E4.0 woman surfing: medium-light skin tone +1F3C4 1F3FD 200D 2640 FE0F ; fully-qualified # 🏄🏽‍♀️ E4.0 woman surfing: medium skin tone +1F3C4 1F3FD 200D 2640 ; minimally-qualified # 🏄🏽‍♀ E4.0 woman surfing: medium skin tone +1F3C4 1F3FE 200D 2640 FE0F ; fully-qualified # 🏄🏾‍♀️ E4.0 woman surfing: medium-dark skin tone +1F3C4 1F3FE 200D 2640 ; minimally-qualified # 🏄🏾‍♀ E4.0 woman surfing: medium-dark skin tone +1F3C4 1F3FF 200D 2640 FE0F ; fully-qualified # 🏄🏿‍♀️ E4.0 woman surfing: dark skin tone +1F3C4 1F3FF 200D 2640 ; minimally-qualified # 🏄🏿‍♀ E4.0 woman surfing: dark skin tone +1F6A3 ; fully-qualified # 🚣 E1.0 person rowing boat +1F6A3 1F3FB ; fully-qualified # 🚣🏻 E1.0 person rowing boat: light skin tone +1F6A3 1F3FC ; fully-qualified # 🚣🏼 E1.0 person rowing boat: medium-light skin tone +1F6A3 1F3FD ; fully-qualified # 🚣🏽 E1.0 person rowing boat: medium skin tone +1F6A3 1F3FE ; fully-qualified # 🚣🏾 E1.0 person rowing boat: medium-dark skin tone +1F6A3 1F3FF ; fully-qualified # 🚣🏿 E1.0 person rowing boat: dark skin tone +1F6A3 200D 2642 FE0F ; fully-qualified # 🚣‍♂️ E4.0 man rowing boat +1F6A3 200D 2642 ; minimally-qualified # 🚣‍♂ E4.0 man rowing boat +1F6A3 1F3FB 200D 2642 FE0F ; fully-qualified # 🚣🏻‍♂️ E4.0 man rowing boat: light skin tone +1F6A3 1F3FB 200D 2642 ; minimally-qualified # 🚣🏻‍♂ E4.0 man rowing boat: light skin tone +1F6A3 1F3FC 200D 2642 FE0F ; fully-qualified # 🚣🏼‍♂️ E4.0 man rowing boat: medium-light skin tone +1F6A3 1F3FC 200D 2642 ; minimally-qualified # 🚣🏼‍♂ E4.0 man rowing boat: medium-light skin tone +1F6A3 1F3FD 200D 2642 FE0F ; fully-qualified # 🚣🏽‍♂️ E4.0 man rowing boat: medium skin tone +1F6A3 1F3FD 200D 2642 ; minimally-qualified # 🚣🏽‍♂ E4.0 man rowing boat: medium skin tone +1F6A3 1F3FE 200D 2642 FE0F ; fully-qualified # 🚣🏾‍♂️ E4.0 man rowing boat: medium-dark skin tone +1F6A3 1F3FE 200D 2642 ; minimally-qualified # 🚣🏾‍♂ E4.0 man rowing boat: medium-dark skin tone +1F6A3 1F3FF 200D 2642 FE0F ; fully-qualified # 🚣🏿‍♂️ E4.0 man rowing boat: dark skin tone +1F6A3 1F3FF 200D 2642 ; minimally-qualified # 🚣🏿‍♂ E4.0 man rowing boat: dark skin tone +1F6A3 200D 2640 FE0F ; fully-qualified # 🚣‍♀️ E4.0 woman rowing boat +1F6A3 200D 2640 ; minimally-qualified # 🚣‍♀ E4.0 woman rowing boat +1F6A3 1F3FB 200D 2640 FE0F ; fully-qualified # 🚣🏻‍♀️ E4.0 woman rowing boat: light skin tone +1F6A3 1F3FB 200D 2640 ; minimally-qualified # 🚣🏻‍♀ E4.0 woman rowing boat: light skin tone +1F6A3 1F3FC 200D 2640 FE0F ; fully-qualified # 🚣🏼‍♀️ E4.0 woman rowing boat: medium-light skin tone +1F6A3 1F3FC 200D 2640 ; minimally-qualified # 🚣🏼‍♀ E4.0 woman rowing boat: medium-light skin tone +1F6A3 1F3FD 200D 2640 FE0F ; fully-qualified # 🚣🏽‍♀️ E4.0 woman rowing boat: medium skin tone +1F6A3 1F3FD 200D 2640 ; minimally-qualified # 🚣🏽‍♀ E4.0 woman rowing boat: medium skin tone +1F6A3 1F3FE 200D 2640 FE0F ; fully-qualified # 🚣🏾‍♀️ E4.0 woman rowing boat: medium-dark skin tone +1F6A3 1F3FE 200D 2640 ; minimally-qualified # 🚣🏾‍♀ E4.0 woman rowing boat: medium-dark skin tone +1F6A3 1F3FF 200D 2640 FE0F ; fully-qualified # 🚣🏿‍♀️ E4.0 woman rowing boat: dark skin tone +1F6A3 1F3FF 200D 2640 ; minimally-qualified # 🚣🏿‍♀ E4.0 woman rowing boat: dark skin tone +1F3CA ; fully-qualified # 🏊 E0.6 person swimming +1F3CA 1F3FB ; fully-qualified # 🏊🏻 E1.0 person swimming: light skin tone +1F3CA 1F3FC ; fully-qualified # 🏊🏼 E1.0 person swimming: medium-light skin tone +1F3CA 1F3FD ; fully-qualified # 🏊🏽 E1.0 person swimming: medium skin tone +1F3CA 1F3FE ; fully-qualified # 🏊🏾 E1.0 person swimming: medium-dark skin tone +1F3CA 1F3FF ; fully-qualified # 🏊🏿 E1.0 person swimming: dark skin tone +1F3CA 200D 2642 FE0F ; fully-qualified # 🏊‍♂️ E4.0 man swimming +1F3CA 200D 2642 ; minimally-qualified # 🏊‍♂ E4.0 man swimming +1F3CA 1F3FB 200D 2642 FE0F ; fully-qualified # 🏊🏻‍♂️ E4.0 man swimming: light skin tone +1F3CA 1F3FB 200D 2642 ; minimally-qualified # 🏊🏻‍♂ E4.0 man swimming: light skin tone +1F3CA 1F3FC 200D 2642 FE0F ; fully-qualified # 🏊🏼‍♂️ E4.0 man swimming: medium-light skin tone +1F3CA 1F3FC 200D 2642 ; minimally-qualified # 🏊🏼‍♂ E4.0 man swimming: medium-light skin tone +1F3CA 1F3FD 200D 2642 FE0F ; fully-qualified # 🏊🏽‍♂️ E4.0 man swimming: medium skin tone +1F3CA 1F3FD 200D 2642 ; minimally-qualified # 🏊🏽‍♂ E4.0 man swimming: medium skin tone +1F3CA 1F3FE 200D 2642 FE0F ; fully-qualified # 🏊🏾‍♂️ E4.0 man swimming: medium-dark skin tone +1F3CA 1F3FE 200D 2642 ; minimally-qualified # 🏊🏾‍♂ E4.0 man swimming: medium-dark skin tone +1F3CA 1F3FF 200D 2642 FE0F ; fully-qualified # 🏊🏿‍♂️ E4.0 man swimming: dark skin tone +1F3CA 1F3FF 200D 2642 ; minimally-qualified # 🏊🏿‍♂ E4.0 man swimming: dark skin tone +1F3CA 200D 2640 FE0F ; fully-qualified # 🏊‍♀️ E4.0 woman swimming +1F3CA 200D 2640 ; minimally-qualified # 🏊‍♀ E4.0 woman swimming +1F3CA 1F3FB 200D 2640 FE0F ; fully-qualified # 🏊🏻‍♀️ E4.0 woman swimming: light skin tone +1F3CA 1F3FB 200D 2640 ; minimally-qualified # 🏊🏻‍♀ E4.0 woman swimming: light skin tone +1F3CA 1F3FC 200D 2640 FE0F ; fully-qualified # 🏊🏼‍♀️ E4.0 woman swimming: medium-light skin tone +1F3CA 1F3FC 200D 2640 ; minimally-qualified # 🏊🏼‍♀ E4.0 woman swimming: medium-light skin tone +1F3CA 1F3FD 200D 2640 FE0F ; fully-qualified # 🏊🏽‍♀️ E4.0 woman swimming: medium skin tone +1F3CA 1F3FD 200D 2640 ; minimally-qualified # 🏊🏽‍♀ E4.0 woman swimming: medium skin tone +1F3CA 1F3FE 200D 2640 FE0F ; fully-qualified # 🏊🏾‍♀️ E4.0 woman swimming: medium-dark skin tone +1F3CA 1F3FE 200D 2640 ; minimally-qualified # 🏊🏾‍♀ E4.0 woman swimming: medium-dark skin tone +1F3CA 1F3FF 200D 2640 FE0F ; fully-qualified # 🏊🏿‍♀️ E4.0 woman swimming: dark skin tone +1F3CA 1F3FF 200D 2640 ; minimally-qualified # 🏊🏿‍♀ E4.0 woman swimming: dark skin tone +26F9 FE0F ; fully-qualified # ⛹️ E0.7 person bouncing ball +26F9 ; unqualified # ⛹ E0.7 person bouncing ball +26F9 1F3FB ; fully-qualified # ⛹🏻 E2.0 person bouncing ball: light skin tone +26F9 1F3FC ; fully-qualified # ⛹🏼 E2.0 person bouncing ball: medium-light skin tone +26F9 1F3FD ; fully-qualified # ⛹🏽 E2.0 person bouncing ball: medium skin tone +26F9 1F3FE ; fully-qualified # ⛹🏾 E2.0 person bouncing ball: medium-dark skin tone +26F9 1F3FF ; fully-qualified # ⛹🏿 E2.0 person bouncing ball: dark skin tone +26F9 FE0F 200D 2642 FE0F ; fully-qualified # ⛹️‍♂️ E4.0 man bouncing ball +26F9 200D 2642 FE0F ; unqualified # ⛹‍♂️ E4.0 man bouncing ball +26F9 FE0F 200D 2642 ; minimally-qualified # ⛹️‍♂ E4.0 man bouncing ball +26F9 200D 2642 ; unqualified # ⛹‍♂ E4.0 man bouncing ball +26F9 1F3FB 200D 2642 FE0F ; fully-qualified # ⛹🏻‍♂️ E4.0 man bouncing ball: light skin tone +26F9 1F3FB 200D 2642 ; minimally-qualified # ⛹🏻‍♂ E4.0 man bouncing ball: light skin tone +26F9 1F3FC 200D 2642 FE0F ; fully-qualified # ⛹🏼‍♂️ E4.0 man bouncing ball: medium-light skin tone +26F9 1F3FC 200D 2642 ; minimally-qualified # ⛹🏼‍♂ E4.0 man bouncing ball: medium-light skin tone +26F9 1F3FD 200D 2642 FE0F ; fully-qualified # ⛹🏽‍♂️ E4.0 man bouncing ball: medium skin tone +26F9 1F3FD 200D 2642 ; minimally-qualified # ⛹🏽‍♂ E4.0 man bouncing ball: medium skin tone +26F9 1F3FE 200D 2642 FE0F ; fully-qualified # ⛹🏾‍♂️ E4.0 man bouncing ball: medium-dark skin tone +26F9 1F3FE 200D 2642 ; minimally-qualified # ⛹🏾‍♂ E4.0 man bouncing ball: medium-dark skin tone +26F9 1F3FF 200D 2642 FE0F ; fully-qualified # ⛹🏿‍♂️ E4.0 man bouncing ball: dark skin tone +26F9 1F3FF 200D 2642 ; minimally-qualified # ⛹🏿‍♂ E4.0 man bouncing ball: dark skin tone +26F9 FE0F 200D 2640 FE0F ; fully-qualified # ⛹️‍♀️ E4.0 woman bouncing ball +26F9 200D 2640 FE0F ; unqualified # ⛹‍♀️ E4.0 woman bouncing ball +26F9 FE0F 200D 2640 ; minimally-qualified # ⛹️‍♀ E4.0 woman bouncing ball +26F9 200D 2640 ; unqualified # ⛹‍♀ E4.0 woman bouncing ball +26F9 1F3FB 200D 2640 FE0F ; fully-qualified # ⛹🏻‍♀️ E4.0 woman bouncing ball: light skin tone +26F9 1F3FB 200D 2640 ; minimally-qualified # ⛹🏻‍♀ E4.0 woman bouncing ball: light skin tone +26F9 1F3FC 200D 2640 FE0F ; fully-qualified # ⛹🏼‍♀️ E4.0 woman bouncing ball: medium-light skin tone +26F9 1F3FC 200D 2640 ; minimally-qualified # ⛹🏼‍♀ E4.0 woman bouncing ball: medium-light skin tone +26F9 1F3FD 200D 2640 FE0F ; fully-qualified # ⛹🏽‍♀️ E4.0 woman bouncing ball: medium skin tone +26F9 1F3FD 200D 2640 ; minimally-qualified # ⛹🏽‍♀ E4.0 woman bouncing ball: medium skin tone +26F9 1F3FE 200D 2640 FE0F ; fully-qualified # ⛹🏾‍♀️ E4.0 woman bouncing ball: medium-dark skin tone +26F9 1F3FE 200D 2640 ; minimally-qualified # ⛹🏾‍♀ E4.0 woman bouncing ball: medium-dark skin tone +26F9 1F3FF 200D 2640 FE0F ; fully-qualified # ⛹🏿‍♀️ E4.0 woman bouncing ball: dark skin tone +26F9 1F3FF 200D 2640 ; minimally-qualified # ⛹🏿‍♀ E4.0 woman bouncing ball: dark skin tone +1F3CB FE0F ; fully-qualified # 🏋️ E0.7 person lifting weights +1F3CB ; unqualified # 🏋 E0.7 person lifting weights +1F3CB 1F3FB ; fully-qualified # 🏋🏻 E2.0 person lifting weights: light skin tone +1F3CB 1F3FC ; fully-qualified # 🏋🏼 E2.0 person lifting weights: medium-light skin tone +1F3CB 1F3FD ; fully-qualified # 🏋🏽 E2.0 person lifting weights: medium skin tone +1F3CB 1F3FE ; fully-qualified # 🏋🏾 E2.0 person lifting weights: medium-dark skin tone +1F3CB 1F3FF ; fully-qualified # 🏋🏿 E2.0 person lifting weights: dark skin tone +1F3CB FE0F 200D 2642 FE0F ; fully-qualified # 🏋️‍♂️ E4.0 man lifting weights +1F3CB 200D 2642 FE0F ; unqualified # 🏋‍♂️ E4.0 man lifting weights +1F3CB FE0F 200D 2642 ; minimally-qualified # 🏋️‍♂ E4.0 man lifting weights +1F3CB 200D 2642 ; unqualified # 🏋‍♂ E4.0 man lifting weights +1F3CB 1F3FB 200D 2642 FE0F ; fully-qualified # 🏋🏻‍♂️ E4.0 man lifting weights: light skin tone +1F3CB 1F3FB 200D 2642 ; minimally-qualified # 🏋🏻‍♂ E4.0 man lifting weights: light skin tone +1F3CB 1F3FC 200D 2642 FE0F ; fully-qualified # 🏋🏼‍♂️ E4.0 man lifting weights: medium-light skin tone +1F3CB 1F3FC 200D 2642 ; minimally-qualified # 🏋🏼‍♂ E4.0 man lifting weights: medium-light skin tone +1F3CB 1F3FD 200D 2642 FE0F ; fully-qualified # 🏋🏽‍♂️ E4.0 man lifting weights: medium skin tone +1F3CB 1F3FD 200D 2642 ; minimally-qualified # 🏋🏽‍♂ E4.0 man lifting weights: medium skin tone +1F3CB 1F3FE 200D 2642 FE0F ; fully-qualified # 🏋🏾‍♂️ E4.0 man lifting weights: medium-dark skin tone +1F3CB 1F3FE 200D 2642 ; minimally-qualified # 🏋🏾‍♂ E4.0 man lifting weights: medium-dark skin tone +1F3CB 1F3FF 200D 2642 FE0F ; fully-qualified # 🏋🏿‍♂️ E4.0 man lifting weights: dark skin tone +1F3CB 1F3FF 200D 2642 ; minimally-qualified # 🏋🏿‍♂ E4.0 man lifting weights: dark skin tone +1F3CB FE0F 200D 2640 FE0F ; fully-qualified # 🏋️‍♀️ E4.0 woman lifting weights +1F3CB 200D 2640 FE0F ; unqualified # 🏋‍♀️ E4.0 woman lifting weights +1F3CB FE0F 200D 2640 ; minimally-qualified # 🏋️‍♀ E4.0 woman lifting weights +1F3CB 200D 2640 ; unqualified # 🏋‍♀ E4.0 woman lifting weights +1F3CB 1F3FB 200D 2640 FE0F ; fully-qualified # 🏋🏻‍♀️ E4.0 woman lifting weights: light skin tone +1F3CB 1F3FB 200D 2640 ; minimally-qualified # 🏋🏻‍♀ E4.0 woman lifting weights: light skin tone +1F3CB 1F3FC 200D 2640 FE0F ; fully-qualified # 🏋🏼‍♀️ E4.0 woman lifting weights: medium-light skin tone +1F3CB 1F3FC 200D 2640 ; minimally-qualified # 🏋🏼‍♀ E4.0 woman lifting weights: medium-light skin tone +1F3CB 1F3FD 200D 2640 FE0F ; fully-qualified # 🏋🏽‍♀️ E4.0 woman lifting weights: medium skin tone +1F3CB 1F3FD 200D 2640 ; minimally-qualified # 🏋🏽‍♀ E4.0 woman lifting weights: medium skin tone +1F3CB 1F3FE 200D 2640 FE0F ; fully-qualified # 🏋🏾‍♀️ E4.0 woman lifting weights: medium-dark skin tone +1F3CB 1F3FE 200D 2640 ; minimally-qualified # 🏋🏾‍♀ E4.0 woman lifting weights: medium-dark skin tone +1F3CB 1F3FF 200D 2640 FE0F ; fully-qualified # 🏋🏿‍♀️ E4.0 woman lifting weights: dark skin tone +1F3CB 1F3FF 200D 2640 ; minimally-qualified # 🏋🏿‍♀ E4.0 woman lifting weights: dark skin tone +1F6B4 ; fully-qualified # 🚴 E1.0 person biking +1F6B4 1F3FB ; fully-qualified # 🚴🏻 E1.0 person biking: light skin tone +1F6B4 1F3FC ; fully-qualified # 🚴🏼 E1.0 person biking: medium-light skin tone +1F6B4 1F3FD ; fully-qualified # 🚴🏽 E1.0 person biking: medium skin tone +1F6B4 1F3FE ; fully-qualified # 🚴🏾 E1.0 person biking: medium-dark skin tone +1F6B4 1F3FF ; fully-qualified # 🚴🏿 E1.0 person biking: dark skin tone +1F6B4 200D 2642 FE0F ; fully-qualified # 🚴‍♂️ E4.0 man biking +1F6B4 200D 2642 ; minimally-qualified # 🚴‍♂ E4.0 man biking +1F6B4 1F3FB 200D 2642 FE0F ; fully-qualified # 🚴🏻‍♂️ E4.0 man biking: light skin tone +1F6B4 1F3FB 200D 2642 ; minimally-qualified # 🚴🏻‍♂ E4.0 man biking: light skin tone +1F6B4 1F3FC 200D 2642 FE0F ; fully-qualified # 🚴🏼‍♂️ E4.0 man biking: medium-light skin tone +1F6B4 1F3FC 200D 2642 ; minimally-qualified # 🚴🏼‍♂ E4.0 man biking: medium-light skin tone +1F6B4 1F3FD 200D 2642 FE0F ; fully-qualified # 🚴🏽‍♂️ E4.0 man biking: medium skin tone +1F6B4 1F3FD 200D 2642 ; minimally-qualified # 🚴🏽‍♂ E4.0 man biking: medium skin tone +1F6B4 1F3FE 200D 2642 FE0F ; fully-qualified # 🚴🏾‍♂️ E4.0 man biking: medium-dark skin tone +1F6B4 1F3FE 200D 2642 ; minimally-qualified # 🚴🏾‍♂ E4.0 man biking: medium-dark skin tone +1F6B4 1F3FF 200D 2642 FE0F ; fully-qualified # 🚴🏿‍♂️ E4.0 man biking: dark skin tone +1F6B4 1F3FF 200D 2642 ; minimally-qualified # 🚴🏿‍♂ E4.0 man biking: dark skin tone +1F6B4 200D 2640 FE0F ; fully-qualified # 🚴‍♀️ E4.0 woman biking +1F6B4 200D 2640 ; minimally-qualified # 🚴‍♀ E4.0 woman biking +1F6B4 1F3FB 200D 2640 FE0F ; fully-qualified # 🚴🏻‍♀️ E4.0 woman biking: light skin tone +1F6B4 1F3FB 200D 2640 ; minimally-qualified # 🚴🏻‍♀ E4.0 woman biking: light skin tone +1F6B4 1F3FC 200D 2640 FE0F ; fully-qualified # 🚴🏼‍♀️ E4.0 woman biking: medium-light skin tone +1F6B4 1F3FC 200D 2640 ; minimally-qualified # 🚴🏼‍♀ E4.0 woman biking: medium-light skin tone +1F6B4 1F3FD 200D 2640 FE0F ; fully-qualified # 🚴🏽‍♀️ E4.0 woman biking: medium skin tone +1F6B4 1F3FD 200D 2640 ; minimally-qualified # 🚴🏽‍♀ E4.0 woman biking: medium skin tone +1F6B4 1F3FE 200D 2640 FE0F ; fully-qualified # 🚴🏾‍♀️ E4.0 woman biking: medium-dark skin tone +1F6B4 1F3FE 200D 2640 ; minimally-qualified # 🚴🏾‍♀ E4.0 woman biking: medium-dark skin tone +1F6B4 1F3FF 200D 2640 FE0F ; fully-qualified # 🚴🏿‍♀️ E4.0 woman biking: dark skin tone +1F6B4 1F3FF 200D 2640 ; minimally-qualified # 🚴🏿‍♀ E4.0 woman biking: dark skin tone +1F6B5 ; fully-qualified # 🚵 E1.0 person mountain biking +1F6B5 1F3FB ; fully-qualified # 🚵🏻 E1.0 person mountain biking: light skin tone +1F6B5 1F3FC ; fully-qualified # 🚵🏼 E1.0 person mountain biking: medium-light skin tone +1F6B5 1F3FD ; fully-qualified # 🚵🏽 E1.0 person mountain biking: medium skin tone +1F6B5 1F3FE ; fully-qualified # 🚵🏾 E1.0 person mountain biking: medium-dark skin tone +1F6B5 1F3FF ; fully-qualified # 🚵🏿 E1.0 person mountain biking: dark skin tone +1F6B5 200D 2642 FE0F ; fully-qualified # 🚵‍♂️ E4.0 man mountain biking +1F6B5 200D 2642 ; minimally-qualified # 🚵‍♂ E4.0 man mountain biking +1F6B5 1F3FB 200D 2642 FE0F ; fully-qualified # 🚵🏻‍♂️ E4.0 man mountain biking: light skin tone +1F6B5 1F3FB 200D 2642 ; minimally-qualified # 🚵🏻‍♂ E4.0 man mountain biking: light skin tone +1F6B5 1F3FC 200D 2642 FE0F ; fully-qualified # 🚵🏼‍♂️ E4.0 man mountain biking: medium-light skin tone +1F6B5 1F3FC 200D 2642 ; minimally-qualified # 🚵🏼‍♂ E4.0 man mountain biking: medium-light skin tone +1F6B5 1F3FD 200D 2642 FE0F ; fully-qualified # 🚵🏽‍♂️ E4.0 man mountain biking: medium skin tone +1F6B5 1F3FD 200D 2642 ; minimally-qualified # 🚵🏽‍♂ E4.0 man mountain biking: medium skin tone +1F6B5 1F3FE 200D 2642 FE0F ; fully-qualified # 🚵🏾‍♂️ E4.0 man mountain biking: medium-dark skin tone +1F6B5 1F3FE 200D 2642 ; minimally-qualified # 🚵🏾‍♂ E4.0 man mountain biking: medium-dark skin tone +1F6B5 1F3FF 200D 2642 FE0F ; fully-qualified # 🚵🏿‍♂️ E4.0 man mountain biking: dark skin tone +1F6B5 1F3FF 200D 2642 ; minimally-qualified # 🚵🏿‍♂ E4.0 man mountain biking: dark skin tone +1F6B5 200D 2640 FE0F ; fully-qualified # 🚵‍♀️ E4.0 woman mountain biking +1F6B5 200D 2640 ; minimally-qualified # 🚵‍♀ E4.0 woman mountain biking +1F6B5 1F3FB 200D 2640 FE0F ; fully-qualified # 🚵🏻‍♀️ E4.0 woman mountain biking: light skin tone +1F6B5 1F3FB 200D 2640 ; minimally-qualified # 🚵🏻‍♀ E4.0 woman mountain biking: light skin tone +1F6B5 1F3FC 200D 2640 FE0F ; fully-qualified # 🚵🏼‍♀️ E4.0 woman mountain biking: medium-light skin tone +1F6B5 1F3FC 200D 2640 ; minimally-qualified # 🚵🏼‍♀ E4.0 woman mountain biking: medium-light skin tone +1F6B5 1F3FD 200D 2640 FE0F ; fully-qualified # 🚵🏽‍♀️ E4.0 woman mountain biking: medium skin tone +1F6B5 1F3FD 200D 2640 ; minimally-qualified # 🚵🏽‍♀ E4.0 woman mountain biking: medium skin tone +1F6B5 1F3FE 200D 2640 FE0F ; fully-qualified # 🚵🏾‍♀️ E4.0 woman mountain biking: medium-dark skin tone +1F6B5 1F3FE 200D 2640 ; minimally-qualified # 🚵🏾‍♀ E4.0 woman mountain biking: medium-dark skin tone +1F6B5 1F3FF 200D 2640 FE0F ; fully-qualified # 🚵🏿‍♀️ E4.0 woman mountain biking: dark skin tone +1F6B5 1F3FF 200D 2640 ; minimally-qualified # 🚵🏿‍♀ E4.0 woman mountain biking: dark skin tone +1F938 ; fully-qualified # 🤸 E3.0 person cartwheeling +1F938 1F3FB ; fully-qualified # 🤸🏻 E3.0 person cartwheeling: light skin tone +1F938 1F3FC ; fully-qualified # 🤸🏼 E3.0 person cartwheeling: medium-light skin tone +1F938 1F3FD ; fully-qualified # 🤸🏽 E3.0 person cartwheeling: medium skin tone +1F938 1F3FE ; fully-qualified # 🤸🏾 E3.0 person cartwheeling: medium-dark skin tone +1F938 1F3FF ; fully-qualified # 🤸🏿 E3.0 person cartwheeling: dark skin tone +1F938 200D 2642 FE0F ; fully-qualified # 🤸‍♂️ E4.0 man cartwheeling +1F938 200D 2642 ; minimally-qualified # 🤸‍♂ E4.0 man cartwheeling +1F938 1F3FB 200D 2642 FE0F ; fully-qualified # 🤸🏻‍♂️ E4.0 man cartwheeling: light skin tone +1F938 1F3FB 200D 2642 ; minimally-qualified # 🤸🏻‍♂ E4.0 man cartwheeling: light skin tone +1F938 1F3FC 200D 2642 FE0F ; fully-qualified # 🤸🏼‍♂️ E4.0 man cartwheeling: medium-light skin tone +1F938 1F3FC 200D 2642 ; minimally-qualified # 🤸🏼‍♂ E4.0 man cartwheeling: medium-light skin tone +1F938 1F3FD 200D 2642 FE0F ; fully-qualified # 🤸🏽‍♂️ E4.0 man cartwheeling: medium skin tone +1F938 1F3FD 200D 2642 ; minimally-qualified # 🤸🏽‍♂ E4.0 man cartwheeling: medium skin tone +1F938 1F3FE 200D 2642 FE0F ; fully-qualified # 🤸🏾‍♂️ E4.0 man cartwheeling: medium-dark skin tone +1F938 1F3FE 200D 2642 ; minimally-qualified # 🤸🏾‍♂ E4.0 man cartwheeling: medium-dark skin tone +1F938 1F3FF 200D 2642 FE0F ; fully-qualified # 🤸🏿‍♂️ E4.0 man cartwheeling: dark skin tone +1F938 1F3FF 200D 2642 ; minimally-qualified # 🤸🏿‍♂ E4.0 man cartwheeling: dark skin tone +1F938 200D 2640 FE0F ; fully-qualified # 🤸‍♀️ E4.0 woman cartwheeling +1F938 200D 2640 ; minimally-qualified # 🤸‍♀ E4.0 woman cartwheeling +1F938 1F3FB 200D 2640 FE0F ; fully-qualified # 🤸🏻‍♀️ E4.0 woman cartwheeling: light skin tone +1F938 1F3FB 200D 2640 ; minimally-qualified # 🤸🏻‍♀ E4.0 woman cartwheeling: light skin tone +1F938 1F3FC 200D 2640 FE0F ; fully-qualified # 🤸🏼‍♀️ E4.0 woman cartwheeling: medium-light skin tone +1F938 1F3FC 200D 2640 ; minimally-qualified # 🤸🏼‍♀ E4.0 woman cartwheeling: medium-light skin tone +1F938 1F3FD 200D 2640 FE0F ; fully-qualified # 🤸🏽‍♀️ E4.0 woman cartwheeling: medium skin tone +1F938 1F3FD 200D 2640 ; minimally-qualified # 🤸🏽‍♀ E4.0 woman cartwheeling: medium skin tone +1F938 1F3FE 200D 2640 FE0F ; fully-qualified # 🤸🏾‍♀️ E4.0 woman cartwheeling: medium-dark skin tone +1F938 1F3FE 200D 2640 ; minimally-qualified # 🤸🏾‍♀ E4.0 woman cartwheeling: medium-dark skin tone +1F938 1F3FF 200D 2640 FE0F ; fully-qualified # 🤸🏿‍♀️ E4.0 woman cartwheeling: dark skin tone +1F938 1F3FF 200D 2640 ; minimally-qualified # 🤸🏿‍♀ E4.0 woman cartwheeling: dark skin tone +1F93C ; fully-qualified # 🤼 E3.0 people wrestling +1F93C 200D 2642 FE0F ; fully-qualified # 🤼‍♂️ E4.0 men wrestling +1F93C 200D 2642 ; minimally-qualified # 🤼‍♂ E4.0 men wrestling +1F93C 200D 2640 FE0F ; fully-qualified # 🤼‍♀️ E4.0 women wrestling +1F93C 200D 2640 ; minimally-qualified # 🤼‍♀ E4.0 women wrestling +1F93D ; fully-qualified # 🤽 E3.0 person playing water polo +1F93D 1F3FB ; fully-qualified # 🤽🏻 E3.0 person playing water polo: light skin tone +1F93D 1F3FC ; fully-qualified # 🤽🏼 E3.0 person playing water polo: medium-light skin tone +1F93D 1F3FD ; fully-qualified # 🤽🏽 E3.0 person playing water polo: medium skin tone +1F93D 1F3FE ; fully-qualified # 🤽🏾 E3.0 person playing water polo: medium-dark skin tone +1F93D 1F3FF ; fully-qualified # 🤽🏿 E3.0 person playing water polo: dark skin tone +1F93D 200D 2642 FE0F ; fully-qualified # 🤽‍♂️ E4.0 man playing water polo +1F93D 200D 2642 ; minimally-qualified # 🤽‍♂ E4.0 man playing water polo +1F93D 1F3FB 200D 2642 FE0F ; fully-qualified # 🤽🏻‍♂️ E4.0 man playing water polo: light skin tone +1F93D 1F3FB 200D 2642 ; minimally-qualified # 🤽🏻‍♂ E4.0 man playing water polo: light skin tone +1F93D 1F3FC 200D 2642 FE0F ; fully-qualified # 🤽🏼‍♂️ E4.0 man playing water polo: medium-light skin tone +1F93D 1F3FC 200D 2642 ; minimally-qualified # 🤽🏼‍♂ E4.0 man playing water polo: medium-light skin tone +1F93D 1F3FD 200D 2642 FE0F ; fully-qualified # 🤽🏽‍♂️ E4.0 man playing water polo: medium skin tone +1F93D 1F3FD 200D 2642 ; minimally-qualified # 🤽🏽‍♂ E4.0 man playing water polo: medium skin tone +1F93D 1F3FE 200D 2642 FE0F ; fully-qualified # 🤽🏾‍♂️ E4.0 man playing water polo: medium-dark skin tone +1F93D 1F3FE 200D 2642 ; minimally-qualified # 🤽🏾‍♂ E4.0 man playing water polo: medium-dark skin tone +1F93D 1F3FF 200D 2642 FE0F ; fully-qualified # 🤽🏿‍♂️ E4.0 man playing water polo: dark skin tone +1F93D 1F3FF 200D 2642 ; minimally-qualified # 🤽🏿‍♂ E4.0 man playing water polo: dark skin tone +1F93D 200D 2640 FE0F ; fully-qualified # 🤽‍♀️ E4.0 woman playing water polo +1F93D 200D 2640 ; minimally-qualified # 🤽‍♀ E4.0 woman playing water polo +1F93D 1F3FB 200D 2640 FE0F ; fully-qualified # 🤽🏻‍♀️ E4.0 woman playing water polo: light skin tone +1F93D 1F3FB 200D 2640 ; minimally-qualified # 🤽🏻‍♀ E4.0 woman playing water polo: light skin tone +1F93D 1F3FC 200D 2640 FE0F ; fully-qualified # 🤽🏼‍♀️ E4.0 woman playing water polo: medium-light skin tone +1F93D 1F3FC 200D 2640 ; minimally-qualified # 🤽🏼‍♀ E4.0 woman playing water polo: medium-light skin tone +1F93D 1F3FD 200D 2640 FE0F ; fully-qualified # 🤽🏽‍♀️ E4.0 woman playing water polo: medium skin tone +1F93D 1F3FD 200D 2640 ; minimally-qualified # 🤽🏽‍♀ E4.0 woman playing water polo: medium skin tone +1F93D 1F3FE 200D 2640 FE0F ; fully-qualified # 🤽🏾‍♀️ E4.0 woman playing water polo: medium-dark skin tone +1F93D 1F3FE 200D 2640 ; minimally-qualified # 🤽🏾‍♀ E4.0 woman playing water polo: medium-dark skin tone +1F93D 1F3FF 200D 2640 FE0F ; fully-qualified # 🤽🏿‍♀️ E4.0 woman playing water polo: dark skin tone +1F93D 1F3FF 200D 2640 ; minimally-qualified # 🤽🏿‍♀ E4.0 woman playing water polo: dark skin tone +1F93E ; fully-qualified # 🤾 E3.0 person playing handball +1F93E 1F3FB ; fully-qualified # 🤾🏻 E3.0 person playing handball: light skin tone +1F93E 1F3FC ; fully-qualified # 🤾🏼 E3.0 person playing handball: medium-light skin tone +1F93E 1F3FD ; fully-qualified # 🤾🏽 E3.0 person playing handball: medium skin tone +1F93E 1F3FE ; fully-qualified # 🤾🏾 E3.0 person playing handball: medium-dark skin tone +1F93E 1F3FF ; fully-qualified # 🤾🏿 E3.0 person playing handball: dark skin tone +1F93E 200D 2642 FE0F ; fully-qualified # 🤾‍♂️ E4.0 man playing handball +1F93E 200D 2642 ; minimally-qualified # 🤾‍♂ E4.0 man playing handball +1F93E 1F3FB 200D 2642 FE0F ; fully-qualified # 🤾🏻‍♂️ E4.0 man playing handball: light skin tone +1F93E 1F3FB 200D 2642 ; minimally-qualified # 🤾🏻‍♂ E4.0 man playing handball: light skin tone +1F93E 1F3FC 200D 2642 FE0F ; fully-qualified # 🤾🏼‍♂️ E4.0 man playing handball: medium-light skin tone +1F93E 1F3FC 200D 2642 ; minimally-qualified # 🤾🏼‍♂ E4.0 man playing handball: medium-light skin tone +1F93E 1F3FD 200D 2642 FE0F ; fully-qualified # 🤾🏽‍♂️ E4.0 man playing handball: medium skin tone +1F93E 1F3FD 200D 2642 ; minimally-qualified # 🤾🏽‍♂ E4.0 man playing handball: medium skin tone +1F93E 1F3FE 200D 2642 FE0F ; fully-qualified # 🤾🏾‍♂️ E4.0 man playing handball: medium-dark skin tone +1F93E 1F3FE 200D 2642 ; minimally-qualified # 🤾🏾‍♂ E4.0 man playing handball: medium-dark skin tone +1F93E 1F3FF 200D 2642 FE0F ; fully-qualified # 🤾🏿‍♂️ E4.0 man playing handball: dark skin tone +1F93E 1F3FF 200D 2642 ; minimally-qualified # 🤾🏿‍♂ E4.0 man playing handball: dark skin tone +1F93E 200D 2640 FE0F ; fully-qualified # 🤾‍♀️ E4.0 woman playing handball +1F93E 200D 2640 ; minimally-qualified # 🤾‍♀ E4.0 woman playing handball +1F93E 1F3FB 200D 2640 FE0F ; fully-qualified # 🤾🏻‍♀️ E4.0 woman playing handball: light skin tone +1F93E 1F3FB 200D 2640 ; minimally-qualified # 🤾🏻‍♀ E4.0 woman playing handball: light skin tone +1F93E 1F3FC 200D 2640 FE0F ; fully-qualified # 🤾🏼‍♀️ E4.0 woman playing handball: medium-light skin tone +1F93E 1F3FC 200D 2640 ; minimally-qualified # 🤾🏼‍♀ E4.0 woman playing handball: medium-light skin tone +1F93E 1F3FD 200D 2640 FE0F ; fully-qualified # 🤾🏽‍♀️ E4.0 woman playing handball: medium skin tone +1F93E 1F3FD 200D 2640 ; minimally-qualified # 🤾🏽‍♀ E4.0 woman playing handball: medium skin tone +1F93E 1F3FE 200D 2640 FE0F ; fully-qualified # 🤾🏾‍♀️ E4.0 woman playing handball: medium-dark skin tone +1F93E 1F3FE 200D 2640 ; minimally-qualified # 🤾🏾‍♀ E4.0 woman playing handball: medium-dark skin tone +1F93E 1F3FF 200D 2640 FE0F ; fully-qualified # 🤾🏿‍♀️ E4.0 woman playing handball: dark skin tone +1F93E 1F3FF 200D 2640 ; minimally-qualified # 🤾🏿‍♀ E4.0 woman playing handball: dark skin tone +1F939 ; fully-qualified # 🤹 E3.0 person juggling +1F939 1F3FB ; fully-qualified # 🤹🏻 E3.0 person juggling: light skin tone +1F939 1F3FC ; fully-qualified # 🤹🏼 E3.0 person juggling: medium-light skin tone +1F939 1F3FD ; fully-qualified # 🤹🏽 E3.0 person juggling: medium skin tone +1F939 1F3FE ; fully-qualified # 🤹🏾 E3.0 person juggling: medium-dark skin tone +1F939 1F3FF ; fully-qualified # 🤹🏿 E3.0 person juggling: dark skin tone +1F939 200D 2642 FE0F ; fully-qualified # 🤹‍♂️ E4.0 man juggling +1F939 200D 2642 ; minimally-qualified # 🤹‍♂ E4.0 man juggling +1F939 1F3FB 200D 2642 FE0F ; fully-qualified # 🤹🏻‍♂️ E4.0 man juggling: light skin tone +1F939 1F3FB 200D 2642 ; minimally-qualified # 🤹🏻‍♂ E4.0 man juggling: light skin tone +1F939 1F3FC 200D 2642 FE0F ; fully-qualified # 🤹🏼‍♂️ E4.0 man juggling: medium-light skin tone +1F939 1F3FC 200D 2642 ; minimally-qualified # 🤹🏼‍♂ E4.0 man juggling: medium-light skin tone +1F939 1F3FD 200D 2642 FE0F ; fully-qualified # 🤹🏽‍♂️ E4.0 man juggling: medium skin tone +1F939 1F3FD 200D 2642 ; minimally-qualified # 🤹🏽‍♂ E4.0 man juggling: medium skin tone +1F939 1F3FE 200D 2642 FE0F ; fully-qualified # 🤹🏾‍♂️ E4.0 man juggling: medium-dark skin tone +1F939 1F3FE 200D 2642 ; minimally-qualified # 🤹🏾‍♂ E4.0 man juggling: medium-dark skin tone +1F939 1F3FF 200D 2642 FE0F ; fully-qualified # 🤹🏿‍♂️ E4.0 man juggling: dark skin tone +1F939 1F3FF 200D 2642 ; minimally-qualified # 🤹🏿‍♂ E4.0 man juggling: dark skin tone +1F939 200D 2640 FE0F ; fully-qualified # 🤹‍♀️ E4.0 woman juggling +1F939 200D 2640 ; minimally-qualified # 🤹‍♀ E4.0 woman juggling +1F939 1F3FB 200D 2640 FE0F ; fully-qualified # 🤹🏻‍♀️ E4.0 woman juggling: light skin tone +1F939 1F3FB 200D 2640 ; minimally-qualified # 🤹🏻‍♀ E4.0 woman juggling: light skin tone +1F939 1F3FC 200D 2640 FE0F ; fully-qualified # 🤹🏼‍♀️ E4.0 woman juggling: medium-light skin tone +1F939 1F3FC 200D 2640 ; minimally-qualified # 🤹🏼‍♀ E4.0 woman juggling: medium-light skin tone +1F939 1F3FD 200D 2640 FE0F ; fully-qualified # 🤹🏽‍♀️ E4.0 woman juggling: medium skin tone +1F939 1F3FD 200D 2640 ; minimally-qualified # 🤹🏽‍♀ E4.0 woman juggling: medium skin tone +1F939 1F3FE 200D 2640 FE0F ; fully-qualified # 🤹🏾‍♀️ E4.0 woman juggling: medium-dark skin tone +1F939 1F3FE 200D 2640 ; minimally-qualified # 🤹🏾‍♀ E4.0 woman juggling: medium-dark skin tone +1F939 1F3FF 200D 2640 FE0F ; fully-qualified # 🤹🏿‍♀️ E4.0 woman juggling: dark skin tone +1F939 1F3FF 200D 2640 ; minimally-qualified # 🤹🏿‍♀ E4.0 woman juggling: dark skin tone + +# subgroup: person-resting +1F9D8 ; fully-qualified # 🧘 E5.0 person in lotus position +1F9D8 1F3FB ; fully-qualified # 🧘🏻 E5.0 person in lotus position: light skin tone +1F9D8 1F3FC ; fully-qualified # 🧘🏼 E5.0 person in lotus position: medium-light skin tone +1F9D8 1F3FD ; fully-qualified # 🧘🏽 E5.0 person in lotus position: medium skin tone +1F9D8 1F3FE ; fully-qualified # 🧘🏾 E5.0 person in lotus position: medium-dark skin tone +1F9D8 1F3FF ; fully-qualified # 🧘🏿 E5.0 person in lotus position: dark skin tone +1F9D8 200D 2642 FE0F ; fully-qualified # 🧘‍♂️ E5.0 man in lotus position +1F9D8 200D 2642 ; minimally-qualified # 🧘‍♂ E5.0 man in lotus position +1F9D8 1F3FB 200D 2642 FE0F ; fully-qualified # 🧘🏻‍♂️ E5.0 man in lotus position: light skin tone +1F9D8 1F3FB 200D 2642 ; minimally-qualified # 🧘🏻‍♂ E5.0 man in lotus position: light skin tone +1F9D8 1F3FC 200D 2642 FE0F ; fully-qualified # 🧘🏼‍♂️ E5.0 man in lotus position: medium-light skin tone +1F9D8 1F3FC 200D 2642 ; minimally-qualified # 🧘🏼‍♂ E5.0 man in lotus position: medium-light skin tone +1F9D8 1F3FD 200D 2642 FE0F ; fully-qualified # 🧘🏽‍♂️ E5.0 man in lotus position: medium skin tone +1F9D8 1F3FD 200D 2642 ; minimally-qualified # 🧘🏽‍♂ E5.0 man in lotus position: medium skin tone +1F9D8 1F3FE 200D 2642 FE0F ; fully-qualified # 🧘🏾‍♂️ E5.0 man in lotus position: medium-dark skin tone +1F9D8 1F3FE 200D 2642 ; minimally-qualified # 🧘🏾‍♂ E5.0 man in lotus position: medium-dark skin tone +1F9D8 1F3FF 200D 2642 FE0F ; fully-qualified # 🧘🏿‍♂️ E5.0 man in lotus position: dark skin tone +1F9D8 1F3FF 200D 2642 ; minimally-qualified # 🧘🏿‍♂ E5.0 man in lotus position: dark skin tone +1F9D8 200D 2640 FE0F ; fully-qualified # 🧘‍♀️ E5.0 woman in lotus position +1F9D8 200D 2640 ; minimally-qualified # 🧘‍♀ E5.0 woman in lotus position +1F9D8 1F3FB 200D 2640 FE0F ; fully-qualified # 🧘🏻‍♀️ E5.0 woman in lotus position: light skin tone +1F9D8 1F3FB 200D 2640 ; minimally-qualified # 🧘🏻‍♀ E5.0 woman in lotus position: light skin tone +1F9D8 1F3FC 200D 2640 FE0F ; fully-qualified # 🧘🏼‍♀️ E5.0 woman in lotus position: medium-light skin tone +1F9D8 1F3FC 200D 2640 ; minimally-qualified # 🧘🏼‍♀ E5.0 woman in lotus position: medium-light skin tone +1F9D8 1F3FD 200D 2640 FE0F ; fully-qualified # 🧘🏽‍♀️ E5.0 woman in lotus position: medium skin tone +1F9D8 1F3FD 200D 2640 ; minimally-qualified # 🧘🏽‍♀ E5.0 woman in lotus position: medium skin tone +1F9D8 1F3FE 200D 2640 FE0F ; fully-qualified # 🧘🏾‍♀️ E5.0 woman in lotus position: medium-dark skin tone +1F9D8 1F3FE 200D 2640 ; minimally-qualified # 🧘🏾‍♀ E5.0 woman in lotus position: medium-dark skin tone +1F9D8 1F3FF 200D 2640 FE0F ; fully-qualified # 🧘🏿‍♀️ E5.0 woman in lotus position: dark skin tone +1F9D8 1F3FF 200D 2640 ; minimally-qualified # 🧘🏿‍♀ E5.0 woman in lotus position: dark skin tone +1F6C0 ; fully-qualified # 🛀 E0.6 person taking bath +1F6C0 1F3FB ; fully-qualified # 🛀🏻 E1.0 person taking bath: light skin tone +1F6C0 1F3FC ; fully-qualified # 🛀🏼 E1.0 person taking bath: medium-light skin tone +1F6C0 1F3FD ; fully-qualified # 🛀🏽 E1.0 person taking bath: medium skin tone +1F6C0 1F3FE ; fully-qualified # 🛀🏾 E1.0 person taking bath: medium-dark skin tone +1F6C0 1F3FF ; fully-qualified # 🛀🏿 E1.0 person taking bath: dark skin tone +1F6CC ; fully-qualified # 🛌 E1.0 person in bed +1F6CC 1F3FB ; fully-qualified # 🛌🏻 E4.0 person in bed: light skin tone +1F6CC 1F3FC ; fully-qualified # 🛌🏼 E4.0 person in bed: medium-light skin tone +1F6CC 1F3FD ; fully-qualified # 🛌🏽 E4.0 person in bed: medium skin tone +1F6CC 1F3FE ; fully-qualified # 🛌🏾 E4.0 person in bed: medium-dark skin tone +1F6CC 1F3FF ; fully-qualified # 🛌🏿 E4.0 person in bed: dark skin tone + +# subgroup: family +1F9D1 200D 1F91D 200D 1F9D1 ; fully-qualified # 🧑‍🤝‍🧑 E12.0 people holding hands +1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏻‍🤝‍🧑🏻 E12.0 people holding hands: light skin tone +1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏻‍🤝‍🧑🏼 E12.1 people holding hands: light skin tone, medium-light skin tone +1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏻‍🤝‍🧑🏽 E12.1 people holding hands: light skin tone, medium skin tone +1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏻‍🤝‍🧑🏾 E12.1 people holding hands: light skin tone, medium-dark skin tone +1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏻‍🤝‍🧑🏿 E12.1 people holding hands: light skin tone, dark skin tone +1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏼‍🤝‍🧑🏻 E12.0 people holding hands: medium-light skin tone, light skin tone +1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏼‍🤝‍🧑🏼 E12.0 people holding hands: medium-light skin tone +1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏼‍🤝‍🧑🏽 E12.1 people holding hands: medium-light skin tone, medium skin tone +1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏼‍🤝‍🧑🏾 E12.1 people holding hands: medium-light skin tone, medium-dark skin tone +1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏼‍🤝‍🧑🏿 E12.1 people holding hands: medium-light skin tone, dark skin tone +1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏽‍🤝‍🧑🏻 E12.0 people holding hands: medium skin tone, light skin tone +1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏽‍🤝‍🧑🏼 E12.0 people holding hands: medium skin tone, medium-light skin tone +1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏽‍🤝‍🧑🏽 E12.0 people holding hands: medium skin tone +1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏽‍🤝‍🧑🏾 E12.1 people holding hands: medium skin tone, medium-dark skin tone +1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏽‍🤝‍🧑🏿 E12.1 people holding hands: medium skin tone, dark skin tone +1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏾‍🤝‍🧑🏻 E12.0 people holding hands: medium-dark skin tone, light skin tone +1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏾‍🤝‍🧑🏼 E12.0 people holding hands: medium-dark skin tone, medium-light skin tone +1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏾‍🤝‍🧑🏽 E12.0 people holding hands: medium-dark skin tone, medium skin tone +1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏾‍🤝‍🧑🏾 E12.0 people holding hands: medium-dark skin tone +1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏾‍🤝‍🧑🏿 E12.1 people holding hands: medium-dark skin tone, dark skin tone +1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏿‍🤝‍🧑🏻 E12.0 people holding hands: dark skin tone, light skin tone +1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏿‍🤝‍🧑🏼 E12.0 people holding hands: dark skin tone, medium-light skin tone +1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏿‍🤝‍🧑🏽 E12.0 people holding hands: dark skin tone, medium skin tone +1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏿‍🤝‍🧑🏾 E12.0 people holding hands: dark skin tone, medium-dark skin tone +1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏿‍🤝‍🧑🏿 E12.0 people holding hands: dark skin tone +1F46D ; fully-qualified # 👭 E1.0 women holding hands +1F46D 1F3FB ; fully-qualified # 👭🏻 E12.0 women holding hands: light skin tone +1F469 1F3FB 200D 1F91D 200D 1F469 1F3FC ; fully-qualified # 👩🏻‍🤝‍👩🏼 E12.1 women holding hands: light skin tone, medium-light skin tone +1F469 1F3FB 200D 1F91D 200D 1F469 1F3FD ; fully-qualified # 👩🏻‍🤝‍👩🏽 E12.1 women holding hands: light skin tone, medium skin tone +1F469 1F3FB 200D 1F91D 200D 1F469 1F3FE ; fully-qualified # 👩🏻‍🤝‍👩🏾 E12.1 women holding hands: light skin tone, medium-dark skin tone +1F469 1F3FB 200D 1F91D 200D 1F469 1F3FF ; fully-qualified # 👩🏻‍🤝‍👩🏿 E12.1 women holding hands: light skin tone, dark skin tone +1F469 1F3FC 200D 1F91D 200D 1F469 1F3FB ; fully-qualified # 👩🏼‍🤝‍👩🏻 E12.0 women holding hands: medium-light skin tone, light skin tone +1F46D 1F3FC ; fully-qualified # 👭🏼 E12.0 women holding hands: medium-light skin tone +1F469 1F3FC 200D 1F91D 200D 1F469 1F3FD ; fully-qualified # 👩🏼‍🤝‍👩🏽 E12.1 women holding hands: medium-light skin tone, medium skin tone +1F469 1F3FC 200D 1F91D 200D 1F469 1F3FE ; fully-qualified # 👩🏼‍🤝‍👩🏾 E12.1 women holding hands: medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 1F91D 200D 1F469 1F3FF ; fully-qualified # 👩🏼‍🤝‍👩🏿 E12.1 women holding hands: medium-light skin tone, dark skin tone +1F469 1F3FD 200D 1F91D 200D 1F469 1F3FB ; fully-qualified # 👩🏽‍🤝‍👩🏻 E12.0 women holding hands: medium skin tone, light skin tone +1F469 1F3FD 200D 1F91D 200D 1F469 1F3FC ; fully-qualified # 👩🏽‍🤝‍👩🏼 E12.0 women holding hands: medium skin tone, medium-light skin tone +1F46D 1F3FD ; fully-qualified # 👭🏽 E12.0 women holding hands: medium skin tone +1F469 1F3FD 200D 1F91D 200D 1F469 1F3FE ; fully-qualified # 👩🏽‍🤝‍👩🏾 E12.1 women holding hands: medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 1F91D 200D 1F469 1F3FF ; fully-qualified # 👩🏽‍🤝‍👩🏿 E12.1 women holding hands: medium skin tone, dark skin tone +1F469 1F3FE 200D 1F91D 200D 1F469 1F3FB ; fully-qualified # 👩🏾‍🤝‍👩🏻 E12.0 women holding hands: medium-dark skin tone, light skin tone +1F469 1F3FE 200D 1F91D 200D 1F469 1F3FC ; fully-qualified # 👩🏾‍🤝‍👩🏼 E12.0 women holding hands: medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 1F91D 200D 1F469 1F3FD ; fully-qualified # 👩🏾‍🤝‍👩🏽 E12.0 women holding hands: medium-dark skin tone, medium skin tone +1F46D 1F3FE ; fully-qualified # 👭🏾 E12.0 women holding hands: medium-dark skin tone +1F469 1F3FE 200D 1F91D 200D 1F469 1F3FF ; fully-qualified # 👩🏾‍🤝‍👩🏿 E12.1 women holding hands: medium-dark skin tone, dark skin tone +1F469 1F3FF 200D 1F91D 200D 1F469 1F3FB ; fully-qualified # 👩🏿‍🤝‍👩🏻 E12.0 women holding hands: dark skin tone, light skin tone +1F469 1F3FF 200D 1F91D 200D 1F469 1F3FC ; fully-qualified # 👩🏿‍🤝‍👩🏼 E12.0 women holding hands: dark skin tone, medium-light skin tone +1F469 1F3FF 200D 1F91D 200D 1F469 1F3FD ; fully-qualified # 👩🏿‍🤝‍👩🏽 E12.0 women holding hands: dark skin tone, medium skin tone +1F469 1F3FF 200D 1F91D 200D 1F469 1F3FE ; fully-qualified # 👩🏿‍🤝‍👩🏾 E12.0 women holding hands: dark skin tone, medium-dark skin tone +1F46D 1F3FF ; fully-qualified # 👭🏿 E12.0 women holding hands: dark skin tone +1F46B ; fully-qualified # 👫 E0.6 woman and man holding hands +1F46B 1F3FB ; fully-qualified # 👫🏻 E12.0 woman and man holding hands: light skin tone +1F469 1F3FB 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👩🏻‍🤝‍👨🏼 E12.0 woman and man holding hands: light skin tone, medium-light skin tone +1F469 1F3FB 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👩🏻‍🤝‍👨🏽 E12.0 woman and man holding hands: light skin tone, medium skin tone +1F469 1F3FB 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👩🏻‍🤝‍👨🏾 E12.0 woman and man holding hands: light skin tone, medium-dark skin tone +1F469 1F3FB 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👩🏻‍🤝‍👨🏿 E12.0 woman and man holding hands: light skin tone, dark skin tone +1F469 1F3FC 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👩🏼‍🤝‍👨🏻 E12.0 woman and man holding hands: medium-light skin tone, light skin tone +1F46B 1F3FC ; fully-qualified # 👫🏼 E12.0 woman and man holding hands: medium-light skin tone +1F469 1F3FC 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👩🏼‍🤝‍👨🏽 E12.0 woman and man holding hands: medium-light skin tone, medium skin tone +1F469 1F3FC 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👩🏼‍🤝‍👨🏾 E12.0 woman and man holding hands: medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👩🏼‍🤝‍👨🏿 E12.0 woman and man holding hands: medium-light skin tone, dark skin tone +1F469 1F3FD 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👩🏽‍🤝‍👨🏻 E12.0 woman and man holding hands: medium skin tone, light skin tone +1F469 1F3FD 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👩🏽‍🤝‍👨🏼 E12.0 woman and man holding hands: medium skin tone, medium-light skin tone +1F46B 1F3FD ; fully-qualified # 👫🏽 E12.0 woman and man holding hands: medium skin tone +1F469 1F3FD 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👩🏽‍🤝‍👨🏾 E12.0 woman and man holding hands: medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👩🏽‍🤝‍👨🏿 E12.0 woman and man holding hands: medium skin tone, dark skin tone +1F469 1F3FE 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👩🏾‍🤝‍👨🏻 E12.0 woman and man holding hands: medium-dark skin tone, light skin tone +1F469 1F3FE 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👩🏾‍🤝‍👨🏼 E12.0 woman and man holding hands: medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👩🏾‍🤝‍👨🏽 E12.0 woman and man holding hands: medium-dark skin tone, medium skin tone +1F46B 1F3FE ; fully-qualified # 👫🏾 E12.0 woman and man holding hands: medium-dark skin tone +1F469 1F3FE 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👩🏾‍🤝‍👨🏿 E12.0 woman and man holding hands: medium-dark skin tone, dark skin tone +1F469 1F3FF 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👩🏿‍🤝‍👨🏻 E12.0 woman and man holding hands: dark skin tone, light skin tone +1F469 1F3FF 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👩🏿‍🤝‍👨🏼 E12.0 woman and man holding hands: dark skin tone, medium-light skin tone +1F469 1F3FF 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👩🏿‍🤝‍👨🏽 E12.0 woman and man holding hands: dark skin tone, medium skin tone +1F469 1F3FF 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👩🏿‍🤝‍👨🏾 E12.0 woman and man holding hands: dark skin tone, medium-dark skin tone +1F46B 1F3FF ; fully-qualified # 👫🏿 E12.0 woman and man holding hands: dark skin tone +1F46C ; fully-qualified # 👬 E1.0 men holding hands +1F46C 1F3FB ; fully-qualified # 👬🏻 E12.0 men holding hands: light skin tone +1F468 1F3FB 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👨🏻‍🤝‍👨🏼 E12.1 men holding hands: light skin tone, medium-light skin tone +1F468 1F3FB 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👨🏻‍🤝‍👨🏽 E12.1 men holding hands: light skin tone, medium skin tone +1F468 1F3FB 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👨🏻‍🤝‍👨🏾 E12.1 men holding hands: light skin tone, medium-dark skin tone +1F468 1F3FB 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👨🏻‍🤝‍👨🏿 E12.1 men holding hands: light skin tone, dark skin tone +1F468 1F3FC 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👨🏼‍🤝‍👨🏻 E12.0 men holding hands: medium-light skin tone, light skin tone +1F46C 1F3FC ; fully-qualified # 👬🏼 E12.0 men holding hands: medium-light skin tone +1F468 1F3FC 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👨🏼‍🤝‍👨🏽 E12.1 men holding hands: medium-light skin tone, medium skin tone +1F468 1F3FC 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👨🏼‍🤝‍👨🏾 E12.1 men holding hands: medium-light skin tone, medium-dark skin tone +1F468 1F3FC 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👨🏼‍🤝‍👨🏿 E12.1 men holding hands: medium-light skin tone, dark skin tone +1F468 1F3FD 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👨🏽‍🤝‍👨🏻 E12.0 men holding hands: medium skin tone, light skin tone +1F468 1F3FD 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👨🏽‍🤝‍👨🏼 E12.0 men holding hands: medium skin tone, medium-light skin tone +1F46C 1F3FD ; fully-qualified # 👬🏽 E12.0 men holding hands: medium skin tone +1F468 1F3FD 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👨🏽‍🤝‍👨🏾 E12.1 men holding hands: medium skin tone, medium-dark skin tone +1F468 1F3FD 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👨🏽‍🤝‍👨🏿 E12.1 men holding hands: medium skin tone, dark skin tone +1F468 1F3FE 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👨🏾‍🤝‍👨🏻 E12.0 men holding hands: medium-dark skin tone, light skin tone +1F468 1F3FE 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👨🏾‍🤝‍👨🏼 E12.0 men holding hands: medium-dark skin tone, medium-light skin tone +1F468 1F3FE 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👨🏾‍🤝‍👨🏽 E12.0 men holding hands: medium-dark skin tone, medium skin tone +1F46C 1F3FE ; fully-qualified # 👬🏾 E12.0 men holding hands: medium-dark skin tone +1F468 1F3FE 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👨🏾‍🤝‍👨🏿 E12.1 men holding hands: medium-dark skin tone, dark skin tone +1F468 1F3FF 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👨🏿‍🤝‍👨🏻 E12.0 men holding hands: dark skin tone, light skin tone +1F468 1F3FF 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👨🏿‍🤝‍👨🏼 E12.0 men holding hands: dark skin tone, medium-light skin tone +1F468 1F3FF 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👨🏿‍🤝‍👨🏽 E12.0 men holding hands: dark skin tone, medium skin tone +1F468 1F3FF 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👨🏿‍🤝‍👨🏾 E12.0 men holding hands: dark skin tone, medium-dark skin tone +1F46C 1F3FF ; fully-qualified # 👬🏿 E12.0 men holding hands: dark skin tone +1F48F ; fully-qualified # 💏 E0.6 kiss +1F48F 1F3FB ; fully-qualified # 💏🏻 E13.1 kiss: light skin tone +1F48F 1F3FC ; fully-qualified # 💏🏼 E13.1 kiss: medium-light skin tone +1F48F 1F3FD ; fully-qualified # 💏🏽 E13.1 kiss: medium skin tone +1F48F 1F3FE ; fully-qualified # 💏🏾 E13.1 kiss: medium-dark skin tone +1F48F 1F3FF ; fully-qualified # 💏🏿 E13.1 kiss: dark skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏻‍❤️‍💋‍🧑🏼 E13.1 kiss: person, person, light skin tone, medium-light skin tone +1F9D1 1F3FB 200D 2764 200D 1F48B 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏻‍❤‍💋‍🧑🏼 E13.1 kiss: person, person, light skin tone, medium-light skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏻‍❤️‍💋‍🧑🏽 E13.1 kiss: person, person, light skin tone, medium skin tone +1F9D1 1F3FB 200D 2764 200D 1F48B 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏻‍❤‍💋‍🧑🏽 E13.1 kiss: person, person, light skin tone, medium skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏻‍❤️‍💋‍🧑🏾 E13.1 kiss: person, person, light skin tone, medium-dark skin tone +1F9D1 1F3FB 200D 2764 200D 1F48B 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏻‍❤‍💋‍🧑🏾 E13.1 kiss: person, person, light skin tone, medium-dark skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏻‍❤️‍💋‍🧑🏿 E13.1 kiss: person, person, light skin tone, dark skin tone +1F9D1 1F3FB 200D 2764 200D 1F48B 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏻‍❤‍💋‍🧑🏿 E13.1 kiss: person, person, light skin tone, dark skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏼‍❤️‍💋‍🧑🏻 E13.1 kiss: person, person, medium-light skin tone, light skin tone +1F9D1 1F3FC 200D 2764 200D 1F48B 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏼‍❤‍💋‍🧑🏻 E13.1 kiss: person, person, medium-light skin tone, light skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏼‍❤️‍💋‍🧑🏽 E13.1 kiss: person, person, medium-light skin tone, medium skin tone +1F9D1 1F3FC 200D 2764 200D 1F48B 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏼‍❤‍💋‍🧑🏽 E13.1 kiss: person, person, medium-light skin tone, medium skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏼‍❤️‍💋‍🧑🏾 E13.1 kiss: person, person, medium-light skin tone, medium-dark skin tone +1F9D1 1F3FC 200D 2764 200D 1F48B 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏼‍❤‍💋‍🧑🏾 E13.1 kiss: person, person, medium-light skin tone, medium-dark skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏼‍❤️‍💋‍🧑🏿 E13.1 kiss: person, person, medium-light skin tone, dark skin tone +1F9D1 1F3FC 200D 2764 200D 1F48B 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏼‍❤‍💋‍🧑🏿 E13.1 kiss: person, person, medium-light skin tone, dark skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏽‍❤️‍💋‍🧑🏻 E13.1 kiss: person, person, medium skin tone, light skin tone +1F9D1 1F3FD 200D 2764 200D 1F48B 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏽‍❤‍💋‍🧑🏻 E13.1 kiss: person, person, medium skin tone, light skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏽‍❤️‍💋‍🧑🏼 E13.1 kiss: person, person, medium skin tone, medium-light skin tone +1F9D1 1F3FD 200D 2764 200D 1F48B 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏽‍❤‍💋‍🧑🏼 E13.1 kiss: person, person, medium skin tone, medium-light skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏽‍❤️‍💋‍🧑🏾 E13.1 kiss: person, person, medium skin tone, medium-dark skin tone +1F9D1 1F3FD 200D 2764 200D 1F48B 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏽‍❤‍💋‍🧑🏾 E13.1 kiss: person, person, medium skin tone, medium-dark skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏽‍❤️‍💋‍🧑🏿 E13.1 kiss: person, person, medium skin tone, dark skin tone +1F9D1 1F3FD 200D 2764 200D 1F48B 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏽‍❤‍💋‍🧑🏿 E13.1 kiss: person, person, medium skin tone, dark skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏾‍❤️‍💋‍🧑🏻 E13.1 kiss: person, person, medium-dark skin tone, light skin tone +1F9D1 1F3FE 200D 2764 200D 1F48B 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏾‍❤‍💋‍🧑🏻 E13.1 kiss: person, person, medium-dark skin tone, light skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏾‍❤️‍💋‍🧑🏼 E13.1 kiss: person, person, medium-dark skin tone, medium-light skin tone +1F9D1 1F3FE 200D 2764 200D 1F48B 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏾‍❤‍💋‍🧑🏼 E13.1 kiss: person, person, medium-dark skin tone, medium-light skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏾‍❤️‍💋‍🧑🏽 E13.1 kiss: person, person, medium-dark skin tone, medium skin tone +1F9D1 1F3FE 200D 2764 200D 1F48B 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏾‍❤‍💋‍🧑🏽 E13.1 kiss: person, person, medium-dark skin tone, medium skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏾‍❤️‍💋‍🧑🏿 E13.1 kiss: person, person, medium-dark skin tone, dark skin tone +1F9D1 1F3FE 200D 2764 200D 1F48B 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏾‍❤‍💋‍🧑🏿 E13.1 kiss: person, person, medium-dark skin tone, dark skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏿‍❤️‍💋‍🧑🏻 E13.1 kiss: person, person, dark skin tone, light skin tone +1F9D1 1F3FF 200D 2764 200D 1F48B 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏿‍❤‍💋‍🧑🏻 E13.1 kiss: person, person, dark skin tone, light skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏿‍❤️‍💋‍🧑🏼 E13.1 kiss: person, person, dark skin tone, medium-light skin tone +1F9D1 1F3FF 200D 2764 200D 1F48B 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏿‍❤‍💋‍🧑🏼 E13.1 kiss: person, person, dark skin tone, medium-light skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏿‍❤️‍💋‍🧑🏽 E13.1 kiss: person, person, dark skin tone, medium skin tone +1F9D1 1F3FF 200D 2764 200D 1F48B 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏿‍❤‍💋‍🧑🏽 E13.1 kiss: person, person, dark skin tone, medium skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏿‍❤️‍💋‍🧑🏾 E13.1 kiss: person, person, dark skin tone, medium-dark skin tone +1F9D1 1F3FF 200D 2764 200D 1F48B 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏿‍❤‍💋‍🧑🏾 E13.1 kiss: person, person, dark skin tone, medium-dark skin tone +1F469 200D 2764 FE0F 200D 1F48B 200D 1F468 ; fully-qualified # 👩‍❤️‍💋‍👨 E2.0 kiss: woman, man +1F469 200D 2764 200D 1F48B 200D 1F468 ; minimally-qualified # 👩‍❤‍💋‍👨 E2.0 kiss: woman, man +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👩🏻‍❤️‍💋‍👨🏻 E13.1 kiss: woman, man, light skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👩🏻‍❤‍💋‍👨🏻 E13.1 kiss: woman, man, light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👩🏻‍❤️‍💋‍👨🏼 E13.1 kiss: woman, man, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👩🏻‍❤‍💋‍👨🏼 E13.1 kiss: woman, man, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👩🏻‍❤️‍💋‍👨🏽 E13.1 kiss: woman, man, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👩🏻‍❤‍💋‍👨🏽 E13.1 kiss: woman, man, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👩🏻‍❤️‍💋‍👨🏾 E13.1 kiss: woman, man, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👩🏻‍❤‍💋‍👨🏾 E13.1 kiss: woman, man, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👩🏻‍❤️‍💋‍👨🏿 E13.1 kiss: woman, man, light skin tone, dark skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👩🏻‍❤‍💋‍👨🏿 E13.1 kiss: woman, man, light skin tone, dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👩🏼‍❤️‍💋‍👨🏻 E13.1 kiss: woman, man, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👩🏼‍❤‍💋‍👨🏻 E13.1 kiss: woman, man, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👩🏼‍❤️‍💋‍👨🏼 E13.1 kiss: woman, man, medium-light skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👩🏼‍❤‍💋‍👨🏼 E13.1 kiss: woman, man, medium-light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👩🏼‍❤️‍💋‍👨🏽 E13.1 kiss: woman, man, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👩🏼‍❤‍💋‍👨🏽 E13.1 kiss: woman, man, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👩🏼‍❤️‍💋‍👨🏾 E13.1 kiss: woman, man, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👩🏼‍❤‍💋‍👨🏾 E13.1 kiss: woman, man, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👩🏼‍❤️‍💋‍👨🏿 E13.1 kiss: woman, man, medium-light skin tone, dark skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👩🏼‍❤‍💋‍👨🏿 E13.1 kiss: woman, man, medium-light skin tone, dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👩🏽‍❤️‍💋‍👨🏻 E13.1 kiss: woman, man, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👩🏽‍❤‍💋‍👨🏻 E13.1 kiss: woman, man, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👩🏽‍❤️‍💋‍👨🏼 E13.1 kiss: woman, man, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👩🏽‍❤‍💋‍👨🏼 E13.1 kiss: woman, man, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👩🏽‍❤️‍💋‍👨🏽 E13.1 kiss: woman, man, medium skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👩🏽‍❤‍💋‍👨🏽 E13.1 kiss: woman, man, medium skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👩🏽‍❤️‍💋‍👨🏾 E13.1 kiss: woman, man, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👩🏽‍❤‍💋‍👨🏾 E13.1 kiss: woman, man, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👩🏽‍❤️‍💋‍👨🏿 E13.1 kiss: woman, man, medium skin tone, dark skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👩🏽‍❤‍💋‍👨🏿 E13.1 kiss: woman, man, medium skin tone, dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👩🏾‍❤️‍💋‍👨🏻 E13.1 kiss: woman, man, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👩🏾‍❤‍💋‍👨🏻 E13.1 kiss: woman, man, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👩🏾‍❤️‍💋‍👨🏼 E13.1 kiss: woman, man, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👩🏾‍❤‍💋‍👨🏼 E13.1 kiss: woman, man, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👩🏾‍❤️‍💋‍👨🏽 E13.1 kiss: woman, man, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👩🏾‍❤‍💋‍👨🏽 E13.1 kiss: woman, man, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👩🏾‍❤️‍💋‍👨🏾 E13.1 kiss: woman, man, medium-dark skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👩🏾‍❤‍💋‍👨🏾 E13.1 kiss: woman, man, medium-dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👩🏾‍❤️‍💋‍👨🏿 E13.1 kiss: woman, man, medium-dark skin tone, dark skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👩🏾‍❤‍💋‍👨🏿 E13.1 kiss: woman, man, medium-dark skin tone, dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👩🏿‍❤️‍💋‍👨🏻 E13.1 kiss: woman, man, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👩🏿‍❤‍💋‍👨🏻 E13.1 kiss: woman, man, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👩🏿‍❤️‍💋‍👨🏼 E13.1 kiss: woman, man, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👩🏿‍❤‍💋‍👨🏼 E13.1 kiss: woman, man, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👩🏿‍❤️‍💋‍👨🏽 E13.1 kiss: woman, man, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👩🏿‍❤‍💋‍👨🏽 E13.1 kiss: woman, man, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👩🏿‍❤️‍💋‍👨🏾 E13.1 kiss: woman, man, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👩🏿‍❤‍💋‍👨🏾 E13.1 kiss: woman, man, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👩🏿‍❤️‍💋‍👨🏿 E13.1 kiss: woman, man, dark skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👩🏿‍❤‍💋‍👨🏿 E13.1 kiss: woman, man, dark skin tone +1F468 200D 2764 FE0F 200D 1F48B 200D 1F468 ; fully-qualified # 👨‍❤️‍💋‍👨 E2.0 kiss: man, man +1F468 200D 2764 200D 1F48B 200D 1F468 ; minimally-qualified # 👨‍❤‍💋‍👨 E2.0 kiss: man, man +1F468 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👨🏻‍❤️‍💋‍👨🏻 E13.1 kiss: man, man, light skin tone +1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👨🏻‍❤‍💋‍👨🏻 E13.1 kiss: man, man, light skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👨🏻‍❤️‍💋‍👨🏼 E13.1 kiss: man, man, light skin tone, medium-light skin tone +1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👨🏻‍❤‍💋‍👨🏼 E13.1 kiss: man, man, light skin tone, medium-light skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👨🏻‍❤️‍💋‍👨🏽 E13.1 kiss: man, man, light skin tone, medium skin tone +1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👨🏻‍❤‍💋‍👨🏽 E13.1 kiss: man, man, light skin tone, medium skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👨🏻‍❤️‍💋‍👨🏾 E13.1 kiss: man, man, light skin tone, medium-dark skin tone +1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👨🏻‍❤‍💋‍👨🏾 E13.1 kiss: man, man, light skin tone, medium-dark skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👨🏻‍❤️‍💋‍👨🏿 E13.1 kiss: man, man, light skin tone, dark skin tone +1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👨🏻‍❤‍💋‍👨🏿 E13.1 kiss: man, man, light skin tone, dark skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👨🏼‍❤️‍💋‍👨🏻 E13.1 kiss: man, man, medium-light skin tone, light skin tone +1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👨🏼‍❤‍💋‍👨🏻 E13.1 kiss: man, man, medium-light skin tone, light skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👨🏼‍❤️‍💋‍👨🏼 E13.1 kiss: man, man, medium-light skin tone +1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👨🏼‍❤‍💋‍👨🏼 E13.1 kiss: man, man, medium-light skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👨🏼‍❤️‍💋‍👨🏽 E13.1 kiss: man, man, medium-light skin tone, medium skin tone +1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👨🏼‍❤‍💋‍👨🏽 E13.1 kiss: man, man, medium-light skin tone, medium skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👨🏼‍❤️‍💋‍👨🏾 E13.1 kiss: man, man, medium-light skin tone, medium-dark skin tone +1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👨🏼‍❤‍💋‍👨🏾 E13.1 kiss: man, man, medium-light skin tone, medium-dark skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👨🏼‍❤️‍💋‍👨🏿 E13.1 kiss: man, man, medium-light skin tone, dark skin tone +1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👨🏼‍❤‍💋‍👨🏿 E13.1 kiss: man, man, medium-light skin tone, dark skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👨🏽‍❤️‍💋‍👨🏻 E13.1 kiss: man, man, medium skin tone, light skin tone +1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👨🏽‍❤‍💋‍👨🏻 E13.1 kiss: man, man, medium skin tone, light skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👨🏽‍❤️‍💋‍👨🏼 E13.1 kiss: man, man, medium skin tone, medium-light skin tone +1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👨🏽‍❤‍💋‍👨🏼 E13.1 kiss: man, man, medium skin tone, medium-light skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👨🏽‍❤️‍💋‍👨🏽 E13.1 kiss: man, man, medium skin tone +1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👨🏽‍❤‍💋‍👨🏽 E13.1 kiss: man, man, medium skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👨🏽‍❤️‍💋‍👨🏾 E13.1 kiss: man, man, medium skin tone, medium-dark skin tone +1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👨🏽‍❤‍💋‍👨🏾 E13.1 kiss: man, man, medium skin tone, medium-dark skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👨🏽‍❤️‍💋‍👨🏿 E13.1 kiss: man, man, medium skin tone, dark skin tone +1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👨🏽‍❤‍💋‍👨🏿 E13.1 kiss: man, man, medium skin tone, dark skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👨🏾‍❤️‍💋‍👨🏻 E13.1 kiss: man, man, medium-dark skin tone, light skin tone +1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👨🏾‍❤‍💋‍👨🏻 E13.1 kiss: man, man, medium-dark skin tone, light skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👨🏾‍❤️‍💋‍👨🏼 E13.1 kiss: man, man, medium-dark skin tone, medium-light skin tone +1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👨🏾‍❤‍💋‍👨🏼 E13.1 kiss: man, man, medium-dark skin tone, medium-light skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👨🏾‍❤️‍💋‍👨🏽 E13.1 kiss: man, man, medium-dark skin tone, medium skin tone +1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👨🏾‍❤‍💋‍👨🏽 E13.1 kiss: man, man, medium-dark skin tone, medium skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👨🏾‍❤️‍💋‍👨🏾 E13.1 kiss: man, man, medium-dark skin tone +1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👨🏾‍❤‍💋‍👨🏾 E13.1 kiss: man, man, medium-dark skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👨🏾‍❤️‍💋‍👨🏿 E13.1 kiss: man, man, medium-dark skin tone, dark skin tone +1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👨🏾‍❤‍💋‍👨🏿 E13.1 kiss: man, man, medium-dark skin tone, dark skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👨🏿‍❤️‍💋‍👨🏻 E13.1 kiss: man, man, dark skin tone, light skin tone +1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👨🏿‍❤‍💋‍👨🏻 E13.1 kiss: man, man, dark skin tone, light skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👨🏿‍❤️‍💋‍👨🏼 E13.1 kiss: man, man, dark skin tone, medium-light skin tone +1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👨🏿‍❤‍💋‍👨🏼 E13.1 kiss: man, man, dark skin tone, medium-light skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👨🏿‍❤️‍💋‍👨🏽 E13.1 kiss: man, man, dark skin tone, medium skin tone +1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👨🏿‍❤‍💋‍👨🏽 E13.1 kiss: man, man, dark skin tone, medium skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👨🏿‍❤️‍💋‍👨🏾 E13.1 kiss: man, man, dark skin tone, medium-dark skin tone +1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👨🏿‍❤‍💋‍👨🏾 E13.1 kiss: man, man, dark skin tone, medium-dark skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👨🏿‍❤️‍💋‍👨🏿 E13.1 kiss: man, man, dark skin tone +1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👨🏿‍❤‍💋‍👨🏿 E13.1 kiss: man, man, dark skin tone +1F469 200D 2764 FE0F 200D 1F48B 200D 1F469 ; fully-qualified # 👩‍❤️‍💋‍👩 E2.0 kiss: woman, woman +1F469 200D 2764 200D 1F48B 200D 1F469 ; minimally-qualified # 👩‍❤‍💋‍👩 E2.0 kiss: woman, woman +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FB ; fully-qualified # 👩🏻‍❤️‍💋‍👩🏻 E13.1 kiss: woman, woman, light skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FB ; minimally-qualified # 👩🏻‍❤‍💋‍👩🏻 E13.1 kiss: woman, woman, light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FC ; fully-qualified # 👩🏻‍❤️‍💋‍👩🏼 E13.1 kiss: woman, woman, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FC ; minimally-qualified # 👩🏻‍❤‍💋‍👩🏼 E13.1 kiss: woman, woman, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FD ; fully-qualified # 👩🏻‍❤️‍💋‍👩🏽 E13.1 kiss: woman, woman, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FD ; minimally-qualified # 👩🏻‍❤‍💋‍👩🏽 E13.1 kiss: woman, woman, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FE ; fully-qualified # 👩🏻‍❤️‍💋‍👩🏾 E13.1 kiss: woman, woman, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FE ; minimally-qualified # 👩🏻‍❤‍💋‍👩🏾 E13.1 kiss: woman, woman, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FF ; fully-qualified # 👩🏻‍❤️‍💋‍👩🏿 E13.1 kiss: woman, woman, light skin tone, dark skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FF ; minimally-qualified # 👩🏻‍❤‍💋‍👩🏿 E13.1 kiss: woman, woman, light skin tone, dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FB ; fully-qualified # 👩🏼‍❤️‍💋‍👩🏻 E13.1 kiss: woman, woman, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FB ; minimally-qualified # 👩🏼‍❤‍💋‍👩🏻 E13.1 kiss: woman, woman, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FC ; fully-qualified # 👩🏼‍❤️‍💋‍👩🏼 E13.1 kiss: woman, woman, medium-light skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FC ; minimally-qualified # 👩🏼‍❤‍💋‍👩🏼 E13.1 kiss: woman, woman, medium-light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FD ; fully-qualified # 👩🏼‍❤️‍💋‍👩🏽 E13.1 kiss: woman, woman, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FD ; minimally-qualified # 👩🏼‍❤‍💋‍👩🏽 E13.1 kiss: woman, woman, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FE ; fully-qualified # 👩🏼‍❤️‍💋‍👩🏾 E13.1 kiss: woman, woman, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FE ; minimally-qualified # 👩🏼‍❤‍💋‍👩🏾 E13.1 kiss: woman, woman, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FF ; fully-qualified # 👩🏼‍❤️‍💋‍👩🏿 E13.1 kiss: woman, woman, medium-light skin tone, dark skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FF ; minimally-qualified # 👩🏼‍❤‍💋‍👩🏿 E13.1 kiss: woman, woman, medium-light skin tone, dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FB ; fully-qualified # 👩🏽‍❤️‍💋‍👩🏻 E13.1 kiss: woman, woman, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FB ; minimally-qualified # 👩🏽‍❤‍💋‍👩🏻 E13.1 kiss: woman, woman, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FC ; fully-qualified # 👩🏽‍❤️‍💋‍👩🏼 E13.1 kiss: woman, woman, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FC ; minimally-qualified # 👩🏽‍❤‍💋‍👩🏼 E13.1 kiss: woman, woman, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FD ; fully-qualified # 👩🏽‍❤️‍💋‍👩🏽 E13.1 kiss: woman, woman, medium skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FD ; minimally-qualified # 👩🏽‍❤‍💋‍👩🏽 E13.1 kiss: woman, woman, medium skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FE ; fully-qualified # 👩🏽‍❤️‍💋‍👩🏾 E13.1 kiss: woman, woman, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FE ; minimally-qualified # 👩🏽‍❤‍💋‍👩🏾 E13.1 kiss: woman, woman, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FF ; fully-qualified # 👩🏽‍❤️‍💋‍👩🏿 E13.1 kiss: woman, woman, medium skin tone, dark skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FF ; minimally-qualified # 👩🏽‍❤‍💋‍👩🏿 E13.1 kiss: woman, woman, medium skin tone, dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FB ; fully-qualified # 👩🏾‍❤️‍💋‍👩🏻 E13.1 kiss: woman, woman, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FB ; minimally-qualified # 👩🏾‍❤‍💋‍👩🏻 E13.1 kiss: woman, woman, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FC ; fully-qualified # 👩🏾‍❤️‍💋‍👩🏼 E13.1 kiss: woman, woman, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FC ; minimally-qualified # 👩🏾‍❤‍💋‍👩🏼 E13.1 kiss: woman, woman, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FD ; fully-qualified # 👩🏾‍❤️‍💋‍👩🏽 E13.1 kiss: woman, woman, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FD ; minimally-qualified # 👩🏾‍❤‍💋‍👩🏽 E13.1 kiss: woman, woman, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FE ; fully-qualified # 👩🏾‍❤️‍💋‍👩🏾 E13.1 kiss: woman, woman, medium-dark skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FE ; minimally-qualified # 👩🏾‍❤‍💋‍👩🏾 E13.1 kiss: woman, woman, medium-dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FF ; fully-qualified # 👩🏾‍❤️‍💋‍👩🏿 E13.1 kiss: woman, woman, medium-dark skin tone, dark skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FF ; minimally-qualified # 👩🏾‍❤‍💋‍👩🏿 E13.1 kiss: woman, woman, medium-dark skin tone, dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FB ; fully-qualified # 👩🏿‍❤️‍💋‍👩🏻 E13.1 kiss: woman, woman, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FB ; minimally-qualified # 👩🏿‍❤‍💋‍👩🏻 E13.1 kiss: woman, woman, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FC ; fully-qualified # 👩🏿‍❤️‍💋‍👩🏼 E13.1 kiss: woman, woman, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FC ; minimally-qualified # 👩🏿‍❤‍💋‍👩🏼 E13.1 kiss: woman, woman, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FD ; fully-qualified # 👩🏿‍❤️‍💋‍👩🏽 E13.1 kiss: woman, woman, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FD ; minimally-qualified # 👩🏿‍❤‍💋‍👩🏽 E13.1 kiss: woman, woman, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FE ; fully-qualified # 👩🏿‍❤️‍💋‍👩🏾 E13.1 kiss: woman, woman, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FE ; minimally-qualified # 👩🏿‍❤‍💋‍👩🏾 E13.1 kiss: woman, woman, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FF ; fully-qualified # 👩🏿‍❤️‍💋‍👩🏿 E13.1 kiss: woman, woman, dark skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FF ; minimally-qualified # 👩🏿‍❤‍💋‍👩🏿 E13.1 kiss: woman, woman, dark skin tone +1F491 ; fully-qualified # 💑 E0.6 couple with heart +1F491 1F3FB ; fully-qualified # 💑🏻 E13.1 couple with heart: light skin tone +1F491 1F3FC ; fully-qualified # 💑🏼 E13.1 couple with heart: medium-light skin tone +1F491 1F3FD ; fully-qualified # 💑🏽 E13.1 couple with heart: medium skin tone +1F491 1F3FE ; fully-qualified # 💑🏾 E13.1 couple with heart: medium-dark skin tone +1F491 1F3FF ; fully-qualified # 💑🏿 E13.1 couple with heart: dark skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏻‍❤️‍🧑🏼 E13.1 couple with heart: person, person, light skin tone, medium-light skin tone +1F9D1 1F3FB 200D 2764 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏻‍❤‍🧑🏼 E13.1 couple with heart: person, person, light skin tone, medium-light skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏻‍❤️‍🧑🏽 E13.1 couple with heart: person, person, light skin tone, medium skin tone +1F9D1 1F3FB 200D 2764 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏻‍❤‍🧑🏽 E13.1 couple with heart: person, person, light skin tone, medium skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏻‍❤️‍🧑🏾 E13.1 couple with heart: person, person, light skin tone, medium-dark skin tone +1F9D1 1F3FB 200D 2764 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏻‍❤‍🧑🏾 E13.1 couple with heart: person, person, light skin tone, medium-dark skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏻‍❤️‍🧑🏿 E13.1 couple with heart: person, person, light skin tone, dark skin tone +1F9D1 1F3FB 200D 2764 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏻‍❤‍🧑🏿 E13.1 couple with heart: person, person, light skin tone, dark skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏼‍❤️‍🧑🏻 E13.1 couple with heart: person, person, medium-light skin tone, light skin tone +1F9D1 1F3FC 200D 2764 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏼‍❤‍🧑🏻 E13.1 couple with heart: person, person, medium-light skin tone, light skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏼‍❤️‍🧑🏽 E13.1 couple with heart: person, person, medium-light skin tone, medium skin tone +1F9D1 1F3FC 200D 2764 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏼‍❤‍🧑🏽 E13.1 couple with heart: person, person, medium-light skin tone, medium skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏼‍❤️‍🧑🏾 E13.1 couple with heart: person, person, medium-light skin tone, medium-dark skin tone +1F9D1 1F3FC 200D 2764 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏼‍❤‍🧑🏾 E13.1 couple with heart: person, person, medium-light skin tone, medium-dark skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏼‍❤️‍🧑🏿 E13.1 couple with heart: person, person, medium-light skin tone, dark skin tone +1F9D1 1F3FC 200D 2764 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏼‍❤‍🧑🏿 E13.1 couple with heart: person, person, medium-light skin tone, dark skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏽‍❤️‍🧑🏻 E13.1 couple with heart: person, person, medium skin tone, light skin tone +1F9D1 1F3FD 200D 2764 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏽‍❤‍🧑🏻 E13.1 couple with heart: person, person, medium skin tone, light skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏽‍❤️‍🧑🏼 E13.1 couple with heart: person, person, medium skin tone, medium-light skin tone +1F9D1 1F3FD 200D 2764 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏽‍❤‍🧑🏼 E13.1 couple with heart: person, person, medium skin tone, medium-light skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏽‍❤️‍🧑🏾 E13.1 couple with heart: person, person, medium skin tone, medium-dark skin tone +1F9D1 1F3FD 200D 2764 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏽‍❤‍🧑🏾 E13.1 couple with heart: person, person, medium skin tone, medium-dark skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏽‍❤️‍🧑🏿 E13.1 couple with heart: person, person, medium skin tone, dark skin tone +1F9D1 1F3FD 200D 2764 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏽‍❤‍🧑🏿 E13.1 couple with heart: person, person, medium skin tone, dark skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏾‍❤️‍🧑🏻 E13.1 couple with heart: person, person, medium-dark skin tone, light skin tone +1F9D1 1F3FE 200D 2764 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏾‍❤‍🧑🏻 E13.1 couple with heart: person, person, medium-dark skin tone, light skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏾‍❤️‍🧑🏼 E13.1 couple with heart: person, person, medium-dark skin tone, medium-light skin tone +1F9D1 1F3FE 200D 2764 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏾‍❤‍🧑🏼 E13.1 couple with heart: person, person, medium-dark skin tone, medium-light skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏾‍❤️‍🧑🏽 E13.1 couple with heart: person, person, medium-dark skin tone, medium skin tone +1F9D1 1F3FE 200D 2764 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏾‍❤‍🧑🏽 E13.1 couple with heart: person, person, medium-dark skin tone, medium skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏾‍❤️‍🧑🏿 E13.1 couple with heart: person, person, medium-dark skin tone, dark skin tone +1F9D1 1F3FE 200D 2764 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏾‍❤‍🧑🏿 E13.1 couple with heart: person, person, medium-dark skin tone, dark skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏿‍❤️‍🧑🏻 E13.1 couple with heart: person, person, dark skin tone, light skin tone +1F9D1 1F3FF 200D 2764 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏿‍❤‍🧑🏻 E13.1 couple with heart: person, person, dark skin tone, light skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏿‍❤️‍🧑🏼 E13.1 couple with heart: person, person, dark skin tone, medium-light skin tone +1F9D1 1F3FF 200D 2764 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏿‍❤‍🧑🏼 E13.1 couple with heart: person, person, dark skin tone, medium-light skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏿‍❤️‍🧑🏽 E13.1 couple with heart: person, person, dark skin tone, medium skin tone +1F9D1 1F3FF 200D 2764 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏿‍❤‍🧑🏽 E13.1 couple with heart: person, person, dark skin tone, medium skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏿‍❤️‍🧑🏾 E13.1 couple with heart: person, person, dark skin tone, medium-dark skin tone +1F9D1 1F3FF 200D 2764 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏿‍❤‍🧑🏾 E13.1 couple with heart: person, person, dark skin tone, medium-dark skin tone +1F469 200D 2764 FE0F 200D 1F468 ; fully-qualified # 👩‍❤️‍👨 E2.0 couple with heart: woman, man +1F469 200D 2764 200D 1F468 ; minimally-qualified # 👩‍❤‍👨 E2.0 couple with heart: woman, man +1F469 1F3FB 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👩🏻‍❤️‍👨🏻 E13.1 couple with heart: woman, man, light skin tone +1F469 1F3FB 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👩🏻‍❤‍👨🏻 E13.1 couple with heart: woman, man, light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👩🏻‍❤️‍👨🏼 E13.1 couple with heart: woman, man, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👩🏻‍❤‍👨🏼 E13.1 couple with heart: woman, man, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👩🏻‍❤️‍👨🏽 E13.1 couple with heart: woman, man, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👩🏻‍❤‍👨🏽 E13.1 couple with heart: woman, man, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👩🏻‍❤️‍👨🏾 E13.1 couple with heart: woman, man, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👩🏻‍❤‍👨🏾 E13.1 couple with heart: woman, man, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👩🏻‍❤️‍👨🏿 E13.1 couple with heart: woman, man, light skin tone, dark skin tone +1F469 1F3FB 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👩🏻‍❤‍👨🏿 E13.1 couple with heart: woman, man, light skin tone, dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👩🏼‍❤️‍👨🏻 E13.1 couple with heart: woman, man, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👩🏼‍❤‍👨🏻 E13.1 couple with heart: woman, man, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👩🏼‍❤️‍👨🏼 E13.1 couple with heart: woman, man, medium-light skin tone +1F469 1F3FC 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👩🏼‍❤‍👨🏼 E13.1 couple with heart: woman, man, medium-light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👩🏼‍❤️‍👨🏽 E13.1 couple with heart: woman, man, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👩🏼‍❤‍👨🏽 E13.1 couple with heart: woman, man, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👩🏼‍❤️‍👨🏾 E13.1 couple with heart: woman, man, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👩🏼‍❤‍👨🏾 E13.1 couple with heart: woman, man, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👩🏼‍❤️‍👨🏿 E13.1 couple with heart: woman, man, medium-light skin tone, dark skin tone +1F469 1F3FC 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👩🏼‍❤‍👨🏿 E13.1 couple with heart: woman, man, medium-light skin tone, dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👩🏽‍❤️‍👨🏻 E13.1 couple with heart: woman, man, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👩🏽‍❤‍👨🏻 E13.1 couple with heart: woman, man, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👩🏽‍❤️‍👨🏼 E13.1 couple with heart: woman, man, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👩🏽‍❤‍👨🏼 E13.1 couple with heart: woman, man, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👩🏽‍❤️‍👨🏽 E13.1 couple with heart: woman, man, medium skin tone +1F469 1F3FD 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👩🏽‍❤‍👨🏽 E13.1 couple with heart: woman, man, medium skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👩🏽‍❤️‍👨🏾 E13.1 couple with heart: woman, man, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👩🏽‍❤‍👨🏾 E13.1 couple with heart: woman, man, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👩🏽‍❤️‍👨🏿 E13.1 couple with heart: woman, man, medium skin tone, dark skin tone +1F469 1F3FD 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👩🏽‍❤‍👨🏿 E13.1 couple with heart: woman, man, medium skin tone, dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👩🏾‍❤️‍👨🏻 E13.1 couple with heart: woman, man, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👩🏾‍❤‍👨🏻 E13.1 couple with heart: woman, man, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👩🏾‍❤️‍👨🏼 E13.1 couple with heart: woman, man, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👩🏾‍❤‍👨🏼 E13.1 couple with heart: woman, man, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👩🏾‍❤️‍👨🏽 E13.1 couple with heart: woman, man, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👩🏾‍❤‍👨🏽 E13.1 couple with heart: woman, man, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👩🏾‍❤️‍👨🏾 E13.1 couple with heart: woman, man, medium-dark skin tone +1F469 1F3FE 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👩🏾‍❤‍👨🏾 E13.1 couple with heart: woman, man, medium-dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👩🏾‍❤️‍👨🏿 E13.1 couple with heart: woman, man, medium-dark skin tone, dark skin tone +1F469 1F3FE 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👩🏾‍❤‍👨🏿 E13.1 couple with heart: woman, man, medium-dark skin tone, dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👩🏿‍❤️‍👨🏻 E13.1 couple with heart: woman, man, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👩🏿‍❤‍👨🏻 E13.1 couple with heart: woman, man, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👩🏿‍❤️‍👨🏼 E13.1 couple with heart: woman, man, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👩🏿‍❤‍👨🏼 E13.1 couple with heart: woman, man, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👩🏿‍❤️‍👨🏽 E13.1 couple with heart: woman, man, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👩🏿‍❤‍👨🏽 E13.1 couple with heart: woman, man, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👩🏿‍❤️‍👨🏾 E13.1 couple with heart: woman, man, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👩🏿‍❤‍👨🏾 E13.1 couple with heart: woman, man, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👩🏿‍❤️‍👨🏿 E13.1 couple with heart: woman, man, dark skin tone +1F469 1F3FF 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👩🏿‍❤‍👨🏿 E13.1 couple with heart: woman, man, dark skin tone +1F468 200D 2764 FE0F 200D 1F468 ; fully-qualified # 👨‍❤️‍👨 E2.0 couple with heart: man, man +1F468 200D 2764 200D 1F468 ; minimally-qualified # 👨‍❤‍👨 E2.0 couple with heart: man, man +1F468 1F3FB 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👨🏻‍❤️‍👨🏻 E13.1 couple with heart: man, man, light skin tone +1F468 1F3FB 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👨🏻‍❤‍👨🏻 E13.1 couple with heart: man, man, light skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👨🏻‍❤️‍👨🏼 E13.1 couple with heart: man, man, light skin tone, medium-light skin tone +1F468 1F3FB 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👨🏻‍❤‍👨🏼 E13.1 couple with heart: man, man, light skin tone, medium-light skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👨🏻‍❤️‍👨🏽 E13.1 couple with heart: man, man, light skin tone, medium skin tone +1F468 1F3FB 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👨🏻‍❤‍👨🏽 E13.1 couple with heart: man, man, light skin tone, medium skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👨🏻‍❤️‍👨🏾 E13.1 couple with heart: man, man, light skin tone, medium-dark skin tone +1F468 1F3FB 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👨🏻‍❤‍👨🏾 E13.1 couple with heart: man, man, light skin tone, medium-dark skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👨🏻‍❤️‍👨🏿 E13.1 couple with heart: man, man, light skin tone, dark skin tone +1F468 1F3FB 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👨🏻‍❤‍👨🏿 E13.1 couple with heart: man, man, light skin tone, dark skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👨🏼‍❤️‍👨🏻 E13.1 couple with heart: man, man, medium-light skin tone, light skin tone +1F468 1F3FC 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👨🏼‍❤‍👨🏻 E13.1 couple with heart: man, man, medium-light skin tone, light skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👨🏼‍❤️‍👨🏼 E13.1 couple with heart: man, man, medium-light skin tone +1F468 1F3FC 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👨🏼‍❤‍👨🏼 E13.1 couple with heart: man, man, medium-light skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👨🏼‍❤️‍👨🏽 E13.1 couple with heart: man, man, medium-light skin tone, medium skin tone +1F468 1F3FC 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👨🏼‍❤‍👨🏽 E13.1 couple with heart: man, man, medium-light skin tone, medium skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👨🏼‍❤️‍👨🏾 E13.1 couple with heart: man, man, medium-light skin tone, medium-dark skin tone +1F468 1F3FC 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👨🏼‍❤‍👨🏾 E13.1 couple with heart: man, man, medium-light skin tone, medium-dark skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👨🏼‍❤️‍👨🏿 E13.1 couple with heart: man, man, medium-light skin tone, dark skin tone +1F468 1F3FC 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👨🏼‍❤‍👨🏿 E13.1 couple with heart: man, man, medium-light skin tone, dark skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👨🏽‍❤️‍👨🏻 E13.1 couple with heart: man, man, medium skin tone, light skin tone +1F468 1F3FD 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👨🏽‍❤‍👨🏻 E13.1 couple with heart: man, man, medium skin tone, light skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👨🏽‍❤️‍👨🏼 E13.1 couple with heart: man, man, medium skin tone, medium-light skin tone +1F468 1F3FD 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👨🏽‍❤‍👨🏼 E13.1 couple with heart: man, man, medium skin tone, medium-light skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👨🏽‍❤️‍👨🏽 E13.1 couple with heart: man, man, medium skin tone +1F468 1F3FD 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👨🏽‍❤‍👨🏽 E13.1 couple with heart: man, man, medium skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👨🏽‍❤️‍👨🏾 E13.1 couple with heart: man, man, medium skin tone, medium-dark skin tone +1F468 1F3FD 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👨🏽‍❤‍👨🏾 E13.1 couple with heart: man, man, medium skin tone, medium-dark skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👨🏽‍❤️‍👨🏿 E13.1 couple with heart: man, man, medium skin tone, dark skin tone +1F468 1F3FD 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👨🏽‍❤‍👨🏿 E13.1 couple with heart: man, man, medium skin tone, dark skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👨🏾‍❤️‍👨🏻 E13.1 couple with heart: man, man, medium-dark skin tone, light skin tone +1F468 1F3FE 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👨🏾‍❤‍👨🏻 E13.1 couple with heart: man, man, medium-dark skin tone, light skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👨🏾‍❤️‍👨🏼 E13.1 couple with heart: man, man, medium-dark skin tone, medium-light skin tone +1F468 1F3FE 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👨🏾‍❤‍👨🏼 E13.1 couple with heart: man, man, medium-dark skin tone, medium-light skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👨🏾‍❤️‍👨🏽 E13.1 couple with heart: man, man, medium-dark skin tone, medium skin tone +1F468 1F3FE 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👨🏾‍❤‍👨🏽 E13.1 couple with heart: man, man, medium-dark skin tone, medium skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👨🏾‍❤️‍👨🏾 E13.1 couple with heart: man, man, medium-dark skin tone +1F468 1F3FE 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👨🏾‍❤‍👨🏾 E13.1 couple with heart: man, man, medium-dark skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👨🏾‍❤️‍👨🏿 E13.1 couple with heart: man, man, medium-dark skin tone, dark skin tone +1F468 1F3FE 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👨🏾‍❤‍👨🏿 E13.1 couple with heart: man, man, medium-dark skin tone, dark skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👨🏿‍❤️‍👨🏻 E13.1 couple with heart: man, man, dark skin tone, light skin tone +1F468 1F3FF 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👨🏿‍❤‍👨🏻 E13.1 couple with heart: man, man, dark skin tone, light skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👨🏿‍❤️‍👨🏼 E13.1 couple with heart: man, man, dark skin tone, medium-light skin tone +1F468 1F3FF 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👨🏿‍❤‍👨🏼 E13.1 couple with heart: man, man, dark skin tone, medium-light skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👨🏿‍❤️‍👨🏽 E13.1 couple with heart: man, man, dark skin tone, medium skin tone +1F468 1F3FF 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👨🏿‍❤‍👨🏽 E13.1 couple with heart: man, man, dark skin tone, medium skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👨🏿‍❤️‍👨🏾 E13.1 couple with heart: man, man, dark skin tone, medium-dark skin tone +1F468 1F3FF 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👨🏿‍❤‍👨🏾 E13.1 couple with heart: man, man, dark skin tone, medium-dark skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👨🏿‍❤️‍👨🏿 E13.1 couple with heart: man, man, dark skin tone +1F468 1F3FF 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👨🏿‍❤‍👨🏿 E13.1 couple with heart: man, man, dark skin tone +1F469 200D 2764 FE0F 200D 1F469 ; fully-qualified # 👩‍❤️‍👩 E2.0 couple with heart: woman, woman +1F469 200D 2764 200D 1F469 ; minimally-qualified # 👩‍❤‍👩 E2.0 couple with heart: woman, woman +1F469 1F3FB 200D 2764 FE0F 200D 1F469 1F3FB ; fully-qualified # 👩🏻‍❤️‍👩🏻 E13.1 couple with heart: woman, woman, light skin tone +1F469 1F3FB 200D 2764 200D 1F469 1F3FB ; minimally-qualified # 👩🏻‍❤‍👩🏻 E13.1 couple with heart: woman, woman, light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F469 1F3FC ; fully-qualified # 👩🏻‍❤️‍👩🏼 E13.1 couple with heart: woman, woman, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 200D 1F469 1F3FC ; minimally-qualified # 👩🏻‍❤‍👩🏼 E13.1 couple with heart: woman, woman, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F469 1F3FD ; fully-qualified # 👩🏻‍❤️‍👩🏽 E13.1 couple with heart: woman, woman, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 200D 1F469 1F3FD ; minimally-qualified # 👩🏻‍❤‍👩🏽 E13.1 couple with heart: woman, woman, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F469 1F3FE ; fully-qualified # 👩🏻‍❤️‍👩🏾 E13.1 couple with heart: woman, woman, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 200D 1F469 1F3FE ; minimally-qualified # 👩🏻‍❤‍👩🏾 E13.1 couple with heart: woman, woman, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F469 1F3FF ; fully-qualified # 👩🏻‍❤️‍👩🏿 E13.1 couple with heart: woman, woman, light skin tone, dark skin tone +1F469 1F3FB 200D 2764 200D 1F469 1F3FF ; minimally-qualified # 👩🏻‍❤‍👩🏿 E13.1 couple with heart: woman, woman, light skin tone, dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F469 1F3FB ; fully-qualified # 👩🏼‍❤️‍👩🏻 E13.1 couple with heart: woman, woman, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 200D 1F469 1F3FB ; minimally-qualified # 👩🏼‍❤‍👩🏻 E13.1 couple with heart: woman, woman, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F469 1F3FC ; fully-qualified # 👩🏼‍❤️‍👩🏼 E13.1 couple with heart: woman, woman, medium-light skin tone +1F469 1F3FC 200D 2764 200D 1F469 1F3FC ; minimally-qualified # 👩🏼‍❤‍👩🏼 E13.1 couple with heart: woman, woman, medium-light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F469 1F3FD ; fully-qualified # 👩🏼‍❤️‍👩🏽 E13.1 couple with heart: woman, woman, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 200D 1F469 1F3FD ; minimally-qualified # 👩🏼‍❤‍👩🏽 E13.1 couple with heart: woman, woman, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F469 1F3FE ; fully-qualified # 👩🏼‍❤️‍👩🏾 E13.1 couple with heart: woman, woman, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 200D 1F469 1F3FE ; minimally-qualified # 👩🏼‍❤‍👩🏾 E13.1 couple with heart: woman, woman, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F469 1F3FF ; fully-qualified # 👩🏼‍❤️‍👩🏿 E13.1 couple with heart: woman, woman, medium-light skin tone, dark skin tone +1F469 1F3FC 200D 2764 200D 1F469 1F3FF ; minimally-qualified # 👩🏼‍❤‍👩🏿 E13.1 couple with heart: woman, woman, medium-light skin tone, dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F469 1F3FB ; fully-qualified # 👩🏽‍❤️‍👩🏻 E13.1 couple with heart: woman, woman, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 200D 1F469 1F3FB ; minimally-qualified # 👩🏽‍❤‍👩🏻 E13.1 couple with heart: woman, woman, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F469 1F3FC ; fully-qualified # 👩🏽‍❤️‍👩🏼 E13.1 couple with heart: woman, woman, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 200D 1F469 1F3FC ; minimally-qualified # 👩🏽‍❤‍👩🏼 E13.1 couple with heart: woman, woman, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F469 1F3FD ; fully-qualified # 👩🏽‍❤️‍👩🏽 E13.1 couple with heart: woman, woman, medium skin tone +1F469 1F3FD 200D 2764 200D 1F469 1F3FD ; minimally-qualified # 👩🏽‍❤‍👩🏽 E13.1 couple with heart: woman, woman, medium skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F469 1F3FE ; fully-qualified # 👩🏽‍❤️‍👩🏾 E13.1 couple with heart: woman, woman, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 200D 1F469 1F3FE ; minimally-qualified # 👩🏽‍❤‍👩🏾 E13.1 couple with heart: woman, woman, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F469 1F3FF ; fully-qualified # 👩🏽‍❤️‍👩🏿 E13.1 couple with heart: woman, woman, medium skin tone, dark skin tone +1F469 1F3FD 200D 2764 200D 1F469 1F3FF ; minimally-qualified # 👩🏽‍❤‍👩🏿 E13.1 couple with heart: woman, woman, medium skin tone, dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F469 1F3FB ; fully-qualified # 👩🏾‍❤️‍👩🏻 E13.1 couple with heart: woman, woman, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 200D 1F469 1F3FB ; minimally-qualified # 👩🏾‍❤‍👩🏻 E13.1 couple with heart: woman, woman, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F469 1F3FC ; fully-qualified # 👩🏾‍❤️‍👩🏼 E13.1 couple with heart: woman, woman, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 200D 1F469 1F3FC ; minimally-qualified # 👩🏾‍❤‍👩🏼 E13.1 couple with heart: woman, woman, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F469 1F3FD ; fully-qualified # 👩🏾‍❤️‍👩🏽 E13.1 couple with heart: woman, woman, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 200D 1F469 1F3FD ; minimally-qualified # 👩🏾‍❤‍👩🏽 E13.1 couple with heart: woman, woman, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F469 1F3FE ; fully-qualified # 👩🏾‍❤️‍👩🏾 E13.1 couple with heart: woman, woman, medium-dark skin tone +1F469 1F3FE 200D 2764 200D 1F469 1F3FE ; minimally-qualified # 👩🏾‍❤‍👩🏾 E13.1 couple with heart: woman, woman, medium-dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F469 1F3FF ; fully-qualified # 👩🏾‍❤️‍👩🏿 E13.1 couple with heart: woman, woman, medium-dark skin tone, dark skin tone +1F469 1F3FE 200D 2764 200D 1F469 1F3FF ; minimally-qualified # 👩🏾‍❤‍👩🏿 E13.1 couple with heart: woman, woman, medium-dark skin tone, dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F469 1F3FB ; fully-qualified # 👩🏿‍❤️‍👩🏻 E13.1 couple with heart: woman, woman, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 200D 1F469 1F3FB ; minimally-qualified # 👩🏿‍❤‍👩🏻 E13.1 couple with heart: woman, woman, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F469 1F3FC ; fully-qualified # 👩🏿‍❤️‍👩🏼 E13.1 couple with heart: woman, woman, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 200D 1F469 1F3FC ; minimally-qualified # 👩🏿‍❤‍👩🏼 E13.1 couple with heart: woman, woman, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F469 1F3FD ; fully-qualified # 👩🏿‍❤️‍👩🏽 E13.1 couple with heart: woman, woman, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 200D 1F469 1F3FD ; minimally-qualified # 👩🏿‍❤‍👩🏽 E13.1 couple with heart: woman, woman, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F469 1F3FE ; fully-qualified # 👩🏿‍❤️‍👩🏾 E13.1 couple with heart: woman, woman, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 200D 1F469 1F3FE ; minimally-qualified # 👩🏿‍❤‍👩🏾 E13.1 couple with heart: woman, woman, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F469 1F3FF ; fully-qualified # 👩🏿‍❤️‍👩🏿 E13.1 couple with heart: woman, woman, dark skin tone +1F469 1F3FF 200D 2764 200D 1F469 1F3FF ; minimally-qualified # 👩🏿‍❤‍👩🏿 E13.1 couple with heart: woman, woman, dark skin tone +1F468 200D 1F469 200D 1F466 ; fully-qualified # 👨‍👩‍👦 E2.0 family: man, woman, boy +1F468 200D 1F469 200D 1F467 ; fully-qualified # 👨‍👩‍👧 E2.0 family: man, woman, girl +1F468 200D 1F469 200D 1F467 200D 1F466 ; fully-qualified # 👨‍👩‍👧‍👦 E2.0 family: man, woman, girl, boy +1F468 200D 1F469 200D 1F466 200D 1F466 ; fully-qualified # 👨‍👩‍👦‍👦 E2.0 family: man, woman, boy, boy +1F468 200D 1F469 200D 1F467 200D 1F467 ; fully-qualified # 👨‍👩‍👧‍👧 E2.0 family: man, woman, girl, girl +1F468 200D 1F468 200D 1F466 ; fully-qualified # 👨‍👨‍👦 E2.0 family: man, man, boy +1F468 200D 1F468 200D 1F467 ; fully-qualified # 👨‍👨‍👧 E2.0 family: man, man, girl +1F468 200D 1F468 200D 1F467 200D 1F466 ; fully-qualified # 👨‍👨‍👧‍👦 E2.0 family: man, man, girl, boy +1F468 200D 1F468 200D 1F466 200D 1F466 ; fully-qualified # 👨‍👨‍👦‍👦 E2.0 family: man, man, boy, boy +1F468 200D 1F468 200D 1F467 200D 1F467 ; fully-qualified # 👨‍👨‍👧‍👧 E2.0 family: man, man, girl, girl +1F469 200D 1F469 200D 1F466 ; fully-qualified # 👩‍👩‍👦 E2.0 family: woman, woman, boy +1F469 200D 1F469 200D 1F467 ; fully-qualified # 👩‍👩‍👧 E2.0 family: woman, woman, girl +1F469 200D 1F469 200D 1F467 200D 1F466 ; fully-qualified # 👩‍👩‍👧‍👦 E2.0 family: woman, woman, girl, boy +1F469 200D 1F469 200D 1F466 200D 1F466 ; fully-qualified # 👩‍👩‍👦‍👦 E2.0 family: woman, woman, boy, boy +1F469 200D 1F469 200D 1F467 200D 1F467 ; fully-qualified # 👩‍👩‍👧‍👧 E2.0 family: woman, woman, girl, girl +1F468 200D 1F466 ; fully-qualified # 👨‍👦 E4.0 family: man, boy +1F468 200D 1F466 200D 1F466 ; fully-qualified # 👨‍👦‍👦 E4.0 family: man, boy, boy +1F468 200D 1F467 ; fully-qualified # 👨‍👧 E4.0 family: man, girl +1F468 200D 1F467 200D 1F466 ; fully-qualified # 👨‍👧‍👦 E4.0 family: man, girl, boy +1F468 200D 1F467 200D 1F467 ; fully-qualified # 👨‍👧‍👧 E4.0 family: man, girl, girl +1F469 200D 1F466 ; fully-qualified # 👩‍👦 E4.0 family: woman, boy +1F469 200D 1F466 200D 1F466 ; fully-qualified # 👩‍👦‍👦 E4.0 family: woman, boy, boy +1F469 200D 1F467 ; fully-qualified # 👩‍👧 E4.0 family: woman, girl +1F469 200D 1F467 200D 1F466 ; fully-qualified # 👩‍👧‍👦 E4.0 family: woman, girl, boy +1F469 200D 1F467 200D 1F467 ; fully-qualified # 👩‍👧‍👧 E4.0 family: woman, girl, girl + +# subgroup: person-symbol +1F5E3 FE0F ; fully-qualified # 🗣️ E0.7 speaking head +1F5E3 ; unqualified # 🗣 E0.7 speaking head +1F464 ; fully-qualified # 👤 E0.6 bust in silhouette +1F465 ; fully-qualified # 👥 E1.0 busts in silhouette +1FAC2 ; fully-qualified # 🫂 E13.0 people hugging +1F46A ; fully-qualified # 👪 E0.6 family +1F9D1 200D 1F9D1 200D 1F9D2 ; fully-qualified # 🧑‍🧑‍🧒 E15.1 family: adult, adult, child +1F9D1 200D 1F9D1 200D 1F9D2 200D 1F9D2 ; fully-qualified # 🧑‍🧑‍🧒‍🧒 E15.1 family: adult, adult, child, child +1F9D1 200D 1F9D2 ; fully-qualified # 🧑‍🧒 E15.1 family: adult, child +1F9D1 200D 1F9D2 200D 1F9D2 ; fully-qualified # 🧑‍🧒‍🧒 E15.1 family: adult, child, child +1F463 ; fully-qualified # 👣 E0.6 footprints + +# People & Body subtotal: 3290 +# People & Body subtotal: 560 w/o modifiers + +# group: Component + +# subgroup: skin-tone +1F3FB ; component # 🏻 E1.0 light skin tone +1F3FC ; component # 🏼 E1.0 medium-light skin tone +1F3FD ; component # 🏽 E1.0 medium skin tone +1F3FE ; component # 🏾 E1.0 medium-dark skin tone +1F3FF ; component # 🏿 E1.0 dark skin tone + +# subgroup: hair-style +1F9B0 ; component # 🦰 E11.0 red hair +1F9B1 ; component # 🦱 E11.0 curly hair +1F9B3 ; component # 🦳 E11.0 white hair +1F9B2 ; component # 🦲 E11.0 bald + +# Component subtotal: 9 +# Component subtotal: 4 w/o modifiers + +# group: Animals & Nature + +# subgroup: animal-mammal +1F435 ; fully-qualified # 🐵 E0.6 monkey face +1F412 ; fully-qualified # 🐒 E0.6 monkey +1F98D ; fully-qualified # 🦍 E3.0 gorilla +1F9A7 ; fully-qualified # 🦧 E12.0 orangutan +1F436 ; fully-qualified # 🐶 E0.6 dog face +1F415 ; fully-qualified # 🐕 E0.7 dog +1F9AE ; fully-qualified # 🦮 E12.0 guide dog +1F415 200D 1F9BA ; fully-qualified # 🐕‍🦺 E12.0 service dog +1F429 ; fully-qualified # 🐩 E0.6 poodle +1F43A ; fully-qualified # 🐺 E0.6 wolf +1F98A ; fully-qualified # 🦊 E3.0 fox +1F99D ; fully-qualified # 🦝 E11.0 raccoon +1F431 ; fully-qualified # 🐱 E0.6 cat face +1F408 ; fully-qualified # 🐈 E0.7 cat +1F408 200D 2B1B ; fully-qualified # 🐈‍⬛ E13.0 black cat +1F981 ; fully-qualified # 🦁 E1.0 lion +1F42F ; fully-qualified # 🐯 E0.6 tiger face +1F405 ; fully-qualified # 🐅 E1.0 tiger +1F406 ; fully-qualified # 🐆 E1.0 leopard +1F434 ; fully-qualified # 🐴 E0.6 horse face +1FACE ; fully-qualified # 🫎 E15.0 moose +1FACF ; fully-qualified # 🫏 E15.0 donkey +1F40E ; fully-qualified # 🐎 E0.6 horse +1F984 ; fully-qualified # 🦄 E1.0 unicorn +1F993 ; fully-qualified # 🦓 E5.0 zebra +1F98C ; fully-qualified # 🦌 E3.0 deer +1F9AC ; fully-qualified # 🦬 E13.0 bison +1F42E ; fully-qualified # 🐮 E0.6 cow face +1F402 ; fully-qualified # 🐂 E1.0 ox +1F403 ; fully-qualified # 🐃 E1.0 water buffalo +1F404 ; fully-qualified # 🐄 E1.0 cow +1F437 ; fully-qualified # 🐷 E0.6 pig face +1F416 ; fully-qualified # 🐖 E1.0 pig +1F417 ; fully-qualified # 🐗 E0.6 boar +1F43D ; fully-qualified # 🐽 E0.6 pig nose +1F40F ; fully-qualified # 🐏 E1.0 ram +1F411 ; fully-qualified # 🐑 E0.6 ewe +1F410 ; fully-qualified # 🐐 E1.0 goat +1F42A ; fully-qualified # 🐪 E1.0 camel +1F42B ; fully-qualified # 🐫 E0.6 two-hump camel +1F999 ; fully-qualified # 🦙 E11.0 llama +1F992 ; fully-qualified # 🦒 E5.0 giraffe +1F418 ; fully-qualified # 🐘 E0.6 elephant +1F9A3 ; fully-qualified # 🦣 E13.0 mammoth +1F98F ; fully-qualified # 🦏 E3.0 rhinoceros +1F99B ; fully-qualified # 🦛 E11.0 hippopotamus +1F42D ; fully-qualified # 🐭 E0.6 mouse face +1F401 ; fully-qualified # 🐁 E1.0 mouse +1F400 ; fully-qualified # 🐀 E1.0 rat +1F439 ; fully-qualified # 🐹 E0.6 hamster +1F430 ; fully-qualified # 🐰 E0.6 rabbit face +1F407 ; fully-qualified # 🐇 E1.0 rabbit +1F43F FE0F ; fully-qualified # 🐿️ E0.7 chipmunk +1F43F ; unqualified # 🐿 E0.7 chipmunk +1F9AB ; fully-qualified # 🦫 E13.0 beaver +1F994 ; fully-qualified # 🦔 E5.0 hedgehog +1F987 ; fully-qualified # 🦇 E3.0 bat +1F43B ; fully-qualified # 🐻 E0.6 bear +1F43B 200D 2744 FE0F ; fully-qualified # 🐻‍❄️ E13.0 polar bear +1F43B 200D 2744 ; minimally-qualified # 🐻‍❄ E13.0 polar bear +1F428 ; fully-qualified # 🐨 E0.6 koala +1F43C ; fully-qualified # 🐼 E0.6 panda +1F9A5 ; fully-qualified # 🦥 E12.0 sloth +1F9A6 ; fully-qualified # 🦦 E12.0 otter +1F9A8 ; fully-qualified # 🦨 E12.0 skunk +1F998 ; fully-qualified # 🦘 E11.0 kangaroo +1F9A1 ; fully-qualified # 🦡 E11.0 badger +1F43E ; fully-qualified # 🐾 E0.6 paw prints + +# subgroup: animal-bird +1F983 ; fully-qualified # 🦃 E1.0 turkey +1F414 ; fully-qualified # 🐔 E0.6 chicken +1F413 ; fully-qualified # 🐓 E1.0 rooster +1F423 ; fully-qualified # 🐣 E0.6 hatching chick +1F424 ; fully-qualified # 🐤 E0.6 baby chick +1F425 ; fully-qualified # 🐥 E0.6 front-facing baby chick +1F426 ; fully-qualified # 🐦 E0.6 bird +1F427 ; fully-qualified # 🐧 E0.6 penguin +1F54A FE0F ; fully-qualified # 🕊️ E0.7 dove +1F54A ; unqualified # 🕊 E0.7 dove +1F985 ; fully-qualified # 🦅 E3.0 eagle +1F986 ; fully-qualified # 🦆 E3.0 duck +1F9A2 ; fully-qualified # 🦢 E11.0 swan +1F989 ; fully-qualified # 🦉 E3.0 owl +1F9A4 ; fully-qualified # 🦤 E13.0 dodo +1FAB6 ; fully-qualified # 🪶 E13.0 feather +1F9A9 ; fully-qualified # 🦩 E12.0 flamingo +1F99A ; fully-qualified # 🦚 E11.0 peacock +1F99C ; fully-qualified # 🦜 E11.0 parrot +1FABD ; fully-qualified # 🪽 E15.0 wing +1F426 200D 2B1B ; fully-qualified # 🐦‍⬛ E15.0 black bird +1FABF ; fully-qualified # 🪿 E15.0 goose +1F426 200D 1F525 ; fully-qualified # 🐦‍🔥 E15.1 phoenix + +# subgroup: animal-amphibian +1F438 ; fully-qualified # 🐸 E0.6 frog + +# subgroup: animal-reptile +1F40A ; fully-qualified # 🐊 E1.0 crocodile +1F422 ; fully-qualified # 🐢 E0.6 turtle +1F98E ; fully-qualified # 🦎 E3.0 lizard +1F40D ; fully-qualified # 🐍 E0.6 snake +1F432 ; fully-qualified # 🐲 E0.6 dragon face +1F409 ; fully-qualified # 🐉 E1.0 dragon +1F995 ; fully-qualified # 🦕 E5.0 sauropod +1F996 ; fully-qualified # 🦖 E5.0 T-Rex + +# subgroup: animal-marine +1F433 ; fully-qualified # 🐳 E0.6 spouting whale +1F40B ; fully-qualified # 🐋 E1.0 whale +1F42C ; fully-qualified # 🐬 E0.6 dolphin +1F9AD ; fully-qualified # 🦭 E13.0 seal +1F41F ; fully-qualified # 🐟 E0.6 fish +1F420 ; fully-qualified # 🐠 E0.6 tropical fish +1F421 ; fully-qualified # 🐡 E0.6 blowfish +1F988 ; fully-qualified # 🦈 E3.0 shark +1F419 ; fully-qualified # 🐙 E0.6 octopus +1F41A ; fully-qualified # 🐚 E0.6 spiral shell +1FAB8 ; fully-qualified # 🪸 E14.0 coral +1FABC ; fully-qualified # 🪼 E15.0 jellyfish + +# subgroup: animal-bug +1F40C ; fully-qualified # 🐌 E0.6 snail +1F98B ; fully-qualified # 🦋 E3.0 butterfly +1F41B ; fully-qualified # 🐛 E0.6 bug +1F41C ; fully-qualified # 🐜 E0.6 ant +1F41D ; fully-qualified # 🐝 E0.6 honeybee +1FAB2 ; fully-qualified # 🪲 E13.0 beetle +1F41E ; fully-qualified # 🐞 E0.6 lady beetle +1F997 ; fully-qualified # 🦗 E5.0 cricket +1FAB3 ; fully-qualified # 🪳 E13.0 cockroach +1F577 FE0F ; fully-qualified # 🕷️ E0.7 spider +1F577 ; unqualified # 🕷 E0.7 spider +1F578 FE0F ; fully-qualified # 🕸️ E0.7 spider web +1F578 ; unqualified # 🕸 E0.7 spider web +1F982 ; fully-qualified # 🦂 E1.0 scorpion +1F99F ; fully-qualified # 🦟 E11.0 mosquito +1FAB0 ; fully-qualified # 🪰 E13.0 fly +1FAB1 ; fully-qualified # 🪱 E13.0 worm +1F9A0 ; fully-qualified # 🦠 E11.0 microbe + +# subgroup: plant-flower +1F490 ; fully-qualified # 💐 E0.6 bouquet +1F338 ; fully-qualified # 🌸 E0.6 cherry blossom +1F4AE ; fully-qualified # 💮 E0.6 white flower +1FAB7 ; fully-qualified # 🪷 E14.0 lotus +1F3F5 FE0F ; fully-qualified # 🏵️ E0.7 rosette +1F3F5 ; unqualified # 🏵 E0.7 rosette +1F339 ; fully-qualified # 🌹 E0.6 rose +1F940 ; fully-qualified # 🥀 E3.0 wilted flower +1F33A ; fully-qualified # 🌺 E0.6 hibiscus +1F33B ; fully-qualified # 🌻 E0.6 sunflower +1F33C ; fully-qualified # 🌼 E0.6 blossom +1F337 ; fully-qualified # 🌷 E0.6 tulip +1FABB ; fully-qualified # 🪻 E15.0 hyacinth + +# subgroup: plant-other +1F331 ; fully-qualified # 🌱 E0.6 seedling +1FAB4 ; fully-qualified # 🪴 E13.0 potted plant +1F332 ; fully-qualified # 🌲 E1.0 evergreen tree +1F333 ; fully-qualified # 🌳 E1.0 deciduous tree +1F334 ; fully-qualified # 🌴 E0.6 palm tree +1F335 ; fully-qualified # 🌵 E0.6 cactus +1F33E ; fully-qualified # 🌾 E0.6 sheaf of rice +1F33F ; fully-qualified # 🌿 E0.6 herb +2618 FE0F ; fully-qualified # ☘️ E1.0 shamrock +2618 ; unqualified # ☘ E1.0 shamrock +1F340 ; fully-qualified # 🍀 E0.6 four leaf clover +1F341 ; fully-qualified # 🍁 E0.6 maple leaf +1F342 ; fully-qualified # 🍂 E0.6 fallen leaf +1F343 ; fully-qualified # 🍃 E0.6 leaf fluttering in wind +1FAB9 ; fully-qualified # 🪹 E14.0 empty nest +1FABA ; fully-qualified # 🪺 E14.0 nest with eggs +1F344 ; fully-qualified # 🍄 E0.6 mushroom + +# Animals & Nature subtotal: 160 +# Animals & Nature subtotal: 160 w/o modifiers + +# group: Food & Drink + +# subgroup: food-fruit +1F347 ; fully-qualified # 🍇 E0.6 grapes +1F348 ; fully-qualified # 🍈 E0.6 melon +1F349 ; fully-qualified # 🍉 E0.6 watermelon +1F34A ; fully-qualified # 🍊 E0.6 tangerine +1F34B ; fully-qualified # 🍋 E1.0 lemon +1F34B 200D 1F7E9 ; fully-qualified # 🍋‍🟩 E15.1 lime +1F34C ; fully-qualified # 🍌 E0.6 banana +1F34D ; fully-qualified # 🍍 E0.6 pineapple +1F96D ; fully-qualified # 🥭 E11.0 mango +1F34E ; fully-qualified # 🍎 E0.6 red apple +1F34F ; fully-qualified # 🍏 E0.6 green apple +1F350 ; fully-qualified # 🍐 E1.0 pear +1F351 ; fully-qualified # 🍑 E0.6 peach +1F352 ; fully-qualified # 🍒 E0.6 cherries +1F353 ; fully-qualified # 🍓 E0.6 strawberry +1FAD0 ; fully-qualified # 🫐 E13.0 blueberries +1F95D ; fully-qualified # 🥝 E3.0 kiwi fruit +1F345 ; fully-qualified # 🍅 E0.6 tomato +1FAD2 ; fully-qualified # 🫒 E13.0 olive +1F965 ; fully-qualified # 🥥 E5.0 coconut + +# subgroup: food-vegetable +1F951 ; fully-qualified # 🥑 E3.0 avocado +1F346 ; fully-qualified # 🍆 E0.6 eggplant +1F954 ; fully-qualified # 🥔 E3.0 potato +1F955 ; fully-qualified # 🥕 E3.0 carrot +1F33D ; fully-qualified # 🌽 E0.6 ear of corn +1F336 FE0F ; fully-qualified # 🌶️ E0.7 hot pepper +1F336 ; unqualified # 🌶 E0.7 hot pepper +1FAD1 ; fully-qualified # 🫑 E13.0 bell pepper +1F952 ; fully-qualified # 🥒 E3.0 cucumber +1F96C ; fully-qualified # 🥬 E11.0 leafy green +1F966 ; fully-qualified # 🥦 E5.0 broccoli +1F9C4 ; fully-qualified # 🧄 E12.0 garlic +1F9C5 ; fully-qualified # 🧅 E12.0 onion +1F95C ; fully-qualified # 🥜 E3.0 peanuts +1FAD8 ; fully-qualified # 🫘 E14.0 beans +1F330 ; fully-qualified # 🌰 E0.6 chestnut +1FADA ; fully-qualified # 🫚 E15.0 ginger root +1FADB ; fully-qualified # 🫛 E15.0 pea pod +1F344 200D 1F7EB ; fully-qualified # 🍄‍🟫 E15.1 brown mushroom + +# subgroup: food-prepared +1F35E ; fully-qualified # 🍞 E0.6 bread +1F950 ; fully-qualified # 🥐 E3.0 croissant +1F956 ; fully-qualified # 🥖 E3.0 baguette bread +1FAD3 ; fully-qualified # 🫓 E13.0 flatbread +1F968 ; fully-qualified # 🥨 E5.0 pretzel +1F96F ; fully-qualified # 🥯 E11.0 bagel +1F95E ; fully-qualified # 🥞 E3.0 pancakes +1F9C7 ; fully-qualified # 🧇 E12.0 waffle +1F9C0 ; fully-qualified # 🧀 E1.0 cheese wedge +1F356 ; fully-qualified # 🍖 E0.6 meat on bone +1F357 ; fully-qualified # 🍗 E0.6 poultry leg +1F969 ; fully-qualified # 🥩 E5.0 cut of meat +1F953 ; fully-qualified # 🥓 E3.0 bacon +1F354 ; fully-qualified # 🍔 E0.6 hamburger +1F35F ; fully-qualified # 🍟 E0.6 french fries +1F355 ; fully-qualified # 🍕 E0.6 pizza +1F32D ; fully-qualified # 🌭 E1.0 hot dog +1F96A ; fully-qualified # 🥪 E5.0 sandwich +1F32E ; fully-qualified # 🌮 E1.0 taco +1F32F ; fully-qualified # 🌯 E1.0 burrito +1FAD4 ; fully-qualified # 🫔 E13.0 tamale +1F959 ; fully-qualified # 🥙 E3.0 stuffed flatbread +1F9C6 ; fully-qualified # 🧆 E12.0 falafel +1F95A ; fully-qualified # 🥚 E3.0 egg +1F373 ; fully-qualified # 🍳 E0.6 cooking +1F958 ; fully-qualified # 🥘 E3.0 shallow pan of food +1F372 ; fully-qualified # 🍲 E0.6 pot of food +1FAD5 ; fully-qualified # 🫕 E13.0 fondue +1F963 ; fully-qualified # 🥣 E5.0 bowl with spoon +1F957 ; fully-qualified # 🥗 E3.0 green salad +1F37F ; fully-qualified # 🍿 E1.0 popcorn +1F9C8 ; fully-qualified # 🧈 E12.0 butter +1F9C2 ; fully-qualified # 🧂 E11.0 salt +1F96B ; fully-qualified # 🥫 E5.0 canned food + +# subgroup: food-asian +1F371 ; fully-qualified # 🍱 E0.6 bento box +1F358 ; fully-qualified # 🍘 E0.6 rice cracker +1F359 ; fully-qualified # 🍙 E0.6 rice ball +1F35A ; fully-qualified # 🍚 E0.6 cooked rice +1F35B ; fully-qualified # 🍛 E0.6 curry rice +1F35C ; fully-qualified # 🍜 E0.6 steaming bowl +1F35D ; fully-qualified # 🍝 E0.6 spaghetti +1F360 ; fully-qualified # 🍠 E0.6 roasted sweet potato +1F362 ; fully-qualified # 🍢 E0.6 oden +1F363 ; fully-qualified # 🍣 E0.6 sushi +1F364 ; fully-qualified # 🍤 E0.6 fried shrimp +1F365 ; fully-qualified # 🍥 E0.6 fish cake with swirl +1F96E ; fully-qualified # 🥮 E11.0 moon cake +1F361 ; fully-qualified # 🍡 E0.6 dango +1F95F ; fully-qualified # 🥟 E5.0 dumpling +1F960 ; fully-qualified # 🥠 E5.0 fortune cookie +1F961 ; fully-qualified # 🥡 E5.0 takeout box + +# subgroup: food-marine +1F980 ; fully-qualified # 🦀 E1.0 crab +1F99E ; fully-qualified # 🦞 E11.0 lobster +1F990 ; fully-qualified # 🦐 E3.0 shrimp +1F991 ; fully-qualified # 🦑 E3.0 squid +1F9AA ; fully-qualified # 🦪 E12.0 oyster + +# subgroup: food-sweet +1F366 ; fully-qualified # 🍦 E0.6 soft ice cream +1F367 ; fully-qualified # 🍧 E0.6 shaved ice +1F368 ; fully-qualified # 🍨 E0.6 ice cream +1F369 ; fully-qualified # 🍩 E0.6 doughnut +1F36A ; fully-qualified # 🍪 E0.6 cookie +1F382 ; fully-qualified # 🎂 E0.6 birthday cake +1F370 ; fully-qualified # 🍰 E0.6 shortcake +1F9C1 ; fully-qualified # 🧁 E11.0 cupcake +1F967 ; fully-qualified # 🥧 E5.0 pie +1F36B ; fully-qualified # 🍫 E0.6 chocolate bar +1F36C ; fully-qualified # 🍬 E0.6 candy +1F36D ; fully-qualified # 🍭 E0.6 lollipop +1F36E ; fully-qualified # 🍮 E0.6 custard +1F36F ; fully-qualified # 🍯 E0.6 honey pot + +# subgroup: drink +1F37C ; fully-qualified # 🍼 E1.0 baby bottle +1F95B ; fully-qualified # 🥛 E3.0 glass of milk +2615 ; fully-qualified # ☕ E0.6 hot beverage +1FAD6 ; fully-qualified # 🫖 E13.0 teapot +1F375 ; fully-qualified # 🍵 E0.6 teacup without handle +1F376 ; fully-qualified # 🍶 E0.6 sake +1F37E ; fully-qualified # 🍾 E1.0 bottle with popping cork +1F377 ; fully-qualified # 🍷 E0.6 wine glass +1F378 ; fully-qualified # 🍸 E0.6 cocktail glass +1F379 ; fully-qualified # 🍹 E0.6 tropical drink +1F37A ; fully-qualified # 🍺 E0.6 beer mug +1F37B ; fully-qualified # 🍻 E0.6 clinking beer mugs +1F942 ; fully-qualified # 🥂 E3.0 clinking glasses +1F943 ; fully-qualified # 🥃 E3.0 tumbler glass +1FAD7 ; fully-qualified # 🫗 E14.0 pouring liquid +1F964 ; fully-qualified # 🥤 E5.0 cup with straw +1F9CB ; fully-qualified # 🧋 E13.0 bubble tea +1F9C3 ; fully-qualified # 🧃 E12.0 beverage box +1F9C9 ; fully-qualified # 🧉 E12.0 mate +1F9CA ; fully-qualified # 🧊 E12.0 ice + +# subgroup: dishware +1F962 ; fully-qualified # 🥢 E5.0 chopsticks +1F37D FE0F ; fully-qualified # 🍽️ E0.7 fork and knife with plate +1F37D ; unqualified # 🍽 E0.7 fork and knife with plate +1F374 ; fully-qualified # 🍴 E0.6 fork and knife +1F944 ; fully-qualified # 🥄 E3.0 spoon +1F52A ; fully-qualified # 🔪 E0.6 kitchen knife +1FAD9 ; fully-qualified # 🫙 E14.0 jar +1F3FA ; fully-qualified # 🏺 E1.0 amphora + +# Food & Drink subtotal: 137 +# Food & Drink subtotal: 137 w/o modifiers + +# group: Travel & Places + +# subgroup: place-map +1F30D ; fully-qualified # 🌍 E0.7 globe showing Europe-Africa +1F30E ; fully-qualified # 🌎 E0.7 globe showing Americas +1F30F ; fully-qualified # 🌏 E0.6 globe showing Asia-Australia +1F310 ; fully-qualified # 🌐 E1.0 globe with meridians +1F5FA FE0F ; fully-qualified # 🗺️ E0.7 world map +1F5FA ; unqualified # 🗺 E0.7 world map +1F5FE ; fully-qualified # 🗾 E0.6 map of Japan +1F9ED ; fully-qualified # 🧭 E11.0 compass + +# subgroup: place-geographic +1F3D4 FE0F ; fully-qualified # 🏔️ E0.7 snow-capped mountain +1F3D4 ; unqualified # 🏔 E0.7 snow-capped mountain +26F0 FE0F ; fully-qualified # ⛰️ E0.7 mountain +26F0 ; unqualified # ⛰ E0.7 mountain +1F30B ; fully-qualified # 🌋 E0.6 volcano +1F5FB ; fully-qualified # 🗻 E0.6 mount fuji +1F3D5 FE0F ; fully-qualified # 🏕️ E0.7 camping +1F3D5 ; unqualified # 🏕 E0.7 camping +1F3D6 FE0F ; fully-qualified # 🏖️ E0.7 beach with umbrella +1F3D6 ; unqualified # 🏖 E0.7 beach with umbrella +1F3DC FE0F ; fully-qualified # 🏜️ E0.7 desert +1F3DC ; unqualified # 🏜 E0.7 desert +1F3DD FE0F ; fully-qualified # 🏝️ E0.7 desert island +1F3DD ; unqualified # 🏝 E0.7 desert island +1F3DE FE0F ; fully-qualified # 🏞️ E0.7 national park +1F3DE ; unqualified # 🏞 E0.7 national park + +# subgroup: place-building +1F3DF FE0F ; fully-qualified # 🏟️ E0.7 stadium +1F3DF ; unqualified # 🏟 E0.7 stadium +1F3DB FE0F ; fully-qualified # 🏛️ E0.7 classical building +1F3DB ; unqualified # 🏛 E0.7 classical building +1F3D7 FE0F ; fully-qualified # 🏗️ E0.7 building construction +1F3D7 ; unqualified # 🏗 E0.7 building construction +1F9F1 ; fully-qualified # 🧱 E11.0 brick +1FAA8 ; fully-qualified # 🪨 E13.0 rock +1FAB5 ; fully-qualified # 🪵 E13.0 wood +1F6D6 ; fully-qualified # 🛖 E13.0 hut +1F3D8 FE0F ; fully-qualified # 🏘️ E0.7 houses +1F3D8 ; unqualified # 🏘 E0.7 houses +1F3DA FE0F ; fully-qualified # 🏚️ E0.7 derelict house +1F3DA ; unqualified # 🏚 E0.7 derelict house +1F3E0 ; fully-qualified # 🏠 E0.6 house +1F3E1 ; fully-qualified # 🏡 E0.6 house with garden +1F3E2 ; fully-qualified # 🏢 E0.6 office building +1F3E3 ; fully-qualified # 🏣 E0.6 Japanese post office +1F3E4 ; fully-qualified # 🏤 E1.0 post office +1F3E5 ; fully-qualified # 🏥 E0.6 hospital +1F3E6 ; fully-qualified # 🏦 E0.6 bank +1F3E8 ; fully-qualified # 🏨 E0.6 hotel +1F3E9 ; fully-qualified # 🏩 E0.6 love hotel +1F3EA ; fully-qualified # 🏪 E0.6 convenience store +1F3EB ; fully-qualified # 🏫 E0.6 school +1F3EC ; fully-qualified # 🏬 E0.6 department store +1F3ED ; fully-qualified # 🏭 E0.6 factory +1F3EF ; fully-qualified # 🏯 E0.6 Japanese castle +1F3F0 ; fully-qualified # 🏰 E0.6 castle +1F492 ; fully-qualified # 💒 E0.6 wedding +1F5FC ; fully-qualified # 🗼 E0.6 Tokyo tower +1F5FD ; fully-qualified # 🗽 E0.6 Statue of Liberty + +# subgroup: place-religious +26EA ; fully-qualified # ⛪ E0.6 church +1F54C ; fully-qualified # 🕌 E1.0 mosque +1F6D5 ; fully-qualified # 🛕 E12.0 hindu temple +1F54D ; fully-qualified # 🕍 E1.0 synagogue +26E9 FE0F ; fully-qualified # ⛩️ E0.7 shinto shrine +26E9 ; unqualified # ⛩ E0.7 shinto shrine +1F54B ; fully-qualified # 🕋 E1.0 kaaba + +# subgroup: place-other +26F2 ; fully-qualified # ⛲ E0.6 fountain +26FA ; fully-qualified # ⛺ E0.6 tent +1F301 ; fully-qualified # 🌁 E0.6 foggy +1F303 ; fully-qualified # 🌃 E0.6 night with stars +1F3D9 FE0F ; fully-qualified # 🏙️ E0.7 cityscape +1F3D9 ; unqualified # 🏙 E0.7 cityscape +1F304 ; fully-qualified # 🌄 E0.6 sunrise over mountains +1F305 ; fully-qualified # 🌅 E0.6 sunrise +1F306 ; fully-qualified # 🌆 E0.6 cityscape at dusk +1F307 ; fully-qualified # 🌇 E0.6 sunset +1F309 ; fully-qualified # 🌉 E0.6 bridge at night +2668 FE0F ; fully-qualified # ♨️ E0.6 hot springs +2668 ; unqualified # ♨ E0.6 hot springs +1F3A0 ; fully-qualified # 🎠 E0.6 carousel horse +1F6DD ; fully-qualified # 🛝 E14.0 playground slide +1F3A1 ; fully-qualified # 🎡 E0.6 ferris wheel +1F3A2 ; fully-qualified # 🎢 E0.6 roller coaster +1F488 ; fully-qualified # 💈 E0.6 barber pole +1F3AA ; fully-qualified # 🎪 E0.6 circus tent + +# subgroup: transport-ground +1F682 ; fully-qualified # 🚂 E1.0 locomotive +1F683 ; fully-qualified # 🚃 E0.6 railway car +1F684 ; fully-qualified # 🚄 E0.6 high-speed train +1F685 ; fully-qualified # 🚅 E0.6 bullet train +1F686 ; fully-qualified # 🚆 E1.0 train +1F687 ; fully-qualified # 🚇 E0.6 metro +1F688 ; fully-qualified # 🚈 E1.0 light rail +1F689 ; fully-qualified # 🚉 E0.6 station +1F68A ; fully-qualified # 🚊 E1.0 tram +1F69D ; fully-qualified # 🚝 E1.0 monorail +1F69E ; fully-qualified # 🚞 E1.0 mountain railway +1F68B ; fully-qualified # 🚋 E1.0 tram car +1F68C ; fully-qualified # 🚌 E0.6 bus +1F68D ; fully-qualified # 🚍 E0.7 oncoming bus +1F68E ; fully-qualified # 🚎 E1.0 trolleybus +1F690 ; fully-qualified # 🚐 E1.0 minibus +1F691 ; fully-qualified # 🚑 E0.6 ambulance +1F692 ; fully-qualified # 🚒 E0.6 fire engine +1F693 ; fully-qualified # 🚓 E0.6 police car +1F694 ; fully-qualified # 🚔 E0.7 oncoming police car +1F695 ; fully-qualified # 🚕 E0.6 taxi +1F696 ; fully-qualified # 🚖 E1.0 oncoming taxi +1F697 ; fully-qualified # 🚗 E0.6 automobile +1F698 ; fully-qualified # 🚘 E0.7 oncoming automobile +1F699 ; fully-qualified # 🚙 E0.6 sport utility vehicle +1F6FB ; fully-qualified # 🛻 E13.0 pickup truck +1F69A ; fully-qualified # 🚚 E0.6 delivery truck +1F69B ; fully-qualified # 🚛 E1.0 articulated lorry +1F69C ; fully-qualified # 🚜 E1.0 tractor +1F3CE FE0F ; fully-qualified # 🏎️ E0.7 racing car +1F3CE ; unqualified # 🏎 E0.7 racing car +1F3CD FE0F ; fully-qualified # 🏍️ E0.7 motorcycle +1F3CD ; unqualified # 🏍 E0.7 motorcycle +1F6F5 ; fully-qualified # 🛵 E3.0 motor scooter +1F9BD ; fully-qualified # 🦽 E12.0 manual wheelchair +1F9BC ; fully-qualified # 🦼 E12.0 motorized wheelchair +1F6FA ; fully-qualified # 🛺 E12.0 auto rickshaw +1F6B2 ; fully-qualified # 🚲 E0.6 bicycle +1F6F4 ; fully-qualified # 🛴 E3.0 kick scooter +1F6F9 ; fully-qualified # 🛹 E11.0 skateboard +1F6FC ; fully-qualified # 🛼 E13.0 roller skate +1F68F ; fully-qualified # 🚏 E0.6 bus stop +1F6E3 FE0F ; fully-qualified # 🛣️ E0.7 motorway +1F6E3 ; unqualified # 🛣 E0.7 motorway +1F6E4 FE0F ; fully-qualified # 🛤️ E0.7 railway track +1F6E4 ; unqualified # 🛤 E0.7 railway track +1F6E2 FE0F ; fully-qualified # 🛢️ E0.7 oil drum +1F6E2 ; unqualified # 🛢 E0.7 oil drum +26FD ; fully-qualified # ⛽ E0.6 fuel pump +1F6DE ; fully-qualified # 🛞 E14.0 wheel +1F6A8 ; fully-qualified # 🚨 E0.6 police car light +1F6A5 ; fully-qualified # 🚥 E0.6 horizontal traffic light +1F6A6 ; fully-qualified # 🚦 E1.0 vertical traffic light +1F6D1 ; fully-qualified # 🛑 E3.0 stop sign +1F6A7 ; fully-qualified # 🚧 E0.6 construction + +# subgroup: transport-water +2693 ; fully-qualified # ⚓ E0.6 anchor +1F6DF ; fully-qualified # 🛟 E14.0 ring buoy +26F5 ; fully-qualified # ⛵ E0.6 sailboat +1F6F6 ; fully-qualified # 🛶 E3.0 canoe +1F6A4 ; fully-qualified # 🚤 E0.6 speedboat +1F6F3 FE0F ; fully-qualified # 🛳️ E0.7 passenger ship +1F6F3 ; unqualified # 🛳 E0.7 passenger ship +26F4 FE0F ; fully-qualified # ⛴️ E0.7 ferry +26F4 ; unqualified # ⛴ E0.7 ferry +1F6E5 FE0F ; fully-qualified # 🛥️ E0.7 motor boat +1F6E5 ; unqualified # 🛥 E0.7 motor boat +1F6A2 ; fully-qualified # 🚢 E0.6 ship + +# subgroup: transport-air +2708 FE0F ; fully-qualified # ✈️ E0.6 airplane +2708 ; unqualified # ✈ E0.6 airplane +1F6E9 FE0F ; fully-qualified # 🛩️ E0.7 small airplane +1F6E9 ; unqualified # 🛩 E0.7 small airplane +1F6EB ; fully-qualified # 🛫 E1.0 airplane departure +1F6EC ; fully-qualified # 🛬 E1.0 airplane arrival +1FA82 ; fully-qualified # 🪂 E12.0 parachute +1F4BA ; fully-qualified # 💺 E0.6 seat +1F681 ; fully-qualified # 🚁 E1.0 helicopter +1F69F ; fully-qualified # 🚟 E1.0 suspension railway +1F6A0 ; fully-qualified # 🚠 E1.0 mountain cableway +1F6A1 ; fully-qualified # 🚡 E1.0 aerial tramway +1F6F0 FE0F ; fully-qualified # 🛰️ E0.7 satellite +1F6F0 ; unqualified # 🛰 E0.7 satellite +1F680 ; fully-qualified # 🚀 E0.6 rocket +1F6F8 ; fully-qualified # 🛸 E5.0 flying saucer + +# subgroup: hotel +1F6CE FE0F ; fully-qualified # 🛎️ E0.7 bellhop bell +1F6CE ; unqualified # 🛎 E0.7 bellhop bell +1F9F3 ; fully-qualified # 🧳 E11.0 luggage + +# subgroup: time +231B ; fully-qualified # ⌛ E0.6 hourglass done +23F3 ; fully-qualified # ⏳ E0.6 hourglass not done +231A ; fully-qualified # ⌚ E0.6 watch +23F0 ; fully-qualified # ⏰ E0.6 alarm clock +23F1 FE0F ; fully-qualified # ⏱️ E1.0 stopwatch +23F1 ; unqualified # ⏱ E1.0 stopwatch +23F2 FE0F ; fully-qualified # ⏲️ E1.0 timer clock +23F2 ; unqualified # ⏲ E1.0 timer clock +1F570 FE0F ; fully-qualified # 🕰️ E0.7 mantelpiece clock +1F570 ; unqualified # 🕰 E0.7 mantelpiece clock +1F55B ; fully-qualified # 🕛 E0.6 twelve o’clock +1F567 ; fully-qualified # 🕧 E0.7 twelve-thirty +1F550 ; fully-qualified # 🕐 E0.6 one o’clock +1F55C ; fully-qualified # 🕜 E0.7 one-thirty +1F551 ; fully-qualified # 🕑 E0.6 two o’clock +1F55D ; fully-qualified # 🕝 E0.7 two-thirty +1F552 ; fully-qualified # 🕒 E0.6 three o’clock +1F55E ; fully-qualified # 🕞 E0.7 three-thirty +1F553 ; fully-qualified # 🕓 E0.6 four o’clock +1F55F ; fully-qualified # 🕟 E0.7 four-thirty +1F554 ; fully-qualified # 🕔 E0.6 five o’clock +1F560 ; fully-qualified # 🕠 E0.7 five-thirty +1F555 ; fully-qualified # 🕕 E0.6 six o’clock +1F561 ; fully-qualified # 🕡 E0.7 six-thirty +1F556 ; fully-qualified # 🕖 E0.6 seven o’clock +1F562 ; fully-qualified # 🕢 E0.7 seven-thirty +1F557 ; fully-qualified # 🕗 E0.6 eight o’clock +1F563 ; fully-qualified # 🕣 E0.7 eight-thirty +1F558 ; fully-qualified # 🕘 E0.6 nine o’clock +1F564 ; fully-qualified # 🕤 E0.7 nine-thirty +1F559 ; fully-qualified # 🕙 E0.6 ten o’clock +1F565 ; fully-qualified # 🕥 E0.7 ten-thirty +1F55A ; fully-qualified # 🕚 E0.6 eleven o’clock +1F566 ; fully-qualified # 🕦 E0.7 eleven-thirty + +# subgroup: sky & weather +1F311 ; fully-qualified # 🌑 E0.6 new moon +1F312 ; fully-qualified # 🌒 E1.0 waxing crescent moon +1F313 ; fully-qualified # 🌓 E0.6 first quarter moon +1F314 ; fully-qualified # 🌔 E0.6 waxing gibbous moon +1F315 ; fully-qualified # 🌕 E0.6 full moon +1F316 ; fully-qualified # 🌖 E1.0 waning gibbous moon +1F317 ; fully-qualified # 🌗 E1.0 last quarter moon +1F318 ; fully-qualified # 🌘 E1.0 waning crescent moon +1F319 ; fully-qualified # 🌙 E0.6 crescent moon +1F31A ; fully-qualified # 🌚 E1.0 new moon face +1F31B ; fully-qualified # 🌛 E0.6 first quarter moon face +1F31C ; fully-qualified # 🌜 E0.7 last quarter moon face +1F321 FE0F ; fully-qualified # 🌡️ E0.7 thermometer +1F321 ; unqualified # 🌡 E0.7 thermometer +2600 FE0F ; fully-qualified # ☀️ E0.6 sun +2600 ; unqualified # ☀ E0.6 sun +1F31D ; fully-qualified # 🌝 E1.0 full moon face +1F31E ; fully-qualified # 🌞 E1.0 sun with face +1FA90 ; fully-qualified # 🪐 E12.0 ringed planet +2B50 ; fully-qualified # ⭐ E0.6 star +1F31F ; fully-qualified # 🌟 E0.6 glowing star +1F320 ; fully-qualified # 🌠 E0.6 shooting star +1F30C ; fully-qualified # 🌌 E0.6 milky way +2601 FE0F ; fully-qualified # ☁️ E0.6 cloud +2601 ; unqualified # ☁ E0.6 cloud +26C5 ; fully-qualified # ⛅ E0.6 sun behind cloud +26C8 FE0F ; fully-qualified # ⛈️ E0.7 cloud with lightning and rain +26C8 ; unqualified # ⛈ E0.7 cloud with lightning and rain +1F324 FE0F ; fully-qualified # 🌤️ E0.7 sun behind small cloud +1F324 ; unqualified # 🌤 E0.7 sun behind small cloud +1F325 FE0F ; fully-qualified # 🌥️ E0.7 sun behind large cloud +1F325 ; unqualified # 🌥 E0.7 sun behind large cloud +1F326 FE0F ; fully-qualified # 🌦️ E0.7 sun behind rain cloud +1F326 ; unqualified # 🌦 E0.7 sun behind rain cloud +1F327 FE0F ; fully-qualified # 🌧️ E0.7 cloud with rain +1F327 ; unqualified # 🌧 E0.7 cloud with rain +1F328 FE0F ; fully-qualified # 🌨️ E0.7 cloud with snow +1F328 ; unqualified # 🌨 E0.7 cloud with snow +1F329 FE0F ; fully-qualified # 🌩️ E0.7 cloud with lightning +1F329 ; unqualified # 🌩 E0.7 cloud with lightning +1F32A FE0F ; fully-qualified # 🌪️ E0.7 tornado +1F32A ; unqualified # 🌪 E0.7 tornado +1F32B FE0F ; fully-qualified # 🌫️ E0.7 fog +1F32B ; unqualified # 🌫 E0.7 fog +1F32C FE0F ; fully-qualified # 🌬️ E0.7 wind face +1F32C ; unqualified # 🌬 E0.7 wind face +1F300 ; fully-qualified # 🌀 E0.6 cyclone +1F308 ; fully-qualified # 🌈 E0.6 rainbow +1F302 ; fully-qualified # 🌂 E0.6 closed umbrella +2602 FE0F ; fully-qualified # ☂️ E0.7 umbrella +2602 ; unqualified # ☂ E0.7 umbrella +2614 ; fully-qualified # ☔ E0.6 umbrella with rain drops +26F1 FE0F ; fully-qualified # ⛱️ E0.7 umbrella on ground +26F1 ; unqualified # ⛱ E0.7 umbrella on ground +26A1 ; fully-qualified # ⚡ E0.6 high voltage +2744 FE0F ; fully-qualified # ❄️ E0.6 snowflake +2744 ; unqualified # ❄ E0.6 snowflake +2603 FE0F ; fully-qualified # ☃️ E0.7 snowman +2603 ; unqualified # ☃ E0.7 snowman +26C4 ; fully-qualified # ⛄ E0.6 snowman without snow +2604 FE0F ; fully-qualified # ☄️ E1.0 comet +2604 ; unqualified # ☄ E1.0 comet +1F525 ; fully-qualified # 🔥 E0.6 fire +1F4A7 ; fully-qualified # 💧 E0.6 droplet +1F30A ; fully-qualified # 🌊 E0.6 water wave + +# Travel & Places subtotal: 267 +# Travel & Places subtotal: 267 w/o modifiers + +# group: Activities + +# subgroup: event +1F383 ; fully-qualified # 🎃 E0.6 jack-o-lantern +1F384 ; fully-qualified # 🎄 E0.6 Christmas tree +1F386 ; fully-qualified # 🎆 E0.6 fireworks +1F387 ; fully-qualified # 🎇 E0.6 sparkler +1F9E8 ; fully-qualified # 🧨 E11.0 firecracker +2728 ; fully-qualified # ✨ E0.6 sparkles +1F388 ; fully-qualified # 🎈 E0.6 balloon +1F389 ; fully-qualified # 🎉 E0.6 party popper +1F38A ; fully-qualified # 🎊 E0.6 confetti ball +1F38B ; fully-qualified # 🎋 E0.6 tanabata tree +1F38D ; fully-qualified # 🎍 E0.6 pine decoration +1F38E ; fully-qualified # 🎎 E0.6 Japanese dolls +1F38F ; fully-qualified # 🎏 E0.6 carp streamer +1F390 ; fully-qualified # 🎐 E0.6 wind chime +1F391 ; fully-qualified # 🎑 E0.6 moon viewing ceremony +1F9E7 ; fully-qualified # 🧧 E11.0 red envelope +1F380 ; fully-qualified # 🎀 E0.6 ribbon +1F381 ; fully-qualified # 🎁 E0.6 wrapped gift +1F397 FE0F ; fully-qualified # 🎗️ E0.7 reminder ribbon +1F397 ; unqualified # 🎗 E0.7 reminder ribbon +1F39F FE0F ; fully-qualified # 🎟️ E0.7 admission tickets +1F39F ; unqualified # 🎟 E0.7 admission tickets +1F3AB ; fully-qualified # 🎫 E0.6 ticket + +# subgroup: award-medal +1F396 FE0F ; fully-qualified # 🎖️ E0.7 military medal +1F396 ; unqualified # 🎖 E0.7 military medal +1F3C6 ; fully-qualified # 🏆 E0.6 trophy +1F3C5 ; fully-qualified # 🏅 E1.0 sports medal +1F947 ; fully-qualified # 🥇 E3.0 1st place medal +1F948 ; fully-qualified # 🥈 E3.0 2nd place medal +1F949 ; fully-qualified # 🥉 E3.0 3rd place medal + +# subgroup: sport +26BD ; fully-qualified # ⚽ E0.6 soccer ball +26BE ; fully-qualified # ⚾ E0.6 baseball +1F94E ; fully-qualified # 🥎 E11.0 softball +1F3C0 ; fully-qualified # 🏀 E0.6 basketball +1F3D0 ; fully-qualified # 🏐 E1.0 volleyball +1F3C8 ; fully-qualified # 🏈 E0.6 american football +1F3C9 ; fully-qualified # 🏉 E1.0 rugby football +1F3BE ; fully-qualified # 🎾 E0.6 tennis +1F94F ; fully-qualified # 🥏 E11.0 flying disc +1F3B3 ; fully-qualified # 🎳 E0.6 bowling +1F3CF ; fully-qualified # 🏏 E1.0 cricket game +1F3D1 ; fully-qualified # 🏑 E1.0 field hockey +1F3D2 ; fully-qualified # 🏒 E1.0 ice hockey +1F94D ; fully-qualified # 🥍 E11.0 lacrosse +1F3D3 ; fully-qualified # 🏓 E1.0 ping pong +1F3F8 ; fully-qualified # 🏸 E1.0 badminton +1F94A ; fully-qualified # 🥊 E3.0 boxing glove +1F94B ; fully-qualified # 🥋 E3.0 martial arts uniform +1F945 ; fully-qualified # 🥅 E3.0 goal net +26F3 ; fully-qualified # ⛳ E0.6 flag in hole +26F8 FE0F ; fully-qualified # ⛸️ E0.7 ice skate +26F8 ; unqualified # ⛸ E0.7 ice skate +1F3A3 ; fully-qualified # 🎣 E0.6 fishing pole +1F93F ; fully-qualified # 🤿 E12.0 diving mask +1F3BD ; fully-qualified # 🎽 E0.6 running shirt +1F3BF ; fully-qualified # 🎿 E0.6 skis +1F6F7 ; fully-qualified # 🛷 E5.0 sled +1F94C ; fully-qualified # 🥌 E5.0 curling stone + +# subgroup: game +1F3AF ; fully-qualified # 🎯 E0.6 bullseye +1FA80 ; fully-qualified # 🪀 E12.0 yo-yo +1FA81 ; fully-qualified # 🪁 E12.0 kite +1F52B ; fully-qualified # 🔫 E0.6 water pistol +1F3B1 ; fully-qualified # 🎱 E0.6 pool 8 ball +1F52E ; fully-qualified # 🔮 E0.6 crystal ball +1FA84 ; fully-qualified # 🪄 E13.0 magic wand +1F3AE ; fully-qualified # 🎮 E0.6 video game +1F579 FE0F ; fully-qualified # 🕹️ E0.7 joystick +1F579 ; unqualified # 🕹 E0.7 joystick +1F3B0 ; fully-qualified # 🎰 E0.6 slot machine +1F3B2 ; fully-qualified # 🎲 E0.6 game die +1F9E9 ; fully-qualified # 🧩 E11.0 puzzle piece +1F9F8 ; fully-qualified # 🧸 E11.0 teddy bear +1FA85 ; fully-qualified # 🪅 E13.0 piñata +1FAA9 ; fully-qualified # 🪩 E14.0 mirror ball +1FA86 ; fully-qualified # 🪆 E13.0 nesting dolls +2660 FE0F ; fully-qualified # ♠️ E0.6 spade suit +2660 ; unqualified # ♠ E0.6 spade suit +2665 FE0F ; fully-qualified # ♥️ E0.6 heart suit +2665 ; unqualified # ♥ E0.6 heart suit +2666 FE0F ; fully-qualified # ♦️ E0.6 diamond suit +2666 ; unqualified # ♦ E0.6 diamond suit +2663 FE0F ; fully-qualified # ♣️ E0.6 club suit +2663 ; unqualified # ♣ E0.6 club suit +265F FE0F ; fully-qualified # ♟️ E11.0 chess pawn +265F ; unqualified # ♟ E11.0 chess pawn +1F0CF ; fully-qualified # 🃏 E0.6 joker +1F004 ; fully-qualified # 🀄 E0.6 mahjong red dragon +1F3B4 ; fully-qualified # 🎴 E0.6 flower playing cards + +# subgroup: arts & crafts +1F3AD ; fully-qualified # 🎭 E0.6 performing arts +1F5BC FE0F ; fully-qualified # 🖼️ E0.7 framed picture +1F5BC ; unqualified # 🖼 E0.7 framed picture +1F3A8 ; fully-qualified # 🎨 E0.6 artist palette +1F9F5 ; fully-qualified # 🧵 E11.0 thread +1FAA1 ; fully-qualified # 🪡 E13.0 sewing needle +1F9F6 ; fully-qualified # 🧶 E11.0 yarn +1FAA2 ; fully-qualified # 🪢 E13.0 knot + +# Activities subtotal: 96 +# Activities subtotal: 96 w/o modifiers + +# group: Objects + +# subgroup: clothing +1F453 ; fully-qualified # 👓 E0.6 glasses +1F576 FE0F ; fully-qualified # 🕶️ E0.7 sunglasses +1F576 ; unqualified # 🕶 E0.7 sunglasses +1F97D ; fully-qualified # 🥽 E11.0 goggles +1F97C ; fully-qualified # 🥼 E11.0 lab coat +1F9BA ; fully-qualified # 🦺 E12.0 safety vest +1F454 ; fully-qualified # 👔 E0.6 necktie +1F455 ; fully-qualified # 👕 E0.6 t-shirt +1F456 ; fully-qualified # 👖 E0.6 jeans +1F9E3 ; fully-qualified # 🧣 E5.0 scarf +1F9E4 ; fully-qualified # 🧤 E5.0 gloves +1F9E5 ; fully-qualified # 🧥 E5.0 coat +1F9E6 ; fully-qualified # 🧦 E5.0 socks +1F457 ; fully-qualified # 👗 E0.6 dress +1F458 ; fully-qualified # 👘 E0.6 kimono +1F97B ; fully-qualified # 🥻 E12.0 sari +1FA71 ; fully-qualified # 🩱 E12.0 one-piece swimsuit +1FA72 ; fully-qualified # 🩲 E12.0 briefs +1FA73 ; fully-qualified # 🩳 E12.0 shorts +1F459 ; fully-qualified # 👙 E0.6 bikini +1F45A ; fully-qualified # 👚 E0.6 woman’s clothes +1FAAD ; fully-qualified # 🪭 E15.0 folding hand fan +1F45B ; fully-qualified # 👛 E0.6 purse +1F45C ; fully-qualified # 👜 E0.6 handbag +1F45D ; fully-qualified # 👝 E0.6 clutch bag +1F6CD FE0F ; fully-qualified # 🛍️ E0.7 shopping bags +1F6CD ; unqualified # 🛍 E0.7 shopping bags +1F392 ; fully-qualified # 🎒 E0.6 backpack +1FA74 ; fully-qualified # 🩴 E13.0 thong sandal +1F45E ; fully-qualified # 👞 E0.6 man’s shoe +1F45F ; fully-qualified # 👟 E0.6 running shoe +1F97E ; fully-qualified # 🥾 E11.0 hiking boot +1F97F ; fully-qualified # 🥿 E11.0 flat shoe +1F460 ; fully-qualified # 👠 E0.6 high-heeled shoe +1F461 ; fully-qualified # 👡 E0.6 woman’s sandal +1FA70 ; fully-qualified # 🩰 E12.0 ballet shoes +1F462 ; fully-qualified # 👢 E0.6 woman’s boot +1FAAE ; fully-qualified # 🪮 E15.0 hair pick +1F451 ; fully-qualified # 👑 E0.6 crown +1F452 ; fully-qualified # 👒 E0.6 woman’s hat +1F3A9 ; fully-qualified # 🎩 E0.6 top hat +1F393 ; fully-qualified # 🎓 E0.6 graduation cap +1F9E2 ; fully-qualified # 🧢 E5.0 billed cap +1FA96 ; fully-qualified # 🪖 E13.0 military helmet +26D1 FE0F ; fully-qualified # ⛑️ E0.7 rescue worker’s helmet +26D1 ; unqualified # ⛑ E0.7 rescue worker’s helmet +1F4FF ; fully-qualified # 📿 E1.0 prayer beads +1F484 ; fully-qualified # 💄 E0.6 lipstick +1F48D ; fully-qualified # 💍 E0.6 ring +1F48E ; fully-qualified # 💎 E0.6 gem stone + +# subgroup: sound +1F507 ; fully-qualified # 🔇 E1.0 muted speaker +1F508 ; fully-qualified # 🔈 E0.7 speaker low volume +1F509 ; fully-qualified # 🔉 E1.0 speaker medium volume +1F50A ; fully-qualified # 🔊 E0.6 speaker high volume +1F4E2 ; fully-qualified # 📢 E0.6 loudspeaker +1F4E3 ; fully-qualified # 📣 E0.6 megaphone +1F4EF ; fully-qualified # 📯 E1.0 postal horn +1F514 ; fully-qualified # 🔔 E0.6 bell +1F515 ; fully-qualified # 🔕 E1.0 bell with slash + +# subgroup: music +1F3BC ; fully-qualified # 🎼 E0.6 musical score +1F3B5 ; fully-qualified # 🎵 E0.6 musical note +1F3B6 ; fully-qualified # 🎶 E0.6 musical notes +1F399 FE0F ; fully-qualified # 🎙️ E0.7 studio microphone +1F399 ; unqualified # 🎙 E0.7 studio microphone +1F39A FE0F ; fully-qualified # 🎚️ E0.7 level slider +1F39A ; unqualified # 🎚 E0.7 level slider +1F39B FE0F ; fully-qualified # 🎛️ E0.7 control knobs +1F39B ; unqualified # 🎛 E0.7 control knobs +1F3A4 ; fully-qualified # 🎤 E0.6 microphone +1F3A7 ; fully-qualified # 🎧 E0.6 headphone +1F4FB ; fully-qualified # 📻 E0.6 radio + +# subgroup: musical-instrument +1F3B7 ; fully-qualified # 🎷 E0.6 saxophone +1FA97 ; fully-qualified # 🪗 E13.0 accordion +1F3B8 ; fully-qualified # 🎸 E0.6 guitar +1F3B9 ; fully-qualified # 🎹 E0.6 musical keyboard +1F3BA ; fully-qualified # 🎺 E0.6 trumpet +1F3BB ; fully-qualified # 🎻 E0.6 violin +1FA95 ; fully-qualified # 🪕 E12.0 banjo +1F941 ; fully-qualified # 🥁 E3.0 drum +1FA98 ; fully-qualified # 🪘 E13.0 long drum +1FA87 ; fully-qualified # 🪇 E15.0 maracas +1FA88 ; fully-qualified # 🪈 E15.0 flute + +# subgroup: phone +1F4F1 ; fully-qualified # 📱 E0.6 mobile phone +1F4F2 ; fully-qualified # 📲 E0.6 mobile phone with arrow +260E FE0F ; fully-qualified # ☎️ E0.6 telephone +260E ; unqualified # ☎ E0.6 telephone +1F4DE ; fully-qualified # 📞 E0.6 telephone receiver +1F4DF ; fully-qualified # 📟 E0.6 pager +1F4E0 ; fully-qualified # 📠 E0.6 fax machine + +# subgroup: computer +1F50B ; fully-qualified # 🔋 E0.6 battery +1FAAB ; fully-qualified # 🪫 E14.0 low battery +1F50C ; fully-qualified # 🔌 E0.6 electric plug +1F4BB ; fully-qualified # 💻 E0.6 laptop +1F5A5 FE0F ; fully-qualified # 🖥️ E0.7 desktop computer +1F5A5 ; unqualified # 🖥 E0.7 desktop computer +1F5A8 FE0F ; fully-qualified # 🖨️ E0.7 printer +1F5A8 ; unqualified # 🖨 E0.7 printer +2328 FE0F ; fully-qualified # ⌨️ E1.0 keyboard +2328 ; unqualified # ⌨ E1.0 keyboard +1F5B1 FE0F ; fully-qualified # 🖱️ E0.7 computer mouse +1F5B1 ; unqualified # 🖱 E0.7 computer mouse +1F5B2 FE0F ; fully-qualified # 🖲️ E0.7 trackball +1F5B2 ; unqualified # 🖲 E0.7 trackball +1F4BD ; fully-qualified # 💽 E0.6 computer disk +1F4BE ; fully-qualified # 💾 E0.6 floppy disk +1F4BF ; fully-qualified # 💿 E0.6 optical disk +1F4C0 ; fully-qualified # 📀 E0.6 dvd +1F9EE ; fully-qualified # 🧮 E11.0 abacus + +# subgroup: light & video +1F3A5 ; fully-qualified # 🎥 E0.6 movie camera +1F39E FE0F ; fully-qualified # 🎞️ E0.7 film frames +1F39E ; unqualified # 🎞 E0.7 film frames +1F4FD FE0F ; fully-qualified # 📽️ E0.7 film projector +1F4FD ; unqualified # 📽 E0.7 film projector +1F3AC ; fully-qualified # 🎬 E0.6 clapper board +1F4FA ; fully-qualified # 📺 E0.6 television +1F4F7 ; fully-qualified # 📷 E0.6 camera +1F4F8 ; fully-qualified # 📸 E1.0 camera with flash +1F4F9 ; fully-qualified # 📹 E0.6 video camera +1F4FC ; fully-qualified # 📼 E0.6 videocassette +1F50D ; fully-qualified # 🔍 E0.6 magnifying glass tilted left +1F50E ; fully-qualified # 🔎 E0.6 magnifying glass tilted right +1F56F FE0F ; fully-qualified # 🕯️ E0.7 candle +1F56F ; unqualified # 🕯 E0.7 candle +1F4A1 ; fully-qualified # 💡 E0.6 light bulb +1F526 ; fully-qualified # 🔦 E0.6 flashlight +1F3EE ; fully-qualified # 🏮 E0.6 red paper lantern +1FA94 ; fully-qualified # 🪔 E12.0 diya lamp + +# subgroup: book-paper +1F4D4 ; fully-qualified # 📔 E0.6 notebook with decorative cover +1F4D5 ; fully-qualified # 📕 E0.6 closed book +1F4D6 ; fully-qualified # 📖 E0.6 open book +1F4D7 ; fully-qualified # 📗 E0.6 green book +1F4D8 ; fully-qualified # 📘 E0.6 blue book +1F4D9 ; fully-qualified # 📙 E0.6 orange book +1F4DA ; fully-qualified # 📚 E0.6 books +1F4D3 ; fully-qualified # 📓 E0.6 notebook +1F4D2 ; fully-qualified # 📒 E0.6 ledger +1F4C3 ; fully-qualified # 📃 E0.6 page with curl +1F4DC ; fully-qualified # 📜 E0.6 scroll +1F4C4 ; fully-qualified # 📄 E0.6 page facing up +1F4F0 ; fully-qualified # 📰 E0.6 newspaper +1F5DE FE0F ; fully-qualified # 🗞️ E0.7 rolled-up newspaper +1F5DE ; unqualified # 🗞 E0.7 rolled-up newspaper +1F4D1 ; fully-qualified # 📑 E0.6 bookmark tabs +1F516 ; fully-qualified # 🔖 E0.6 bookmark +1F3F7 FE0F ; fully-qualified # 🏷️ E0.7 label +1F3F7 ; unqualified # 🏷 E0.7 label + +# subgroup: money +1F4B0 ; fully-qualified # 💰 E0.6 money bag +1FA99 ; fully-qualified # 🪙 E13.0 coin +1F4B4 ; fully-qualified # 💴 E0.6 yen banknote +1F4B5 ; fully-qualified # 💵 E0.6 dollar banknote +1F4B6 ; fully-qualified # 💶 E1.0 euro banknote +1F4B7 ; fully-qualified # 💷 E1.0 pound banknote +1F4B8 ; fully-qualified # 💸 E0.6 money with wings +1F4B3 ; fully-qualified # 💳 E0.6 credit card +1F9FE ; fully-qualified # 🧾 E11.0 receipt +1F4B9 ; fully-qualified # 💹 E0.6 chart increasing with yen + +# subgroup: mail +2709 FE0F ; fully-qualified # ✉️ E0.6 envelope +2709 ; unqualified # ✉ E0.6 envelope +1F4E7 ; fully-qualified # 📧 E0.6 e-mail +1F4E8 ; fully-qualified # 📨 E0.6 incoming envelope +1F4E9 ; fully-qualified # 📩 E0.6 envelope with arrow +1F4E4 ; fully-qualified # 📤 E0.6 outbox tray +1F4E5 ; fully-qualified # 📥 E0.6 inbox tray +1F4E6 ; fully-qualified # 📦 E0.6 package +1F4EB ; fully-qualified # 📫 E0.6 closed mailbox with raised flag +1F4EA ; fully-qualified # 📪 E0.6 closed mailbox with lowered flag +1F4EC ; fully-qualified # 📬 E0.7 open mailbox with raised flag +1F4ED ; fully-qualified # 📭 E0.7 open mailbox with lowered flag +1F4EE ; fully-qualified # 📮 E0.6 postbox +1F5F3 FE0F ; fully-qualified # 🗳️ E0.7 ballot box with ballot +1F5F3 ; unqualified # 🗳 E0.7 ballot box with ballot + +# subgroup: writing +270F FE0F ; fully-qualified # ✏️ E0.6 pencil +270F ; unqualified # ✏ E0.6 pencil +2712 FE0F ; fully-qualified # ✒️ E0.6 black nib +2712 ; unqualified # ✒ E0.6 black nib +1F58B FE0F ; fully-qualified # 🖋️ E0.7 fountain pen +1F58B ; unqualified # 🖋 E0.7 fountain pen +1F58A FE0F ; fully-qualified # 🖊️ E0.7 pen +1F58A ; unqualified # 🖊 E0.7 pen +1F58C FE0F ; fully-qualified # 🖌️ E0.7 paintbrush +1F58C ; unqualified # 🖌 E0.7 paintbrush +1F58D FE0F ; fully-qualified # 🖍️ E0.7 crayon +1F58D ; unqualified # 🖍 E0.7 crayon +1F4DD ; fully-qualified # 📝 E0.6 memo + +# subgroup: office +1F4BC ; fully-qualified # 💼 E0.6 briefcase +1F4C1 ; fully-qualified # 📁 E0.6 file folder +1F4C2 ; fully-qualified # 📂 E0.6 open file folder +1F5C2 FE0F ; fully-qualified # 🗂️ E0.7 card index dividers +1F5C2 ; unqualified # 🗂 E0.7 card index dividers +1F4C5 ; fully-qualified # 📅 E0.6 calendar +1F4C6 ; fully-qualified # 📆 E0.6 tear-off calendar +1F5D2 FE0F ; fully-qualified # 🗒️ E0.7 spiral notepad +1F5D2 ; unqualified # 🗒 E0.7 spiral notepad +1F5D3 FE0F ; fully-qualified # 🗓️ E0.7 spiral calendar +1F5D3 ; unqualified # 🗓 E0.7 spiral calendar +1F4C7 ; fully-qualified # 📇 E0.6 card index +1F4C8 ; fully-qualified # 📈 E0.6 chart increasing +1F4C9 ; fully-qualified # 📉 E0.6 chart decreasing +1F4CA ; fully-qualified # 📊 E0.6 bar chart +1F4CB ; fully-qualified # 📋 E0.6 clipboard +1F4CC ; fully-qualified # 📌 E0.6 pushpin +1F4CD ; fully-qualified # 📍 E0.6 round pushpin +1F4CE ; fully-qualified # 📎 E0.6 paperclip +1F587 FE0F ; fully-qualified # 🖇️ E0.7 linked paperclips +1F587 ; unqualified # 🖇 E0.7 linked paperclips +1F4CF ; fully-qualified # 📏 E0.6 straight ruler +1F4D0 ; fully-qualified # 📐 E0.6 triangular ruler +2702 FE0F ; fully-qualified # ✂️ E0.6 scissors +2702 ; unqualified # ✂ E0.6 scissors +1F5C3 FE0F ; fully-qualified # 🗃️ E0.7 card file box +1F5C3 ; unqualified # 🗃 E0.7 card file box +1F5C4 FE0F ; fully-qualified # 🗄️ E0.7 file cabinet +1F5C4 ; unqualified # 🗄 E0.7 file cabinet +1F5D1 FE0F ; fully-qualified # 🗑️ E0.7 wastebasket +1F5D1 ; unqualified # 🗑 E0.7 wastebasket + +# subgroup: lock +1F512 ; fully-qualified # 🔒 E0.6 locked +1F513 ; fully-qualified # 🔓 E0.6 unlocked +1F50F ; fully-qualified # 🔏 E0.6 locked with pen +1F510 ; fully-qualified # 🔐 E0.6 locked with key +1F511 ; fully-qualified # 🔑 E0.6 key +1F5DD FE0F ; fully-qualified # 🗝️ E0.7 old key +1F5DD ; unqualified # 🗝 E0.7 old key + +# subgroup: tool +1F528 ; fully-qualified # 🔨 E0.6 hammer +1FA93 ; fully-qualified # 🪓 E12.0 axe +26CF FE0F ; fully-qualified # ⛏️ E0.7 pick +26CF ; unqualified # ⛏ E0.7 pick +2692 FE0F ; fully-qualified # ⚒️ E1.0 hammer and pick +2692 ; unqualified # ⚒ E1.0 hammer and pick +1F6E0 FE0F ; fully-qualified # 🛠️ E0.7 hammer and wrench +1F6E0 ; unqualified # 🛠 E0.7 hammer and wrench +1F5E1 FE0F ; fully-qualified # 🗡️ E0.7 dagger +1F5E1 ; unqualified # 🗡 E0.7 dagger +2694 FE0F ; fully-qualified # ⚔️ E1.0 crossed swords +2694 ; unqualified # ⚔ E1.0 crossed swords +1F4A3 ; fully-qualified # 💣 E0.6 bomb +1FA83 ; fully-qualified # 🪃 E13.0 boomerang +1F3F9 ; fully-qualified # 🏹 E1.0 bow and arrow +1F6E1 FE0F ; fully-qualified # 🛡️ E0.7 shield +1F6E1 ; unqualified # 🛡 E0.7 shield +1FA9A ; fully-qualified # 🪚 E13.0 carpentry saw +1F527 ; fully-qualified # 🔧 E0.6 wrench +1FA9B ; fully-qualified # 🪛 E13.0 screwdriver +1F529 ; fully-qualified # 🔩 E0.6 nut and bolt +2699 FE0F ; fully-qualified # ⚙️ E1.0 gear +2699 ; unqualified # ⚙ E1.0 gear +1F5DC FE0F ; fully-qualified # 🗜️ E0.7 clamp +1F5DC ; unqualified # 🗜 E0.7 clamp +2696 FE0F ; fully-qualified # ⚖️ E1.0 balance scale +2696 ; unqualified # ⚖ E1.0 balance scale +1F9AF ; fully-qualified # 🦯 E12.0 white cane +1F517 ; fully-qualified # 🔗 E0.6 link +26D3 FE0F 200D 1F4A5 ; fully-qualified # ⛓️‍💥 E15.1 broken chain +26D3 200D 1F4A5 ; unqualified # ⛓‍💥 E15.1 broken chain +26D3 FE0F ; fully-qualified # ⛓️ E0.7 chains +26D3 ; unqualified # ⛓ E0.7 chains +1FA9D ; fully-qualified # 🪝 E13.0 hook +1F9F0 ; fully-qualified # 🧰 E11.0 toolbox +1F9F2 ; fully-qualified # 🧲 E11.0 magnet +1FA9C ; fully-qualified # 🪜 E13.0 ladder + +# subgroup: science +2697 FE0F ; fully-qualified # ⚗️ E1.0 alembic +2697 ; unqualified # ⚗ E1.0 alembic +1F9EA ; fully-qualified # 🧪 E11.0 test tube +1F9EB ; fully-qualified # 🧫 E11.0 petri dish +1F9EC ; fully-qualified # 🧬 E11.0 dna +1F52C ; fully-qualified # 🔬 E1.0 microscope +1F52D ; fully-qualified # 🔭 E1.0 telescope +1F4E1 ; fully-qualified # 📡 E0.6 satellite antenna + +# subgroup: medical +1F489 ; fully-qualified # 💉 E0.6 syringe +1FA78 ; fully-qualified # 🩸 E12.0 drop of blood +1F48A ; fully-qualified # 💊 E0.6 pill +1FA79 ; fully-qualified # 🩹 E12.0 adhesive bandage +1FA7C ; fully-qualified # 🩼 E14.0 crutch +1FA7A ; fully-qualified # 🩺 E12.0 stethoscope +1FA7B ; fully-qualified # 🩻 E14.0 x-ray + +# subgroup: household +1F6AA ; fully-qualified # 🚪 E0.6 door +1F6D7 ; fully-qualified # 🛗 E13.0 elevator +1FA9E ; fully-qualified # 🪞 E13.0 mirror +1FA9F ; fully-qualified # 🪟 E13.0 window +1F6CF FE0F ; fully-qualified # 🛏️ E0.7 bed +1F6CF ; unqualified # 🛏 E0.7 bed +1F6CB FE0F ; fully-qualified # 🛋️ E0.7 couch and lamp +1F6CB ; unqualified # 🛋 E0.7 couch and lamp +1FA91 ; fully-qualified # 🪑 E12.0 chair +1F6BD ; fully-qualified # 🚽 E0.6 toilet +1FAA0 ; fully-qualified # 🪠 E13.0 plunger +1F6BF ; fully-qualified # 🚿 E1.0 shower +1F6C1 ; fully-qualified # 🛁 E1.0 bathtub +1FAA4 ; fully-qualified # 🪤 E13.0 mouse trap +1FA92 ; fully-qualified # 🪒 E12.0 razor +1F9F4 ; fully-qualified # 🧴 E11.0 lotion bottle +1F9F7 ; fully-qualified # 🧷 E11.0 safety pin +1F9F9 ; fully-qualified # 🧹 E11.0 broom +1F9FA ; fully-qualified # 🧺 E11.0 basket +1F9FB ; fully-qualified # 🧻 E11.0 roll of paper +1FAA3 ; fully-qualified # 🪣 E13.0 bucket +1F9FC ; fully-qualified # 🧼 E11.0 soap +1FAE7 ; fully-qualified # 🫧 E14.0 bubbles +1FAA5 ; fully-qualified # 🪥 E13.0 toothbrush +1F9FD ; fully-qualified # 🧽 E11.0 sponge +1F9EF ; fully-qualified # 🧯 E11.0 fire extinguisher +1F6D2 ; fully-qualified # 🛒 E3.0 shopping cart + +# subgroup: other-object +1F6AC ; fully-qualified # 🚬 E0.6 cigarette +26B0 FE0F ; fully-qualified # ⚰️ E1.0 coffin +26B0 ; unqualified # ⚰ E1.0 coffin +1FAA6 ; fully-qualified # 🪦 E13.0 headstone +26B1 FE0F ; fully-qualified # ⚱️ E1.0 funeral urn +26B1 ; unqualified # ⚱ E1.0 funeral urn +1F9FF ; fully-qualified # 🧿 E11.0 nazar amulet +1FAAC ; fully-qualified # 🪬 E14.0 hamsa +1F5FF ; fully-qualified # 🗿 E0.6 moai +1FAA7 ; fully-qualified # 🪧 E13.0 placard +1FAAA ; fully-qualified # 🪪 E14.0 identification card + +# Objects subtotal: 312 +# Objects subtotal: 312 w/o modifiers + +# group: Symbols + +# subgroup: transport-sign +1F3E7 ; fully-qualified # 🏧 E0.6 ATM sign +1F6AE ; fully-qualified # 🚮 E1.0 litter in bin sign +1F6B0 ; fully-qualified # 🚰 E1.0 potable water +267F ; fully-qualified # ♿ E0.6 wheelchair symbol +1F6B9 ; fully-qualified # 🚹 E0.6 men’s room +1F6BA ; fully-qualified # 🚺 E0.6 women’s room +1F6BB ; fully-qualified # 🚻 E0.6 restroom +1F6BC ; fully-qualified # 🚼 E0.6 baby symbol +1F6BE ; fully-qualified # 🚾 E0.6 water closet +1F6C2 ; fully-qualified # 🛂 E1.0 passport control +1F6C3 ; fully-qualified # 🛃 E1.0 customs +1F6C4 ; fully-qualified # 🛄 E1.0 baggage claim +1F6C5 ; fully-qualified # 🛅 E1.0 left luggage + +# subgroup: warning +26A0 FE0F ; fully-qualified # ⚠️ E0.6 warning +26A0 ; unqualified # ⚠ E0.6 warning +1F6B8 ; fully-qualified # 🚸 E1.0 children crossing +26D4 ; fully-qualified # ⛔ E0.6 no entry +1F6AB ; fully-qualified # 🚫 E0.6 prohibited +1F6B3 ; fully-qualified # 🚳 E1.0 no bicycles +1F6AD ; fully-qualified # 🚭 E0.6 no smoking +1F6AF ; fully-qualified # 🚯 E1.0 no littering +1F6B1 ; fully-qualified # 🚱 E1.0 non-potable water +1F6B7 ; fully-qualified # 🚷 E1.0 no pedestrians +1F4F5 ; fully-qualified # 📵 E1.0 no mobile phones +1F51E ; fully-qualified # 🔞 E0.6 no one under eighteen +2622 FE0F ; fully-qualified # ☢️ E1.0 radioactive +2622 ; unqualified # ☢ E1.0 radioactive +2623 FE0F ; fully-qualified # ☣️ E1.0 biohazard +2623 ; unqualified # ☣ E1.0 biohazard + +# subgroup: arrow +2B06 FE0F ; fully-qualified # ⬆️ E0.6 up arrow +2B06 ; unqualified # ⬆ E0.6 up arrow +2197 FE0F ; fully-qualified # ↗️ E0.6 up-right arrow +2197 ; unqualified # ↗ E0.6 up-right arrow +27A1 FE0F ; fully-qualified # ➡️ E0.6 right arrow +27A1 ; unqualified # ➡ E0.6 right arrow +2198 FE0F ; fully-qualified # ↘️ E0.6 down-right arrow +2198 ; unqualified # ↘ E0.6 down-right arrow +2B07 FE0F ; fully-qualified # ⬇️ E0.6 down arrow +2B07 ; unqualified # ⬇ E0.6 down arrow +2199 FE0F ; fully-qualified # ↙️ E0.6 down-left arrow +2199 ; unqualified # ↙ E0.6 down-left arrow +2B05 FE0F ; fully-qualified # ⬅️ E0.6 left arrow +2B05 ; unqualified # ⬅ E0.6 left arrow +2196 FE0F ; fully-qualified # ↖️ E0.6 up-left arrow +2196 ; unqualified # ↖ E0.6 up-left arrow +2195 FE0F ; fully-qualified # ↕️ E0.6 up-down arrow +2195 ; unqualified # ↕ E0.6 up-down arrow +2194 FE0F ; fully-qualified # ↔️ E0.6 left-right arrow +2194 ; unqualified # ↔ E0.6 left-right arrow +21A9 FE0F ; fully-qualified # ↩️ E0.6 right arrow curving left +21A9 ; unqualified # ↩ E0.6 right arrow curving left +21AA FE0F ; fully-qualified # ↪️ E0.6 left arrow curving right +21AA ; unqualified # ↪ E0.6 left arrow curving right +2934 FE0F ; fully-qualified # ⤴️ E0.6 right arrow curving up +2934 ; unqualified # ⤴ E0.6 right arrow curving up +2935 FE0F ; fully-qualified # ⤵️ E0.6 right arrow curving down +2935 ; unqualified # ⤵ E0.6 right arrow curving down +1F503 ; fully-qualified # 🔃 E0.6 clockwise vertical arrows +1F504 ; fully-qualified # 🔄 E1.0 counterclockwise arrows button +1F519 ; fully-qualified # 🔙 E0.6 BACK arrow +1F51A ; fully-qualified # 🔚 E0.6 END arrow +1F51B ; fully-qualified # 🔛 E0.6 ON! arrow +1F51C ; fully-qualified # 🔜 E0.6 SOON arrow +1F51D ; fully-qualified # 🔝 E0.6 TOP arrow + +# subgroup: religion +1F6D0 ; fully-qualified # 🛐 E1.0 place of worship +269B FE0F ; fully-qualified # ⚛️ E1.0 atom symbol +269B ; unqualified # ⚛ E1.0 atom symbol +1F549 FE0F ; fully-qualified # 🕉️ E0.7 om +1F549 ; unqualified # 🕉 E0.7 om +2721 FE0F ; fully-qualified # ✡️ E0.7 star of David +2721 ; unqualified # ✡ E0.7 star of David +2638 FE0F ; fully-qualified # ☸️ E0.7 wheel of dharma +2638 ; unqualified # ☸ E0.7 wheel of dharma +262F FE0F ; fully-qualified # ☯️ E0.7 yin yang +262F ; unqualified # ☯ E0.7 yin yang +271D FE0F ; fully-qualified # ✝️ E0.7 latin cross +271D ; unqualified # ✝ E0.7 latin cross +2626 FE0F ; fully-qualified # ☦️ E1.0 orthodox cross +2626 ; unqualified # ☦ E1.0 orthodox cross +262A FE0F ; fully-qualified # ☪️ E0.7 star and crescent +262A ; unqualified # ☪ E0.7 star and crescent +262E FE0F ; fully-qualified # ☮️ E1.0 peace symbol +262E ; unqualified # ☮ E1.0 peace symbol +1F54E ; fully-qualified # 🕎 E1.0 menorah +1F52F ; fully-qualified # 🔯 E0.6 dotted six-pointed star +1FAAF ; fully-qualified # 🪯 E15.0 khanda + +# subgroup: zodiac +2648 ; fully-qualified # ♈ E0.6 Aries +2649 ; fully-qualified # ♉ E0.6 Taurus +264A ; fully-qualified # ♊ E0.6 Gemini +264B ; fully-qualified # ♋ E0.6 Cancer +264C ; fully-qualified # ♌ E0.6 Leo +264D ; fully-qualified # ♍ E0.6 Virgo +264E ; fully-qualified # ♎ E0.6 Libra +264F ; fully-qualified # ♏ E0.6 Scorpio +2650 ; fully-qualified # ♐ E0.6 Sagittarius +2651 ; fully-qualified # ♑ E0.6 Capricorn +2652 ; fully-qualified # ♒ E0.6 Aquarius +2653 ; fully-qualified # ♓ E0.6 Pisces +26CE ; fully-qualified # ⛎ E0.6 Ophiuchus + +# subgroup: av-symbol +1F500 ; fully-qualified # 🔀 E1.0 shuffle tracks button +1F501 ; fully-qualified # 🔁 E1.0 repeat button +1F502 ; fully-qualified # 🔂 E1.0 repeat single button +25B6 FE0F ; fully-qualified # ▶️ E0.6 play button +25B6 ; unqualified # ▶ E0.6 play button +23E9 ; fully-qualified # ⏩ E0.6 fast-forward button +23ED FE0F ; fully-qualified # ⏭️ E0.7 next track button +23ED ; unqualified # ⏭ E0.7 next track button +23EF FE0F ; fully-qualified # ⏯️ E1.0 play or pause button +23EF ; unqualified # ⏯ E1.0 play or pause button +25C0 FE0F ; fully-qualified # ◀️ E0.6 reverse button +25C0 ; unqualified # ◀ E0.6 reverse button +23EA ; fully-qualified # ⏪ E0.6 fast reverse button +23EE FE0F ; fully-qualified # ⏮️ E0.7 last track button +23EE ; unqualified # ⏮ E0.7 last track button +1F53C ; fully-qualified # 🔼 E0.6 upwards button +23EB ; fully-qualified # ⏫ E0.6 fast up button +1F53D ; fully-qualified # 🔽 E0.6 downwards button +23EC ; fully-qualified # ⏬ E0.6 fast down button +23F8 FE0F ; fully-qualified # ⏸️ E0.7 pause button +23F8 ; unqualified # ⏸ E0.7 pause button +23F9 FE0F ; fully-qualified # ⏹️ E0.7 stop button +23F9 ; unqualified # ⏹ E0.7 stop button +23FA FE0F ; fully-qualified # ⏺️ E0.7 record button +23FA ; unqualified # ⏺ E0.7 record button +23CF FE0F ; fully-qualified # ⏏️ E1.0 eject button +23CF ; unqualified # ⏏ E1.0 eject button +1F3A6 ; fully-qualified # 🎦 E0.6 cinema +1F505 ; fully-qualified # 🔅 E1.0 dim button +1F506 ; fully-qualified # 🔆 E1.0 bright button +1F4F6 ; fully-qualified # 📶 E0.6 antenna bars +1F6DC ; fully-qualified # 🛜 E15.0 wireless +1F4F3 ; fully-qualified # 📳 E0.6 vibration mode +1F4F4 ; fully-qualified # 📴 E0.6 mobile phone off + +# subgroup: gender +2640 FE0F ; fully-qualified # ♀️ E4.0 female sign +2640 ; unqualified # ♀ E4.0 female sign +2642 FE0F ; fully-qualified # ♂️ E4.0 male sign +2642 ; unqualified # ♂ E4.0 male sign +26A7 FE0F ; fully-qualified # ⚧️ E13.0 transgender symbol +26A7 ; unqualified # ⚧ E13.0 transgender symbol + +# subgroup: math +2716 FE0F ; fully-qualified # ✖️ E0.6 multiply +2716 ; unqualified # ✖ E0.6 multiply +2795 ; fully-qualified # ➕ E0.6 plus +2796 ; fully-qualified # ➖ E0.6 minus +2797 ; fully-qualified # ➗ E0.6 divide +1F7F0 ; fully-qualified # 🟰 E14.0 heavy equals sign +267E FE0F ; fully-qualified # ♾️ E11.0 infinity +267E ; unqualified # ♾ E11.0 infinity + +# subgroup: punctuation +203C FE0F ; fully-qualified # ‼️ E0.6 double exclamation mark +203C ; unqualified # ‼ E0.6 double exclamation mark +2049 FE0F ; fully-qualified # ⁉️ E0.6 exclamation question mark +2049 ; unqualified # ⁉ E0.6 exclamation question mark +2753 ; fully-qualified # ❓ E0.6 red question mark +2754 ; fully-qualified # ❔ E0.6 white question mark +2755 ; fully-qualified # ❕ E0.6 white exclamation mark +2757 ; fully-qualified # ❗ E0.6 red exclamation mark +3030 FE0F ; fully-qualified # 〰️ E0.6 wavy dash +3030 ; unqualified # 〰 E0.6 wavy dash + +# subgroup: currency +1F4B1 ; fully-qualified # 💱 E0.6 currency exchange +1F4B2 ; fully-qualified # 💲 E0.6 heavy dollar sign + +# subgroup: other-symbol +2695 FE0F ; fully-qualified # ⚕️ E4.0 medical symbol +2695 ; unqualified # ⚕ E4.0 medical symbol +267B FE0F ; fully-qualified # ♻️ E0.6 recycling symbol +267B ; unqualified # ♻ E0.6 recycling symbol +269C FE0F ; fully-qualified # ⚜️ E1.0 fleur-de-lis +269C ; unqualified # ⚜ E1.0 fleur-de-lis +1F531 ; fully-qualified # 🔱 E0.6 trident emblem +1F4DB ; fully-qualified # 📛 E0.6 name badge +1F530 ; fully-qualified # 🔰 E0.6 Japanese symbol for beginner +2B55 ; fully-qualified # ⭕ E0.6 hollow red circle +2705 ; fully-qualified # ✅ E0.6 check mark button +2611 FE0F ; fully-qualified # ☑️ E0.6 check box with check +2611 ; unqualified # ☑ E0.6 check box with check +2714 FE0F ; fully-qualified # ✔️ E0.6 check mark +2714 ; unqualified # ✔ E0.6 check mark +274C ; fully-qualified # ❌ E0.6 cross mark +274E ; fully-qualified # ❎ E0.6 cross mark button +27B0 ; fully-qualified # ➰ E0.6 curly loop +27BF ; fully-qualified # ➿ E1.0 double curly loop +303D FE0F ; fully-qualified # 〽️ E0.6 part alternation mark +303D ; unqualified # 〽 E0.6 part alternation mark +2733 FE0F ; fully-qualified # ✳️ E0.6 eight-spoked asterisk +2733 ; unqualified # ✳ E0.6 eight-spoked asterisk +2734 FE0F ; fully-qualified # ✴️ E0.6 eight-pointed star +2734 ; unqualified # ✴ E0.6 eight-pointed star +2747 FE0F ; fully-qualified # ❇️ E0.6 sparkle +2747 ; unqualified # ❇ E0.6 sparkle +00A9 FE0F ; fully-qualified # ©️ E0.6 copyright +00A9 ; unqualified # © E0.6 copyright +00AE FE0F ; fully-qualified # ®️ E0.6 registered +00AE ; unqualified # ® E0.6 registered +2122 FE0F ; fully-qualified # ™️ E0.6 trade mark +2122 ; unqualified # ™ E0.6 trade mark + +# subgroup: keycap +0023 FE0F 20E3 ; fully-qualified # #️⃣ E0.6 keycap: # +0023 20E3 ; unqualified # #⃣ E0.6 keycap: # +002A FE0F 20E3 ; fully-qualified # *️⃣ E2.0 keycap: * +002A 20E3 ; unqualified # *⃣ E2.0 keycap: * +0030 FE0F 20E3 ; fully-qualified # 0️⃣ E0.6 keycap: 0 +0030 20E3 ; unqualified # 0⃣ E0.6 keycap: 0 +0031 FE0F 20E3 ; fully-qualified # 1️⃣ E0.6 keycap: 1 +0031 20E3 ; unqualified # 1⃣ E0.6 keycap: 1 +0032 FE0F 20E3 ; fully-qualified # 2️⃣ E0.6 keycap: 2 +0032 20E3 ; unqualified # 2⃣ E0.6 keycap: 2 +0033 FE0F 20E3 ; fully-qualified # 3️⃣ E0.6 keycap: 3 +0033 20E3 ; unqualified # 3⃣ E0.6 keycap: 3 +0034 FE0F 20E3 ; fully-qualified # 4️⃣ E0.6 keycap: 4 +0034 20E3 ; unqualified # 4⃣ E0.6 keycap: 4 +0035 FE0F 20E3 ; fully-qualified # 5️⃣ E0.6 keycap: 5 +0035 20E3 ; unqualified # 5⃣ E0.6 keycap: 5 +0036 FE0F 20E3 ; fully-qualified # 6️⃣ E0.6 keycap: 6 +0036 20E3 ; unqualified # 6⃣ E0.6 keycap: 6 +0037 FE0F 20E3 ; fully-qualified # 7️⃣ E0.6 keycap: 7 +0037 20E3 ; unqualified # 7⃣ E0.6 keycap: 7 +0038 FE0F 20E3 ; fully-qualified # 8️⃣ E0.6 keycap: 8 +0038 20E3 ; unqualified # 8⃣ E0.6 keycap: 8 +0039 FE0F 20E3 ; fully-qualified # 9️⃣ E0.6 keycap: 9 +0039 20E3 ; unqualified # 9⃣ E0.6 keycap: 9 +1F51F ; fully-qualified # 🔟 E0.6 keycap: 10 + +# subgroup: alphanum +1F520 ; fully-qualified # 🔠 E0.6 input latin uppercase +1F521 ; fully-qualified # 🔡 E0.6 input latin lowercase +1F522 ; fully-qualified # 🔢 E0.6 input numbers +1F523 ; fully-qualified # 🔣 E0.6 input symbols +1F524 ; fully-qualified # 🔤 E0.6 input latin letters +1F170 FE0F ; fully-qualified # 🅰️ E0.6 A button (blood type) +1F170 ; unqualified # 🅰 E0.6 A button (blood type) +1F18E ; fully-qualified # 🆎 E0.6 AB button (blood type) +1F171 FE0F ; fully-qualified # 🅱️ E0.6 B button (blood type) +1F171 ; unqualified # 🅱 E0.6 B button (blood type) +1F191 ; fully-qualified # 🆑 E0.6 CL button +1F192 ; fully-qualified # 🆒 E0.6 COOL button +1F193 ; fully-qualified # 🆓 E0.6 FREE button +2139 FE0F ; fully-qualified # ℹ️ E0.6 information +2139 ; unqualified # ℹ E0.6 information +1F194 ; fully-qualified # 🆔 E0.6 ID button +24C2 FE0F ; fully-qualified # Ⓜ️ E0.6 circled M +24C2 ; unqualified # Ⓜ E0.6 circled M +1F195 ; fully-qualified # 🆕 E0.6 NEW button +1F196 ; fully-qualified # 🆖 E0.6 NG button +1F17E FE0F ; fully-qualified # 🅾️ E0.6 O button (blood type) +1F17E ; unqualified # 🅾 E0.6 O button (blood type) +1F197 ; fully-qualified # 🆗 E0.6 OK button +1F17F FE0F ; fully-qualified # 🅿️ E0.6 P button +1F17F ; unqualified # 🅿 E0.6 P button +1F198 ; fully-qualified # 🆘 E0.6 SOS button +1F199 ; fully-qualified # 🆙 E0.6 UP! button +1F19A ; fully-qualified # 🆚 E0.6 VS button +1F201 ; fully-qualified # 🈁 E0.6 Japanese “here” button +1F202 FE0F ; fully-qualified # 🈂️ E0.6 Japanese “service charge” button +1F202 ; unqualified # 🈂 E0.6 Japanese “service charge” button +1F237 FE0F ; fully-qualified # 🈷️ E0.6 Japanese “monthly amount” button +1F237 ; unqualified # 🈷 E0.6 Japanese “monthly amount” button +1F236 ; fully-qualified # 🈶 E0.6 Japanese “not free of charge” button +1F22F ; fully-qualified # 🈯 E0.6 Japanese “reserved” button +1F250 ; fully-qualified # 🉐 E0.6 Japanese “bargain” button +1F239 ; fully-qualified # 🈹 E0.6 Japanese “discount” button +1F21A ; fully-qualified # 🈚 E0.6 Japanese “free of charge” button +1F232 ; fully-qualified # 🈲 E0.6 Japanese “prohibited” button +1F251 ; fully-qualified # 🉑 E0.6 Japanese “acceptable” button +1F238 ; fully-qualified # 🈸 E0.6 Japanese “application” button +1F234 ; fully-qualified # 🈴 E0.6 Japanese “passing grade” button +1F233 ; fully-qualified # 🈳 E0.6 Japanese “vacancy” button +3297 FE0F ; fully-qualified # ㊗️ E0.6 Japanese “congratulations” button +3297 ; unqualified # ㊗ E0.6 Japanese “congratulations” button +3299 FE0F ; fully-qualified # ㊙️ E0.6 Japanese “secret” button +3299 ; unqualified # ㊙ E0.6 Japanese “secret” button +1F23A ; fully-qualified # 🈺 E0.6 Japanese “open for business” button +1F235 ; fully-qualified # 🈵 E0.6 Japanese “no vacancy” button + +# subgroup: geometric +1F534 ; fully-qualified # 🔴 E0.6 red circle +1F7E0 ; fully-qualified # 🟠 E12.0 orange circle +1F7E1 ; fully-qualified # 🟡 E12.0 yellow circle +1F7E2 ; fully-qualified # 🟢 E12.0 green circle +1F535 ; fully-qualified # 🔵 E0.6 blue circle +1F7E3 ; fully-qualified # 🟣 E12.0 purple circle +1F7E4 ; fully-qualified # 🟤 E12.0 brown circle +26AB ; fully-qualified # ⚫ E0.6 black circle +26AA ; fully-qualified # ⚪ E0.6 white circle +1F7E5 ; fully-qualified # 🟥 E12.0 red square +1F7E7 ; fully-qualified # 🟧 E12.0 orange square +1F7E8 ; fully-qualified # 🟨 E12.0 yellow square +1F7E9 ; fully-qualified # 🟩 E12.0 green square +1F7E6 ; fully-qualified # 🟦 E12.0 blue square +1F7EA ; fully-qualified # 🟪 E12.0 purple square +1F7EB ; fully-qualified # 🟫 E12.0 brown square +2B1B ; fully-qualified # ⬛ E0.6 black large square +2B1C ; fully-qualified # ⬜ E0.6 white large square +25FC FE0F ; fully-qualified # ◼️ E0.6 black medium square +25FC ; unqualified # ◼ E0.6 black medium square +25FB FE0F ; fully-qualified # ◻️ E0.6 white medium square +25FB ; unqualified # ◻ E0.6 white medium square +25FE ; fully-qualified # ◾ E0.6 black medium-small square +25FD ; fully-qualified # ◽ E0.6 white medium-small square +25AA FE0F ; fully-qualified # ▪️ E0.6 black small square +25AA ; unqualified # ▪ E0.6 black small square +25AB FE0F ; fully-qualified # ▫️ E0.6 white small square +25AB ; unqualified # ▫ E0.6 white small square +1F536 ; fully-qualified # 🔶 E0.6 large orange diamond +1F537 ; fully-qualified # 🔷 E0.6 large blue diamond +1F538 ; fully-qualified # 🔸 E0.6 small orange diamond +1F539 ; fully-qualified # 🔹 E0.6 small blue diamond +1F53A ; fully-qualified # 🔺 E0.6 red triangle pointed up +1F53B ; fully-qualified # 🔻 E0.6 red triangle pointed down +1F4A0 ; fully-qualified # 💠 E0.6 diamond with a dot +1F518 ; fully-qualified # 🔘 E0.6 radio button +1F533 ; fully-qualified # 🔳 E0.6 white square button +1F532 ; fully-qualified # 🔲 E0.6 black square button + +# Symbols subtotal: 304 +# Symbols subtotal: 304 w/o modifiers + +# group: Flags + +# subgroup: flag +1F3C1 ; fully-qualified # 🏁 E0.6 chequered flag +1F6A9 ; fully-qualified # 🚩 E0.6 triangular flag +1F38C ; fully-qualified # 🎌 E0.6 crossed flags +1F3F4 ; fully-qualified # 🏴 E1.0 black flag +1F3F3 FE0F ; fully-qualified # 🏳️ E0.7 white flag +1F3F3 ; unqualified # 🏳 E0.7 white flag +1F3F3 FE0F 200D 1F308 ; fully-qualified # 🏳️‍🌈 E4.0 rainbow flag +1F3F3 200D 1F308 ; unqualified # 🏳‍🌈 E4.0 rainbow flag +1F3F3 FE0F 200D 26A7 FE0F ; fully-qualified # 🏳️‍⚧️ E13.0 transgender flag +1F3F3 200D 26A7 FE0F ; unqualified # 🏳‍⚧️ E13.0 transgender flag +1F3F3 FE0F 200D 26A7 ; minimally-qualified # 🏳️‍⚧ E13.0 transgender flag +1F3F3 200D 26A7 ; unqualified # 🏳‍⚧ E13.0 transgender flag +1F3F4 200D 2620 FE0F ; fully-qualified # 🏴‍☠️ E11.0 pirate flag +1F3F4 200D 2620 ; minimally-qualified # 🏴‍☠ E11.0 pirate flag + +# subgroup: country-flag +1F1E6 1F1E8 ; fully-qualified # 🇦🇨 E2.0 flag: Ascension Island +1F1E6 1F1E9 ; fully-qualified # 🇦🇩 E2.0 flag: Andorra +1F1E6 1F1EA ; fully-qualified # 🇦🇪 E2.0 flag: United Arab Emirates +1F1E6 1F1EB ; fully-qualified # 🇦🇫 E2.0 flag: Afghanistan +1F1E6 1F1EC ; fully-qualified # 🇦🇬 E2.0 flag: Antigua & Barbuda +1F1E6 1F1EE ; fully-qualified # 🇦🇮 E2.0 flag: Anguilla +1F1E6 1F1F1 ; fully-qualified # 🇦🇱 E2.0 flag: Albania +1F1E6 1F1F2 ; fully-qualified # 🇦🇲 E2.0 flag: Armenia +1F1E6 1F1F4 ; fully-qualified # 🇦🇴 E2.0 flag: Angola +1F1E6 1F1F6 ; fully-qualified # 🇦🇶 E2.0 flag: Antarctica +1F1E6 1F1F7 ; fully-qualified # 🇦🇷 E2.0 flag: Argentina +1F1E6 1F1F8 ; fully-qualified # 🇦🇸 E2.0 flag: American Samoa +1F1E6 1F1F9 ; fully-qualified # 🇦🇹 E2.0 flag: Austria +1F1E6 1F1FA ; fully-qualified # 🇦🇺 E2.0 flag: Australia +1F1E6 1F1FC ; fully-qualified # 🇦🇼 E2.0 flag: Aruba +1F1E6 1F1FD ; fully-qualified # 🇦🇽 E2.0 flag: Åland Islands +1F1E6 1F1FF ; fully-qualified # 🇦🇿 E2.0 flag: Azerbaijan +1F1E7 1F1E6 ; fully-qualified # 🇧🇦 E2.0 flag: Bosnia & Herzegovina +1F1E7 1F1E7 ; fully-qualified # 🇧🇧 E2.0 flag: Barbados +1F1E7 1F1E9 ; fully-qualified # 🇧🇩 E2.0 flag: Bangladesh +1F1E7 1F1EA ; fully-qualified # 🇧🇪 E2.0 flag: Belgium +1F1E7 1F1EB ; fully-qualified # 🇧🇫 E2.0 flag: Burkina Faso +1F1E7 1F1EC ; fully-qualified # 🇧🇬 E2.0 flag: Bulgaria +1F1E7 1F1ED ; fully-qualified # 🇧🇭 E2.0 flag: Bahrain +1F1E7 1F1EE ; fully-qualified # 🇧🇮 E2.0 flag: Burundi +1F1E7 1F1EF ; fully-qualified # 🇧🇯 E2.0 flag: Benin +1F1E7 1F1F1 ; fully-qualified # 🇧🇱 E2.0 flag: St. Barthélemy +1F1E7 1F1F2 ; fully-qualified # 🇧🇲 E2.0 flag: Bermuda +1F1E7 1F1F3 ; fully-qualified # 🇧🇳 E2.0 flag: Brunei +1F1E7 1F1F4 ; fully-qualified # 🇧🇴 E2.0 flag: Bolivia +1F1E7 1F1F6 ; fully-qualified # 🇧🇶 E2.0 flag: Caribbean Netherlands +1F1E7 1F1F7 ; fully-qualified # 🇧🇷 E2.0 flag: Brazil +1F1E7 1F1F8 ; fully-qualified # 🇧🇸 E2.0 flag: Bahamas +1F1E7 1F1F9 ; fully-qualified # 🇧🇹 E2.0 flag: Bhutan +1F1E7 1F1FB ; fully-qualified # 🇧🇻 E2.0 flag: Bouvet Island +1F1E7 1F1FC ; fully-qualified # 🇧🇼 E2.0 flag: Botswana +1F1E7 1F1FE ; fully-qualified # 🇧🇾 E2.0 flag: Belarus +1F1E7 1F1FF ; fully-qualified # 🇧🇿 E2.0 flag: Belize +1F1E8 1F1E6 ; fully-qualified # 🇨🇦 E2.0 flag: Canada +1F1E8 1F1E8 ; fully-qualified # 🇨🇨 E2.0 flag: Cocos (Keeling) Islands +1F1E8 1F1E9 ; fully-qualified # 🇨🇩 E2.0 flag: Congo - Kinshasa +1F1E8 1F1EB ; fully-qualified # 🇨🇫 E2.0 flag: Central African Republic +1F1E8 1F1EC ; fully-qualified # 🇨🇬 E2.0 flag: Congo - Brazzaville +1F1E8 1F1ED ; fully-qualified # 🇨🇭 E2.0 flag: Switzerland +1F1E8 1F1EE ; fully-qualified # 🇨🇮 E2.0 flag: Côte d’Ivoire +1F1E8 1F1F0 ; fully-qualified # 🇨🇰 E2.0 flag: Cook Islands +1F1E8 1F1F1 ; fully-qualified # 🇨🇱 E2.0 flag: Chile +1F1E8 1F1F2 ; fully-qualified # 🇨🇲 E2.0 flag: Cameroon +1F1E8 1F1F3 ; fully-qualified # 🇨🇳 E0.6 flag: China +1F1E8 1F1F4 ; fully-qualified # 🇨🇴 E2.0 flag: Colombia +1F1E8 1F1F5 ; fully-qualified # 🇨🇵 E2.0 flag: Clipperton Island +1F1E8 1F1F7 ; fully-qualified # 🇨🇷 E2.0 flag: Costa Rica +1F1E8 1F1FA ; fully-qualified # 🇨🇺 E2.0 flag: Cuba +1F1E8 1F1FB ; fully-qualified # 🇨🇻 E2.0 flag: Cape Verde +1F1E8 1F1FC ; fully-qualified # 🇨🇼 E2.0 flag: Curaçao +1F1E8 1F1FD ; fully-qualified # 🇨🇽 E2.0 flag: Christmas Island +1F1E8 1F1FE ; fully-qualified # 🇨🇾 E2.0 flag: Cyprus +1F1E8 1F1FF ; fully-qualified # 🇨🇿 E2.0 flag: Czechia +1F1E9 1F1EA ; fully-qualified # 🇩🇪 E0.6 flag: Germany +1F1E9 1F1EC ; fully-qualified # 🇩🇬 E2.0 flag: Diego Garcia +1F1E9 1F1EF ; fully-qualified # 🇩🇯 E2.0 flag: Djibouti +1F1E9 1F1F0 ; fully-qualified # 🇩🇰 E2.0 flag: Denmark +1F1E9 1F1F2 ; fully-qualified # 🇩🇲 E2.0 flag: Dominica +1F1E9 1F1F4 ; fully-qualified # 🇩🇴 E2.0 flag: Dominican Republic +1F1E9 1F1FF ; fully-qualified # 🇩🇿 E2.0 flag: Algeria +1F1EA 1F1E6 ; fully-qualified # 🇪🇦 E2.0 flag: Ceuta & Melilla +1F1EA 1F1E8 ; fully-qualified # 🇪🇨 E2.0 flag: Ecuador +1F1EA 1F1EA ; fully-qualified # 🇪🇪 E2.0 flag: Estonia +1F1EA 1F1EC ; fully-qualified # 🇪🇬 E2.0 flag: Egypt +1F1EA 1F1ED ; fully-qualified # 🇪🇭 E2.0 flag: Western Sahara +1F1EA 1F1F7 ; fully-qualified # 🇪🇷 E2.0 flag: Eritrea +1F1EA 1F1F8 ; fully-qualified # 🇪🇸 E0.6 flag: Spain +1F1EA 1F1F9 ; fully-qualified # 🇪🇹 E2.0 flag: Ethiopia +1F1EA 1F1FA ; fully-qualified # 🇪🇺 E2.0 flag: European Union +1F1EB 1F1EE ; fully-qualified # 🇫🇮 E2.0 flag: Finland +1F1EB 1F1EF ; fully-qualified # 🇫🇯 E2.0 flag: Fiji +1F1EB 1F1F0 ; fully-qualified # 🇫🇰 E2.0 flag: Falkland Islands +1F1EB 1F1F2 ; fully-qualified # 🇫🇲 E2.0 flag: Micronesia +1F1EB 1F1F4 ; fully-qualified # 🇫🇴 E2.0 flag: Faroe Islands +1F1EB 1F1F7 ; fully-qualified # 🇫🇷 E0.6 flag: France +1F1EC 1F1E6 ; fully-qualified # 🇬🇦 E2.0 flag: Gabon +1F1EC 1F1E7 ; fully-qualified # 🇬🇧 E0.6 flag: United Kingdom +1F1EC 1F1E9 ; fully-qualified # 🇬🇩 E2.0 flag: Grenada +1F1EC 1F1EA ; fully-qualified # 🇬🇪 E2.0 flag: Georgia +1F1EC 1F1EB ; fully-qualified # 🇬🇫 E2.0 flag: French Guiana +1F1EC 1F1EC ; fully-qualified # 🇬🇬 E2.0 flag: Guernsey +1F1EC 1F1ED ; fully-qualified # 🇬🇭 E2.0 flag: Ghana +1F1EC 1F1EE ; fully-qualified # 🇬🇮 E2.0 flag: Gibraltar +1F1EC 1F1F1 ; fully-qualified # 🇬🇱 E2.0 flag: Greenland +1F1EC 1F1F2 ; fully-qualified # 🇬🇲 E2.0 flag: Gambia +1F1EC 1F1F3 ; fully-qualified # 🇬🇳 E2.0 flag: Guinea +1F1EC 1F1F5 ; fully-qualified # 🇬🇵 E2.0 flag: Guadeloupe +1F1EC 1F1F6 ; fully-qualified # 🇬🇶 E2.0 flag: Equatorial Guinea +1F1EC 1F1F7 ; fully-qualified # 🇬🇷 E2.0 flag: Greece +1F1EC 1F1F8 ; fully-qualified # 🇬🇸 E2.0 flag: South Georgia & South Sandwich Islands +1F1EC 1F1F9 ; fully-qualified # 🇬🇹 E2.0 flag: Guatemala +1F1EC 1F1FA ; fully-qualified # 🇬🇺 E2.0 flag: Guam +1F1EC 1F1FC ; fully-qualified # 🇬🇼 E2.0 flag: Guinea-Bissau +1F1EC 1F1FE ; fully-qualified # 🇬🇾 E2.0 flag: Guyana +1F1ED 1F1F0 ; fully-qualified # 🇭🇰 E2.0 flag: Hong Kong SAR China +1F1ED 1F1F2 ; fully-qualified # 🇭🇲 E2.0 flag: Heard & McDonald Islands +1F1ED 1F1F3 ; fully-qualified # 🇭🇳 E2.0 flag: Honduras +1F1ED 1F1F7 ; fully-qualified # 🇭🇷 E2.0 flag: Croatia +1F1ED 1F1F9 ; fully-qualified # 🇭🇹 E2.0 flag: Haiti +1F1ED 1F1FA ; fully-qualified # 🇭🇺 E2.0 flag: Hungary +1F1EE 1F1E8 ; fully-qualified # 🇮🇨 E2.0 flag: Canary Islands +1F1EE 1F1E9 ; fully-qualified # 🇮🇩 E2.0 flag: Indonesia +1F1EE 1F1EA ; fully-qualified # 🇮🇪 E2.0 flag: Ireland +1F1EE 1F1F1 ; fully-qualified # 🇮🇱 E2.0 flag: Israel +1F1EE 1F1F2 ; fully-qualified # 🇮🇲 E2.0 flag: Isle of Man +1F1EE 1F1F3 ; fully-qualified # 🇮🇳 E2.0 flag: India +1F1EE 1F1F4 ; fully-qualified # 🇮🇴 E2.0 flag: British Indian Ocean Territory +1F1EE 1F1F6 ; fully-qualified # 🇮🇶 E2.0 flag: Iraq +1F1EE 1F1F7 ; fully-qualified # 🇮🇷 E2.0 flag: Iran +1F1EE 1F1F8 ; fully-qualified # 🇮🇸 E2.0 flag: Iceland +1F1EE 1F1F9 ; fully-qualified # 🇮🇹 E0.6 flag: Italy +1F1EF 1F1EA ; fully-qualified # 🇯🇪 E2.0 flag: Jersey +1F1EF 1F1F2 ; fully-qualified # 🇯🇲 E2.0 flag: Jamaica +1F1EF 1F1F4 ; fully-qualified # 🇯🇴 E2.0 flag: Jordan +1F1EF 1F1F5 ; fully-qualified # 🇯🇵 E0.6 flag: Japan +1F1F0 1F1EA ; fully-qualified # 🇰🇪 E2.0 flag: Kenya +1F1F0 1F1EC ; fully-qualified # 🇰🇬 E2.0 flag: Kyrgyzstan +1F1F0 1F1ED ; fully-qualified # 🇰🇭 E2.0 flag: Cambodia +1F1F0 1F1EE ; fully-qualified # 🇰🇮 E2.0 flag: Kiribati +1F1F0 1F1F2 ; fully-qualified # 🇰🇲 E2.0 flag: Comoros +1F1F0 1F1F3 ; fully-qualified # 🇰🇳 E2.0 flag: St. Kitts & Nevis +1F1F0 1F1F5 ; fully-qualified # 🇰🇵 E2.0 flag: North Korea +1F1F0 1F1F7 ; fully-qualified # 🇰🇷 E0.6 flag: South Korea +1F1F0 1F1FC ; fully-qualified # 🇰🇼 E2.0 flag: Kuwait +1F1F0 1F1FE ; fully-qualified # 🇰🇾 E2.0 flag: Cayman Islands +1F1F0 1F1FF ; fully-qualified # 🇰🇿 E2.0 flag: Kazakhstan +1F1F1 1F1E6 ; fully-qualified # 🇱🇦 E2.0 flag: Laos +1F1F1 1F1E7 ; fully-qualified # 🇱🇧 E2.0 flag: Lebanon +1F1F1 1F1E8 ; fully-qualified # 🇱🇨 E2.0 flag: St. Lucia +1F1F1 1F1EE ; fully-qualified # 🇱🇮 E2.0 flag: Liechtenstein +1F1F1 1F1F0 ; fully-qualified # 🇱🇰 E2.0 flag: Sri Lanka +1F1F1 1F1F7 ; fully-qualified # 🇱🇷 E2.0 flag: Liberia +1F1F1 1F1F8 ; fully-qualified # 🇱🇸 E2.0 flag: Lesotho +1F1F1 1F1F9 ; fully-qualified # 🇱🇹 E2.0 flag: Lithuania +1F1F1 1F1FA ; fully-qualified # 🇱🇺 E2.0 flag: Luxembourg +1F1F1 1F1FB ; fully-qualified # 🇱🇻 E2.0 flag: Latvia +1F1F1 1F1FE ; fully-qualified # 🇱🇾 E2.0 flag: Libya +1F1F2 1F1E6 ; fully-qualified # 🇲🇦 E2.0 flag: Morocco +1F1F2 1F1E8 ; fully-qualified # 🇲🇨 E2.0 flag: Monaco +1F1F2 1F1E9 ; fully-qualified # 🇲🇩 E2.0 flag: Moldova +1F1F2 1F1EA ; fully-qualified # 🇲🇪 E2.0 flag: Montenegro +1F1F2 1F1EB ; fully-qualified # 🇲🇫 E2.0 flag: St. Martin +1F1F2 1F1EC ; fully-qualified # 🇲🇬 E2.0 flag: Madagascar +1F1F2 1F1ED ; fully-qualified # 🇲🇭 E2.0 flag: Marshall Islands +1F1F2 1F1F0 ; fully-qualified # 🇲🇰 E2.0 flag: North Macedonia +1F1F2 1F1F1 ; fully-qualified # 🇲🇱 E2.0 flag: Mali +1F1F2 1F1F2 ; fully-qualified # 🇲🇲 E2.0 flag: Myanmar (Burma) +1F1F2 1F1F3 ; fully-qualified # 🇲🇳 E2.0 flag: Mongolia +1F1F2 1F1F4 ; fully-qualified # 🇲🇴 E2.0 flag: Macao SAR China +1F1F2 1F1F5 ; fully-qualified # 🇲🇵 E2.0 flag: Northern Mariana Islands +1F1F2 1F1F6 ; fully-qualified # 🇲🇶 E2.0 flag: Martinique +1F1F2 1F1F7 ; fully-qualified # 🇲🇷 E2.0 flag: Mauritania +1F1F2 1F1F8 ; fully-qualified # 🇲🇸 E2.0 flag: Montserrat +1F1F2 1F1F9 ; fully-qualified # 🇲🇹 E2.0 flag: Malta +1F1F2 1F1FA ; fully-qualified # 🇲🇺 E2.0 flag: Mauritius +1F1F2 1F1FB ; fully-qualified # 🇲🇻 E2.0 flag: Maldives +1F1F2 1F1FC ; fully-qualified # 🇲🇼 E2.0 flag: Malawi +1F1F2 1F1FD ; fully-qualified # 🇲🇽 E2.0 flag: Mexico +1F1F2 1F1FE ; fully-qualified # 🇲🇾 E2.0 flag: Malaysia +1F1F2 1F1FF ; fully-qualified # 🇲🇿 E2.0 flag: Mozambique +1F1F3 1F1E6 ; fully-qualified # 🇳🇦 E2.0 flag: Namibia +1F1F3 1F1E8 ; fully-qualified # 🇳🇨 E2.0 flag: New Caledonia +1F1F3 1F1EA ; fully-qualified # 🇳🇪 E2.0 flag: Niger +1F1F3 1F1EB ; fully-qualified # 🇳🇫 E2.0 flag: Norfolk Island +1F1F3 1F1EC ; fully-qualified # 🇳🇬 E2.0 flag: Nigeria +1F1F3 1F1EE ; fully-qualified # 🇳🇮 E2.0 flag: Nicaragua +1F1F3 1F1F1 ; fully-qualified # 🇳🇱 E2.0 flag: Netherlands +1F1F3 1F1F4 ; fully-qualified # 🇳🇴 E2.0 flag: Norway +1F1F3 1F1F5 ; fully-qualified # 🇳🇵 E2.0 flag: Nepal +1F1F3 1F1F7 ; fully-qualified # 🇳🇷 E2.0 flag: Nauru +1F1F3 1F1FA ; fully-qualified # 🇳🇺 E2.0 flag: Niue +1F1F3 1F1FF ; fully-qualified # 🇳🇿 E2.0 flag: New Zealand +1F1F4 1F1F2 ; fully-qualified # 🇴🇲 E2.0 flag: Oman +1F1F5 1F1E6 ; fully-qualified # 🇵🇦 E2.0 flag: Panama +1F1F5 1F1EA ; fully-qualified # 🇵🇪 E2.0 flag: Peru +1F1F5 1F1EB ; fully-qualified # 🇵🇫 E2.0 flag: French Polynesia +1F1F5 1F1EC ; fully-qualified # 🇵🇬 E2.0 flag: Papua New Guinea +1F1F5 1F1ED ; fully-qualified # 🇵🇭 E2.0 flag: Philippines +1F1F5 1F1F0 ; fully-qualified # 🇵🇰 E2.0 flag: Pakistan +1F1F5 1F1F1 ; fully-qualified # 🇵🇱 E2.0 flag: Poland +1F1F5 1F1F2 ; fully-qualified # 🇵🇲 E2.0 flag: St. Pierre & Miquelon +1F1F5 1F1F3 ; fully-qualified # 🇵🇳 E2.0 flag: Pitcairn Islands +1F1F5 1F1F7 ; fully-qualified # 🇵🇷 E2.0 flag: Puerto Rico +1F1F5 1F1F8 ; fully-qualified # 🇵🇸 E2.0 flag: Palestinian Territories +1F1F5 1F1F9 ; fully-qualified # 🇵🇹 E2.0 flag: Portugal +1F1F5 1F1FC ; fully-qualified # 🇵🇼 E2.0 flag: Palau +1F1F5 1F1FE ; fully-qualified # 🇵🇾 E2.0 flag: Paraguay +1F1F6 1F1E6 ; fully-qualified # 🇶🇦 E2.0 flag: Qatar +1F1F7 1F1EA ; fully-qualified # 🇷🇪 E2.0 flag: Réunion +1F1F7 1F1F4 ; fully-qualified # 🇷🇴 E2.0 flag: Romania +1F1F7 1F1F8 ; fully-qualified # 🇷🇸 E2.0 flag: Serbia +1F1F7 1F1FA ; fully-qualified # 🇷🇺 E0.6 flag: Russia +1F1F7 1F1FC ; fully-qualified # 🇷🇼 E2.0 flag: Rwanda +1F1F8 1F1E6 ; fully-qualified # 🇸🇦 E2.0 flag: Saudi Arabia +1F1F8 1F1E7 ; fully-qualified # 🇸🇧 E2.0 flag: Solomon Islands +1F1F8 1F1E8 ; fully-qualified # 🇸🇨 E2.0 flag: Seychelles +1F1F8 1F1E9 ; fully-qualified # 🇸🇩 E2.0 flag: Sudan +1F1F8 1F1EA ; fully-qualified # 🇸🇪 E2.0 flag: Sweden +1F1F8 1F1EC ; fully-qualified # 🇸🇬 E2.0 flag: Singapore +1F1F8 1F1ED ; fully-qualified # 🇸🇭 E2.0 flag: St. Helena +1F1F8 1F1EE ; fully-qualified # 🇸🇮 E2.0 flag: Slovenia +1F1F8 1F1EF ; fully-qualified # 🇸🇯 E2.0 flag: Svalbard & Jan Mayen +1F1F8 1F1F0 ; fully-qualified # 🇸🇰 E2.0 flag: Slovakia +1F1F8 1F1F1 ; fully-qualified # 🇸🇱 E2.0 flag: Sierra Leone +1F1F8 1F1F2 ; fully-qualified # 🇸🇲 E2.0 flag: San Marino +1F1F8 1F1F3 ; fully-qualified # 🇸🇳 E2.0 flag: Senegal +1F1F8 1F1F4 ; fully-qualified # 🇸🇴 E2.0 flag: Somalia +1F1F8 1F1F7 ; fully-qualified # 🇸🇷 E2.0 flag: Suriname +1F1F8 1F1F8 ; fully-qualified # 🇸🇸 E2.0 flag: South Sudan +1F1F8 1F1F9 ; fully-qualified # 🇸🇹 E2.0 flag: São Tomé & Príncipe +1F1F8 1F1FB ; fully-qualified # 🇸🇻 E2.0 flag: El Salvador +1F1F8 1F1FD ; fully-qualified # 🇸🇽 E2.0 flag: Sint Maarten +1F1F8 1F1FE ; fully-qualified # 🇸🇾 E2.0 flag: Syria +1F1F8 1F1FF ; fully-qualified # 🇸🇿 E2.0 flag: Eswatini +1F1F9 1F1E6 ; fully-qualified # 🇹🇦 E2.0 flag: Tristan da Cunha +1F1F9 1F1E8 ; fully-qualified # 🇹🇨 E2.0 flag: Turks & Caicos Islands +1F1F9 1F1E9 ; fully-qualified # 🇹🇩 E2.0 flag: Chad +1F1F9 1F1EB ; fully-qualified # 🇹🇫 E2.0 flag: French Southern Territories +1F1F9 1F1EC ; fully-qualified # 🇹🇬 E2.0 flag: Togo +1F1F9 1F1ED ; fully-qualified # 🇹🇭 E2.0 flag: Thailand +1F1F9 1F1EF ; fully-qualified # 🇹🇯 E2.0 flag: Tajikistan +1F1F9 1F1F0 ; fully-qualified # 🇹🇰 E2.0 flag: Tokelau +1F1F9 1F1F1 ; fully-qualified # 🇹🇱 E2.0 flag: Timor-Leste +1F1F9 1F1F2 ; fully-qualified # 🇹🇲 E2.0 flag: Turkmenistan +1F1F9 1F1F3 ; fully-qualified # 🇹🇳 E2.0 flag: Tunisia +1F1F9 1F1F4 ; fully-qualified # 🇹🇴 E2.0 flag: Tonga +1F1F9 1F1F7 ; fully-qualified # 🇹🇷 E2.0 flag: Türkiye +1F1F9 1F1F9 ; fully-qualified # 🇹🇹 E2.0 flag: Trinidad & Tobago +1F1F9 1F1FB ; fully-qualified # 🇹🇻 E2.0 flag: Tuvalu +1F1F9 1F1FC ; fully-qualified # 🇹🇼 E2.0 flag: Taiwan +1F1F9 1F1FF ; fully-qualified # 🇹🇿 E2.0 flag: Tanzania +1F1FA 1F1E6 ; fully-qualified # 🇺🇦 E2.0 flag: Ukraine +1F1FA 1F1EC ; fully-qualified # 🇺🇬 E2.0 flag: Uganda +1F1FA 1F1F2 ; fully-qualified # 🇺🇲 E2.0 flag: U.S. Outlying Islands +1F1FA 1F1F3 ; fully-qualified # 🇺🇳 E4.0 flag: United Nations +1F1FA 1F1F8 ; fully-qualified # 🇺🇸 E0.6 flag: United States +1F1FA 1F1FE ; fully-qualified # 🇺🇾 E2.0 flag: Uruguay +1F1FA 1F1FF ; fully-qualified # 🇺🇿 E2.0 flag: Uzbekistan +1F1FB 1F1E6 ; fully-qualified # 🇻🇦 E2.0 flag: Vatican City +1F1FB 1F1E8 ; fully-qualified # 🇻🇨 E2.0 flag: St. Vincent & Grenadines +1F1FB 1F1EA ; fully-qualified # 🇻🇪 E2.0 flag: Venezuela +1F1FB 1F1EC ; fully-qualified # 🇻🇬 E2.0 flag: British Virgin Islands +1F1FB 1F1EE ; fully-qualified # 🇻🇮 E2.0 flag: U.S. Virgin Islands +1F1FB 1F1F3 ; fully-qualified # 🇻🇳 E2.0 flag: Vietnam +1F1FB 1F1FA ; fully-qualified # 🇻🇺 E2.0 flag: Vanuatu +1F1FC 1F1EB ; fully-qualified # 🇼🇫 E2.0 flag: Wallis & Futuna +1F1FC 1F1F8 ; fully-qualified # 🇼🇸 E2.0 flag: Samoa +1F1FD 1F1F0 ; fully-qualified # 🇽🇰 E2.0 flag: Kosovo +1F1FE 1F1EA ; fully-qualified # 🇾🇪 E2.0 flag: Yemen +1F1FE 1F1F9 ; fully-qualified # 🇾🇹 E2.0 flag: Mayotte +1F1FF 1F1E6 ; fully-qualified # 🇿🇦 E2.0 flag: South Africa +1F1FF 1F1F2 ; fully-qualified # 🇿🇲 E2.0 flag: Zambia +1F1FF 1F1FC ; fully-qualified # 🇿🇼 E2.0 flag: Zimbabwe + +# subgroup: subdivision-flag +1F3F4 E0067 E0062 E0065 E006E E0067 E007F ; fully-qualified # 🏴󠁧󠁢󠁥󠁮󠁧󠁿 E5.0 flag: England +1F3F4 E0067 E0062 E0073 E0063 E0074 E007F ; fully-qualified # 🏴󠁧󠁢󠁳󠁣󠁴󠁿 E5.0 flag: Scotland +1F3F4 E0067 E0062 E0077 E006C E0073 E007F ; fully-qualified # 🏴󠁧󠁢󠁷󠁬󠁳󠁿 E5.0 flag: Wales + +# Flags subtotal: 275 +# Flags subtotal: 275 w/o modifiers + +# Status Counts +# fully-qualified : 3773 +# minimally-qualified : 1009 +# unqualified : 243 +# component : 9 + +#EOF diff --git a/tools/make-emoji-keys/src/main/resources/emoji/ucd/16.0/emoji-test.txt b/tools/make-emoji-keys/src/main/resources/emoji/ucd/16.0/emoji-test.txt new file mode 100644 index 0000000000..5339155277 --- /dev/null +++ b/tools/make-emoji-keys/src/main/resources/emoji/ucd/16.0/emoji-test.txt @@ -0,0 +1,5331 @@ +# emoji-test.txt +# Date: 2024-08-14, 23:51:54 GMT +# © 2024 Unicode®, Inc. +# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. +# For terms of use and license, see https://www.unicode.org/terms_of_use.html +# +# Emoji Keyboard/Display Test Data for UTS #51 +# Version: 16.0 +# +# For documentation and usage, see https://www.unicode.org/reports/tr51 +# +# This file provides data for testing which emoji forms should be in keyboards and which should also be displayed/processed. +# Format: code points; status # emoji name +# Code points — list of one or more hex code points, separated by spaces +# Status +# component — an Emoji_Component, +# excluding Regional_Indicators, ASCII, and non-Emoji. +# fully-qualified — a fully-qualified emoji (see ED-18 in UTS #51), +# excluding Emoji_Component +# minimally-qualified — a minimally-qualified emoji (see ED-18a in UTS #51) +# unqualified — a unqualified emoji (See ED-19 in UTS #51) +# Notes: +# • This includes the emoji components that need emoji presentation (skin tone and hair) +# when isolated, but omits the components that need not have an emoji +# presentation when isolated. +# • The RGI set is covered by the listed fully-qualified emoji. +# • The listed minimally-qualified and unqualified cover all cases where an +# element of the RGI set is missing one or more emoji presentation selectors. +# • The file is in CLDR order, not codepoint order. This is recommended (but not required!) for keyboard palettes. +# • The groups and subgroups are illustrative. See the Emoji Order chart for more information. + + +# group: Smileys & Emotion + +# subgroup: face-smiling +1F600 ; fully-qualified # 😀 E1.0 grinning face +1F603 ; fully-qualified # 😃 E0.6 grinning face with big eyes +1F604 ; fully-qualified # 😄 E0.6 grinning face with smiling eyes +1F601 ; fully-qualified # 😁 E0.6 beaming face with smiling eyes +1F606 ; fully-qualified # 😆 E0.6 grinning squinting face +1F605 ; fully-qualified # 😅 E0.6 grinning face with sweat +1F923 ; fully-qualified # 🤣 E3.0 rolling on the floor laughing +1F602 ; fully-qualified # 😂 E0.6 face with tears of joy +1F642 ; fully-qualified # 🙂 E1.0 slightly smiling face +1F643 ; fully-qualified # 🙃 E1.0 upside-down face +1FAE0 ; fully-qualified # 🫠 E14.0 melting face +1F609 ; fully-qualified # 😉 E0.6 winking face +1F60A ; fully-qualified # 😊 E0.6 smiling face with smiling eyes +1F607 ; fully-qualified # 😇 E1.0 smiling face with halo + +# subgroup: face-affection +1F970 ; fully-qualified # 🥰 E11.0 smiling face with hearts +1F60D ; fully-qualified # 😍 E0.6 smiling face with heart-eyes +1F929 ; fully-qualified # 🤩 E5.0 star-struck +1F618 ; fully-qualified # 😘 E0.6 face blowing a kiss +1F617 ; fully-qualified # 😗 E1.0 kissing face +263A FE0F ; fully-qualified # ☺️ E0.6 smiling face +263A ; unqualified # ☺ E0.6 smiling face +1F61A ; fully-qualified # 😚 E0.6 kissing face with closed eyes +1F619 ; fully-qualified # 😙 E1.0 kissing face with smiling eyes +1F972 ; fully-qualified # 🥲 E13.0 smiling face with tear + +# subgroup: face-tongue +1F60B ; fully-qualified # 😋 E0.6 face savoring food +1F61B ; fully-qualified # 😛 E1.0 face with tongue +1F61C ; fully-qualified # 😜 E0.6 winking face with tongue +1F92A ; fully-qualified # 🤪 E5.0 zany face +1F61D ; fully-qualified # 😝 E0.6 squinting face with tongue +1F911 ; fully-qualified # 🤑 E1.0 money-mouth face + +# subgroup: face-hand +1F917 ; fully-qualified # 🤗 E1.0 smiling face with open hands +1F92D ; fully-qualified # 🤭 E5.0 face with hand over mouth +1FAE2 ; fully-qualified # 🫢 E14.0 face with open eyes and hand over mouth +1FAE3 ; fully-qualified # 🫣 E14.0 face with peeking eye +1F92B ; fully-qualified # 🤫 E5.0 shushing face +1F914 ; fully-qualified # 🤔 E1.0 thinking face +1FAE1 ; fully-qualified # 🫡 E14.0 saluting face + +# subgroup: face-neutral-skeptical +1F910 ; fully-qualified # 🤐 E1.0 zipper-mouth face +1F928 ; fully-qualified # 🤨 E5.0 face with raised eyebrow +1F610 ; fully-qualified # 😐 E0.7 neutral face +1F611 ; fully-qualified # 😑 E1.0 expressionless face +1F636 ; fully-qualified # 😶 E1.0 face without mouth +1FAE5 ; fully-qualified # 🫥 E14.0 dotted line face +1F636 200D 1F32B FE0F ; fully-qualified # 😶‍🌫️ E13.1 face in clouds +1F636 200D 1F32B ; minimally-qualified # 😶‍🌫 E13.1 face in clouds +1F60F ; fully-qualified # 😏 E0.6 smirking face +1F612 ; fully-qualified # 😒 E0.6 unamused face +1F644 ; fully-qualified # 🙄 E1.0 face with rolling eyes +1F62C ; fully-qualified # 😬 E1.0 grimacing face +1F62E 200D 1F4A8 ; fully-qualified # 😮‍💨 E13.1 face exhaling +1F925 ; fully-qualified # 🤥 E3.0 lying face +1FAE8 ; fully-qualified # 🫨 E15.0 shaking face +1F642 200D 2194 FE0F ; fully-qualified # 🙂‍↔️ E15.1 head shaking horizontally +1F642 200D 2194 ; minimally-qualified # 🙂‍↔ E15.1 head shaking horizontally +1F642 200D 2195 FE0F ; fully-qualified # 🙂‍↕️ E15.1 head shaking vertically +1F642 200D 2195 ; minimally-qualified # 🙂‍↕ E15.1 head shaking vertically + +# subgroup: face-sleepy +1F60C ; fully-qualified # 😌 E0.6 relieved face +1F614 ; fully-qualified # 😔 E0.6 pensive face +1F62A ; fully-qualified # 😪 E0.6 sleepy face +1F924 ; fully-qualified # 🤤 E3.0 drooling face +1F634 ; fully-qualified # 😴 E1.0 sleeping face +1FAE9 ; fully-qualified # 🫩 E16.0 face with bags under eyes + +# subgroup: face-unwell +1F637 ; fully-qualified # 😷 E0.6 face with medical mask +1F912 ; fully-qualified # 🤒 E1.0 face with thermometer +1F915 ; fully-qualified # 🤕 E1.0 face with head-bandage +1F922 ; fully-qualified # 🤢 E3.0 nauseated face +1F92E ; fully-qualified # 🤮 E5.0 face vomiting +1F927 ; fully-qualified # 🤧 E3.0 sneezing face +1F975 ; fully-qualified # 🥵 E11.0 hot face +1F976 ; fully-qualified # 🥶 E11.0 cold face +1F974 ; fully-qualified # 🥴 E11.0 woozy face +1F635 ; fully-qualified # 😵 E0.6 face with crossed-out eyes +1F635 200D 1F4AB ; fully-qualified # 😵‍💫 E13.1 face with spiral eyes +1F92F ; fully-qualified # 🤯 E5.0 exploding head + +# subgroup: face-hat +1F920 ; fully-qualified # 🤠 E3.0 cowboy hat face +1F973 ; fully-qualified # 🥳 E11.0 partying face +1F978 ; fully-qualified # 🥸 E13.0 disguised face + +# subgroup: face-glasses +1F60E ; fully-qualified # 😎 E1.0 smiling face with sunglasses +1F913 ; fully-qualified # 🤓 E1.0 nerd face +1F9D0 ; fully-qualified # 🧐 E5.0 face with monocle + +# subgroup: face-concerned +1F615 ; fully-qualified # 😕 E1.0 confused face +1FAE4 ; fully-qualified # 🫤 E14.0 face with diagonal mouth +1F61F ; fully-qualified # 😟 E1.0 worried face +1F641 ; fully-qualified # 🙁 E1.0 slightly frowning face +2639 FE0F ; fully-qualified # ☹️ E0.7 frowning face +2639 ; unqualified # ☹ E0.7 frowning face +1F62E ; fully-qualified # 😮 E1.0 face with open mouth +1F62F ; fully-qualified # 😯 E1.0 hushed face +1F632 ; fully-qualified # 😲 E0.6 astonished face +1F633 ; fully-qualified # 😳 E0.6 flushed face +1F97A ; fully-qualified # 🥺 E11.0 pleading face +1F979 ; fully-qualified # 🥹 E14.0 face holding back tears +1F626 ; fully-qualified # 😦 E1.0 frowning face with open mouth +1F627 ; fully-qualified # 😧 E1.0 anguished face +1F628 ; fully-qualified # 😨 E0.6 fearful face +1F630 ; fully-qualified # 😰 E0.6 anxious face with sweat +1F625 ; fully-qualified # 😥 E0.6 sad but relieved face +1F622 ; fully-qualified # 😢 E0.6 crying face +1F62D ; fully-qualified # 😭 E0.6 loudly crying face +1F631 ; fully-qualified # 😱 E0.6 face screaming in fear +1F616 ; fully-qualified # 😖 E0.6 confounded face +1F623 ; fully-qualified # 😣 E0.6 persevering face +1F61E ; fully-qualified # 😞 E0.6 disappointed face +1F613 ; fully-qualified # 😓 E0.6 downcast face with sweat +1F629 ; fully-qualified # 😩 E0.6 weary face +1F62B ; fully-qualified # 😫 E0.6 tired face +1F971 ; fully-qualified # 🥱 E12.0 yawning face + +# subgroup: face-negative +1F624 ; fully-qualified # 😤 E0.6 face with steam from nose +1F621 ; fully-qualified # 😡 E0.6 enraged face +1F620 ; fully-qualified # 😠 E0.6 angry face +1F92C ; fully-qualified # 🤬 E5.0 face with symbols on mouth +1F608 ; fully-qualified # 😈 E1.0 smiling face with horns +1F47F ; fully-qualified # 👿 E0.6 angry face with horns +1F480 ; fully-qualified # 💀 E0.6 skull +2620 FE0F ; fully-qualified # ☠️ E1.0 skull and crossbones +2620 ; unqualified # ☠ E1.0 skull and crossbones + +# subgroup: face-costume +1F4A9 ; fully-qualified # 💩 E0.6 pile of poo +1F921 ; fully-qualified # 🤡 E3.0 clown face +1F479 ; fully-qualified # 👹 E0.6 ogre +1F47A ; fully-qualified # 👺 E0.6 goblin +1F47B ; fully-qualified # 👻 E0.6 ghost +1F47D ; fully-qualified # 👽 E0.6 alien +1F47E ; fully-qualified # 👾 E0.6 alien monster +1F916 ; fully-qualified # 🤖 E1.0 robot + +# subgroup: cat-face +1F63A ; fully-qualified # 😺 E0.6 grinning cat +1F638 ; fully-qualified # 😸 E0.6 grinning cat with smiling eyes +1F639 ; fully-qualified # 😹 E0.6 cat with tears of joy +1F63B ; fully-qualified # 😻 E0.6 smiling cat with heart-eyes +1F63C ; fully-qualified # 😼 E0.6 cat with wry smile +1F63D ; fully-qualified # 😽 E0.6 kissing cat +1F640 ; fully-qualified # 🙀 E0.6 weary cat +1F63F ; fully-qualified # 😿 E0.6 crying cat +1F63E ; fully-qualified # 😾 E0.6 pouting cat + +# subgroup: monkey-face +1F648 ; fully-qualified # 🙈 E0.6 see-no-evil monkey +1F649 ; fully-qualified # 🙉 E0.6 hear-no-evil monkey +1F64A ; fully-qualified # 🙊 E0.6 speak-no-evil monkey + +# subgroup: heart +1F48C ; fully-qualified # 💌 E0.6 love letter +1F498 ; fully-qualified # 💘 E0.6 heart with arrow +1F49D ; fully-qualified # 💝 E0.6 heart with ribbon +1F496 ; fully-qualified # 💖 E0.6 sparkling heart +1F497 ; fully-qualified # 💗 E0.6 growing heart +1F493 ; fully-qualified # 💓 E0.6 beating heart +1F49E ; fully-qualified # 💞 E0.6 revolving hearts +1F495 ; fully-qualified # 💕 E0.6 two hearts +1F49F ; fully-qualified # 💟 E0.6 heart decoration +2763 FE0F ; fully-qualified # ❣️ E1.0 heart exclamation +2763 ; unqualified # ❣ E1.0 heart exclamation +1F494 ; fully-qualified # 💔 E0.6 broken heart +2764 FE0F 200D 1F525 ; fully-qualified # ❤️‍🔥 E13.1 heart on fire +2764 200D 1F525 ; unqualified # ❤‍🔥 E13.1 heart on fire +2764 FE0F 200D 1FA79 ; fully-qualified # ❤️‍🩹 E13.1 mending heart +2764 200D 1FA79 ; unqualified # ❤‍🩹 E13.1 mending heart +2764 FE0F ; fully-qualified # ❤️ E0.6 red heart +2764 ; unqualified # ❤ E0.6 red heart +1FA77 ; fully-qualified # 🩷 E15.0 pink heart +1F9E1 ; fully-qualified # 🧡 E5.0 orange heart +1F49B ; fully-qualified # 💛 E0.6 yellow heart +1F49A ; fully-qualified # 💚 E0.6 green heart +1F499 ; fully-qualified # 💙 E0.6 blue heart +1FA75 ; fully-qualified # 🩵 E15.0 light blue heart +1F49C ; fully-qualified # 💜 E0.6 purple heart +1F90E ; fully-qualified # 🤎 E12.0 brown heart +1F5A4 ; fully-qualified # 🖤 E3.0 black heart +1FA76 ; fully-qualified # 🩶 E15.0 grey heart +1F90D ; fully-qualified # 🤍 E12.0 white heart + +# subgroup: emotion +1F48B ; fully-qualified # 💋 E0.6 kiss mark +1F4AF ; fully-qualified # 💯 E0.6 hundred points +1F4A2 ; fully-qualified # 💢 E0.6 anger symbol +1F4A5 ; fully-qualified # 💥 E0.6 collision +1F4AB ; fully-qualified # 💫 E0.6 dizzy +1F4A6 ; fully-qualified # 💦 E0.6 sweat droplets +1F4A8 ; fully-qualified # 💨 E0.6 dashing away +1F573 FE0F ; fully-qualified # 🕳️ E0.7 hole +1F573 ; unqualified # 🕳 E0.7 hole +1F4AC ; fully-qualified # 💬 E0.6 speech balloon +1F441 FE0F 200D 1F5E8 FE0F ; fully-qualified # 👁️‍🗨️ E2.0 eye in speech bubble +1F441 200D 1F5E8 FE0F ; unqualified # 👁‍🗨️ E2.0 eye in speech bubble +1F441 FE0F 200D 1F5E8 ; minimally-qualified # 👁️‍🗨 E2.0 eye in speech bubble +1F441 200D 1F5E8 ; unqualified # 👁‍🗨 E2.0 eye in speech bubble +1F5E8 FE0F ; fully-qualified # 🗨️ E2.0 left speech bubble +1F5E8 ; unqualified # 🗨 E2.0 left speech bubble +1F5EF FE0F ; fully-qualified # 🗯️ E0.7 right anger bubble +1F5EF ; unqualified # 🗯 E0.7 right anger bubble +1F4AD ; fully-qualified # 💭 E1.0 thought balloon +1F4A4 ; fully-qualified # 💤 E0.6 ZZZ + +# Smileys & Emotion subtotal: 185 +# Smileys & Emotion subtotal: 185 w/o modifiers + +# group: People & Body + +# subgroup: hand-fingers-open +1F44B ; fully-qualified # 👋 E0.6 waving hand +1F44B 1F3FB ; fully-qualified # 👋🏻 E1.0 waving hand: light skin tone +1F44B 1F3FC ; fully-qualified # 👋🏼 E1.0 waving hand: medium-light skin tone +1F44B 1F3FD ; fully-qualified # 👋🏽 E1.0 waving hand: medium skin tone +1F44B 1F3FE ; fully-qualified # 👋🏾 E1.0 waving hand: medium-dark skin tone +1F44B 1F3FF ; fully-qualified # 👋🏿 E1.0 waving hand: dark skin tone +1F91A ; fully-qualified # 🤚 E3.0 raised back of hand +1F91A 1F3FB ; fully-qualified # 🤚🏻 E3.0 raised back of hand: light skin tone +1F91A 1F3FC ; fully-qualified # 🤚🏼 E3.0 raised back of hand: medium-light skin tone +1F91A 1F3FD ; fully-qualified # 🤚🏽 E3.0 raised back of hand: medium skin tone +1F91A 1F3FE ; fully-qualified # 🤚🏾 E3.0 raised back of hand: medium-dark skin tone +1F91A 1F3FF ; fully-qualified # 🤚🏿 E3.0 raised back of hand: dark skin tone +1F590 FE0F ; fully-qualified # 🖐️ E0.7 hand with fingers splayed +1F590 ; unqualified # 🖐 E0.7 hand with fingers splayed +1F590 1F3FB ; fully-qualified # 🖐🏻 E1.0 hand with fingers splayed: light skin tone +1F590 1F3FC ; fully-qualified # 🖐🏼 E1.0 hand with fingers splayed: medium-light skin tone +1F590 1F3FD ; fully-qualified # 🖐🏽 E1.0 hand with fingers splayed: medium skin tone +1F590 1F3FE ; fully-qualified # 🖐🏾 E1.0 hand with fingers splayed: medium-dark skin tone +1F590 1F3FF ; fully-qualified # 🖐🏿 E1.0 hand with fingers splayed: dark skin tone +270B ; fully-qualified # ✋ E0.6 raised hand +270B 1F3FB ; fully-qualified # ✋🏻 E1.0 raised hand: light skin tone +270B 1F3FC ; fully-qualified # ✋🏼 E1.0 raised hand: medium-light skin tone +270B 1F3FD ; fully-qualified # ✋🏽 E1.0 raised hand: medium skin tone +270B 1F3FE ; fully-qualified # ✋🏾 E1.0 raised hand: medium-dark skin tone +270B 1F3FF ; fully-qualified # ✋🏿 E1.0 raised hand: dark skin tone +1F596 ; fully-qualified # 🖖 E1.0 vulcan salute +1F596 1F3FB ; fully-qualified # 🖖🏻 E1.0 vulcan salute: light skin tone +1F596 1F3FC ; fully-qualified # 🖖🏼 E1.0 vulcan salute: medium-light skin tone +1F596 1F3FD ; fully-qualified # 🖖🏽 E1.0 vulcan salute: medium skin tone +1F596 1F3FE ; fully-qualified # 🖖🏾 E1.0 vulcan salute: medium-dark skin tone +1F596 1F3FF ; fully-qualified # 🖖🏿 E1.0 vulcan salute: dark skin tone +1FAF1 ; fully-qualified # 🫱 E14.0 rightwards hand +1FAF1 1F3FB ; fully-qualified # 🫱🏻 E14.0 rightwards hand: light skin tone +1FAF1 1F3FC ; fully-qualified # 🫱🏼 E14.0 rightwards hand: medium-light skin tone +1FAF1 1F3FD ; fully-qualified # 🫱🏽 E14.0 rightwards hand: medium skin tone +1FAF1 1F3FE ; fully-qualified # 🫱🏾 E14.0 rightwards hand: medium-dark skin tone +1FAF1 1F3FF ; fully-qualified # 🫱🏿 E14.0 rightwards hand: dark skin tone +1FAF2 ; fully-qualified # 🫲 E14.0 leftwards hand +1FAF2 1F3FB ; fully-qualified # 🫲🏻 E14.0 leftwards hand: light skin tone +1FAF2 1F3FC ; fully-qualified # 🫲🏼 E14.0 leftwards hand: medium-light skin tone +1FAF2 1F3FD ; fully-qualified # 🫲🏽 E14.0 leftwards hand: medium skin tone +1FAF2 1F3FE ; fully-qualified # 🫲🏾 E14.0 leftwards hand: medium-dark skin tone +1FAF2 1F3FF ; fully-qualified # 🫲🏿 E14.0 leftwards hand: dark skin tone +1FAF3 ; fully-qualified # 🫳 E14.0 palm down hand +1FAF3 1F3FB ; fully-qualified # 🫳🏻 E14.0 palm down hand: light skin tone +1FAF3 1F3FC ; fully-qualified # 🫳🏼 E14.0 palm down hand: medium-light skin tone +1FAF3 1F3FD ; fully-qualified # 🫳🏽 E14.0 palm down hand: medium skin tone +1FAF3 1F3FE ; fully-qualified # 🫳🏾 E14.0 palm down hand: medium-dark skin tone +1FAF3 1F3FF ; fully-qualified # 🫳🏿 E14.0 palm down hand: dark skin tone +1FAF4 ; fully-qualified # 🫴 E14.0 palm up hand +1FAF4 1F3FB ; fully-qualified # 🫴🏻 E14.0 palm up hand: light skin tone +1FAF4 1F3FC ; fully-qualified # 🫴🏼 E14.0 palm up hand: medium-light skin tone +1FAF4 1F3FD ; fully-qualified # 🫴🏽 E14.0 palm up hand: medium skin tone +1FAF4 1F3FE ; fully-qualified # 🫴🏾 E14.0 palm up hand: medium-dark skin tone +1FAF4 1F3FF ; fully-qualified # 🫴🏿 E14.0 palm up hand: dark skin tone +1FAF7 ; fully-qualified # 🫷 E15.0 leftwards pushing hand +1FAF7 1F3FB ; fully-qualified # 🫷🏻 E15.0 leftwards pushing hand: light skin tone +1FAF7 1F3FC ; fully-qualified # 🫷🏼 E15.0 leftwards pushing hand: medium-light skin tone +1FAF7 1F3FD ; fully-qualified # 🫷🏽 E15.0 leftwards pushing hand: medium skin tone +1FAF7 1F3FE ; fully-qualified # 🫷🏾 E15.0 leftwards pushing hand: medium-dark skin tone +1FAF7 1F3FF ; fully-qualified # 🫷🏿 E15.0 leftwards pushing hand: dark skin tone +1FAF8 ; fully-qualified # 🫸 E15.0 rightwards pushing hand +1FAF8 1F3FB ; fully-qualified # 🫸🏻 E15.0 rightwards pushing hand: light skin tone +1FAF8 1F3FC ; fully-qualified # 🫸🏼 E15.0 rightwards pushing hand: medium-light skin tone +1FAF8 1F3FD ; fully-qualified # 🫸🏽 E15.0 rightwards pushing hand: medium skin tone +1FAF8 1F3FE ; fully-qualified # 🫸🏾 E15.0 rightwards pushing hand: medium-dark skin tone +1FAF8 1F3FF ; fully-qualified # 🫸🏿 E15.0 rightwards pushing hand: dark skin tone + +# subgroup: hand-fingers-partial +1F44C ; fully-qualified # 👌 E0.6 OK hand +1F44C 1F3FB ; fully-qualified # 👌🏻 E1.0 OK hand: light skin tone +1F44C 1F3FC ; fully-qualified # 👌🏼 E1.0 OK hand: medium-light skin tone +1F44C 1F3FD ; fully-qualified # 👌🏽 E1.0 OK hand: medium skin tone +1F44C 1F3FE ; fully-qualified # 👌🏾 E1.0 OK hand: medium-dark skin tone +1F44C 1F3FF ; fully-qualified # 👌🏿 E1.0 OK hand: dark skin tone +1F90C ; fully-qualified # 🤌 E13.0 pinched fingers +1F90C 1F3FB ; fully-qualified # 🤌🏻 E13.0 pinched fingers: light skin tone +1F90C 1F3FC ; fully-qualified # 🤌🏼 E13.0 pinched fingers: medium-light skin tone +1F90C 1F3FD ; fully-qualified # 🤌🏽 E13.0 pinched fingers: medium skin tone +1F90C 1F3FE ; fully-qualified # 🤌🏾 E13.0 pinched fingers: medium-dark skin tone +1F90C 1F3FF ; fully-qualified # 🤌🏿 E13.0 pinched fingers: dark skin tone +1F90F ; fully-qualified # 🤏 E12.0 pinching hand +1F90F 1F3FB ; fully-qualified # 🤏🏻 E12.0 pinching hand: light skin tone +1F90F 1F3FC ; fully-qualified # 🤏🏼 E12.0 pinching hand: medium-light skin tone +1F90F 1F3FD ; fully-qualified # 🤏🏽 E12.0 pinching hand: medium skin tone +1F90F 1F3FE ; fully-qualified # 🤏🏾 E12.0 pinching hand: medium-dark skin tone +1F90F 1F3FF ; fully-qualified # 🤏🏿 E12.0 pinching hand: dark skin tone +270C FE0F ; fully-qualified # ✌️ E0.6 victory hand +270C ; unqualified # ✌ E0.6 victory hand +270C 1F3FB ; fully-qualified # ✌🏻 E1.0 victory hand: light skin tone +270C 1F3FC ; fully-qualified # ✌🏼 E1.0 victory hand: medium-light skin tone +270C 1F3FD ; fully-qualified # ✌🏽 E1.0 victory hand: medium skin tone +270C 1F3FE ; fully-qualified # ✌🏾 E1.0 victory hand: medium-dark skin tone +270C 1F3FF ; fully-qualified # ✌🏿 E1.0 victory hand: dark skin tone +1F91E ; fully-qualified # 🤞 E3.0 crossed fingers +1F91E 1F3FB ; fully-qualified # 🤞🏻 E3.0 crossed fingers: light skin tone +1F91E 1F3FC ; fully-qualified # 🤞🏼 E3.0 crossed fingers: medium-light skin tone +1F91E 1F3FD ; fully-qualified # 🤞🏽 E3.0 crossed fingers: medium skin tone +1F91E 1F3FE ; fully-qualified # 🤞🏾 E3.0 crossed fingers: medium-dark skin tone +1F91E 1F3FF ; fully-qualified # 🤞🏿 E3.0 crossed fingers: dark skin tone +1FAF0 ; fully-qualified # 🫰 E14.0 hand with index finger and thumb crossed +1FAF0 1F3FB ; fully-qualified # 🫰🏻 E14.0 hand with index finger and thumb crossed: light skin tone +1FAF0 1F3FC ; fully-qualified # 🫰🏼 E14.0 hand with index finger and thumb crossed: medium-light skin tone +1FAF0 1F3FD ; fully-qualified # 🫰🏽 E14.0 hand with index finger and thumb crossed: medium skin tone +1FAF0 1F3FE ; fully-qualified # 🫰🏾 E14.0 hand with index finger and thumb crossed: medium-dark skin tone +1FAF0 1F3FF ; fully-qualified # 🫰🏿 E14.0 hand with index finger and thumb crossed: dark skin tone +1F91F ; fully-qualified # 🤟 E5.0 love-you gesture +1F91F 1F3FB ; fully-qualified # 🤟🏻 E5.0 love-you gesture: light skin tone +1F91F 1F3FC ; fully-qualified # 🤟🏼 E5.0 love-you gesture: medium-light skin tone +1F91F 1F3FD ; fully-qualified # 🤟🏽 E5.0 love-you gesture: medium skin tone +1F91F 1F3FE ; fully-qualified # 🤟🏾 E5.0 love-you gesture: medium-dark skin tone +1F91F 1F3FF ; fully-qualified # 🤟🏿 E5.0 love-you gesture: dark skin tone +1F918 ; fully-qualified # 🤘 E1.0 sign of the horns +1F918 1F3FB ; fully-qualified # 🤘🏻 E1.0 sign of the horns: light skin tone +1F918 1F3FC ; fully-qualified # 🤘🏼 E1.0 sign of the horns: medium-light skin tone +1F918 1F3FD ; fully-qualified # 🤘🏽 E1.0 sign of the horns: medium skin tone +1F918 1F3FE ; fully-qualified # 🤘🏾 E1.0 sign of the horns: medium-dark skin tone +1F918 1F3FF ; fully-qualified # 🤘🏿 E1.0 sign of the horns: dark skin tone +1F919 ; fully-qualified # 🤙 E3.0 call me hand +1F919 1F3FB ; fully-qualified # 🤙🏻 E3.0 call me hand: light skin tone +1F919 1F3FC ; fully-qualified # 🤙🏼 E3.0 call me hand: medium-light skin tone +1F919 1F3FD ; fully-qualified # 🤙🏽 E3.0 call me hand: medium skin tone +1F919 1F3FE ; fully-qualified # 🤙🏾 E3.0 call me hand: medium-dark skin tone +1F919 1F3FF ; fully-qualified # 🤙🏿 E3.0 call me hand: dark skin tone + +# subgroup: hand-single-finger +1F448 ; fully-qualified # 👈 E0.6 backhand index pointing left +1F448 1F3FB ; fully-qualified # 👈🏻 E1.0 backhand index pointing left: light skin tone +1F448 1F3FC ; fully-qualified # 👈🏼 E1.0 backhand index pointing left: medium-light skin tone +1F448 1F3FD ; fully-qualified # 👈🏽 E1.0 backhand index pointing left: medium skin tone +1F448 1F3FE ; fully-qualified # 👈🏾 E1.0 backhand index pointing left: medium-dark skin tone +1F448 1F3FF ; fully-qualified # 👈🏿 E1.0 backhand index pointing left: dark skin tone +1F449 ; fully-qualified # 👉 E0.6 backhand index pointing right +1F449 1F3FB ; fully-qualified # 👉🏻 E1.0 backhand index pointing right: light skin tone +1F449 1F3FC ; fully-qualified # 👉🏼 E1.0 backhand index pointing right: medium-light skin tone +1F449 1F3FD ; fully-qualified # 👉🏽 E1.0 backhand index pointing right: medium skin tone +1F449 1F3FE ; fully-qualified # 👉🏾 E1.0 backhand index pointing right: medium-dark skin tone +1F449 1F3FF ; fully-qualified # 👉🏿 E1.0 backhand index pointing right: dark skin tone +1F446 ; fully-qualified # 👆 E0.6 backhand index pointing up +1F446 1F3FB ; fully-qualified # 👆🏻 E1.0 backhand index pointing up: light skin tone +1F446 1F3FC ; fully-qualified # 👆🏼 E1.0 backhand index pointing up: medium-light skin tone +1F446 1F3FD ; fully-qualified # 👆🏽 E1.0 backhand index pointing up: medium skin tone +1F446 1F3FE ; fully-qualified # 👆🏾 E1.0 backhand index pointing up: medium-dark skin tone +1F446 1F3FF ; fully-qualified # 👆🏿 E1.0 backhand index pointing up: dark skin tone +1F595 ; fully-qualified # 🖕 E1.0 middle finger +1F595 1F3FB ; fully-qualified # 🖕🏻 E1.0 middle finger: light skin tone +1F595 1F3FC ; fully-qualified # 🖕🏼 E1.0 middle finger: medium-light skin tone +1F595 1F3FD ; fully-qualified # 🖕🏽 E1.0 middle finger: medium skin tone +1F595 1F3FE ; fully-qualified # 🖕🏾 E1.0 middle finger: medium-dark skin tone +1F595 1F3FF ; fully-qualified # 🖕🏿 E1.0 middle finger: dark skin tone +1F447 ; fully-qualified # 👇 E0.6 backhand index pointing down +1F447 1F3FB ; fully-qualified # 👇🏻 E1.0 backhand index pointing down: light skin tone +1F447 1F3FC ; fully-qualified # 👇🏼 E1.0 backhand index pointing down: medium-light skin tone +1F447 1F3FD ; fully-qualified # 👇🏽 E1.0 backhand index pointing down: medium skin tone +1F447 1F3FE ; fully-qualified # 👇🏾 E1.0 backhand index pointing down: medium-dark skin tone +1F447 1F3FF ; fully-qualified # 👇🏿 E1.0 backhand index pointing down: dark skin tone +261D FE0F ; fully-qualified # ☝️ E0.6 index pointing up +261D ; unqualified # ☝ E0.6 index pointing up +261D 1F3FB ; fully-qualified # ☝🏻 E1.0 index pointing up: light skin tone +261D 1F3FC ; fully-qualified # ☝🏼 E1.0 index pointing up: medium-light skin tone +261D 1F3FD ; fully-qualified # ☝🏽 E1.0 index pointing up: medium skin tone +261D 1F3FE ; fully-qualified # ☝🏾 E1.0 index pointing up: medium-dark skin tone +261D 1F3FF ; fully-qualified # ☝🏿 E1.0 index pointing up: dark skin tone +1FAF5 ; fully-qualified # 🫵 E14.0 index pointing at the viewer +1FAF5 1F3FB ; fully-qualified # 🫵🏻 E14.0 index pointing at the viewer: light skin tone +1FAF5 1F3FC ; fully-qualified # 🫵🏼 E14.0 index pointing at the viewer: medium-light skin tone +1FAF5 1F3FD ; fully-qualified # 🫵🏽 E14.0 index pointing at the viewer: medium skin tone +1FAF5 1F3FE ; fully-qualified # 🫵🏾 E14.0 index pointing at the viewer: medium-dark skin tone +1FAF5 1F3FF ; fully-qualified # 🫵🏿 E14.0 index pointing at the viewer: dark skin tone + +# subgroup: hand-fingers-closed +1F44D ; fully-qualified # 👍 E0.6 thumbs up +1F44D 1F3FB ; fully-qualified # 👍🏻 E1.0 thumbs up: light skin tone +1F44D 1F3FC ; fully-qualified # 👍🏼 E1.0 thumbs up: medium-light skin tone +1F44D 1F3FD ; fully-qualified # 👍🏽 E1.0 thumbs up: medium skin tone +1F44D 1F3FE ; fully-qualified # 👍🏾 E1.0 thumbs up: medium-dark skin tone +1F44D 1F3FF ; fully-qualified # 👍🏿 E1.0 thumbs up: dark skin tone +1F44E ; fully-qualified # 👎 E0.6 thumbs down +1F44E 1F3FB ; fully-qualified # 👎🏻 E1.0 thumbs down: light skin tone +1F44E 1F3FC ; fully-qualified # 👎🏼 E1.0 thumbs down: medium-light skin tone +1F44E 1F3FD ; fully-qualified # 👎🏽 E1.0 thumbs down: medium skin tone +1F44E 1F3FE ; fully-qualified # 👎🏾 E1.0 thumbs down: medium-dark skin tone +1F44E 1F3FF ; fully-qualified # 👎🏿 E1.0 thumbs down: dark skin tone +270A ; fully-qualified # ✊ E0.6 raised fist +270A 1F3FB ; fully-qualified # ✊🏻 E1.0 raised fist: light skin tone +270A 1F3FC ; fully-qualified # ✊🏼 E1.0 raised fist: medium-light skin tone +270A 1F3FD ; fully-qualified # ✊🏽 E1.0 raised fist: medium skin tone +270A 1F3FE ; fully-qualified # ✊🏾 E1.0 raised fist: medium-dark skin tone +270A 1F3FF ; fully-qualified # ✊🏿 E1.0 raised fist: dark skin tone +1F44A ; fully-qualified # 👊 E0.6 oncoming fist +1F44A 1F3FB ; fully-qualified # 👊🏻 E1.0 oncoming fist: light skin tone +1F44A 1F3FC ; fully-qualified # 👊🏼 E1.0 oncoming fist: medium-light skin tone +1F44A 1F3FD ; fully-qualified # 👊🏽 E1.0 oncoming fist: medium skin tone +1F44A 1F3FE ; fully-qualified # 👊🏾 E1.0 oncoming fist: medium-dark skin tone +1F44A 1F3FF ; fully-qualified # 👊🏿 E1.0 oncoming fist: dark skin tone +1F91B ; fully-qualified # 🤛 E3.0 left-facing fist +1F91B 1F3FB ; fully-qualified # 🤛🏻 E3.0 left-facing fist: light skin tone +1F91B 1F3FC ; fully-qualified # 🤛🏼 E3.0 left-facing fist: medium-light skin tone +1F91B 1F3FD ; fully-qualified # 🤛🏽 E3.0 left-facing fist: medium skin tone +1F91B 1F3FE ; fully-qualified # 🤛🏾 E3.0 left-facing fist: medium-dark skin tone +1F91B 1F3FF ; fully-qualified # 🤛🏿 E3.0 left-facing fist: dark skin tone +1F91C ; fully-qualified # 🤜 E3.0 right-facing fist +1F91C 1F3FB ; fully-qualified # 🤜🏻 E3.0 right-facing fist: light skin tone +1F91C 1F3FC ; fully-qualified # 🤜🏼 E3.0 right-facing fist: medium-light skin tone +1F91C 1F3FD ; fully-qualified # 🤜🏽 E3.0 right-facing fist: medium skin tone +1F91C 1F3FE ; fully-qualified # 🤜🏾 E3.0 right-facing fist: medium-dark skin tone +1F91C 1F3FF ; fully-qualified # 🤜🏿 E3.0 right-facing fist: dark skin tone + +# subgroup: hands +1F44F ; fully-qualified # 👏 E0.6 clapping hands +1F44F 1F3FB ; fully-qualified # 👏🏻 E1.0 clapping hands: light skin tone +1F44F 1F3FC ; fully-qualified # 👏🏼 E1.0 clapping hands: medium-light skin tone +1F44F 1F3FD ; fully-qualified # 👏🏽 E1.0 clapping hands: medium skin tone +1F44F 1F3FE ; fully-qualified # 👏🏾 E1.0 clapping hands: medium-dark skin tone +1F44F 1F3FF ; fully-qualified # 👏🏿 E1.0 clapping hands: dark skin tone +1F64C ; fully-qualified # 🙌 E0.6 raising hands +1F64C 1F3FB ; fully-qualified # 🙌🏻 E1.0 raising hands: light skin tone +1F64C 1F3FC ; fully-qualified # 🙌🏼 E1.0 raising hands: medium-light skin tone +1F64C 1F3FD ; fully-qualified # 🙌🏽 E1.0 raising hands: medium skin tone +1F64C 1F3FE ; fully-qualified # 🙌🏾 E1.0 raising hands: medium-dark skin tone +1F64C 1F3FF ; fully-qualified # 🙌🏿 E1.0 raising hands: dark skin tone +1FAF6 ; fully-qualified # 🫶 E14.0 heart hands +1FAF6 1F3FB ; fully-qualified # 🫶🏻 E14.0 heart hands: light skin tone +1FAF6 1F3FC ; fully-qualified # 🫶🏼 E14.0 heart hands: medium-light skin tone +1FAF6 1F3FD ; fully-qualified # 🫶🏽 E14.0 heart hands: medium skin tone +1FAF6 1F3FE ; fully-qualified # 🫶🏾 E14.0 heart hands: medium-dark skin tone +1FAF6 1F3FF ; fully-qualified # 🫶🏿 E14.0 heart hands: dark skin tone +1F450 ; fully-qualified # 👐 E0.6 open hands +1F450 1F3FB ; fully-qualified # 👐🏻 E1.0 open hands: light skin tone +1F450 1F3FC ; fully-qualified # 👐🏼 E1.0 open hands: medium-light skin tone +1F450 1F3FD ; fully-qualified # 👐🏽 E1.0 open hands: medium skin tone +1F450 1F3FE ; fully-qualified # 👐🏾 E1.0 open hands: medium-dark skin tone +1F450 1F3FF ; fully-qualified # 👐🏿 E1.0 open hands: dark skin tone +1F932 ; fully-qualified # 🤲 E5.0 palms up together +1F932 1F3FB ; fully-qualified # 🤲🏻 E5.0 palms up together: light skin tone +1F932 1F3FC ; fully-qualified # 🤲🏼 E5.0 palms up together: medium-light skin tone +1F932 1F3FD ; fully-qualified # 🤲🏽 E5.0 palms up together: medium skin tone +1F932 1F3FE ; fully-qualified # 🤲🏾 E5.0 palms up together: medium-dark skin tone +1F932 1F3FF ; fully-qualified # 🤲🏿 E5.0 palms up together: dark skin tone +1F91D ; fully-qualified # 🤝 E3.0 handshake +1F91D 1F3FB ; fully-qualified # 🤝🏻 E14.0 handshake: light skin tone +1F91D 1F3FC ; fully-qualified # 🤝🏼 E14.0 handshake: medium-light skin tone +1F91D 1F3FD ; fully-qualified # 🤝🏽 E14.0 handshake: medium skin tone +1F91D 1F3FE ; fully-qualified # 🤝🏾 E14.0 handshake: medium-dark skin tone +1F91D 1F3FF ; fully-qualified # 🤝🏿 E14.0 handshake: dark skin tone +1FAF1 1F3FB 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏻‍🫲🏼 E14.0 handshake: light skin tone, medium-light skin tone +1FAF1 1F3FB 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏻‍🫲🏽 E14.0 handshake: light skin tone, medium skin tone +1FAF1 1F3FB 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏻‍🫲🏾 E14.0 handshake: light skin tone, medium-dark skin tone +1FAF1 1F3FB 200D 1FAF2 1F3FF ; fully-qualified # 🫱🏻‍🫲🏿 E14.0 handshake: light skin tone, dark skin tone +1FAF1 1F3FC 200D 1FAF2 1F3FB ; fully-qualified # 🫱🏼‍🫲🏻 E14.0 handshake: medium-light skin tone, light skin tone +1FAF1 1F3FC 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏼‍🫲🏽 E14.0 handshake: medium-light skin tone, medium skin tone +1FAF1 1F3FC 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏼‍🫲🏾 E14.0 handshake: medium-light skin tone, medium-dark skin tone +1FAF1 1F3FC 200D 1FAF2 1F3FF ; fully-qualified # 🫱🏼‍🫲🏿 E14.0 handshake: medium-light skin tone, dark skin tone +1FAF1 1F3FD 200D 1FAF2 1F3FB ; fully-qualified # 🫱🏽‍🫲🏻 E14.0 handshake: medium skin tone, light skin tone +1FAF1 1F3FD 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏽‍🫲🏼 E14.0 handshake: medium skin tone, medium-light skin tone +1FAF1 1F3FD 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏽‍🫲🏾 E14.0 handshake: medium skin tone, medium-dark skin tone +1FAF1 1F3FD 200D 1FAF2 1F3FF ; fully-qualified # 🫱🏽‍🫲🏿 E14.0 handshake: medium skin tone, dark skin tone +1FAF1 1F3FE 200D 1FAF2 1F3FB ; fully-qualified # 🫱🏾‍🫲🏻 E14.0 handshake: medium-dark skin tone, light skin tone +1FAF1 1F3FE 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏾‍🫲🏼 E14.0 handshake: medium-dark skin tone, medium-light skin tone +1FAF1 1F3FE 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏾‍🫲🏽 E14.0 handshake: medium-dark skin tone, medium skin tone +1FAF1 1F3FE 200D 1FAF2 1F3FF ; fully-qualified # 🫱🏾‍🫲🏿 E14.0 handshake: medium-dark skin tone, dark skin tone +1FAF1 1F3FF 200D 1FAF2 1F3FB ; fully-qualified # 🫱🏿‍🫲🏻 E14.0 handshake: dark skin tone, light skin tone +1FAF1 1F3FF 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏿‍🫲🏼 E14.0 handshake: dark skin tone, medium-light skin tone +1FAF1 1F3FF 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏿‍🫲🏽 E14.0 handshake: dark skin tone, medium skin tone +1FAF1 1F3FF 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏿‍🫲🏾 E14.0 handshake: dark skin tone, medium-dark skin tone +1F64F ; fully-qualified # 🙏 E0.6 folded hands +1F64F 1F3FB ; fully-qualified # 🙏🏻 E1.0 folded hands: light skin tone +1F64F 1F3FC ; fully-qualified # 🙏🏼 E1.0 folded hands: medium-light skin tone +1F64F 1F3FD ; fully-qualified # 🙏🏽 E1.0 folded hands: medium skin tone +1F64F 1F3FE ; fully-qualified # 🙏🏾 E1.0 folded hands: medium-dark skin tone +1F64F 1F3FF ; fully-qualified # 🙏🏿 E1.0 folded hands: dark skin tone + +# subgroup: hand-prop +270D FE0F ; fully-qualified # ✍️ E0.7 writing hand +270D ; unqualified # ✍ E0.7 writing hand +270D 1F3FB ; fully-qualified # ✍🏻 E1.0 writing hand: light skin tone +270D 1F3FC ; fully-qualified # ✍🏼 E1.0 writing hand: medium-light skin tone +270D 1F3FD ; fully-qualified # ✍🏽 E1.0 writing hand: medium skin tone +270D 1F3FE ; fully-qualified # ✍🏾 E1.0 writing hand: medium-dark skin tone +270D 1F3FF ; fully-qualified # ✍🏿 E1.0 writing hand: dark skin tone +1F485 ; fully-qualified # 💅 E0.6 nail polish +1F485 1F3FB ; fully-qualified # 💅🏻 E1.0 nail polish: light skin tone +1F485 1F3FC ; fully-qualified # 💅🏼 E1.0 nail polish: medium-light skin tone +1F485 1F3FD ; fully-qualified # 💅🏽 E1.0 nail polish: medium skin tone +1F485 1F3FE ; fully-qualified # 💅🏾 E1.0 nail polish: medium-dark skin tone +1F485 1F3FF ; fully-qualified # 💅🏿 E1.0 nail polish: dark skin tone +1F933 ; fully-qualified # 🤳 E3.0 selfie +1F933 1F3FB ; fully-qualified # 🤳🏻 E3.0 selfie: light skin tone +1F933 1F3FC ; fully-qualified # 🤳🏼 E3.0 selfie: medium-light skin tone +1F933 1F3FD ; fully-qualified # 🤳🏽 E3.0 selfie: medium skin tone +1F933 1F3FE ; fully-qualified # 🤳🏾 E3.0 selfie: medium-dark skin tone +1F933 1F3FF ; fully-qualified # 🤳🏿 E3.0 selfie: dark skin tone + +# subgroup: body-parts +1F4AA ; fully-qualified # 💪 E0.6 flexed biceps +1F4AA 1F3FB ; fully-qualified # 💪🏻 E1.0 flexed biceps: light skin tone +1F4AA 1F3FC ; fully-qualified # 💪🏼 E1.0 flexed biceps: medium-light skin tone +1F4AA 1F3FD ; fully-qualified # 💪🏽 E1.0 flexed biceps: medium skin tone +1F4AA 1F3FE ; fully-qualified # 💪🏾 E1.0 flexed biceps: medium-dark skin tone +1F4AA 1F3FF ; fully-qualified # 💪🏿 E1.0 flexed biceps: dark skin tone +1F9BE ; fully-qualified # 🦾 E12.0 mechanical arm +1F9BF ; fully-qualified # 🦿 E12.0 mechanical leg +1F9B5 ; fully-qualified # 🦵 E11.0 leg +1F9B5 1F3FB ; fully-qualified # 🦵🏻 E11.0 leg: light skin tone +1F9B5 1F3FC ; fully-qualified # 🦵🏼 E11.0 leg: medium-light skin tone +1F9B5 1F3FD ; fully-qualified # 🦵🏽 E11.0 leg: medium skin tone +1F9B5 1F3FE ; fully-qualified # 🦵🏾 E11.0 leg: medium-dark skin tone +1F9B5 1F3FF ; fully-qualified # 🦵🏿 E11.0 leg: dark skin tone +1F9B6 ; fully-qualified # 🦶 E11.0 foot +1F9B6 1F3FB ; fully-qualified # 🦶🏻 E11.0 foot: light skin tone +1F9B6 1F3FC ; fully-qualified # 🦶🏼 E11.0 foot: medium-light skin tone +1F9B6 1F3FD ; fully-qualified # 🦶🏽 E11.0 foot: medium skin tone +1F9B6 1F3FE ; fully-qualified # 🦶🏾 E11.0 foot: medium-dark skin tone +1F9B6 1F3FF ; fully-qualified # 🦶🏿 E11.0 foot: dark skin tone +1F442 ; fully-qualified # 👂 E0.6 ear +1F442 1F3FB ; fully-qualified # 👂🏻 E1.0 ear: light skin tone +1F442 1F3FC ; fully-qualified # 👂🏼 E1.0 ear: medium-light skin tone +1F442 1F3FD ; fully-qualified # 👂🏽 E1.0 ear: medium skin tone +1F442 1F3FE ; fully-qualified # 👂🏾 E1.0 ear: medium-dark skin tone +1F442 1F3FF ; fully-qualified # 👂🏿 E1.0 ear: dark skin tone +1F9BB ; fully-qualified # 🦻 E12.0 ear with hearing aid +1F9BB 1F3FB ; fully-qualified # 🦻🏻 E12.0 ear with hearing aid: light skin tone +1F9BB 1F3FC ; fully-qualified # 🦻🏼 E12.0 ear with hearing aid: medium-light skin tone +1F9BB 1F3FD ; fully-qualified # 🦻🏽 E12.0 ear with hearing aid: medium skin tone +1F9BB 1F3FE ; fully-qualified # 🦻🏾 E12.0 ear with hearing aid: medium-dark skin tone +1F9BB 1F3FF ; fully-qualified # 🦻🏿 E12.0 ear with hearing aid: dark skin tone +1F443 ; fully-qualified # 👃 E0.6 nose +1F443 1F3FB ; fully-qualified # 👃🏻 E1.0 nose: light skin tone +1F443 1F3FC ; fully-qualified # 👃🏼 E1.0 nose: medium-light skin tone +1F443 1F3FD ; fully-qualified # 👃🏽 E1.0 nose: medium skin tone +1F443 1F3FE ; fully-qualified # 👃🏾 E1.0 nose: medium-dark skin tone +1F443 1F3FF ; fully-qualified # 👃🏿 E1.0 nose: dark skin tone +1F9E0 ; fully-qualified # 🧠 E5.0 brain +1FAC0 ; fully-qualified # 🫀 E13.0 anatomical heart +1FAC1 ; fully-qualified # 🫁 E13.0 lungs +1F9B7 ; fully-qualified # 🦷 E11.0 tooth +1F9B4 ; fully-qualified # 🦴 E11.0 bone +1F440 ; fully-qualified # 👀 E0.6 eyes +1F441 FE0F ; fully-qualified # 👁️ E0.7 eye +1F441 ; unqualified # 👁 E0.7 eye +1F445 ; fully-qualified # 👅 E0.6 tongue +1F444 ; fully-qualified # 👄 E0.6 mouth +1FAE6 ; fully-qualified # 🫦 E14.0 biting lip + +# subgroup: person +1F476 ; fully-qualified # 👶 E0.6 baby +1F476 1F3FB ; fully-qualified # 👶🏻 E1.0 baby: light skin tone +1F476 1F3FC ; fully-qualified # 👶🏼 E1.0 baby: medium-light skin tone +1F476 1F3FD ; fully-qualified # 👶🏽 E1.0 baby: medium skin tone +1F476 1F3FE ; fully-qualified # 👶🏾 E1.0 baby: medium-dark skin tone +1F476 1F3FF ; fully-qualified # 👶🏿 E1.0 baby: dark skin tone +1F9D2 ; fully-qualified # 🧒 E5.0 child +1F9D2 1F3FB ; fully-qualified # 🧒🏻 E5.0 child: light skin tone +1F9D2 1F3FC ; fully-qualified # 🧒🏼 E5.0 child: medium-light skin tone +1F9D2 1F3FD ; fully-qualified # 🧒🏽 E5.0 child: medium skin tone +1F9D2 1F3FE ; fully-qualified # 🧒🏾 E5.0 child: medium-dark skin tone +1F9D2 1F3FF ; fully-qualified # 🧒🏿 E5.0 child: dark skin tone +1F466 ; fully-qualified # 👦 E0.6 boy +1F466 1F3FB ; fully-qualified # 👦🏻 E1.0 boy: light skin tone +1F466 1F3FC ; fully-qualified # 👦🏼 E1.0 boy: medium-light skin tone +1F466 1F3FD ; fully-qualified # 👦🏽 E1.0 boy: medium skin tone +1F466 1F3FE ; fully-qualified # 👦🏾 E1.0 boy: medium-dark skin tone +1F466 1F3FF ; fully-qualified # 👦🏿 E1.0 boy: dark skin tone +1F467 ; fully-qualified # 👧 E0.6 girl +1F467 1F3FB ; fully-qualified # 👧🏻 E1.0 girl: light skin tone +1F467 1F3FC ; fully-qualified # 👧🏼 E1.0 girl: medium-light skin tone +1F467 1F3FD ; fully-qualified # 👧🏽 E1.0 girl: medium skin tone +1F467 1F3FE ; fully-qualified # 👧🏾 E1.0 girl: medium-dark skin tone +1F467 1F3FF ; fully-qualified # 👧🏿 E1.0 girl: dark skin tone +1F9D1 ; fully-qualified # 🧑 E5.0 person +1F9D1 1F3FB ; fully-qualified # 🧑🏻 E5.0 person: light skin tone +1F9D1 1F3FC ; fully-qualified # 🧑🏼 E5.0 person: medium-light skin tone +1F9D1 1F3FD ; fully-qualified # 🧑🏽 E5.0 person: medium skin tone +1F9D1 1F3FE ; fully-qualified # 🧑🏾 E5.0 person: medium-dark skin tone +1F9D1 1F3FF ; fully-qualified # 🧑🏿 E5.0 person: dark skin tone +1F471 ; fully-qualified # 👱 E0.6 person: blond hair +1F471 1F3FB ; fully-qualified # 👱🏻 E1.0 person: light skin tone, blond hair +1F471 1F3FC ; fully-qualified # 👱🏼 E1.0 person: medium-light skin tone, blond hair +1F471 1F3FD ; fully-qualified # 👱🏽 E1.0 person: medium skin tone, blond hair +1F471 1F3FE ; fully-qualified # 👱🏾 E1.0 person: medium-dark skin tone, blond hair +1F471 1F3FF ; fully-qualified # 👱🏿 E1.0 person: dark skin tone, blond hair +1F468 ; fully-qualified # 👨 E0.6 man +1F468 1F3FB ; fully-qualified # 👨🏻 E1.0 man: light skin tone +1F468 1F3FC ; fully-qualified # 👨🏼 E1.0 man: medium-light skin tone +1F468 1F3FD ; fully-qualified # 👨🏽 E1.0 man: medium skin tone +1F468 1F3FE ; fully-qualified # 👨🏾 E1.0 man: medium-dark skin tone +1F468 1F3FF ; fully-qualified # 👨🏿 E1.0 man: dark skin tone +1F9D4 ; fully-qualified # 🧔 E5.0 person: beard +1F9D4 1F3FB ; fully-qualified # 🧔🏻 E5.0 person: light skin tone, beard +1F9D4 1F3FC ; fully-qualified # 🧔🏼 E5.0 person: medium-light skin tone, beard +1F9D4 1F3FD ; fully-qualified # 🧔🏽 E5.0 person: medium skin tone, beard +1F9D4 1F3FE ; fully-qualified # 🧔🏾 E5.0 person: medium-dark skin tone, beard +1F9D4 1F3FF ; fully-qualified # 🧔🏿 E5.0 person: dark skin tone, beard +1F9D4 200D 2642 FE0F ; fully-qualified # 🧔‍♂️ E13.1 man: beard +1F9D4 200D 2642 ; minimally-qualified # 🧔‍♂ E13.1 man: beard +1F9D4 1F3FB 200D 2642 FE0F ; fully-qualified # 🧔🏻‍♂️ E13.1 man: light skin tone, beard +1F9D4 1F3FB 200D 2642 ; minimally-qualified # 🧔🏻‍♂ E13.1 man: light skin tone, beard +1F9D4 1F3FC 200D 2642 FE0F ; fully-qualified # 🧔🏼‍♂️ E13.1 man: medium-light skin tone, beard +1F9D4 1F3FC 200D 2642 ; minimally-qualified # 🧔🏼‍♂ E13.1 man: medium-light skin tone, beard +1F9D4 1F3FD 200D 2642 FE0F ; fully-qualified # 🧔🏽‍♂️ E13.1 man: medium skin tone, beard +1F9D4 1F3FD 200D 2642 ; minimally-qualified # 🧔🏽‍♂ E13.1 man: medium skin tone, beard +1F9D4 1F3FE 200D 2642 FE0F ; fully-qualified # 🧔🏾‍♂️ E13.1 man: medium-dark skin tone, beard +1F9D4 1F3FE 200D 2642 ; minimally-qualified # 🧔🏾‍♂ E13.1 man: medium-dark skin tone, beard +1F9D4 1F3FF 200D 2642 FE0F ; fully-qualified # 🧔🏿‍♂️ E13.1 man: dark skin tone, beard +1F9D4 1F3FF 200D 2642 ; minimally-qualified # 🧔🏿‍♂ E13.1 man: dark skin tone, beard +1F9D4 200D 2640 FE0F ; fully-qualified # 🧔‍♀️ E13.1 woman: beard +1F9D4 200D 2640 ; minimally-qualified # 🧔‍♀ E13.1 woman: beard +1F9D4 1F3FB 200D 2640 FE0F ; fully-qualified # 🧔🏻‍♀️ E13.1 woman: light skin tone, beard +1F9D4 1F3FB 200D 2640 ; minimally-qualified # 🧔🏻‍♀ E13.1 woman: light skin tone, beard +1F9D4 1F3FC 200D 2640 FE0F ; fully-qualified # 🧔🏼‍♀️ E13.1 woman: medium-light skin tone, beard +1F9D4 1F3FC 200D 2640 ; minimally-qualified # 🧔🏼‍♀ E13.1 woman: medium-light skin tone, beard +1F9D4 1F3FD 200D 2640 FE0F ; fully-qualified # 🧔🏽‍♀️ E13.1 woman: medium skin tone, beard +1F9D4 1F3FD 200D 2640 ; minimally-qualified # 🧔🏽‍♀ E13.1 woman: medium skin tone, beard +1F9D4 1F3FE 200D 2640 FE0F ; fully-qualified # 🧔🏾‍♀️ E13.1 woman: medium-dark skin tone, beard +1F9D4 1F3FE 200D 2640 ; minimally-qualified # 🧔🏾‍♀ E13.1 woman: medium-dark skin tone, beard +1F9D4 1F3FF 200D 2640 FE0F ; fully-qualified # 🧔🏿‍♀️ E13.1 woman: dark skin tone, beard +1F9D4 1F3FF 200D 2640 ; minimally-qualified # 🧔🏿‍♀ E13.1 woman: dark skin tone, beard +1F468 200D 1F9B0 ; fully-qualified # 👨‍🦰 E11.0 man: red hair +1F468 1F3FB 200D 1F9B0 ; fully-qualified # 👨🏻‍🦰 E11.0 man: light skin tone, red hair +1F468 1F3FC 200D 1F9B0 ; fully-qualified # 👨🏼‍🦰 E11.0 man: medium-light skin tone, red hair +1F468 1F3FD 200D 1F9B0 ; fully-qualified # 👨🏽‍🦰 E11.0 man: medium skin tone, red hair +1F468 1F3FE 200D 1F9B0 ; fully-qualified # 👨🏾‍🦰 E11.0 man: medium-dark skin tone, red hair +1F468 1F3FF 200D 1F9B0 ; fully-qualified # 👨🏿‍🦰 E11.0 man: dark skin tone, red hair +1F468 200D 1F9B1 ; fully-qualified # 👨‍🦱 E11.0 man: curly hair +1F468 1F3FB 200D 1F9B1 ; fully-qualified # 👨🏻‍🦱 E11.0 man: light skin tone, curly hair +1F468 1F3FC 200D 1F9B1 ; fully-qualified # 👨🏼‍🦱 E11.0 man: medium-light skin tone, curly hair +1F468 1F3FD 200D 1F9B1 ; fully-qualified # 👨🏽‍🦱 E11.0 man: medium skin tone, curly hair +1F468 1F3FE 200D 1F9B1 ; fully-qualified # 👨🏾‍🦱 E11.0 man: medium-dark skin tone, curly hair +1F468 1F3FF 200D 1F9B1 ; fully-qualified # 👨🏿‍🦱 E11.0 man: dark skin tone, curly hair +1F468 200D 1F9B3 ; fully-qualified # 👨‍🦳 E11.0 man: white hair +1F468 1F3FB 200D 1F9B3 ; fully-qualified # 👨🏻‍🦳 E11.0 man: light skin tone, white hair +1F468 1F3FC 200D 1F9B3 ; fully-qualified # 👨🏼‍🦳 E11.0 man: medium-light skin tone, white hair +1F468 1F3FD 200D 1F9B3 ; fully-qualified # 👨🏽‍🦳 E11.0 man: medium skin tone, white hair +1F468 1F3FE 200D 1F9B3 ; fully-qualified # 👨🏾‍🦳 E11.0 man: medium-dark skin tone, white hair +1F468 1F3FF 200D 1F9B3 ; fully-qualified # 👨🏿‍🦳 E11.0 man: dark skin tone, white hair +1F468 200D 1F9B2 ; fully-qualified # 👨‍🦲 E11.0 man: bald +1F468 1F3FB 200D 1F9B2 ; fully-qualified # 👨🏻‍🦲 E11.0 man: light skin tone, bald +1F468 1F3FC 200D 1F9B2 ; fully-qualified # 👨🏼‍🦲 E11.0 man: medium-light skin tone, bald +1F468 1F3FD 200D 1F9B2 ; fully-qualified # 👨🏽‍🦲 E11.0 man: medium skin tone, bald +1F468 1F3FE 200D 1F9B2 ; fully-qualified # 👨🏾‍🦲 E11.0 man: medium-dark skin tone, bald +1F468 1F3FF 200D 1F9B2 ; fully-qualified # 👨🏿‍🦲 E11.0 man: dark skin tone, bald +1F469 ; fully-qualified # 👩 E0.6 woman +1F469 1F3FB ; fully-qualified # 👩🏻 E1.0 woman: light skin tone +1F469 1F3FC ; fully-qualified # 👩🏼 E1.0 woman: medium-light skin tone +1F469 1F3FD ; fully-qualified # 👩🏽 E1.0 woman: medium skin tone +1F469 1F3FE ; fully-qualified # 👩🏾 E1.0 woman: medium-dark skin tone +1F469 1F3FF ; fully-qualified # 👩🏿 E1.0 woman: dark skin tone +1F469 200D 1F9B0 ; fully-qualified # 👩‍🦰 E11.0 woman: red hair +1F469 1F3FB 200D 1F9B0 ; fully-qualified # 👩🏻‍🦰 E11.0 woman: light skin tone, red hair +1F469 1F3FC 200D 1F9B0 ; fully-qualified # 👩🏼‍🦰 E11.0 woman: medium-light skin tone, red hair +1F469 1F3FD 200D 1F9B0 ; fully-qualified # 👩🏽‍🦰 E11.0 woman: medium skin tone, red hair +1F469 1F3FE 200D 1F9B0 ; fully-qualified # 👩🏾‍🦰 E11.0 woman: medium-dark skin tone, red hair +1F469 1F3FF 200D 1F9B0 ; fully-qualified # 👩🏿‍🦰 E11.0 woman: dark skin tone, red hair +1F9D1 200D 1F9B0 ; fully-qualified # 🧑‍🦰 E12.1 person: red hair +1F9D1 1F3FB 200D 1F9B0 ; fully-qualified # 🧑🏻‍🦰 E12.1 person: light skin tone, red hair +1F9D1 1F3FC 200D 1F9B0 ; fully-qualified # 🧑🏼‍🦰 E12.1 person: medium-light skin tone, red hair +1F9D1 1F3FD 200D 1F9B0 ; fully-qualified # 🧑🏽‍🦰 E12.1 person: medium skin tone, red hair +1F9D1 1F3FE 200D 1F9B0 ; fully-qualified # 🧑🏾‍🦰 E12.1 person: medium-dark skin tone, red hair +1F9D1 1F3FF 200D 1F9B0 ; fully-qualified # 🧑🏿‍🦰 E12.1 person: dark skin tone, red hair +1F469 200D 1F9B1 ; fully-qualified # 👩‍🦱 E11.0 woman: curly hair +1F469 1F3FB 200D 1F9B1 ; fully-qualified # 👩🏻‍🦱 E11.0 woman: light skin tone, curly hair +1F469 1F3FC 200D 1F9B1 ; fully-qualified # 👩🏼‍🦱 E11.0 woman: medium-light skin tone, curly hair +1F469 1F3FD 200D 1F9B1 ; fully-qualified # 👩🏽‍🦱 E11.0 woman: medium skin tone, curly hair +1F469 1F3FE 200D 1F9B1 ; fully-qualified # 👩🏾‍🦱 E11.0 woman: medium-dark skin tone, curly hair +1F469 1F3FF 200D 1F9B1 ; fully-qualified # 👩🏿‍🦱 E11.0 woman: dark skin tone, curly hair +1F9D1 200D 1F9B1 ; fully-qualified # 🧑‍🦱 E12.1 person: curly hair +1F9D1 1F3FB 200D 1F9B1 ; fully-qualified # 🧑🏻‍🦱 E12.1 person: light skin tone, curly hair +1F9D1 1F3FC 200D 1F9B1 ; fully-qualified # 🧑🏼‍🦱 E12.1 person: medium-light skin tone, curly hair +1F9D1 1F3FD 200D 1F9B1 ; fully-qualified # 🧑🏽‍🦱 E12.1 person: medium skin tone, curly hair +1F9D1 1F3FE 200D 1F9B1 ; fully-qualified # 🧑🏾‍🦱 E12.1 person: medium-dark skin tone, curly hair +1F9D1 1F3FF 200D 1F9B1 ; fully-qualified # 🧑🏿‍🦱 E12.1 person: dark skin tone, curly hair +1F469 200D 1F9B3 ; fully-qualified # 👩‍🦳 E11.0 woman: white hair +1F469 1F3FB 200D 1F9B3 ; fully-qualified # 👩🏻‍🦳 E11.0 woman: light skin tone, white hair +1F469 1F3FC 200D 1F9B3 ; fully-qualified # 👩🏼‍🦳 E11.0 woman: medium-light skin tone, white hair +1F469 1F3FD 200D 1F9B3 ; fully-qualified # 👩🏽‍🦳 E11.0 woman: medium skin tone, white hair +1F469 1F3FE 200D 1F9B3 ; fully-qualified # 👩🏾‍🦳 E11.0 woman: medium-dark skin tone, white hair +1F469 1F3FF 200D 1F9B3 ; fully-qualified # 👩🏿‍🦳 E11.0 woman: dark skin tone, white hair +1F9D1 200D 1F9B3 ; fully-qualified # 🧑‍🦳 E12.1 person: white hair +1F9D1 1F3FB 200D 1F9B3 ; fully-qualified # 🧑🏻‍🦳 E12.1 person: light skin tone, white hair +1F9D1 1F3FC 200D 1F9B3 ; fully-qualified # 🧑🏼‍🦳 E12.1 person: medium-light skin tone, white hair +1F9D1 1F3FD 200D 1F9B3 ; fully-qualified # 🧑🏽‍🦳 E12.1 person: medium skin tone, white hair +1F9D1 1F3FE 200D 1F9B3 ; fully-qualified # 🧑🏾‍🦳 E12.1 person: medium-dark skin tone, white hair +1F9D1 1F3FF 200D 1F9B3 ; fully-qualified # 🧑🏿‍🦳 E12.1 person: dark skin tone, white hair +1F469 200D 1F9B2 ; fully-qualified # 👩‍🦲 E11.0 woman: bald +1F469 1F3FB 200D 1F9B2 ; fully-qualified # 👩🏻‍🦲 E11.0 woman: light skin tone, bald +1F469 1F3FC 200D 1F9B2 ; fully-qualified # 👩🏼‍🦲 E11.0 woman: medium-light skin tone, bald +1F469 1F3FD 200D 1F9B2 ; fully-qualified # 👩🏽‍🦲 E11.0 woman: medium skin tone, bald +1F469 1F3FE 200D 1F9B2 ; fully-qualified # 👩🏾‍🦲 E11.0 woman: medium-dark skin tone, bald +1F469 1F3FF 200D 1F9B2 ; fully-qualified # 👩🏿‍🦲 E11.0 woman: dark skin tone, bald +1F9D1 200D 1F9B2 ; fully-qualified # 🧑‍🦲 E12.1 person: bald +1F9D1 1F3FB 200D 1F9B2 ; fully-qualified # 🧑🏻‍🦲 E12.1 person: light skin tone, bald +1F9D1 1F3FC 200D 1F9B2 ; fully-qualified # 🧑🏼‍🦲 E12.1 person: medium-light skin tone, bald +1F9D1 1F3FD 200D 1F9B2 ; fully-qualified # 🧑🏽‍🦲 E12.1 person: medium skin tone, bald +1F9D1 1F3FE 200D 1F9B2 ; fully-qualified # 🧑🏾‍🦲 E12.1 person: medium-dark skin tone, bald +1F9D1 1F3FF 200D 1F9B2 ; fully-qualified # 🧑🏿‍🦲 E12.1 person: dark skin tone, bald +1F471 200D 2640 FE0F ; fully-qualified # 👱‍♀️ E4.0 woman: blond hair +1F471 200D 2640 ; minimally-qualified # 👱‍♀ E4.0 woman: blond hair +1F471 1F3FB 200D 2640 FE0F ; fully-qualified # 👱🏻‍♀️ E4.0 woman: light skin tone, blond hair +1F471 1F3FB 200D 2640 ; minimally-qualified # 👱🏻‍♀ E4.0 woman: light skin tone, blond hair +1F471 1F3FC 200D 2640 FE0F ; fully-qualified # 👱🏼‍♀️ E4.0 woman: medium-light skin tone, blond hair +1F471 1F3FC 200D 2640 ; minimally-qualified # 👱🏼‍♀ E4.0 woman: medium-light skin tone, blond hair +1F471 1F3FD 200D 2640 FE0F ; fully-qualified # 👱🏽‍♀️ E4.0 woman: medium skin tone, blond hair +1F471 1F3FD 200D 2640 ; minimally-qualified # 👱🏽‍♀ E4.0 woman: medium skin tone, blond hair +1F471 1F3FE 200D 2640 FE0F ; fully-qualified # 👱🏾‍♀️ E4.0 woman: medium-dark skin tone, blond hair +1F471 1F3FE 200D 2640 ; minimally-qualified # 👱🏾‍♀ E4.0 woman: medium-dark skin tone, blond hair +1F471 1F3FF 200D 2640 FE0F ; fully-qualified # 👱🏿‍♀️ E4.0 woman: dark skin tone, blond hair +1F471 1F3FF 200D 2640 ; minimally-qualified # 👱🏿‍♀ E4.0 woman: dark skin tone, blond hair +1F471 200D 2642 FE0F ; fully-qualified # 👱‍♂️ E4.0 man: blond hair +1F471 200D 2642 ; minimally-qualified # 👱‍♂ E4.0 man: blond hair +1F471 1F3FB 200D 2642 FE0F ; fully-qualified # 👱🏻‍♂️ E4.0 man: light skin tone, blond hair +1F471 1F3FB 200D 2642 ; minimally-qualified # 👱🏻‍♂ E4.0 man: light skin tone, blond hair +1F471 1F3FC 200D 2642 FE0F ; fully-qualified # 👱🏼‍♂️ E4.0 man: medium-light skin tone, blond hair +1F471 1F3FC 200D 2642 ; minimally-qualified # 👱🏼‍♂ E4.0 man: medium-light skin tone, blond hair +1F471 1F3FD 200D 2642 FE0F ; fully-qualified # 👱🏽‍♂️ E4.0 man: medium skin tone, blond hair +1F471 1F3FD 200D 2642 ; minimally-qualified # 👱🏽‍♂ E4.0 man: medium skin tone, blond hair +1F471 1F3FE 200D 2642 FE0F ; fully-qualified # 👱🏾‍♂️ E4.0 man: medium-dark skin tone, blond hair +1F471 1F3FE 200D 2642 ; minimally-qualified # 👱🏾‍♂ E4.0 man: medium-dark skin tone, blond hair +1F471 1F3FF 200D 2642 FE0F ; fully-qualified # 👱🏿‍♂️ E4.0 man: dark skin tone, blond hair +1F471 1F3FF 200D 2642 ; minimally-qualified # 👱🏿‍♂ E4.0 man: dark skin tone, blond hair +1F9D3 ; fully-qualified # 🧓 E5.0 older person +1F9D3 1F3FB ; fully-qualified # 🧓🏻 E5.0 older person: light skin tone +1F9D3 1F3FC ; fully-qualified # 🧓🏼 E5.0 older person: medium-light skin tone +1F9D3 1F3FD ; fully-qualified # 🧓🏽 E5.0 older person: medium skin tone +1F9D3 1F3FE ; fully-qualified # 🧓🏾 E5.0 older person: medium-dark skin tone +1F9D3 1F3FF ; fully-qualified # 🧓🏿 E5.0 older person: dark skin tone +1F474 ; fully-qualified # 👴 E0.6 old man +1F474 1F3FB ; fully-qualified # 👴🏻 E1.0 old man: light skin tone +1F474 1F3FC ; fully-qualified # 👴🏼 E1.0 old man: medium-light skin tone +1F474 1F3FD ; fully-qualified # 👴🏽 E1.0 old man: medium skin tone +1F474 1F3FE ; fully-qualified # 👴🏾 E1.0 old man: medium-dark skin tone +1F474 1F3FF ; fully-qualified # 👴🏿 E1.0 old man: dark skin tone +1F475 ; fully-qualified # 👵 E0.6 old woman +1F475 1F3FB ; fully-qualified # 👵🏻 E1.0 old woman: light skin tone +1F475 1F3FC ; fully-qualified # 👵🏼 E1.0 old woman: medium-light skin tone +1F475 1F3FD ; fully-qualified # 👵🏽 E1.0 old woman: medium skin tone +1F475 1F3FE ; fully-qualified # 👵🏾 E1.0 old woman: medium-dark skin tone +1F475 1F3FF ; fully-qualified # 👵🏿 E1.0 old woman: dark skin tone + +# subgroup: person-gesture +1F64D ; fully-qualified # 🙍 E0.6 person frowning +1F64D 1F3FB ; fully-qualified # 🙍🏻 E1.0 person frowning: light skin tone +1F64D 1F3FC ; fully-qualified # 🙍🏼 E1.0 person frowning: medium-light skin tone +1F64D 1F3FD ; fully-qualified # 🙍🏽 E1.0 person frowning: medium skin tone +1F64D 1F3FE ; fully-qualified # 🙍🏾 E1.0 person frowning: medium-dark skin tone +1F64D 1F3FF ; fully-qualified # 🙍🏿 E1.0 person frowning: dark skin tone +1F64D 200D 2642 FE0F ; fully-qualified # 🙍‍♂️ E4.0 man frowning +1F64D 200D 2642 ; minimally-qualified # 🙍‍♂ E4.0 man frowning +1F64D 1F3FB 200D 2642 FE0F ; fully-qualified # 🙍🏻‍♂️ E4.0 man frowning: light skin tone +1F64D 1F3FB 200D 2642 ; minimally-qualified # 🙍🏻‍♂ E4.0 man frowning: light skin tone +1F64D 1F3FC 200D 2642 FE0F ; fully-qualified # 🙍🏼‍♂️ E4.0 man frowning: medium-light skin tone +1F64D 1F3FC 200D 2642 ; minimally-qualified # 🙍🏼‍♂ E4.0 man frowning: medium-light skin tone +1F64D 1F3FD 200D 2642 FE0F ; fully-qualified # 🙍🏽‍♂️ E4.0 man frowning: medium skin tone +1F64D 1F3FD 200D 2642 ; minimally-qualified # 🙍🏽‍♂ E4.0 man frowning: medium skin tone +1F64D 1F3FE 200D 2642 FE0F ; fully-qualified # 🙍🏾‍♂️ E4.0 man frowning: medium-dark skin tone +1F64D 1F3FE 200D 2642 ; minimally-qualified # 🙍🏾‍♂ E4.0 man frowning: medium-dark skin tone +1F64D 1F3FF 200D 2642 FE0F ; fully-qualified # 🙍🏿‍♂️ E4.0 man frowning: dark skin tone +1F64D 1F3FF 200D 2642 ; minimally-qualified # 🙍🏿‍♂ E4.0 man frowning: dark skin tone +1F64D 200D 2640 FE0F ; fully-qualified # 🙍‍♀️ E4.0 woman frowning +1F64D 200D 2640 ; minimally-qualified # 🙍‍♀ E4.0 woman frowning +1F64D 1F3FB 200D 2640 FE0F ; fully-qualified # 🙍🏻‍♀️ E4.0 woman frowning: light skin tone +1F64D 1F3FB 200D 2640 ; minimally-qualified # 🙍🏻‍♀ E4.0 woman frowning: light skin tone +1F64D 1F3FC 200D 2640 FE0F ; fully-qualified # 🙍🏼‍♀️ E4.0 woman frowning: medium-light skin tone +1F64D 1F3FC 200D 2640 ; minimally-qualified # 🙍🏼‍♀ E4.0 woman frowning: medium-light skin tone +1F64D 1F3FD 200D 2640 FE0F ; fully-qualified # 🙍🏽‍♀️ E4.0 woman frowning: medium skin tone +1F64D 1F3FD 200D 2640 ; minimally-qualified # 🙍🏽‍♀ E4.0 woman frowning: medium skin tone +1F64D 1F3FE 200D 2640 FE0F ; fully-qualified # 🙍🏾‍♀️ E4.0 woman frowning: medium-dark skin tone +1F64D 1F3FE 200D 2640 ; minimally-qualified # 🙍🏾‍♀ E4.0 woman frowning: medium-dark skin tone +1F64D 1F3FF 200D 2640 FE0F ; fully-qualified # 🙍🏿‍♀️ E4.0 woman frowning: dark skin tone +1F64D 1F3FF 200D 2640 ; minimally-qualified # 🙍🏿‍♀ E4.0 woman frowning: dark skin tone +1F64E ; fully-qualified # 🙎 E0.6 person pouting +1F64E 1F3FB ; fully-qualified # 🙎🏻 E1.0 person pouting: light skin tone +1F64E 1F3FC ; fully-qualified # 🙎🏼 E1.0 person pouting: medium-light skin tone +1F64E 1F3FD ; fully-qualified # 🙎🏽 E1.0 person pouting: medium skin tone +1F64E 1F3FE ; fully-qualified # 🙎🏾 E1.0 person pouting: medium-dark skin tone +1F64E 1F3FF ; fully-qualified # 🙎🏿 E1.0 person pouting: dark skin tone +1F64E 200D 2642 FE0F ; fully-qualified # 🙎‍♂️ E4.0 man pouting +1F64E 200D 2642 ; minimally-qualified # 🙎‍♂ E4.0 man pouting +1F64E 1F3FB 200D 2642 FE0F ; fully-qualified # 🙎🏻‍♂️ E4.0 man pouting: light skin tone +1F64E 1F3FB 200D 2642 ; minimally-qualified # 🙎🏻‍♂ E4.0 man pouting: light skin tone +1F64E 1F3FC 200D 2642 FE0F ; fully-qualified # 🙎🏼‍♂️ E4.0 man pouting: medium-light skin tone +1F64E 1F3FC 200D 2642 ; minimally-qualified # 🙎🏼‍♂ E4.0 man pouting: medium-light skin tone +1F64E 1F3FD 200D 2642 FE0F ; fully-qualified # 🙎🏽‍♂️ E4.0 man pouting: medium skin tone +1F64E 1F3FD 200D 2642 ; minimally-qualified # 🙎🏽‍♂ E4.0 man pouting: medium skin tone +1F64E 1F3FE 200D 2642 FE0F ; fully-qualified # 🙎🏾‍♂️ E4.0 man pouting: medium-dark skin tone +1F64E 1F3FE 200D 2642 ; minimally-qualified # 🙎🏾‍♂ E4.0 man pouting: medium-dark skin tone +1F64E 1F3FF 200D 2642 FE0F ; fully-qualified # 🙎🏿‍♂️ E4.0 man pouting: dark skin tone +1F64E 1F3FF 200D 2642 ; minimally-qualified # 🙎🏿‍♂ E4.0 man pouting: dark skin tone +1F64E 200D 2640 FE0F ; fully-qualified # 🙎‍♀️ E4.0 woman pouting +1F64E 200D 2640 ; minimally-qualified # 🙎‍♀ E4.0 woman pouting +1F64E 1F3FB 200D 2640 FE0F ; fully-qualified # 🙎🏻‍♀️ E4.0 woman pouting: light skin tone +1F64E 1F3FB 200D 2640 ; minimally-qualified # 🙎🏻‍♀ E4.0 woman pouting: light skin tone +1F64E 1F3FC 200D 2640 FE0F ; fully-qualified # 🙎🏼‍♀️ E4.0 woman pouting: medium-light skin tone +1F64E 1F3FC 200D 2640 ; minimally-qualified # 🙎🏼‍♀ E4.0 woman pouting: medium-light skin tone +1F64E 1F3FD 200D 2640 FE0F ; fully-qualified # 🙎🏽‍♀️ E4.0 woman pouting: medium skin tone +1F64E 1F3FD 200D 2640 ; minimally-qualified # 🙎🏽‍♀ E4.0 woman pouting: medium skin tone +1F64E 1F3FE 200D 2640 FE0F ; fully-qualified # 🙎🏾‍♀️ E4.0 woman pouting: medium-dark skin tone +1F64E 1F3FE 200D 2640 ; minimally-qualified # 🙎🏾‍♀ E4.0 woman pouting: medium-dark skin tone +1F64E 1F3FF 200D 2640 FE0F ; fully-qualified # 🙎🏿‍♀️ E4.0 woman pouting: dark skin tone +1F64E 1F3FF 200D 2640 ; minimally-qualified # 🙎🏿‍♀ E4.0 woman pouting: dark skin tone +1F645 ; fully-qualified # 🙅 E0.6 person gesturing NO +1F645 1F3FB ; fully-qualified # 🙅🏻 E1.0 person gesturing NO: light skin tone +1F645 1F3FC ; fully-qualified # 🙅🏼 E1.0 person gesturing NO: medium-light skin tone +1F645 1F3FD ; fully-qualified # 🙅🏽 E1.0 person gesturing NO: medium skin tone +1F645 1F3FE ; fully-qualified # 🙅🏾 E1.0 person gesturing NO: medium-dark skin tone +1F645 1F3FF ; fully-qualified # 🙅🏿 E1.0 person gesturing NO: dark skin tone +1F645 200D 2642 FE0F ; fully-qualified # 🙅‍♂️ E4.0 man gesturing NO +1F645 200D 2642 ; minimally-qualified # 🙅‍♂ E4.0 man gesturing NO +1F645 1F3FB 200D 2642 FE0F ; fully-qualified # 🙅🏻‍♂️ E4.0 man gesturing NO: light skin tone +1F645 1F3FB 200D 2642 ; minimally-qualified # 🙅🏻‍♂ E4.0 man gesturing NO: light skin tone +1F645 1F3FC 200D 2642 FE0F ; fully-qualified # 🙅🏼‍♂️ E4.0 man gesturing NO: medium-light skin tone +1F645 1F3FC 200D 2642 ; minimally-qualified # 🙅🏼‍♂ E4.0 man gesturing NO: medium-light skin tone +1F645 1F3FD 200D 2642 FE0F ; fully-qualified # 🙅🏽‍♂️ E4.0 man gesturing NO: medium skin tone +1F645 1F3FD 200D 2642 ; minimally-qualified # 🙅🏽‍♂ E4.0 man gesturing NO: medium skin tone +1F645 1F3FE 200D 2642 FE0F ; fully-qualified # 🙅🏾‍♂️ E4.0 man gesturing NO: medium-dark skin tone +1F645 1F3FE 200D 2642 ; minimally-qualified # 🙅🏾‍♂ E4.0 man gesturing NO: medium-dark skin tone +1F645 1F3FF 200D 2642 FE0F ; fully-qualified # 🙅🏿‍♂️ E4.0 man gesturing NO: dark skin tone +1F645 1F3FF 200D 2642 ; minimally-qualified # 🙅🏿‍♂ E4.0 man gesturing NO: dark skin tone +1F645 200D 2640 FE0F ; fully-qualified # 🙅‍♀️ E4.0 woman gesturing NO +1F645 200D 2640 ; minimally-qualified # 🙅‍♀ E4.0 woman gesturing NO +1F645 1F3FB 200D 2640 FE0F ; fully-qualified # 🙅🏻‍♀️ E4.0 woman gesturing NO: light skin tone +1F645 1F3FB 200D 2640 ; minimally-qualified # 🙅🏻‍♀ E4.0 woman gesturing NO: light skin tone +1F645 1F3FC 200D 2640 FE0F ; fully-qualified # 🙅🏼‍♀️ E4.0 woman gesturing NO: medium-light skin tone +1F645 1F3FC 200D 2640 ; minimally-qualified # 🙅🏼‍♀ E4.0 woman gesturing NO: medium-light skin tone +1F645 1F3FD 200D 2640 FE0F ; fully-qualified # 🙅🏽‍♀️ E4.0 woman gesturing NO: medium skin tone +1F645 1F3FD 200D 2640 ; minimally-qualified # 🙅🏽‍♀ E4.0 woman gesturing NO: medium skin tone +1F645 1F3FE 200D 2640 FE0F ; fully-qualified # 🙅🏾‍♀️ E4.0 woman gesturing NO: medium-dark skin tone +1F645 1F3FE 200D 2640 ; minimally-qualified # 🙅🏾‍♀ E4.0 woman gesturing NO: medium-dark skin tone +1F645 1F3FF 200D 2640 FE0F ; fully-qualified # 🙅🏿‍♀️ E4.0 woman gesturing NO: dark skin tone +1F645 1F3FF 200D 2640 ; minimally-qualified # 🙅🏿‍♀ E4.0 woman gesturing NO: dark skin tone +1F646 ; fully-qualified # 🙆 E0.6 person gesturing OK +1F646 1F3FB ; fully-qualified # 🙆🏻 E1.0 person gesturing OK: light skin tone +1F646 1F3FC ; fully-qualified # 🙆🏼 E1.0 person gesturing OK: medium-light skin tone +1F646 1F3FD ; fully-qualified # 🙆🏽 E1.0 person gesturing OK: medium skin tone +1F646 1F3FE ; fully-qualified # 🙆🏾 E1.0 person gesturing OK: medium-dark skin tone +1F646 1F3FF ; fully-qualified # 🙆🏿 E1.0 person gesturing OK: dark skin tone +1F646 200D 2642 FE0F ; fully-qualified # 🙆‍♂️ E4.0 man gesturing OK +1F646 200D 2642 ; minimally-qualified # 🙆‍♂ E4.0 man gesturing OK +1F646 1F3FB 200D 2642 FE0F ; fully-qualified # 🙆🏻‍♂️ E4.0 man gesturing OK: light skin tone +1F646 1F3FB 200D 2642 ; minimally-qualified # 🙆🏻‍♂ E4.0 man gesturing OK: light skin tone +1F646 1F3FC 200D 2642 FE0F ; fully-qualified # 🙆🏼‍♂️ E4.0 man gesturing OK: medium-light skin tone +1F646 1F3FC 200D 2642 ; minimally-qualified # 🙆🏼‍♂ E4.0 man gesturing OK: medium-light skin tone +1F646 1F3FD 200D 2642 FE0F ; fully-qualified # 🙆🏽‍♂️ E4.0 man gesturing OK: medium skin tone +1F646 1F3FD 200D 2642 ; minimally-qualified # 🙆🏽‍♂ E4.0 man gesturing OK: medium skin tone +1F646 1F3FE 200D 2642 FE0F ; fully-qualified # 🙆🏾‍♂️ E4.0 man gesturing OK: medium-dark skin tone +1F646 1F3FE 200D 2642 ; minimally-qualified # 🙆🏾‍♂ E4.0 man gesturing OK: medium-dark skin tone +1F646 1F3FF 200D 2642 FE0F ; fully-qualified # 🙆🏿‍♂️ E4.0 man gesturing OK: dark skin tone +1F646 1F3FF 200D 2642 ; minimally-qualified # 🙆🏿‍♂ E4.0 man gesturing OK: dark skin tone +1F646 200D 2640 FE0F ; fully-qualified # 🙆‍♀️ E4.0 woman gesturing OK +1F646 200D 2640 ; minimally-qualified # 🙆‍♀ E4.0 woman gesturing OK +1F646 1F3FB 200D 2640 FE0F ; fully-qualified # 🙆🏻‍♀️ E4.0 woman gesturing OK: light skin tone +1F646 1F3FB 200D 2640 ; minimally-qualified # 🙆🏻‍♀ E4.0 woman gesturing OK: light skin tone +1F646 1F3FC 200D 2640 FE0F ; fully-qualified # 🙆🏼‍♀️ E4.0 woman gesturing OK: medium-light skin tone +1F646 1F3FC 200D 2640 ; minimally-qualified # 🙆🏼‍♀ E4.0 woman gesturing OK: medium-light skin tone +1F646 1F3FD 200D 2640 FE0F ; fully-qualified # 🙆🏽‍♀️ E4.0 woman gesturing OK: medium skin tone +1F646 1F3FD 200D 2640 ; minimally-qualified # 🙆🏽‍♀ E4.0 woman gesturing OK: medium skin tone +1F646 1F3FE 200D 2640 FE0F ; fully-qualified # 🙆🏾‍♀️ E4.0 woman gesturing OK: medium-dark skin tone +1F646 1F3FE 200D 2640 ; minimally-qualified # 🙆🏾‍♀ E4.0 woman gesturing OK: medium-dark skin tone +1F646 1F3FF 200D 2640 FE0F ; fully-qualified # 🙆🏿‍♀️ E4.0 woman gesturing OK: dark skin tone +1F646 1F3FF 200D 2640 ; minimally-qualified # 🙆🏿‍♀ E4.0 woman gesturing OK: dark skin tone +1F481 ; fully-qualified # 💁 E0.6 person tipping hand +1F481 1F3FB ; fully-qualified # 💁🏻 E1.0 person tipping hand: light skin tone +1F481 1F3FC ; fully-qualified # 💁🏼 E1.0 person tipping hand: medium-light skin tone +1F481 1F3FD ; fully-qualified # 💁🏽 E1.0 person tipping hand: medium skin tone +1F481 1F3FE ; fully-qualified # 💁🏾 E1.0 person tipping hand: medium-dark skin tone +1F481 1F3FF ; fully-qualified # 💁🏿 E1.0 person tipping hand: dark skin tone +1F481 200D 2642 FE0F ; fully-qualified # 💁‍♂️ E4.0 man tipping hand +1F481 200D 2642 ; minimally-qualified # 💁‍♂ E4.0 man tipping hand +1F481 1F3FB 200D 2642 FE0F ; fully-qualified # 💁🏻‍♂️ E4.0 man tipping hand: light skin tone +1F481 1F3FB 200D 2642 ; minimally-qualified # 💁🏻‍♂ E4.0 man tipping hand: light skin tone +1F481 1F3FC 200D 2642 FE0F ; fully-qualified # 💁🏼‍♂️ E4.0 man tipping hand: medium-light skin tone +1F481 1F3FC 200D 2642 ; minimally-qualified # 💁🏼‍♂ E4.0 man tipping hand: medium-light skin tone +1F481 1F3FD 200D 2642 FE0F ; fully-qualified # 💁🏽‍♂️ E4.0 man tipping hand: medium skin tone +1F481 1F3FD 200D 2642 ; minimally-qualified # 💁🏽‍♂ E4.0 man tipping hand: medium skin tone +1F481 1F3FE 200D 2642 FE0F ; fully-qualified # 💁🏾‍♂️ E4.0 man tipping hand: medium-dark skin tone +1F481 1F3FE 200D 2642 ; minimally-qualified # 💁🏾‍♂ E4.0 man tipping hand: medium-dark skin tone +1F481 1F3FF 200D 2642 FE0F ; fully-qualified # 💁🏿‍♂️ E4.0 man tipping hand: dark skin tone +1F481 1F3FF 200D 2642 ; minimally-qualified # 💁🏿‍♂ E4.0 man tipping hand: dark skin tone +1F481 200D 2640 FE0F ; fully-qualified # 💁‍♀️ E4.0 woman tipping hand +1F481 200D 2640 ; minimally-qualified # 💁‍♀ E4.0 woman tipping hand +1F481 1F3FB 200D 2640 FE0F ; fully-qualified # 💁🏻‍♀️ E4.0 woman tipping hand: light skin tone +1F481 1F3FB 200D 2640 ; minimally-qualified # 💁🏻‍♀ E4.0 woman tipping hand: light skin tone +1F481 1F3FC 200D 2640 FE0F ; fully-qualified # 💁🏼‍♀️ E4.0 woman tipping hand: medium-light skin tone +1F481 1F3FC 200D 2640 ; minimally-qualified # 💁🏼‍♀ E4.0 woman tipping hand: medium-light skin tone +1F481 1F3FD 200D 2640 FE0F ; fully-qualified # 💁🏽‍♀️ E4.0 woman tipping hand: medium skin tone +1F481 1F3FD 200D 2640 ; minimally-qualified # 💁🏽‍♀ E4.0 woman tipping hand: medium skin tone +1F481 1F3FE 200D 2640 FE0F ; fully-qualified # 💁🏾‍♀️ E4.0 woman tipping hand: medium-dark skin tone +1F481 1F3FE 200D 2640 ; minimally-qualified # 💁🏾‍♀ E4.0 woman tipping hand: medium-dark skin tone +1F481 1F3FF 200D 2640 FE0F ; fully-qualified # 💁🏿‍♀️ E4.0 woman tipping hand: dark skin tone +1F481 1F3FF 200D 2640 ; minimally-qualified # 💁🏿‍♀ E4.0 woman tipping hand: dark skin tone +1F64B ; fully-qualified # 🙋 E0.6 person raising hand +1F64B 1F3FB ; fully-qualified # 🙋🏻 E1.0 person raising hand: light skin tone +1F64B 1F3FC ; fully-qualified # 🙋🏼 E1.0 person raising hand: medium-light skin tone +1F64B 1F3FD ; fully-qualified # 🙋🏽 E1.0 person raising hand: medium skin tone +1F64B 1F3FE ; fully-qualified # 🙋🏾 E1.0 person raising hand: medium-dark skin tone +1F64B 1F3FF ; fully-qualified # 🙋🏿 E1.0 person raising hand: dark skin tone +1F64B 200D 2642 FE0F ; fully-qualified # 🙋‍♂️ E4.0 man raising hand +1F64B 200D 2642 ; minimally-qualified # 🙋‍♂ E4.0 man raising hand +1F64B 1F3FB 200D 2642 FE0F ; fully-qualified # 🙋🏻‍♂️ E4.0 man raising hand: light skin tone +1F64B 1F3FB 200D 2642 ; minimally-qualified # 🙋🏻‍♂ E4.0 man raising hand: light skin tone +1F64B 1F3FC 200D 2642 FE0F ; fully-qualified # 🙋🏼‍♂️ E4.0 man raising hand: medium-light skin tone +1F64B 1F3FC 200D 2642 ; minimally-qualified # 🙋🏼‍♂ E4.0 man raising hand: medium-light skin tone +1F64B 1F3FD 200D 2642 FE0F ; fully-qualified # 🙋🏽‍♂️ E4.0 man raising hand: medium skin tone +1F64B 1F3FD 200D 2642 ; minimally-qualified # 🙋🏽‍♂ E4.0 man raising hand: medium skin tone +1F64B 1F3FE 200D 2642 FE0F ; fully-qualified # 🙋🏾‍♂️ E4.0 man raising hand: medium-dark skin tone +1F64B 1F3FE 200D 2642 ; minimally-qualified # 🙋🏾‍♂ E4.0 man raising hand: medium-dark skin tone +1F64B 1F3FF 200D 2642 FE0F ; fully-qualified # 🙋🏿‍♂️ E4.0 man raising hand: dark skin tone +1F64B 1F3FF 200D 2642 ; minimally-qualified # 🙋🏿‍♂ E4.0 man raising hand: dark skin tone +1F64B 200D 2640 FE0F ; fully-qualified # 🙋‍♀️ E4.0 woman raising hand +1F64B 200D 2640 ; minimally-qualified # 🙋‍♀ E4.0 woman raising hand +1F64B 1F3FB 200D 2640 FE0F ; fully-qualified # 🙋🏻‍♀️ E4.0 woman raising hand: light skin tone +1F64B 1F3FB 200D 2640 ; minimally-qualified # 🙋🏻‍♀ E4.0 woman raising hand: light skin tone +1F64B 1F3FC 200D 2640 FE0F ; fully-qualified # 🙋🏼‍♀️ E4.0 woman raising hand: medium-light skin tone +1F64B 1F3FC 200D 2640 ; minimally-qualified # 🙋🏼‍♀ E4.0 woman raising hand: medium-light skin tone +1F64B 1F3FD 200D 2640 FE0F ; fully-qualified # 🙋🏽‍♀️ E4.0 woman raising hand: medium skin tone +1F64B 1F3FD 200D 2640 ; minimally-qualified # 🙋🏽‍♀ E4.0 woman raising hand: medium skin tone +1F64B 1F3FE 200D 2640 FE0F ; fully-qualified # 🙋🏾‍♀️ E4.0 woman raising hand: medium-dark skin tone +1F64B 1F3FE 200D 2640 ; minimally-qualified # 🙋🏾‍♀ E4.0 woman raising hand: medium-dark skin tone +1F64B 1F3FF 200D 2640 FE0F ; fully-qualified # 🙋🏿‍♀️ E4.0 woman raising hand: dark skin tone +1F64B 1F3FF 200D 2640 ; minimally-qualified # 🙋🏿‍♀ E4.0 woman raising hand: dark skin tone +1F9CF ; fully-qualified # 🧏 E12.0 deaf person +1F9CF 1F3FB ; fully-qualified # 🧏🏻 E12.0 deaf person: light skin tone +1F9CF 1F3FC ; fully-qualified # 🧏🏼 E12.0 deaf person: medium-light skin tone +1F9CF 1F3FD ; fully-qualified # 🧏🏽 E12.0 deaf person: medium skin tone +1F9CF 1F3FE ; fully-qualified # 🧏🏾 E12.0 deaf person: medium-dark skin tone +1F9CF 1F3FF ; fully-qualified # 🧏🏿 E12.0 deaf person: dark skin tone +1F9CF 200D 2642 FE0F ; fully-qualified # 🧏‍♂️ E12.0 deaf man +1F9CF 200D 2642 ; minimally-qualified # 🧏‍♂ E12.0 deaf man +1F9CF 1F3FB 200D 2642 FE0F ; fully-qualified # 🧏🏻‍♂️ E12.0 deaf man: light skin tone +1F9CF 1F3FB 200D 2642 ; minimally-qualified # 🧏🏻‍♂ E12.0 deaf man: light skin tone +1F9CF 1F3FC 200D 2642 FE0F ; fully-qualified # 🧏🏼‍♂️ E12.0 deaf man: medium-light skin tone +1F9CF 1F3FC 200D 2642 ; minimally-qualified # 🧏🏼‍♂ E12.0 deaf man: medium-light skin tone +1F9CF 1F3FD 200D 2642 FE0F ; fully-qualified # 🧏🏽‍♂️ E12.0 deaf man: medium skin tone +1F9CF 1F3FD 200D 2642 ; minimally-qualified # 🧏🏽‍♂ E12.0 deaf man: medium skin tone +1F9CF 1F3FE 200D 2642 FE0F ; fully-qualified # 🧏🏾‍♂️ E12.0 deaf man: medium-dark skin tone +1F9CF 1F3FE 200D 2642 ; minimally-qualified # 🧏🏾‍♂ E12.0 deaf man: medium-dark skin tone +1F9CF 1F3FF 200D 2642 FE0F ; fully-qualified # 🧏🏿‍♂️ E12.0 deaf man: dark skin tone +1F9CF 1F3FF 200D 2642 ; minimally-qualified # 🧏🏿‍♂ E12.0 deaf man: dark skin tone +1F9CF 200D 2640 FE0F ; fully-qualified # 🧏‍♀️ E12.0 deaf woman +1F9CF 200D 2640 ; minimally-qualified # 🧏‍♀ E12.0 deaf woman +1F9CF 1F3FB 200D 2640 FE0F ; fully-qualified # 🧏🏻‍♀️ E12.0 deaf woman: light skin tone +1F9CF 1F3FB 200D 2640 ; minimally-qualified # 🧏🏻‍♀ E12.0 deaf woman: light skin tone +1F9CF 1F3FC 200D 2640 FE0F ; fully-qualified # 🧏🏼‍♀️ E12.0 deaf woman: medium-light skin tone +1F9CF 1F3FC 200D 2640 ; minimally-qualified # 🧏🏼‍♀ E12.0 deaf woman: medium-light skin tone +1F9CF 1F3FD 200D 2640 FE0F ; fully-qualified # 🧏🏽‍♀️ E12.0 deaf woman: medium skin tone +1F9CF 1F3FD 200D 2640 ; minimally-qualified # 🧏🏽‍♀ E12.0 deaf woman: medium skin tone +1F9CF 1F3FE 200D 2640 FE0F ; fully-qualified # 🧏🏾‍♀️ E12.0 deaf woman: medium-dark skin tone +1F9CF 1F3FE 200D 2640 ; minimally-qualified # 🧏🏾‍♀ E12.0 deaf woman: medium-dark skin tone +1F9CF 1F3FF 200D 2640 FE0F ; fully-qualified # 🧏🏿‍♀️ E12.0 deaf woman: dark skin tone +1F9CF 1F3FF 200D 2640 ; minimally-qualified # 🧏🏿‍♀ E12.0 deaf woman: dark skin tone +1F647 ; fully-qualified # 🙇 E0.6 person bowing +1F647 1F3FB ; fully-qualified # 🙇🏻 E1.0 person bowing: light skin tone +1F647 1F3FC ; fully-qualified # 🙇🏼 E1.0 person bowing: medium-light skin tone +1F647 1F3FD ; fully-qualified # 🙇🏽 E1.0 person bowing: medium skin tone +1F647 1F3FE ; fully-qualified # 🙇🏾 E1.0 person bowing: medium-dark skin tone +1F647 1F3FF ; fully-qualified # 🙇🏿 E1.0 person bowing: dark skin tone +1F647 200D 2642 FE0F ; fully-qualified # 🙇‍♂️ E4.0 man bowing +1F647 200D 2642 ; minimally-qualified # 🙇‍♂ E4.0 man bowing +1F647 1F3FB 200D 2642 FE0F ; fully-qualified # 🙇🏻‍♂️ E4.0 man bowing: light skin tone +1F647 1F3FB 200D 2642 ; minimally-qualified # 🙇🏻‍♂ E4.0 man bowing: light skin tone +1F647 1F3FC 200D 2642 FE0F ; fully-qualified # 🙇🏼‍♂️ E4.0 man bowing: medium-light skin tone +1F647 1F3FC 200D 2642 ; minimally-qualified # 🙇🏼‍♂ E4.0 man bowing: medium-light skin tone +1F647 1F3FD 200D 2642 FE0F ; fully-qualified # 🙇🏽‍♂️ E4.0 man bowing: medium skin tone +1F647 1F3FD 200D 2642 ; minimally-qualified # 🙇🏽‍♂ E4.0 man bowing: medium skin tone +1F647 1F3FE 200D 2642 FE0F ; fully-qualified # 🙇🏾‍♂️ E4.0 man bowing: medium-dark skin tone +1F647 1F3FE 200D 2642 ; minimally-qualified # 🙇🏾‍♂ E4.0 man bowing: medium-dark skin tone +1F647 1F3FF 200D 2642 FE0F ; fully-qualified # 🙇🏿‍♂️ E4.0 man bowing: dark skin tone +1F647 1F3FF 200D 2642 ; minimally-qualified # 🙇🏿‍♂ E4.0 man bowing: dark skin tone +1F647 200D 2640 FE0F ; fully-qualified # 🙇‍♀️ E4.0 woman bowing +1F647 200D 2640 ; minimally-qualified # 🙇‍♀ E4.0 woman bowing +1F647 1F3FB 200D 2640 FE0F ; fully-qualified # 🙇🏻‍♀️ E4.0 woman bowing: light skin tone +1F647 1F3FB 200D 2640 ; minimally-qualified # 🙇🏻‍♀ E4.0 woman bowing: light skin tone +1F647 1F3FC 200D 2640 FE0F ; fully-qualified # 🙇🏼‍♀️ E4.0 woman bowing: medium-light skin tone +1F647 1F3FC 200D 2640 ; minimally-qualified # 🙇🏼‍♀ E4.0 woman bowing: medium-light skin tone +1F647 1F3FD 200D 2640 FE0F ; fully-qualified # 🙇🏽‍♀️ E4.0 woman bowing: medium skin tone +1F647 1F3FD 200D 2640 ; minimally-qualified # 🙇🏽‍♀ E4.0 woman bowing: medium skin tone +1F647 1F3FE 200D 2640 FE0F ; fully-qualified # 🙇🏾‍♀️ E4.0 woman bowing: medium-dark skin tone +1F647 1F3FE 200D 2640 ; minimally-qualified # 🙇🏾‍♀ E4.0 woman bowing: medium-dark skin tone +1F647 1F3FF 200D 2640 FE0F ; fully-qualified # 🙇🏿‍♀️ E4.0 woman bowing: dark skin tone +1F647 1F3FF 200D 2640 ; minimally-qualified # 🙇🏿‍♀ E4.0 woman bowing: dark skin tone +1F926 ; fully-qualified # 🤦 E3.0 person facepalming +1F926 1F3FB ; fully-qualified # 🤦🏻 E3.0 person facepalming: light skin tone +1F926 1F3FC ; fully-qualified # 🤦🏼 E3.0 person facepalming: medium-light skin tone +1F926 1F3FD ; fully-qualified # 🤦🏽 E3.0 person facepalming: medium skin tone +1F926 1F3FE ; fully-qualified # 🤦🏾 E3.0 person facepalming: medium-dark skin tone +1F926 1F3FF ; fully-qualified # 🤦🏿 E3.0 person facepalming: dark skin tone +1F926 200D 2642 FE0F ; fully-qualified # 🤦‍♂️ E4.0 man facepalming +1F926 200D 2642 ; minimally-qualified # 🤦‍♂ E4.0 man facepalming +1F926 1F3FB 200D 2642 FE0F ; fully-qualified # 🤦🏻‍♂️ E4.0 man facepalming: light skin tone +1F926 1F3FB 200D 2642 ; minimally-qualified # 🤦🏻‍♂ E4.0 man facepalming: light skin tone +1F926 1F3FC 200D 2642 FE0F ; fully-qualified # 🤦🏼‍♂️ E4.0 man facepalming: medium-light skin tone +1F926 1F3FC 200D 2642 ; minimally-qualified # 🤦🏼‍♂ E4.0 man facepalming: medium-light skin tone +1F926 1F3FD 200D 2642 FE0F ; fully-qualified # 🤦🏽‍♂️ E4.0 man facepalming: medium skin tone +1F926 1F3FD 200D 2642 ; minimally-qualified # 🤦🏽‍♂ E4.0 man facepalming: medium skin tone +1F926 1F3FE 200D 2642 FE0F ; fully-qualified # 🤦🏾‍♂️ E4.0 man facepalming: medium-dark skin tone +1F926 1F3FE 200D 2642 ; minimally-qualified # 🤦🏾‍♂ E4.0 man facepalming: medium-dark skin tone +1F926 1F3FF 200D 2642 FE0F ; fully-qualified # 🤦🏿‍♂️ E4.0 man facepalming: dark skin tone +1F926 1F3FF 200D 2642 ; minimally-qualified # 🤦🏿‍♂ E4.0 man facepalming: dark skin tone +1F926 200D 2640 FE0F ; fully-qualified # 🤦‍♀️ E4.0 woman facepalming +1F926 200D 2640 ; minimally-qualified # 🤦‍♀ E4.0 woman facepalming +1F926 1F3FB 200D 2640 FE0F ; fully-qualified # 🤦🏻‍♀️ E4.0 woman facepalming: light skin tone +1F926 1F3FB 200D 2640 ; minimally-qualified # 🤦🏻‍♀ E4.0 woman facepalming: light skin tone +1F926 1F3FC 200D 2640 FE0F ; fully-qualified # 🤦🏼‍♀️ E4.0 woman facepalming: medium-light skin tone +1F926 1F3FC 200D 2640 ; minimally-qualified # 🤦🏼‍♀ E4.0 woman facepalming: medium-light skin tone +1F926 1F3FD 200D 2640 FE0F ; fully-qualified # 🤦🏽‍♀️ E4.0 woman facepalming: medium skin tone +1F926 1F3FD 200D 2640 ; minimally-qualified # 🤦🏽‍♀ E4.0 woman facepalming: medium skin tone +1F926 1F3FE 200D 2640 FE0F ; fully-qualified # 🤦🏾‍♀️ E4.0 woman facepalming: medium-dark skin tone +1F926 1F3FE 200D 2640 ; minimally-qualified # 🤦🏾‍♀ E4.0 woman facepalming: medium-dark skin tone +1F926 1F3FF 200D 2640 FE0F ; fully-qualified # 🤦🏿‍♀️ E4.0 woman facepalming: dark skin tone +1F926 1F3FF 200D 2640 ; minimally-qualified # 🤦🏿‍♀ E4.0 woman facepalming: dark skin tone +1F937 ; fully-qualified # 🤷 E3.0 person shrugging +1F937 1F3FB ; fully-qualified # 🤷🏻 E3.0 person shrugging: light skin tone +1F937 1F3FC ; fully-qualified # 🤷🏼 E3.0 person shrugging: medium-light skin tone +1F937 1F3FD ; fully-qualified # 🤷🏽 E3.0 person shrugging: medium skin tone +1F937 1F3FE ; fully-qualified # 🤷🏾 E3.0 person shrugging: medium-dark skin tone +1F937 1F3FF ; fully-qualified # 🤷🏿 E3.0 person shrugging: dark skin tone +1F937 200D 2642 FE0F ; fully-qualified # 🤷‍♂️ E4.0 man shrugging +1F937 200D 2642 ; minimally-qualified # 🤷‍♂ E4.0 man shrugging +1F937 1F3FB 200D 2642 FE0F ; fully-qualified # 🤷🏻‍♂️ E4.0 man shrugging: light skin tone +1F937 1F3FB 200D 2642 ; minimally-qualified # 🤷🏻‍♂ E4.0 man shrugging: light skin tone +1F937 1F3FC 200D 2642 FE0F ; fully-qualified # 🤷🏼‍♂️ E4.0 man shrugging: medium-light skin tone +1F937 1F3FC 200D 2642 ; minimally-qualified # 🤷🏼‍♂ E4.0 man shrugging: medium-light skin tone +1F937 1F3FD 200D 2642 FE0F ; fully-qualified # 🤷🏽‍♂️ E4.0 man shrugging: medium skin tone +1F937 1F3FD 200D 2642 ; minimally-qualified # 🤷🏽‍♂ E4.0 man shrugging: medium skin tone +1F937 1F3FE 200D 2642 FE0F ; fully-qualified # 🤷🏾‍♂️ E4.0 man shrugging: medium-dark skin tone +1F937 1F3FE 200D 2642 ; minimally-qualified # 🤷🏾‍♂ E4.0 man shrugging: medium-dark skin tone +1F937 1F3FF 200D 2642 FE0F ; fully-qualified # 🤷🏿‍♂️ E4.0 man shrugging: dark skin tone +1F937 1F3FF 200D 2642 ; minimally-qualified # 🤷🏿‍♂ E4.0 man shrugging: dark skin tone +1F937 200D 2640 FE0F ; fully-qualified # 🤷‍♀️ E4.0 woman shrugging +1F937 200D 2640 ; minimally-qualified # 🤷‍♀ E4.0 woman shrugging +1F937 1F3FB 200D 2640 FE0F ; fully-qualified # 🤷🏻‍♀️ E4.0 woman shrugging: light skin tone +1F937 1F3FB 200D 2640 ; minimally-qualified # 🤷🏻‍♀ E4.0 woman shrugging: light skin tone +1F937 1F3FC 200D 2640 FE0F ; fully-qualified # 🤷🏼‍♀️ E4.0 woman shrugging: medium-light skin tone +1F937 1F3FC 200D 2640 ; minimally-qualified # 🤷🏼‍♀ E4.0 woman shrugging: medium-light skin tone +1F937 1F3FD 200D 2640 FE0F ; fully-qualified # 🤷🏽‍♀️ E4.0 woman shrugging: medium skin tone +1F937 1F3FD 200D 2640 ; minimally-qualified # 🤷🏽‍♀ E4.0 woman shrugging: medium skin tone +1F937 1F3FE 200D 2640 FE0F ; fully-qualified # 🤷🏾‍♀️ E4.0 woman shrugging: medium-dark skin tone +1F937 1F3FE 200D 2640 ; minimally-qualified # 🤷🏾‍♀ E4.0 woman shrugging: medium-dark skin tone +1F937 1F3FF 200D 2640 FE0F ; fully-qualified # 🤷🏿‍♀️ E4.0 woman shrugging: dark skin tone +1F937 1F3FF 200D 2640 ; minimally-qualified # 🤷🏿‍♀ E4.0 woman shrugging: dark skin tone + +# subgroup: person-role +1F9D1 200D 2695 FE0F ; fully-qualified # 🧑‍⚕️ E12.1 health worker +1F9D1 200D 2695 ; minimally-qualified # 🧑‍⚕ E12.1 health worker +1F9D1 1F3FB 200D 2695 FE0F ; fully-qualified # 🧑🏻‍⚕️ E12.1 health worker: light skin tone +1F9D1 1F3FB 200D 2695 ; minimally-qualified # 🧑🏻‍⚕ E12.1 health worker: light skin tone +1F9D1 1F3FC 200D 2695 FE0F ; fully-qualified # 🧑🏼‍⚕️ E12.1 health worker: medium-light skin tone +1F9D1 1F3FC 200D 2695 ; minimally-qualified # 🧑🏼‍⚕ E12.1 health worker: medium-light skin tone +1F9D1 1F3FD 200D 2695 FE0F ; fully-qualified # 🧑🏽‍⚕️ E12.1 health worker: medium skin tone +1F9D1 1F3FD 200D 2695 ; minimally-qualified # 🧑🏽‍⚕ E12.1 health worker: medium skin tone +1F9D1 1F3FE 200D 2695 FE0F ; fully-qualified # 🧑🏾‍⚕️ E12.1 health worker: medium-dark skin tone +1F9D1 1F3FE 200D 2695 ; minimally-qualified # 🧑🏾‍⚕ E12.1 health worker: medium-dark skin tone +1F9D1 1F3FF 200D 2695 FE0F ; fully-qualified # 🧑🏿‍⚕️ E12.1 health worker: dark skin tone +1F9D1 1F3FF 200D 2695 ; minimally-qualified # 🧑🏿‍⚕ E12.1 health worker: dark skin tone +1F468 200D 2695 FE0F ; fully-qualified # 👨‍⚕️ E4.0 man health worker +1F468 200D 2695 ; minimally-qualified # 👨‍⚕ E4.0 man health worker +1F468 1F3FB 200D 2695 FE0F ; fully-qualified # 👨🏻‍⚕️ E4.0 man health worker: light skin tone +1F468 1F3FB 200D 2695 ; minimally-qualified # 👨🏻‍⚕ E4.0 man health worker: light skin tone +1F468 1F3FC 200D 2695 FE0F ; fully-qualified # 👨🏼‍⚕️ E4.0 man health worker: medium-light skin tone +1F468 1F3FC 200D 2695 ; minimally-qualified # 👨🏼‍⚕ E4.0 man health worker: medium-light skin tone +1F468 1F3FD 200D 2695 FE0F ; fully-qualified # 👨🏽‍⚕️ E4.0 man health worker: medium skin tone +1F468 1F3FD 200D 2695 ; minimally-qualified # 👨🏽‍⚕ E4.0 man health worker: medium skin tone +1F468 1F3FE 200D 2695 FE0F ; fully-qualified # 👨🏾‍⚕️ E4.0 man health worker: medium-dark skin tone +1F468 1F3FE 200D 2695 ; minimally-qualified # 👨🏾‍⚕ E4.0 man health worker: medium-dark skin tone +1F468 1F3FF 200D 2695 FE0F ; fully-qualified # 👨🏿‍⚕️ E4.0 man health worker: dark skin tone +1F468 1F3FF 200D 2695 ; minimally-qualified # 👨🏿‍⚕ E4.0 man health worker: dark skin tone +1F469 200D 2695 FE0F ; fully-qualified # 👩‍⚕️ E4.0 woman health worker +1F469 200D 2695 ; minimally-qualified # 👩‍⚕ E4.0 woman health worker +1F469 1F3FB 200D 2695 FE0F ; fully-qualified # 👩🏻‍⚕️ E4.0 woman health worker: light skin tone +1F469 1F3FB 200D 2695 ; minimally-qualified # 👩🏻‍⚕ E4.0 woman health worker: light skin tone +1F469 1F3FC 200D 2695 FE0F ; fully-qualified # 👩🏼‍⚕️ E4.0 woman health worker: medium-light skin tone +1F469 1F3FC 200D 2695 ; minimally-qualified # 👩🏼‍⚕ E4.0 woman health worker: medium-light skin tone +1F469 1F3FD 200D 2695 FE0F ; fully-qualified # 👩🏽‍⚕️ E4.0 woman health worker: medium skin tone +1F469 1F3FD 200D 2695 ; minimally-qualified # 👩🏽‍⚕ E4.0 woman health worker: medium skin tone +1F469 1F3FE 200D 2695 FE0F ; fully-qualified # 👩🏾‍⚕️ E4.0 woman health worker: medium-dark skin tone +1F469 1F3FE 200D 2695 ; minimally-qualified # 👩🏾‍⚕ E4.0 woman health worker: medium-dark skin tone +1F469 1F3FF 200D 2695 FE0F ; fully-qualified # 👩🏿‍⚕️ E4.0 woman health worker: dark skin tone +1F469 1F3FF 200D 2695 ; minimally-qualified # 👩🏿‍⚕ E4.0 woman health worker: dark skin tone +1F9D1 200D 1F393 ; fully-qualified # 🧑‍🎓 E12.1 student +1F9D1 1F3FB 200D 1F393 ; fully-qualified # 🧑🏻‍🎓 E12.1 student: light skin tone +1F9D1 1F3FC 200D 1F393 ; fully-qualified # 🧑🏼‍🎓 E12.1 student: medium-light skin tone +1F9D1 1F3FD 200D 1F393 ; fully-qualified # 🧑🏽‍🎓 E12.1 student: medium skin tone +1F9D1 1F3FE 200D 1F393 ; fully-qualified # 🧑🏾‍🎓 E12.1 student: medium-dark skin tone +1F9D1 1F3FF 200D 1F393 ; fully-qualified # 🧑🏿‍🎓 E12.1 student: dark skin tone +1F468 200D 1F393 ; fully-qualified # 👨‍🎓 E4.0 man student +1F468 1F3FB 200D 1F393 ; fully-qualified # 👨🏻‍🎓 E4.0 man student: light skin tone +1F468 1F3FC 200D 1F393 ; fully-qualified # 👨🏼‍🎓 E4.0 man student: medium-light skin tone +1F468 1F3FD 200D 1F393 ; fully-qualified # 👨🏽‍🎓 E4.0 man student: medium skin tone +1F468 1F3FE 200D 1F393 ; fully-qualified # 👨🏾‍🎓 E4.0 man student: medium-dark skin tone +1F468 1F3FF 200D 1F393 ; fully-qualified # 👨🏿‍🎓 E4.0 man student: dark skin tone +1F469 200D 1F393 ; fully-qualified # 👩‍🎓 E4.0 woman student +1F469 1F3FB 200D 1F393 ; fully-qualified # 👩🏻‍🎓 E4.0 woman student: light skin tone +1F469 1F3FC 200D 1F393 ; fully-qualified # 👩🏼‍🎓 E4.0 woman student: medium-light skin tone +1F469 1F3FD 200D 1F393 ; fully-qualified # 👩🏽‍🎓 E4.0 woman student: medium skin tone +1F469 1F3FE 200D 1F393 ; fully-qualified # 👩🏾‍🎓 E4.0 woman student: medium-dark skin tone +1F469 1F3FF 200D 1F393 ; fully-qualified # 👩🏿‍🎓 E4.0 woman student: dark skin tone +1F9D1 200D 1F3EB ; fully-qualified # 🧑‍🏫 E12.1 teacher +1F9D1 1F3FB 200D 1F3EB ; fully-qualified # 🧑🏻‍🏫 E12.1 teacher: light skin tone +1F9D1 1F3FC 200D 1F3EB ; fully-qualified # 🧑🏼‍🏫 E12.1 teacher: medium-light skin tone +1F9D1 1F3FD 200D 1F3EB ; fully-qualified # 🧑🏽‍🏫 E12.1 teacher: medium skin tone +1F9D1 1F3FE 200D 1F3EB ; fully-qualified # 🧑🏾‍🏫 E12.1 teacher: medium-dark skin tone +1F9D1 1F3FF 200D 1F3EB ; fully-qualified # 🧑🏿‍🏫 E12.1 teacher: dark skin tone +1F468 200D 1F3EB ; fully-qualified # 👨‍🏫 E4.0 man teacher +1F468 1F3FB 200D 1F3EB ; fully-qualified # 👨🏻‍🏫 E4.0 man teacher: light skin tone +1F468 1F3FC 200D 1F3EB ; fully-qualified # 👨🏼‍🏫 E4.0 man teacher: medium-light skin tone +1F468 1F3FD 200D 1F3EB ; fully-qualified # 👨🏽‍🏫 E4.0 man teacher: medium skin tone +1F468 1F3FE 200D 1F3EB ; fully-qualified # 👨🏾‍🏫 E4.0 man teacher: medium-dark skin tone +1F468 1F3FF 200D 1F3EB ; fully-qualified # 👨🏿‍🏫 E4.0 man teacher: dark skin tone +1F469 200D 1F3EB ; fully-qualified # 👩‍🏫 E4.0 woman teacher +1F469 1F3FB 200D 1F3EB ; fully-qualified # 👩🏻‍🏫 E4.0 woman teacher: light skin tone +1F469 1F3FC 200D 1F3EB ; fully-qualified # 👩🏼‍🏫 E4.0 woman teacher: medium-light skin tone +1F469 1F3FD 200D 1F3EB ; fully-qualified # 👩🏽‍🏫 E4.0 woman teacher: medium skin tone +1F469 1F3FE 200D 1F3EB ; fully-qualified # 👩🏾‍🏫 E4.0 woman teacher: medium-dark skin tone +1F469 1F3FF 200D 1F3EB ; fully-qualified # 👩🏿‍🏫 E4.0 woman teacher: dark skin tone +1F9D1 200D 2696 FE0F ; fully-qualified # 🧑‍⚖️ E12.1 judge +1F9D1 200D 2696 ; minimally-qualified # 🧑‍⚖ E12.1 judge +1F9D1 1F3FB 200D 2696 FE0F ; fully-qualified # 🧑🏻‍⚖️ E12.1 judge: light skin tone +1F9D1 1F3FB 200D 2696 ; minimally-qualified # 🧑🏻‍⚖ E12.1 judge: light skin tone +1F9D1 1F3FC 200D 2696 FE0F ; fully-qualified # 🧑🏼‍⚖️ E12.1 judge: medium-light skin tone +1F9D1 1F3FC 200D 2696 ; minimally-qualified # 🧑🏼‍⚖ E12.1 judge: medium-light skin tone +1F9D1 1F3FD 200D 2696 FE0F ; fully-qualified # 🧑🏽‍⚖️ E12.1 judge: medium skin tone +1F9D1 1F3FD 200D 2696 ; minimally-qualified # 🧑🏽‍⚖ E12.1 judge: medium skin tone +1F9D1 1F3FE 200D 2696 FE0F ; fully-qualified # 🧑🏾‍⚖️ E12.1 judge: medium-dark skin tone +1F9D1 1F3FE 200D 2696 ; minimally-qualified # 🧑🏾‍⚖ E12.1 judge: medium-dark skin tone +1F9D1 1F3FF 200D 2696 FE0F ; fully-qualified # 🧑🏿‍⚖️ E12.1 judge: dark skin tone +1F9D1 1F3FF 200D 2696 ; minimally-qualified # 🧑🏿‍⚖ E12.1 judge: dark skin tone +1F468 200D 2696 FE0F ; fully-qualified # 👨‍⚖️ E4.0 man judge +1F468 200D 2696 ; minimally-qualified # 👨‍⚖ E4.0 man judge +1F468 1F3FB 200D 2696 FE0F ; fully-qualified # 👨🏻‍⚖️ E4.0 man judge: light skin tone +1F468 1F3FB 200D 2696 ; minimally-qualified # 👨🏻‍⚖ E4.0 man judge: light skin tone +1F468 1F3FC 200D 2696 FE0F ; fully-qualified # 👨🏼‍⚖️ E4.0 man judge: medium-light skin tone +1F468 1F3FC 200D 2696 ; minimally-qualified # 👨🏼‍⚖ E4.0 man judge: medium-light skin tone +1F468 1F3FD 200D 2696 FE0F ; fully-qualified # 👨🏽‍⚖️ E4.0 man judge: medium skin tone +1F468 1F3FD 200D 2696 ; minimally-qualified # 👨🏽‍⚖ E4.0 man judge: medium skin tone +1F468 1F3FE 200D 2696 FE0F ; fully-qualified # 👨🏾‍⚖️ E4.0 man judge: medium-dark skin tone +1F468 1F3FE 200D 2696 ; minimally-qualified # 👨🏾‍⚖ E4.0 man judge: medium-dark skin tone +1F468 1F3FF 200D 2696 FE0F ; fully-qualified # 👨🏿‍⚖️ E4.0 man judge: dark skin tone +1F468 1F3FF 200D 2696 ; minimally-qualified # 👨🏿‍⚖ E4.0 man judge: dark skin tone +1F469 200D 2696 FE0F ; fully-qualified # 👩‍⚖️ E4.0 woman judge +1F469 200D 2696 ; minimally-qualified # 👩‍⚖ E4.0 woman judge +1F469 1F3FB 200D 2696 FE0F ; fully-qualified # 👩🏻‍⚖️ E4.0 woman judge: light skin tone +1F469 1F3FB 200D 2696 ; minimally-qualified # 👩🏻‍⚖ E4.0 woman judge: light skin tone +1F469 1F3FC 200D 2696 FE0F ; fully-qualified # 👩🏼‍⚖️ E4.0 woman judge: medium-light skin tone +1F469 1F3FC 200D 2696 ; minimally-qualified # 👩🏼‍⚖ E4.0 woman judge: medium-light skin tone +1F469 1F3FD 200D 2696 FE0F ; fully-qualified # 👩🏽‍⚖️ E4.0 woman judge: medium skin tone +1F469 1F3FD 200D 2696 ; minimally-qualified # 👩🏽‍⚖ E4.0 woman judge: medium skin tone +1F469 1F3FE 200D 2696 FE0F ; fully-qualified # 👩🏾‍⚖️ E4.0 woman judge: medium-dark skin tone +1F469 1F3FE 200D 2696 ; minimally-qualified # 👩🏾‍⚖ E4.0 woman judge: medium-dark skin tone +1F469 1F3FF 200D 2696 FE0F ; fully-qualified # 👩🏿‍⚖️ E4.0 woman judge: dark skin tone +1F469 1F3FF 200D 2696 ; minimally-qualified # 👩🏿‍⚖ E4.0 woman judge: dark skin tone +1F9D1 200D 1F33E ; fully-qualified # 🧑‍🌾 E12.1 farmer +1F9D1 1F3FB 200D 1F33E ; fully-qualified # 🧑🏻‍🌾 E12.1 farmer: light skin tone +1F9D1 1F3FC 200D 1F33E ; fully-qualified # 🧑🏼‍🌾 E12.1 farmer: medium-light skin tone +1F9D1 1F3FD 200D 1F33E ; fully-qualified # 🧑🏽‍🌾 E12.1 farmer: medium skin tone +1F9D1 1F3FE 200D 1F33E ; fully-qualified # 🧑🏾‍🌾 E12.1 farmer: medium-dark skin tone +1F9D1 1F3FF 200D 1F33E ; fully-qualified # 🧑🏿‍🌾 E12.1 farmer: dark skin tone +1F468 200D 1F33E ; fully-qualified # 👨‍🌾 E4.0 man farmer +1F468 1F3FB 200D 1F33E ; fully-qualified # 👨🏻‍🌾 E4.0 man farmer: light skin tone +1F468 1F3FC 200D 1F33E ; fully-qualified # 👨🏼‍🌾 E4.0 man farmer: medium-light skin tone +1F468 1F3FD 200D 1F33E ; fully-qualified # 👨🏽‍🌾 E4.0 man farmer: medium skin tone +1F468 1F3FE 200D 1F33E ; fully-qualified # 👨🏾‍🌾 E4.0 man farmer: medium-dark skin tone +1F468 1F3FF 200D 1F33E ; fully-qualified # 👨🏿‍🌾 E4.0 man farmer: dark skin tone +1F469 200D 1F33E ; fully-qualified # 👩‍🌾 E4.0 woman farmer +1F469 1F3FB 200D 1F33E ; fully-qualified # 👩🏻‍🌾 E4.0 woman farmer: light skin tone +1F469 1F3FC 200D 1F33E ; fully-qualified # 👩🏼‍🌾 E4.0 woman farmer: medium-light skin tone +1F469 1F3FD 200D 1F33E ; fully-qualified # 👩🏽‍🌾 E4.0 woman farmer: medium skin tone +1F469 1F3FE 200D 1F33E ; fully-qualified # 👩🏾‍🌾 E4.0 woman farmer: medium-dark skin tone +1F469 1F3FF 200D 1F33E ; fully-qualified # 👩🏿‍🌾 E4.0 woman farmer: dark skin tone +1F9D1 200D 1F373 ; fully-qualified # 🧑‍🍳 E12.1 cook +1F9D1 1F3FB 200D 1F373 ; fully-qualified # 🧑🏻‍🍳 E12.1 cook: light skin tone +1F9D1 1F3FC 200D 1F373 ; fully-qualified # 🧑🏼‍🍳 E12.1 cook: medium-light skin tone +1F9D1 1F3FD 200D 1F373 ; fully-qualified # 🧑🏽‍🍳 E12.1 cook: medium skin tone +1F9D1 1F3FE 200D 1F373 ; fully-qualified # 🧑🏾‍🍳 E12.1 cook: medium-dark skin tone +1F9D1 1F3FF 200D 1F373 ; fully-qualified # 🧑🏿‍🍳 E12.1 cook: dark skin tone +1F468 200D 1F373 ; fully-qualified # 👨‍🍳 E4.0 man cook +1F468 1F3FB 200D 1F373 ; fully-qualified # 👨🏻‍🍳 E4.0 man cook: light skin tone +1F468 1F3FC 200D 1F373 ; fully-qualified # 👨🏼‍🍳 E4.0 man cook: medium-light skin tone +1F468 1F3FD 200D 1F373 ; fully-qualified # 👨🏽‍🍳 E4.0 man cook: medium skin tone +1F468 1F3FE 200D 1F373 ; fully-qualified # 👨🏾‍🍳 E4.0 man cook: medium-dark skin tone +1F468 1F3FF 200D 1F373 ; fully-qualified # 👨🏿‍🍳 E4.0 man cook: dark skin tone +1F469 200D 1F373 ; fully-qualified # 👩‍🍳 E4.0 woman cook +1F469 1F3FB 200D 1F373 ; fully-qualified # 👩🏻‍🍳 E4.0 woman cook: light skin tone +1F469 1F3FC 200D 1F373 ; fully-qualified # 👩🏼‍🍳 E4.0 woman cook: medium-light skin tone +1F469 1F3FD 200D 1F373 ; fully-qualified # 👩🏽‍🍳 E4.0 woman cook: medium skin tone +1F469 1F3FE 200D 1F373 ; fully-qualified # 👩🏾‍🍳 E4.0 woman cook: medium-dark skin tone +1F469 1F3FF 200D 1F373 ; fully-qualified # 👩🏿‍🍳 E4.0 woman cook: dark skin tone +1F9D1 200D 1F527 ; fully-qualified # 🧑‍🔧 E12.1 mechanic +1F9D1 1F3FB 200D 1F527 ; fully-qualified # 🧑🏻‍🔧 E12.1 mechanic: light skin tone +1F9D1 1F3FC 200D 1F527 ; fully-qualified # 🧑🏼‍🔧 E12.1 mechanic: medium-light skin tone +1F9D1 1F3FD 200D 1F527 ; fully-qualified # 🧑🏽‍🔧 E12.1 mechanic: medium skin tone +1F9D1 1F3FE 200D 1F527 ; fully-qualified # 🧑🏾‍🔧 E12.1 mechanic: medium-dark skin tone +1F9D1 1F3FF 200D 1F527 ; fully-qualified # 🧑🏿‍🔧 E12.1 mechanic: dark skin tone +1F468 200D 1F527 ; fully-qualified # 👨‍🔧 E4.0 man mechanic +1F468 1F3FB 200D 1F527 ; fully-qualified # 👨🏻‍🔧 E4.0 man mechanic: light skin tone +1F468 1F3FC 200D 1F527 ; fully-qualified # 👨🏼‍🔧 E4.0 man mechanic: medium-light skin tone +1F468 1F3FD 200D 1F527 ; fully-qualified # 👨🏽‍🔧 E4.0 man mechanic: medium skin tone +1F468 1F3FE 200D 1F527 ; fully-qualified # 👨🏾‍🔧 E4.0 man mechanic: medium-dark skin tone +1F468 1F3FF 200D 1F527 ; fully-qualified # 👨🏿‍🔧 E4.0 man mechanic: dark skin tone +1F469 200D 1F527 ; fully-qualified # 👩‍🔧 E4.0 woman mechanic +1F469 1F3FB 200D 1F527 ; fully-qualified # 👩🏻‍🔧 E4.0 woman mechanic: light skin tone +1F469 1F3FC 200D 1F527 ; fully-qualified # 👩🏼‍🔧 E4.0 woman mechanic: medium-light skin tone +1F469 1F3FD 200D 1F527 ; fully-qualified # 👩🏽‍🔧 E4.0 woman mechanic: medium skin tone +1F469 1F3FE 200D 1F527 ; fully-qualified # 👩🏾‍🔧 E4.0 woman mechanic: medium-dark skin tone +1F469 1F3FF 200D 1F527 ; fully-qualified # 👩🏿‍🔧 E4.0 woman mechanic: dark skin tone +1F9D1 200D 1F3ED ; fully-qualified # 🧑‍🏭 E12.1 factory worker +1F9D1 1F3FB 200D 1F3ED ; fully-qualified # 🧑🏻‍🏭 E12.1 factory worker: light skin tone +1F9D1 1F3FC 200D 1F3ED ; fully-qualified # 🧑🏼‍🏭 E12.1 factory worker: medium-light skin tone +1F9D1 1F3FD 200D 1F3ED ; fully-qualified # 🧑🏽‍🏭 E12.1 factory worker: medium skin tone +1F9D1 1F3FE 200D 1F3ED ; fully-qualified # 🧑🏾‍🏭 E12.1 factory worker: medium-dark skin tone +1F9D1 1F3FF 200D 1F3ED ; fully-qualified # 🧑🏿‍🏭 E12.1 factory worker: dark skin tone +1F468 200D 1F3ED ; fully-qualified # 👨‍🏭 E4.0 man factory worker +1F468 1F3FB 200D 1F3ED ; fully-qualified # 👨🏻‍🏭 E4.0 man factory worker: light skin tone +1F468 1F3FC 200D 1F3ED ; fully-qualified # 👨🏼‍🏭 E4.0 man factory worker: medium-light skin tone +1F468 1F3FD 200D 1F3ED ; fully-qualified # 👨🏽‍🏭 E4.0 man factory worker: medium skin tone +1F468 1F3FE 200D 1F3ED ; fully-qualified # 👨🏾‍🏭 E4.0 man factory worker: medium-dark skin tone +1F468 1F3FF 200D 1F3ED ; fully-qualified # 👨🏿‍🏭 E4.0 man factory worker: dark skin tone +1F469 200D 1F3ED ; fully-qualified # 👩‍🏭 E4.0 woman factory worker +1F469 1F3FB 200D 1F3ED ; fully-qualified # 👩🏻‍🏭 E4.0 woman factory worker: light skin tone +1F469 1F3FC 200D 1F3ED ; fully-qualified # 👩🏼‍🏭 E4.0 woman factory worker: medium-light skin tone +1F469 1F3FD 200D 1F3ED ; fully-qualified # 👩🏽‍🏭 E4.0 woman factory worker: medium skin tone +1F469 1F3FE 200D 1F3ED ; fully-qualified # 👩🏾‍🏭 E4.0 woman factory worker: medium-dark skin tone +1F469 1F3FF 200D 1F3ED ; fully-qualified # 👩🏿‍🏭 E4.0 woman factory worker: dark skin tone +1F9D1 200D 1F4BC ; fully-qualified # 🧑‍💼 E12.1 office worker +1F9D1 1F3FB 200D 1F4BC ; fully-qualified # 🧑🏻‍💼 E12.1 office worker: light skin tone +1F9D1 1F3FC 200D 1F4BC ; fully-qualified # 🧑🏼‍💼 E12.1 office worker: medium-light skin tone +1F9D1 1F3FD 200D 1F4BC ; fully-qualified # 🧑🏽‍💼 E12.1 office worker: medium skin tone +1F9D1 1F3FE 200D 1F4BC ; fully-qualified # 🧑🏾‍💼 E12.1 office worker: medium-dark skin tone +1F9D1 1F3FF 200D 1F4BC ; fully-qualified # 🧑🏿‍💼 E12.1 office worker: dark skin tone +1F468 200D 1F4BC ; fully-qualified # 👨‍💼 E4.0 man office worker +1F468 1F3FB 200D 1F4BC ; fully-qualified # 👨🏻‍💼 E4.0 man office worker: light skin tone +1F468 1F3FC 200D 1F4BC ; fully-qualified # 👨🏼‍💼 E4.0 man office worker: medium-light skin tone +1F468 1F3FD 200D 1F4BC ; fully-qualified # 👨🏽‍💼 E4.0 man office worker: medium skin tone +1F468 1F3FE 200D 1F4BC ; fully-qualified # 👨🏾‍💼 E4.0 man office worker: medium-dark skin tone +1F468 1F3FF 200D 1F4BC ; fully-qualified # 👨🏿‍💼 E4.0 man office worker: dark skin tone +1F469 200D 1F4BC ; fully-qualified # 👩‍💼 E4.0 woman office worker +1F469 1F3FB 200D 1F4BC ; fully-qualified # 👩🏻‍💼 E4.0 woman office worker: light skin tone +1F469 1F3FC 200D 1F4BC ; fully-qualified # 👩🏼‍💼 E4.0 woman office worker: medium-light skin tone +1F469 1F3FD 200D 1F4BC ; fully-qualified # 👩🏽‍💼 E4.0 woman office worker: medium skin tone +1F469 1F3FE 200D 1F4BC ; fully-qualified # 👩🏾‍💼 E4.0 woman office worker: medium-dark skin tone +1F469 1F3FF 200D 1F4BC ; fully-qualified # 👩🏿‍💼 E4.0 woman office worker: dark skin tone +1F9D1 200D 1F52C ; fully-qualified # 🧑‍🔬 E12.1 scientist +1F9D1 1F3FB 200D 1F52C ; fully-qualified # 🧑🏻‍🔬 E12.1 scientist: light skin tone +1F9D1 1F3FC 200D 1F52C ; fully-qualified # 🧑🏼‍🔬 E12.1 scientist: medium-light skin tone +1F9D1 1F3FD 200D 1F52C ; fully-qualified # 🧑🏽‍🔬 E12.1 scientist: medium skin tone +1F9D1 1F3FE 200D 1F52C ; fully-qualified # 🧑🏾‍🔬 E12.1 scientist: medium-dark skin tone +1F9D1 1F3FF 200D 1F52C ; fully-qualified # 🧑🏿‍🔬 E12.1 scientist: dark skin tone +1F468 200D 1F52C ; fully-qualified # 👨‍🔬 E4.0 man scientist +1F468 1F3FB 200D 1F52C ; fully-qualified # 👨🏻‍🔬 E4.0 man scientist: light skin tone +1F468 1F3FC 200D 1F52C ; fully-qualified # 👨🏼‍🔬 E4.0 man scientist: medium-light skin tone +1F468 1F3FD 200D 1F52C ; fully-qualified # 👨🏽‍🔬 E4.0 man scientist: medium skin tone +1F468 1F3FE 200D 1F52C ; fully-qualified # 👨🏾‍🔬 E4.0 man scientist: medium-dark skin tone +1F468 1F3FF 200D 1F52C ; fully-qualified # 👨🏿‍🔬 E4.0 man scientist: dark skin tone +1F469 200D 1F52C ; fully-qualified # 👩‍🔬 E4.0 woman scientist +1F469 1F3FB 200D 1F52C ; fully-qualified # 👩🏻‍🔬 E4.0 woman scientist: light skin tone +1F469 1F3FC 200D 1F52C ; fully-qualified # 👩🏼‍🔬 E4.0 woman scientist: medium-light skin tone +1F469 1F3FD 200D 1F52C ; fully-qualified # 👩🏽‍🔬 E4.0 woman scientist: medium skin tone +1F469 1F3FE 200D 1F52C ; fully-qualified # 👩🏾‍🔬 E4.0 woman scientist: medium-dark skin tone +1F469 1F3FF 200D 1F52C ; fully-qualified # 👩🏿‍🔬 E4.0 woman scientist: dark skin tone +1F9D1 200D 1F4BB ; fully-qualified # 🧑‍💻 E12.1 technologist +1F9D1 1F3FB 200D 1F4BB ; fully-qualified # 🧑🏻‍💻 E12.1 technologist: light skin tone +1F9D1 1F3FC 200D 1F4BB ; fully-qualified # 🧑🏼‍💻 E12.1 technologist: medium-light skin tone +1F9D1 1F3FD 200D 1F4BB ; fully-qualified # 🧑🏽‍💻 E12.1 technologist: medium skin tone +1F9D1 1F3FE 200D 1F4BB ; fully-qualified # 🧑🏾‍💻 E12.1 technologist: medium-dark skin tone +1F9D1 1F3FF 200D 1F4BB ; fully-qualified # 🧑🏿‍💻 E12.1 technologist: dark skin tone +1F468 200D 1F4BB ; fully-qualified # 👨‍💻 E4.0 man technologist +1F468 1F3FB 200D 1F4BB ; fully-qualified # 👨🏻‍💻 E4.0 man technologist: light skin tone +1F468 1F3FC 200D 1F4BB ; fully-qualified # 👨🏼‍💻 E4.0 man technologist: medium-light skin tone +1F468 1F3FD 200D 1F4BB ; fully-qualified # 👨🏽‍💻 E4.0 man technologist: medium skin tone +1F468 1F3FE 200D 1F4BB ; fully-qualified # 👨🏾‍💻 E4.0 man technologist: medium-dark skin tone +1F468 1F3FF 200D 1F4BB ; fully-qualified # 👨🏿‍💻 E4.0 man technologist: dark skin tone +1F469 200D 1F4BB ; fully-qualified # 👩‍💻 E4.0 woman technologist +1F469 1F3FB 200D 1F4BB ; fully-qualified # 👩🏻‍💻 E4.0 woman technologist: light skin tone +1F469 1F3FC 200D 1F4BB ; fully-qualified # 👩🏼‍💻 E4.0 woman technologist: medium-light skin tone +1F469 1F3FD 200D 1F4BB ; fully-qualified # 👩🏽‍💻 E4.0 woman technologist: medium skin tone +1F469 1F3FE 200D 1F4BB ; fully-qualified # 👩🏾‍💻 E4.0 woman technologist: medium-dark skin tone +1F469 1F3FF 200D 1F4BB ; fully-qualified # 👩🏿‍💻 E4.0 woman technologist: dark skin tone +1F9D1 200D 1F3A4 ; fully-qualified # 🧑‍🎤 E12.1 singer +1F9D1 1F3FB 200D 1F3A4 ; fully-qualified # 🧑🏻‍🎤 E12.1 singer: light skin tone +1F9D1 1F3FC 200D 1F3A4 ; fully-qualified # 🧑🏼‍🎤 E12.1 singer: medium-light skin tone +1F9D1 1F3FD 200D 1F3A4 ; fully-qualified # 🧑🏽‍🎤 E12.1 singer: medium skin tone +1F9D1 1F3FE 200D 1F3A4 ; fully-qualified # 🧑🏾‍🎤 E12.1 singer: medium-dark skin tone +1F9D1 1F3FF 200D 1F3A4 ; fully-qualified # 🧑🏿‍🎤 E12.1 singer: dark skin tone +1F468 200D 1F3A4 ; fully-qualified # 👨‍🎤 E4.0 man singer +1F468 1F3FB 200D 1F3A4 ; fully-qualified # 👨🏻‍🎤 E4.0 man singer: light skin tone +1F468 1F3FC 200D 1F3A4 ; fully-qualified # 👨🏼‍🎤 E4.0 man singer: medium-light skin tone +1F468 1F3FD 200D 1F3A4 ; fully-qualified # 👨🏽‍🎤 E4.0 man singer: medium skin tone +1F468 1F3FE 200D 1F3A4 ; fully-qualified # 👨🏾‍🎤 E4.0 man singer: medium-dark skin tone +1F468 1F3FF 200D 1F3A4 ; fully-qualified # 👨🏿‍🎤 E4.0 man singer: dark skin tone +1F469 200D 1F3A4 ; fully-qualified # 👩‍🎤 E4.0 woman singer +1F469 1F3FB 200D 1F3A4 ; fully-qualified # 👩🏻‍🎤 E4.0 woman singer: light skin tone +1F469 1F3FC 200D 1F3A4 ; fully-qualified # 👩🏼‍🎤 E4.0 woman singer: medium-light skin tone +1F469 1F3FD 200D 1F3A4 ; fully-qualified # 👩🏽‍🎤 E4.0 woman singer: medium skin tone +1F469 1F3FE 200D 1F3A4 ; fully-qualified # 👩🏾‍🎤 E4.0 woman singer: medium-dark skin tone +1F469 1F3FF 200D 1F3A4 ; fully-qualified # 👩🏿‍🎤 E4.0 woman singer: dark skin tone +1F9D1 200D 1F3A8 ; fully-qualified # 🧑‍🎨 E12.1 artist +1F9D1 1F3FB 200D 1F3A8 ; fully-qualified # 🧑🏻‍🎨 E12.1 artist: light skin tone +1F9D1 1F3FC 200D 1F3A8 ; fully-qualified # 🧑🏼‍🎨 E12.1 artist: medium-light skin tone +1F9D1 1F3FD 200D 1F3A8 ; fully-qualified # 🧑🏽‍🎨 E12.1 artist: medium skin tone +1F9D1 1F3FE 200D 1F3A8 ; fully-qualified # 🧑🏾‍🎨 E12.1 artist: medium-dark skin tone +1F9D1 1F3FF 200D 1F3A8 ; fully-qualified # 🧑🏿‍🎨 E12.1 artist: dark skin tone +1F468 200D 1F3A8 ; fully-qualified # 👨‍🎨 E4.0 man artist +1F468 1F3FB 200D 1F3A8 ; fully-qualified # 👨🏻‍🎨 E4.0 man artist: light skin tone +1F468 1F3FC 200D 1F3A8 ; fully-qualified # 👨🏼‍🎨 E4.0 man artist: medium-light skin tone +1F468 1F3FD 200D 1F3A8 ; fully-qualified # 👨🏽‍🎨 E4.0 man artist: medium skin tone +1F468 1F3FE 200D 1F3A8 ; fully-qualified # 👨🏾‍🎨 E4.0 man artist: medium-dark skin tone +1F468 1F3FF 200D 1F3A8 ; fully-qualified # 👨🏿‍🎨 E4.0 man artist: dark skin tone +1F469 200D 1F3A8 ; fully-qualified # 👩‍🎨 E4.0 woman artist +1F469 1F3FB 200D 1F3A8 ; fully-qualified # 👩🏻‍🎨 E4.0 woman artist: light skin tone +1F469 1F3FC 200D 1F3A8 ; fully-qualified # 👩🏼‍🎨 E4.0 woman artist: medium-light skin tone +1F469 1F3FD 200D 1F3A8 ; fully-qualified # 👩🏽‍🎨 E4.0 woman artist: medium skin tone +1F469 1F3FE 200D 1F3A8 ; fully-qualified # 👩🏾‍🎨 E4.0 woman artist: medium-dark skin tone +1F469 1F3FF 200D 1F3A8 ; fully-qualified # 👩🏿‍🎨 E4.0 woman artist: dark skin tone +1F9D1 200D 2708 FE0F ; fully-qualified # 🧑‍✈️ E12.1 pilot +1F9D1 200D 2708 ; minimally-qualified # 🧑‍✈ E12.1 pilot +1F9D1 1F3FB 200D 2708 FE0F ; fully-qualified # 🧑🏻‍✈️ E12.1 pilot: light skin tone +1F9D1 1F3FB 200D 2708 ; minimally-qualified # 🧑🏻‍✈ E12.1 pilot: light skin tone +1F9D1 1F3FC 200D 2708 FE0F ; fully-qualified # 🧑🏼‍✈️ E12.1 pilot: medium-light skin tone +1F9D1 1F3FC 200D 2708 ; minimally-qualified # 🧑🏼‍✈ E12.1 pilot: medium-light skin tone +1F9D1 1F3FD 200D 2708 FE0F ; fully-qualified # 🧑🏽‍✈️ E12.1 pilot: medium skin tone +1F9D1 1F3FD 200D 2708 ; minimally-qualified # 🧑🏽‍✈ E12.1 pilot: medium skin tone +1F9D1 1F3FE 200D 2708 FE0F ; fully-qualified # 🧑🏾‍✈️ E12.1 pilot: medium-dark skin tone +1F9D1 1F3FE 200D 2708 ; minimally-qualified # 🧑🏾‍✈ E12.1 pilot: medium-dark skin tone +1F9D1 1F3FF 200D 2708 FE0F ; fully-qualified # 🧑🏿‍✈️ E12.1 pilot: dark skin tone +1F9D1 1F3FF 200D 2708 ; minimally-qualified # 🧑🏿‍✈ E12.1 pilot: dark skin tone +1F468 200D 2708 FE0F ; fully-qualified # 👨‍✈️ E4.0 man pilot +1F468 200D 2708 ; minimally-qualified # 👨‍✈ E4.0 man pilot +1F468 1F3FB 200D 2708 FE0F ; fully-qualified # 👨🏻‍✈️ E4.0 man pilot: light skin tone +1F468 1F3FB 200D 2708 ; minimally-qualified # 👨🏻‍✈ E4.0 man pilot: light skin tone +1F468 1F3FC 200D 2708 FE0F ; fully-qualified # 👨🏼‍✈️ E4.0 man pilot: medium-light skin tone +1F468 1F3FC 200D 2708 ; minimally-qualified # 👨🏼‍✈ E4.0 man pilot: medium-light skin tone +1F468 1F3FD 200D 2708 FE0F ; fully-qualified # 👨🏽‍✈️ E4.0 man pilot: medium skin tone +1F468 1F3FD 200D 2708 ; minimally-qualified # 👨🏽‍✈ E4.0 man pilot: medium skin tone +1F468 1F3FE 200D 2708 FE0F ; fully-qualified # 👨🏾‍✈️ E4.0 man pilot: medium-dark skin tone +1F468 1F3FE 200D 2708 ; minimally-qualified # 👨🏾‍✈ E4.0 man pilot: medium-dark skin tone +1F468 1F3FF 200D 2708 FE0F ; fully-qualified # 👨🏿‍✈️ E4.0 man pilot: dark skin tone +1F468 1F3FF 200D 2708 ; minimally-qualified # 👨🏿‍✈ E4.0 man pilot: dark skin tone +1F469 200D 2708 FE0F ; fully-qualified # 👩‍✈️ E4.0 woman pilot +1F469 200D 2708 ; minimally-qualified # 👩‍✈ E4.0 woman pilot +1F469 1F3FB 200D 2708 FE0F ; fully-qualified # 👩🏻‍✈️ E4.0 woman pilot: light skin tone +1F469 1F3FB 200D 2708 ; minimally-qualified # 👩🏻‍✈ E4.0 woman pilot: light skin tone +1F469 1F3FC 200D 2708 FE0F ; fully-qualified # 👩🏼‍✈️ E4.0 woman pilot: medium-light skin tone +1F469 1F3FC 200D 2708 ; minimally-qualified # 👩🏼‍✈ E4.0 woman pilot: medium-light skin tone +1F469 1F3FD 200D 2708 FE0F ; fully-qualified # 👩🏽‍✈️ E4.0 woman pilot: medium skin tone +1F469 1F3FD 200D 2708 ; minimally-qualified # 👩🏽‍✈ E4.0 woman pilot: medium skin tone +1F469 1F3FE 200D 2708 FE0F ; fully-qualified # 👩🏾‍✈️ E4.0 woman pilot: medium-dark skin tone +1F469 1F3FE 200D 2708 ; minimally-qualified # 👩🏾‍✈ E4.0 woman pilot: medium-dark skin tone +1F469 1F3FF 200D 2708 FE0F ; fully-qualified # 👩🏿‍✈️ E4.0 woman pilot: dark skin tone +1F469 1F3FF 200D 2708 ; minimally-qualified # 👩🏿‍✈ E4.0 woman pilot: dark skin tone +1F9D1 200D 1F680 ; fully-qualified # 🧑‍🚀 E12.1 astronaut +1F9D1 1F3FB 200D 1F680 ; fully-qualified # 🧑🏻‍🚀 E12.1 astronaut: light skin tone +1F9D1 1F3FC 200D 1F680 ; fully-qualified # 🧑🏼‍🚀 E12.1 astronaut: medium-light skin tone +1F9D1 1F3FD 200D 1F680 ; fully-qualified # 🧑🏽‍🚀 E12.1 astronaut: medium skin tone +1F9D1 1F3FE 200D 1F680 ; fully-qualified # 🧑🏾‍🚀 E12.1 astronaut: medium-dark skin tone +1F9D1 1F3FF 200D 1F680 ; fully-qualified # 🧑🏿‍🚀 E12.1 astronaut: dark skin tone +1F468 200D 1F680 ; fully-qualified # 👨‍🚀 E4.0 man astronaut +1F468 1F3FB 200D 1F680 ; fully-qualified # 👨🏻‍🚀 E4.0 man astronaut: light skin tone +1F468 1F3FC 200D 1F680 ; fully-qualified # 👨🏼‍🚀 E4.0 man astronaut: medium-light skin tone +1F468 1F3FD 200D 1F680 ; fully-qualified # 👨🏽‍🚀 E4.0 man astronaut: medium skin tone +1F468 1F3FE 200D 1F680 ; fully-qualified # 👨🏾‍🚀 E4.0 man astronaut: medium-dark skin tone +1F468 1F3FF 200D 1F680 ; fully-qualified # 👨🏿‍🚀 E4.0 man astronaut: dark skin tone +1F469 200D 1F680 ; fully-qualified # 👩‍🚀 E4.0 woman astronaut +1F469 1F3FB 200D 1F680 ; fully-qualified # 👩🏻‍🚀 E4.0 woman astronaut: light skin tone +1F469 1F3FC 200D 1F680 ; fully-qualified # 👩🏼‍🚀 E4.0 woman astronaut: medium-light skin tone +1F469 1F3FD 200D 1F680 ; fully-qualified # 👩🏽‍🚀 E4.0 woman astronaut: medium skin tone +1F469 1F3FE 200D 1F680 ; fully-qualified # 👩🏾‍🚀 E4.0 woman astronaut: medium-dark skin tone +1F469 1F3FF 200D 1F680 ; fully-qualified # 👩🏿‍🚀 E4.0 woman astronaut: dark skin tone +1F9D1 200D 1F692 ; fully-qualified # 🧑‍🚒 E12.1 firefighter +1F9D1 1F3FB 200D 1F692 ; fully-qualified # 🧑🏻‍🚒 E12.1 firefighter: light skin tone +1F9D1 1F3FC 200D 1F692 ; fully-qualified # 🧑🏼‍🚒 E12.1 firefighter: medium-light skin tone +1F9D1 1F3FD 200D 1F692 ; fully-qualified # 🧑🏽‍🚒 E12.1 firefighter: medium skin tone +1F9D1 1F3FE 200D 1F692 ; fully-qualified # 🧑🏾‍🚒 E12.1 firefighter: medium-dark skin tone +1F9D1 1F3FF 200D 1F692 ; fully-qualified # 🧑🏿‍🚒 E12.1 firefighter: dark skin tone +1F468 200D 1F692 ; fully-qualified # 👨‍🚒 E4.0 man firefighter +1F468 1F3FB 200D 1F692 ; fully-qualified # 👨🏻‍🚒 E4.0 man firefighter: light skin tone +1F468 1F3FC 200D 1F692 ; fully-qualified # 👨🏼‍🚒 E4.0 man firefighter: medium-light skin tone +1F468 1F3FD 200D 1F692 ; fully-qualified # 👨🏽‍🚒 E4.0 man firefighter: medium skin tone +1F468 1F3FE 200D 1F692 ; fully-qualified # 👨🏾‍🚒 E4.0 man firefighter: medium-dark skin tone +1F468 1F3FF 200D 1F692 ; fully-qualified # 👨🏿‍🚒 E4.0 man firefighter: dark skin tone +1F469 200D 1F692 ; fully-qualified # 👩‍🚒 E4.0 woman firefighter +1F469 1F3FB 200D 1F692 ; fully-qualified # 👩🏻‍🚒 E4.0 woman firefighter: light skin tone +1F469 1F3FC 200D 1F692 ; fully-qualified # 👩🏼‍🚒 E4.0 woman firefighter: medium-light skin tone +1F469 1F3FD 200D 1F692 ; fully-qualified # 👩🏽‍🚒 E4.0 woman firefighter: medium skin tone +1F469 1F3FE 200D 1F692 ; fully-qualified # 👩🏾‍🚒 E4.0 woman firefighter: medium-dark skin tone +1F469 1F3FF 200D 1F692 ; fully-qualified # 👩🏿‍🚒 E4.0 woman firefighter: dark skin tone +1F46E ; fully-qualified # 👮 E0.6 police officer +1F46E 1F3FB ; fully-qualified # 👮🏻 E1.0 police officer: light skin tone +1F46E 1F3FC ; fully-qualified # 👮🏼 E1.0 police officer: medium-light skin tone +1F46E 1F3FD ; fully-qualified # 👮🏽 E1.0 police officer: medium skin tone +1F46E 1F3FE ; fully-qualified # 👮🏾 E1.0 police officer: medium-dark skin tone +1F46E 1F3FF ; fully-qualified # 👮🏿 E1.0 police officer: dark skin tone +1F46E 200D 2642 FE0F ; fully-qualified # 👮‍♂️ E4.0 man police officer +1F46E 200D 2642 ; minimally-qualified # 👮‍♂ E4.0 man police officer +1F46E 1F3FB 200D 2642 FE0F ; fully-qualified # 👮🏻‍♂️ E4.0 man police officer: light skin tone +1F46E 1F3FB 200D 2642 ; minimally-qualified # 👮🏻‍♂ E4.0 man police officer: light skin tone +1F46E 1F3FC 200D 2642 FE0F ; fully-qualified # 👮🏼‍♂️ E4.0 man police officer: medium-light skin tone +1F46E 1F3FC 200D 2642 ; minimally-qualified # 👮🏼‍♂ E4.0 man police officer: medium-light skin tone +1F46E 1F3FD 200D 2642 FE0F ; fully-qualified # 👮🏽‍♂️ E4.0 man police officer: medium skin tone +1F46E 1F3FD 200D 2642 ; minimally-qualified # 👮🏽‍♂ E4.0 man police officer: medium skin tone +1F46E 1F3FE 200D 2642 FE0F ; fully-qualified # 👮🏾‍♂️ E4.0 man police officer: medium-dark skin tone +1F46E 1F3FE 200D 2642 ; minimally-qualified # 👮🏾‍♂ E4.0 man police officer: medium-dark skin tone +1F46E 1F3FF 200D 2642 FE0F ; fully-qualified # 👮🏿‍♂️ E4.0 man police officer: dark skin tone +1F46E 1F3FF 200D 2642 ; minimally-qualified # 👮🏿‍♂ E4.0 man police officer: dark skin tone +1F46E 200D 2640 FE0F ; fully-qualified # 👮‍♀️ E4.0 woman police officer +1F46E 200D 2640 ; minimally-qualified # 👮‍♀ E4.0 woman police officer +1F46E 1F3FB 200D 2640 FE0F ; fully-qualified # 👮🏻‍♀️ E4.0 woman police officer: light skin tone +1F46E 1F3FB 200D 2640 ; minimally-qualified # 👮🏻‍♀ E4.0 woman police officer: light skin tone +1F46E 1F3FC 200D 2640 FE0F ; fully-qualified # 👮🏼‍♀️ E4.0 woman police officer: medium-light skin tone +1F46E 1F3FC 200D 2640 ; minimally-qualified # 👮🏼‍♀ E4.0 woman police officer: medium-light skin tone +1F46E 1F3FD 200D 2640 FE0F ; fully-qualified # 👮🏽‍♀️ E4.0 woman police officer: medium skin tone +1F46E 1F3FD 200D 2640 ; minimally-qualified # 👮🏽‍♀ E4.0 woman police officer: medium skin tone +1F46E 1F3FE 200D 2640 FE0F ; fully-qualified # 👮🏾‍♀️ E4.0 woman police officer: medium-dark skin tone +1F46E 1F3FE 200D 2640 ; minimally-qualified # 👮🏾‍♀ E4.0 woman police officer: medium-dark skin tone +1F46E 1F3FF 200D 2640 FE0F ; fully-qualified # 👮🏿‍♀️ E4.0 woman police officer: dark skin tone +1F46E 1F3FF 200D 2640 ; minimally-qualified # 👮🏿‍♀ E4.0 woman police officer: dark skin tone +1F575 FE0F ; fully-qualified # 🕵️ E0.7 detective +1F575 ; unqualified # 🕵 E0.7 detective +1F575 1F3FB ; fully-qualified # 🕵🏻 E2.0 detective: light skin tone +1F575 1F3FC ; fully-qualified # 🕵🏼 E2.0 detective: medium-light skin tone +1F575 1F3FD ; fully-qualified # 🕵🏽 E2.0 detective: medium skin tone +1F575 1F3FE ; fully-qualified # 🕵🏾 E2.0 detective: medium-dark skin tone +1F575 1F3FF ; fully-qualified # 🕵🏿 E2.0 detective: dark skin tone +1F575 FE0F 200D 2642 FE0F ; fully-qualified # 🕵️‍♂️ E4.0 man detective +1F575 200D 2642 FE0F ; unqualified # 🕵‍♂️ E4.0 man detective +1F575 FE0F 200D 2642 ; minimally-qualified # 🕵️‍♂ E4.0 man detective +1F575 200D 2642 ; unqualified # 🕵‍♂ E4.0 man detective +1F575 1F3FB 200D 2642 FE0F ; fully-qualified # 🕵🏻‍♂️ E4.0 man detective: light skin tone +1F575 1F3FB 200D 2642 ; minimally-qualified # 🕵🏻‍♂ E4.0 man detective: light skin tone +1F575 1F3FC 200D 2642 FE0F ; fully-qualified # 🕵🏼‍♂️ E4.0 man detective: medium-light skin tone +1F575 1F3FC 200D 2642 ; minimally-qualified # 🕵🏼‍♂ E4.0 man detective: medium-light skin tone +1F575 1F3FD 200D 2642 FE0F ; fully-qualified # 🕵🏽‍♂️ E4.0 man detective: medium skin tone +1F575 1F3FD 200D 2642 ; minimally-qualified # 🕵🏽‍♂ E4.0 man detective: medium skin tone +1F575 1F3FE 200D 2642 FE0F ; fully-qualified # 🕵🏾‍♂️ E4.0 man detective: medium-dark skin tone +1F575 1F3FE 200D 2642 ; minimally-qualified # 🕵🏾‍♂ E4.0 man detective: medium-dark skin tone +1F575 1F3FF 200D 2642 FE0F ; fully-qualified # 🕵🏿‍♂️ E4.0 man detective: dark skin tone +1F575 1F3FF 200D 2642 ; minimally-qualified # 🕵🏿‍♂ E4.0 man detective: dark skin tone +1F575 FE0F 200D 2640 FE0F ; fully-qualified # 🕵️‍♀️ E4.0 woman detective +1F575 200D 2640 FE0F ; unqualified # 🕵‍♀️ E4.0 woman detective +1F575 FE0F 200D 2640 ; minimally-qualified # 🕵️‍♀ E4.0 woman detective +1F575 200D 2640 ; unqualified # 🕵‍♀ E4.0 woman detective +1F575 1F3FB 200D 2640 FE0F ; fully-qualified # 🕵🏻‍♀️ E4.0 woman detective: light skin tone +1F575 1F3FB 200D 2640 ; minimally-qualified # 🕵🏻‍♀ E4.0 woman detective: light skin tone +1F575 1F3FC 200D 2640 FE0F ; fully-qualified # 🕵🏼‍♀️ E4.0 woman detective: medium-light skin tone +1F575 1F3FC 200D 2640 ; minimally-qualified # 🕵🏼‍♀ E4.0 woman detective: medium-light skin tone +1F575 1F3FD 200D 2640 FE0F ; fully-qualified # 🕵🏽‍♀️ E4.0 woman detective: medium skin tone +1F575 1F3FD 200D 2640 ; minimally-qualified # 🕵🏽‍♀ E4.0 woman detective: medium skin tone +1F575 1F3FE 200D 2640 FE0F ; fully-qualified # 🕵🏾‍♀️ E4.0 woman detective: medium-dark skin tone +1F575 1F3FE 200D 2640 ; minimally-qualified # 🕵🏾‍♀ E4.0 woman detective: medium-dark skin tone +1F575 1F3FF 200D 2640 FE0F ; fully-qualified # 🕵🏿‍♀️ E4.0 woman detective: dark skin tone +1F575 1F3FF 200D 2640 ; minimally-qualified # 🕵🏿‍♀ E4.0 woman detective: dark skin tone +1F482 ; fully-qualified # 💂 E0.6 guard +1F482 1F3FB ; fully-qualified # 💂🏻 E1.0 guard: light skin tone +1F482 1F3FC ; fully-qualified # 💂🏼 E1.0 guard: medium-light skin tone +1F482 1F3FD ; fully-qualified # 💂🏽 E1.0 guard: medium skin tone +1F482 1F3FE ; fully-qualified # 💂🏾 E1.0 guard: medium-dark skin tone +1F482 1F3FF ; fully-qualified # 💂🏿 E1.0 guard: dark skin tone +1F482 200D 2642 FE0F ; fully-qualified # 💂‍♂️ E4.0 man guard +1F482 200D 2642 ; minimally-qualified # 💂‍♂ E4.0 man guard +1F482 1F3FB 200D 2642 FE0F ; fully-qualified # 💂🏻‍♂️ E4.0 man guard: light skin tone +1F482 1F3FB 200D 2642 ; minimally-qualified # 💂🏻‍♂ E4.0 man guard: light skin tone +1F482 1F3FC 200D 2642 FE0F ; fully-qualified # 💂🏼‍♂️ E4.0 man guard: medium-light skin tone +1F482 1F3FC 200D 2642 ; minimally-qualified # 💂🏼‍♂ E4.0 man guard: medium-light skin tone +1F482 1F3FD 200D 2642 FE0F ; fully-qualified # 💂🏽‍♂️ E4.0 man guard: medium skin tone +1F482 1F3FD 200D 2642 ; minimally-qualified # 💂🏽‍♂ E4.0 man guard: medium skin tone +1F482 1F3FE 200D 2642 FE0F ; fully-qualified # 💂🏾‍♂️ E4.0 man guard: medium-dark skin tone +1F482 1F3FE 200D 2642 ; minimally-qualified # 💂🏾‍♂ E4.0 man guard: medium-dark skin tone +1F482 1F3FF 200D 2642 FE0F ; fully-qualified # 💂🏿‍♂️ E4.0 man guard: dark skin tone +1F482 1F3FF 200D 2642 ; minimally-qualified # 💂🏿‍♂ E4.0 man guard: dark skin tone +1F482 200D 2640 FE0F ; fully-qualified # 💂‍♀️ E4.0 woman guard +1F482 200D 2640 ; minimally-qualified # 💂‍♀ E4.0 woman guard +1F482 1F3FB 200D 2640 FE0F ; fully-qualified # 💂🏻‍♀️ E4.0 woman guard: light skin tone +1F482 1F3FB 200D 2640 ; minimally-qualified # 💂🏻‍♀ E4.0 woman guard: light skin tone +1F482 1F3FC 200D 2640 FE0F ; fully-qualified # 💂🏼‍♀️ E4.0 woman guard: medium-light skin tone +1F482 1F3FC 200D 2640 ; minimally-qualified # 💂🏼‍♀ E4.0 woman guard: medium-light skin tone +1F482 1F3FD 200D 2640 FE0F ; fully-qualified # 💂🏽‍♀️ E4.0 woman guard: medium skin tone +1F482 1F3FD 200D 2640 ; minimally-qualified # 💂🏽‍♀ E4.0 woman guard: medium skin tone +1F482 1F3FE 200D 2640 FE0F ; fully-qualified # 💂🏾‍♀️ E4.0 woman guard: medium-dark skin tone +1F482 1F3FE 200D 2640 ; minimally-qualified # 💂🏾‍♀ E4.0 woman guard: medium-dark skin tone +1F482 1F3FF 200D 2640 FE0F ; fully-qualified # 💂🏿‍♀️ E4.0 woman guard: dark skin tone +1F482 1F3FF 200D 2640 ; minimally-qualified # 💂🏿‍♀ E4.0 woman guard: dark skin tone +1F977 ; fully-qualified # 🥷 E13.0 ninja +1F977 1F3FB ; fully-qualified # 🥷🏻 E13.0 ninja: light skin tone +1F977 1F3FC ; fully-qualified # 🥷🏼 E13.0 ninja: medium-light skin tone +1F977 1F3FD ; fully-qualified # 🥷🏽 E13.0 ninja: medium skin tone +1F977 1F3FE ; fully-qualified # 🥷🏾 E13.0 ninja: medium-dark skin tone +1F977 1F3FF ; fully-qualified # 🥷🏿 E13.0 ninja: dark skin tone +1F477 ; fully-qualified # 👷 E0.6 construction worker +1F477 1F3FB ; fully-qualified # 👷🏻 E1.0 construction worker: light skin tone +1F477 1F3FC ; fully-qualified # 👷🏼 E1.0 construction worker: medium-light skin tone +1F477 1F3FD ; fully-qualified # 👷🏽 E1.0 construction worker: medium skin tone +1F477 1F3FE ; fully-qualified # 👷🏾 E1.0 construction worker: medium-dark skin tone +1F477 1F3FF ; fully-qualified # 👷🏿 E1.0 construction worker: dark skin tone +1F477 200D 2642 FE0F ; fully-qualified # 👷‍♂️ E4.0 man construction worker +1F477 200D 2642 ; minimally-qualified # 👷‍♂ E4.0 man construction worker +1F477 1F3FB 200D 2642 FE0F ; fully-qualified # 👷🏻‍♂️ E4.0 man construction worker: light skin tone +1F477 1F3FB 200D 2642 ; minimally-qualified # 👷🏻‍♂ E4.0 man construction worker: light skin tone +1F477 1F3FC 200D 2642 FE0F ; fully-qualified # 👷🏼‍♂️ E4.0 man construction worker: medium-light skin tone +1F477 1F3FC 200D 2642 ; minimally-qualified # 👷🏼‍♂ E4.0 man construction worker: medium-light skin tone +1F477 1F3FD 200D 2642 FE0F ; fully-qualified # 👷🏽‍♂️ E4.0 man construction worker: medium skin tone +1F477 1F3FD 200D 2642 ; minimally-qualified # 👷🏽‍♂ E4.0 man construction worker: medium skin tone +1F477 1F3FE 200D 2642 FE0F ; fully-qualified # 👷🏾‍♂️ E4.0 man construction worker: medium-dark skin tone +1F477 1F3FE 200D 2642 ; minimally-qualified # 👷🏾‍♂ E4.0 man construction worker: medium-dark skin tone +1F477 1F3FF 200D 2642 FE0F ; fully-qualified # 👷🏿‍♂️ E4.0 man construction worker: dark skin tone +1F477 1F3FF 200D 2642 ; minimally-qualified # 👷🏿‍♂ E4.0 man construction worker: dark skin tone +1F477 200D 2640 FE0F ; fully-qualified # 👷‍♀️ E4.0 woman construction worker +1F477 200D 2640 ; minimally-qualified # 👷‍♀ E4.0 woman construction worker +1F477 1F3FB 200D 2640 FE0F ; fully-qualified # 👷🏻‍♀️ E4.0 woman construction worker: light skin tone +1F477 1F3FB 200D 2640 ; minimally-qualified # 👷🏻‍♀ E4.0 woman construction worker: light skin tone +1F477 1F3FC 200D 2640 FE0F ; fully-qualified # 👷🏼‍♀️ E4.0 woman construction worker: medium-light skin tone +1F477 1F3FC 200D 2640 ; minimally-qualified # 👷🏼‍♀ E4.0 woman construction worker: medium-light skin tone +1F477 1F3FD 200D 2640 FE0F ; fully-qualified # 👷🏽‍♀️ E4.0 woman construction worker: medium skin tone +1F477 1F3FD 200D 2640 ; minimally-qualified # 👷🏽‍♀ E4.0 woman construction worker: medium skin tone +1F477 1F3FE 200D 2640 FE0F ; fully-qualified # 👷🏾‍♀️ E4.0 woman construction worker: medium-dark skin tone +1F477 1F3FE 200D 2640 ; minimally-qualified # 👷🏾‍♀ E4.0 woman construction worker: medium-dark skin tone +1F477 1F3FF 200D 2640 FE0F ; fully-qualified # 👷🏿‍♀️ E4.0 woman construction worker: dark skin tone +1F477 1F3FF 200D 2640 ; minimally-qualified # 👷🏿‍♀ E4.0 woman construction worker: dark skin tone +1FAC5 ; fully-qualified # 🫅 E14.0 person with crown +1FAC5 1F3FB ; fully-qualified # 🫅🏻 E14.0 person with crown: light skin tone +1FAC5 1F3FC ; fully-qualified # 🫅🏼 E14.0 person with crown: medium-light skin tone +1FAC5 1F3FD ; fully-qualified # 🫅🏽 E14.0 person with crown: medium skin tone +1FAC5 1F3FE ; fully-qualified # 🫅🏾 E14.0 person with crown: medium-dark skin tone +1FAC5 1F3FF ; fully-qualified # 🫅🏿 E14.0 person with crown: dark skin tone +1F934 ; fully-qualified # 🤴 E3.0 prince +1F934 1F3FB ; fully-qualified # 🤴🏻 E3.0 prince: light skin tone +1F934 1F3FC ; fully-qualified # 🤴🏼 E3.0 prince: medium-light skin tone +1F934 1F3FD ; fully-qualified # 🤴🏽 E3.0 prince: medium skin tone +1F934 1F3FE ; fully-qualified # 🤴🏾 E3.0 prince: medium-dark skin tone +1F934 1F3FF ; fully-qualified # 🤴🏿 E3.0 prince: dark skin tone +1F478 ; fully-qualified # 👸 E0.6 princess +1F478 1F3FB ; fully-qualified # 👸🏻 E1.0 princess: light skin tone +1F478 1F3FC ; fully-qualified # 👸🏼 E1.0 princess: medium-light skin tone +1F478 1F3FD ; fully-qualified # 👸🏽 E1.0 princess: medium skin tone +1F478 1F3FE ; fully-qualified # 👸🏾 E1.0 princess: medium-dark skin tone +1F478 1F3FF ; fully-qualified # 👸🏿 E1.0 princess: dark skin tone +1F473 ; fully-qualified # 👳 E0.6 person wearing turban +1F473 1F3FB ; fully-qualified # 👳🏻 E1.0 person wearing turban: light skin tone +1F473 1F3FC ; fully-qualified # 👳🏼 E1.0 person wearing turban: medium-light skin tone +1F473 1F3FD ; fully-qualified # 👳🏽 E1.0 person wearing turban: medium skin tone +1F473 1F3FE ; fully-qualified # 👳🏾 E1.0 person wearing turban: medium-dark skin tone +1F473 1F3FF ; fully-qualified # 👳🏿 E1.0 person wearing turban: dark skin tone +1F473 200D 2642 FE0F ; fully-qualified # 👳‍♂️ E4.0 man wearing turban +1F473 200D 2642 ; minimally-qualified # 👳‍♂ E4.0 man wearing turban +1F473 1F3FB 200D 2642 FE0F ; fully-qualified # 👳🏻‍♂️ E4.0 man wearing turban: light skin tone +1F473 1F3FB 200D 2642 ; minimally-qualified # 👳🏻‍♂ E4.0 man wearing turban: light skin tone +1F473 1F3FC 200D 2642 FE0F ; fully-qualified # 👳🏼‍♂️ E4.0 man wearing turban: medium-light skin tone +1F473 1F3FC 200D 2642 ; minimally-qualified # 👳🏼‍♂ E4.0 man wearing turban: medium-light skin tone +1F473 1F3FD 200D 2642 FE0F ; fully-qualified # 👳🏽‍♂️ E4.0 man wearing turban: medium skin tone +1F473 1F3FD 200D 2642 ; minimally-qualified # 👳🏽‍♂ E4.0 man wearing turban: medium skin tone +1F473 1F3FE 200D 2642 FE0F ; fully-qualified # 👳🏾‍♂️ E4.0 man wearing turban: medium-dark skin tone +1F473 1F3FE 200D 2642 ; minimally-qualified # 👳🏾‍♂ E4.0 man wearing turban: medium-dark skin tone +1F473 1F3FF 200D 2642 FE0F ; fully-qualified # 👳🏿‍♂️ E4.0 man wearing turban: dark skin tone +1F473 1F3FF 200D 2642 ; minimally-qualified # 👳🏿‍♂ E4.0 man wearing turban: dark skin tone +1F473 200D 2640 FE0F ; fully-qualified # 👳‍♀️ E4.0 woman wearing turban +1F473 200D 2640 ; minimally-qualified # 👳‍♀ E4.0 woman wearing turban +1F473 1F3FB 200D 2640 FE0F ; fully-qualified # 👳🏻‍♀️ E4.0 woman wearing turban: light skin tone +1F473 1F3FB 200D 2640 ; minimally-qualified # 👳🏻‍♀ E4.0 woman wearing turban: light skin tone +1F473 1F3FC 200D 2640 FE0F ; fully-qualified # 👳🏼‍♀️ E4.0 woman wearing turban: medium-light skin tone +1F473 1F3FC 200D 2640 ; minimally-qualified # 👳🏼‍♀ E4.0 woman wearing turban: medium-light skin tone +1F473 1F3FD 200D 2640 FE0F ; fully-qualified # 👳🏽‍♀️ E4.0 woman wearing turban: medium skin tone +1F473 1F3FD 200D 2640 ; minimally-qualified # 👳🏽‍♀ E4.0 woman wearing turban: medium skin tone +1F473 1F3FE 200D 2640 FE0F ; fully-qualified # 👳🏾‍♀️ E4.0 woman wearing turban: medium-dark skin tone +1F473 1F3FE 200D 2640 ; minimally-qualified # 👳🏾‍♀ E4.0 woman wearing turban: medium-dark skin tone +1F473 1F3FF 200D 2640 FE0F ; fully-qualified # 👳🏿‍♀️ E4.0 woman wearing turban: dark skin tone +1F473 1F3FF 200D 2640 ; minimally-qualified # 👳🏿‍♀ E4.0 woman wearing turban: dark skin tone +1F472 ; fully-qualified # 👲 E0.6 person with skullcap +1F472 1F3FB ; fully-qualified # 👲🏻 E1.0 person with skullcap: light skin tone +1F472 1F3FC ; fully-qualified # 👲🏼 E1.0 person with skullcap: medium-light skin tone +1F472 1F3FD ; fully-qualified # 👲🏽 E1.0 person with skullcap: medium skin tone +1F472 1F3FE ; fully-qualified # 👲🏾 E1.0 person with skullcap: medium-dark skin tone +1F472 1F3FF ; fully-qualified # 👲🏿 E1.0 person with skullcap: dark skin tone +1F9D5 ; fully-qualified # 🧕 E5.0 woman with headscarf +1F9D5 1F3FB ; fully-qualified # 🧕🏻 E5.0 woman with headscarf: light skin tone +1F9D5 1F3FC ; fully-qualified # 🧕🏼 E5.0 woman with headscarf: medium-light skin tone +1F9D5 1F3FD ; fully-qualified # 🧕🏽 E5.0 woman with headscarf: medium skin tone +1F9D5 1F3FE ; fully-qualified # 🧕🏾 E5.0 woman with headscarf: medium-dark skin tone +1F9D5 1F3FF ; fully-qualified # 🧕🏿 E5.0 woman with headscarf: dark skin tone +1F935 ; fully-qualified # 🤵 E3.0 person in tuxedo +1F935 1F3FB ; fully-qualified # 🤵🏻 E3.0 person in tuxedo: light skin tone +1F935 1F3FC ; fully-qualified # 🤵🏼 E3.0 person in tuxedo: medium-light skin tone +1F935 1F3FD ; fully-qualified # 🤵🏽 E3.0 person in tuxedo: medium skin tone +1F935 1F3FE ; fully-qualified # 🤵🏾 E3.0 person in tuxedo: medium-dark skin tone +1F935 1F3FF ; fully-qualified # 🤵🏿 E3.0 person in tuxedo: dark skin tone +1F935 200D 2642 FE0F ; fully-qualified # 🤵‍♂️ E13.0 man in tuxedo +1F935 200D 2642 ; minimally-qualified # 🤵‍♂ E13.0 man in tuxedo +1F935 1F3FB 200D 2642 FE0F ; fully-qualified # 🤵🏻‍♂️ E13.0 man in tuxedo: light skin tone +1F935 1F3FB 200D 2642 ; minimally-qualified # 🤵🏻‍♂ E13.0 man in tuxedo: light skin tone +1F935 1F3FC 200D 2642 FE0F ; fully-qualified # 🤵🏼‍♂️ E13.0 man in tuxedo: medium-light skin tone +1F935 1F3FC 200D 2642 ; minimally-qualified # 🤵🏼‍♂ E13.0 man in tuxedo: medium-light skin tone +1F935 1F3FD 200D 2642 FE0F ; fully-qualified # 🤵🏽‍♂️ E13.0 man in tuxedo: medium skin tone +1F935 1F3FD 200D 2642 ; minimally-qualified # 🤵🏽‍♂ E13.0 man in tuxedo: medium skin tone +1F935 1F3FE 200D 2642 FE0F ; fully-qualified # 🤵🏾‍♂️ E13.0 man in tuxedo: medium-dark skin tone +1F935 1F3FE 200D 2642 ; minimally-qualified # 🤵🏾‍♂ E13.0 man in tuxedo: medium-dark skin tone +1F935 1F3FF 200D 2642 FE0F ; fully-qualified # 🤵🏿‍♂️ E13.0 man in tuxedo: dark skin tone +1F935 1F3FF 200D 2642 ; minimally-qualified # 🤵🏿‍♂ E13.0 man in tuxedo: dark skin tone +1F935 200D 2640 FE0F ; fully-qualified # 🤵‍♀️ E13.0 woman in tuxedo +1F935 200D 2640 ; minimally-qualified # 🤵‍♀ E13.0 woman in tuxedo +1F935 1F3FB 200D 2640 FE0F ; fully-qualified # 🤵🏻‍♀️ E13.0 woman in tuxedo: light skin tone +1F935 1F3FB 200D 2640 ; minimally-qualified # 🤵🏻‍♀ E13.0 woman in tuxedo: light skin tone +1F935 1F3FC 200D 2640 FE0F ; fully-qualified # 🤵🏼‍♀️ E13.0 woman in tuxedo: medium-light skin tone +1F935 1F3FC 200D 2640 ; minimally-qualified # 🤵🏼‍♀ E13.0 woman in tuxedo: medium-light skin tone +1F935 1F3FD 200D 2640 FE0F ; fully-qualified # 🤵🏽‍♀️ E13.0 woman in tuxedo: medium skin tone +1F935 1F3FD 200D 2640 ; minimally-qualified # 🤵🏽‍♀ E13.0 woman in tuxedo: medium skin tone +1F935 1F3FE 200D 2640 FE0F ; fully-qualified # 🤵🏾‍♀️ E13.0 woman in tuxedo: medium-dark skin tone +1F935 1F3FE 200D 2640 ; minimally-qualified # 🤵🏾‍♀ E13.0 woman in tuxedo: medium-dark skin tone +1F935 1F3FF 200D 2640 FE0F ; fully-qualified # 🤵🏿‍♀️ E13.0 woman in tuxedo: dark skin tone +1F935 1F3FF 200D 2640 ; minimally-qualified # 🤵🏿‍♀ E13.0 woman in tuxedo: dark skin tone +1F470 ; fully-qualified # 👰 E0.6 person with veil +1F470 1F3FB ; fully-qualified # 👰🏻 E1.0 person with veil: light skin tone +1F470 1F3FC ; fully-qualified # 👰🏼 E1.0 person with veil: medium-light skin tone +1F470 1F3FD ; fully-qualified # 👰🏽 E1.0 person with veil: medium skin tone +1F470 1F3FE ; fully-qualified # 👰🏾 E1.0 person with veil: medium-dark skin tone +1F470 1F3FF ; fully-qualified # 👰🏿 E1.0 person with veil: dark skin tone +1F470 200D 2642 FE0F ; fully-qualified # 👰‍♂️ E13.0 man with veil +1F470 200D 2642 ; minimally-qualified # 👰‍♂ E13.0 man with veil +1F470 1F3FB 200D 2642 FE0F ; fully-qualified # 👰🏻‍♂️ E13.0 man with veil: light skin tone +1F470 1F3FB 200D 2642 ; minimally-qualified # 👰🏻‍♂ E13.0 man with veil: light skin tone +1F470 1F3FC 200D 2642 FE0F ; fully-qualified # 👰🏼‍♂️ E13.0 man with veil: medium-light skin tone +1F470 1F3FC 200D 2642 ; minimally-qualified # 👰🏼‍♂ E13.0 man with veil: medium-light skin tone +1F470 1F3FD 200D 2642 FE0F ; fully-qualified # 👰🏽‍♂️ E13.0 man with veil: medium skin tone +1F470 1F3FD 200D 2642 ; minimally-qualified # 👰🏽‍♂ E13.0 man with veil: medium skin tone +1F470 1F3FE 200D 2642 FE0F ; fully-qualified # 👰🏾‍♂️ E13.0 man with veil: medium-dark skin tone +1F470 1F3FE 200D 2642 ; minimally-qualified # 👰🏾‍♂ E13.0 man with veil: medium-dark skin tone +1F470 1F3FF 200D 2642 FE0F ; fully-qualified # 👰🏿‍♂️ E13.0 man with veil: dark skin tone +1F470 1F3FF 200D 2642 ; minimally-qualified # 👰🏿‍♂ E13.0 man with veil: dark skin tone +1F470 200D 2640 FE0F ; fully-qualified # 👰‍♀️ E13.0 woman with veil +1F470 200D 2640 ; minimally-qualified # 👰‍♀ E13.0 woman with veil +1F470 1F3FB 200D 2640 FE0F ; fully-qualified # 👰🏻‍♀️ E13.0 woman with veil: light skin tone +1F470 1F3FB 200D 2640 ; minimally-qualified # 👰🏻‍♀ E13.0 woman with veil: light skin tone +1F470 1F3FC 200D 2640 FE0F ; fully-qualified # 👰🏼‍♀️ E13.0 woman with veil: medium-light skin tone +1F470 1F3FC 200D 2640 ; minimally-qualified # 👰🏼‍♀ E13.0 woman with veil: medium-light skin tone +1F470 1F3FD 200D 2640 FE0F ; fully-qualified # 👰🏽‍♀️ E13.0 woman with veil: medium skin tone +1F470 1F3FD 200D 2640 ; minimally-qualified # 👰🏽‍♀ E13.0 woman with veil: medium skin tone +1F470 1F3FE 200D 2640 FE0F ; fully-qualified # 👰🏾‍♀️ E13.0 woman with veil: medium-dark skin tone +1F470 1F3FE 200D 2640 ; minimally-qualified # 👰🏾‍♀ E13.0 woman with veil: medium-dark skin tone +1F470 1F3FF 200D 2640 FE0F ; fully-qualified # 👰🏿‍♀️ E13.0 woman with veil: dark skin tone +1F470 1F3FF 200D 2640 ; minimally-qualified # 👰🏿‍♀ E13.0 woman with veil: dark skin tone +1F930 ; fully-qualified # 🤰 E3.0 pregnant woman +1F930 1F3FB ; fully-qualified # 🤰🏻 E3.0 pregnant woman: light skin tone +1F930 1F3FC ; fully-qualified # 🤰🏼 E3.0 pregnant woman: medium-light skin tone +1F930 1F3FD ; fully-qualified # 🤰🏽 E3.0 pregnant woman: medium skin tone +1F930 1F3FE ; fully-qualified # 🤰🏾 E3.0 pregnant woman: medium-dark skin tone +1F930 1F3FF ; fully-qualified # 🤰🏿 E3.0 pregnant woman: dark skin tone +1FAC3 ; fully-qualified # 🫃 E14.0 pregnant man +1FAC3 1F3FB ; fully-qualified # 🫃🏻 E14.0 pregnant man: light skin tone +1FAC3 1F3FC ; fully-qualified # 🫃🏼 E14.0 pregnant man: medium-light skin tone +1FAC3 1F3FD ; fully-qualified # 🫃🏽 E14.0 pregnant man: medium skin tone +1FAC3 1F3FE ; fully-qualified # 🫃🏾 E14.0 pregnant man: medium-dark skin tone +1FAC3 1F3FF ; fully-qualified # 🫃🏿 E14.0 pregnant man: dark skin tone +1FAC4 ; fully-qualified # 🫄 E14.0 pregnant person +1FAC4 1F3FB ; fully-qualified # 🫄🏻 E14.0 pregnant person: light skin tone +1FAC4 1F3FC ; fully-qualified # 🫄🏼 E14.0 pregnant person: medium-light skin tone +1FAC4 1F3FD ; fully-qualified # 🫄🏽 E14.0 pregnant person: medium skin tone +1FAC4 1F3FE ; fully-qualified # 🫄🏾 E14.0 pregnant person: medium-dark skin tone +1FAC4 1F3FF ; fully-qualified # 🫄🏿 E14.0 pregnant person: dark skin tone +1F931 ; fully-qualified # 🤱 E5.0 breast-feeding +1F931 1F3FB ; fully-qualified # 🤱🏻 E5.0 breast-feeding: light skin tone +1F931 1F3FC ; fully-qualified # 🤱🏼 E5.0 breast-feeding: medium-light skin tone +1F931 1F3FD ; fully-qualified # 🤱🏽 E5.0 breast-feeding: medium skin tone +1F931 1F3FE ; fully-qualified # 🤱🏾 E5.0 breast-feeding: medium-dark skin tone +1F931 1F3FF ; fully-qualified # 🤱🏿 E5.0 breast-feeding: dark skin tone +1F469 200D 1F37C ; fully-qualified # 👩‍🍼 E13.0 woman feeding baby +1F469 1F3FB 200D 1F37C ; fully-qualified # 👩🏻‍🍼 E13.0 woman feeding baby: light skin tone +1F469 1F3FC 200D 1F37C ; fully-qualified # 👩🏼‍🍼 E13.0 woman feeding baby: medium-light skin tone +1F469 1F3FD 200D 1F37C ; fully-qualified # 👩🏽‍🍼 E13.0 woman feeding baby: medium skin tone +1F469 1F3FE 200D 1F37C ; fully-qualified # 👩🏾‍🍼 E13.0 woman feeding baby: medium-dark skin tone +1F469 1F3FF 200D 1F37C ; fully-qualified # 👩🏿‍🍼 E13.0 woman feeding baby: dark skin tone +1F468 200D 1F37C ; fully-qualified # 👨‍🍼 E13.0 man feeding baby +1F468 1F3FB 200D 1F37C ; fully-qualified # 👨🏻‍🍼 E13.0 man feeding baby: light skin tone +1F468 1F3FC 200D 1F37C ; fully-qualified # 👨🏼‍🍼 E13.0 man feeding baby: medium-light skin tone +1F468 1F3FD 200D 1F37C ; fully-qualified # 👨🏽‍🍼 E13.0 man feeding baby: medium skin tone +1F468 1F3FE 200D 1F37C ; fully-qualified # 👨🏾‍🍼 E13.0 man feeding baby: medium-dark skin tone +1F468 1F3FF 200D 1F37C ; fully-qualified # 👨🏿‍🍼 E13.0 man feeding baby: dark skin tone +1F9D1 200D 1F37C ; fully-qualified # 🧑‍🍼 E13.0 person feeding baby +1F9D1 1F3FB 200D 1F37C ; fully-qualified # 🧑🏻‍🍼 E13.0 person feeding baby: light skin tone +1F9D1 1F3FC 200D 1F37C ; fully-qualified # 🧑🏼‍🍼 E13.0 person feeding baby: medium-light skin tone +1F9D1 1F3FD 200D 1F37C ; fully-qualified # 🧑🏽‍🍼 E13.0 person feeding baby: medium skin tone +1F9D1 1F3FE 200D 1F37C ; fully-qualified # 🧑🏾‍🍼 E13.0 person feeding baby: medium-dark skin tone +1F9D1 1F3FF 200D 1F37C ; fully-qualified # 🧑🏿‍🍼 E13.0 person feeding baby: dark skin tone + +# subgroup: person-fantasy +1F47C ; fully-qualified # 👼 E0.6 baby angel +1F47C 1F3FB ; fully-qualified # 👼🏻 E1.0 baby angel: light skin tone +1F47C 1F3FC ; fully-qualified # 👼🏼 E1.0 baby angel: medium-light skin tone +1F47C 1F3FD ; fully-qualified # 👼🏽 E1.0 baby angel: medium skin tone +1F47C 1F3FE ; fully-qualified # 👼🏾 E1.0 baby angel: medium-dark skin tone +1F47C 1F3FF ; fully-qualified # 👼🏿 E1.0 baby angel: dark skin tone +1F385 ; fully-qualified # 🎅 E0.6 Santa Claus +1F385 1F3FB ; fully-qualified # 🎅🏻 E1.0 Santa Claus: light skin tone +1F385 1F3FC ; fully-qualified # 🎅🏼 E1.0 Santa Claus: medium-light skin tone +1F385 1F3FD ; fully-qualified # 🎅🏽 E1.0 Santa Claus: medium skin tone +1F385 1F3FE ; fully-qualified # 🎅🏾 E1.0 Santa Claus: medium-dark skin tone +1F385 1F3FF ; fully-qualified # 🎅🏿 E1.0 Santa Claus: dark skin tone +1F936 ; fully-qualified # 🤶 E3.0 Mrs. Claus +1F936 1F3FB ; fully-qualified # 🤶🏻 E3.0 Mrs. Claus: light skin tone +1F936 1F3FC ; fully-qualified # 🤶🏼 E3.0 Mrs. Claus: medium-light skin tone +1F936 1F3FD ; fully-qualified # 🤶🏽 E3.0 Mrs. Claus: medium skin tone +1F936 1F3FE ; fully-qualified # 🤶🏾 E3.0 Mrs. Claus: medium-dark skin tone +1F936 1F3FF ; fully-qualified # 🤶🏿 E3.0 Mrs. Claus: dark skin tone +1F9D1 200D 1F384 ; fully-qualified # 🧑‍🎄 E13.0 Mx Claus +1F9D1 1F3FB 200D 1F384 ; fully-qualified # 🧑🏻‍🎄 E13.0 Mx Claus: light skin tone +1F9D1 1F3FC 200D 1F384 ; fully-qualified # 🧑🏼‍🎄 E13.0 Mx Claus: medium-light skin tone +1F9D1 1F3FD 200D 1F384 ; fully-qualified # 🧑🏽‍🎄 E13.0 Mx Claus: medium skin tone +1F9D1 1F3FE 200D 1F384 ; fully-qualified # 🧑🏾‍🎄 E13.0 Mx Claus: medium-dark skin tone +1F9D1 1F3FF 200D 1F384 ; fully-qualified # 🧑🏿‍🎄 E13.0 Mx Claus: dark skin tone +1F9B8 ; fully-qualified # 🦸 E11.0 superhero +1F9B8 1F3FB ; fully-qualified # 🦸🏻 E11.0 superhero: light skin tone +1F9B8 1F3FC ; fully-qualified # 🦸🏼 E11.0 superhero: medium-light skin tone +1F9B8 1F3FD ; fully-qualified # 🦸🏽 E11.0 superhero: medium skin tone +1F9B8 1F3FE ; fully-qualified # 🦸🏾 E11.0 superhero: medium-dark skin tone +1F9B8 1F3FF ; fully-qualified # 🦸🏿 E11.0 superhero: dark skin tone +1F9B8 200D 2642 FE0F ; fully-qualified # 🦸‍♂️ E11.0 man superhero +1F9B8 200D 2642 ; minimally-qualified # 🦸‍♂ E11.0 man superhero +1F9B8 1F3FB 200D 2642 FE0F ; fully-qualified # 🦸🏻‍♂️ E11.0 man superhero: light skin tone +1F9B8 1F3FB 200D 2642 ; minimally-qualified # 🦸🏻‍♂ E11.0 man superhero: light skin tone +1F9B8 1F3FC 200D 2642 FE0F ; fully-qualified # 🦸🏼‍♂️ E11.0 man superhero: medium-light skin tone +1F9B8 1F3FC 200D 2642 ; minimally-qualified # 🦸🏼‍♂ E11.0 man superhero: medium-light skin tone +1F9B8 1F3FD 200D 2642 FE0F ; fully-qualified # 🦸🏽‍♂️ E11.0 man superhero: medium skin tone +1F9B8 1F3FD 200D 2642 ; minimally-qualified # 🦸🏽‍♂ E11.0 man superhero: medium skin tone +1F9B8 1F3FE 200D 2642 FE0F ; fully-qualified # 🦸🏾‍♂️ E11.0 man superhero: medium-dark skin tone +1F9B8 1F3FE 200D 2642 ; minimally-qualified # 🦸🏾‍♂ E11.0 man superhero: medium-dark skin tone +1F9B8 1F3FF 200D 2642 FE0F ; fully-qualified # 🦸🏿‍♂️ E11.0 man superhero: dark skin tone +1F9B8 1F3FF 200D 2642 ; minimally-qualified # 🦸🏿‍♂ E11.0 man superhero: dark skin tone +1F9B8 200D 2640 FE0F ; fully-qualified # 🦸‍♀️ E11.0 woman superhero +1F9B8 200D 2640 ; minimally-qualified # 🦸‍♀ E11.0 woman superhero +1F9B8 1F3FB 200D 2640 FE0F ; fully-qualified # 🦸🏻‍♀️ E11.0 woman superhero: light skin tone +1F9B8 1F3FB 200D 2640 ; minimally-qualified # 🦸🏻‍♀ E11.0 woman superhero: light skin tone +1F9B8 1F3FC 200D 2640 FE0F ; fully-qualified # 🦸🏼‍♀️ E11.0 woman superhero: medium-light skin tone +1F9B8 1F3FC 200D 2640 ; minimally-qualified # 🦸🏼‍♀ E11.0 woman superhero: medium-light skin tone +1F9B8 1F3FD 200D 2640 FE0F ; fully-qualified # 🦸🏽‍♀️ E11.0 woman superhero: medium skin tone +1F9B8 1F3FD 200D 2640 ; minimally-qualified # 🦸🏽‍♀ E11.0 woman superhero: medium skin tone +1F9B8 1F3FE 200D 2640 FE0F ; fully-qualified # 🦸🏾‍♀️ E11.0 woman superhero: medium-dark skin tone +1F9B8 1F3FE 200D 2640 ; minimally-qualified # 🦸🏾‍♀ E11.0 woman superhero: medium-dark skin tone +1F9B8 1F3FF 200D 2640 FE0F ; fully-qualified # 🦸🏿‍♀️ E11.0 woman superhero: dark skin tone +1F9B8 1F3FF 200D 2640 ; minimally-qualified # 🦸🏿‍♀ E11.0 woman superhero: dark skin tone +1F9B9 ; fully-qualified # 🦹 E11.0 supervillain +1F9B9 1F3FB ; fully-qualified # 🦹🏻 E11.0 supervillain: light skin tone +1F9B9 1F3FC ; fully-qualified # 🦹🏼 E11.0 supervillain: medium-light skin tone +1F9B9 1F3FD ; fully-qualified # 🦹🏽 E11.0 supervillain: medium skin tone +1F9B9 1F3FE ; fully-qualified # 🦹🏾 E11.0 supervillain: medium-dark skin tone +1F9B9 1F3FF ; fully-qualified # 🦹🏿 E11.0 supervillain: dark skin tone +1F9B9 200D 2642 FE0F ; fully-qualified # 🦹‍♂️ E11.0 man supervillain +1F9B9 200D 2642 ; minimally-qualified # 🦹‍♂ E11.0 man supervillain +1F9B9 1F3FB 200D 2642 FE0F ; fully-qualified # 🦹🏻‍♂️ E11.0 man supervillain: light skin tone +1F9B9 1F3FB 200D 2642 ; minimally-qualified # 🦹🏻‍♂ E11.0 man supervillain: light skin tone +1F9B9 1F3FC 200D 2642 FE0F ; fully-qualified # 🦹🏼‍♂️ E11.0 man supervillain: medium-light skin tone +1F9B9 1F3FC 200D 2642 ; minimally-qualified # 🦹🏼‍♂ E11.0 man supervillain: medium-light skin tone +1F9B9 1F3FD 200D 2642 FE0F ; fully-qualified # 🦹🏽‍♂️ E11.0 man supervillain: medium skin tone +1F9B9 1F3FD 200D 2642 ; minimally-qualified # 🦹🏽‍♂ E11.0 man supervillain: medium skin tone +1F9B9 1F3FE 200D 2642 FE0F ; fully-qualified # 🦹🏾‍♂️ E11.0 man supervillain: medium-dark skin tone +1F9B9 1F3FE 200D 2642 ; minimally-qualified # 🦹🏾‍♂ E11.0 man supervillain: medium-dark skin tone +1F9B9 1F3FF 200D 2642 FE0F ; fully-qualified # 🦹🏿‍♂️ E11.0 man supervillain: dark skin tone +1F9B9 1F3FF 200D 2642 ; minimally-qualified # 🦹🏿‍♂ E11.0 man supervillain: dark skin tone +1F9B9 200D 2640 FE0F ; fully-qualified # 🦹‍♀️ E11.0 woman supervillain +1F9B9 200D 2640 ; minimally-qualified # 🦹‍♀ E11.0 woman supervillain +1F9B9 1F3FB 200D 2640 FE0F ; fully-qualified # 🦹🏻‍♀️ E11.0 woman supervillain: light skin tone +1F9B9 1F3FB 200D 2640 ; minimally-qualified # 🦹🏻‍♀ E11.0 woman supervillain: light skin tone +1F9B9 1F3FC 200D 2640 FE0F ; fully-qualified # 🦹🏼‍♀️ E11.0 woman supervillain: medium-light skin tone +1F9B9 1F3FC 200D 2640 ; minimally-qualified # 🦹🏼‍♀ E11.0 woman supervillain: medium-light skin tone +1F9B9 1F3FD 200D 2640 FE0F ; fully-qualified # 🦹🏽‍♀️ E11.0 woman supervillain: medium skin tone +1F9B9 1F3FD 200D 2640 ; minimally-qualified # 🦹🏽‍♀ E11.0 woman supervillain: medium skin tone +1F9B9 1F3FE 200D 2640 FE0F ; fully-qualified # 🦹🏾‍♀️ E11.0 woman supervillain: medium-dark skin tone +1F9B9 1F3FE 200D 2640 ; minimally-qualified # 🦹🏾‍♀ E11.0 woman supervillain: medium-dark skin tone +1F9B9 1F3FF 200D 2640 FE0F ; fully-qualified # 🦹🏿‍♀️ E11.0 woman supervillain: dark skin tone +1F9B9 1F3FF 200D 2640 ; minimally-qualified # 🦹🏿‍♀ E11.0 woman supervillain: dark skin tone +1F9D9 ; fully-qualified # 🧙 E5.0 mage +1F9D9 1F3FB ; fully-qualified # 🧙🏻 E5.0 mage: light skin tone +1F9D9 1F3FC ; fully-qualified # 🧙🏼 E5.0 mage: medium-light skin tone +1F9D9 1F3FD ; fully-qualified # 🧙🏽 E5.0 mage: medium skin tone +1F9D9 1F3FE ; fully-qualified # 🧙🏾 E5.0 mage: medium-dark skin tone +1F9D9 1F3FF ; fully-qualified # 🧙🏿 E5.0 mage: dark skin tone +1F9D9 200D 2642 FE0F ; fully-qualified # 🧙‍♂️ E5.0 man mage +1F9D9 200D 2642 ; minimally-qualified # 🧙‍♂ E5.0 man mage +1F9D9 1F3FB 200D 2642 FE0F ; fully-qualified # 🧙🏻‍♂️ E5.0 man mage: light skin tone +1F9D9 1F3FB 200D 2642 ; minimally-qualified # 🧙🏻‍♂ E5.0 man mage: light skin tone +1F9D9 1F3FC 200D 2642 FE0F ; fully-qualified # 🧙🏼‍♂️ E5.0 man mage: medium-light skin tone +1F9D9 1F3FC 200D 2642 ; minimally-qualified # 🧙🏼‍♂ E5.0 man mage: medium-light skin tone +1F9D9 1F3FD 200D 2642 FE0F ; fully-qualified # 🧙🏽‍♂️ E5.0 man mage: medium skin tone +1F9D9 1F3FD 200D 2642 ; minimally-qualified # 🧙🏽‍♂ E5.0 man mage: medium skin tone +1F9D9 1F3FE 200D 2642 FE0F ; fully-qualified # 🧙🏾‍♂️ E5.0 man mage: medium-dark skin tone +1F9D9 1F3FE 200D 2642 ; minimally-qualified # 🧙🏾‍♂ E5.0 man mage: medium-dark skin tone +1F9D9 1F3FF 200D 2642 FE0F ; fully-qualified # 🧙🏿‍♂️ E5.0 man mage: dark skin tone +1F9D9 1F3FF 200D 2642 ; minimally-qualified # 🧙🏿‍♂ E5.0 man mage: dark skin tone +1F9D9 200D 2640 FE0F ; fully-qualified # 🧙‍♀️ E5.0 woman mage +1F9D9 200D 2640 ; minimally-qualified # 🧙‍♀ E5.0 woman mage +1F9D9 1F3FB 200D 2640 FE0F ; fully-qualified # 🧙🏻‍♀️ E5.0 woman mage: light skin tone +1F9D9 1F3FB 200D 2640 ; minimally-qualified # 🧙🏻‍♀ E5.0 woman mage: light skin tone +1F9D9 1F3FC 200D 2640 FE0F ; fully-qualified # 🧙🏼‍♀️ E5.0 woman mage: medium-light skin tone +1F9D9 1F3FC 200D 2640 ; minimally-qualified # 🧙🏼‍♀ E5.0 woman mage: medium-light skin tone +1F9D9 1F3FD 200D 2640 FE0F ; fully-qualified # 🧙🏽‍♀️ E5.0 woman mage: medium skin tone +1F9D9 1F3FD 200D 2640 ; minimally-qualified # 🧙🏽‍♀ E5.0 woman mage: medium skin tone +1F9D9 1F3FE 200D 2640 FE0F ; fully-qualified # 🧙🏾‍♀️ E5.0 woman mage: medium-dark skin tone +1F9D9 1F3FE 200D 2640 ; minimally-qualified # 🧙🏾‍♀ E5.0 woman mage: medium-dark skin tone +1F9D9 1F3FF 200D 2640 FE0F ; fully-qualified # 🧙🏿‍♀️ E5.0 woman mage: dark skin tone +1F9D9 1F3FF 200D 2640 ; minimally-qualified # 🧙🏿‍♀ E5.0 woman mage: dark skin tone +1F9DA ; fully-qualified # 🧚 E5.0 fairy +1F9DA 1F3FB ; fully-qualified # 🧚🏻 E5.0 fairy: light skin tone +1F9DA 1F3FC ; fully-qualified # 🧚🏼 E5.0 fairy: medium-light skin tone +1F9DA 1F3FD ; fully-qualified # 🧚🏽 E5.0 fairy: medium skin tone +1F9DA 1F3FE ; fully-qualified # 🧚🏾 E5.0 fairy: medium-dark skin tone +1F9DA 1F3FF ; fully-qualified # 🧚🏿 E5.0 fairy: dark skin tone +1F9DA 200D 2642 FE0F ; fully-qualified # 🧚‍♂️ E5.0 man fairy +1F9DA 200D 2642 ; minimally-qualified # 🧚‍♂ E5.0 man fairy +1F9DA 1F3FB 200D 2642 FE0F ; fully-qualified # 🧚🏻‍♂️ E5.0 man fairy: light skin tone +1F9DA 1F3FB 200D 2642 ; minimally-qualified # 🧚🏻‍♂ E5.0 man fairy: light skin tone +1F9DA 1F3FC 200D 2642 FE0F ; fully-qualified # 🧚🏼‍♂️ E5.0 man fairy: medium-light skin tone +1F9DA 1F3FC 200D 2642 ; minimally-qualified # 🧚🏼‍♂ E5.0 man fairy: medium-light skin tone +1F9DA 1F3FD 200D 2642 FE0F ; fully-qualified # 🧚🏽‍♂️ E5.0 man fairy: medium skin tone +1F9DA 1F3FD 200D 2642 ; minimally-qualified # 🧚🏽‍♂ E5.0 man fairy: medium skin tone +1F9DA 1F3FE 200D 2642 FE0F ; fully-qualified # 🧚🏾‍♂️ E5.0 man fairy: medium-dark skin tone +1F9DA 1F3FE 200D 2642 ; minimally-qualified # 🧚🏾‍♂ E5.0 man fairy: medium-dark skin tone +1F9DA 1F3FF 200D 2642 FE0F ; fully-qualified # 🧚🏿‍♂️ E5.0 man fairy: dark skin tone +1F9DA 1F3FF 200D 2642 ; minimally-qualified # 🧚🏿‍♂ E5.0 man fairy: dark skin tone +1F9DA 200D 2640 FE0F ; fully-qualified # 🧚‍♀️ E5.0 woman fairy +1F9DA 200D 2640 ; minimally-qualified # 🧚‍♀ E5.0 woman fairy +1F9DA 1F3FB 200D 2640 FE0F ; fully-qualified # 🧚🏻‍♀️ E5.0 woman fairy: light skin tone +1F9DA 1F3FB 200D 2640 ; minimally-qualified # 🧚🏻‍♀ E5.0 woman fairy: light skin tone +1F9DA 1F3FC 200D 2640 FE0F ; fully-qualified # 🧚🏼‍♀️ E5.0 woman fairy: medium-light skin tone +1F9DA 1F3FC 200D 2640 ; minimally-qualified # 🧚🏼‍♀ E5.0 woman fairy: medium-light skin tone +1F9DA 1F3FD 200D 2640 FE0F ; fully-qualified # 🧚🏽‍♀️ E5.0 woman fairy: medium skin tone +1F9DA 1F3FD 200D 2640 ; minimally-qualified # 🧚🏽‍♀ E5.0 woman fairy: medium skin tone +1F9DA 1F3FE 200D 2640 FE0F ; fully-qualified # 🧚🏾‍♀️ E5.0 woman fairy: medium-dark skin tone +1F9DA 1F3FE 200D 2640 ; minimally-qualified # 🧚🏾‍♀ E5.0 woman fairy: medium-dark skin tone +1F9DA 1F3FF 200D 2640 FE0F ; fully-qualified # 🧚🏿‍♀️ E5.0 woman fairy: dark skin tone +1F9DA 1F3FF 200D 2640 ; minimally-qualified # 🧚🏿‍♀ E5.0 woman fairy: dark skin tone +1F9DB ; fully-qualified # 🧛 E5.0 vampire +1F9DB 1F3FB ; fully-qualified # 🧛🏻 E5.0 vampire: light skin tone +1F9DB 1F3FC ; fully-qualified # 🧛🏼 E5.0 vampire: medium-light skin tone +1F9DB 1F3FD ; fully-qualified # 🧛🏽 E5.0 vampire: medium skin tone +1F9DB 1F3FE ; fully-qualified # 🧛🏾 E5.0 vampire: medium-dark skin tone +1F9DB 1F3FF ; fully-qualified # 🧛🏿 E5.0 vampire: dark skin tone +1F9DB 200D 2642 FE0F ; fully-qualified # 🧛‍♂️ E5.0 man vampire +1F9DB 200D 2642 ; minimally-qualified # 🧛‍♂ E5.0 man vampire +1F9DB 1F3FB 200D 2642 FE0F ; fully-qualified # 🧛🏻‍♂️ E5.0 man vampire: light skin tone +1F9DB 1F3FB 200D 2642 ; minimally-qualified # 🧛🏻‍♂ E5.0 man vampire: light skin tone +1F9DB 1F3FC 200D 2642 FE0F ; fully-qualified # 🧛🏼‍♂️ E5.0 man vampire: medium-light skin tone +1F9DB 1F3FC 200D 2642 ; minimally-qualified # 🧛🏼‍♂ E5.0 man vampire: medium-light skin tone +1F9DB 1F3FD 200D 2642 FE0F ; fully-qualified # 🧛🏽‍♂️ E5.0 man vampire: medium skin tone +1F9DB 1F3FD 200D 2642 ; minimally-qualified # 🧛🏽‍♂ E5.0 man vampire: medium skin tone +1F9DB 1F3FE 200D 2642 FE0F ; fully-qualified # 🧛🏾‍♂️ E5.0 man vampire: medium-dark skin tone +1F9DB 1F3FE 200D 2642 ; minimally-qualified # 🧛🏾‍♂ E5.0 man vampire: medium-dark skin tone +1F9DB 1F3FF 200D 2642 FE0F ; fully-qualified # 🧛🏿‍♂️ E5.0 man vampire: dark skin tone +1F9DB 1F3FF 200D 2642 ; minimally-qualified # 🧛🏿‍♂ E5.0 man vampire: dark skin tone +1F9DB 200D 2640 FE0F ; fully-qualified # 🧛‍♀️ E5.0 woman vampire +1F9DB 200D 2640 ; minimally-qualified # 🧛‍♀ E5.0 woman vampire +1F9DB 1F3FB 200D 2640 FE0F ; fully-qualified # 🧛🏻‍♀️ E5.0 woman vampire: light skin tone +1F9DB 1F3FB 200D 2640 ; minimally-qualified # 🧛🏻‍♀ E5.0 woman vampire: light skin tone +1F9DB 1F3FC 200D 2640 FE0F ; fully-qualified # 🧛🏼‍♀️ E5.0 woman vampire: medium-light skin tone +1F9DB 1F3FC 200D 2640 ; minimally-qualified # 🧛🏼‍♀ E5.0 woman vampire: medium-light skin tone +1F9DB 1F3FD 200D 2640 FE0F ; fully-qualified # 🧛🏽‍♀️ E5.0 woman vampire: medium skin tone +1F9DB 1F3FD 200D 2640 ; minimally-qualified # 🧛🏽‍♀ E5.0 woman vampire: medium skin tone +1F9DB 1F3FE 200D 2640 FE0F ; fully-qualified # 🧛🏾‍♀️ E5.0 woman vampire: medium-dark skin tone +1F9DB 1F3FE 200D 2640 ; minimally-qualified # 🧛🏾‍♀ E5.0 woman vampire: medium-dark skin tone +1F9DB 1F3FF 200D 2640 FE0F ; fully-qualified # 🧛🏿‍♀️ E5.0 woman vampire: dark skin tone +1F9DB 1F3FF 200D 2640 ; minimally-qualified # 🧛🏿‍♀ E5.0 woman vampire: dark skin tone +1F9DC ; fully-qualified # 🧜 E5.0 merperson +1F9DC 1F3FB ; fully-qualified # 🧜🏻 E5.0 merperson: light skin tone +1F9DC 1F3FC ; fully-qualified # 🧜🏼 E5.0 merperson: medium-light skin tone +1F9DC 1F3FD ; fully-qualified # 🧜🏽 E5.0 merperson: medium skin tone +1F9DC 1F3FE ; fully-qualified # 🧜🏾 E5.0 merperson: medium-dark skin tone +1F9DC 1F3FF ; fully-qualified # 🧜🏿 E5.0 merperson: dark skin tone +1F9DC 200D 2642 FE0F ; fully-qualified # 🧜‍♂️ E5.0 merman +1F9DC 200D 2642 ; minimally-qualified # 🧜‍♂ E5.0 merman +1F9DC 1F3FB 200D 2642 FE0F ; fully-qualified # 🧜🏻‍♂️ E5.0 merman: light skin tone +1F9DC 1F3FB 200D 2642 ; minimally-qualified # 🧜🏻‍♂ E5.0 merman: light skin tone +1F9DC 1F3FC 200D 2642 FE0F ; fully-qualified # 🧜🏼‍♂️ E5.0 merman: medium-light skin tone +1F9DC 1F3FC 200D 2642 ; minimally-qualified # 🧜🏼‍♂ E5.0 merman: medium-light skin tone +1F9DC 1F3FD 200D 2642 FE0F ; fully-qualified # 🧜🏽‍♂️ E5.0 merman: medium skin tone +1F9DC 1F3FD 200D 2642 ; minimally-qualified # 🧜🏽‍♂ E5.0 merman: medium skin tone +1F9DC 1F3FE 200D 2642 FE0F ; fully-qualified # 🧜🏾‍♂️ E5.0 merman: medium-dark skin tone +1F9DC 1F3FE 200D 2642 ; minimally-qualified # 🧜🏾‍♂ E5.0 merman: medium-dark skin tone +1F9DC 1F3FF 200D 2642 FE0F ; fully-qualified # 🧜🏿‍♂️ E5.0 merman: dark skin tone +1F9DC 1F3FF 200D 2642 ; minimally-qualified # 🧜🏿‍♂ E5.0 merman: dark skin tone +1F9DC 200D 2640 FE0F ; fully-qualified # 🧜‍♀️ E5.0 mermaid +1F9DC 200D 2640 ; minimally-qualified # 🧜‍♀ E5.0 mermaid +1F9DC 1F3FB 200D 2640 FE0F ; fully-qualified # 🧜🏻‍♀️ E5.0 mermaid: light skin tone +1F9DC 1F3FB 200D 2640 ; minimally-qualified # 🧜🏻‍♀ E5.0 mermaid: light skin tone +1F9DC 1F3FC 200D 2640 FE0F ; fully-qualified # 🧜🏼‍♀️ E5.0 mermaid: medium-light skin tone +1F9DC 1F3FC 200D 2640 ; minimally-qualified # 🧜🏼‍♀ E5.0 mermaid: medium-light skin tone +1F9DC 1F3FD 200D 2640 FE0F ; fully-qualified # 🧜🏽‍♀️ E5.0 mermaid: medium skin tone +1F9DC 1F3FD 200D 2640 ; minimally-qualified # 🧜🏽‍♀ E5.0 mermaid: medium skin tone +1F9DC 1F3FE 200D 2640 FE0F ; fully-qualified # 🧜🏾‍♀️ E5.0 mermaid: medium-dark skin tone +1F9DC 1F3FE 200D 2640 ; minimally-qualified # 🧜🏾‍♀ E5.0 mermaid: medium-dark skin tone +1F9DC 1F3FF 200D 2640 FE0F ; fully-qualified # 🧜🏿‍♀️ E5.0 mermaid: dark skin tone +1F9DC 1F3FF 200D 2640 ; minimally-qualified # 🧜🏿‍♀ E5.0 mermaid: dark skin tone +1F9DD ; fully-qualified # 🧝 E5.0 elf +1F9DD 1F3FB ; fully-qualified # 🧝🏻 E5.0 elf: light skin tone +1F9DD 1F3FC ; fully-qualified # 🧝🏼 E5.0 elf: medium-light skin tone +1F9DD 1F3FD ; fully-qualified # 🧝🏽 E5.0 elf: medium skin tone +1F9DD 1F3FE ; fully-qualified # 🧝🏾 E5.0 elf: medium-dark skin tone +1F9DD 1F3FF ; fully-qualified # 🧝🏿 E5.0 elf: dark skin tone +1F9DD 200D 2642 FE0F ; fully-qualified # 🧝‍♂️ E5.0 man elf +1F9DD 200D 2642 ; minimally-qualified # 🧝‍♂ E5.0 man elf +1F9DD 1F3FB 200D 2642 FE0F ; fully-qualified # 🧝🏻‍♂️ E5.0 man elf: light skin tone +1F9DD 1F3FB 200D 2642 ; minimally-qualified # 🧝🏻‍♂ E5.0 man elf: light skin tone +1F9DD 1F3FC 200D 2642 FE0F ; fully-qualified # 🧝🏼‍♂️ E5.0 man elf: medium-light skin tone +1F9DD 1F3FC 200D 2642 ; minimally-qualified # 🧝🏼‍♂ E5.0 man elf: medium-light skin tone +1F9DD 1F3FD 200D 2642 FE0F ; fully-qualified # 🧝🏽‍♂️ E5.0 man elf: medium skin tone +1F9DD 1F3FD 200D 2642 ; minimally-qualified # 🧝🏽‍♂ E5.0 man elf: medium skin tone +1F9DD 1F3FE 200D 2642 FE0F ; fully-qualified # 🧝🏾‍♂️ E5.0 man elf: medium-dark skin tone +1F9DD 1F3FE 200D 2642 ; minimally-qualified # 🧝🏾‍♂ E5.0 man elf: medium-dark skin tone +1F9DD 1F3FF 200D 2642 FE0F ; fully-qualified # 🧝🏿‍♂️ E5.0 man elf: dark skin tone +1F9DD 1F3FF 200D 2642 ; minimally-qualified # 🧝🏿‍♂ E5.0 man elf: dark skin tone +1F9DD 200D 2640 FE0F ; fully-qualified # 🧝‍♀️ E5.0 woman elf +1F9DD 200D 2640 ; minimally-qualified # 🧝‍♀ E5.0 woman elf +1F9DD 1F3FB 200D 2640 FE0F ; fully-qualified # 🧝🏻‍♀️ E5.0 woman elf: light skin tone +1F9DD 1F3FB 200D 2640 ; minimally-qualified # 🧝🏻‍♀ E5.0 woman elf: light skin tone +1F9DD 1F3FC 200D 2640 FE0F ; fully-qualified # 🧝🏼‍♀️ E5.0 woman elf: medium-light skin tone +1F9DD 1F3FC 200D 2640 ; minimally-qualified # 🧝🏼‍♀ E5.0 woman elf: medium-light skin tone +1F9DD 1F3FD 200D 2640 FE0F ; fully-qualified # 🧝🏽‍♀️ E5.0 woman elf: medium skin tone +1F9DD 1F3FD 200D 2640 ; minimally-qualified # 🧝🏽‍♀ E5.0 woman elf: medium skin tone +1F9DD 1F3FE 200D 2640 FE0F ; fully-qualified # 🧝🏾‍♀️ E5.0 woman elf: medium-dark skin tone +1F9DD 1F3FE 200D 2640 ; minimally-qualified # 🧝🏾‍♀ E5.0 woman elf: medium-dark skin tone +1F9DD 1F3FF 200D 2640 FE0F ; fully-qualified # 🧝🏿‍♀️ E5.0 woman elf: dark skin tone +1F9DD 1F3FF 200D 2640 ; minimally-qualified # 🧝🏿‍♀ E5.0 woman elf: dark skin tone +1F9DE ; fully-qualified # 🧞 E5.0 genie +1F9DE 200D 2642 FE0F ; fully-qualified # 🧞‍♂️ E5.0 man genie +1F9DE 200D 2642 ; minimally-qualified # 🧞‍♂ E5.0 man genie +1F9DE 200D 2640 FE0F ; fully-qualified # 🧞‍♀️ E5.0 woman genie +1F9DE 200D 2640 ; minimally-qualified # 🧞‍♀ E5.0 woman genie +1F9DF ; fully-qualified # 🧟 E5.0 zombie +1F9DF 200D 2642 FE0F ; fully-qualified # 🧟‍♂️ E5.0 man zombie +1F9DF 200D 2642 ; minimally-qualified # 🧟‍♂ E5.0 man zombie +1F9DF 200D 2640 FE0F ; fully-qualified # 🧟‍♀️ E5.0 woman zombie +1F9DF 200D 2640 ; minimally-qualified # 🧟‍♀ E5.0 woman zombie +1F9CC ; fully-qualified # 🧌 E14.0 troll + +# subgroup: person-activity +1F486 ; fully-qualified # 💆 E0.6 person getting massage +1F486 1F3FB ; fully-qualified # 💆🏻 E1.0 person getting massage: light skin tone +1F486 1F3FC ; fully-qualified # 💆🏼 E1.0 person getting massage: medium-light skin tone +1F486 1F3FD ; fully-qualified # 💆🏽 E1.0 person getting massage: medium skin tone +1F486 1F3FE ; fully-qualified # 💆🏾 E1.0 person getting massage: medium-dark skin tone +1F486 1F3FF ; fully-qualified # 💆🏿 E1.0 person getting massage: dark skin tone +1F486 200D 2642 FE0F ; fully-qualified # 💆‍♂️ E4.0 man getting massage +1F486 200D 2642 ; minimally-qualified # 💆‍♂ E4.0 man getting massage +1F486 1F3FB 200D 2642 FE0F ; fully-qualified # 💆🏻‍♂️ E4.0 man getting massage: light skin tone +1F486 1F3FB 200D 2642 ; minimally-qualified # 💆🏻‍♂ E4.0 man getting massage: light skin tone +1F486 1F3FC 200D 2642 FE0F ; fully-qualified # 💆🏼‍♂️ E4.0 man getting massage: medium-light skin tone +1F486 1F3FC 200D 2642 ; minimally-qualified # 💆🏼‍♂ E4.0 man getting massage: medium-light skin tone +1F486 1F3FD 200D 2642 FE0F ; fully-qualified # 💆🏽‍♂️ E4.0 man getting massage: medium skin tone +1F486 1F3FD 200D 2642 ; minimally-qualified # 💆🏽‍♂ E4.0 man getting massage: medium skin tone +1F486 1F3FE 200D 2642 FE0F ; fully-qualified # 💆🏾‍♂️ E4.0 man getting massage: medium-dark skin tone +1F486 1F3FE 200D 2642 ; minimally-qualified # 💆🏾‍♂ E4.0 man getting massage: medium-dark skin tone +1F486 1F3FF 200D 2642 FE0F ; fully-qualified # 💆🏿‍♂️ E4.0 man getting massage: dark skin tone +1F486 1F3FF 200D 2642 ; minimally-qualified # 💆🏿‍♂ E4.0 man getting massage: dark skin tone +1F486 200D 2640 FE0F ; fully-qualified # 💆‍♀️ E4.0 woman getting massage +1F486 200D 2640 ; minimally-qualified # 💆‍♀ E4.0 woman getting massage +1F486 1F3FB 200D 2640 FE0F ; fully-qualified # 💆🏻‍♀️ E4.0 woman getting massage: light skin tone +1F486 1F3FB 200D 2640 ; minimally-qualified # 💆🏻‍♀ E4.0 woman getting massage: light skin tone +1F486 1F3FC 200D 2640 FE0F ; fully-qualified # 💆🏼‍♀️ E4.0 woman getting massage: medium-light skin tone +1F486 1F3FC 200D 2640 ; minimally-qualified # 💆🏼‍♀ E4.0 woman getting massage: medium-light skin tone +1F486 1F3FD 200D 2640 FE0F ; fully-qualified # 💆🏽‍♀️ E4.0 woman getting massage: medium skin tone +1F486 1F3FD 200D 2640 ; minimally-qualified # 💆🏽‍♀ E4.0 woman getting massage: medium skin tone +1F486 1F3FE 200D 2640 FE0F ; fully-qualified # 💆🏾‍♀️ E4.0 woman getting massage: medium-dark skin tone +1F486 1F3FE 200D 2640 ; minimally-qualified # 💆🏾‍♀ E4.0 woman getting massage: medium-dark skin tone +1F486 1F3FF 200D 2640 FE0F ; fully-qualified # 💆🏿‍♀️ E4.0 woman getting massage: dark skin tone +1F486 1F3FF 200D 2640 ; minimally-qualified # 💆🏿‍♀ E4.0 woman getting massage: dark skin tone +1F487 ; fully-qualified # 💇 E0.6 person getting haircut +1F487 1F3FB ; fully-qualified # 💇🏻 E1.0 person getting haircut: light skin tone +1F487 1F3FC ; fully-qualified # 💇🏼 E1.0 person getting haircut: medium-light skin tone +1F487 1F3FD ; fully-qualified # 💇🏽 E1.0 person getting haircut: medium skin tone +1F487 1F3FE ; fully-qualified # 💇🏾 E1.0 person getting haircut: medium-dark skin tone +1F487 1F3FF ; fully-qualified # 💇🏿 E1.0 person getting haircut: dark skin tone +1F487 200D 2642 FE0F ; fully-qualified # 💇‍♂️ E4.0 man getting haircut +1F487 200D 2642 ; minimally-qualified # 💇‍♂ E4.0 man getting haircut +1F487 1F3FB 200D 2642 FE0F ; fully-qualified # 💇🏻‍♂️ E4.0 man getting haircut: light skin tone +1F487 1F3FB 200D 2642 ; minimally-qualified # 💇🏻‍♂ E4.0 man getting haircut: light skin tone +1F487 1F3FC 200D 2642 FE0F ; fully-qualified # 💇🏼‍♂️ E4.0 man getting haircut: medium-light skin tone +1F487 1F3FC 200D 2642 ; minimally-qualified # 💇🏼‍♂ E4.0 man getting haircut: medium-light skin tone +1F487 1F3FD 200D 2642 FE0F ; fully-qualified # 💇🏽‍♂️ E4.0 man getting haircut: medium skin tone +1F487 1F3FD 200D 2642 ; minimally-qualified # 💇🏽‍♂ E4.0 man getting haircut: medium skin tone +1F487 1F3FE 200D 2642 FE0F ; fully-qualified # 💇🏾‍♂️ E4.0 man getting haircut: medium-dark skin tone +1F487 1F3FE 200D 2642 ; minimally-qualified # 💇🏾‍♂ E4.0 man getting haircut: medium-dark skin tone +1F487 1F3FF 200D 2642 FE0F ; fully-qualified # 💇🏿‍♂️ E4.0 man getting haircut: dark skin tone +1F487 1F3FF 200D 2642 ; minimally-qualified # 💇🏿‍♂ E4.0 man getting haircut: dark skin tone +1F487 200D 2640 FE0F ; fully-qualified # 💇‍♀️ E4.0 woman getting haircut +1F487 200D 2640 ; minimally-qualified # 💇‍♀ E4.0 woman getting haircut +1F487 1F3FB 200D 2640 FE0F ; fully-qualified # 💇🏻‍♀️ E4.0 woman getting haircut: light skin tone +1F487 1F3FB 200D 2640 ; minimally-qualified # 💇🏻‍♀ E4.0 woman getting haircut: light skin tone +1F487 1F3FC 200D 2640 FE0F ; fully-qualified # 💇🏼‍♀️ E4.0 woman getting haircut: medium-light skin tone +1F487 1F3FC 200D 2640 ; minimally-qualified # 💇🏼‍♀ E4.0 woman getting haircut: medium-light skin tone +1F487 1F3FD 200D 2640 FE0F ; fully-qualified # 💇🏽‍♀️ E4.0 woman getting haircut: medium skin tone +1F487 1F3FD 200D 2640 ; minimally-qualified # 💇🏽‍♀ E4.0 woman getting haircut: medium skin tone +1F487 1F3FE 200D 2640 FE0F ; fully-qualified # 💇🏾‍♀️ E4.0 woman getting haircut: medium-dark skin tone +1F487 1F3FE 200D 2640 ; minimally-qualified # 💇🏾‍♀ E4.0 woman getting haircut: medium-dark skin tone +1F487 1F3FF 200D 2640 FE0F ; fully-qualified # 💇🏿‍♀️ E4.0 woman getting haircut: dark skin tone +1F487 1F3FF 200D 2640 ; minimally-qualified # 💇🏿‍♀ E4.0 woman getting haircut: dark skin tone +1F6B6 ; fully-qualified # 🚶 E0.6 person walking +1F6B6 1F3FB ; fully-qualified # 🚶🏻 E1.0 person walking: light skin tone +1F6B6 1F3FC ; fully-qualified # 🚶🏼 E1.0 person walking: medium-light skin tone +1F6B6 1F3FD ; fully-qualified # 🚶🏽 E1.0 person walking: medium skin tone +1F6B6 1F3FE ; fully-qualified # 🚶🏾 E1.0 person walking: medium-dark skin tone +1F6B6 1F3FF ; fully-qualified # 🚶🏿 E1.0 person walking: dark skin tone +1F6B6 200D 2642 FE0F ; fully-qualified # 🚶‍♂️ E4.0 man walking +1F6B6 200D 2642 ; minimally-qualified # 🚶‍♂ E4.0 man walking +1F6B6 1F3FB 200D 2642 FE0F ; fully-qualified # 🚶🏻‍♂️ E4.0 man walking: light skin tone +1F6B6 1F3FB 200D 2642 ; minimally-qualified # 🚶🏻‍♂ E4.0 man walking: light skin tone +1F6B6 1F3FC 200D 2642 FE0F ; fully-qualified # 🚶🏼‍♂️ E4.0 man walking: medium-light skin tone +1F6B6 1F3FC 200D 2642 ; minimally-qualified # 🚶🏼‍♂ E4.0 man walking: medium-light skin tone +1F6B6 1F3FD 200D 2642 FE0F ; fully-qualified # 🚶🏽‍♂️ E4.0 man walking: medium skin tone +1F6B6 1F3FD 200D 2642 ; minimally-qualified # 🚶🏽‍♂ E4.0 man walking: medium skin tone +1F6B6 1F3FE 200D 2642 FE0F ; fully-qualified # 🚶🏾‍♂️ E4.0 man walking: medium-dark skin tone +1F6B6 1F3FE 200D 2642 ; minimally-qualified # 🚶🏾‍♂ E4.0 man walking: medium-dark skin tone +1F6B6 1F3FF 200D 2642 FE0F ; fully-qualified # 🚶🏿‍♂️ E4.0 man walking: dark skin tone +1F6B6 1F3FF 200D 2642 ; minimally-qualified # 🚶🏿‍♂ E4.0 man walking: dark skin tone +1F6B6 200D 2640 FE0F ; fully-qualified # 🚶‍♀️ E4.0 woman walking +1F6B6 200D 2640 ; minimally-qualified # 🚶‍♀ E4.0 woman walking +1F6B6 1F3FB 200D 2640 FE0F ; fully-qualified # 🚶🏻‍♀️ E4.0 woman walking: light skin tone +1F6B6 1F3FB 200D 2640 ; minimally-qualified # 🚶🏻‍♀ E4.0 woman walking: light skin tone +1F6B6 1F3FC 200D 2640 FE0F ; fully-qualified # 🚶🏼‍♀️ E4.0 woman walking: medium-light skin tone +1F6B6 1F3FC 200D 2640 ; minimally-qualified # 🚶🏼‍♀ E4.0 woman walking: medium-light skin tone +1F6B6 1F3FD 200D 2640 FE0F ; fully-qualified # 🚶🏽‍♀️ E4.0 woman walking: medium skin tone +1F6B6 1F3FD 200D 2640 ; minimally-qualified # 🚶🏽‍♀ E4.0 woman walking: medium skin tone +1F6B6 1F3FE 200D 2640 FE0F ; fully-qualified # 🚶🏾‍♀️ E4.0 woman walking: medium-dark skin tone +1F6B6 1F3FE 200D 2640 ; minimally-qualified # 🚶🏾‍♀ E4.0 woman walking: medium-dark skin tone +1F6B6 1F3FF 200D 2640 FE0F ; fully-qualified # 🚶🏿‍♀️ E4.0 woman walking: dark skin tone +1F6B6 1F3FF 200D 2640 ; minimally-qualified # 🚶🏿‍♀ E4.0 woman walking: dark skin tone +1F6B6 200D 27A1 FE0F ; fully-qualified # 🚶‍➡️ E15.1 person walking facing right +1F6B6 200D 27A1 ; minimally-qualified # 🚶‍➡ E15.1 person walking facing right +1F6B6 1F3FB 200D 27A1 FE0F ; fully-qualified # 🚶🏻‍➡️ E15.1 person walking facing right: light skin tone +1F6B6 1F3FB 200D 27A1 ; minimally-qualified # 🚶🏻‍➡ E15.1 person walking facing right: light skin tone +1F6B6 1F3FC 200D 27A1 FE0F ; fully-qualified # 🚶🏼‍➡️ E15.1 person walking facing right: medium-light skin tone +1F6B6 1F3FC 200D 27A1 ; minimally-qualified # 🚶🏼‍➡ E15.1 person walking facing right: medium-light skin tone +1F6B6 1F3FD 200D 27A1 FE0F ; fully-qualified # 🚶🏽‍➡️ E15.1 person walking facing right: medium skin tone +1F6B6 1F3FD 200D 27A1 ; minimally-qualified # 🚶🏽‍➡ E15.1 person walking facing right: medium skin tone +1F6B6 1F3FE 200D 27A1 FE0F ; fully-qualified # 🚶🏾‍➡️ E15.1 person walking facing right: medium-dark skin tone +1F6B6 1F3FE 200D 27A1 ; minimally-qualified # 🚶🏾‍➡ E15.1 person walking facing right: medium-dark skin tone +1F6B6 1F3FF 200D 27A1 FE0F ; fully-qualified # 🚶🏿‍➡️ E15.1 person walking facing right: dark skin tone +1F6B6 1F3FF 200D 27A1 ; minimally-qualified # 🚶🏿‍➡ E15.1 person walking facing right: dark skin tone +1F6B6 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶‍♀️‍➡️ E15.1 woman walking facing right +1F6B6 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🚶‍♀‍➡️ E15.1 woman walking facing right +1F6B6 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🚶‍♀️‍➡ E15.1 woman walking facing right +1F6B6 200D 2640 200D 27A1 ; minimally-qualified # 🚶‍♀‍➡ E15.1 woman walking facing right +1F6B6 1F3FB 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶🏻‍♀️‍➡️ E15.1 woman walking facing right: light skin tone +1F6B6 1F3FB 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🚶🏻‍♀‍➡️ E15.1 woman walking facing right: light skin tone +1F6B6 1F3FB 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🚶🏻‍♀️‍➡ E15.1 woman walking facing right: light skin tone +1F6B6 1F3FB 200D 2640 200D 27A1 ; minimally-qualified # 🚶🏻‍♀‍➡ E15.1 woman walking facing right: light skin tone +1F6B6 1F3FC 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶🏼‍♀️‍➡️ E15.1 woman walking facing right: medium-light skin tone +1F6B6 1F3FC 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🚶🏼‍♀‍➡️ E15.1 woman walking facing right: medium-light skin tone +1F6B6 1F3FC 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🚶🏼‍♀️‍➡ E15.1 woman walking facing right: medium-light skin tone +1F6B6 1F3FC 200D 2640 200D 27A1 ; minimally-qualified # 🚶🏼‍♀‍➡ E15.1 woman walking facing right: medium-light skin tone +1F6B6 1F3FD 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶🏽‍♀️‍➡️ E15.1 woman walking facing right: medium skin tone +1F6B6 1F3FD 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🚶🏽‍♀‍➡️ E15.1 woman walking facing right: medium skin tone +1F6B6 1F3FD 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🚶🏽‍♀️‍➡ E15.1 woman walking facing right: medium skin tone +1F6B6 1F3FD 200D 2640 200D 27A1 ; minimally-qualified # 🚶🏽‍♀‍➡ E15.1 woman walking facing right: medium skin tone +1F6B6 1F3FE 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶🏾‍♀️‍➡️ E15.1 woman walking facing right: medium-dark skin tone +1F6B6 1F3FE 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🚶🏾‍♀‍➡️ E15.1 woman walking facing right: medium-dark skin tone +1F6B6 1F3FE 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🚶🏾‍♀️‍➡ E15.1 woman walking facing right: medium-dark skin tone +1F6B6 1F3FE 200D 2640 200D 27A1 ; minimally-qualified # 🚶🏾‍♀‍➡ E15.1 woman walking facing right: medium-dark skin tone +1F6B6 1F3FF 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶🏿‍♀️‍➡️ E15.1 woman walking facing right: dark skin tone +1F6B6 1F3FF 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🚶🏿‍♀‍➡️ E15.1 woman walking facing right: dark skin tone +1F6B6 1F3FF 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🚶🏿‍♀️‍➡ E15.1 woman walking facing right: dark skin tone +1F6B6 1F3FF 200D 2640 200D 27A1 ; minimally-qualified # 🚶🏿‍♀‍➡ E15.1 woman walking facing right: dark skin tone +1F6B6 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶‍♂️‍➡️ E15.1 man walking facing right +1F6B6 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🚶‍♂‍➡️ E15.1 man walking facing right +1F6B6 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🚶‍♂️‍➡ E15.1 man walking facing right +1F6B6 200D 2642 200D 27A1 ; minimally-qualified # 🚶‍♂‍➡ E15.1 man walking facing right +1F6B6 1F3FB 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶🏻‍♂️‍➡️ E15.1 man walking facing right: light skin tone +1F6B6 1F3FB 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🚶🏻‍♂‍➡️ E15.1 man walking facing right: light skin tone +1F6B6 1F3FB 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🚶🏻‍♂️‍➡ E15.1 man walking facing right: light skin tone +1F6B6 1F3FB 200D 2642 200D 27A1 ; minimally-qualified # 🚶🏻‍♂‍➡ E15.1 man walking facing right: light skin tone +1F6B6 1F3FC 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶🏼‍♂️‍➡️ E15.1 man walking facing right: medium-light skin tone +1F6B6 1F3FC 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🚶🏼‍♂‍➡️ E15.1 man walking facing right: medium-light skin tone +1F6B6 1F3FC 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🚶🏼‍♂️‍➡ E15.1 man walking facing right: medium-light skin tone +1F6B6 1F3FC 200D 2642 200D 27A1 ; minimally-qualified # 🚶🏼‍♂‍➡ E15.1 man walking facing right: medium-light skin tone +1F6B6 1F3FD 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶🏽‍♂️‍➡️ E15.1 man walking facing right: medium skin tone +1F6B6 1F3FD 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🚶🏽‍♂‍➡️ E15.1 man walking facing right: medium skin tone +1F6B6 1F3FD 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🚶🏽‍♂️‍➡ E15.1 man walking facing right: medium skin tone +1F6B6 1F3FD 200D 2642 200D 27A1 ; minimally-qualified # 🚶🏽‍♂‍➡ E15.1 man walking facing right: medium skin tone +1F6B6 1F3FE 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶🏾‍♂️‍➡️ E15.1 man walking facing right: medium-dark skin tone +1F6B6 1F3FE 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🚶🏾‍♂‍➡️ E15.1 man walking facing right: medium-dark skin tone +1F6B6 1F3FE 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🚶🏾‍♂️‍➡ E15.1 man walking facing right: medium-dark skin tone +1F6B6 1F3FE 200D 2642 200D 27A1 ; minimally-qualified # 🚶🏾‍♂‍➡ E15.1 man walking facing right: medium-dark skin tone +1F6B6 1F3FF 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🚶🏿‍♂️‍➡️ E15.1 man walking facing right: dark skin tone +1F6B6 1F3FF 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🚶🏿‍♂‍➡️ E15.1 man walking facing right: dark skin tone +1F6B6 1F3FF 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🚶🏿‍♂️‍➡ E15.1 man walking facing right: dark skin tone +1F6B6 1F3FF 200D 2642 200D 27A1 ; minimally-qualified # 🚶🏿‍♂‍➡ E15.1 man walking facing right: dark skin tone +1F9CD ; fully-qualified # 🧍 E12.0 person standing +1F9CD 1F3FB ; fully-qualified # 🧍🏻 E12.0 person standing: light skin tone +1F9CD 1F3FC ; fully-qualified # 🧍🏼 E12.0 person standing: medium-light skin tone +1F9CD 1F3FD ; fully-qualified # 🧍🏽 E12.0 person standing: medium skin tone +1F9CD 1F3FE ; fully-qualified # 🧍🏾 E12.0 person standing: medium-dark skin tone +1F9CD 1F3FF ; fully-qualified # 🧍🏿 E12.0 person standing: dark skin tone +1F9CD 200D 2642 FE0F ; fully-qualified # 🧍‍♂️ E12.0 man standing +1F9CD 200D 2642 ; minimally-qualified # 🧍‍♂ E12.0 man standing +1F9CD 1F3FB 200D 2642 FE0F ; fully-qualified # 🧍🏻‍♂️ E12.0 man standing: light skin tone +1F9CD 1F3FB 200D 2642 ; minimally-qualified # 🧍🏻‍♂ E12.0 man standing: light skin tone +1F9CD 1F3FC 200D 2642 FE0F ; fully-qualified # 🧍🏼‍♂️ E12.0 man standing: medium-light skin tone +1F9CD 1F3FC 200D 2642 ; minimally-qualified # 🧍🏼‍♂ E12.0 man standing: medium-light skin tone +1F9CD 1F3FD 200D 2642 FE0F ; fully-qualified # 🧍🏽‍♂️ E12.0 man standing: medium skin tone +1F9CD 1F3FD 200D 2642 ; minimally-qualified # 🧍🏽‍♂ E12.0 man standing: medium skin tone +1F9CD 1F3FE 200D 2642 FE0F ; fully-qualified # 🧍🏾‍♂️ E12.0 man standing: medium-dark skin tone +1F9CD 1F3FE 200D 2642 ; minimally-qualified # 🧍🏾‍♂ E12.0 man standing: medium-dark skin tone +1F9CD 1F3FF 200D 2642 FE0F ; fully-qualified # 🧍🏿‍♂️ E12.0 man standing: dark skin tone +1F9CD 1F3FF 200D 2642 ; minimally-qualified # 🧍🏿‍♂ E12.0 man standing: dark skin tone +1F9CD 200D 2640 FE0F ; fully-qualified # 🧍‍♀️ E12.0 woman standing +1F9CD 200D 2640 ; minimally-qualified # 🧍‍♀ E12.0 woman standing +1F9CD 1F3FB 200D 2640 FE0F ; fully-qualified # 🧍🏻‍♀️ E12.0 woman standing: light skin tone +1F9CD 1F3FB 200D 2640 ; minimally-qualified # 🧍🏻‍♀ E12.0 woman standing: light skin tone +1F9CD 1F3FC 200D 2640 FE0F ; fully-qualified # 🧍🏼‍♀️ E12.0 woman standing: medium-light skin tone +1F9CD 1F3FC 200D 2640 ; minimally-qualified # 🧍🏼‍♀ E12.0 woman standing: medium-light skin tone +1F9CD 1F3FD 200D 2640 FE0F ; fully-qualified # 🧍🏽‍♀️ E12.0 woman standing: medium skin tone +1F9CD 1F3FD 200D 2640 ; minimally-qualified # 🧍🏽‍♀ E12.0 woman standing: medium skin tone +1F9CD 1F3FE 200D 2640 FE0F ; fully-qualified # 🧍🏾‍♀️ E12.0 woman standing: medium-dark skin tone +1F9CD 1F3FE 200D 2640 ; minimally-qualified # 🧍🏾‍♀ E12.0 woman standing: medium-dark skin tone +1F9CD 1F3FF 200D 2640 FE0F ; fully-qualified # 🧍🏿‍♀️ E12.0 woman standing: dark skin tone +1F9CD 1F3FF 200D 2640 ; minimally-qualified # 🧍🏿‍♀ E12.0 woman standing: dark skin tone +1F9CE ; fully-qualified # 🧎 E12.0 person kneeling +1F9CE 1F3FB ; fully-qualified # 🧎🏻 E12.0 person kneeling: light skin tone +1F9CE 1F3FC ; fully-qualified # 🧎🏼 E12.0 person kneeling: medium-light skin tone +1F9CE 1F3FD ; fully-qualified # 🧎🏽 E12.0 person kneeling: medium skin tone +1F9CE 1F3FE ; fully-qualified # 🧎🏾 E12.0 person kneeling: medium-dark skin tone +1F9CE 1F3FF ; fully-qualified # 🧎🏿 E12.0 person kneeling: dark skin tone +1F9CE 200D 2642 FE0F ; fully-qualified # 🧎‍♂️ E12.0 man kneeling +1F9CE 200D 2642 ; minimally-qualified # 🧎‍♂ E12.0 man kneeling +1F9CE 1F3FB 200D 2642 FE0F ; fully-qualified # 🧎🏻‍♂️ E12.0 man kneeling: light skin tone +1F9CE 1F3FB 200D 2642 ; minimally-qualified # 🧎🏻‍♂ E12.0 man kneeling: light skin tone +1F9CE 1F3FC 200D 2642 FE0F ; fully-qualified # 🧎🏼‍♂️ E12.0 man kneeling: medium-light skin tone +1F9CE 1F3FC 200D 2642 ; minimally-qualified # 🧎🏼‍♂ E12.0 man kneeling: medium-light skin tone +1F9CE 1F3FD 200D 2642 FE0F ; fully-qualified # 🧎🏽‍♂️ E12.0 man kneeling: medium skin tone +1F9CE 1F3FD 200D 2642 ; minimally-qualified # 🧎🏽‍♂ E12.0 man kneeling: medium skin tone +1F9CE 1F3FE 200D 2642 FE0F ; fully-qualified # 🧎🏾‍♂️ E12.0 man kneeling: medium-dark skin tone +1F9CE 1F3FE 200D 2642 ; minimally-qualified # 🧎🏾‍♂ E12.0 man kneeling: medium-dark skin tone +1F9CE 1F3FF 200D 2642 FE0F ; fully-qualified # 🧎🏿‍♂️ E12.0 man kneeling: dark skin tone +1F9CE 1F3FF 200D 2642 ; minimally-qualified # 🧎🏿‍♂ E12.0 man kneeling: dark skin tone +1F9CE 200D 2640 FE0F ; fully-qualified # 🧎‍♀️ E12.0 woman kneeling +1F9CE 200D 2640 ; minimally-qualified # 🧎‍♀ E12.0 woman kneeling +1F9CE 1F3FB 200D 2640 FE0F ; fully-qualified # 🧎🏻‍♀️ E12.0 woman kneeling: light skin tone +1F9CE 1F3FB 200D 2640 ; minimally-qualified # 🧎🏻‍♀ E12.0 woman kneeling: light skin tone +1F9CE 1F3FC 200D 2640 FE0F ; fully-qualified # 🧎🏼‍♀️ E12.0 woman kneeling: medium-light skin tone +1F9CE 1F3FC 200D 2640 ; minimally-qualified # 🧎🏼‍♀ E12.0 woman kneeling: medium-light skin tone +1F9CE 1F3FD 200D 2640 FE0F ; fully-qualified # 🧎🏽‍♀️ E12.0 woman kneeling: medium skin tone +1F9CE 1F3FD 200D 2640 ; minimally-qualified # 🧎🏽‍♀ E12.0 woman kneeling: medium skin tone +1F9CE 1F3FE 200D 2640 FE0F ; fully-qualified # 🧎🏾‍♀️ E12.0 woman kneeling: medium-dark skin tone +1F9CE 1F3FE 200D 2640 ; minimally-qualified # 🧎🏾‍♀ E12.0 woman kneeling: medium-dark skin tone +1F9CE 1F3FF 200D 2640 FE0F ; fully-qualified # 🧎🏿‍♀️ E12.0 woman kneeling: dark skin tone +1F9CE 1F3FF 200D 2640 ; minimally-qualified # 🧎🏿‍♀ E12.0 woman kneeling: dark skin tone +1F9CE 200D 27A1 FE0F ; fully-qualified # 🧎‍➡️ E15.1 person kneeling facing right +1F9CE 200D 27A1 ; minimally-qualified # 🧎‍➡ E15.1 person kneeling facing right +1F9CE 1F3FB 200D 27A1 FE0F ; fully-qualified # 🧎🏻‍➡️ E15.1 person kneeling facing right: light skin tone +1F9CE 1F3FB 200D 27A1 ; minimally-qualified # 🧎🏻‍➡ E15.1 person kneeling facing right: light skin tone +1F9CE 1F3FC 200D 27A1 FE0F ; fully-qualified # 🧎🏼‍➡️ E15.1 person kneeling facing right: medium-light skin tone +1F9CE 1F3FC 200D 27A1 ; minimally-qualified # 🧎🏼‍➡ E15.1 person kneeling facing right: medium-light skin tone +1F9CE 1F3FD 200D 27A1 FE0F ; fully-qualified # 🧎🏽‍➡️ E15.1 person kneeling facing right: medium skin tone +1F9CE 1F3FD 200D 27A1 ; minimally-qualified # 🧎🏽‍➡ E15.1 person kneeling facing right: medium skin tone +1F9CE 1F3FE 200D 27A1 FE0F ; fully-qualified # 🧎🏾‍➡️ E15.1 person kneeling facing right: medium-dark skin tone +1F9CE 1F3FE 200D 27A1 ; minimally-qualified # 🧎🏾‍➡ E15.1 person kneeling facing right: medium-dark skin tone +1F9CE 1F3FF 200D 27A1 FE0F ; fully-qualified # 🧎🏿‍➡️ E15.1 person kneeling facing right: dark skin tone +1F9CE 1F3FF 200D 27A1 ; minimally-qualified # 🧎🏿‍➡ E15.1 person kneeling facing right: dark skin tone +1F9CE 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎‍♀️‍➡️ E15.1 woman kneeling facing right +1F9CE 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🧎‍♀‍➡️ E15.1 woman kneeling facing right +1F9CE 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🧎‍♀️‍➡ E15.1 woman kneeling facing right +1F9CE 200D 2640 200D 27A1 ; minimally-qualified # 🧎‍♀‍➡ E15.1 woman kneeling facing right +1F9CE 1F3FB 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎🏻‍♀️‍➡️ E15.1 woman kneeling facing right: light skin tone +1F9CE 1F3FB 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🧎🏻‍♀‍➡️ E15.1 woman kneeling facing right: light skin tone +1F9CE 1F3FB 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🧎🏻‍♀️‍➡ E15.1 woman kneeling facing right: light skin tone +1F9CE 1F3FB 200D 2640 200D 27A1 ; minimally-qualified # 🧎🏻‍♀‍➡ E15.1 woman kneeling facing right: light skin tone +1F9CE 1F3FC 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎🏼‍♀️‍➡️ E15.1 woman kneeling facing right: medium-light skin tone +1F9CE 1F3FC 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🧎🏼‍♀‍➡️ E15.1 woman kneeling facing right: medium-light skin tone +1F9CE 1F3FC 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🧎🏼‍♀️‍➡ E15.1 woman kneeling facing right: medium-light skin tone +1F9CE 1F3FC 200D 2640 200D 27A1 ; minimally-qualified # 🧎🏼‍♀‍➡ E15.1 woman kneeling facing right: medium-light skin tone +1F9CE 1F3FD 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎🏽‍♀️‍➡️ E15.1 woman kneeling facing right: medium skin tone +1F9CE 1F3FD 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🧎🏽‍♀‍➡️ E15.1 woman kneeling facing right: medium skin tone +1F9CE 1F3FD 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🧎🏽‍♀️‍➡ E15.1 woman kneeling facing right: medium skin tone +1F9CE 1F3FD 200D 2640 200D 27A1 ; minimally-qualified # 🧎🏽‍♀‍➡ E15.1 woman kneeling facing right: medium skin tone +1F9CE 1F3FE 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎🏾‍♀️‍➡️ E15.1 woman kneeling facing right: medium-dark skin tone +1F9CE 1F3FE 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🧎🏾‍♀‍➡️ E15.1 woman kneeling facing right: medium-dark skin tone +1F9CE 1F3FE 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🧎🏾‍♀️‍➡ E15.1 woman kneeling facing right: medium-dark skin tone +1F9CE 1F3FE 200D 2640 200D 27A1 ; minimally-qualified # 🧎🏾‍♀‍➡ E15.1 woman kneeling facing right: medium-dark skin tone +1F9CE 1F3FF 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎🏿‍♀️‍➡️ E15.1 woman kneeling facing right: dark skin tone +1F9CE 1F3FF 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🧎🏿‍♀‍➡️ E15.1 woman kneeling facing right: dark skin tone +1F9CE 1F3FF 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🧎🏿‍♀️‍➡ E15.1 woman kneeling facing right: dark skin tone +1F9CE 1F3FF 200D 2640 200D 27A1 ; minimally-qualified # 🧎🏿‍♀‍➡ E15.1 woman kneeling facing right: dark skin tone +1F9CE 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎‍♂️‍➡️ E15.1 man kneeling facing right +1F9CE 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🧎‍♂‍➡️ E15.1 man kneeling facing right +1F9CE 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🧎‍♂️‍➡ E15.1 man kneeling facing right +1F9CE 200D 2642 200D 27A1 ; minimally-qualified # 🧎‍♂‍➡ E15.1 man kneeling facing right +1F9CE 1F3FB 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎🏻‍♂️‍➡️ E15.1 man kneeling facing right: light skin tone +1F9CE 1F3FB 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🧎🏻‍♂‍➡️ E15.1 man kneeling facing right: light skin tone +1F9CE 1F3FB 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🧎🏻‍♂️‍➡ E15.1 man kneeling facing right: light skin tone +1F9CE 1F3FB 200D 2642 200D 27A1 ; minimally-qualified # 🧎🏻‍♂‍➡ E15.1 man kneeling facing right: light skin tone +1F9CE 1F3FC 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎🏼‍♂️‍➡️ E15.1 man kneeling facing right: medium-light skin tone +1F9CE 1F3FC 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🧎🏼‍♂‍➡️ E15.1 man kneeling facing right: medium-light skin tone +1F9CE 1F3FC 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🧎🏼‍♂️‍➡ E15.1 man kneeling facing right: medium-light skin tone +1F9CE 1F3FC 200D 2642 200D 27A1 ; minimally-qualified # 🧎🏼‍♂‍➡ E15.1 man kneeling facing right: medium-light skin tone +1F9CE 1F3FD 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎🏽‍♂️‍➡️ E15.1 man kneeling facing right: medium skin tone +1F9CE 1F3FD 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🧎🏽‍♂‍➡️ E15.1 man kneeling facing right: medium skin tone +1F9CE 1F3FD 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🧎🏽‍♂️‍➡ E15.1 man kneeling facing right: medium skin tone +1F9CE 1F3FD 200D 2642 200D 27A1 ; minimally-qualified # 🧎🏽‍♂‍➡ E15.1 man kneeling facing right: medium skin tone +1F9CE 1F3FE 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎🏾‍♂️‍➡️ E15.1 man kneeling facing right: medium-dark skin tone +1F9CE 1F3FE 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🧎🏾‍♂‍➡️ E15.1 man kneeling facing right: medium-dark skin tone +1F9CE 1F3FE 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🧎🏾‍♂️‍➡ E15.1 man kneeling facing right: medium-dark skin tone +1F9CE 1F3FE 200D 2642 200D 27A1 ; minimally-qualified # 🧎🏾‍♂‍➡ E15.1 man kneeling facing right: medium-dark skin tone +1F9CE 1F3FF 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🧎🏿‍♂️‍➡️ E15.1 man kneeling facing right: dark skin tone +1F9CE 1F3FF 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🧎🏿‍♂‍➡️ E15.1 man kneeling facing right: dark skin tone +1F9CE 1F3FF 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🧎🏿‍♂️‍➡ E15.1 man kneeling facing right: dark skin tone +1F9CE 1F3FF 200D 2642 200D 27A1 ; minimally-qualified # 🧎🏿‍♂‍➡ E15.1 man kneeling facing right: dark skin tone +1F9D1 200D 1F9AF ; fully-qualified # 🧑‍🦯 E12.1 person with white cane +1F9D1 1F3FB 200D 1F9AF ; fully-qualified # 🧑🏻‍🦯 E12.1 person with white cane: light skin tone +1F9D1 1F3FC 200D 1F9AF ; fully-qualified # 🧑🏼‍🦯 E12.1 person with white cane: medium-light skin tone +1F9D1 1F3FD 200D 1F9AF ; fully-qualified # 🧑🏽‍🦯 E12.1 person with white cane: medium skin tone +1F9D1 1F3FE 200D 1F9AF ; fully-qualified # 🧑🏾‍🦯 E12.1 person with white cane: medium-dark skin tone +1F9D1 1F3FF 200D 1F9AF ; fully-qualified # 🧑🏿‍🦯 E12.1 person with white cane: dark skin tone +1F9D1 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 🧑‍🦯‍➡️ E15.1 person with white cane facing right +1F9D1 200D 1F9AF 200D 27A1 ; minimally-qualified # 🧑‍🦯‍➡ E15.1 person with white cane facing right +1F9D1 1F3FB 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 🧑🏻‍🦯‍➡️ E15.1 person with white cane facing right: light skin tone +1F9D1 1F3FB 200D 1F9AF 200D 27A1 ; minimally-qualified # 🧑🏻‍🦯‍➡ E15.1 person with white cane facing right: light skin tone +1F9D1 1F3FC 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 🧑🏼‍🦯‍➡️ E15.1 person with white cane facing right: medium-light skin tone +1F9D1 1F3FC 200D 1F9AF 200D 27A1 ; minimally-qualified # 🧑🏼‍🦯‍➡ E15.1 person with white cane facing right: medium-light skin tone +1F9D1 1F3FD 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 🧑🏽‍🦯‍➡️ E15.1 person with white cane facing right: medium skin tone +1F9D1 1F3FD 200D 1F9AF 200D 27A1 ; minimally-qualified # 🧑🏽‍🦯‍➡ E15.1 person with white cane facing right: medium skin tone +1F9D1 1F3FE 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 🧑🏾‍🦯‍➡️ E15.1 person with white cane facing right: medium-dark skin tone +1F9D1 1F3FE 200D 1F9AF 200D 27A1 ; minimally-qualified # 🧑🏾‍🦯‍➡ E15.1 person with white cane facing right: medium-dark skin tone +1F9D1 1F3FF 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 🧑🏿‍🦯‍➡️ E15.1 person with white cane facing right: dark skin tone +1F9D1 1F3FF 200D 1F9AF 200D 27A1 ; minimally-qualified # 🧑🏿‍🦯‍➡ E15.1 person with white cane facing right: dark skin tone +1F468 200D 1F9AF ; fully-qualified # 👨‍🦯 E12.0 man with white cane +1F468 1F3FB 200D 1F9AF ; fully-qualified # 👨🏻‍🦯 E12.0 man with white cane: light skin tone +1F468 1F3FC 200D 1F9AF ; fully-qualified # 👨🏼‍🦯 E12.0 man with white cane: medium-light skin tone +1F468 1F3FD 200D 1F9AF ; fully-qualified # 👨🏽‍🦯 E12.0 man with white cane: medium skin tone +1F468 1F3FE 200D 1F9AF ; fully-qualified # 👨🏾‍🦯 E12.0 man with white cane: medium-dark skin tone +1F468 1F3FF 200D 1F9AF ; fully-qualified # 👨🏿‍🦯 E12.0 man with white cane: dark skin tone +1F468 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👨‍🦯‍➡️ E15.1 man with white cane facing right +1F468 200D 1F9AF 200D 27A1 ; minimally-qualified # 👨‍🦯‍➡ E15.1 man with white cane facing right +1F468 1F3FB 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👨🏻‍🦯‍➡️ E15.1 man with white cane facing right: light skin tone +1F468 1F3FB 200D 1F9AF 200D 27A1 ; minimally-qualified # 👨🏻‍🦯‍➡ E15.1 man with white cane facing right: light skin tone +1F468 1F3FC 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👨🏼‍🦯‍➡️ E15.1 man with white cane facing right: medium-light skin tone +1F468 1F3FC 200D 1F9AF 200D 27A1 ; minimally-qualified # 👨🏼‍🦯‍➡ E15.1 man with white cane facing right: medium-light skin tone +1F468 1F3FD 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👨🏽‍🦯‍➡️ E15.1 man with white cane facing right: medium skin tone +1F468 1F3FD 200D 1F9AF 200D 27A1 ; minimally-qualified # 👨🏽‍🦯‍➡ E15.1 man with white cane facing right: medium skin tone +1F468 1F3FE 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👨🏾‍🦯‍➡️ E15.1 man with white cane facing right: medium-dark skin tone +1F468 1F3FE 200D 1F9AF 200D 27A1 ; minimally-qualified # 👨🏾‍🦯‍➡ E15.1 man with white cane facing right: medium-dark skin tone +1F468 1F3FF 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👨🏿‍🦯‍➡️ E15.1 man with white cane facing right: dark skin tone +1F468 1F3FF 200D 1F9AF 200D 27A1 ; minimally-qualified # 👨🏿‍🦯‍➡ E15.1 man with white cane facing right: dark skin tone +1F469 200D 1F9AF ; fully-qualified # 👩‍🦯 E12.0 woman with white cane +1F469 1F3FB 200D 1F9AF ; fully-qualified # 👩🏻‍🦯 E12.0 woman with white cane: light skin tone +1F469 1F3FC 200D 1F9AF ; fully-qualified # 👩🏼‍🦯 E12.0 woman with white cane: medium-light skin tone +1F469 1F3FD 200D 1F9AF ; fully-qualified # 👩🏽‍🦯 E12.0 woman with white cane: medium skin tone +1F469 1F3FE 200D 1F9AF ; fully-qualified # 👩🏾‍🦯 E12.0 woman with white cane: medium-dark skin tone +1F469 1F3FF 200D 1F9AF ; fully-qualified # 👩🏿‍🦯 E12.0 woman with white cane: dark skin tone +1F469 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👩‍🦯‍➡️ E15.1 woman with white cane facing right +1F469 200D 1F9AF 200D 27A1 ; minimally-qualified # 👩‍🦯‍➡ E15.1 woman with white cane facing right +1F469 1F3FB 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👩🏻‍🦯‍➡️ E15.1 woman with white cane facing right: light skin tone +1F469 1F3FB 200D 1F9AF 200D 27A1 ; minimally-qualified # 👩🏻‍🦯‍➡ E15.1 woman with white cane facing right: light skin tone +1F469 1F3FC 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👩🏼‍🦯‍➡️ E15.1 woman with white cane facing right: medium-light skin tone +1F469 1F3FC 200D 1F9AF 200D 27A1 ; minimally-qualified # 👩🏼‍🦯‍➡ E15.1 woman with white cane facing right: medium-light skin tone +1F469 1F3FD 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👩🏽‍🦯‍➡️ E15.1 woman with white cane facing right: medium skin tone +1F469 1F3FD 200D 1F9AF 200D 27A1 ; minimally-qualified # 👩🏽‍🦯‍➡ E15.1 woman with white cane facing right: medium skin tone +1F469 1F3FE 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👩🏾‍🦯‍➡️ E15.1 woman with white cane facing right: medium-dark skin tone +1F469 1F3FE 200D 1F9AF 200D 27A1 ; minimally-qualified # 👩🏾‍🦯‍➡ E15.1 woman with white cane facing right: medium-dark skin tone +1F469 1F3FF 200D 1F9AF 200D 27A1 FE0F ; fully-qualified # 👩🏿‍🦯‍➡️ E15.1 woman with white cane facing right: dark skin tone +1F469 1F3FF 200D 1F9AF 200D 27A1 ; minimally-qualified # 👩🏿‍🦯‍➡ E15.1 woman with white cane facing right: dark skin tone +1F9D1 200D 1F9BC ; fully-qualified # 🧑‍🦼 E12.1 person in motorized wheelchair +1F9D1 1F3FB 200D 1F9BC ; fully-qualified # 🧑🏻‍🦼 E12.1 person in motorized wheelchair: light skin tone +1F9D1 1F3FC 200D 1F9BC ; fully-qualified # 🧑🏼‍🦼 E12.1 person in motorized wheelchair: medium-light skin tone +1F9D1 1F3FD 200D 1F9BC ; fully-qualified # 🧑🏽‍🦼 E12.1 person in motorized wheelchair: medium skin tone +1F9D1 1F3FE 200D 1F9BC ; fully-qualified # 🧑🏾‍🦼 E12.1 person in motorized wheelchair: medium-dark skin tone +1F9D1 1F3FF 200D 1F9BC ; fully-qualified # 🧑🏿‍🦼 E12.1 person in motorized wheelchair: dark skin tone +1F9D1 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 🧑‍🦼‍➡️ E15.1 person in motorized wheelchair facing right +1F9D1 200D 1F9BC 200D 27A1 ; minimally-qualified # 🧑‍🦼‍➡ E15.1 person in motorized wheelchair facing right +1F9D1 1F3FB 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 🧑🏻‍🦼‍➡️ E15.1 person in motorized wheelchair facing right: light skin tone +1F9D1 1F3FB 200D 1F9BC 200D 27A1 ; minimally-qualified # 🧑🏻‍🦼‍➡ E15.1 person in motorized wheelchair facing right: light skin tone +1F9D1 1F3FC 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 🧑🏼‍🦼‍➡️ E15.1 person in motorized wheelchair facing right: medium-light skin tone +1F9D1 1F3FC 200D 1F9BC 200D 27A1 ; minimally-qualified # 🧑🏼‍🦼‍➡ E15.1 person in motorized wheelchair facing right: medium-light skin tone +1F9D1 1F3FD 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 🧑🏽‍🦼‍➡️ E15.1 person in motorized wheelchair facing right: medium skin tone +1F9D1 1F3FD 200D 1F9BC 200D 27A1 ; minimally-qualified # 🧑🏽‍🦼‍➡ E15.1 person in motorized wheelchair facing right: medium skin tone +1F9D1 1F3FE 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 🧑🏾‍🦼‍➡️ E15.1 person in motorized wheelchair facing right: medium-dark skin tone +1F9D1 1F3FE 200D 1F9BC 200D 27A1 ; minimally-qualified # 🧑🏾‍🦼‍➡ E15.1 person in motorized wheelchair facing right: medium-dark skin tone +1F9D1 1F3FF 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 🧑🏿‍🦼‍➡️ E15.1 person in motorized wheelchair facing right: dark skin tone +1F9D1 1F3FF 200D 1F9BC 200D 27A1 ; minimally-qualified # 🧑🏿‍🦼‍➡ E15.1 person in motorized wheelchair facing right: dark skin tone +1F468 200D 1F9BC ; fully-qualified # 👨‍🦼 E12.0 man in motorized wheelchair +1F468 1F3FB 200D 1F9BC ; fully-qualified # 👨🏻‍🦼 E12.0 man in motorized wheelchair: light skin tone +1F468 1F3FC 200D 1F9BC ; fully-qualified # 👨🏼‍🦼 E12.0 man in motorized wheelchair: medium-light skin tone +1F468 1F3FD 200D 1F9BC ; fully-qualified # 👨🏽‍🦼 E12.0 man in motorized wheelchair: medium skin tone +1F468 1F3FE 200D 1F9BC ; fully-qualified # 👨🏾‍🦼 E12.0 man in motorized wheelchair: medium-dark skin tone +1F468 1F3FF 200D 1F9BC ; fully-qualified # 👨🏿‍🦼 E12.0 man in motorized wheelchair: dark skin tone +1F468 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👨‍🦼‍➡️ E15.1 man in motorized wheelchair facing right +1F468 200D 1F9BC 200D 27A1 ; minimally-qualified # 👨‍🦼‍➡ E15.1 man in motorized wheelchair facing right +1F468 1F3FB 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👨🏻‍🦼‍➡️ E15.1 man in motorized wheelchair facing right: light skin tone +1F468 1F3FB 200D 1F9BC 200D 27A1 ; minimally-qualified # 👨🏻‍🦼‍➡ E15.1 man in motorized wheelchair facing right: light skin tone +1F468 1F3FC 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👨🏼‍🦼‍➡️ E15.1 man in motorized wheelchair facing right: medium-light skin tone +1F468 1F3FC 200D 1F9BC 200D 27A1 ; minimally-qualified # 👨🏼‍🦼‍➡ E15.1 man in motorized wheelchair facing right: medium-light skin tone +1F468 1F3FD 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👨🏽‍🦼‍➡️ E15.1 man in motorized wheelchair facing right: medium skin tone +1F468 1F3FD 200D 1F9BC 200D 27A1 ; minimally-qualified # 👨🏽‍🦼‍➡ E15.1 man in motorized wheelchair facing right: medium skin tone +1F468 1F3FE 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👨🏾‍🦼‍➡️ E15.1 man in motorized wheelchair facing right: medium-dark skin tone +1F468 1F3FE 200D 1F9BC 200D 27A1 ; minimally-qualified # 👨🏾‍🦼‍➡ E15.1 man in motorized wheelchair facing right: medium-dark skin tone +1F468 1F3FF 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👨🏿‍🦼‍➡️ E15.1 man in motorized wheelchair facing right: dark skin tone +1F468 1F3FF 200D 1F9BC 200D 27A1 ; minimally-qualified # 👨🏿‍🦼‍➡ E15.1 man in motorized wheelchair facing right: dark skin tone +1F469 200D 1F9BC ; fully-qualified # 👩‍🦼 E12.0 woman in motorized wheelchair +1F469 1F3FB 200D 1F9BC ; fully-qualified # 👩🏻‍🦼 E12.0 woman in motorized wheelchair: light skin tone +1F469 1F3FC 200D 1F9BC ; fully-qualified # 👩🏼‍🦼 E12.0 woman in motorized wheelchair: medium-light skin tone +1F469 1F3FD 200D 1F9BC ; fully-qualified # 👩🏽‍🦼 E12.0 woman in motorized wheelchair: medium skin tone +1F469 1F3FE 200D 1F9BC ; fully-qualified # 👩🏾‍🦼 E12.0 woman in motorized wheelchair: medium-dark skin tone +1F469 1F3FF 200D 1F9BC ; fully-qualified # 👩🏿‍🦼 E12.0 woman in motorized wheelchair: dark skin tone +1F469 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👩‍🦼‍➡️ E15.1 woman in motorized wheelchair facing right +1F469 200D 1F9BC 200D 27A1 ; minimally-qualified # 👩‍🦼‍➡ E15.1 woman in motorized wheelchair facing right +1F469 1F3FB 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👩🏻‍🦼‍➡️ E15.1 woman in motorized wheelchair facing right: light skin tone +1F469 1F3FB 200D 1F9BC 200D 27A1 ; minimally-qualified # 👩🏻‍🦼‍➡ E15.1 woman in motorized wheelchair facing right: light skin tone +1F469 1F3FC 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👩🏼‍🦼‍➡️ E15.1 woman in motorized wheelchair facing right: medium-light skin tone +1F469 1F3FC 200D 1F9BC 200D 27A1 ; minimally-qualified # 👩🏼‍🦼‍➡ E15.1 woman in motorized wheelchair facing right: medium-light skin tone +1F469 1F3FD 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👩🏽‍🦼‍➡️ E15.1 woman in motorized wheelchair facing right: medium skin tone +1F469 1F3FD 200D 1F9BC 200D 27A1 ; minimally-qualified # 👩🏽‍🦼‍➡ E15.1 woman in motorized wheelchair facing right: medium skin tone +1F469 1F3FE 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👩🏾‍🦼‍➡️ E15.1 woman in motorized wheelchair facing right: medium-dark skin tone +1F469 1F3FE 200D 1F9BC 200D 27A1 ; minimally-qualified # 👩🏾‍🦼‍➡ E15.1 woman in motorized wheelchair facing right: medium-dark skin tone +1F469 1F3FF 200D 1F9BC 200D 27A1 FE0F ; fully-qualified # 👩🏿‍🦼‍➡️ E15.1 woman in motorized wheelchair facing right: dark skin tone +1F469 1F3FF 200D 1F9BC 200D 27A1 ; minimally-qualified # 👩🏿‍🦼‍➡ E15.1 woman in motorized wheelchair facing right: dark skin tone +1F9D1 200D 1F9BD ; fully-qualified # 🧑‍🦽 E12.1 person in manual wheelchair +1F9D1 1F3FB 200D 1F9BD ; fully-qualified # 🧑🏻‍🦽 E12.1 person in manual wheelchair: light skin tone +1F9D1 1F3FC 200D 1F9BD ; fully-qualified # 🧑🏼‍🦽 E12.1 person in manual wheelchair: medium-light skin tone +1F9D1 1F3FD 200D 1F9BD ; fully-qualified # 🧑🏽‍🦽 E12.1 person in manual wheelchair: medium skin tone +1F9D1 1F3FE 200D 1F9BD ; fully-qualified # 🧑🏾‍🦽 E12.1 person in manual wheelchair: medium-dark skin tone +1F9D1 1F3FF 200D 1F9BD ; fully-qualified # 🧑🏿‍🦽 E12.1 person in manual wheelchair: dark skin tone +1F9D1 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 🧑‍🦽‍➡️ E15.1 person in manual wheelchair facing right +1F9D1 200D 1F9BD 200D 27A1 ; minimally-qualified # 🧑‍🦽‍➡ E15.1 person in manual wheelchair facing right +1F9D1 1F3FB 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 🧑🏻‍🦽‍➡️ E15.1 person in manual wheelchair facing right: light skin tone +1F9D1 1F3FB 200D 1F9BD 200D 27A1 ; minimally-qualified # 🧑🏻‍🦽‍➡ E15.1 person in manual wheelchair facing right: light skin tone +1F9D1 1F3FC 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 🧑🏼‍🦽‍➡️ E15.1 person in manual wheelchair facing right: medium-light skin tone +1F9D1 1F3FC 200D 1F9BD 200D 27A1 ; minimally-qualified # 🧑🏼‍🦽‍➡ E15.1 person in manual wheelchair facing right: medium-light skin tone +1F9D1 1F3FD 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 🧑🏽‍🦽‍➡️ E15.1 person in manual wheelchair facing right: medium skin tone +1F9D1 1F3FD 200D 1F9BD 200D 27A1 ; minimally-qualified # 🧑🏽‍🦽‍➡ E15.1 person in manual wheelchair facing right: medium skin tone +1F9D1 1F3FE 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 🧑🏾‍🦽‍➡️ E15.1 person in manual wheelchair facing right: medium-dark skin tone +1F9D1 1F3FE 200D 1F9BD 200D 27A1 ; minimally-qualified # 🧑🏾‍🦽‍➡ E15.1 person in manual wheelchair facing right: medium-dark skin tone +1F9D1 1F3FF 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 🧑🏿‍🦽‍➡️ E15.1 person in manual wheelchair facing right: dark skin tone +1F9D1 1F3FF 200D 1F9BD 200D 27A1 ; minimally-qualified # 🧑🏿‍🦽‍➡ E15.1 person in manual wheelchair facing right: dark skin tone +1F468 200D 1F9BD ; fully-qualified # 👨‍🦽 E12.0 man in manual wheelchair +1F468 1F3FB 200D 1F9BD ; fully-qualified # 👨🏻‍🦽 E12.0 man in manual wheelchair: light skin tone +1F468 1F3FC 200D 1F9BD ; fully-qualified # 👨🏼‍🦽 E12.0 man in manual wheelchair: medium-light skin tone +1F468 1F3FD 200D 1F9BD ; fully-qualified # 👨🏽‍🦽 E12.0 man in manual wheelchair: medium skin tone +1F468 1F3FE 200D 1F9BD ; fully-qualified # 👨🏾‍🦽 E12.0 man in manual wheelchair: medium-dark skin tone +1F468 1F3FF 200D 1F9BD ; fully-qualified # 👨🏿‍🦽 E12.0 man in manual wheelchair: dark skin tone +1F468 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👨‍🦽‍➡️ E15.1 man in manual wheelchair facing right +1F468 200D 1F9BD 200D 27A1 ; minimally-qualified # 👨‍🦽‍➡ E15.1 man in manual wheelchair facing right +1F468 1F3FB 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👨🏻‍🦽‍➡️ E15.1 man in manual wheelchair facing right: light skin tone +1F468 1F3FB 200D 1F9BD 200D 27A1 ; minimally-qualified # 👨🏻‍🦽‍➡ E15.1 man in manual wheelchair facing right: light skin tone +1F468 1F3FC 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👨🏼‍🦽‍➡️ E15.1 man in manual wheelchair facing right: medium-light skin tone +1F468 1F3FC 200D 1F9BD 200D 27A1 ; minimally-qualified # 👨🏼‍🦽‍➡ E15.1 man in manual wheelchair facing right: medium-light skin tone +1F468 1F3FD 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👨🏽‍🦽‍➡️ E15.1 man in manual wheelchair facing right: medium skin tone +1F468 1F3FD 200D 1F9BD 200D 27A1 ; minimally-qualified # 👨🏽‍🦽‍➡ E15.1 man in manual wheelchair facing right: medium skin tone +1F468 1F3FE 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👨🏾‍🦽‍➡️ E15.1 man in manual wheelchair facing right: medium-dark skin tone +1F468 1F3FE 200D 1F9BD 200D 27A1 ; minimally-qualified # 👨🏾‍🦽‍➡ E15.1 man in manual wheelchair facing right: medium-dark skin tone +1F468 1F3FF 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👨🏿‍🦽‍➡️ E15.1 man in manual wheelchair facing right: dark skin tone +1F468 1F3FF 200D 1F9BD 200D 27A1 ; minimally-qualified # 👨🏿‍🦽‍➡ E15.1 man in manual wheelchair facing right: dark skin tone +1F469 200D 1F9BD ; fully-qualified # 👩‍🦽 E12.0 woman in manual wheelchair +1F469 1F3FB 200D 1F9BD ; fully-qualified # 👩🏻‍🦽 E12.0 woman in manual wheelchair: light skin tone +1F469 1F3FC 200D 1F9BD ; fully-qualified # 👩🏼‍🦽 E12.0 woman in manual wheelchair: medium-light skin tone +1F469 1F3FD 200D 1F9BD ; fully-qualified # 👩🏽‍🦽 E12.0 woman in manual wheelchair: medium skin tone +1F469 1F3FE 200D 1F9BD ; fully-qualified # 👩🏾‍🦽 E12.0 woman in manual wheelchair: medium-dark skin tone +1F469 1F3FF 200D 1F9BD ; fully-qualified # 👩🏿‍🦽 E12.0 woman in manual wheelchair: dark skin tone +1F469 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👩‍🦽‍➡️ E15.1 woman in manual wheelchair facing right +1F469 200D 1F9BD 200D 27A1 ; minimally-qualified # 👩‍🦽‍➡ E15.1 woman in manual wheelchair facing right +1F469 1F3FB 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👩🏻‍🦽‍➡️ E15.1 woman in manual wheelchair facing right: light skin tone +1F469 1F3FB 200D 1F9BD 200D 27A1 ; minimally-qualified # 👩🏻‍🦽‍➡ E15.1 woman in manual wheelchair facing right: light skin tone +1F469 1F3FC 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👩🏼‍🦽‍➡️ E15.1 woman in manual wheelchair facing right: medium-light skin tone +1F469 1F3FC 200D 1F9BD 200D 27A1 ; minimally-qualified # 👩🏼‍🦽‍➡ E15.1 woman in manual wheelchair facing right: medium-light skin tone +1F469 1F3FD 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👩🏽‍🦽‍➡️ E15.1 woman in manual wheelchair facing right: medium skin tone +1F469 1F3FD 200D 1F9BD 200D 27A1 ; minimally-qualified # 👩🏽‍🦽‍➡ E15.1 woman in manual wheelchair facing right: medium skin tone +1F469 1F3FE 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👩🏾‍🦽‍➡️ E15.1 woman in manual wheelchair facing right: medium-dark skin tone +1F469 1F3FE 200D 1F9BD 200D 27A1 ; minimally-qualified # 👩🏾‍🦽‍➡ E15.1 woman in manual wheelchair facing right: medium-dark skin tone +1F469 1F3FF 200D 1F9BD 200D 27A1 FE0F ; fully-qualified # 👩🏿‍🦽‍➡️ E15.1 woman in manual wheelchair facing right: dark skin tone +1F469 1F3FF 200D 1F9BD 200D 27A1 ; minimally-qualified # 👩🏿‍🦽‍➡ E15.1 woman in manual wheelchair facing right: dark skin tone +1F3C3 ; fully-qualified # 🏃 E0.6 person running +1F3C3 1F3FB ; fully-qualified # 🏃🏻 E1.0 person running: light skin tone +1F3C3 1F3FC ; fully-qualified # 🏃🏼 E1.0 person running: medium-light skin tone +1F3C3 1F3FD ; fully-qualified # 🏃🏽 E1.0 person running: medium skin tone +1F3C3 1F3FE ; fully-qualified # 🏃🏾 E1.0 person running: medium-dark skin tone +1F3C3 1F3FF ; fully-qualified # 🏃🏿 E1.0 person running: dark skin tone +1F3C3 200D 2642 FE0F ; fully-qualified # 🏃‍♂️ E4.0 man running +1F3C3 200D 2642 ; minimally-qualified # 🏃‍♂ E4.0 man running +1F3C3 1F3FB 200D 2642 FE0F ; fully-qualified # 🏃🏻‍♂️ E4.0 man running: light skin tone +1F3C3 1F3FB 200D 2642 ; minimally-qualified # 🏃🏻‍♂ E4.0 man running: light skin tone +1F3C3 1F3FC 200D 2642 FE0F ; fully-qualified # 🏃🏼‍♂️ E4.0 man running: medium-light skin tone +1F3C3 1F3FC 200D 2642 ; minimally-qualified # 🏃🏼‍♂ E4.0 man running: medium-light skin tone +1F3C3 1F3FD 200D 2642 FE0F ; fully-qualified # 🏃🏽‍♂️ E4.0 man running: medium skin tone +1F3C3 1F3FD 200D 2642 ; minimally-qualified # 🏃🏽‍♂ E4.0 man running: medium skin tone +1F3C3 1F3FE 200D 2642 FE0F ; fully-qualified # 🏃🏾‍♂️ E4.0 man running: medium-dark skin tone +1F3C3 1F3FE 200D 2642 ; minimally-qualified # 🏃🏾‍♂ E4.0 man running: medium-dark skin tone +1F3C3 1F3FF 200D 2642 FE0F ; fully-qualified # 🏃🏿‍♂️ E4.0 man running: dark skin tone +1F3C3 1F3FF 200D 2642 ; minimally-qualified # 🏃🏿‍♂ E4.0 man running: dark skin tone +1F3C3 200D 2640 FE0F ; fully-qualified # 🏃‍♀️ E4.0 woman running +1F3C3 200D 2640 ; minimally-qualified # 🏃‍♀ E4.0 woman running +1F3C3 1F3FB 200D 2640 FE0F ; fully-qualified # 🏃🏻‍♀️ E4.0 woman running: light skin tone +1F3C3 1F3FB 200D 2640 ; minimally-qualified # 🏃🏻‍♀ E4.0 woman running: light skin tone +1F3C3 1F3FC 200D 2640 FE0F ; fully-qualified # 🏃🏼‍♀️ E4.0 woman running: medium-light skin tone +1F3C3 1F3FC 200D 2640 ; minimally-qualified # 🏃🏼‍♀ E4.0 woman running: medium-light skin tone +1F3C3 1F3FD 200D 2640 FE0F ; fully-qualified # 🏃🏽‍♀️ E4.0 woman running: medium skin tone +1F3C3 1F3FD 200D 2640 ; minimally-qualified # 🏃🏽‍♀ E4.0 woman running: medium skin tone +1F3C3 1F3FE 200D 2640 FE0F ; fully-qualified # 🏃🏾‍♀️ E4.0 woman running: medium-dark skin tone +1F3C3 1F3FE 200D 2640 ; minimally-qualified # 🏃🏾‍♀ E4.0 woman running: medium-dark skin tone +1F3C3 1F3FF 200D 2640 FE0F ; fully-qualified # 🏃🏿‍♀️ E4.0 woman running: dark skin tone +1F3C3 1F3FF 200D 2640 ; minimally-qualified # 🏃🏿‍♀ E4.0 woman running: dark skin tone +1F3C3 200D 27A1 FE0F ; fully-qualified # 🏃‍➡️ E15.1 person running facing right +1F3C3 200D 27A1 ; minimally-qualified # 🏃‍➡ E15.1 person running facing right +1F3C3 1F3FB 200D 27A1 FE0F ; fully-qualified # 🏃🏻‍➡️ E15.1 person running facing right: light skin tone +1F3C3 1F3FB 200D 27A1 ; minimally-qualified # 🏃🏻‍➡ E15.1 person running facing right: light skin tone +1F3C3 1F3FC 200D 27A1 FE0F ; fully-qualified # 🏃🏼‍➡️ E15.1 person running facing right: medium-light skin tone +1F3C3 1F3FC 200D 27A1 ; minimally-qualified # 🏃🏼‍➡ E15.1 person running facing right: medium-light skin tone +1F3C3 1F3FD 200D 27A1 FE0F ; fully-qualified # 🏃🏽‍➡️ E15.1 person running facing right: medium skin tone +1F3C3 1F3FD 200D 27A1 ; minimally-qualified # 🏃🏽‍➡ E15.1 person running facing right: medium skin tone +1F3C3 1F3FE 200D 27A1 FE0F ; fully-qualified # 🏃🏾‍➡️ E15.1 person running facing right: medium-dark skin tone +1F3C3 1F3FE 200D 27A1 ; minimally-qualified # 🏃🏾‍➡ E15.1 person running facing right: medium-dark skin tone +1F3C3 1F3FF 200D 27A1 FE0F ; fully-qualified # 🏃🏿‍➡️ E15.1 person running facing right: dark skin tone +1F3C3 1F3FF 200D 27A1 ; minimally-qualified # 🏃🏿‍➡ E15.1 person running facing right: dark skin tone +1F3C3 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃‍♀️‍➡️ E15.1 woman running facing right +1F3C3 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🏃‍♀‍➡️ E15.1 woman running facing right +1F3C3 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🏃‍♀️‍➡ E15.1 woman running facing right +1F3C3 200D 2640 200D 27A1 ; minimally-qualified # 🏃‍♀‍➡ E15.1 woman running facing right +1F3C3 1F3FB 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃🏻‍♀️‍➡️ E15.1 woman running facing right: light skin tone +1F3C3 1F3FB 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🏃🏻‍♀‍➡️ E15.1 woman running facing right: light skin tone +1F3C3 1F3FB 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🏃🏻‍♀️‍➡ E15.1 woman running facing right: light skin tone +1F3C3 1F3FB 200D 2640 200D 27A1 ; minimally-qualified # 🏃🏻‍♀‍➡ E15.1 woman running facing right: light skin tone +1F3C3 1F3FC 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃🏼‍♀️‍➡️ E15.1 woman running facing right: medium-light skin tone +1F3C3 1F3FC 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🏃🏼‍♀‍➡️ E15.1 woman running facing right: medium-light skin tone +1F3C3 1F3FC 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🏃🏼‍♀️‍➡ E15.1 woman running facing right: medium-light skin tone +1F3C3 1F3FC 200D 2640 200D 27A1 ; minimally-qualified # 🏃🏼‍♀‍➡ E15.1 woman running facing right: medium-light skin tone +1F3C3 1F3FD 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃🏽‍♀️‍➡️ E15.1 woman running facing right: medium skin tone +1F3C3 1F3FD 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🏃🏽‍♀‍➡️ E15.1 woman running facing right: medium skin tone +1F3C3 1F3FD 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🏃🏽‍♀️‍➡ E15.1 woman running facing right: medium skin tone +1F3C3 1F3FD 200D 2640 200D 27A1 ; minimally-qualified # 🏃🏽‍♀‍➡ E15.1 woman running facing right: medium skin tone +1F3C3 1F3FE 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃🏾‍♀️‍➡️ E15.1 woman running facing right: medium-dark skin tone +1F3C3 1F3FE 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🏃🏾‍♀‍➡️ E15.1 woman running facing right: medium-dark skin tone +1F3C3 1F3FE 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🏃🏾‍♀️‍➡ E15.1 woman running facing right: medium-dark skin tone +1F3C3 1F3FE 200D 2640 200D 27A1 ; minimally-qualified # 🏃🏾‍♀‍➡ E15.1 woman running facing right: medium-dark skin tone +1F3C3 1F3FF 200D 2640 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃🏿‍♀️‍➡️ E15.1 woman running facing right: dark skin tone +1F3C3 1F3FF 200D 2640 200D 27A1 FE0F ; minimally-qualified # 🏃🏿‍♀‍➡️ E15.1 woman running facing right: dark skin tone +1F3C3 1F3FF 200D 2640 FE0F 200D 27A1 ; minimally-qualified # 🏃🏿‍♀️‍➡ E15.1 woman running facing right: dark skin tone +1F3C3 1F3FF 200D 2640 200D 27A1 ; minimally-qualified # 🏃🏿‍♀‍➡ E15.1 woman running facing right: dark skin tone +1F3C3 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃‍♂️‍➡️ E15.1 man running facing right +1F3C3 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🏃‍♂‍➡️ E15.1 man running facing right +1F3C3 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🏃‍♂️‍➡ E15.1 man running facing right +1F3C3 200D 2642 200D 27A1 ; minimally-qualified # 🏃‍♂‍➡ E15.1 man running facing right +1F3C3 1F3FB 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃🏻‍♂️‍➡️ E15.1 man running facing right: light skin tone +1F3C3 1F3FB 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🏃🏻‍♂‍➡️ E15.1 man running facing right: light skin tone +1F3C3 1F3FB 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🏃🏻‍♂️‍➡ E15.1 man running facing right: light skin tone +1F3C3 1F3FB 200D 2642 200D 27A1 ; minimally-qualified # 🏃🏻‍♂‍➡ E15.1 man running facing right: light skin tone +1F3C3 1F3FC 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃🏼‍♂️‍➡️ E15.1 man running facing right: medium-light skin tone +1F3C3 1F3FC 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🏃🏼‍♂‍➡️ E15.1 man running facing right: medium-light skin tone +1F3C3 1F3FC 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🏃🏼‍♂️‍➡ E15.1 man running facing right: medium-light skin tone +1F3C3 1F3FC 200D 2642 200D 27A1 ; minimally-qualified # 🏃🏼‍♂‍➡ E15.1 man running facing right: medium-light skin tone +1F3C3 1F3FD 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃🏽‍♂️‍➡️ E15.1 man running facing right: medium skin tone +1F3C3 1F3FD 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🏃🏽‍♂‍➡️ E15.1 man running facing right: medium skin tone +1F3C3 1F3FD 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🏃🏽‍♂️‍➡ E15.1 man running facing right: medium skin tone +1F3C3 1F3FD 200D 2642 200D 27A1 ; minimally-qualified # 🏃🏽‍♂‍➡ E15.1 man running facing right: medium skin tone +1F3C3 1F3FE 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃🏾‍♂️‍➡️ E15.1 man running facing right: medium-dark skin tone +1F3C3 1F3FE 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🏃🏾‍♂‍➡️ E15.1 man running facing right: medium-dark skin tone +1F3C3 1F3FE 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🏃🏾‍♂️‍➡ E15.1 man running facing right: medium-dark skin tone +1F3C3 1F3FE 200D 2642 200D 27A1 ; minimally-qualified # 🏃🏾‍♂‍➡ E15.1 man running facing right: medium-dark skin tone +1F3C3 1F3FF 200D 2642 FE0F 200D 27A1 FE0F ; fully-qualified # 🏃🏿‍♂️‍➡️ E15.1 man running facing right: dark skin tone +1F3C3 1F3FF 200D 2642 200D 27A1 FE0F ; minimally-qualified # 🏃🏿‍♂‍➡️ E15.1 man running facing right: dark skin tone +1F3C3 1F3FF 200D 2642 FE0F 200D 27A1 ; minimally-qualified # 🏃🏿‍♂️‍➡ E15.1 man running facing right: dark skin tone +1F3C3 1F3FF 200D 2642 200D 27A1 ; minimally-qualified # 🏃🏿‍♂‍➡ E15.1 man running facing right: dark skin tone +1F483 ; fully-qualified # 💃 E0.6 woman dancing +1F483 1F3FB ; fully-qualified # 💃🏻 E1.0 woman dancing: light skin tone +1F483 1F3FC ; fully-qualified # 💃🏼 E1.0 woman dancing: medium-light skin tone +1F483 1F3FD ; fully-qualified # 💃🏽 E1.0 woman dancing: medium skin tone +1F483 1F3FE ; fully-qualified # 💃🏾 E1.0 woman dancing: medium-dark skin tone +1F483 1F3FF ; fully-qualified # 💃🏿 E1.0 woman dancing: dark skin tone +1F57A ; fully-qualified # 🕺 E3.0 man dancing +1F57A 1F3FB ; fully-qualified # 🕺🏻 E3.0 man dancing: light skin tone +1F57A 1F3FC ; fully-qualified # 🕺🏼 E3.0 man dancing: medium-light skin tone +1F57A 1F3FD ; fully-qualified # 🕺🏽 E3.0 man dancing: medium skin tone +1F57A 1F3FE ; fully-qualified # 🕺🏾 E3.0 man dancing: medium-dark skin tone +1F57A 1F3FF ; fully-qualified # 🕺🏿 E3.0 man dancing: dark skin tone +1F574 FE0F ; fully-qualified # 🕴️ E0.7 person in suit levitating +1F574 ; unqualified # 🕴 E0.7 person in suit levitating +1F574 1F3FB ; fully-qualified # 🕴🏻 E4.0 person in suit levitating: light skin tone +1F574 1F3FC ; fully-qualified # 🕴🏼 E4.0 person in suit levitating: medium-light skin tone +1F574 1F3FD ; fully-qualified # 🕴🏽 E4.0 person in suit levitating: medium skin tone +1F574 1F3FE ; fully-qualified # 🕴🏾 E4.0 person in suit levitating: medium-dark skin tone +1F574 1F3FF ; fully-qualified # 🕴🏿 E4.0 person in suit levitating: dark skin tone +1F46F ; fully-qualified # 👯 E0.6 people with bunny ears +1F46F 200D 2642 FE0F ; fully-qualified # 👯‍♂️ E4.0 men with bunny ears +1F46F 200D 2642 ; minimally-qualified # 👯‍♂ E4.0 men with bunny ears +1F46F 200D 2640 FE0F ; fully-qualified # 👯‍♀️ E4.0 women with bunny ears +1F46F 200D 2640 ; minimally-qualified # 👯‍♀ E4.0 women with bunny ears +1F9D6 ; fully-qualified # 🧖 E5.0 person in steamy room +1F9D6 1F3FB ; fully-qualified # 🧖🏻 E5.0 person in steamy room: light skin tone +1F9D6 1F3FC ; fully-qualified # 🧖🏼 E5.0 person in steamy room: medium-light skin tone +1F9D6 1F3FD ; fully-qualified # 🧖🏽 E5.0 person in steamy room: medium skin tone +1F9D6 1F3FE ; fully-qualified # 🧖🏾 E5.0 person in steamy room: medium-dark skin tone +1F9D6 1F3FF ; fully-qualified # 🧖🏿 E5.0 person in steamy room: dark skin tone +1F9D6 200D 2642 FE0F ; fully-qualified # 🧖‍♂️ E5.0 man in steamy room +1F9D6 200D 2642 ; minimally-qualified # 🧖‍♂ E5.0 man in steamy room +1F9D6 1F3FB 200D 2642 FE0F ; fully-qualified # 🧖🏻‍♂️ E5.0 man in steamy room: light skin tone +1F9D6 1F3FB 200D 2642 ; minimally-qualified # 🧖🏻‍♂ E5.0 man in steamy room: light skin tone +1F9D6 1F3FC 200D 2642 FE0F ; fully-qualified # 🧖🏼‍♂️ E5.0 man in steamy room: medium-light skin tone +1F9D6 1F3FC 200D 2642 ; minimally-qualified # 🧖🏼‍♂ E5.0 man in steamy room: medium-light skin tone +1F9D6 1F3FD 200D 2642 FE0F ; fully-qualified # 🧖🏽‍♂️ E5.0 man in steamy room: medium skin tone +1F9D6 1F3FD 200D 2642 ; minimally-qualified # 🧖🏽‍♂ E5.0 man in steamy room: medium skin tone +1F9D6 1F3FE 200D 2642 FE0F ; fully-qualified # 🧖🏾‍♂️ E5.0 man in steamy room: medium-dark skin tone +1F9D6 1F3FE 200D 2642 ; minimally-qualified # 🧖🏾‍♂ E5.0 man in steamy room: medium-dark skin tone +1F9D6 1F3FF 200D 2642 FE0F ; fully-qualified # 🧖🏿‍♂️ E5.0 man in steamy room: dark skin tone +1F9D6 1F3FF 200D 2642 ; minimally-qualified # 🧖🏿‍♂ E5.0 man in steamy room: dark skin tone +1F9D6 200D 2640 FE0F ; fully-qualified # 🧖‍♀️ E5.0 woman in steamy room +1F9D6 200D 2640 ; minimally-qualified # 🧖‍♀ E5.0 woman in steamy room +1F9D6 1F3FB 200D 2640 FE0F ; fully-qualified # 🧖🏻‍♀️ E5.0 woman in steamy room: light skin tone +1F9D6 1F3FB 200D 2640 ; minimally-qualified # 🧖🏻‍♀ E5.0 woman in steamy room: light skin tone +1F9D6 1F3FC 200D 2640 FE0F ; fully-qualified # 🧖🏼‍♀️ E5.0 woman in steamy room: medium-light skin tone +1F9D6 1F3FC 200D 2640 ; minimally-qualified # 🧖🏼‍♀ E5.0 woman in steamy room: medium-light skin tone +1F9D6 1F3FD 200D 2640 FE0F ; fully-qualified # 🧖🏽‍♀️ E5.0 woman in steamy room: medium skin tone +1F9D6 1F3FD 200D 2640 ; minimally-qualified # 🧖🏽‍♀ E5.0 woman in steamy room: medium skin tone +1F9D6 1F3FE 200D 2640 FE0F ; fully-qualified # 🧖🏾‍♀️ E5.0 woman in steamy room: medium-dark skin tone +1F9D6 1F3FE 200D 2640 ; minimally-qualified # 🧖🏾‍♀ E5.0 woman in steamy room: medium-dark skin tone +1F9D6 1F3FF 200D 2640 FE0F ; fully-qualified # 🧖🏿‍♀️ E5.0 woman in steamy room: dark skin tone +1F9D6 1F3FF 200D 2640 ; minimally-qualified # 🧖🏿‍♀ E5.0 woman in steamy room: dark skin tone +1F9D7 ; fully-qualified # 🧗 E5.0 person climbing +1F9D7 1F3FB ; fully-qualified # 🧗🏻 E5.0 person climbing: light skin tone +1F9D7 1F3FC ; fully-qualified # 🧗🏼 E5.0 person climbing: medium-light skin tone +1F9D7 1F3FD ; fully-qualified # 🧗🏽 E5.0 person climbing: medium skin tone +1F9D7 1F3FE ; fully-qualified # 🧗🏾 E5.0 person climbing: medium-dark skin tone +1F9D7 1F3FF ; fully-qualified # 🧗🏿 E5.0 person climbing: dark skin tone +1F9D7 200D 2642 FE0F ; fully-qualified # 🧗‍♂️ E5.0 man climbing +1F9D7 200D 2642 ; minimally-qualified # 🧗‍♂ E5.0 man climbing +1F9D7 1F3FB 200D 2642 FE0F ; fully-qualified # 🧗🏻‍♂️ E5.0 man climbing: light skin tone +1F9D7 1F3FB 200D 2642 ; minimally-qualified # 🧗🏻‍♂ E5.0 man climbing: light skin tone +1F9D7 1F3FC 200D 2642 FE0F ; fully-qualified # 🧗🏼‍♂️ E5.0 man climbing: medium-light skin tone +1F9D7 1F3FC 200D 2642 ; minimally-qualified # 🧗🏼‍♂ E5.0 man climbing: medium-light skin tone +1F9D7 1F3FD 200D 2642 FE0F ; fully-qualified # 🧗🏽‍♂️ E5.0 man climbing: medium skin tone +1F9D7 1F3FD 200D 2642 ; minimally-qualified # 🧗🏽‍♂ E5.0 man climbing: medium skin tone +1F9D7 1F3FE 200D 2642 FE0F ; fully-qualified # 🧗🏾‍♂️ E5.0 man climbing: medium-dark skin tone +1F9D7 1F3FE 200D 2642 ; minimally-qualified # 🧗🏾‍♂ E5.0 man climbing: medium-dark skin tone +1F9D7 1F3FF 200D 2642 FE0F ; fully-qualified # 🧗🏿‍♂️ E5.0 man climbing: dark skin tone +1F9D7 1F3FF 200D 2642 ; minimally-qualified # 🧗🏿‍♂ E5.0 man climbing: dark skin tone +1F9D7 200D 2640 FE0F ; fully-qualified # 🧗‍♀️ E5.0 woman climbing +1F9D7 200D 2640 ; minimally-qualified # 🧗‍♀ E5.0 woman climbing +1F9D7 1F3FB 200D 2640 FE0F ; fully-qualified # 🧗🏻‍♀️ E5.0 woman climbing: light skin tone +1F9D7 1F3FB 200D 2640 ; minimally-qualified # 🧗🏻‍♀ E5.0 woman climbing: light skin tone +1F9D7 1F3FC 200D 2640 FE0F ; fully-qualified # 🧗🏼‍♀️ E5.0 woman climbing: medium-light skin tone +1F9D7 1F3FC 200D 2640 ; minimally-qualified # 🧗🏼‍♀ E5.0 woman climbing: medium-light skin tone +1F9D7 1F3FD 200D 2640 FE0F ; fully-qualified # 🧗🏽‍♀️ E5.0 woman climbing: medium skin tone +1F9D7 1F3FD 200D 2640 ; minimally-qualified # 🧗🏽‍♀ E5.0 woman climbing: medium skin tone +1F9D7 1F3FE 200D 2640 FE0F ; fully-qualified # 🧗🏾‍♀️ E5.0 woman climbing: medium-dark skin tone +1F9D7 1F3FE 200D 2640 ; minimally-qualified # 🧗🏾‍♀ E5.0 woman climbing: medium-dark skin tone +1F9D7 1F3FF 200D 2640 FE0F ; fully-qualified # 🧗🏿‍♀️ E5.0 woman climbing: dark skin tone +1F9D7 1F3FF 200D 2640 ; minimally-qualified # 🧗🏿‍♀ E5.0 woman climbing: dark skin tone + +# subgroup: person-sport +1F93A ; fully-qualified # 🤺 E3.0 person fencing +1F3C7 ; fully-qualified # 🏇 E1.0 horse racing +1F3C7 1F3FB ; fully-qualified # 🏇🏻 E1.0 horse racing: light skin tone +1F3C7 1F3FC ; fully-qualified # 🏇🏼 E1.0 horse racing: medium-light skin tone +1F3C7 1F3FD ; fully-qualified # 🏇🏽 E1.0 horse racing: medium skin tone +1F3C7 1F3FE ; fully-qualified # 🏇🏾 E1.0 horse racing: medium-dark skin tone +1F3C7 1F3FF ; fully-qualified # 🏇🏿 E1.0 horse racing: dark skin tone +26F7 FE0F ; fully-qualified # ⛷️ E0.7 skier +26F7 ; unqualified # ⛷ E0.7 skier +1F3C2 ; fully-qualified # 🏂 E0.6 snowboarder +1F3C2 1F3FB ; fully-qualified # 🏂🏻 E1.0 snowboarder: light skin tone +1F3C2 1F3FC ; fully-qualified # 🏂🏼 E1.0 snowboarder: medium-light skin tone +1F3C2 1F3FD ; fully-qualified # 🏂🏽 E1.0 snowboarder: medium skin tone +1F3C2 1F3FE ; fully-qualified # 🏂🏾 E1.0 snowboarder: medium-dark skin tone +1F3C2 1F3FF ; fully-qualified # 🏂🏿 E1.0 snowboarder: dark skin tone +1F3CC FE0F ; fully-qualified # 🏌️ E0.7 person golfing +1F3CC ; unqualified # 🏌 E0.7 person golfing +1F3CC 1F3FB ; fully-qualified # 🏌🏻 E4.0 person golfing: light skin tone +1F3CC 1F3FC ; fully-qualified # 🏌🏼 E4.0 person golfing: medium-light skin tone +1F3CC 1F3FD ; fully-qualified # 🏌🏽 E4.0 person golfing: medium skin tone +1F3CC 1F3FE ; fully-qualified # 🏌🏾 E4.0 person golfing: medium-dark skin tone +1F3CC 1F3FF ; fully-qualified # 🏌🏿 E4.0 person golfing: dark skin tone +1F3CC FE0F 200D 2642 FE0F ; fully-qualified # 🏌️‍♂️ E4.0 man golfing +1F3CC 200D 2642 FE0F ; unqualified # 🏌‍♂️ E4.0 man golfing +1F3CC FE0F 200D 2642 ; minimally-qualified # 🏌️‍♂ E4.0 man golfing +1F3CC 200D 2642 ; unqualified # 🏌‍♂ E4.0 man golfing +1F3CC 1F3FB 200D 2642 FE0F ; fully-qualified # 🏌🏻‍♂️ E4.0 man golfing: light skin tone +1F3CC 1F3FB 200D 2642 ; minimally-qualified # 🏌🏻‍♂ E4.0 man golfing: light skin tone +1F3CC 1F3FC 200D 2642 FE0F ; fully-qualified # 🏌🏼‍♂️ E4.0 man golfing: medium-light skin tone +1F3CC 1F3FC 200D 2642 ; minimally-qualified # 🏌🏼‍♂ E4.0 man golfing: medium-light skin tone +1F3CC 1F3FD 200D 2642 FE0F ; fully-qualified # 🏌🏽‍♂️ E4.0 man golfing: medium skin tone +1F3CC 1F3FD 200D 2642 ; minimally-qualified # 🏌🏽‍♂ E4.0 man golfing: medium skin tone +1F3CC 1F3FE 200D 2642 FE0F ; fully-qualified # 🏌🏾‍♂️ E4.0 man golfing: medium-dark skin tone +1F3CC 1F3FE 200D 2642 ; minimally-qualified # 🏌🏾‍♂ E4.0 man golfing: medium-dark skin tone +1F3CC 1F3FF 200D 2642 FE0F ; fully-qualified # 🏌🏿‍♂️ E4.0 man golfing: dark skin tone +1F3CC 1F3FF 200D 2642 ; minimally-qualified # 🏌🏿‍♂ E4.0 man golfing: dark skin tone +1F3CC FE0F 200D 2640 FE0F ; fully-qualified # 🏌️‍♀️ E4.0 woman golfing +1F3CC 200D 2640 FE0F ; unqualified # 🏌‍♀️ E4.0 woman golfing +1F3CC FE0F 200D 2640 ; minimally-qualified # 🏌️‍♀ E4.0 woman golfing +1F3CC 200D 2640 ; unqualified # 🏌‍♀ E4.0 woman golfing +1F3CC 1F3FB 200D 2640 FE0F ; fully-qualified # 🏌🏻‍♀️ E4.0 woman golfing: light skin tone +1F3CC 1F3FB 200D 2640 ; minimally-qualified # 🏌🏻‍♀ E4.0 woman golfing: light skin tone +1F3CC 1F3FC 200D 2640 FE0F ; fully-qualified # 🏌🏼‍♀️ E4.0 woman golfing: medium-light skin tone +1F3CC 1F3FC 200D 2640 ; minimally-qualified # 🏌🏼‍♀ E4.0 woman golfing: medium-light skin tone +1F3CC 1F3FD 200D 2640 FE0F ; fully-qualified # 🏌🏽‍♀️ E4.0 woman golfing: medium skin tone +1F3CC 1F3FD 200D 2640 ; minimally-qualified # 🏌🏽‍♀ E4.0 woman golfing: medium skin tone +1F3CC 1F3FE 200D 2640 FE0F ; fully-qualified # 🏌🏾‍♀️ E4.0 woman golfing: medium-dark skin tone +1F3CC 1F3FE 200D 2640 ; minimally-qualified # 🏌🏾‍♀ E4.0 woman golfing: medium-dark skin tone +1F3CC 1F3FF 200D 2640 FE0F ; fully-qualified # 🏌🏿‍♀️ E4.0 woman golfing: dark skin tone +1F3CC 1F3FF 200D 2640 ; minimally-qualified # 🏌🏿‍♀ E4.0 woman golfing: dark skin tone +1F3C4 ; fully-qualified # 🏄 E0.6 person surfing +1F3C4 1F3FB ; fully-qualified # 🏄🏻 E1.0 person surfing: light skin tone +1F3C4 1F3FC ; fully-qualified # 🏄🏼 E1.0 person surfing: medium-light skin tone +1F3C4 1F3FD ; fully-qualified # 🏄🏽 E1.0 person surfing: medium skin tone +1F3C4 1F3FE ; fully-qualified # 🏄🏾 E1.0 person surfing: medium-dark skin tone +1F3C4 1F3FF ; fully-qualified # 🏄🏿 E1.0 person surfing: dark skin tone +1F3C4 200D 2642 FE0F ; fully-qualified # 🏄‍♂️ E4.0 man surfing +1F3C4 200D 2642 ; minimally-qualified # 🏄‍♂ E4.0 man surfing +1F3C4 1F3FB 200D 2642 FE0F ; fully-qualified # 🏄🏻‍♂️ E4.0 man surfing: light skin tone +1F3C4 1F3FB 200D 2642 ; minimally-qualified # 🏄🏻‍♂ E4.0 man surfing: light skin tone +1F3C4 1F3FC 200D 2642 FE0F ; fully-qualified # 🏄🏼‍♂️ E4.0 man surfing: medium-light skin tone +1F3C4 1F3FC 200D 2642 ; minimally-qualified # 🏄🏼‍♂ E4.0 man surfing: medium-light skin tone +1F3C4 1F3FD 200D 2642 FE0F ; fully-qualified # 🏄🏽‍♂️ E4.0 man surfing: medium skin tone +1F3C4 1F3FD 200D 2642 ; minimally-qualified # 🏄🏽‍♂ E4.0 man surfing: medium skin tone +1F3C4 1F3FE 200D 2642 FE0F ; fully-qualified # 🏄🏾‍♂️ E4.0 man surfing: medium-dark skin tone +1F3C4 1F3FE 200D 2642 ; minimally-qualified # 🏄🏾‍♂ E4.0 man surfing: medium-dark skin tone +1F3C4 1F3FF 200D 2642 FE0F ; fully-qualified # 🏄🏿‍♂️ E4.0 man surfing: dark skin tone +1F3C4 1F3FF 200D 2642 ; minimally-qualified # 🏄🏿‍♂ E4.0 man surfing: dark skin tone +1F3C4 200D 2640 FE0F ; fully-qualified # 🏄‍♀️ E4.0 woman surfing +1F3C4 200D 2640 ; minimally-qualified # 🏄‍♀ E4.0 woman surfing +1F3C4 1F3FB 200D 2640 FE0F ; fully-qualified # 🏄🏻‍♀️ E4.0 woman surfing: light skin tone +1F3C4 1F3FB 200D 2640 ; minimally-qualified # 🏄🏻‍♀ E4.0 woman surfing: light skin tone +1F3C4 1F3FC 200D 2640 FE0F ; fully-qualified # 🏄🏼‍♀️ E4.0 woman surfing: medium-light skin tone +1F3C4 1F3FC 200D 2640 ; minimally-qualified # 🏄🏼‍♀ E4.0 woman surfing: medium-light skin tone +1F3C4 1F3FD 200D 2640 FE0F ; fully-qualified # 🏄🏽‍♀️ E4.0 woman surfing: medium skin tone +1F3C4 1F3FD 200D 2640 ; minimally-qualified # 🏄🏽‍♀ E4.0 woman surfing: medium skin tone +1F3C4 1F3FE 200D 2640 FE0F ; fully-qualified # 🏄🏾‍♀️ E4.0 woman surfing: medium-dark skin tone +1F3C4 1F3FE 200D 2640 ; minimally-qualified # 🏄🏾‍♀ E4.0 woman surfing: medium-dark skin tone +1F3C4 1F3FF 200D 2640 FE0F ; fully-qualified # 🏄🏿‍♀️ E4.0 woman surfing: dark skin tone +1F3C4 1F3FF 200D 2640 ; minimally-qualified # 🏄🏿‍♀ E4.0 woman surfing: dark skin tone +1F6A3 ; fully-qualified # 🚣 E1.0 person rowing boat +1F6A3 1F3FB ; fully-qualified # 🚣🏻 E1.0 person rowing boat: light skin tone +1F6A3 1F3FC ; fully-qualified # 🚣🏼 E1.0 person rowing boat: medium-light skin tone +1F6A3 1F3FD ; fully-qualified # 🚣🏽 E1.0 person rowing boat: medium skin tone +1F6A3 1F3FE ; fully-qualified # 🚣🏾 E1.0 person rowing boat: medium-dark skin tone +1F6A3 1F3FF ; fully-qualified # 🚣🏿 E1.0 person rowing boat: dark skin tone +1F6A3 200D 2642 FE0F ; fully-qualified # 🚣‍♂️ E4.0 man rowing boat +1F6A3 200D 2642 ; minimally-qualified # 🚣‍♂ E4.0 man rowing boat +1F6A3 1F3FB 200D 2642 FE0F ; fully-qualified # 🚣🏻‍♂️ E4.0 man rowing boat: light skin tone +1F6A3 1F3FB 200D 2642 ; minimally-qualified # 🚣🏻‍♂ E4.0 man rowing boat: light skin tone +1F6A3 1F3FC 200D 2642 FE0F ; fully-qualified # 🚣🏼‍♂️ E4.0 man rowing boat: medium-light skin tone +1F6A3 1F3FC 200D 2642 ; minimally-qualified # 🚣🏼‍♂ E4.0 man rowing boat: medium-light skin tone +1F6A3 1F3FD 200D 2642 FE0F ; fully-qualified # 🚣🏽‍♂️ E4.0 man rowing boat: medium skin tone +1F6A3 1F3FD 200D 2642 ; minimally-qualified # 🚣🏽‍♂ E4.0 man rowing boat: medium skin tone +1F6A3 1F3FE 200D 2642 FE0F ; fully-qualified # 🚣🏾‍♂️ E4.0 man rowing boat: medium-dark skin tone +1F6A3 1F3FE 200D 2642 ; minimally-qualified # 🚣🏾‍♂ E4.0 man rowing boat: medium-dark skin tone +1F6A3 1F3FF 200D 2642 FE0F ; fully-qualified # 🚣🏿‍♂️ E4.0 man rowing boat: dark skin tone +1F6A3 1F3FF 200D 2642 ; minimally-qualified # 🚣🏿‍♂ E4.0 man rowing boat: dark skin tone +1F6A3 200D 2640 FE0F ; fully-qualified # 🚣‍♀️ E4.0 woman rowing boat +1F6A3 200D 2640 ; minimally-qualified # 🚣‍♀ E4.0 woman rowing boat +1F6A3 1F3FB 200D 2640 FE0F ; fully-qualified # 🚣🏻‍♀️ E4.0 woman rowing boat: light skin tone +1F6A3 1F3FB 200D 2640 ; minimally-qualified # 🚣🏻‍♀ E4.0 woman rowing boat: light skin tone +1F6A3 1F3FC 200D 2640 FE0F ; fully-qualified # 🚣🏼‍♀️ E4.0 woman rowing boat: medium-light skin tone +1F6A3 1F3FC 200D 2640 ; minimally-qualified # 🚣🏼‍♀ E4.0 woman rowing boat: medium-light skin tone +1F6A3 1F3FD 200D 2640 FE0F ; fully-qualified # 🚣🏽‍♀️ E4.0 woman rowing boat: medium skin tone +1F6A3 1F3FD 200D 2640 ; minimally-qualified # 🚣🏽‍♀ E4.0 woman rowing boat: medium skin tone +1F6A3 1F3FE 200D 2640 FE0F ; fully-qualified # 🚣🏾‍♀️ E4.0 woman rowing boat: medium-dark skin tone +1F6A3 1F3FE 200D 2640 ; minimally-qualified # 🚣🏾‍♀ E4.0 woman rowing boat: medium-dark skin tone +1F6A3 1F3FF 200D 2640 FE0F ; fully-qualified # 🚣🏿‍♀️ E4.0 woman rowing boat: dark skin tone +1F6A3 1F3FF 200D 2640 ; minimally-qualified # 🚣🏿‍♀ E4.0 woman rowing boat: dark skin tone +1F3CA ; fully-qualified # 🏊 E0.6 person swimming +1F3CA 1F3FB ; fully-qualified # 🏊🏻 E1.0 person swimming: light skin tone +1F3CA 1F3FC ; fully-qualified # 🏊🏼 E1.0 person swimming: medium-light skin tone +1F3CA 1F3FD ; fully-qualified # 🏊🏽 E1.0 person swimming: medium skin tone +1F3CA 1F3FE ; fully-qualified # 🏊🏾 E1.0 person swimming: medium-dark skin tone +1F3CA 1F3FF ; fully-qualified # 🏊🏿 E1.0 person swimming: dark skin tone +1F3CA 200D 2642 FE0F ; fully-qualified # 🏊‍♂️ E4.0 man swimming +1F3CA 200D 2642 ; minimally-qualified # 🏊‍♂ E4.0 man swimming +1F3CA 1F3FB 200D 2642 FE0F ; fully-qualified # 🏊🏻‍♂️ E4.0 man swimming: light skin tone +1F3CA 1F3FB 200D 2642 ; minimally-qualified # 🏊🏻‍♂ E4.0 man swimming: light skin tone +1F3CA 1F3FC 200D 2642 FE0F ; fully-qualified # 🏊🏼‍♂️ E4.0 man swimming: medium-light skin tone +1F3CA 1F3FC 200D 2642 ; minimally-qualified # 🏊🏼‍♂ E4.0 man swimming: medium-light skin tone +1F3CA 1F3FD 200D 2642 FE0F ; fully-qualified # 🏊🏽‍♂️ E4.0 man swimming: medium skin tone +1F3CA 1F3FD 200D 2642 ; minimally-qualified # 🏊🏽‍♂ E4.0 man swimming: medium skin tone +1F3CA 1F3FE 200D 2642 FE0F ; fully-qualified # 🏊🏾‍♂️ E4.0 man swimming: medium-dark skin tone +1F3CA 1F3FE 200D 2642 ; minimally-qualified # 🏊🏾‍♂ E4.0 man swimming: medium-dark skin tone +1F3CA 1F3FF 200D 2642 FE0F ; fully-qualified # 🏊🏿‍♂️ E4.0 man swimming: dark skin tone +1F3CA 1F3FF 200D 2642 ; minimally-qualified # 🏊🏿‍♂ E4.0 man swimming: dark skin tone +1F3CA 200D 2640 FE0F ; fully-qualified # 🏊‍♀️ E4.0 woman swimming +1F3CA 200D 2640 ; minimally-qualified # 🏊‍♀ E4.0 woman swimming +1F3CA 1F3FB 200D 2640 FE0F ; fully-qualified # 🏊🏻‍♀️ E4.0 woman swimming: light skin tone +1F3CA 1F3FB 200D 2640 ; minimally-qualified # 🏊🏻‍♀ E4.0 woman swimming: light skin tone +1F3CA 1F3FC 200D 2640 FE0F ; fully-qualified # 🏊🏼‍♀️ E4.0 woman swimming: medium-light skin tone +1F3CA 1F3FC 200D 2640 ; minimally-qualified # 🏊🏼‍♀ E4.0 woman swimming: medium-light skin tone +1F3CA 1F3FD 200D 2640 FE0F ; fully-qualified # 🏊🏽‍♀️ E4.0 woman swimming: medium skin tone +1F3CA 1F3FD 200D 2640 ; minimally-qualified # 🏊🏽‍♀ E4.0 woman swimming: medium skin tone +1F3CA 1F3FE 200D 2640 FE0F ; fully-qualified # 🏊🏾‍♀️ E4.0 woman swimming: medium-dark skin tone +1F3CA 1F3FE 200D 2640 ; minimally-qualified # 🏊🏾‍♀ E4.0 woman swimming: medium-dark skin tone +1F3CA 1F3FF 200D 2640 FE0F ; fully-qualified # 🏊🏿‍♀️ E4.0 woman swimming: dark skin tone +1F3CA 1F3FF 200D 2640 ; minimally-qualified # 🏊🏿‍♀ E4.0 woman swimming: dark skin tone +26F9 FE0F ; fully-qualified # ⛹️ E0.7 person bouncing ball +26F9 ; unqualified # ⛹ E0.7 person bouncing ball +26F9 1F3FB ; fully-qualified # ⛹🏻 E2.0 person bouncing ball: light skin tone +26F9 1F3FC ; fully-qualified # ⛹🏼 E2.0 person bouncing ball: medium-light skin tone +26F9 1F3FD ; fully-qualified # ⛹🏽 E2.0 person bouncing ball: medium skin tone +26F9 1F3FE ; fully-qualified # ⛹🏾 E2.0 person bouncing ball: medium-dark skin tone +26F9 1F3FF ; fully-qualified # ⛹🏿 E2.0 person bouncing ball: dark skin tone +26F9 FE0F 200D 2642 FE0F ; fully-qualified # ⛹️‍♂️ E4.0 man bouncing ball +26F9 200D 2642 FE0F ; unqualified # ⛹‍♂️ E4.0 man bouncing ball +26F9 FE0F 200D 2642 ; minimally-qualified # ⛹️‍♂ E4.0 man bouncing ball +26F9 200D 2642 ; unqualified # ⛹‍♂ E4.0 man bouncing ball +26F9 1F3FB 200D 2642 FE0F ; fully-qualified # ⛹🏻‍♂️ E4.0 man bouncing ball: light skin tone +26F9 1F3FB 200D 2642 ; minimally-qualified # ⛹🏻‍♂ E4.0 man bouncing ball: light skin tone +26F9 1F3FC 200D 2642 FE0F ; fully-qualified # ⛹🏼‍♂️ E4.0 man bouncing ball: medium-light skin tone +26F9 1F3FC 200D 2642 ; minimally-qualified # ⛹🏼‍♂ E4.0 man bouncing ball: medium-light skin tone +26F9 1F3FD 200D 2642 FE0F ; fully-qualified # ⛹🏽‍♂️ E4.0 man bouncing ball: medium skin tone +26F9 1F3FD 200D 2642 ; minimally-qualified # ⛹🏽‍♂ E4.0 man bouncing ball: medium skin tone +26F9 1F3FE 200D 2642 FE0F ; fully-qualified # ⛹🏾‍♂️ E4.0 man bouncing ball: medium-dark skin tone +26F9 1F3FE 200D 2642 ; minimally-qualified # ⛹🏾‍♂ E4.0 man bouncing ball: medium-dark skin tone +26F9 1F3FF 200D 2642 FE0F ; fully-qualified # ⛹🏿‍♂️ E4.0 man bouncing ball: dark skin tone +26F9 1F3FF 200D 2642 ; minimally-qualified # ⛹🏿‍♂ E4.0 man bouncing ball: dark skin tone +26F9 FE0F 200D 2640 FE0F ; fully-qualified # ⛹️‍♀️ E4.0 woman bouncing ball +26F9 200D 2640 FE0F ; unqualified # ⛹‍♀️ E4.0 woman bouncing ball +26F9 FE0F 200D 2640 ; minimally-qualified # ⛹️‍♀ E4.0 woman bouncing ball +26F9 200D 2640 ; unqualified # ⛹‍♀ E4.0 woman bouncing ball +26F9 1F3FB 200D 2640 FE0F ; fully-qualified # ⛹🏻‍♀️ E4.0 woman bouncing ball: light skin tone +26F9 1F3FB 200D 2640 ; minimally-qualified # ⛹🏻‍♀ E4.0 woman bouncing ball: light skin tone +26F9 1F3FC 200D 2640 FE0F ; fully-qualified # ⛹🏼‍♀️ E4.0 woman bouncing ball: medium-light skin tone +26F9 1F3FC 200D 2640 ; minimally-qualified # ⛹🏼‍♀ E4.0 woman bouncing ball: medium-light skin tone +26F9 1F3FD 200D 2640 FE0F ; fully-qualified # ⛹🏽‍♀️ E4.0 woman bouncing ball: medium skin tone +26F9 1F3FD 200D 2640 ; minimally-qualified # ⛹🏽‍♀ E4.0 woman bouncing ball: medium skin tone +26F9 1F3FE 200D 2640 FE0F ; fully-qualified # ⛹🏾‍♀️ E4.0 woman bouncing ball: medium-dark skin tone +26F9 1F3FE 200D 2640 ; minimally-qualified # ⛹🏾‍♀ E4.0 woman bouncing ball: medium-dark skin tone +26F9 1F3FF 200D 2640 FE0F ; fully-qualified # ⛹🏿‍♀️ E4.0 woman bouncing ball: dark skin tone +26F9 1F3FF 200D 2640 ; minimally-qualified # ⛹🏿‍♀ E4.0 woman bouncing ball: dark skin tone +1F3CB FE0F ; fully-qualified # 🏋️ E0.7 person lifting weights +1F3CB ; unqualified # 🏋 E0.7 person lifting weights +1F3CB 1F3FB ; fully-qualified # 🏋🏻 E2.0 person lifting weights: light skin tone +1F3CB 1F3FC ; fully-qualified # 🏋🏼 E2.0 person lifting weights: medium-light skin tone +1F3CB 1F3FD ; fully-qualified # 🏋🏽 E2.0 person lifting weights: medium skin tone +1F3CB 1F3FE ; fully-qualified # 🏋🏾 E2.0 person lifting weights: medium-dark skin tone +1F3CB 1F3FF ; fully-qualified # 🏋🏿 E2.0 person lifting weights: dark skin tone +1F3CB FE0F 200D 2642 FE0F ; fully-qualified # 🏋️‍♂️ E4.0 man lifting weights +1F3CB 200D 2642 FE0F ; unqualified # 🏋‍♂️ E4.0 man lifting weights +1F3CB FE0F 200D 2642 ; minimally-qualified # 🏋️‍♂ E4.0 man lifting weights +1F3CB 200D 2642 ; unqualified # 🏋‍♂ E4.0 man lifting weights +1F3CB 1F3FB 200D 2642 FE0F ; fully-qualified # 🏋🏻‍♂️ E4.0 man lifting weights: light skin tone +1F3CB 1F3FB 200D 2642 ; minimally-qualified # 🏋🏻‍♂ E4.0 man lifting weights: light skin tone +1F3CB 1F3FC 200D 2642 FE0F ; fully-qualified # 🏋🏼‍♂️ E4.0 man lifting weights: medium-light skin tone +1F3CB 1F3FC 200D 2642 ; minimally-qualified # 🏋🏼‍♂ E4.0 man lifting weights: medium-light skin tone +1F3CB 1F3FD 200D 2642 FE0F ; fully-qualified # 🏋🏽‍♂️ E4.0 man lifting weights: medium skin tone +1F3CB 1F3FD 200D 2642 ; minimally-qualified # 🏋🏽‍♂ E4.0 man lifting weights: medium skin tone +1F3CB 1F3FE 200D 2642 FE0F ; fully-qualified # 🏋🏾‍♂️ E4.0 man lifting weights: medium-dark skin tone +1F3CB 1F3FE 200D 2642 ; minimally-qualified # 🏋🏾‍♂ E4.0 man lifting weights: medium-dark skin tone +1F3CB 1F3FF 200D 2642 FE0F ; fully-qualified # 🏋🏿‍♂️ E4.0 man lifting weights: dark skin tone +1F3CB 1F3FF 200D 2642 ; minimally-qualified # 🏋🏿‍♂ E4.0 man lifting weights: dark skin tone +1F3CB FE0F 200D 2640 FE0F ; fully-qualified # 🏋️‍♀️ E4.0 woman lifting weights +1F3CB 200D 2640 FE0F ; unqualified # 🏋‍♀️ E4.0 woman lifting weights +1F3CB FE0F 200D 2640 ; minimally-qualified # 🏋️‍♀ E4.0 woman lifting weights +1F3CB 200D 2640 ; unqualified # 🏋‍♀ E4.0 woman lifting weights +1F3CB 1F3FB 200D 2640 FE0F ; fully-qualified # 🏋🏻‍♀️ E4.0 woman lifting weights: light skin tone +1F3CB 1F3FB 200D 2640 ; minimally-qualified # 🏋🏻‍♀ E4.0 woman lifting weights: light skin tone +1F3CB 1F3FC 200D 2640 FE0F ; fully-qualified # 🏋🏼‍♀️ E4.0 woman lifting weights: medium-light skin tone +1F3CB 1F3FC 200D 2640 ; minimally-qualified # 🏋🏼‍♀ E4.0 woman lifting weights: medium-light skin tone +1F3CB 1F3FD 200D 2640 FE0F ; fully-qualified # 🏋🏽‍♀️ E4.0 woman lifting weights: medium skin tone +1F3CB 1F3FD 200D 2640 ; minimally-qualified # 🏋🏽‍♀ E4.0 woman lifting weights: medium skin tone +1F3CB 1F3FE 200D 2640 FE0F ; fully-qualified # 🏋🏾‍♀️ E4.0 woman lifting weights: medium-dark skin tone +1F3CB 1F3FE 200D 2640 ; minimally-qualified # 🏋🏾‍♀ E4.0 woman lifting weights: medium-dark skin tone +1F3CB 1F3FF 200D 2640 FE0F ; fully-qualified # 🏋🏿‍♀️ E4.0 woman lifting weights: dark skin tone +1F3CB 1F3FF 200D 2640 ; minimally-qualified # 🏋🏿‍♀ E4.0 woman lifting weights: dark skin tone +1F6B4 ; fully-qualified # 🚴 E1.0 person biking +1F6B4 1F3FB ; fully-qualified # 🚴🏻 E1.0 person biking: light skin tone +1F6B4 1F3FC ; fully-qualified # 🚴🏼 E1.0 person biking: medium-light skin tone +1F6B4 1F3FD ; fully-qualified # 🚴🏽 E1.0 person biking: medium skin tone +1F6B4 1F3FE ; fully-qualified # 🚴🏾 E1.0 person biking: medium-dark skin tone +1F6B4 1F3FF ; fully-qualified # 🚴🏿 E1.0 person biking: dark skin tone +1F6B4 200D 2642 FE0F ; fully-qualified # 🚴‍♂️ E4.0 man biking +1F6B4 200D 2642 ; minimally-qualified # 🚴‍♂ E4.0 man biking +1F6B4 1F3FB 200D 2642 FE0F ; fully-qualified # 🚴🏻‍♂️ E4.0 man biking: light skin tone +1F6B4 1F3FB 200D 2642 ; minimally-qualified # 🚴🏻‍♂ E4.0 man biking: light skin tone +1F6B4 1F3FC 200D 2642 FE0F ; fully-qualified # 🚴🏼‍♂️ E4.0 man biking: medium-light skin tone +1F6B4 1F3FC 200D 2642 ; minimally-qualified # 🚴🏼‍♂ E4.0 man biking: medium-light skin tone +1F6B4 1F3FD 200D 2642 FE0F ; fully-qualified # 🚴🏽‍♂️ E4.0 man biking: medium skin tone +1F6B4 1F3FD 200D 2642 ; minimally-qualified # 🚴🏽‍♂ E4.0 man biking: medium skin tone +1F6B4 1F3FE 200D 2642 FE0F ; fully-qualified # 🚴🏾‍♂️ E4.0 man biking: medium-dark skin tone +1F6B4 1F3FE 200D 2642 ; minimally-qualified # 🚴🏾‍♂ E4.0 man biking: medium-dark skin tone +1F6B4 1F3FF 200D 2642 FE0F ; fully-qualified # 🚴🏿‍♂️ E4.0 man biking: dark skin tone +1F6B4 1F3FF 200D 2642 ; minimally-qualified # 🚴🏿‍♂ E4.0 man biking: dark skin tone +1F6B4 200D 2640 FE0F ; fully-qualified # 🚴‍♀️ E4.0 woman biking +1F6B4 200D 2640 ; minimally-qualified # 🚴‍♀ E4.0 woman biking +1F6B4 1F3FB 200D 2640 FE0F ; fully-qualified # 🚴🏻‍♀️ E4.0 woman biking: light skin tone +1F6B4 1F3FB 200D 2640 ; minimally-qualified # 🚴🏻‍♀ E4.0 woman biking: light skin tone +1F6B4 1F3FC 200D 2640 FE0F ; fully-qualified # 🚴🏼‍♀️ E4.0 woman biking: medium-light skin tone +1F6B4 1F3FC 200D 2640 ; minimally-qualified # 🚴🏼‍♀ E4.0 woman biking: medium-light skin tone +1F6B4 1F3FD 200D 2640 FE0F ; fully-qualified # 🚴🏽‍♀️ E4.0 woman biking: medium skin tone +1F6B4 1F3FD 200D 2640 ; minimally-qualified # 🚴🏽‍♀ E4.0 woman biking: medium skin tone +1F6B4 1F3FE 200D 2640 FE0F ; fully-qualified # 🚴🏾‍♀️ E4.0 woman biking: medium-dark skin tone +1F6B4 1F3FE 200D 2640 ; minimally-qualified # 🚴🏾‍♀ E4.0 woman biking: medium-dark skin tone +1F6B4 1F3FF 200D 2640 FE0F ; fully-qualified # 🚴🏿‍♀️ E4.0 woman biking: dark skin tone +1F6B4 1F3FF 200D 2640 ; minimally-qualified # 🚴🏿‍♀ E4.0 woman biking: dark skin tone +1F6B5 ; fully-qualified # 🚵 E1.0 person mountain biking +1F6B5 1F3FB ; fully-qualified # 🚵🏻 E1.0 person mountain biking: light skin tone +1F6B5 1F3FC ; fully-qualified # 🚵🏼 E1.0 person mountain biking: medium-light skin tone +1F6B5 1F3FD ; fully-qualified # 🚵🏽 E1.0 person mountain biking: medium skin tone +1F6B5 1F3FE ; fully-qualified # 🚵🏾 E1.0 person mountain biking: medium-dark skin tone +1F6B5 1F3FF ; fully-qualified # 🚵🏿 E1.0 person mountain biking: dark skin tone +1F6B5 200D 2642 FE0F ; fully-qualified # 🚵‍♂️ E4.0 man mountain biking +1F6B5 200D 2642 ; minimally-qualified # 🚵‍♂ E4.0 man mountain biking +1F6B5 1F3FB 200D 2642 FE0F ; fully-qualified # 🚵🏻‍♂️ E4.0 man mountain biking: light skin tone +1F6B5 1F3FB 200D 2642 ; minimally-qualified # 🚵🏻‍♂ E4.0 man mountain biking: light skin tone +1F6B5 1F3FC 200D 2642 FE0F ; fully-qualified # 🚵🏼‍♂️ E4.0 man mountain biking: medium-light skin tone +1F6B5 1F3FC 200D 2642 ; minimally-qualified # 🚵🏼‍♂ E4.0 man mountain biking: medium-light skin tone +1F6B5 1F3FD 200D 2642 FE0F ; fully-qualified # 🚵🏽‍♂️ E4.0 man mountain biking: medium skin tone +1F6B5 1F3FD 200D 2642 ; minimally-qualified # 🚵🏽‍♂ E4.0 man mountain biking: medium skin tone +1F6B5 1F3FE 200D 2642 FE0F ; fully-qualified # 🚵🏾‍♂️ E4.0 man mountain biking: medium-dark skin tone +1F6B5 1F3FE 200D 2642 ; minimally-qualified # 🚵🏾‍♂ E4.0 man mountain biking: medium-dark skin tone +1F6B5 1F3FF 200D 2642 FE0F ; fully-qualified # 🚵🏿‍♂️ E4.0 man mountain biking: dark skin tone +1F6B5 1F3FF 200D 2642 ; minimally-qualified # 🚵🏿‍♂ E4.0 man mountain biking: dark skin tone +1F6B5 200D 2640 FE0F ; fully-qualified # 🚵‍♀️ E4.0 woman mountain biking +1F6B5 200D 2640 ; minimally-qualified # 🚵‍♀ E4.0 woman mountain biking +1F6B5 1F3FB 200D 2640 FE0F ; fully-qualified # 🚵🏻‍♀️ E4.0 woman mountain biking: light skin tone +1F6B5 1F3FB 200D 2640 ; minimally-qualified # 🚵🏻‍♀ E4.0 woman mountain biking: light skin tone +1F6B5 1F3FC 200D 2640 FE0F ; fully-qualified # 🚵🏼‍♀️ E4.0 woman mountain biking: medium-light skin tone +1F6B5 1F3FC 200D 2640 ; minimally-qualified # 🚵🏼‍♀ E4.0 woman mountain biking: medium-light skin tone +1F6B5 1F3FD 200D 2640 FE0F ; fully-qualified # 🚵🏽‍♀️ E4.0 woman mountain biking: medium skin tone +1F6B5 1F3FD 200D 2640 ; minimally-qualified # 🚵🏽‍♀ E4.0 woman mountain biking: medium skin tone +1F6B5 1F3FE 200D 2640 FE0F ; fully-qualified # 🚵🏾‍♀️ E4.0 woman mountain biking: medium-dark skin tone +1F6B5 1F3FE 200D 2640 ; minimally-qualified # 🚵🏾‍♀ E4.0 woman mountain biking: medium-dark skin tone +1F6B5 1F3FF 200D 2640 FE0F ; fully-qualified # 🚵🏿‍♀️ E4.0 woman mountain biking: dark skin tone +1F6B5 1F3FF 200D 2640 ; minimally-qualified # 🚵🏿‍♀ E4.0 woman mountain biking: dark skin tone +1F938 ; fully-qualified # 🤸 E3.0 person cartwheeling +1F938 1F3FB ; fully-qualified # 🤸🏻 E3.0 person cartwheeling: light skin tone +1F938 1F3FC ; fully-qualified # 🤸🏼 E3.0 person cartwheeling: medium-light skin tone +1F938 1F3FD ; fully-qualified # 🤸🏽 E3.0 person cartwheeling: medium skin tone +1F938 1F3FE ; fully-qualified # 🤸🏾 E3.0 person cartwheeling: medium-dark skin tone +1F938 1F3FF ; fully-qualified # 🤸🏿 E3.0 person cartwheeling: dark skin tone +1F938 200D 2642 FE0F ; fully-qualified # 🤸‍♂️ E4.0 man cartwheeling +1F938 200D 2642 ; minimally-qualified # 🤸‍♂ E4.0 man cartwheeling +1F938 1F3FB 200D 2642 FE0F ; fully-qualified # 🤸🏻‍♂️ E4.0 man cartwheeling: light skin tone +1F938 1F3FB 200D 2642 ; minimally-qualified # 🤸🏻‍♂ E4.0 man cartwheeling: light skin tone +1F938 1F3FC 200D 2642 FE0F ; fully-qualified # 🤸🏼‍♂️ E4.0 man cartwheeling: medium-light skin tone +1F938 1F3FC 200D 2642 ; minimally-qualified # 🤸🏼‍♂ E4.0 man cartwheeling: medium-light skin tone +1F938 1F3FD 200D 2642 FE0F ; fully-qualified # 🤸🏽‍♂️ E4.0 man cartwheeling: medium skin tone +1F938 1F3FD 200D 2642 ; minimally-qualified # 🤸🏽‍♂ E4.0 man cartwheeling: medium skin tone +1F938 1F3FE 200D 2642 FE0F ; fully-qualified # 🤸🏾‍♂️ E4.0 man cartwheeling: medium-dark skin tone +1F938 1F3FE 200D 2642 ; minimally-qualified # 🤸🏾‍♂ E4.0 man cartwheeling: medium-dark skin tone +1F938 1F3FF 200D 2642 FE0F ; fully-qualified # 🤸🏿‍♂️ E4.0 man cartwheeling: dark skin tone +1F938 1F3FF 200D 2642 ; minimally-qualified # 🤸🏿‍♂ E4.0 man cartwheeling: dark skin tone +1F938 200D 2640 FE0F ; fully-qualified # 🤸‍♀️ E4.0 woman cartwheeling +1F938 200D 2640 ; minimally-qualified # 🤸‍♀ E4.0 woman cartwheeling +1F938 1F3FB 200D 2640 FE0F ; fully-qualified # 🤸🏻‍♀️ E4.0 woman cartwheeling: light skin tone +1F938 1F3FB 200D 2640 ; minimally-qualified # 🤸🏻‍♀ E4.0 woman cartwheeling: light skin tone +1F938 1F3FC 200D 2640 FE0F ; fully-qualified # 🤸🏼‍♀️ E4.0 woman cartwheeling: medium-light skin tone +1F938 1F3FC 200D 2640 ; minimally-qualified # 🤸🏼‍♀ E4.0 woman cartwheeling: medium-light skin tone +1F938 1F3FD 200D 2640 FE0F ; fully-qualified # 🤸🏽‍♀️ E4.0 woman cartwheeling: medium skin tone +1F938 1F3FD 200D 2640 ; minimally-qualified # 🤸🏽‍♀ E4.0 woman cartwheeling: medium skin tone +1F938 1F3FE 200D 2640 FE0F ; fully-qualified # 🤸🏾‍♀️ E4.0 woman cartwheeling: medium-dark skin tone +1F938 1F3FE 200D 2640 ; minimally-qualified # 🤸🏾‍♀ E4.0 woman cartwheeling: medium-dark skin tone +1F938 1F3FF 200D 2640 FE0F ; fully-qualified # 🤸🏿‍♀️ E4.0 woman cartwheeling: dark skin tone +1F938 1F3FF 200D 2640 ; minimally-qualified # 🤸🏿‍♀ E4.0 woman cartwheeling: dark skin tone +1F93C ; fully-qualified # 🤼 E3.0 people wrestling +1F93C 200D 2642 FE0F ; fully-qualified # 🤼‍♂️ E4.0 men wrestling +1F93C 200D 2642 ; minimally-qualified # 🤼‍♂ E4.0 men wrestling +1F93C 200D 2640 FE0F ; fully-qualified # 🤼‍♀️ E4.0 women wrestling +1F93C 200D 2640 ; minimally-qualified # 🤼‍♀ E4.0 women wrestling +1F93D ; fully-qualified # 🤽 E3.0 person playing water polo +1F93D 1F3FB ; fully-qualified # 🤽🏻 E3.0 person playing water polo: light skin tone +1F93D 1F3FC ; fully-qualified # 🤽🏼 E3.0 person playing water polo: medium-light skin tone +1F93D 1F3FD ; fully-qualified # 🤽🏽 E3.0 person playing water polo: medium skin tone +1F93D 1F3FE ; fully-qualified # 🤽🏾 E3.0 person playing water polo: medium-dark skin tone +1F93D 1F3FF ; fully-qualified # 🤽🏿 E3.0 person playing water polo: dark skin tone +1F93D 200D 2642 FE0F ; fully-qualified # 🤽‍♂️ E4.0 man playing water polo +1F93D 200D 2642 ; minimally-qualified # 🤽‍♂ E4.0 man playing water polo +1F93D 1F3FB 200D 2642 FE0F ; fully-qualified # 🤽🏻‍♂️ E4.0 man playing water polo: light skin tone +1F93D 1F3FB 200D 2642 ; minimally-qualified # 🤽🏻‍♂ E4.0 man playing water polo: light skin tone +1F93D 1F3FC 200D 2642 FE0F ; fully-qualified # 🤽🏼‍♂️ E4.0 man playing water polo: medium-light skin tone +1F93D 1F3FC 200D 2642 ; minimally-qualified # 🤽🏼‍♂ E4.0 man playing water polo: medium-light skin tone +1F93D 1F3FD 200D 2642 FE0F ; fully-qualified # 🤽🏽‍♂️ E4.0 man playing water polo: medium skin tone +1F93D 1F3FD 200D 2642 ; minimally-qualified # 🤽🏽‍♂ E4.0 man playing water polo: medium skin tone +1F93D 1F3FE 200D 2642 FE0F ; fully-qualified # 🤽🏾‍♂️ E4.0 man playing water polo: medium-dark skin tone +1F93D 1F3FE 200D 2642 ; minimally-qualified # 🤽🏾‍♂ E4.0 man playing water polo: medium-dark skin tone +1F93D 1F3FF 200D 2642 FE0F ; fully-qualified # 🤽🏿‍♂️ E4.0 man playing water polo: dark skin tone +1F93D 1F3FF 200D 2642 ; minimally-qualified # 🤽🏿‍♂ E4.0 man playing water polo: dark skin tone +1F93D 200D 2640 FE0F ; fully-qualified # 🤽‍♀️ E4.0 woman playing water polo +1F93D 200D 2640 ; minimally-qualified # 🤽‍♀ E4.0 woman playing water polo +1F93D 1F3FB 200D 2640 FE0F ; fully-qualified # 🤽🏻‍♀️ E4.0 woman playing water polo: light skin tone +1F93D 1F3FB 200D 2640 ; minimally-qualified # 🤽🏻‍♀ E4.0 woman playing water polo: light skin tone +1F93D 1F3FC 200D 2640 FE0F ; fully-qualified # 🤽🏼‍♀️ E4.0 woman playing water polo: medium-light skin tone +1F93D 1F3FC 200D 2640 ; minimally-qualified # 🤽🏼‍♀ E4.0 woman playing water polo: medium-light skin tone +1F93D 1F3FD 200D 2640 FE0F ; fully-qualified # 🤽🏽‍♀️ E4.0 woman playing water polo: medium skin tone +1F93D 1F3FD 200D 2640 ; minimally-qualified # 🤽🏽‍♀ E4.0 woman playing water polo: medium skin tone +1F93D 1F3FE 200D 2640 FE0F ; fully-qualified # 🤽🏾‍♀️ E4.0 woman playing water polo: medium-dark skin tone +1F93D 1F3FE 200D 2640 ; minimally-qualified # 🤽🏾‍♀ E4.0 woman playing water polo: medium-dark skin tone +1F93D 1F3FF 200D 2640 FE0F ; fully-qualified # 🤽🏿‍♀️ E4.0 woman playing water polo: dark skin tone +1F93D 1F3FF 200D 2640 ; minimally-qualified # 🤽🏿‍♀ E4.0 woman playing water polo: dark skin tone +1F93E ; fully-qualified # 🤾 E3.0 person playing handball +1F93E 1F3FB ; fully-qualified # 🤾🏻 E3.0 person playing handball: light skin tone +1F93E 1F3FC ; fully-qualified # 🤾🏼 E3.0 person playing handball: medium-light skin tone +1F93E 1F3FD ; fully-qualified # 🤾🏽 E3.0 person playing handball: medium skin tone +1F93E 1F3FE ; fully-qualified # 🤾🏾 E3.0 person playing handball: medium-dark skin tone +1F93E 1F3FF ; fully-qualified # 🤾🏿 E3.0 person playing handball: dark skin tone +1F93E 200D 2642 FE0F ; fully-qualified # 🤾‍♂️ E4.0 man playing handball +1F93E 200D 2642 ; minimally-qualified # 🤾‍♂ E4.0 man playing handball +1F93E 1F3FB 200D 2642 FE0F ; fully-qualified # 🤾🏻‍♂️ E4.0 man playing handball: light skin tone +1F93E 1F3FB 200D 2642 ; minimally-qualified # 🤾🏻‍♂ E4.0 man playing handball: light skin tone +1F93E 1F3FC 200D 2642 FE0F ; fully-qualified # 🤾🏼‍♂️ E4.0 man playing handball: medium-light skin tone +1F93E 1F3FC 200D 2642 ; minimally-qualified # 🤾🏼‍♂ E4.0 man playing handball: medium-light skin tone +1F93E 1F3FD 200D 2642 FE0F ; fully-qualified # 🤾🏽‍♂️ E4.0 man playing handball: medium skin tone +1F93E 1F3FD 200D 2642 ; minimally-qualified # 🤾🏽‍♂ E4.0 man playing handball: medium skin tone +1F93E 1F3FE 200D 2642 FE0F ; fully-qualified # 🤾🏾‍♂️ E4.0 man playing handball: medium-dark skin tone +1F93E 1F3FE 200D 2642 ; minimally-qualified # 🤾🏾‍♂ E4.0 man playing handball: medium-dark skin tone +1F93E 1F3FF 200D 2642 FE0F ; fully-qualified # 🤾🏿‍♂️ E4.0 man playing handball: dark skin tone +1F93E 1F3FF 200D 2642 ; minimally-qualified # 🤾🏿‍♂ E4.0 man playing handball: dark skin tone +1F93E 200D 2640 FE0F ; fully-qualified # 🤾‍♀️ E4.0 woman playing handball +1F93E 200D 2640 ; minimally-qualified # 🤾‍♀ E4.0 woman playing handball +1F93E 1F3FB 200D 2640 FE0F ; fully-qualified # 🤾🏻‍♀️ E4.0 woman playing handball: light skin tone +1F93E 1F3FB 200D 2640 ; minimally-qualified # 🤾🏻‍♀ E4.0 woman playing handball: light skin tone +1F93E 1F3FC 200D 2640 FE0F ; fully-qualified # 🤾🏼‍♀️ E4.0 woman playing handball: medium-light skin tone +1F93E 1F3FC 200D 2640 ; minimally-qualified # 🤾🏼‍♀ E4.0 woman playing handball: medium-light skin tone +1F93E 1F3FD 200D 2640 FE0F ; fully-qualified # 🤾🏽‍♀️ E4.0 woman playing handball: medium skin tone +1F93E 1F3FD 200D 2640 ; minimally-qualified # 🤾🏽‍♀ E4.0 woman playing handball: medium skin tone +1F93E 1F3FE 200D 2640 FE0F ; fully-qualified # 🤾🏾‍♀️ E4.0 woman playing handball: medium-dark skin tone +1F93E 1F3FE 200D 2640 ; minimally-qualified # 🤾🏾‍♀ E4.0 woman playing handball: medium-dark skin tone +1F93E 1F3FF 200D 2640 FE0F ; fully-qualified # 🤾🏿‍♀️ E4.0 woman playing handball: dark skin tone +1F93E 1F3FF 200D 2640 ; minimally-qualified # 🤾🏿‍♀ E4.0 woman playing handball: dark skin tone +1F939 ; fully-qualified # 🤹 E3.0 person juggling +1F939 1F3FB ; fully-qualified # 🤹🏻 E3.0 person juggling: light skin tone +1F939 1F3FC ; fully-qualified # 🤹🏼 E3.0 person juggling: medium-light skin tone +1F939 1F3FD ; fully-qualified # 🤹🏽 E3.0 person juggling: medium skin tone +1F939 1F3FE ; fully-qualified # 🤹🏾 E3.0 person juggling: medium-dark skin tone +1F939 1F3FF ; fully-qualified # 🤹🏿 E3.0 person juggling: dark skin tone +1F939 200D 2642 FE0F ; fully-qualified # 🤹‍♂️ E4.0 man juggling +1F939 200D 2642 ; minimally-qualified # 🤹‍♂ E4.0 man juggling +1F939 1F3FB 200D 2642 FE0F ; fully-qualified # 🤹🏻‍♂️ E4.0 man juggling: light skin tone +1F939 1F3FB 200D 2642 ; minimally-qualified # 🤹🏻‍♂ E4.0 man juggling: light skin tone +1F939 1F3FC 200D 2642 FE0F ; fully-qualified # 🤹🏼‍♂️ E4.0 man juggling: medium-light skin tone +1F939 1F3FC 200D 2642 ; minimally-qualified # 🤹🏼‍♂ E4.0 man juggling: medium-light skin tone +1F939 1F3FD 200D 2642 FE0F ; fully-qualified # 🤹🏽‍♂️ E4.0 man juggling: medium skin tone +1F939 1F3FD 200D 2642 ; minimally-qualified # 🤹🏽‍♂ E4.0 man juggling: medium skin tone +1F939 1F3FE 200D 2642 FE0F ; fully-qualified # 🤹🏾‍♂️ E4.0 man juggling: medium-dark skin tone +1F939 1F3FE 200D 2642 ; minimally-qualified # 🤹🏾‍♂ E4.0 man juggling: medium-dark skin tone +1F939 1F3FF 200D 2642 FE0F ; fully-qualified # 🤹🏿‍♂️ E4.0 man juggling: dark skin tone +1F939 1F3FF 200D 2642 ; minimally-qualified # 🤹🏿‍♂ E4.0 man juggling: dark skin tone +1F939 200D 2640 FE0F ; fully-qualified # 🤹‍♀️ E4.0 woman juggling +1F939 200D 2640 ; minimally-qualified # 🤹‍♀ E4.0 woman juggling +1F939 1F3FB 200D 2640 FE0F ; fully-qualified # 🤹🏻‍♀️ E4.0 woman juggling: light skin tone +1F939 1F3FB 200D 2640 ; minimally-qualified # 🤹🏻‍♀ E4.0 woman juggling: light skin tone +1F939 1F3FC 200D 2640 FE0F ; fully-qualified # 🤹🏼‍♀️ E4.0 woman juggling: medium-light skin tone +1F939 1F3FC 200D 2640 ; minimally-qualified # 🤹🏼‍♀ E4.0 woman juggling: medium-light skin tone +1F939 1F3FD 200D 2640 FE0F ; fully-qualified # 🤹🏽‍♀️ E4.0 woman juggling: medium skin tone +1F939 1F3FD 200D 2640 ; minimally-qualified # 🤹🏽‍♀ E4.0 woman juggling: medium skin tone +1F939 1F3FE 200D 2640 FE0F ; fully-qualified # 🤹🏾‍♀️ E4.0 woman juggling: medium-dark skin tone +1F939 1F3FE 200D 2640 ; minimally-qualified # 🤹🏾‍♀ E4.0 woman juggling: medium-dark skin tone +1F939 1F3FF 200D 2640 FE0F ; fully-qualified # 🤹🏿‍♀️ E4.0 woman juggling: dark skin tone +1F939 1F3FF 200D 2640 ; minimally-qualified # 🤹🏿‍♀ E4.0 woman juggling: dark skin tone + +# subgroup: person-resting +1F9D8 ; fully-qualified # 🧘 E5.0 person in lotus position +1F9D8 1F3FB ; fully-qualified # 🧘🏻 E5.0 person in lotus position: light skin tone +1F9D8 1F3FC ; fully-qualified # 🧘🏼 E5.0 person in lotus position: medium-light skin tone +1F9D8 1F3FD ; fully-qualified # 🧘🏽 E5.0 person in lotus position: medium skin tone +1F9D8 1F3FE ; fully-qualified # 🧘🏾 E5.0 person in lotus position: medium-dark skin tone +1F9D8 1F3FF ; fully-qualified # 🧘🏿 E5.0 person in lotus position: dark skin tone +1F9D8 200D 2642 FE0F ; fully-qualified # 🧘‍♂️ E5.0 man in lotus position +1F9D8 200D 2642 ; minimally-qualified # 🧘‍♂ E5.0 man in lotus position +1F9D8 1F3FB 200D 2642 FE0F ; fully-qualified # 🧘🏻‍♂️ E5.0 man in lotus position: light skin tone +1F9D8 1F3FB 200D 2642 ; minimally-qualified # 🧘🏻‍♂ E5.0 man in lotus position: light skin tone +1F9D8 1F3FC 200D 2642 FE0F ; fully-qualified # 🧘🏼‍♂️ E5.0 man in lotus position: medium-light skin tone +1F9D8 1F3FC 200D 2642 ; minimally-qualified # 🧘🏼‍♂ E5.0 man in lotus position: medium-light skin tone +1F9D8 1F3FD 200D 2642 FE0F ; fully-qualified # 🧘🏽‍♂️ E5.0 man in lotus position: medium skin tone +1F9D8 1F3FD 200D 2642 ; minimally-qualified # 🧘🏽‍♂ E5.0 man in lotus position: medium skin tone +1F9D8 1F3FE 200D 2642 FE0F ; fully-qualified # 🧘🏾‍♂️ E5.0 man in lotus position: medium-dark skin tone +1F9D8 1F3FE 200D 2642 ; minimally-qualified # 🧘🏾‍♂ E5.0 man in lotus position: medium-dark skin tone +1F9D8 1F3FF 200D 2642 FE0F ; fully-qualified # 🧘🏿‍♂️ E5.0 man in lotus position: dark skin tone +1F9D8 1F3FF 200D 2642 ; minimally-qualified # 🧘🏿‍♂ E5.0 man in lotus position: dark skin tone +1F9D8 200D 2640 FE0F ; fully-qualified # 🧘‍♀️ E5.0 woman in lotus position +1F9D8 200D 2640 ; minimally-qualified # 🧘‍♀ E5.0 woman in lotus position +1F9D8 1F3FB 200D 2640 FE0F ; fully-qualified # 🧘🏻‍♀️ E5.0 woman in lotus position: light skin tone +1F9D8 1F3FB 200D 2640 ; minimally-qualified # 🧘🏻‍♀ E5.0 woman in lotus position: light skin tone +1F9D8 1F3FC 200D 2640 FE0F ; fully-qualified # 🧘🏼‍♀️ E5.0 woman in lotus position: medium-light skin tone +1F9D8 1F3FC 200D 2640 ; minimally-qualified # 🧘🏼‍♀ E5.0 woman in lotus position: medium-light skin tone +1F9D8 1F3FD 200D 2640 FE0F ; fully-qualified # 🧘🏽‍♀️ E5.0 woman in lotus position: medium skin tone +1F9D8 1F3FD 200D 2640 ; minimally-qualified # 🧘🏽‍♀ E5.0 woman in lotus position: medium skin tone +1F9D8 1F3FE 200D 2640 FE0F ; fully-qualified # 🧘🏾‍♀️ E5.0 woman in lotus position: medium-dark skin tone +1F9D8 1F3FE 200D 2640 ; minimally-qualified # 🧘🏾‍♀ E5.0 woman in lotus position: medium-dark skin tone +1F9D8 1F3FF 200D 2640 FE0F ; fully-qualified # 🧘🏿‍♀️ E5.0 woman in lotus position: dark skin tone +1F9D8 1F3FF 200D 2640 ; minimally-qualified # 🧘🏿‍♀ E5.0 woman in lotus position: dark skin tone +1F6C0 ; fully-qualified # 🛀 E0.6 person taking bath +1F6C0 1F3FB ; fully-qualified # 🛀🏻 E1.0 person taking bath: light skin tone +1F6C0 1F3FC ; fully-qualified # 🛀🏼 E1.0 person taking bath: medium-light skin tone +1F6C0 1F3FD ; fully-qualified # 🛀🏽 E1.0 person taking bath: medium skin tone +1F6C0 1F3FE ; fully-qualified # 🛀🏾 E1.0 person taking bath: medium-dark skin tone +1F6C0 1F3FF ; fully-qualified # 🛀🏿 E1.0 person taking bath: dark skin tone +1F6CC ; fully-qualified # 🛌 E1.0 person in bed +1F6CC 1F3FB ; fully-qualified # 🛌🏻 E4.0 person in bed: light skin tone +1F6CC 1F3FC ; fully-qualified # 🛌🏼 E4.0 person in bed: medium-light skin tone +1F6CC 1F3FD ; fully-qualified # 🛌🏽 E4.0 person in bed: medium skin tone +1F6CC 1F3FE ; fully-qualified # 🛌🏾 E4.0 person in bed: medium-dark skin tone +1F6CC 1F3FF ; fully-qualified # 🛌🏿 E4.0 person in bed: dark skin tone + +# subgroup: family +1F9D1 200D 1F91D 200D 1F9D1 ; fully-qualified # 🧑‍🤝‍🧑 E12.0 people holding hands +1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏻‍🤝‍🧑🏻 E12.0 people holding hands: light skin tone +1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏻‍🤝‍🧑🏼 E12.1 people holding hands: light skin tone, medium-light skin tone +1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏻‍🤝‍🧑🏽 E12.1 people holding hands: light skin tone, medium skin tone +1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏻‍🤝‍🧑🏾 E12.1 people holding hands: light skin tone, medium-dark skin tone +1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏻‍🤝‍🧑🏿 E12.1 people holding hands: light skin tone, dark skin tone +1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏼‍🤝‍🧑🏻 E12.0 people holding hands: medium-light skin tone, light skin tone +1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏼‍🤝‍🧑🏼 E12.0 people holding hands: medium-light skin tone +1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏼‍🤝‍🧑🏽 E12.1 people holding hands: medium-light skin tone, medium skin tone +1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏼‍🤝‍🧑🏾 E12.1 people holding hands: medium-light skin tone, medium-dark skin tone +1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏼‍🤝‍🧑🏿 E12.1 people holding hands: medium-light skin tone, dark skin tone +1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏽‍🤝‍🧑🏻 E12.0 people holding hands: medium skin tone, light skin tone +1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏽‍🤝‍🧑🏼 E12.0 people holding hands: medium skin tone, medium-light skin tone +1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏽‍🤝‍🧑🏽 E12.0 people holding hands: medium skin tone +1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏽‍🤝‍🧑🏾 E12.1 people holding hands: medium skin tone, medium-dark skin tone +1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏽‍🤝‍🧑🏿 E12.1 people holding hands: medium skin tone, dark skin tone +1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏾‍🤝‍🧑🏻 E12.0 people holding hands: medium-dark skin tone, light skin tone +1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏾‍🤝‍🧑🏼 E12.0 people holding hands: medium-dark skin tone, medium-light skin tone +1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏾‍🤝‍🧑🏽 E12.0 people holding hands: medium-dark skin tone, medium skin tone +1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏾‍🤝‍🧑🏾 E12.0 people holding hands: medium-dark skin tone +1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏾‍🤝‍🧑🏿 E12.1 people holding hands: medium-dark skin tone, dark skin tone +1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏿‍🤝‍🧑🏻 E12.0 people holding hands: dark skin tone, light skin tone +1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏿‍🤝‍🧑🏼 E12.0 people holding hands: dark skin tone, medium-light skin tone +1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏿‍🤝‍🧑🏽 E12.0 people holding hands: dark skin tone, medium skin tone +1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏿‍🤝‍🧑🏾 E12.0 people holding hands: dark skin tone, medium-dark skin tone +1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏿‍🤝‍🧑🏿 E12.0 people holding hands: dark skin tone +1F46D ; fully-qualified # 👭 E1.0 women holding hands +1F46D 1F3FB ; fully-qualified # 👭🏻 E12.0 women holding hands: light skin tone +1F469 1F3FB 200D 1F91D 200D 1F469 1F3FC ; fully-qualified # 👩🏻‍🤝‍👩🏼 E12.1 women holding hands: light skin tone, medium-light skin tone +1F469 1F3FB 200D 1F91D 200D 1F469 1F3FD ; fully-qualified # 👩🏻‍🤝‍👩🏽 E12.1 women holding hands: light skin tone, medium skin tone +1F469 1F3FB 200D 1F91D 200D 1F469 1F3FE ; fully-qualified # 👩🏻‍🤝‍👩🏾 E12.1 women holding hands: light skin tone, medium-dark skin tone +1F469 1F3FB 200D 1F91D 200D 1F469 1F3FF ; fully-qualified # 👩🏻‍🤝‍👩🏿 E12.1 women holding hands: light skin tone, dark skin tone +1F469 1F3FC 200D 1F91D 200D 1F469 1F3FB ; fully-qualified # 👩🏼‍🤝‍👩🏻 E12.0 women holding hands: medium-light skin tone, light skin tone +1F46D 1F3FC ; fully-qualified # 👭🏼 E12.0 women holding hands: medium-light skin tone +1F469 1F3FC 200D 1F91D 200D 1F469 1F3FD ; fully-qualified # 👩🏼‍🤝‍👩🏽 E12.1 women holding hands: medium-light skin tone, medium skin tone +1F469 1F3FC 200D 1F91D 200D 1F469 1F3FE ; fully-qualified # 👩🏼‍🤝‍👩🏾 E12.1 women holding hands: medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 1F91D 200D 1F469 1F3FF ; fully-qualified # 👩🏼‍🤝‍👩🏿 E12.1 women holding hands: medium-light skin tone, dark skin tone +1F469 1F3FD 200D 1F91D 200D 1F469 1F3FB ; fully-qualified # 👩🏽‍🤝‍👩🏻 E12.0 women holding hands: medium skin tone, light skin tone +1F469 1F3FD 200D 1F91D 200D 1F469 1F3FC ; fully-qualified # 👩🏽‍🤝‍👩🏼 E12.0 women holding hands: medium skin tone, medium-light skin tone +1F46D 1F3FD ; fully-qualified # 👭🏽 E12.0 women holding hands: medium skin tone +1F469 1F3FD 200D 1F91D 200D 1F469 1F3FE ; fully-qualified # 👩🏽‍🤝‍👩🏾 E12.1 women holding hands: medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 1F91D 200D 1F469 1F3FF ; fully-qualified # 👩🏽‍🤝‍👩🏿 E12.1 women holding hands: medium skin tone, dark skin tone +1F469 1F3FE 200D 1F91D 200D 1F469 1F3FB ; fully-qualified # 👩🏾‍🤝‍👩🏻 E12.0 women holding hands: medium-dark skin tone, light skin tone +1F469 1F3FE 200D 1F91D 200D 1F469 1F3FC ; fully-qualified # 👩🏾‍🤝‍👩🏼 E12.0 women holding hands: medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 1F91D 200D 1F469 1F3FD ; fully-qualified # 👩🏾‍🤝‍👩🏽 E12.0 women holding hands: medium-dark skin tone, medium skin tone +1F46D 1F3FE ; fully-qualified # 👭🏾 E12.0 women holding hands: medium-dark skin tone +1F469 1F3FE 200D 1F91D 200D 1F469 1F3FF ; fully-qualified # 👩🏾‍🤝‍👩🏿 E12.1 women holding hands: medium-dark skin tone, dark skin tone +1F469 1F3FF 200D 1F91D 200D 1F469 1F3FB ; fully-qualified # 👩🏿‍🤝‍👩🏻 E12.0 women holding hands: dark skin tone, light skin tone +1F469 1F3FF 200D 1F91D 200D 1F469 1F3FC ; fully-qualified # 👩🏿‍🤝‍👩🏼 E12.0 women holding hands: dark skin tone, medium-light skin tone +1F469 1F3FF 200D 1F91D 200D 1F469 1F3FD ; fully-qualified # 👩🏿‍🤝‍👩🏽 E12.0 women holding hands: dark skin tone, medium skin tone +1F469 1F3FF 200D 1F91D 200D 1F469 1F3FE ; fully-qualified # 👩🏿‍🤝‍👩🏾 E12.0 women holding hands: dark skin tone, medium-dark skin tone +1F46D 1F3FF ; fully-qualified # 👭🏿 E12.0 women holding hands: dark skin tone +1F46B ; fully-qualified # 👫 E0.6 woman and man holding hands +1F46B 1F3FB ; fully-qualified # 👫🏻 E12.0 woman and man holding hands: light skin tone +1F469 1F3FB 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👩🏻‍🤝‍👨🏼 E12.0 woman and man holding hands: light skin tone, medium-light skin tone +1F469 1F3FB 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👩🏻‍🤝‍👨🏽 E12.0 woman and man holding hands: light skin tone, medium skin tone +1F469 1F3FB 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👩🏻‍🤝‍👨🏾 E12.0 woman and man holding hands: light skin tone, medium-dark skin tone +1F469 1F3FB 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👩🏻‍🤝‍👨🏿 E12.0 woman and man holding hands: light skin tone, dark skin tone +1F469 1F3FC 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👩🏼‍🤝‍👨🏻 E12.0 woman and man holding hands: medium-light skin tone, light skin tone +1F46B 1F3FC ; fully-qualified # 👫🏼 E12.0 woman and man holding hands: medium-light skin tone +1F469 1F3FC 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👩🏼‍🤝‍👨🏽 E12.0 woman and man holding hands: medium-light skin tone, medium skin tone +1F469 1F3FC 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👩🏼‍🤝‍👨🏾 E12.0 woman and man holding hands: medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👩🏼‍🤝‍👨🏿 E12.0 woman and man holding hands: medium-light skin tone, dark skin tone +1F469 1F3FD 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👩🏽‍🤝‍👨🏻 E12.0 woman and man holding hands: medium skin tone, light skin tone +1F469 1F3FD 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👩🏽‍🤝‍👨🏼 E12.0 woman and man holding hands: medium skin tone, medium-light skin tone +1F46B 1F3FD ; fully-qualified # 👫🏽 E12.0 woman and man holding hands: medium skin tone +1F469 1F3FD 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👩🏽‍🤝‍👨🏾 E12.0 woman and man holding hands: medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👩🏽‍🤝‍👨🏿 E12.0 woman and man holding hands: medium skin tone, dark skin tone +1F469 1F3FE 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👩🏾‍🤝‍👨🏻 E12.0 woman and man holding hands: medium-dark skin tone, light skin tone +1F469 1F3FE 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👩🏾‍🤝‍👨🏼 E12.0 woman and man holding hands: medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👩🏾‍🤝‍👨🏽 E12.0 woman and man holding hands: medium-dark skin tone, medium skin tone +1F46B 1F3FE ; fully-qualified # 👫🏾 E12.0 woman and man holding hands: medium-dark skin tone +1F469 1F3FE 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👩🏾‍🤝‍👨🏿 E12.0 woman and man holding hands: medium-dark skin tone, dark skin tone +1F469 1F3FF 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👩🏿‍🤝‍👨🏻 E12.0 woman and man holding hands: dark skin tone, light skin tone +1F469 1F3FF 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👩🏿‍🤝‍👨🏼 E12.0 woman and man holding hands: dark skin tone, medium-light skin tone +1F469 1F3FF 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👩🏿‍🤝‍👨🏽 E12.0 woman and man holding hands: dark skin tone, medium skin tone +1F469 1F3FF 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👩🏿‍🤝‍👨🏾 E12.0 woman and man holding hands: dark skin tone, medium-dark skin tone +1F46B 1F3FF ; fully-qualified # 👫🏿 E12.0 woman and man holding hands: dark skin tone +1F46C ; fully-qualified # 👬 E1.0 men holding hands +1F46C 1F3FB ; fully-qualified # 👬🏻 E12.0 men holding hands: light skin tone +1F468 1F3FB 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👨🏻‍🤝‍👨🏼 E12.1 men holding hands: light skin tone, medium-light skin tone +1F468 1F3FB 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👨🏻‍🤝‍👨🏽 E12.1 men holding hands: light skin tone, medium skin tone +1F468 1F3FB 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👨🏻‍🤝‍👨🏾 E12.1 men holding hands: light skin tone, medium-dark skin tone +1F468 1F3FB 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👨🏻‍🤝‍👨🏿 E12.1 men holding hands: light skin tone, dark skin tone +1F468 1F3FC 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👨🏼‍🤝‍👨🏻 E12.0 men holding hands: medium-light skin tone, light skin tone +1F46C 1F3FC ; fully-qualified # 👬🏼 E12.0 men holding hands: medium-light skin tone +1F468 1F3FC 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👨🏼‍🤝‍👨🏽 E12.1 men holding hands: medium-light skin tone, medium skin tone +1F468 1F3FC 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👨🏼‍🤝‍👨🏾 E12.1 men holding hands: medium-light skin tone, medium-dark skin tone +1F468 1F3FC 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👨🏼‍🤝‍👨🏿 E12.1 men holding hands: medium-light skin tone, dark skin tone +1F468 1F3FD 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👨🏽‍🤝‍👨🏻 E12.0 men holding hands: medium skin tone, light skin tone +1F468 1F3FD 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👨🏽‍🤝‍👨🏼 E12.0 men holding hands: medium skin tone, medium-light skin tone +1F46C 1F3FD ; fully-qualified # 👬🏽 E12.0 men holding hands: medium skin tone +1F468 1F3FD 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👨🏽‍🤝‍👨🏾 E12.1 men holding hands: medium skin tone, medium-dark skin tone +1F468 1F3FD 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👨🏽‍🤝‍👨🏿 E12.1 men holding hands: medium skin tone, dark skin tone +1F468 1F3FE 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👨🏾‍🤝‍👨🏻 E12.0 men holding hands: medium-dark skin tone, light skin tone +1F468 1F3FE 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👨🏾‍🤝‍👨🏼 E12.0 men holding hands: medium-dark skin tone, medium-light skin tone +1F468 1F3FE 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👨🏾‍🤝‍👨🏽 E12.0 men holding hands: medium-dark skin tone, medium skin tone +1F46C 1F3FE ; fully-qualified # 👬🏾 E12.0 men holding hands: medium-dark skin tone +1F468 1F3FE 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👨🏾‍🤝‍👨🏿 E12.1 men holding hands: medium-dark skin tone, dark skin tone +1F468 1F3FF 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👨🏿‍🤝‍👨🏻 E12.0 men holding hands: dark skin tone, light skin tone +1F468 1F3FF 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👨🏿‍🤝‍👨🏼 E12.0 men holding hands: dark skin tone, medium-light skin tone +1F468 1F3FF 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👨🏿‍🤝‍👨🏽 E12.0 men holding hands: dark skin tone, medium skin tone +1F468 1F3FF 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👨🏿‍🤝‍👨🏾 E12.0 men holding hands: dark skin tone, medium-dark skin tone +1F46C 1F3FF ; fully-qualified # 👬🏿 E12.0 men holding hands: dark skin tone +1F48F ; fully-qualified # 💏 E0.6 kiss +1F48F 1F3FB ; fully-qualified # 💏🏻 E13.1 kiss: light skin tone +1F48F 1F3FC ; fully-qualified # 💏🏼 E13.1 kiss: medium-light skin tone +1F48F 1F3FD ; fully-qualified # 💏🏽 E13.1 kiss: medium skin tone +1F48F 1F3FE ; fully-qualified # 💏🏾 E13.1 kiss: medium-dark skin tone +1F48F 1F3FF ; fully-qualified # 💏🏿 E13.1 kiss: dark skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏻‍❤️‍💋‍🧑🏼 E13.1 kiss: person, person, light skin tone, medium-light skin tone +1F9D1 1F3FB 200D 2764 200D 1F48B 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏻‍❤‍💋‍🧑🏼 E13.1 kiss: person, person, light skin tone, medium-light skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏻‍❤️‍💋‍🧑🏽 E13.1 kiss: person, person, light skin tone, medium skin tone +1F9D1 1F3FB 200D 2764 200D 1F48B 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏻‍❤‍💋‍🧑🏽 E13.1 kiss: person, person, light skin tone, medium skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏻‍❤️‍💋‍🧑🏾 E13.1 kiss: person, person, light skin tone, medium-dark skin tone +1F9D1 1F3FB 200D 2764 200D 1F48B 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏻‍❤‍💋‍🧑🏾 E13.1 kiss: person, person, light skin tone, medium-dark skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏻‍❤️‍💋‍🧑🏿 E13.1 kiss: person, person, light skin tone, dark skin tone +1F9D1 1F3FB 200D 2764 200D 1F48B 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏻‍❤‍💋‍🧑🏿 E13.1 kiss: person, person, light skin tone, dark skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏼‍❤️‍💋‍🧑🏻 E13.1 kiss: person, person, medium-light skin tone, light skin tone +1F9D1 1F3FC 200D 2764 200D 1F48B 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏼‍❤‍💋‍🧑🏻 E13.1 kiss: person, person, medium-light skin tone, light skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏼‍❤️‍💋‍🧑🏽 E13.1 kiss: person, person, medium-light skin tone, medium skin tone +1F9D1 1F3FC 200D 2764 200D 1F48B 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏼‍❤‍💋‍🧑🏽 E13.1 kiss: person, person, medium-light skin tone, medium skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏼‍❤️‍💋‍🧑🏾 E13.1 kiss: person, person, medium-light skin tone, medium-dark skin tone +1F9D1 1F3FC 200D 2764 200D 1F48B 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏼‍❤‍💋‍🧑🏾 E13.1 kiss: person, person, medium-light skin tone, medium-dark skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏼‍❤️‍💋‍🧑🏿 E13.1 kiss: person, person, medium-light skin tone, dark skin tone +1F9D1 1F3FC 200D 2764 200D 1F48B 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏼‍❤‍💋‍🧑🏿 E13.1 kiss: person, person, medium-light skin tone, dark skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏽‍❤️‍💋‍🧑🏻 E13.1 kiss: person, person, medium skin tone, light skin tone +1F9D1 1F3FD 200D 2764 200D 1F48B 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏽‍❤‍💋‍🧑🏻 E13.1 kiss: person, person, medium skin tone, light skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏽‍❤️‍💋‍🧑🏼 E13.1 kiss: person, person, medium skin tone, medium-light skin tone +1F9D1 1F3FD 200D 2764 200D 1F48B 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏽‍❤‍💋‍🧑🏼 E13.1 kiss: person, person, medium skin tone, medium-light skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏽‍❤️‍💋‍🧑🏾 E13.1 kiss: person, person, medium skin tone, medium-dark skin tone +1F9D1 1F3FD 200D 2764 200D 1F48B 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏽‍❤‍💋‍🧑🏾 E13.1 kiss: person, person, medium skin tone, medium-dark skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏽‍❤️‍💋‍🧑🏿 E13.1 kiss: person, person, medium skin tone, dark skin tone +1F9D1 1F3FD 200D 2764 200D 1F48B 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏽‍❤‍💋‍🧑🏿 E13.1 kiss: person, person, medium skin tone, dark skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏾‍❤️‍💋‍🧑🏻 E13.1 kiss: person, person, medium-dark skin tone, light skin tone +1F9D1 1F3FE 200D 2764 200D 1F48B 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏾‍❤‍💋‍🧑🏻 E13.1 kiss: person, person, medium-dark skin tone, light skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏾‍❤️‍💋‍🧑🏼 E13.1 kiss: person, person, medium-dark skin tone, medium-light skin tone +1F9D1 1F3FE 200D 2764 200D 1F48B 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏾‍❤‍💋‍🧑🏼 E13.1 kiss: person, person, medium-dark skin tone, medium-light skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏾‍❤️‍💋‍🧑🏽 E13.1 kiss: person, person, medium-dark skin tone, medium skin tone +1F9D1 1F3FE 200D 2764 200D 1F48B 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏾‍❤‍💋‍🧑🏽 E13.1 kiss: person, person, medium-dark skin tone, medium skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏾‍❤️‍💋‍🧑🏿 E13.1 kiss: person, person, medium-dark skin tone, dark skin tone +1F9D1 1F3FE 200D 2764 200D 1F48B 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏾‍❤‍💋‍🧑🏿 E13.1 kiss: person, person, medium-dark skin tone, dark skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏿‍❤️‍💋‍🧑🏻 E13.1 kiss: person, person, dark skin tone, light skin tone +1F9D1 1F3FF 200D 2764 200D 1F48B 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏿‍❤‍💋‍🧑🏻 E13.1 kiss: person, person, dark skin tone, light skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏿‍❤️‍💋‍🧑🏼 E13.1 kiss: person, person, dark skin tone, medium-light skin tone +1F9D1 1F3FF 200D 2764 200D 1F48B 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏿‍❤‍💋‍🧑🏼 E13.1 kiss: person, person, dark skin tone, medium-light skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏿‍❤️‍💋‍🧑🏽 E13.1 kiss: person, person, dark skin tone, medium skin tone +1F9D1 1F3FF 200D 2764 200D 1F48B 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏿‍❤‍💋‍🧑🏽 E13.1 kiss: person, person, dark skin tone, medium skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏿‍❤️‍💋‍🧑🏾 E13.1 kiss: person, person, dark skin tone, medium-dark skin tone +1F9D1 1F3FF 200D 2764 200D 1F48B 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏿‍❤‍💋‍🧑🏾 E13.1 kiss: person, person, dark skin tone, medium-dark skin tone +1F469 200D 2764 FE0F 200D 1F48B 200D 1F468 ; fully-qualified # 👩‍❤️‍💋‍👨 E2.0 kiss: woman, man +1F469 200D 2764 200D 1F48B 200D 1F468 ; minimally-qualified # 👩‍❤‍💋‍👨 E2.0 kiss: woman, man +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👩🏻‍❤️‍💋‍👨🏻 E13.1 kiss: woman, man, light skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👩🏻‍❤‍💋‍👨🏻 E13.1 kiss: woman, man, light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👩🏻‍❤️‍💋‍👨🏼 E13.1 kiss: woman, man, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👩🏻‍❤‍💋‍👨🏼 E13.1 kiss: woman, man, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👩🏻‍❤️‍💋‍👨🏽 E13.1 kiss: woman, man, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👩🏻‍❤‍💋‍👨🏽 E13.1 kiss: woman, man, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👩🏻‍❤️‍💋‍👨🏾 E13.1 kiss: woman, man, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👩🏻‍❤‍💋‍👨🏾 E13.1 kiss: woman, man, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👩🏻‍❤️‍💋‍👨🏿 E13.1 kiss: woman, man, light skin tone, dark skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👩🏻‍❤‍💋‍👨🏿 E13.1 kiss: woman, man, light skin tone, dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👩🏼‍❤️‍💋‍👨🏻 E13.1 kiss: woman, man, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👩🏼‍❤‍💋‍👨🏻 E13.1 kiss: woman, man, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👩🏼‍❤️‍💋‍👨🏼 E13.1 kiss: woman, man, medium-light skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👩🏼‍❤‍💋‍👨🏼 E13.1 kiss: woman, man, medium-light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👩🏼‍❤️‍💋‍👨🏽 E13.1 kiss: woman, man, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👩🏼‍❤‍💋‍👨🏽 E13.1 kiss: woman, man, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👩🏼‍❤️‍💋‍👨🏾 E13.1 kiss: woman, man, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👩🏼‍❤‍💋‍👨🏾 E13.1 kiss: woman, man, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👩🏼‍❤️‍💋‍👨🏿 E13.1 kiss: woman, man, medium-light skin tone, dark skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👩🏼‍❤‍💋‍👨🏿 E13.1 kiss: woman, man, medium-light skin tone, dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👩🏽‍❤️‍💋‍👨🏻 E13.1 kiss: woman, man, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👩🏽‍❤‍💋‍👨🏻 E13.1 kiss: woman, man, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👩🏽‍❤️‍💋‍👨🏼 E13.1 kiss: woman, man, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👩🏽‍❤‍💋‍👨🏼 E13.1 kiss: woman, man, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👩🏽‍❤️‍💋‍👨🏽 E13.1 kiss: woman, man, medium skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👩🏽‍❤‍💋‍👨🏽 E13.1 kiss: woman, man, medium skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👩🏽‍❤️‍💋‍👨🏾 E13.1 kiss: woman, man, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👩🏽‍❤‍💋‍👨🏾 E13.1 kiss: woman, man, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👩🏽‍❤️‍💋‍👨🏿 E13.1 kiss: woman, man, medium skin tone, dark skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👩🏽‍❤‍💋‍👨🏿 E13.1 kiss: woman, man, medium skin tone, dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👩🏾‍❤️‍💋‍👨🏻 E13.1 kiss: woman, man, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👩🏾‍❤‍💋‍👨🏻 E13.1 kiss: woman, man, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👩🏾‍❤️‍💋‍👨🏼 E13.1 kiss: woman, man, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👩🏾‍❤‍💋‍👨🏼 E13.1 kiss: woman, man, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👩🏾‍❤️‍💋‍👨🏽 E13.1 kiss: woman, man, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👩🏾‍❤‍💋‍👨🏽 E13.1 kiss: woman, man, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👩🏾‍❤️‍💋‍👨🏾 E13.1 kiss: woman, man, medium-dark skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👩🏾‍❤‍💋‍👨🏾 E13.1 kiss: woman, man, medium-dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👩🏾‍❤️‍💋‍👨🏿 E13.1 kiss: woman, man, medium-dark skin tone, dark skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👩🏾‍❤‍💋‍👨🏿 E13.1 kiss: woman, man, medium-dark skin tone, dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👩🏿‍❤️‍💋‍👨🏻 E13.1 kiss: woman, man, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👩🏿‍❤‍💋‍👨🏻 E13.1 kiss: woman, man, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👩🏿‍❤️‍💋‍👨🏼 E13.1 kiss: woman, man, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👩🏿‍❤‍💋‍👨🏼 E13.1 kiss: woman, man, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👩🏿‍❤️‍💋‍👨🏽 E13.1 kiss: woman, man, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👩🏿‍❤‍💋‍👨🏽 E13.1 kiss: woman, man, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👩🏿‍❤️‍💋‍👨🏾 E13.1 kiss: woman, man, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👩🏿‍❤‍💋‍👨🏾 E13.1 kiss: woman, man, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👩🏿‍❤️‍💋‍👨🏿 E13.1 kiss: woman, man, dark skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👩🏿‍❤‍💋‍👨🏿 E13.1 kiss: woman, man, dark skin tone +1F468 200D 2764 FE0F 200D 1F48B 200D 1F468 ; fully-qualified # 👨‍❤️‍💋‍👨 E2.0 kiss: man, man +1F468 200D 2764 200D 1F48B 200D 1F468 ; minimally-qualified # 👨‍❤‍💋‍👨 E2.0 kiss: man, man +1F468 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👨🏻‍❤️‍💋‍👨🏻 E13.1 kiss: man, man, light skin tone +1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👨🏻‍❤‍💋‍👨🏻 E13.1 kiss: man, man, light skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👨🏻‍❤️‍💋‍👨🏼 E13.1 kiss: man, man, light skin tone, medium-light skin tone +1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👨🏻‍❤‍💋‍👨🏼 E13.1 kiss: man, man, light skin tone, medium-light skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👨🏻‍❤️‍💋‍👨🏽 E13.1 kiss: man, man, light skin tone, medium skin tone +1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👨🏻‍❤‍💋‍👨🏽 E13.1 kiss: man, man, light skin tone, medium skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👨🏻‍❤️‍💋‍👨🏾 E13.1 kiss: man, man, light skin tone, medium-dark skin tone +1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👨🏻‍❤‍💋‍👨🏾 E13.1 kiss: man, man, light skin tone, medium-dark skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👨🏻‍❤️‍💋‍👨🏿 E13.1 kiss: man, man, light skin tone, dark skin tone +1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👨🏻‍❤‍💋‍👨🏿 E13.1 kiss: man, man, light skin tone, dark skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👨🏼‍❤️‍💋‍👨🏻 E13.1 kiss: man, man, medium-light skin tone, light skin tone +1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👨🏼‍❤‍💋‍👨🏻 E13.1 kiss: man, man, medium-light skin tone, light skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👨🏼‍❤️‍💋‍👨🏼 E13.1 kiss: man, man, medium-light skin tone +1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👨🏼‍❤‍💋‍👨🏼 E13.1 kiss: man, man, medium-light skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👨🏼‍❤️‍💋‍👨🏽 E13.1 kiss: man, man, medium-light skin tone, medium skin tone +1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👨🏼‍❤‍💋‍👨🏽 E13.1 kiss: man, man, medium-light skin tone, medium skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👨🏼‍❤️‍💋‍👨🏾 E13.1 kiss: man, man, medium-light skin tone, medium-dark skin tone +1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👨🏼‍❤‍💋‍👨🏾 E13.1 kiss: man, man, medium-light skin tone, medium-dark skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👨🏼‍❤️‍💋‍👨🏿 E13.1 kiss: man, man, medium-light skin tone, dark skin tone +1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👨🏼‍❤‍💋‍👨🏿 E13.1 kiss: man, man, medium-light skin tone, dark skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👨🏽‍❤️‍💋‍👨🏻 E13.1 kiss: man, man, medium skin tone, light skin tone +1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👨🏽‍❤‍💋‍👨🏻 E13.1 kiss: man, man, medium skin tone, light skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👨🏽‍❤️‍💋‍👨🏼 E13.1 kiss: man, man, medium skin tone, medium-light skin tone +1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👨🏽‍❤‍💋‍👨🏼 E13.1 kiss: man, man, medium skin tone, medium-light skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👨🏽‍❤️‍💋‍👨🏽 E13.1 kiss: man, man, medium skin tone +1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👨🏽‍❤‍💋‍👨🏽 E13.1 kiss: man, man, medium skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👨🏽‍❤️‍💋‍👨🏾 E13.1 kiss: man, man, medium skin tone, medium-dark skin tone +1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👨🏽‍❤‍💋‍👨🏾 E13.1 kiss: man, man, medium skin tone, medium-dark skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👨🏽‍❤️‍💋‍👨🏿 E13.1 kiss: man, man, medium skin tone, dark skin tone +1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👨🏽‍❤‍💋‍👨🏿 E13.1 kiss: man, man, medium skin tone, dark skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👨🏾‍❤️‍💋‍👨🏻 E13.1 kiss: man, man, medium-dark skin tone, light skin tone +1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👨🏾‍❤‍💋‍👨🏻 E13.1 kiss: man, man, medium-dark skin tone, light skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👨🏾‍❤️‍💋‍👨🏼 E13.1 kiss: man, man, medium-dark skin tone, medium-light skin tone +1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👨🏾‍❤‍💋‍👨🏼 E13.1 kiss: man, man, medium-dark skin tone, medium-light skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👨🏾‍❤️‍💋‍👨🏽 E13.1 kiss: man, man, medium-dark skin tone, medium skin tone +1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👨🏾‍❤‍💋‍👨🏽 E13.1 kiss: man, man, medium-dark skin tone, medium skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👨🏾‍❤️‍💋‍👨🏾 E13.1 kiss: man, man, medium-dark skin tone +1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👨🏾‍❤‍💋‍👨🏾 E13.1 kiss: man, man, medium-dark skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👨🏾‍❤️‍💋‍👨🏿 E13.1 kiss: man, man, medium-dark skin tone, dark skin tone +1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👨🏾‍❤‍💋‍👨🏿 E13.1 kiss: man, man, medium-dark skin tone, dark skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB ; fully-qualified # 👨🏿‍❤️‍💋‍👨🏻 E13.1 kiss: man, man, dark skin tone, light skin tone +1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FB ; minimally-qualified # 👨🏿‍❤‍💋‍👨🏻 E13.1 kiss: man, man, dark skin tone, light skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC ; fully-qualified # 👨🏿‍❤️‍💋‍👨🏼 E13.1 kiss: man, man, dark skin tone, medium-light skin tone +1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FC ; minimally-qualified # 👨🏿‍❤‍💋‍👨🏼 E13.1 kiss: man, man, dark skin tone, medium-light skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD ; fully-qualified # 👨🏿‍❤️‍💋‍👨🏽 E13.1 kiss: man, man, dark skin tone, medium skin tone +1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FD ; minimally-qualified # 👨🏿‍❤‍💋‍👨🏽 E13.1 kiss: man, man, dark skin tone, medium skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE ; fully-qualified # 👨🏿‍❤️‍💋‍👨🏾 E13.1 kiss: man, man, dark skin tone, medium-dark skin tone +1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FE ; minimally-qualified # 👨🏿‍❤‍💋‍👨🏾 E13.1 kiss: man, man, dark skin tone, medium-dark skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF ; fully-qualified # 👨🏿‍❤️‍💋‍👨🏿 E13.1 kiss: man, man, dark skin tone +1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FF ; minimally-qualified # 👨🏿‍❤‍💋‍👨🏿 E13.1 kiss: man, man, dark skin tone +1F469 200D 2764 FE0F 200D 1F48B 200D 1F469 ; fully-qualified # 👩‍❤️‍💋‍👩 E2.0 kiss: woman, woman +1F469 200D 2764 200D 1F48B 200D 1F469 ; minimally-qualified # 👩‍❤‍💋‍👩 E2.0 kiss: woman, woman +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FB ; fully-qualified # 👩🏻‍❤️‍💋‍👩🏻 E13.1 kiss: woman, woman, light skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FB ; minimally-qualified # 👩🏻‍❤‍💋‍👩🏻 E13.1 kiss: woman, woman, light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FC ; fully-qualified # 👩🏻‍❤️‍💋‍👩🏼 E13.1 kiss: woman, woman, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FC ; minimally-qualified # 👩🏻‍❤‍💋‍👩🏼 E13.1 kiss: woman, woman, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FD ; fully-qualified # 👩🏻‍❤️‍💋‍👩🏽 E13.1 kiss: woman, woman, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FD ; minimally-qualified # 👩🏻‍❤‍💋‍👩🏽 E13.1 kiss: woman, woman, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FE ; fully-qualified # 👩🏻‍❤️‍💋‍👩🏾 E13.1 kiss: woman, woman, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FE ; minimally-qualified # 👩🏻‍❤‍💋‍👩🏾 E13.1 kiss: woman, woman, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FF ; fully-qualified # 👩🏻‍❤️‍💋‍👩🏿 E13.1 kiss: woman, woman, light skin tone, dark skin tone +1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FF ; minimally-qualified # 👩🏻‍❤‍💋‍👩🏿 E13.1 kiss: woman, woman, light skin tone, dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FB ; fully-qualified # 👩🏼‍❤️‍💋‍👩🏻 E13.1 kiss: woman, woman, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FB ; minimally-qualified # 👩🏼‍❤‍💋‍👩🏻 E13.1 kiss: woman, woman, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FC ; fully-qualified # 👩🏼‍❤️‍💋‍👩🏼 E13.1 kiss: woman, woman, medium-light skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FC ; minimally-qualified # 👩🏼‍❤‍💋‍👩🏼 E13.1 kiss: woman, woman, medium-light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FD ; fully-qualified # 👩🏼‍❤️‍💋‍👩🏽 E13.1 kiss: woman, woman, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FD ; minimally-qualified # 👩🏼‍❤‍💋‍👩🏽 E13.1 kiss: woman, woman, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FE ; fully-qualified # 👩🏼‍❤️‍💋‍👩🏾 E13.1 kiss: woman, woman, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FE ; minimally-qualified # 👩🏼‍❤‍💋‍👩🏾 E13.1 kiss: woman, woman, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FF ; fully-qualified # 👩🏼‍❤️‍💋‍👩🏿 E13.1 kiss: woman, woman, medium-light skin tone, dark skin tone +1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FF ; minimally-qualified # 👩🏼‍❤‍💋‍👩🏿 E13.1 kiss: woman, woman, medium-light skin tone, dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FB ; fully-qualified # 👩🏽‍❤️‍💋‍👩🏻 E13.1 kiss: woman, woman, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FB ; minimally-qualified # 👩🏽‍❤‍💋‍👩🏻 E13.1 kiss: woman, woman, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FC ; fully-qualified # 👩🏽‍❤️‍💋‍👩🏼 E13.1 kiss: woman, woman, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FC ; minimally-qualified # 👩🏽‍❤‍💋‍👩🏼 E13.1 kiss: woman, woman, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FD ; fully-qualified # 👩🏽‍❤️‍💋‍👩🏽 E13.1 kiss: woman, woman, medium skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FD ; minimally-qualified # 👩🏽‍❤‍💋‍👩🏽 E13.1 kiss: woman, woman, medium skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FE ; fully-qualified # 👩🏽‍❤️‍💋‍👩🏾 E13.1 kiss: woman, woman, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FE ; minimally-qualified # 👩🏽‍❤‍💋‍👩🏾 E13.1 kiss: woman, woman, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FF ; fully-qualified # 👩🏽‍❤️‍💋‍👩🏿 E13.1 kiss: woman, woman, medium skin tone, dark skin tone +1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FF ; minimally-qualified # 👩🏽‍❤‍💋‍👩🏿 E13.1 kiss: woman, woman, medium skin tone, dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FB ; fully-qualified # 👩🏾‍❤️‍💋‍👩🏻 E13.1 kiss: woman, woman, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FB ; minimally-qualified # 👩🏾‍❤‍💋‍👩🏻 E13.1 kiss: woman, woman, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FC ; fully-qualified # 👩🏾‍❤️‍💋‍👩🏼 E13.1 kiss: woman, woman, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FC ; minimally-qualified # 👩🏾‍❤‍💋‍👩🏼 E13.1 kiss: woman, woman, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FD ; fully-qualified # 👩🏾‍❤️‍💋‍👩🏽 E13.1 kiss: woman, woman, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FD ; minimally-qualified # 👩🏾‍❤‍💋‍👩🏽 E13.1 kiss: woman, woman, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FE ; fully-qualified # 👩🏾‍❤️‍💋‍👩🏾 E13.1 kiss: woman, woman, medium-dark skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FE ; minimally-qualified # 👩🏾‍❤‍💋‍👩🏾 E13.1 kiss: woman, woman, medium-dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FF ; fully-qualified # 👩🏾‍❤️‍💋‍👩🏿 E13.1 kiss: woman, woman, medium-dark skin tone, dark skin tone +1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FF ; minimally-qualified # 👩🏾‍❤‍💋‍👩🏿 E13.1 kiss: woman, woman, medium-dark skin tone, dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FB ; fully-qualified # 👩🏿‍❤️‍💋‍👩🏻 E13.1 kiss: woman, woman, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FB ; minimally-qualified # 👩🏿‍❤‍💋‍👩🏻 E13.1 kiss: woman, woman, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FC ; fully-qualified # 👩🏿‍❤️‍💋‍👩🏼 E13.1 kiss: woman, woman, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FC ; minimally-qualified # 👩🏿‍❤‍💋‍👩🏼 E13.1 kiss: woman, woman, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FD ; fully-qualified # 👩🏿‍❤️‍💋‍👩🏽 E13.1 kiss: woman, woman, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FD ; minimally-qualified # 👩🏿‍❤‍💋‍👩🏽 E13.1 kiss: woman, woman, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FE ; fully-qualified # 👩🏿‍❤️‍💋‍👩🏾 E13.1 kiss: woman, woman, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FE ; minimally-qualified # 👩🏿‍❤‍💋‍👩🏾 E13.1 kiss: woman, woman, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FF ; fully-qualified # 👩🏿‍❤️‍💋‍👩🏿 E13.1 kiss: woman, woman, dark skin tone +1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FF ; minimally-qualified # 👩🏿‍❤‍💋‍👩🏿 E13.1 kiss: woman, woman, dark skin tone +1F491 ; fully-qualified # 💑 E0.6 couple with heart +1F491 1F3FB ; fully-qualified # 💑🏻 E13.1 couple with heart: light skin tone +1F491 1F3FC ; fully-qualified # 💑🏼 E13.1 couple with heart: medium-light skin tone +1F491 1F3FD ; fully-qualified # 💑🏽 E13.1 couple with heart: medium skin tone +1F491 1F3FE ; fully-qualified # 💑🏾 E13.1 couple with heart: medium-dark skin tone +1F491 1F3FF ; fully-qualified # 💑🏿 E13.1 couple with heart: dark skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏻‍❤️‍🧑🏼 E13.1 couple with heart: person, person, light skin tone, medium-light skin tone +1F9D1 1F3FB 200D 2764 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏻‍❤‍🧑🏼 E13.1 couple with heart: person, person, light skin tone, medium-light skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏻‍❤️‍🧑🏽 E13.1 couple with heart: person, person, light skin tone, medium skin tone +1F9D1 1F3FB 200D 2764 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏻‍❤‍🧑🏽 E13.1 couple with heart: person, person, light skin tone, medium skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏻‍❤️‍🧑🏾 E13.1 couple with heart: person, person, light skin tone, medium-dark skin tone +1F9D1 1F3FB 200D 2764 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏻‍❤‍🧑🏾 E13.1 couple with heart: person, person, light skin tone, medium-dark skin tone +1F9D1 1F3FB 200D 2764 FE0F 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏻‍❤️‍🧑🏿 E13.1 couple with heart: person, person, light skin tone, dark skin tone +1F9D1 1F3FB 200D 2764 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏻‍❤‍🧑🏿 E13.1 couple with heart: person, person, light skin tone, dark skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏼‍❤️‍🧑🏻 E13.1 couple with heart: person, person, medium-light skin tone, light skin tone +1F9D1 1F3FC 200D 2764 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏼‍❤‍🧑🏻 E13.1 couple with heart: person, person, medium-light skin tone, light skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏼‍❤️‍🧑🏽 E13.1 couple with heart: person, person, medium-light skin tone, medium skin tone +1F9D1 1F3FC 200D 2764 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏼‍❤‍🧑🏽 E13.1 couple with heart: person, person, medium-light skin tone, medium skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏼‍❤️‍🧑🏾 E13.1 couple with heart: person, person, medium-light skin tone, medium-dark skin tone +1F9D1 1F3FC 200D 2764 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏼‍❤‍🧑🏾 E13.1 couple with heart: person, person, medium-light skin tone, medium-dark skin tone +1F9D1 1F3FC 200D 2764 FE0F 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏼‍❤️‍🧑🏿 E13.1 couple with heart: person, person, medium-light skin tone, dark skin tone +1F9D1 1F3FC 200D 2764 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏼‍❤‍🧑🏿 E13.1 couple with heart: person, person, medium-light skin tone, dark skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏽‍❤️‍🧑🏻 E13.1 couple with heart: person, person, medium skin tone, light skin tone +1F9D1 1F3FD 200D 2764 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏽‍❤‍🧑🏻 E13.1 couple with heart: person, person, medium skin tone, light skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏽‍❤️‍🧑🏼 E13.1 couple with heart: person, person, medium skin tone, medium-light skin tone +1F9D1 1F3FD 200D 2764 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏽‍❤‍🧑🏼 E13.1 couple with heart: person, person, medium skin tone, medium-light skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏽‍❤️‍🧑🏾 E13.1 couple with heart: person, person, medium skin tone, medium-dark skin tone +1F9D1 1F3FD 200D 2764 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏽‍❤‍🧑🏾 E13.1 couple with heart: person, person, medium skin tone, medium-dark skin tone +1F9D1 1F3FD 200D 2764 FE0F 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏽‍❤️‍🧑🏿 E13.1 couple with heart: person, person, medium skin tone, dark skin tone +1F9D1 1F3FD 200D 2764 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏽‍❤‍🧑🏿 E13.1 couple with heart: person, person, medium skin tone, dark skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏾‍❤️‍🧑🏻 E13.1 couple with heart: person, person, medium-dark skin tone, light skin tone +1F9D1 1F3FE 200D 2764 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏾‍❤‍🧑🏻 E13.1 couple with heart: person, person, medium-dark skin tone, light skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏾‍❤️‍🧑🏼 E13.1 couple with heart: person, person, medium-dark skin tone, medium-light skin tone +1F9D1 1F3FE 200D 2764 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏾‍❤‍🧑🏼 E13.1 couple with heart: person, person, medium-dark skin tone, medium-light skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏾‍❤️‍🧑🏽 E13.1 couple with heart: person, person, medium-dark skin tone, medium skin tone +1F9D1 1F3FE 200D 2764 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏾‍❤‍🧑🏽 E13.1 couple with heart: person, person, medium-dark skin tone, medium skin tone +1F9D1 1F3FE 200D 2764 FE0F 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏾‍❤️‍🧑🏿 E13.1 couple with heart: person, person, medium-dark skin tone, dark skin tone +1F9D1 1F3FE 200D 2764 200D 1F9D1 1F3FF ; minimally-qualified # 🧑🏾‍❤‍🧑🏿 E13.1 couple with heart: person, person, medium-dark skin tone, dark skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏿‍❤️‍🧑🏻 E13.1 couple with heart: person, person, dark skin tone, light skin tone +1F9D1 1F3FF 200D 2764 200D 1F9D1 1F3FB ; minimally-qualified # 🧑🏿‍❤‍🧑🏻 E13.1 couple with heart: person, person, dark skin tone, light skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏿‍❤️‍🧑🏼 E13.1 couple with heart: person, person, dark skin tone, medium-light skin tone +1F9D1 1F3FF 200D 2764 200D 1F9D1 1F3FC ; minimally-qualified # 🧑🏿‍❤‍🧑🏼 E13.1 couple with heart: person, person, dark skin tone, medium-light skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏿‍❤️‍🧑🏽 E13.1 couple with heart: person, person, dark skin tone, medium skin tone +1F9D1 1F3FF 200D 2764 200D 1F9D1 1F3FD ; minimally-qualified # 🧑🏿‍❤‍🧑🏽 E13.1 couple with heart: person, person, dark skin tone, medium skin tone +1F9D1 1F3FF 200D 2764 FE0F 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏿‍❤️‍🧑🏾 E13.1 couple with heart: person, person, dark skin tone, medium-dark skin tone +1F9D1 1F3FF 200D 2764 200D 1F9D1 1F3FE ; minimally-qualified # 🧑🏿‍❤‍🧑🏾 E13.1 couple with heart: person, person, dark skin tone, medium-dark skin tone +1F469 200D 2764 FE0F 200D 1F468 ; fully-qualified # 👩‍❤️‍👨 E2.0 couple with heart: woman, man +1F469 200D 2764 200D 1F468 ; minimally-qualified # 👩‍❤‍👨 E2.0 couple with heart: woman, man +1F469 1F3FB 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👩🏻‍❤️‍👨🏻 E13.1 couple with heart: woman, man, light skin tone +1F469 1F3FB 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👩🏻‍❤‍👨🏻 E13.1 couple with heart: woman, man, light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👩🏻‍❤️‍👨🏼 E13.1 couple with heart: woman, man, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👩🏻‍❤‍👨🏼 E13.1 couple with heart: woman, man, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👩🏻‍❤️‍👨🏽 E13.1 couple with heart: woman, man, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👩🏻‍❤‍👨🏽 E13.1 couple with heart: woman, man, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👩🏻‍❤️‍👨🏾 E13.1 couple with heart: woman, man, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👩🏻‍❤‍👨🏾 E13.1 couple with heart: woman, man, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👩🏻‍❤️‍👨🏿 E13.1 couple with heart: woman, man, light skin tone, dark skin tone +1F469 1F3FB 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👩🏻‍❤‍👨🏿 E13.1 couple with heart: woman, man, light skin tone, dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👩🏼‍❤️‍👨🏻 E13.1 couple with heart: woman, man, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👩🏼‍❤‍👨🏻 E13.1 couple with heart: woman, man, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👩🏼‍❤️‍👨🏼 E13.1 couple with heart: woman, man, medium-light skin tone +1F469 1F3FC 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👩🏼‍❤‍👨🏼 E13.1 couple with heart: woman, man, medium-light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👩🏼‍❤️‍👨🏽 E13.1 couple with heart: woman, man, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👩🏼‍❤‍👨🏽 E13.1 couple with heart: woman, man, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👩🏼‍❤️‍👨🏾 E13.1 couple with heart: woman, man, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👩🏼‍❤‍👨🏾 E13.1 couple with heart: woman, man, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👩🏼‍❤️‍👨🏿 E13.1 couple with heart: woman, man, medium-light skin tone, dark skin tone +1F469 1F3FC 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👩🏼‍❤‍👨🏿 E13.1 couple with heart: woman, man, medium-light skin tone, dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👩🏽‍❤️‍👨🏻 E13.1 couple with heart: woman, man, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👩🏽‍❤‍👨🏻 E13.1 couple with heart: woman, man, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👩🏽‍❤️‍👨🏼 E13.1 couple with heart: woman, man, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👩🏽‍❤‍👨🏼 E13.1 couple with heart: woman, man, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👩🏽‍❤️‍👨🏽 E13.1 couple with heart: woman, man, medium skin tone +1F469 1F3FD 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👩🏽‍❤‍👨🏽 E13.1 couple with heart: woman, man, medium skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👩🏽‍❤️‍👨🏾 E13.1 couple with heart: woman, man, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👩🏽‍❤‍👨🏾 E13.1 couple with heart: woman, man, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👩🏽‍❤️‍👨🏿 E13.1 couple with heart: woman, man, medium skin tone, dark skin tone +1F469 1F3FD 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👩🏽‍❤‍👨🏿 E13.1 couple with heart: woman, man, medium skin tone, dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👩🏾‍❤️‍👨🏻 E13.1 couple with heart: woman, man, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👩🏾‍❤‍👨🏻 E13.1 couple with heart: woman, man, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👩🏾‍❤️‍👨🏼 E13.1 couple with heart: woman, man, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👩🏾‍❤‍👨🏼 E13.1 couple with heart: woman, man, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👩🏾‍❤️‍👨🏽 E13.1 couple with heart: woman, man, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👩🏾‍❤‍👨🏽 E13.1 couple with heart: woman, man, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👩🏾‍❤️‍👨🏾 E13.1 couple with heart: woman, man, medium-dark skin tone +1F469 1F3FE 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👩🏾‍❤‍👨🏾 E13.1 couple with heart: woman, man, medium-dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👩🏾‍❤️‍👨🏿 E13.1 couple with heart: woman, man, medium-dark skin tone, dark skin tone +1F469 1F3FE 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👩🏾‍❤‍👨🏿 E13.1 couple with heart: woman, man, medium-dark skin tone, dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👩🏿‍❤️‍👨🏻 E13.1 couple with heart: woman, man, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👩🏿‍❤‍👨🏻 E13.1 couple with heart: woman, man, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👩🏿‍❤️‍👨🏼 E13.1 couple with heart: woman, man, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👩🏿‍❤‍👨🏼 E13.1 couple with heart: woman, man, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👩🏿‍❤️‍👨🏽 E13.1 couple with heart: woman, man, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👩🏿‍❤‍👨🏽 E13.1 couple with heart: woman, man, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👩🏿‍❤️‍👨🏾 E13.1 couple with heart: woman, man, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👩🏿‍❤‍👨🏾 E13.1 couple with heart: woman, man, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👩🏿‍❤️‍👨🏿 E13.1 couple with heart: woman, man, dark skin tone +1F469 1F3FF 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👩🏿‍❤‍👨🏿 E13.1 couple with heart: woman, man, dark skin tone +1F468 200D 2764 FE0F 200D 1F468 ; fully-qualified # 👨‍❤️‍👨 E2.0 couple with heart: man, man +1F468 200D 2764 200D 1F468 ; minimally-qualified # 👨‍❤‍👨 E2.0 couple with heart: man, man +1F468 1F3FB 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👨🏻‍❤️‍👨🏻 E13.1 couple with heart: man, man, light skin tone +1F468 1F3FB 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👨🏻‍❤‍👨🏻 E13.1 couple with heart: man, man, light skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👨🏻‍❤️‍👨🏼 E13.1 couple with heart: man, man, light skin tone, medium-light skin tone +1F468 1F3FB 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👨🏻‍❤‍👨🏼 E13.1 couple with heart: man, man, light skin tone, medium-light skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👨🏻‍❤️‍👨🏽 E13.1 couple with heart: man, man, light skin tone, medium skin tone +1F468 1F3FB 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👨🏻‍❤‍👨🏽 E13.1 couple with heart: man, man, light skin tone, medium skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👨🏻‍❤️‍👨🏾 E13.1 couple with heart: man, man, light skin tone, medium-dark skin tone +1F468 1F3FB 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👨🏻‍❤‍👨🏾 E13.1 couple with heart: man, man, light skin tone, medium-dark skin tone +1F468 1F3FB 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👨🏻‍❤️‍👨🏿 E13.1 couple with heart: man, man, light skin tone, dark skin tone +1F468 1F3FB 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👨🏻‍❤‍👨🏿 E13.1 couple with heart: man, man, light skin tone, dark skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👨🏼‍❤️‍👨🏻 E13.1 couple with heart: man, man, medium-light skin tone, light skin tone +1F468 1F3FC 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👨🏼‍❤‍👨🏻 E13.1 couple with heart: man, man, medium-light skin tone, light skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👨🏼‍❤️‍👨🏼 E13.1 couple with heart: man, man, medium-light skin tone +1F468 1F3FC 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👨🏼‍❤‍👨🏼 E13.1 couple with heart: man, man, medium-light skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👨🏼‍❤️‍👨🏽 E13.1 couple with heart: man, man, medium-light skin tone, medium skin tone +1F468 1F3FC 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👨🏼‍❤‍👨🏽 E13.1 couple with heart: man, man, medium-light skin tone, medium skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👨🏼‍❤️‍👨🏾 E13.1 couple with heart: man, man, medium-light skin tone, medium-dark skin tone +1F468 1F3FC 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👨🏼‍❤‍👨🏾 E13.1 couple with heart: man, man, medium-light skin tone, medium-dark skin tone +1F468 1F3FC 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👨🏼‍❤️‍👨🏿 E13.1 couple with heart: man, man, medium-light skin tone, dark skin tone +1F468 1F3FC 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👨🏼‍❤‍👨🏿 E13.1 couple with heart: man, man, medium-light skin tone, dark skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👨🏽‍❤️‍👨🏻 E13.1 couple with heart: man, man, medium skin tone, light skin tone +1F468 1F3FD 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👨🏽‍❤‍👨🏻 E13.1 couple with heart: man, man, medium skin tone, light skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👨🏽‍❤️‍👨🏼 E13.1 couple with heart: man, man, medium skin tone, medium-light skin tone +1F468 1F3FD 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👨🏽‍❤‍👨🏼 E13.1 couple with heart: man, man, medium skin tone, medium-light skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👨🏽‍❤️‍👨🏽 E13.1 couple with heart: man, man, medium skin tone +1F468 1F3FD 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👨🏽‍❤‍👨🏽 E13.1 couple with heart: man, man, medium skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👨🏽‍❤️‍👨🏾 E13.1 couple with heart: man, man, medium skin tone, medium-dark skin tone +1F468 1F3FD 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👨🏽‍❤‍👨🏾 E13.1 couple with heart: man, man, medium skin tone, medium-dark skin tone +1F468 1F3FD 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👨🏽‍❤️‍👨🏿 E13.1 couple with heart: man, man, medium skin tone, dark skin tone +1F468 1F3FD 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👨🏽‍❤‍👨🏿 E13.1 couple with heart: man, man, medium skin tone, dark skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👨🏾‍❤️‍👨🏻 E13.1 couple with heart: man, man, medium-dark skin tone, light skin tone +1F468 1F3FE 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👨🏾‍❤‍👨🏻 E13.1 couple with heart: man, man, medium-dark skin tone, light skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👨🏾‍❤️‍👨🏼 E13.1 couple with heart: man, man, medium-dark skin tone, medium-light skin tone +1F468 1F3FE 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👨🏾‍❤‍👨🏼 E13.1 couple with heart: man, man, medium-dark skin tone, medium-light skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👨🏾‍❤️‍👨🏽 E13.1 couple with heart: man, man, medium-dark skin tone, medium skin tone +1F468 1F3FE 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👨🏾‍❤‍👨🏽 E13.1 couple with heart: man, man, medium-dark skin tone, medium skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👨🏾‍❤️‍👨🏾 E13.1 couple with heart: man, man, medium-dark skin tone +1F468 1F3FE 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👨🏾‍❤‍👨🏾 E13.1 couple with heart: man, man, medium-dark skin tone +1F468 1F3FE 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👨🏾‍❤️‍👨🏿 E13.1 couple with heart: man, man, medium-dark skin tone, dark skin tone +1F468 1F3FE 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👨🏾‍❤‍👨🏿 E13.1 couple with heart: man, man, medium-dark skin tone, dark skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F468 1F3FB ; fully-qualified # 👨🏿‍❤️‍👨🏻 E13.1 couple with heart: man, man, dark skin tone, light skin tone +1F468 1F3FF 200D 2764 200D 1F468 1F3FB ; minimally-qualified # 👨🏿‍❤‍👨🏻 E13.1 couple with heart: man, man, dark skin tone, light skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F468 1F3FC ; fully-qualified # 👨🏿‍❤️‍👨🏼 E13.1 couple with heart: man, man, dark skin tone, medium-light skin tone +1F468 1F3FF 200D 2764 200D 1F468 1F3FC ; minimally-qualified # 👨🏿‍❤‍👨🏼 E13.1 couple with heart: man, man, dark skin tone, medium-light skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F468 1F3FD ; fully-qualified # 👨🏿‍❤️‍👨🏽 E13.1 couple with heart: man, man, dark skin tone, medium skin tone +1F468 1F3FF 200D 2764 200D 1F468 1F3FD ; minimally-qualified # 👨🏿‍❤‍👨🏽 E13.1 couple with heart: man, man, dark skin tone, medium skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F468 1F3FE ; fully-qualified # 👨🏿‍❤️‍👨🏾 E13.1 couple with heart: man, man, dark skin tone, medium-dark skin tone +1F468 1F3FF 200D 2764 200D 1F468 1F3FE ; minimally-qualified # 👨🏿‍❤‍👨🏾 E13.1 couple with heart: man, man, dark skin tone, medium-dark skin tone +1F468 1F3FF 200D 2764 FE0F 200D 1F468 1F3FF ; fully-qualified # 👨🏿‍❤️‍👨🏿 E13.1 couple with heart: man, man, dark skin tone +1F468 1F3FF 200D 2764 200D 1F468 1F3FF ; minimally-qualified # 👨🏿‍❤‍👨🏿 E13.1 couple with heart: man, man, dark skin tone +1F469 200D 2764 FE0F 200D 1F469 ; fully-qualified # 👩‍❤️‍👩 E2.0 couple with heart: woman, woman +1F469 200D 2764 200D 1F469 ; minimally-qualified # 👩‍❤‍👩 E2.0 couple with heart: woman, woman +1F469 1F3FB 200D 2764 FE0F 200D 1F469 1F3FB ; fully-qualified # 👩🏻‍❤️‍👩🏻 E13.1 couple with heart: woman, woman, light skin tone +1F469 1F3FB 200D 2764 200D 1F469 1F3FB ; minimally-qualified # 👩🏻‍❤‍👩🏻 E13.1 couple with heart: woman, woman, light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F469 1F3FC ; fully-qualified # 👩🏻‍❤️‍👩🏼 E13.1 couple with heart: woman, woman, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 200D 1F469 1F3FC ; minimally-qualified # 👩🏻‍❤‍👩🏼 E13.1 couple with heart: woman, woman, light skin tone, medium-light skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F469 1F3FD ; fully-qualified # 👩🏻‍❤️‍👩🏽 E13.1 couple with heart: woman, woman, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 200D 1F469 1F3FD ; minimally-qualified # 👩🏻‍❤‍👩🏽 E13.1 couple with heart: woman, woman, light skin tone, medium skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F469 1F3FE ; fully-qualified # 👩🏻‍❤️‍👩🏾 E13.1 couple with heart: woman, woman, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 200D 1F469 1F3FE ; minimally-qualified # 👩🏻‍❤‍👩🏾 E13.1 couple with heart: woman, woman, light skin tone, medium-dark skin tone +1F469 1F3FB 200D 2764 FE0F 200D 1F469 1F3FF ; fully-qualified # 👩🏻‍❤️‍👩🏿 E13.1 couple with heart: woman, woman, light skin tone, dark skin tone +1F469 1F3FB 200D 2764 200D 1F469 1F3FF ; minimally-qualified # 👩🏻‍❤‍👩🏿 E13.1 couple with heart: woman, woman, light skin tone, dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F469 1F3FB ; fully-qualified # 👩🏼‍❤️‍👩🏻 E13.1 couple with heart: woman, woman, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 200D 1F469 1F3FB ; minimally-qualified # 👩🏼‍❤‍👩🏻 E13.1 couple with heart: woman, woman, medium-light skin tone, light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F469 1F3FC ; fully-qualified # 👩🏼‍❤️‍👩🏼 E13.1 couple with heart: woman, woman, medium-light skin tone +1F469 1F3FC 200D 2764 200D 1F469 1F3FC ; minimally-qualified # 👩🏼‍❤‍👩🏼 E13.1 couple with heart: woman, woman, medium-light skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F469 1F3FD ; fully-qualified # 👩🏼‍❤️‍👩🏽 E13.1 couple with heart: woman, woman, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 200D 1F469 1F3FD ; minimally-qualified # 👩🏼‍❤‍👩🏽 E13.1 couple with heart: woman, woman, medium-light skin tone, medium skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F469 1F3FE ; fully-qualified # 👩🏼‍❤️‍👩🏾 E13.1 couple with heart: woman, woman, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 200D 1F469 1F3FE ; minimally-qualified # 👩🏼‍❤‍👩🏾 E13.1 couple with heart: woman, woman, medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 2764 FE0F 200D 1F469 1F3FF ; fully-qualified # 👩🏼‍❤️‍👩🏿 E13.1 couple with heart: woman, woman, medium-light skin tone, dark skin tone +1F469 1F3FC 200D 2764 200D 1F469 1F3FF ; minimally-qualified # 👩🏼‍❤‍👩🏿 E13.1 couple with heart: woman, woman, medium-light skin tone, dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F469 1F3FB ; fully-qualified # 👩🏽‍❤️‍👩🏻 E13.1 couple with heart: woman, woman, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 200D 1F469 1F3FB ; minimally-qualified # 👩🏽‍❤‍👩🏻 E13.1 couple with heart: woman, woman, medium skin tone, light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F469 1F3FC ; fully-qualified # 👩🏽‍❤️‍👩🏼 E13.1 couple with heart: woman, woman, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 200D 1F469 1F3FC ; minimally-qualified # 👩🏽‍❤‍👩🏼 E13.1 couple with heart: woman, woman, medium skin tone, medium-light skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F469 1F3FD ; fully-qualified # 👩🏽‍❤️‍👩🏽 E13.1 couple with heart: woman, woman, medium skin tone +1F469 1F3FD 200D 2764 200D 1F469 1F3FD ; minimally-qualified # 👩🏽‍❤‍👩🏽 E13.1 couple with heart: woman, woman, medium skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F469 1F3FE ; fully-qualified # 👩🏽‍❤️‍👩🏾 E13.1 couple with heart: woman, woman, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 200D 1F469 1F3FE ; minimally-qualified # 👩🏽‍❤‍👩🏾 E13.1 couple with heart: woman, woman, medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 2764 FE0F 200D 1F469 1F3FF ; fully-qualified # 👩🏽‍❤️‍👩🏿 E13.1 couple with heart: woman, woman, medium skin tone, dark skin tone +1F469 1F3FD 200D 2764 200D 1F469 1F3FF ; minimally-qualified # 👩🏽‍❤‍👩🏿 E13.1 couple with heart: woman, woman, medium skin tone, dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F469 1F3FB ; fully-qualified # 👩🏾‍❤️‍👩🏻 E13.1 couple with heart: woman, woman, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 200D 1F469 1F3FB ; minimally-qualified # 👩🏾‍❤‍👩🏻 E13.1 couple with heart: woman, woman, medium-dark skin tone, light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F469 1F3FC ; fully-qualified # 👩🏾‍❤️‍👩🏼 E13.1 couple with heart: woman, woman, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 200D 1F469 1F3FC ; minimally-qualified # 👩🏾‍❤‍👩🏼 E13.1 couple with heart: woman, woman, medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F469 1F3FD ; fully-qualified # 👩🏾‍❤️‍👩🏽 E13.1 couple with heart: woman, woman, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 200D 1F469 1F3FD ; minimally-qualified # 👩🏾‍❤‍👩🏽 E13.1 couple with heart: woman, woman, medium-dark skin tone, medium skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F469 1F3FE ; fully-qualified # 👩🏾‍❤️‍👩🏾 E13.1 couple with heart: woman, woman, medium-dark skin tone +1F469 1F3FE 200D 2764 200D 1F469 1F3FE ; minimally-qualified # 👩🏾‍❤‍👩🏾 E13.1 couple with heart: woman, woman, medium-dark skin tone +1F469 1F3FE 200D 2764 FE0F 200D 1F469 1F3FF ; fully-qualified # 👩🏾‍❤️‍👩🏿 E13.1 couple with heart: woman, woman, medium-dark skin tone, dark skin tone +1F469 1F3FE 200D 2764 200D 1F469 1F3FF ; minimally-qualified # 👩🏾‍❤‍👩🏿 E13.1 couple with heart: woman, woman, medium-dark skin tone, dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F469 1F3FB ; fully-qualified # 👩🏿‍❤️‍👩🏻 E13.1 couple with heart: woman, woman, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 200D 1F469 1F3FB ; minimally-qualified # 👩🏿‍❤‍👩🏻 E13.1 couple with heart: woman, woman, dark skin tone, light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F469 1F3FC ; fully-qualified # 👩🏿‍❤️‍👩🏼 E13.1 couple with heart: woman, woman, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 200D 1F469 1F3FC ; minimally-qualified # 👩🏿‍❤‍👩🏼 E13.1 couple with heart: woman, woman, dark skin tone, medium-light skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F469 1F3FD ; fully-qualified # 👩🏿‍❤️‍👩🏽 E13.1 couple with heart: woman, woman, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 200D 1F469 1F3FD ; minimally-qualified # 👩🏿‍❤‍👩🏽 E13.1 couple with heart: woman, woman, dark skin tone, medium skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F469 1F3FE ; fully-qualified # 👩🏿‍❤️‍👩🏾 E13.1 couple with heart: woman, woman, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 200D 1F469 1F3FE ; minimally-qualified # 👩🏿‍❤‍👩🏾 E13.1 couple with heart: woman, woman, dark skin tone, medium-dark skin tone +1F469 1F3FF 200D 2764 FE0F 200D 1F469 1F3FF ; fully-qualified # 👩🏿‍❤️‍👩🏿 E13.1 couple with heart: woman, woman, dark skin tone +1F469 1F3FF 200D 2764 200D 1F469 1F3FF ; minimally-qualified # 👩🏿‍❤‍👩🏿 E13.1 couple with heart: woman, woman, dark skin tone +1F468 200D 1F469 200D 1F466 ; fully-qualified # 👨‍👩‍👦 E2.0 family: man, woman, boy +1F468 200D 1F469 200D 1F467 ; fully-qualified # 👨‍👩‍👧 E2.0 family: man, woman, girl +1F468 200D 1F469 200D 1F467 200D 1F466 ; fully-qualified # 👨‍👩‍👧‍👦 E2.0 family: man, woman, girl, boy +1F468 200D 1F469 200D 1F466 200D 1F466 ; fully-qualified # 👨‍👩‍👦‍👦 E2.0 family: man, woman, boy, boy +1F468 200D 1F469 200D 1F467 200D 1F467 ; fully-qualified # 👨‍👩‍👧‍👧 E2.0 family: man, woman, girl, girl +1F468 200D 1F468 200D 1F466 ; fully-qualified # 👨‍👨‍👦 E2.0 family: man, man, boy +1F468 200D 1F468 200D 1F467 ; fully-qualified # 👨‍👨‍👧 E2.0 family: man, man, girl +1F468 200D 1F468 200D 1F467 200D 1F466 ; fully-qualified # 👨‍👨‍👧‍👦 E2.0 family: man, man, girl, boy +1F468 200D 1F468 200D 1F466 200D 1F466 ; fully-qualified # 👨‍👨‍👦‍👦 E2.0 family: man, man, boy, boy +1F468 200D 1F468 200D 1F467 200D 1F467 ; fully-qualified # 👨‍👨‍👧‍👧 E2.0 family: man, man, girl, girl +1F469 200D 1F469 200D 1F466 ; fully-qualified # 👩‍👩‍👦 E2.0 family: woman, woman, boy +1F469 200D 1F469 200D 1F467 ; fully-qualified # 👩‍👩‍👧 E2.0 family: woman, woman, girl +1F469 200D 1F469 200D 1F467 200D 1F466 ; fully-qualified # 👩‍👩‍👧‍👦 E2.0 family: woman, woman, girl, boy +1F469 200D 1F469 200D 1F466 200D 1F466 ; fully-qualified # 👩‍👩‍👦‍👦 E2.0 family: woman, woman, boy, boy +1F469 200D 1F469 200D 1F467 200D 1F467 ; fully-qualified # 👩‍👩‍👧‍👧 E2.0 family: woman, woman, girl, girl +1F468 200D 1F466 ; fully-qualified # 👨‍👦 E4.0 family: man, boy +1F468 200D 1F466 200D 1F466 ; fully-qualified # 👨‍👦‍👦 E4.0 family: man, boy, boy +1F468 200D 1F467 ; fully-qualified # 👨‍👧 E4.0 family: man, girl +1F468 200D 1F467 200D 1F466 ; fully-qualified # 👨‍👧‍👦 E4.0 family: man, girl, boy +1F468 200D 1F467 200D 1F467 ; fully-qualified # 👨‍👧‍👧 E4.0 family: man, girl, girl +1F469 200D 1F466 ; fully-qualified # 👩‍👦 E4.0 family: woman, boy +1F469 200D 1F466 200D 1F466 ; fully-qualified # 👩‍👦‍👦 E4.0 family: woman, boy, boy +1F469 200D 1F467 ; fully-qualified # 👩‍👧 E4.0 family: woman, girl +1F469 200D 1F467 200D 1F466 ; fully-qualified # 👩‍👧‍👦 E4.0 family: woman, girl, boy +1F469 200D 1F467 200D 1F467 ; fully-qualified # 👩‍👧‍👧 E4.0 family: woman, girl, girl + +# subgroup: person-symbol +1F5E3 FE0F ; fully-qualified # 🗣️ E0.7 speaking head +1F5E3 ; unqualified # 🗣 E0.7 speaking head +1F464 ; fully-qualified # 👤 E0.6 bust in silhouette +1F465 ; fully-qualified # 👥 E1.0 busts in silhouette +1FAC2 ; fully-qualified # 🫂 E13.0 people hugging +1F46A ; fully-qualified # 👪 E0.6 family +1F9D1 200D 1F9D1 200D 1F9D2 ; fully-qualified # 🧑‍🧑‍🧒 E15.1 family: adult, adult, child +1F9D1 200D 1F9D1 200D 1F9D2 200D 1F9D2 ; fully-qualified # 🧑‍🧑‍🧒‍🧒 E15.1 family: adult, adult, child, child +1F9D1 200D 1F9D2 ; fully-qualified # 🧑‍🧒 E15.1 family: adult, child +1F9D1 200D 1F9D2 200D 1F9D2 ; fully-qualified # 🧑‍🧒‍🧒 E15.1 family: adult, child, child +1F463 ; fully-qualified # 👣 E0.6 footprints +1FAC6 ; fully-qualified # 🫆 E16.0 fingerprint + +# People & Body subtotal: 3291 +# People & Body subtotal: 561 w/o modifiers + +# group: Component + +# subgroup: skin-tone +1F3FB ; component # 🏻 E1.0 light skin tone +1F3FC ; component # 🏼 E1.0 medium-light skin tone +1F3FD ; component # 🏽 E1.0 medium skin tone +1F3FE ; component # 🏾 E1.0 medium-dark skin tone +1F3FF ; component # 🏿 E1.0 dark skin tone + +# subgroup: hair-style +1F9B0 ; component # 🦰 E11.0 red hair +1F9B1 ; component # 🦱 E11.0 curly hair +1F9B3 ; component # 🦳 E11.0 white hair +1F9B2 ; component # 🦲 E11.0 bald + +# Component subtotal: 9 +# Component subtotal: 4 w/o modifiers + +# group: Animals & Nature + +# subgroup: animal-mammal +1F435 ; fully-qualified # 🐵 E0.6 monkey face +1F412 ; fully-qualified # 🐒 E0.6 monkey +1F98D ; fully-qualified # 🦍 E3.0 gorilla +1F9A7 ; fully-qualified # 🦧 E12.0 orangutan +1F436 ; fully-qualified # 🐶 E0.6 dog face +1F415 ; fully-qualified # 🐕 E0.7 dog +1F9AE ; fully-qualified # 🦮 E12.0 guide dog +1F415 200D 1F9BA ; fully-qualified # 🐕‍🦺 E12.0 service dog +1F429 ; fully-qualified # 🐩 E0.6 poodle +1F43A ; fully-qualified # 🐺 E0.6 wolf +1F98A ; fully-qualified # 🦊 E3.0 fox +1F99D ; fully-qualified # 🦝 E11.0 raccoon +1F431 ; fully-qualified # 🐱 E0.6 cat face +1F408 ; fully-qualified # 🐈 E0.7 cat +1F408 200D 2B1B ; fully-qualified # 🐈‍⬛ E13.0 black cat +1F981 ; fully-qualified # 🦁 E1.0 lion +1F42F ; fully-qualified # 🐯 E0.6 tiger face +1F405 ; fully-qualified # 🐅 E1.0 tiger +1F406 ; fully-qualified # 🐆 E1.0 leopard +1F434 ; fully-qualified # 🐴 E0.6 horse face +1FACE ; fully-qualified # 🫎 E15.0 moose +1FACF ; fully-qualified # 🫏 E15.0 donkey +1F40E ; fully-qualified # 🐎 E0.6 horse +1F984 ; fully-qualified # 🦄 E1.0 unicorn +1F993 ; fully-qualified # 🦓 E5.0 zebra +1F98C ; fully-qualified # 🦌 E3.0 deer +1F9AC ; fully-qualified # 🦬 E13.0 bison +1F42E ; fully-qualified # 🐮 E0.6 cow face +1F402 ; fully-qualified # 🐂 E1.0 ox +1F403 ; fully-qualified # 🐃 E1.0 water buffalo +1F404 ; fully-qualified # 🐄 E1.0 cow +1F437 ; fully-qualified # 🐷 E0.6 pig face +1F416 ; fully-qualified # 🐖 E1.0 pig +1F417 ; fully-qualified # 🐗 E0.6 boar +1F43D ; fully-qualified # 🐽 E0.6 pig nose +1F40F ; fully-qualified # 🐏 E1.0 ram +1F411 ; fully-qualified # 🐑 E0.6 ewe +1F410 ; fully-qualified # 🐐 E1.0 goat +1F42A ; fully-qualified # 🐪 E1.0 camel +1F42B ; fully-qualified # 🐫 E0.6 two-hump camel +1F999 ; fully-qualified # 🦙 E11.0 llama +1F992 ; fully-qualified # 🦒 E5.0 giraffe +1F418 ; fully-qualified # 🐘 E0.6 elephant +1F9A3 ; fully-qualified # 🦣 E13.0 mammoth +1F98F ; fully-qualified # 🦏 E3.0 rhinoceros +1F99B ; fully-qualified # 🦛 E11.0 hippopotamus +1F42D ; fully-qualified # 🐭 E0.6 mouse face +1F401 ; fully-qualified # 🐁 E1.0 mouse +1F400 ; fully-qualified # 🐀 E1.0 rat +1F439 ; fully-qualified # 🐹 E0.6 hamster +1F430 ; fully-qualified # 🐰 E0.6 rabbit face +1F407 ; fully-qualified # 🐇 E1.0 rabbit +1F43F FE0F ; fully-qualified # 🐿️ E0.7 chipmunk +1F43F ; unqualified # 🐿 E0.7 chipmunk +1F9AB ; fully-qualified # 🦫 E13.0 beaver +1F994 ; fully-qualified # 🦔 E5.0 hedgehog +1F987 ; fully-qualified # 🦇 E3.0 bat +1F43B ; fully-qualified # 🐻 E0.6 bear +1F43B 200D 2744 FE0F ; fully-qualified # 🐻‍❄️ E13.0 polar bear +1F43B 200D 2744 ; minimally-qualified # 🐻‍❄ E13.0 polar bear +1F428 ; fully-qualified # 🐨 E0.6 koala +1F43C ; fully-qualified # 🐼 E0.6 panda +1F9A5 ; fully-qualified # 🦥 E12.0 sloth +1F9A6 ; fully-qualified # 🦦 E12.0 otter +1F9A8 ; fully-qualified # 🦨 E12.0 skunk +1F998 ; fully-qualified # 🦘 E11.0 kangaroo +1F9A1 ; fully-qualified # 🦡 E11.0 badger +1F43E ; fully-qualified # 🐾 E0.6 paw prints + +# subgroup: animal-bird +1F983 ; fully-qualified # 🦃 E1.0 turkey +1F414 ; fully-qualified # 🐔 E0.6 chicken +1F413 ; fully-qualified # 🐓 E1.0 rooster +1F423 ; fully-qualified # 🐣 E0.6 hatching chick +1F424 ; fully-qualified # 🐤 E0.6 baby chick +1F425 ; fully-qualified # 🐥 E0.6 front-facing baby chick +1F426 ; fully-qualified # 🐦 E0.6 bird +1F427 ; fully-qualified # 🐧 E0.6 penguin +1F54A FE0F ; fully-qualified # 🕊️ E0.7 dove +1F54A ; unqualified # 🕊 E0.7 dove +1F985 ; fully-qualified # 🦅 E3.0 eagle +1F986 ; fully-qualified # 🦆 E3.0 duck +1F9A2 ; fully-qualified # 🦢 E11.0 swan +1F989 ; fully-qualified # 🦉 E3.0 owl +1F9A4 ; fully-qualified # 🦤 E13.0 dodo +1FAB6 ; fully-qualified # 🪶 E13.0 feather +1F9A9 ; fully-qualified # 🦩 E12.0 flamingo +1F99A ; fully-qualified # 🦚 E11.0 peacock +1F99C ; fully-qualified # 🦜 E11.0 parrot +1FABD ; fully-qualified # 🪽 E15.0 wing +1F426 200D 2B1B ; fully-qualified # 🐦‍⬛ E15.0 black bird +1FABF ; fully-qualified # 🪿 E15.0 goose +1F426 200D 1F525 ; fully-qualified # 🐦‍🔥 E15.1 phoenix + +# subgroup: animal-amphibian +1F438 ; fully-qualified # 🐸 E0.6 frog + +# subgroup: animal-reptile +1F40A ; fully-qualified # 🐊 E1.0 crocodile +1F422 ; fully-qualified # 🐢 E0.6 turtle +1F98E ; fully-qualified # 🦎 E3.0 lizard +1F40D ; fully-qualified # 🐍 E0.6 snake +1F432 ; fully-qualified # 🐲 E0.6 dragon face +1F409 ; fully-qualified # 🐉 E1.0 dragon +1F995 ; fully-qualified # 🦕 E5.0 sauropod +1F996 ; fully-qualified # 🦖 E5.0 T-Rex + +# subgroup: animal-marine +1F433 ; fully-qualified # 🐳 E0.6 spouting whale +1F40B ; fully-qualified # 🐋 E1.0 whale +1F42C ; fully-qualified # 🐬 E0.6 dolphin +1F9AD ; fully-qualified # 🦭 E13.0 seal +1F41F ; fully-qualified # 🐟 E0.6 fish +1F420 ; fully-qualified # 🐠 E0.6 tropical fish +1F421 ; fully-qualified # 🐡 E0.6 blowfish +1F988 ; fully-qualified # 🦈 E3.0 shark +1F419 ; fully-qualified # 🐙 E0.6 octopus +1F41A ; fully-qualified # 🐚 E0.6 spiral shell +1FAB8 ; fully-qualified # 🪸 E14.0 coral +1FABC ; fully-qualified # 🪼 E15.0 jellyfish +1F980 ; fully-qualified # 🦀 E1.0 crab +1F99E ; fully-qualified # 🦞 E11.0 lobster +1F990 ; fully-qualified # 🦐 E3.0 shrimp +1F991 ; fully-qualified # 🦑 E3.0 squid +1F9AA ; fully-qualified # 🦪 E12.0 oyster + +# subgroup: animal-bug +1F40C ; fully-qualified # 🐌 E0.6 snail +1F98B ; fully-qualified # 🦋 E3.0 butterfly +1F41B ; fully-qualified # 🐛 E0.6 bug +1F41C ; fully-qualified # 🐜 E0.6 ant +1F41D ; fully-qualified # 🐝 E0.6 honeybee +1FAB2 ; fully-qualified # 🪲 E13.0 beetle +1F41E ; fully-qualified # 🐞 E0.6 lady beetle +1F997 ; fully-qualified # 🦗 E5.0 cricket +1FAB3 ; fully-qualified # 🪳 E13.0 cockroach +1F577 FE0F ; fully-qualified # 🕷️ E0.7 spider +1F577 ; unqualified # 🕷 E0.7 spider +1F578 FE0F ; fully-qualified # 🕸️ E0.7 spider web +1F578 ; unqualified # 🕸 E0.7 spider web +1F982 ; fully-qualified # 🦂 E1.0 scorpion +1F99F ; fully-qualified # 🦟 E11.0 mosquito +1FAB0 ; fully-qualified # 🪰 E13.0 fly +1FAB1 ; fully-qualified # 🪱 E13.0 worm +1F9A0 ; fully-qualified # 🦠 E11.0 microbe + +# subgroup: plant-flower +1F490 ; fully-qualified # 💐 E0.6 bouquet +1F338 ; fully-qualified # 🌸 E0.6 cherry blossom +1F4AE ; fully-qualified # 💮 E0.6 white flower +1FAB7 ; fully-qualified # 🪷 E14.0 lotus +1F3F5 FE0F ; fully-qualified # 🏵️ E0.7 rosette +1F3F5 ; unqualified # 🏵 E0.7 rosette +1F339 ; fully-qualified # 🌹 E0.6 rose +1F940 ; fully-qualified # 🥀 E3.0 wilted flower +1F33A ; fully-qualified # 🌺 E0.6 hibiscus +1F33B ; fully-qualified # 🌻 E0.6 sunflower +1F33C ; fully-qualified # 🌼 E0.6 blossom +1F337 ; fully-qualified # 🌷 E0.6 tulip +1FABB ; fully-qualified # 🪻 E15.0 hyacinth + +# subgroup: plant-other +1F331 ; fully-qualified # 🌱 E0.6 seedling +1FAB4 ; fully-qualified # 🪴 E13.0 potted plant +1F332 ; fully-qualified # 🌲 E1.0 evergreen tree +1F333 ; fully-qualified # 🌳 E1.0 deciduous tree +1F334 ; fully-qualified # 🌴 E0.6 palm tree +1F335 ; fully-qualified # 🌵 E0.6 cactus +1F33E ; fully-qualified # 🌾 E0.6 sheaf of rice +1F33F ; fully-qualified # 🌿 E0.6 herb +2618 FE0F ; fully-qualified # ☘️ E1.0 shamrock +2618 ; unqualified # ☘ E1.0 shamrock +1F340 ; fully-qualified # 🍀 E0.6 four leaf clover +1F341 ; fully-qualified # 🍁 E0.6 maple leaf +1F342 ; fully-qualified # 🍂 E0.6 fallen leaf +1F343 ; fully-qualified # 🍃 E0.6 leaf fluttering in wind +1FAB9 ; fully-qualified # 🪹 E14.0 empty nest +1FABA ; fully-qualified # 🪺 E14.0 nest with eggs +1F344 ; fully-qualified # 🍄 E0.6 mushroom +1FABE ; fully-qualified # 🪾 E16.0 leafless tree + +# Animals & Nature subtotal: 166 +# Animals & Nature subtotal: 166 w/o modifiers + +# group: Food & Drink + +# subgroup: food-fruit +1F347 ; fully-qualified # 🍇 E0.6 grapes +1F348 ; fully-qualified # 🍈 E0.6 melon +1F349 ; fully-qualified # 🍉 E0.6 watermelon +1F34A ; fully-qualified # 🍊 E0.6 tangerine +1F34B ; fully-qualified # 🍋 E1.0 lemon +1F34B 200D 1F7E9 ; fully-qualified # 🍋‍🟩 E15.1 lime +1F34C ; fully-qualified # 🍌 E0.6 banana +1F34D ; fully-qualified # 🍍 E0.6 pineapple +1F96D ; fully-qualified # 🥭 E11.0 mango +1F34E ; fully-qualified # 🍎 E0.6 red apple +1F34F ; fully-qualified # 🍏 E0.6 green apple +1F350 ; fully-qualified # 🍐 E1.0 pear +1F351 ; fully-qualified # 🍑 E0.6 peach +1F352 ; fully-qualified # 🍒 E0.6 cherries +1F353 ; fully-qualified # 🍓 E0.6 strawberry +1FAD0 ; fully-qualified # 🫐 E13.0 blueberries +1F95D ; fully-qualified # 🥝 E3.0 kiwi fruit +1F345 ; fully-qualified # 🍅 E0.6 tomato +1FAD2 ; fully-qualified # 🫒 E13.0 olive +1F965 ; fully-qualified # 🥥 E5.0 coconut + +# subgroup: food-vegetable +1F951 ; fully-qualified # 🥑 E3.0 avocado +1F346 ; fully-qualified # 🍆 E0.6 eggplant +1F954 ; fully-qualified # 🥔 E3.0 potato +1F955 ; fully-qualified # 🥕 E3.0 carrot +1F33D ; fully-qualified # 🌽 E0.6 ear of corn +1F336 FE0F ; fully-qualified # 🌶️ E0.7 hot pepper +1F336 ; unqualified # 🌶 E0.7 hot pepper +1FAD1 ; fully-qualified # 🫑 E13.0 bell pepper +1F952 ; fully-qualified # 🥒 E3.0 cucumber +1F96C ; fully-qualified # 🥬 E11.0 leafy green +1F966 ; fully-qualified # 🥦 E5.0 broccoli +1F9C4 ; fully-qualified # 🧄 E12.0 garlic +1F9C5 ; fully-qualified # 🧅 E12.0 onion +1F95C ; fully-qualified # 🥜 E3.0 peanuts +1FAD8 ; fully-qualified # 🫘 E14.0 beans +1F330 ; fully-qualified # 🌰 E0.6 chestnut +1FADA ; fully-qualified # 🫚 E15.0 ginger root +1FADB ; fully-qualified # 🫛 E15.0 pea pod +1F344 200D 1F7EB ; fully-qualified # 🍄‍🟫 E15.1 brown mushroom +1FADC ; fully-qualified # 🫜 E16.0 root vegetable + +# subgroup: food-prepared +1F35E ; fully-qualified # 🍞 E0.6 bread +1F950 ; fully-qualified # 🥐 E3.0 croissant +1F956 ; fully-qualified # 🥖 E3.0 baguette bread +1FAD3 ; fully-qualified # 🫓 E13.0 flatbread +1F968 ; fully-qualified # 🥨 E5.0 pretzel +1F96F ; fully-qualified # 🥯 E11.0 bagel +1F95E ; fully-qualified # 🥞 E3.0 pancakes +1F9C7 ; fully-qualified # 🧇 E12.0 waffle +1F9C0 ; fully-qualified # 🧀 E1.0 cheese wedge +1F356 ; fully-qualified # 🍖 E0.6 meat on bone +1F357 ; fully-qualified # 🍗 E0.6 poultry leg +1F969 ; fully-qualified # 🥩 E5.0 cut of meat +1F953 ; fully-qualified # 🥓 E3.0 bacon +1F354 ; fully-qualified # 🍔 E0.6 hamburger +1F35F ; fully-qualified # 🍟 E0.6 french fries +1F355 ; fully-qualified # 🍕 E0.6 pizza +1F32D ; fully-qualified # 🌭 E1.0 hot dog +1F96A ; fully-qualified # 🥪 E5.0 sandwich +1F32E ; fully-qualified # 🌮 E1.0 taco +1F32F ; fully-qualified # 🌯 E1.0 burrito +1FAD4 ; fully-qualified # 🫔 E13.0 tamale +1F959 ; fully-qualified # 🥙 E3.0 stuffed flatbread +1F9C6 ; fully-qualified # 🧆 E12.0 falafel +1F95A ; fully-qualified # 🥚 E3.0 egg +1F373 ; fully-qualified # 🍳 E0.6 cooking +1F958 ; fully-qualified # 🥘 E3.0 shallow pan of food +1F372 ; fully-qualified # 🍲 E0.6 pot of food +1FAD5 ; fully-qualified # 🫕 E13.0 fondue +1F963 ; fully-qualified # 🥣 E5.0 bowl with spoon +1F957 ; fully-qualified # 🥗 E3.0 green salad +1F37F ; fully-qualified # 🍿 E1.0 popcorn +1F9C8 ; fully-qualified # 🧈 E12.0 butter +1F9C2 ; fully-qualified # 🧂 E11.0 salt +1F96B ; fully-qualified # 🥫 E5.0 canned food + +# subgroup: food-asian +1F371 ; fully-qualified # 🍱 E0.6 bento box +1F358 ; fully-qualified # 🍘 E0.6 rice cracker +1F359 ; fully-qualified # 🍙 E0.6 rice ball +1F35A ; fully-qualified # 🍚 E0.6 cooked rice +1F35B ; fully-qualified # 🍛 E0.6 curry rice +1F35C ; fully-qualified # 🍜 E0.6 steaming bowl +1F35D ; fully-qualified # 🍝 E0.6 spaghetti +1F360 ; fully-qualified # 🍠 E0.6 roasted sweet potato +1F362 ; fully-qualified # 🍢 E0.6 oden +1F363 ; fully-qualified # 🍣 E0.6 sushi +1F364 ; fully-qualified # 🍤 E0.6 fried shrimp +1F365 ; fully-qualified # 🍥 E0.6 fish cake with swirl +1F96E ; fully-qualified # 🥮 E11.0 moon cake +1F361 ; fully-qualified # 🍡 E0.6 dango +1F95F ; fully-qualified # 🥟 E5.0 dumpling +1F960 ; fully-qualified # 🥠 E5.0 fortune cookie +1F961 ; fully-qualified # 🥡 E5.0 takeout box + +# subgroup: food-sweet +1F366 ; fully-qualified # 🍦 E0.6 soft ice cream +1F367 ; fully-qualified # 🍧 E0.6 shaved ice +1F368 ; fully-qualified # 🍨 E0.6 ice cream +1F369 ; fully-qualified # 🍩 E0.6 doughnut +1F36A ; fully-qualified # 🍪 E0.6 cookie +1F382 ; fully-qualified # 🎂 E0.6 birthday cake +1F370 ; fully-qualified # 🍰 E0.6 shortcake +1F9C1 ; fully-qualified # 🧁 E11.0 cupcake +1F967 ; fully-qualified # 🥧 E5.0 pie +1F36B ; fully-qualified # 🍫 E0.6 chocolate bar +1F36C ; fully-qualified # 🍬 E0.6 candy +1F36D ; fully-qualified # 🍭 E0.6 lollipop +1F36E ; fully-qualified # 🍮 E0.6 custard +1F36F ; fully-qualified # 🍯 E0.6 honey pot + +# subgroup: drink +1F37C ; fully-qualified # 🍼 E1.0 baby bottle +1F95B ; fully-qualified # 🥛 E3.0 glass of milk +2615 ; fully-qualified # ☕ E0.6 hot beverage +1FAD6 ; fully-qualified # 🫖 E13.0 teapot +1F375 ; fully-qualified # 🍵 E0.6 teacup without handle +1F376 ; fully-qualified # 🍶 E0.6 sake +1F37E ; fully-qualified # 🍾 E1.0 bottle with popping cork +1F377 ; fully-qualified # 🍷 E0.6 wine glass +1F378 ; fully-qualified # 🍸 E0.6 cocktail glass +1F379 ; fully-qualified # 🍹 E0.6 tropical drink +1F37A ; fully-qualified # 🍺 E0.6 beer mug +1F37B ; fully-qualified # 🍻 E0.6 clinking beer mugs +1F942 ; fully-qualified # 🥂 E3.0 clinking glasses +1F943 ; fully-qualified # 🥃 E3.0 tumbler glass +1FAD7 ; fully-qualified # 🫗 E14.0 pouring liquid +1F964 ; fully-qualified # 🥤 E5.0 cup with straw +1F9CB ; fully-qualified # 🧋 E13.0 bubble tea +1F9C3 ; fully-qualified # 🧃 E12.0 beverage box +1F9C9 ; fully-qualified # 🧉 E12.0 mate +1F9CA ; fully-qualified # 🧊 E12.0 ice + +# subgroup: dishware +1F962 ; fully-qualified # 🥢 E5.0 chopsticks +1F37D FE0F ; fully-qualified # 🍽️ E0.7 fork and knife with plate +1F37D ; unqualified # 🍽 E0.7 fork and knife with plate +1F374 ; fully-qualified # 🍴 E0.6 fork and knife +1F944 ; fully-qualified # 🥄 E3.0 spoon +1F52A ; fully-qualified # 🔪 E0.6 kitchen knife +1FAD9 ; fully-qualified # 🫙 E14.0 jar +1F3FA ; fully-qualified # 🏺 E1.0 amphora + +# Food & Drink subtotal: 133 +# Food & Drink subtotal: 133 w/o modifiers + +# group: Travel & Places + +# subgroup: place-map +1F30D ; fully-qualified # 🌍 E0.7 globe showing Europe-Africa +1F30E ; fully-qualified # 🌎 E0.7 globe showing Americas +1F30F ; fully-qualified # 🌏 E0.6 globe showing Asia-Australia +1F310 ; fully-qualified # 🌐 E1.0 globe with meridians +1F5FA FE0F ; fully-qualified # 🗺️ E0.7 world map +1F5FA ; unqualified # 🗺 E0.7 world map +1F5FE ; fully-qualified # 🗾 E0.6 map of Japan +1F9ED ; fully-qualified # 🧭 E11.0 compass + +# subgroup: place-geographic +1F3D4 FE0F ; fully-qualified # 🏔️ E0.7 snow-capped mountain +1F3D4 ; unqualified # 🏔 E0.7 snow-capped mountain +26F0 FE0F ; fully-qualified # ⛰️ E0.7 mountain +26F0 ; unqualified # ⛰ E0.7 mountain +1F30B ; fully-qualified # 🌋 E0.6 volcano +1F5FB ; fully-qualified # 🗻 E0.6 mount fuji +1F3D5 FE0F ; fully-qualified # 🏕️ E0.7 camping +1F3D5 ; unqualified # 🏕 E0.7 camping +1F3D6 FE0F ; fully-qualified # 🏖️ E0.7 beach with umbrella +1F3D6 ; unqualified # 🏖 E0.7 beach with umbrella +1F3DC FE0F ; fully-qualified # 🏜️ E0.7 desert +1F3DC ; unqualified # 🏜 E0.7 desert +1F3DD FE0F ; fully-qualified # 🏝️ E0.7 desert island +1F3DD ; unqualified # 🏝 E0.7 desert island +1F3DE FE0F ; fully-qualified # 🏞️ E0.7 national park +1F3DE ; unqualified # 🏞 E0.7 national park + +# subgroup: place-building +1F3DF FE0F ; fully-qualified # 🏟️ E0.7 stadium +1F3DF ; unqualified # 🏟 E0.7 stadium +1F3DB FE0F ; fully-qualified # 🏛️ E0.7 classical building +1F3DB ; unqualified # 🏛 E0.7 classical building +1F3D7 FE0F ; fully-qualified # 🏗️ E0.7 building construction +1F3D7 ; unqualified # 🏗 E0.7 building construction +1F9F1 ; fully-qualified # 🧱 E11.0 brick +1FAA8 ; fully-qualified # 🪨 E13.0 rock +1FAB5 ; fully-qualified # 🪵 E13.0 wood +1F6D6 ; fully-qualified # 🛖 E13.0 hut +1F3D8 FE0F ; fully-qualified # 🏘️ E0.7 houses +1F3D8 ; unqualified # 🏘 E0.7 houses +1F3DA FE0F ; fully-qualified # 🏚️ E0.7 derelict house +1F3DA ; unqualified # 🏚 E0.7 derelict house +1F3E0 ; fully-qualified # 🏠 E0.6 house +1F3E1 ; fully-qualified # 🏡 E0.6 house with garden +1F3E2 ; fully-qualified # 🏢 E0.6 office building +1F3E3 ; fully-qualified # 🏣 E0.6 Japanese post office +1F3E4 ; fully-qualified # 🏤 E1.0 post office +1F3E5 ; fully-qualified # 🏥 E0.6 hospital +1F3E6 ; fully-qualified # 🏦 E0.6 bank +1F3E8 ; fully-qualified # 🏨 E0.6 hotel +1F3E9 ; fully-qualified # 🏩 E0.6 love hotel +1F3EA ; fully-qualified # 🏪 E0.6 convenience store +1F3EB ; fully-qualified # 🏫 E0.6 school +1F3EC ; fully-qualified # 🏬 E0.6 department store +1F3ED ; fully-qualified # 🏭 E0.6 factory +1F3EF ; fully-qualified # 🏯 E0.6 Japanese castle +1F3F0 ; fully-qualified # 🏰 E0.6 castle +1F492 ; fully-qualified # 💒 E0.6 wedding +1F5FC ; fully-qualified # 🗼 E0.6 Tokyo tower +1F5FD ; fully-qualified # 🗽 E0.6 Statue of Liberty + +# subgroup: place-religious +26EA ; fully-qualified # ⛪ E0.6 church +1F54C ; fully-qualified # 🕌 E1.0 mosque +1F6D5 ; fully-qualified # 🛕 E12.0 hindu temple +1F54D ; fully-qualified # 🕍 E1.0 synagogue +26E9 FE0F ; fully-qualified # ⛩️ E0.7 shinto shrine +26E9 ; unqualified # ⛩ E0.7 shinto shrine +1F54B ; fully-qualified # 🕋 E1.0 kaaba + +# subgroup: place-other +26F2 ; fully-qualified # ⛲ E0.6 fountain +26FA ; fully-qualified # ⛺ E0.6 tent +1F301 ; fully-qualified # 🌁 E0.6 foggy +1F303 ; fully-qualified # 🌃 E0.6 night with stars +1F3D9 FE0F ; fully-qualified # 🏙️ E0.7 cityscape +1F3D9 ; unqualified # 🏙 E0.7 cityscape +1F304 ; fully-qualified # 🌄 E0.6 sunrise over mountains +1F305 ; fully-qualified # 🌅 E0.6 sunrise +1F306 ; fully-qualified # 🌆 E0.6 cityscape at dusk +1F307 ; fully-qualified # 🌇 E0.6 sunset +1F309 ; fully-qualified # 🌉 E0.6 bridge at night +2668 FE0F ; fully-qualified # ♨️ E0.6 hot springs +2668 ; unqualified # ♨ E0.6 hot springs +1F3A0 ; fully-qualified # 🎠 E0.6 carousel horse +1F6DD ; fully-qualified # 🛝 E14.0 playground slide +1F3A1 ; fully-qualified # 🎡 E0.6 ferris wheel +1F3A2 ; fully-qualified # 🎢 E0.6 roller coaster +1F488 ; fully-qualified # 💈 E0.6 barber pole +1F3AA ; fully-qualified # 🎪 E0.6 circus tent + +# subgroup: transport-ground +1F682 ; fully-qualified # 🚂 E1.0 locomotive +1F683 ; fully-qualified # 🚃 E0.6 railway car +1F684 ; fully-qualified # 🚄 E0.6 high-speed train +1F685 ; fully-qualified # 🚅 E0.6 bullet train +1F686 ; fully-qualified # 🚆 E1.0 train +1F687 ; fully-qualified # 🚇 E0.6 metro +1F688 ; fully-qualified # 🚈 E1.0 light rail +1F689 ; fully-qualified # 🚉 E0.6 station +1F68A ; fully-qualified # 🚊 E1.0 tram +1F69D ; fully-qualified # 🚝 E1.0 monorail +1F69E ; fully-qualified # 🚞 E1.0 mountain railway +1F68B ; fully-qualified # 🚋 E1.0 tram car +1F68C ; fully-qualified # 🚌 E0.6 bus +1F68D ; fully-qualified # 🚍 E0.7 oncoming bus +1F68E ; fully-qualified # 🚎 E1.0 trolleybus +1F690 ; fully-qualified # 🚐 E1.0 minibus +1F691 ; fully-qualified # 🚑 E0.6 ambulance +1F692 ; fully-qualified # 🚒 E0.6 fire engine +1F693 ; fully-qualified # 🚓 E0.6 police car +1F694 ; fully-qualified # 🚔 E0.7 oncoming police car +1F695 ; fully-qualified # 🚕 E0.6 taxi +1F696 ; fully-qualified # 🚖 E1.0 oncoming taxi +1F697 ; fully-qualified # 🚗 E0.6 automobile +1F698 ; fully-qualified # 🚘 E0.7 oncoming automobile +1F699 ; fully-qualified # 🚙 E0.6 sport utility vehicle +1F6FB ; fully-qualified # 🛻 E13.0 pickup truck +1F69A ; fully-qualified # 🚚 E0.6 delivery truck +1F69B ; fully-qualified # 🚛 E1.0 articulated lorry +1F69C ; fully-qualified # 🚜 E1.0 tractor +1F3CE FE0F ; fully-qualified # 🏎️ E0.7 racing car +1F3CE ; unqualified # 🏎 E0.7 racing car +1F3CD FE0F ; fully-qualified # 🏍️ E0.7 motorcycle +1F3CD ; unqualified # 🏍 E0.7 motorcycle +1F6F5 ; fully-qualified # 🛵 E3.0 motor scooter +1F9BD ; fully-qualified # 🦽 E12.0 manual wheelchair +1F9BC ; fully-qualified # 🦼 E12.0 motorized wheelchair +1F6FA ; fully-qualified # 🛺 E12.0 auto rickshaw +1F6B2 ; fully-qualified # 🚲 E0.6 bicycle +1F6F4 ; fully-qualified # 🛴 E3.0 kick scooter +1F6F9 ; fully-qualified # 🛹 E11.0 skateboard +1F6FC ; fully-qualified # 🛼 E13.0 roller skate +1F68F ; fully-qualified # 🚏 E0.6 bus stop +1F6E3 FE0F ; fully-qualified # 🛣️ E0.7 motorway +1F6E3 ; unqualified # 🛣 E0.7 motorway +1F6E4 FE0F ; fully-qualified # 🛤️ E0.7 railway track +1F6E4 ; unqualified # 🛤 E0.7 railway track +1F6E2 FE0F ; fully-qualified # 🛢️ E0.7 oil drum +1F6E2 ; unqualified # 🛢 E0.7 oil drum +26FD ; fully-qualified # ⛽ E0.6 fuel pump +1F6DE ; fully-qualified # 🛞 E14.0 wheel +1F6A8 ; fully-qualified # 🚨 E0.6 police car light +1F6A5 ; fully-qualified # 🚥 E0.6 horizontal traffic light +1F6A6 ; fully-qualified # 🚦 E1.0 vertical traffic light +1F6D1 ; fully-qualified # 🛑 E3.0 stop sign +1F6A7 ; fully-qualified # 🚧 E0.6 construction + +# subgroup: transport-water +2693 ; fully-qualified # ⚓ E0.6 anchor +1F6DF ; fully-qualified # 🛟 E14.0 ring buoy +26F5 ; fully-qualified # ⛵ E0.6 sailboat +1F6F6 ; fully-qualified # 🛶 E3.0 canoe +1F6A4 ; fully-qualified # 🚤 E0.6 speedboat +1F6F3 FE0F ; fully-qualified # 🛳️ E0.7 passenger ship +1F6F3 ; unqualified # 🛳 E0.7 passenger ship +26F4 FE0F ; fully-qualified # ⛴️ E0.7 ferry +26F4 ; unqualified # ⛴ E0.7 ferry +1F6E5 FE0F ; fully-qualified # 🛥️ E0.7 motor boat +1F6E5 ; unqualified # 🛥 E0.7 motor boat +1F6A2 ; fully-qualified # 🚢 E0.6 ship + +# subgroup: transport-air +2708 FE0F ; fully-qualified # ✈️ E0.6 airplane +2708 ; unqualified # ✈ E0.6 airplane +1F6E9 FE0F ; fully-qualified # 🛩️ E0.7 small airplane +1F6E9 ; unqualified # 🛩 E0.7 small airplane +1F6EB ; fully-qualified # 🛫 E1.0 airplane departure +1F6EC ; fully-qualified # 🛬 E1.0 airplane arrival +1FA82 ; fully-qualified # 🪂 E12.0 parachute +1F4BA ; fully-qualified # 💺 E0.6 seat +1F681 ; fully-qualified # 🚁 E1.0 helicopter +1F69F ; fully-qualified # 🚟 E1.0 suspension railway +1F6A0 ; fully-qualified # 🚠 E1.0 mountain cableway +1F6A1 ; fully-qualified # 🚡 E1.0 aerial tramway +1F6F0 FE0F ; fully-qualified # 🛰️ E0.7 satellite +1F6F0 ; unqualified # 🛰 E0.7 satellite +1F680 ; fully-qualified # 🚀 E0.6 rocket +1F6F8 ; fully-qualified # 🛸 E5.0 flying saucer + +# subgroup: hotel +1F6CE FE0F ; fully-qualified # 🛎️ E0.7 bellhop bell +1F6CE ; unqualified # 🛎 E0.7 bellhop bell +1F9F3 ; fully-qualified # 🧳 E11.0 luggage + +# subgroup: time +231B ; fully-qualified # ⌛ E0.6 hourglass done +23F3 ; fully-qualified # ⏳ E0.6 hourglass not done +231A ; fully-qualified # ⌚ E0.6 watch +23F0 ; fully-qualified # ⏰ E0.6 alarm clock +23F1 FE0F ; fully-qualified # ⏱️ E1.0 stopwatch +23F1 ; unqualified # ⏱ E1.0 stopwatch +23F2 FE0F ; fully-qualified # ⏲️ E1.0 timer clock +23F2 ; unqualified # ⏲ E1.0 timer clock +1F570 FE0F ; fully-qualified # 🕰️ E0.7 mantelpiece clock +1F570 ; unqualified # 🕰 E0.7 mantelpiece clock +1F55B ; fully-qualified # 🕛 E0.6 twelve o’clock +1F567 ; fully-qualified # 🕧 E0.7 twelve-thirty +1F550 ; fully-qualified # 🕐 E0.6 one o’clock +1F55C ; fully-qualified # 🕜 E0.7 one-thirty +1F551 ; fully-qualified # 🕑 E0.6 two o’clock +1F55D ; fully-qualified # 🕝 E0.7 two-thirty +1F552 ; fully-qualified # 🕒 E0.6 three o’clock +1F55E ; fully-qualified # 🕞 E0.7 three-thirty +1F553 ; fully-qualified # 🕓 E0.6 four o’clock +1F55F ; fully-qualified # 🕟 E0.7 four-thirty +1F554 ; fully-qualified # 🕔 E0.6 five o’clock +1F560 ; fully-qualified # 🕠 E0.7 five-thirty +1F555 ; fully-qualified # 🕕 E0.6 six o’clock +1F561 ; fully-qualified # 🕡 E0.7 six-thirty +1F556 ; fully-qualified # 🕖 E0.6 seven o’clock +1F562 ; fully-qualified # 🕢 E0.7 seven-thirty +1F557 ; fully-qualified # 🕗 E0.6 eight o’clock +1F563 ; fully-qualified # 🕣 E0.7 eight-thirty +1F558 ; fully-qualified # 🕘 E0.6 nine o’clock +1F564 ; fully-qualified # 🕤 E0.7 nine-thirty +1F559 ; fully-qualified # 🕙 E0.6 ten o’clock +1F565 ; fully-qualified # 🕥 E0.7 ten-thirty +1F55A ; fully-qualified # 🕚 E0.6 eleven o’clock +1F566 ; fully-qualified # 🕦 E0.7 eleven-thirty + +# subgroup: sky & weather +1F311 ; fully-qualified # 🌑 E0.6 new moon +1F312 ; fully-qualified # 🌒 E1.0 waxing crescent moon +1F313 ; fully-qualified # 🌓 E0.6 first quarter moon +1F314 ; fully-qualified # 🌔 E0.6 waxing gibbous moon +1F315 ; fully-qualified # 🌕 E0.6 full moon +1F316 ; fully-qualified # 🌖 E1.0 waning gibbous moon +1F317 ; fully-qualified # 🌗 E1.0 last quarter moon +1F318 ; fully-qualified # 🌘 E1.0 waning crescent moon +1F319 ; fully-qualified # 🌙 E0.6 crescent moon +1F31A ; fully-qualified # 🌚 E1.0 new moon face +1F31B ; fully-qualified # 🌛 E0.6 first quarter moon face +1F31C ; fully-qualified # 🌜 E0.7 last quarter moon face +1F321 FE0F ; fully-qualified # 🌡️ E0.7 thermometer +1F321 ; unqualified # 🌡 E0.7 thermometer +2600 FE0F ; fully-qualified # ☀️ E0.6 sun +2600 ; unqualified # ☀ E0.6 sun +1F31D ; fully-qualified # 🌝 E1.0 full moon face +1F31E ; fully-qualified # 🌞 E1.0 sun with face +1FA90 ; fully-qualified # 🪐 E12.0 ringed planet +2B50 ; fully-qualified # ⭐ E0.6 star +1F31F ; fully-qualified # 🌟 E0.6 glowing star +1F320 ; fully-qualified # 🌠 E0.6 shooting star +1F30C ; fully-qualified # 🌌 E0.6 milky way +2601 FE0F ; fully-qualified # ☁️ E0.6 cloud +2601 ; unqualified # ☁ E0.6 cloud +26C5 ; fully-qualified # ⛅ E0.6 sun behind cloud +26C8 FE0F ; fully-qualified # ⛈️ E0.7 cloud with lightning and rain +26C8 ; unqualified # ⛈ E0.7 cloud with lightning and rain +1F324 FE0F ; fully-qualified # 🌤️ E0.7 sun behind small cloud +1F324 ; unqualified # 🌤 E0.7 sun behind small cloud +1F325 FE0F ; fully-qualified # 🌥️ E0.7 sun behind large cloud +1F325 ; unqualified # 🌥 E0.7 sun behind large cloud +1F326 FE0F ; fully-qualified # 🌦️ E0.7 sun behind rain cloud +1F326 ; unqualified # 🌦 E0.7 sun behind rain cloud +1F327 FE0F ; fully-qualified # 🌧️ E0.7 cloud with rain +1F327 ; unqualified # 🌧 E0.7 cloud with rain +1F328 FE0F ; fully-qualified # 🌨️ E0.7 cloud with snow +1F328 ; unqualified # 🌨 E0.7 cloud with snow +1F329 FE0F ; fully-qualified # 🌩️ E0.7 cloud with lightning +1F329 ; unqualified # 🌩 E0.7 cloud with lightning +1F32A FE0F ; fully-qualified # 🌪️ E0.7 tornado +1F32A ; unqualified # 🌪 E0.7 tornado +1F32B FE0F ; fully-qualified # 🌫️ E0.7 fog +1F32B ; unqualified # 🌫 E0.7 fog +1F32C FE0F ; fully-qualified # 🌬️ E0.7 wind face +1F32C ; unqualified # 🌬 E0.7 wind face +1F300 ; fully-qualified # 🌀 E0.6 cyclone +1F308 ; fully-qualified # 🌈 E0.6 rainbow +1F302 ; fully-qualified # 🌂 E0.6 closed umbrella +2602 FE0F ; fully-qualified # ☂️ E0.7 umbrella +2602 ; unqualified # ☂ E0.7 umbrella +2614 ; fully-qualified # ☔ E0.6 umbrella with rain drops +26F1 FE0F ; fully-qualified # ⛱️ E0.7 umbrella on ground +26F1 ; unqualified # ⛱ E0.7 umbrella on ground +26A1 ; fully-qualified # ⚡ E0.6 high voltage +2744 FE0F ; fully-qualified # ❄️ E0.6 snowflake +2744 ; unqualified # ❄ E0.6 snowflake +2603 FE0F ; fully-qualified # ☃️ E0.7 snowman +2603 ; unqualified # ☃ E0.7 snowman +26C4 ; fully-qualified # ⛄ E0.6 snowman without snow +2604 FE0F ; fully-qualified # ☄️ E1.0 comet +2604 ; unqualified # ☄ E1.0 comet +1F525 ; fully-qualified # 🔥 E0.6 fire +1F4A7 ; fully-qualified # 💧 E0.6 droplet +1F30A ; fully-qualified # 🌊 E0.6 water wave + +# Travel & Places subtotal: 267 +# Travel & Places subtotal: 267 w/o modifiers + +# group: Activities + +# subgroup: event +1F383 ; fully-qualified # 🎃 E0.6 jack-o-lantern +1F384 ; fully-qualified # 🎄 E0.6 Christmas tree +1F386 ; fully-qualified # 🎆 E0.6 fireworks +1F387 ; fully-qualified # 🎇 E0.6 sparkler +1F9E8 ; fully-qualified # 🧨 E11.0 firecracker +2728 ; fully-qualified # ✨ E0.6 sparkles +1F388 ; fully-qualified # 🎈 E0.6 balloon +1F389 ; fully-qualified # 🎉 E0.6 party popper +1F38A ; fully-qualified # 🎊 E0.6 confetti ball +1F38B ; fully-qualified # 🎋 E0.6 tanabata tree +1F38D ; fully-qualified # 🎍 E0.6 pine decoration +1F38E ; fully-qualified # 🎎 E0.6 Japanese dolls +1F38F ; fully-qualified # 🎏 E0.6 carp streamer +1F390 ; fully-qualified # 🎐 E0.6 wind chime +1F391 ; fully-qualified # 🎑 E0.6 moon viewing ceremony +1F9E7 ; fully-qualified # 🧧 E11.0 red envelope +1F380 ; fully-qualified # 🎀 E0.6 ribbon +1F381 ; fully-qualified # 🎁 E0.6 wrapped gift +1F397 FE0F ; fully-qualified # 🎗️ E0.7 reminder ribbon +1F397 ; unqualified # 🎗 E0.7 reminder ribbon +1F39F FE0F ; fully-qualified # 🎟️ E0.7 admission tickets +1F39F ; unqualified # 🎟 E0.7 admission tickets +1F3AB ; fully-qualified # 🎫 E0.6 ticket + +# subgroup: award-medal +1F396 FE0F ; fully-qualified # 🎖️ E0.7 military medal +1F396 ; unqualified # 🎖 E0.7 military medal +1F3C6 ; fully-qualified # 🏆 E0.6 trophy +1F3C5 ; fully-qualified # 🏅 E1.0 sports medal +1F947 ; fully-qualified # 🥇 E3.0 1st place medal +1F948 ; fully-qualified # 🥈 E3.0 2nd place medal +1F949 ; fully-qualified # 🥉 E3.0 3rd place medal + +# subgroup: sport +26BD ; fully-qualified # ⚽ E0.6 soccer ball +26BE ; fully-qualified # ⚾ E0.6 baseball +1F94E ; fully-qualified # 🥎 E11.0 softball +1F3C0 ; fully-qualified # 🏀 E0.6 basketball +1F3D0 ; fully-qualified # 🏐 E1.0 volleyball +1F3C8 ; fully-qualified # 🏈 E0.6 american football +1F3C9 ; fully-qualified # 🏉 E1.0 rugby football +1F3BE ; fully-qualified # 🎾 E0.6 tennis +1F94F ; fully-qualified # 🥏 E11.0 flying disc +1F3B3 ; fully-qualified # 🎳 E0.6 bowling +1F3CF ; fully-qualified # 🏏 E1.0 cricket game +1F3D1 ; fully-qualified # 🏑 E1.0 field hockey +1F3D2 ; fully-qualified # 🏒 E1.0 ice hockey +1F94D ; fully-qualified # 🥍 E11.0 lacrosse +1F3D3 ; fully-qualified # 🏓 E1.0 ping pong +1F3F8 ; fully-qualified # 🏸 E1.0 badminton +1F94A ; fully-qualified # 🥊 E3.0 boxing glove +1F94B ; fully-qualified # 🥋 E3.0 martial arts uniform +1F945 ; fully-qualified # 🥅 E3.0 goal net +26F3 ; fully-qualified # ⛳ E0.6 flag in hole +26F8 FE0F ; fully-qualified # ⛸️ E0.7 ice skate +26F8 ; unqualified # ⛸ E0.7 ice skate +1F3A3 ; fully-qualified # 🎣 E0.6 fishing pole +1F93F ; fully-qualified # 🤿 E12.0 diving mask +1F3BD ; fully-qualified # 🎽 E0.6 running shirt +1F3BF ; fully-qualified # 🎿 E0.6 skis +1F6F7 ; fully-qualified # 🛷 E5.0 sled +1F94C ; fully-qualified # 🥌 E5.0 curling stone + +# subgroup: game +1F3AF ; fully-qualified # 🎯 E0.6 bullseye +1FA80 ; fully-qualified # 🪀 E12.0 yo-yo +1FA81 ; fully-qualified # 🪁 E12.0 kite +1F52B ; fully-qualified # 🔫 E0.6 water pistol +1F3B1 ; fully-qualified # 🎱 E0.6 pool 8 ball +1F52E ; fully-qualified # 🔮 E0.6 crystal ball +1FA84 ; fully-qualified # 🪄 E13.0 magic wand +1F3AE ; fully-qualified # 🎮 E0.6 video game +1F579 FE0F ; fully-qualified # 🕹️ E0.7 joystick +1F579 ; unqualified # 🕹 E0.7 joystick +1F3B0 ; fully-qualified # 🎰 E0.6 slot machine +1F3B2 ; fully-qualified # 🎲 E0.6 game die +1F9E9 ; fully-qualified # 🧩 E11.0 puzzle piece +1F9F8 ; fully-qualified # 🧸 E11.0 teddy bear +1FA85 ; fully-qualified # 🪅 E13.0 piñata +1FAA9 ; fully-qualified # 🪩 E14.0 mirror ball +1FA86 ; fully-qualified # 🪆 E13.0 nesting dolls +2660 FE0F ; fully-qualified # ♠️ E0.6 spade suit +2660 ; unqualified # ♠ E0.6 spade suit +2665 FE0F ; fully-qualified # ♥️ E0.6 heart suit +2665 ; unqualified # ♥ E0.6 heart suit +2666 FE0F ; fully-qualified # ♦️ E0.6 diamond suit +2666 ; unqualified # ♦ E0.6 diamond suit +2663 FE0F ; fully-qualified # ♣️ E0.6 club suit +2663 ; unqualified # ♣ E0.6 club suit +265F FE0F ; fully-qualified # ♟️ E11.0 chess pawn +265F ; unqualified # ♟ E11.0 chess pawn +1F0CF ; fully-qualified # 🃏 E0.6 joker +1F004 ; fully-qualified # 🀄 E0.6 mahjong red dragon +1F3B4 ; fully-qualified # 🎴 E0.6 flower playing cards + +# subgroup: arts & crafts +1F3AD ; fully-qualified # 🎭 E0.6 performing arts +1F5BC FE0F ; fully-qualified # 🖼️ E0.7 framed picture +1F5BC ; unqualified # 🖼 E0.7 framed picture +1F3A8 ; fully-qualified # 🎨 E0.6 artist palette +1F9F5 ; fully-qualified # 🧵 E11.0 thread +1FAA1 ; fully-qualified # 🪡 E13.0 sewing needle +1F9F6 ; fully-qualified # 🧶 E11.0 yarn +1FAA2 ; fully-qualified # 🪢 E13.0 knot + +# Activities subtotal: 96 +# Activities subtotal: 96 w/o modifiers + +# group: Objects + +# subgroup: clothing +1F453 ; fully-qualified # 👓 E0.6 glasses +1F576 FE0F ; fully-qualified # 🕶️ E0.7 sunglasses +1F576 ; unqualified # 🕶 E0.7 sunglasses +1F97D ; fully-qualified # 🥽 E11.0 goggles +1F97C ; fully-qualified # 🥼 E11.0 lab coat +1F9BA ; fully-qualified # 🦺 E12.0 safety vest +1F454 ; fully-qualified # 👔 E0.6 necktie +1F455 ; fully-qualified # 👕 E0.6 t-shirt +1F456 ; fully-qualified # 👖 E0.6 jeans +1F9E3 ; fully-qualified # 🧣 E5.0 scarf +1F9E4 ; fully-qualified # 🧤 E5.0 gloves +1F9E5 ; fully-qualified # 🧥 E5.0 coat +1F9E6 ; fully-qualified # 🧦 E5.0 socks +1F457 ; fully-qualified # 👗 E0.6 dress +1F458 ; fully-qualified # 👘 E0.6 kimono +1F97B ; fully-qualified # 🥻 E12.0 sari +1FA71 ; fully-qualified # 🩱 E12.0 one-piece swimsuit +1FA72 ; fully-qualified # 🩲 E12.0 briefs +1FA73 ; fully-qualified # 🩳 E12.0 shorts +1F459 ; fully-qualified # 👙 E0.6 bikini +1F45A ; fully-qualified # 👚 E0.6 woman’s clothes +1FAAD ; fully-qualified # 🪭 E15.0 folding hand fan +1F45B ; fully-qualified # 👛 E0.6 purse +1F45C ; fully-qualified # 👜 E0.6 handbag +1F45D ; fully-qualified # 👝 E0.6 clutch bag +1F6CD FE0F ; fully-qualified # 🛍️ E0.7 shopping bags +1F6CD ; unqualified # 🛍 E0.7 shopping bags +1F392 ; fully-qualified # 🎒 E0.6 backpack +1FA74 ; fully-qualified # 🩴 E13.0 thong sandal +1F45E ; fully-qualified # 👞 E0.6 man’s shoe +1F45F ; fully-qualified # 👟 E0.6 running shoe +1F97E ; fully-qualified # 🥾 E11.0 hiking boot +1F97F ; fully-qualified # 🥿 E11.0 flat shoe +1F460 ; fully-qualified # 👠 E0.6 high-heeled shoe +1F461 ; fully-qualified # 👡 E0.6 woman’s sandal +1FA70 ; fully-qualified # 🩰 E12.0 ballet shoes +1F462 ; fully-qualified # 👢 E0.6 woman’s boot +1FAAE ; fully-qualified # 🪮 E15.0 hair pick +1F451 ; fully-qualified # 👑 E0.6 crown +1F452 ; fully-qualified # 👒 E0.6 woman’s hat +1F3A9 ; fully-qualified # 🎩 E0.6 top hat +1F393 ; fully-qualified # 🎓 E0.6 graduation cap +1F9E2 ; fully-qualified # 🧢 E5.0 billed cap +1FA96 ; fully-qualified # 🪖 E13.0 military helmet +26D1 FE0F ; fully-qualified # ⛑️ E0.7 rescue worker’s helmet +26D1 ; unqualified # ⛑ E0.7 rescue worker’s helmet +1F4FF ; fully-qualified # 📿 E1.0 prayer beads +1F484 ; fully-qualified # 💄 E0.6 lipstick +1F48D ; fully-qualified # 💍 E0.6 ring +1F48E ; fully-qualified # 💎 E0.6 gem stone + +# subgroup: sound +1F507 ; fully-qualified # 🔇 E1.0 muted speaker +1F508 ; fully-qualified # 🔈 E0.7 speaker low volume +1F509 ; fully-qualified # 🔉 E1.0 speaker medium volume +1F50A ; fully-qualified # 🔊 E0.6 speaker high volume +1F4E2 ; fully-qualified # 📢 E0.6 loudspeaker +1F4E3 ; fully-qualified # 📣 E0.6 megaphone +1F4EF ; fully-qualified # 📯 E1.0 postal horn +1F514 ; fully-qualified # 🔔 E0.6 bell +1F515 ; fully-qualified # 🔕 E1.0 bell with slash + +# subgroup: music +1F3BC ; fully-qualified # 🎼 E0.6 musical score +1F3B5 ; fully-qualified # 🎵 E0.6 musical note +1F3B6 ; fully-qualified # 🎶 E0.6 musical notes +1F399 FE0F ; fully-qualified # 🎙️ E0.7 studio microphone +1F399 ; unqualified # 🎙 E0.7 studio microphone +1F39A FE0F ; fully-qualified # 🎚️ E0.7 level slider +1F39A ; unqualified # 🎚 E0.7 level slider +1F39B FE0F ; fully-qualified # 🎛️ E0.7 control knobs +1F39B ; unqualified # 🎛 E0.7 control knobs +1F3A4 ; fully-qualified # 🎤 E0.6 microphone +1F3A7 ; fully-qualified # 🎧 E0.6 headphone +1F4FB ; fully-qualified # 📻 E0.6 radio + +# subgroup: musical-instrument +1F3B7 ; fully-qualified # 🎷 E0.6 saxophone +1FA97 ; fully-qualified # 🪗 E13.0 accordion +1F3B8 ; fully-qualified # 🎸 E0.6 guitar +1F3B9 ; fully-qualified # 🎹 E0.6 musical keyboard +1F3BA ; fully-qualified # 🎺 E0.6 trumpet +1F3BB ; fully-qualified # 🎻 E0.6 violin +1FA95 ; fully-qualified # 🪕 E12.0 banjo +1F941 ; fully-qualified # 🥁 E3.0 drum +1FA98 ; fully-qualified # 🪘 E13.0 long drum +1FA87 ; fully-qualified # 🪇 E15.0 maracas +1FA88 ; fully-qualified # 🪈 E15.0 flute +1FA89 ; fully-qualified # 🪉 E16.0 harp + +# subgroup: phone +1F4F1 ; fully-qualified # 📱 E0.6 mobile phone +1F4F2 ; fully-qualified # 📲 E0.6 mobile phone with arrow +260E FE0F ; fully-qualified # ☎️ E0.6 telephone +260E ; unqualified # ☎ E0.6 telephone +1F4DE ; fully-qualified # 📞 E0.6 telephone receiver +1F4DF ; fully-qualified # 📟 E0.6 pager +1F4E0 ; fully-qualified # 📠 E0.6 fax machine + +# subgroup: computer +1F50B ; fully-qualified # 🔋 E0.6 battery +1FAAB ; fully-qualified # 🪫 E14.0 low battery +1F50C ; fully-qualified # 🔌 E0.6 electric plug +1F4BB ; fully-qualified # 💻 E0.6 laptop +1F5A5 FE0F ; fully-qualified # 🖥️ E0.7 desktop computer +1F5A5 ; unqualified # 🖥 E0.7 desktop computer +1F5A8 FE0F ; fully-qualified # 🖨️ E0.7 printer +1F5A8 ; unqualified # 🖨 E0.7 printer +2328 FE0F ; fully-qualified # ⌨️ E1.0 keyboard +2328 ; unqualified # ⌨ E1.0 keyboard +1F5B1 FE0F ; fully-qualified # 🖱️ E0.7 computer mouse +1F5B1 ; unqualified # 🖱 E0.7 computer mouse +1F5B2 FE0F ; fully-qualified # 🖲️ E0.7 trackball +1F5B2 ; unqualified # 🖲 E0.7 trackball +1F4BD ; fully-qualified # 💽 E0.6 computer disk +1F4BE ; fully-qualified # 💾 E0.6 floppy disk +1F4BF ; fully-qualified # 💿 E0.6 optical disk +1F4C0 ; fully-qualified # 📀 E0.6 dvd +1F9EE ; fully-qualified # 🧮 E11.0 abacus + +# subgroup: light & video +1F3A5 ; fully-qualified # 🎥 E0.6 movie camera +1F39E FE0F ; fully-qualified # 🎞️ E0.7 film frames +1F39E ; unqualified # 🎞 E0.7 film frames +1F4FD FE0F ; fully-qualified # 📽️ E0.7 film projector +1F4FD ; unqualified # 📽 E0.7 film projector +1F3AC ; fully-qualified # 🎬 E0.6 clapper board +1F4FA ; fully-qualified # 📺 E0.6 television +1F4F7 ; fully-qualified # 📷 E0.6 camera +1F4F8 ; fully-qualified # 📸 E1.0 camera with flash +1F4F9 ; fully-qualified # 📹 E0.6 video camera +1F4FC ; fully-qualified # 📼 E0.6 videocassette +1F50D ; fully-qualified # 🔍 E0.6 magnifying glass tilted left +1F50E ; fully-qualified # 🔎 E0.6 magnifying glass tilted right +1F56F FE0F ; fully-qualified # 🕯️ E0.7 candle +1F56F ; unqualified # 🕯 E0.7 candle +1F4A1 ; fully-qualified # 💡 E0.6 light bulb +1F526 ; fully-qualified # 🔦 E0.6 flashlight +1F3EE ; fully-qualified # 🏮 E0.6 red paper lantern +1FA94 ; fully-qualified # 🪔 E12.0 diya lamp + +# subgroup: book-paper +1F4D4 ; fully-qualified # 📔 E0.6 notebook with decorative cover +1F4D5 ; fully-qualified # 📕 E0.6 closed book +1F4D6 ; fully-qualified # 📖 E0.6 open book +1F4D7 ; fully-qualified # 📗 E0.6 green book +1F4D8 ; fully-qualified # 📘 E0.6 blue book +1F4D9 ; fully-qualified # 📙 E0.6 orange book +1F4DA ; fully-qualified # 📚 E0.6 books +1F4D3 ; fully-qualified # 📓 E0.6 notebook +1F4D2 ; fully-qualified # 📒 E0.6 ledger +1F4C3 ; fully-qualified # 📃 E0.6 page with curl +1F4DC ; fully-qualified # 📜 E0.6 scroll +1F4C4 ; fully-qualified # 📄 E0.6 page facing up +1F4F0 ; fully-qualified # 📰 E0.6 newspaper +1F5DE FE0F ; fully-qualified # 🗞️ E0.7 rolled-up newspaper +1F5DE ; unqualified # 🗞 E0.7 rolled-up newspaper +1F4D1 ; fully-qualified # 📑 E0.6 bookmark tabs +1F516 ; fully-qualified # 🔖 E0.6 bookmark +1F3F7 FE0F ; fully-qualified # 🏷️ E0.7 label +1F3F7 ; unqualified # 🏷 E0.7 label + +# subgroup: money +1F4B0 ; fully-qualified # 💰 E0.6 money bag +1FA99 ; fully-qualified # 🪙 E13.0 coin +1F4B4 ; fully-qualified # 💴 E0.6 yen banknote +1F4B5 ; fully-qualified # 💵 E0.6 dollar banknote +1F4B6 ; fully-qualified # 💶 E1.0 euro banknote +1F4B7 ; fully-qualified # 💷 E1.0 pound banknote +1F4B8 ; fully-qualified # 💸 E0.6 money with wings +1F4B3 ; fully-qualified # 💳 E0.6 credit card +1F9FE ; fully-qualified # 🧾 E11.0 receipt +1F4B9 ; fully-qualified # 💹 E0.6 chart increasing with yen + +# subgroup: mail +2709 FE0F ; fully-qualified # ✉️ E0.6 envelope +2709 ; unqualified # ✉ E0.6 envelope +1F4E7 ; fully-qualified # 📧 E0.6 e-mail +1F4E8 ; fully-qualified # 📨 E0.6 incoming envelope +1F4E9 ; fully-qualified # 📩 E0.6 envelope with arrow +1F4E4 ; fully-qualified # 📤 E0.6 outbox tray +1F4E5 ; fully-qualified # 📥 E0.6 inbox tray +1F4E6 ; fully-qualified # 📦 E0.6 package +1F4EB ; fully-qualified # 📫 E0.6 closed mailbox with raised flag +1F4EA ; fully-qualified # 📪 E0.6 closed mailbox with lowered flag +1F4EC ; fully-qualified # 📬 E0.7 open mailbox with raised flag +1F4ED ; fully-qualified # 📭 E0.7 open mailbox with lowered flag +1F4EE ; fully-qualified # 📮 E0.6 postbox +1F5F3 FE0F ; fully-qualified # 🗳️ E0.7 ballot box with ballot +1F5F3 ; unqualified # 🗳 E0.7 ballot box with ballot + +# subgroup: writing +270F FE0F ; fully-qualified # ✏️ E0.6 pencil +270F ; unqualified # ✏ E0.6 pencil +2712 FE0F ; fully-qualified # ✒️ E0.6 black nib +2712 ; unqualified # ✒ E0.6 black nib +1F58B FE0F ; fully-qualified # 🖋️ E0.7 fountain pen +1F58B ; unqualified # 🖋 E0.7 fountain pen +1F58A FE0F ; fully-qualified # 🖊️ E0.7 pen +1F58A ; unqualified # 🖊 E0.7 pen +1F58C FE0F ; fully-qualified # 🖌️ E0.7 paintbrush +1F58C ; unqualified # 🖌 E0.7 paintbrush +1F58D FE0F ; fully-qualified # 🖍️ E0.7 crayon +1F58D ; unqualified # 🖍 E0.7 crayon +1F4DD ; fully-qualified # 📝 E0.6 memo + +# subgroup: office +1F4BC ; fully-qualified # 💼 E0.6 briefcase +1F4C1 ; fully-qualified # 📁 E0.6 file folder +1F4C2 ; fully-qualified # 📂 E0.6 open file folder +1F5C2 FE0F ; fully-qualified # 🗂️ E0.7 card index dividers +1F5C2 ; unqualified # 🗂 E0.7 card index dividers +1F4C5 ; fully-qualified # 📅 E0.6 calendar +1F4C6 ; fully-qualified # 📆 E0.6 tear-off calendar +1F5D2 FE0F ; fully-qualified # 🗒️ E0.7 spiral notepad +1F5D2 ; unqualified # 🗒 E0.7 spiral notepad +1F5D3 FE0F ; fully-qualified # 🗓️ E0.7 spiral calendar +1F5D3 ; unqualified # 🗓 E0.7 spiral calendar +1F4C7 ; fully-qualified # 📇 E0.6 card index +1F4C8 ; fully-qualified # 📈 E0.6 chart increasing +1F4C9 ; fully-qualified # 📉 E0.6 chart decreasing +1F4CA ; fully-qualified # 📊 E0.6 bar chart +1F4CB ; fully-qualified # 📋 E0.6 clipboard +1F4CC ; fully-qualified # 📌 E0.6 pushpin +1F4CD ; fully-qualified # 📍 E0.6 round pushpin +1F4CE ; fully-qualified # 📎 E0.6 paperclip +1F587 FE0F ; fully-qualified # 🖇️ E0.7 linked paperclips +1F587 ; unqualified # 🖇 E0.7 linked paperclips +1F4CF ; fully-qualified # 📏 E0.6 straight ruler +1F4D0 ; fully-qualified # 📐 E0.6 triangular ruler +2702 FE0F ; fully-qualified # ✂️ E0.6 scissors +2702 ; unqualified # ✂ E0.6 scissors +1F5C3 FE0F ; fully-qualified # 🗃️ E0.7 card file box +1F5C3 ; unqualified # 🗃 E0.7 card file box +1F5C4 FE0F ; fully-qualified # 🗄️ E0.7 file cabinet +1F5C4 ; unqualified # 🗄 E0.7 file cabinet +1F5D1 FE0F ; fully-qualified # 🗑️ E0.7 wastebasket +1F5D1 ; unqualified # 🗑 E0.7 wastebasket + +# subgroup: lock +1F512 ; fully-qualified # 🔒 E0.6 locked +1F513 ; fully-qualified # 🔓 E0.6 unlocked +1F50F ; fully-qualified # 🔏 E0.6 locked with pen +1F510 ; fully-qualified # 🔐 E0.6 locked with key +1F511 ; fully-qualified # 🔑 E0.6 key +1F5DD FE0F ; fully-qualified # 🗝️ E0.7 old key +1F5DD ; unqualified # 🗝 E0.7 old key + +# subgroup: tool +1F528 ; fully-qualified # 🔨 E0.6 hammer +1FA93 ; fully-qualified # 🪓 E12.0 axe +26CF FE0F ; fully-qualified # ⛏️ E0.7 pick +26CF ; unqualified # ⛏ E0.7 pick +2692 FE0F ; fully-qualified # ⚒️ E1.0 hammer and pick +2692 ; unqualified # ⚒ E1.0 hammer and pick +1F6E0 FE0F ; fully-qualified # 🛠️ E0.7 hammer and wrench +1F6E0 ; unqualified # 🛠 E0.7 hammer and wrench +1F5E1 FE0F ; fully-qualified # 🗡️ E0.7 dagger +1F5E1 ; unqualified # 🗡 E0.7 dagger +2694 FE0F ; fully-qualified # ⚔️ E1.0 crossed swords +2694 ; unqualified # ⚔ E1.0 crossed swords +1F4A3 ; fully-qualified # 💣 E0.6 bomb +1FA83 ; fully-qualified # 🪃 E13.0 boomerang +1F3F9 ; fully-qualified # 🏹 E1.0 bow and arrow +1F6E1 FE0F ; fully-qualified # 🛡️ E0.7 shield +1F6E1 ; unqualified # 🛡 E0.7 shield +1FA9A ; fully-qualified # 🪚 E13.0 carpentry saw +1F527 ; fully-qualified # 🔧 E0.6 wrench +1FA9B ; fully-qualified # 🪛 E13.0 screwdriver +1F529 ; fully-qualified # 🔩 E0.6 nut and bolt +2699 FE0F ; fully-qualified # ⚙️ E1.0 gear +2699 ; unqualified # ⚙ E1.0 gear +1F5DC FE0F ; fully-qualified # 🗜️ E0.7 clamp +1F5DC ; unqualified # 🗜 E0.7 clamp +2696 FE0F ; fully-qualified # ⚖️ E1.0 balance scale +2696 ; unqualified # ⚖ E1.0 balance scale +1F9AF ; fully-qualified # 🦯 E12.0 white cane +1F517 ; fully-qualified # 🔗 E0.6 link +26D3 FE0F 200D 1F4A5 ; fully-qualified # ⛓️‍💥 E15.1 broken chain +26D3 200D 1F4A5 ; unqualified # ⛓‍💥 E15.1 broken chain +26D3 FE0F ; fully-qualified # ⛓️ E0.7 chains +26D3 ; unqualified # ⛓ E0.7 chains +1FA9D ; fully-qualified # 🪝 E13.0 hook +1F9F0 ; fully-qualified # 🧰 E11.0 toolbox +1F9F2 ; fully-qualified # 🧲 E11.0 magnet +1FA9C ; fully-qualified # 🪜 E13.0 ladder +1FA8F ; fully-qualified # 🪏 E16.0 shovel + +# subgroup: science +2697 FE0F ; fully-qualified # ⚗️ E1.0 alembic +2697 ; unqualified # ⚗ E1.0 alembic +1F9EA ; fully-qualified # 🧪 E11.0 test tube +1F9EB ; fully-qualified # 🧫 E11.0 petri dish +1F9EC ; fully-qualified # 🧬 E11.0 dna +1F52C ; fully-qualified # 🔬 E1.0 microscope +1F52D ; fully-qualified # 🔭 E1.0 telescope +1F4E1 ; fully-qualified # 📡 E0.6 satellite antenna + +# subgroup: medical +1F489 ; fully-qualified # 💉 E0.6 syringe +1FA78 ; fully-qualified # 🩸 E12.0 drop of blood +1F48A ; fully-qualified # 💊 E0.6 pill +1FA79 ; fully-qualified # 🩹 E12.0 adhesive bandage +1FA7C ; fully-qualified # 🩼 E14.0 crutch +1FA7A ; fully-qualified # 🩺 E12.0 stethoscope +1FA7B ; fully-qualified # 🩻 E14.0 x-ray + +# subgroup: household +1F6AA ; fully-qualified # 🚪 E0.6 door +1F6D7 ; fully-qualified # 🛗 E13.0 elevator +1FA9E ; fully-qualified # 🪞 E13.0 mirror +1FA9F ; fully-qualified # 🪟 E13.0 window +1F6CF FE0F ; fully-qualified # 🛏️ E0.7 bed +1F6CF ; unqualified # 🛏 E0.7 bed +1F6CB FE0F ; fully-qualified # 🛋️ E0.7 couch and lamp +1F6CB ; unqualified # 🛋 E0.7 couch and lamp +1FA91 ; fully-qualified # 🪑 E12.0 chair +1F6BD ; fully-qualified # 🚽 E0.6 toilet +1FAA0 ; fully-qualified # 🪠 E13.0 plunger +1F6BF ; fully-qualified # 🚿 E1.0 shower +1F6C1 ; fully-qualified # 🛁 E1.0 bathtub +1FAA4 ; fully-qualified # 🪤 E13.0 mouse trap +1FA92 ; fully-qualified # 🪒 E12.0 razor +1F9F4 ; fully-qualified # 🧴 E11.0 lotion bottle +1F9F7 ; fully-qualified # 🧷 E11.0 safety pin +1F9F9 ; fully-qualified # 🧹 E11.0 broom +1F9FA ; fully-qualified # 🧺 E11.0 basket +1F9FB ; fully-qualified # 🧻 E11.0 roll of paper +1FAA3 ; fully-qualified # 🪣 E13.0 bucket +1F9FC ; fully-qualified # 🧼 E11.0 soap +1FAE7 ; fully-qualified # 🫧 E14.0 bubbles +1FAA5 ; fully-qualified # 🪥 E13.0 toothbrush +1F9FD ; fully-qualified # 🧽 E11.0 sponge +1F9EF ; fully-qualified # 🧯 E11.0 fire extinguisher +1F6D2 ; fully-qualified # 🛒 E3.0 shopping cart + +# subgroup: other-object +1F6AC ; fully-qualified # 🚬 E0.6 cigarette +26B0 FE0F ; fully-qualified # ⚰️ E1.0 coffin +26B0 ; unqualified # ⚰ E1.0 coffin +1FAA6 ; fully-qualified # 🪦 E13.0 headstone +26B1 FE0F ; fully-qualified # ⚱️ E1.0 funeral urn +26B1 ; unqualified # ⚱ E1.0 funeral urn +1F9FF ; fully-qualified # 🧿 E11.0 nazar amulet +1FAAC ; fully-qualified # 🪬 E14.0 hamsa +1F5FF ; fully-qualified # 🗿 E0.6 moai +1FAA7 ; fully-qualified # 🪧 E13.0 placard +1FAAA ; fully-qualified # 🪪 E14.0 identification card + +# Objects subtotal: 314 +# Objects subtotal: 314 w/o modifiers + +# group: Symbols + +# subgroup: transport-sign +1F3E7 ; fully-qualified # 🏧 E0.6 ATM sign +1F6AE ; fully-qualified # 🚮 E1.0 litter in bin sign +1F6B0 ; fully-qualified # 🚰 E1.0 potable water +267F ; fully-qualified # ♿ E0.6 wheelchair symbol +1F6B9 ; fully-qualified # 🚹 E0.6 men’s room +1F6BA ; fully-qualified # 🚺 E0.6 women’s room +1F6BB ; fully-qualified # 🚻 E0.6 restroom +1F6BC ; fully-qualified # 🚼 E0.6 baby symbol +1F6BE ; fully-qualified # 🚾 E0.6 water closet +1F6C2 ; fully-qualified # 🛂 E1.0 passport control +1F6C3 ; fully-qualified # 🛃 E1.0 customs +1F6C4 ; fully-qualified # 🛄 E1.0 baggage claim +1F6C5 ; fully-qualified # 🛅 E1.0 left luggage + +# subgroup: warning +26A0 FE0F ; fully-qualified # ⚠️ E0.6 warning +26A0 ; unqualified # ⚠ E0.6 warning +1F6B8 ; fully-qualified # 🚸 E1.0 children crossing +26D4 ; fully-qualified # ⛔ E0.6 no entry +1F6AB ; fully-qualified # 🚫 E0.6 prohibited +1F6B3 ; fully-qualified # 🚳 E1.0 no bicycles +1F6AD ; fully-qualified # 🚭 E0.6 no smoking +1F6AF ; fully-qualified # 🚯 E1.0 no littering +1F6B1 ; fully-qualified # 🚱 E1.0 non-potable water +1F6B7 ; fully-qualified # 🚷 E1.0 no pedestrians +1F4F5 ; fully-qualified # 📵 E1.0 no mobile phones +1F51E ; fully-qualified # 🔞 E0.6 no one under eighteen +2622 FE0F ; fully-qualified # ☢️ E1.0 radioactive +2622 ; unqualified # ☢ E1.0 radioactive +2623 FE0F ; fully-qualified # ☣️ E1.0 biohazard +2623 ; unqualified # ☣ E1.0 biohazard + +# subgroup: arrow +2B06 FE0F ; fully-qualified # ⬆️ E0.6 up arrow +2B06 ; unqualified # ⬆ E0.6 up arrow +2197 FE0F ; fully-qualified # ↗️ E0.6 up-right arrow +2197 ; unqualified # ↗ E0.6 up-right arrow +27A1 FE0F ; fully-qualified # ➡️ E0.6 right arrow +27A1 ; unqualified # ➡ E0.6 right arrow +2198 FE0F ; fully-qualified # ↘️ E0.6 down-right arrow +2198 ; unqualified # ↘ E0.6 down-right arrow +2B07 FE0F ; fully-qualified # ⬇️ E0.6 down arrow +2B07 ; unqualified # ⬇ E0.6 down arrow +2199 FE0F ; fully-qualified # ↙️ E0.6 down-left arrow +2199 ; unqualified # ↙ E0.6 down-left arrow +2B05 FE0F ; fully-qualified # ⬅️ E0.6 left arrow +2B05 ; unqualified # ⬅ E0.6 left arrow +2196 FE0F ; fully-qualified # ↖️ E0.6 up-left arrow +2196 ; unqualified # ↖ E0.6 up-left arrow +2195 FE0F ; fully-qualified # ↕️ E0.6 up-down arrow +2195 ; unqualified # ↕ E0.6 up-down arrow +2194 FE0F ; fully-qualified # ↔️ E0.6 left-right arrow +2194 ; unqualified # ↔ E0.6 left-right arrow +21A9 FE0F ; fully-qualified # ↩️ E0.6 right arrow curving left +21A9 ; unqualified # ↩ E0.6 right arrow curving left +21AA FE0F ; fully-qualified # ↪️ E0.6 left arrow curving right +21AA ; unqualified # ↪ E0.6 left arrow curving right +2934 FE0F ; fully-qualified # ⤴️ E0.6 right arrow curving up +2934 ; unqualified # ⤴ E0.6 right arrow curving up +2935 FE0F ; fully-qualified # ⤵️ E0.6 right arrow curving down +2935 ; unqualified # ⤵ E0.6 right arrow curving down +1F503 ; fully-qualified # 🔃 E0.6 clockwise vertical arrows +1F504 ; fully-qualified # 🔄 E1.0 counterclockwise arrows button +1F519 ; fully-qualified # 🔙 E0.6 BACK arrow +1F51A ; fully-qualified # 🔚 E0.6 END arrow +1F51B ; fully-qualified # 🔛 E0.6 ON! arrow +1F51C ; fully-qualified # 🔜 E0.6 SOON arrow +1F51D ; fully-qualified # 🔝 E0.6 TOP arrow + +# subgroup: religion +1F6D0 ; fully-qualified # 🛐 E1.0 place of worship +269B FE0F ; fully-qualified # ⚛️ E1.0 atom symbol +269B ; unqualified # ⚛ E1.0 atom symbol +1F549 FE0F ; fully-qualified # 🕉️ E0.7 om +1F549 ; unqualified # 🕉 E0.7 om +2721 FE0F ; fully-qualified # ✡️ E0.7 star of David +2721 ; unqualified # ✡ E0.7 star of David +2638 FE0F ; fully-qualified # ☸️ E0.7 wheel of dharma +2638 ; unqualified # ☸ E0.7 wheel of dharma +262F FE0F ; fully-qualified # ☯️ E0.7 yin yang +262F ; unqualified # ☯ E0.7 yin yang +271D FE0F ; fully-qualified # ✝️ E0.7 latin cross +271D ; unqualified # ✝ E0.7 latin cross +2626 FE0F ; fully-qualified # ☦️ E1.0 orthodox cross +2626 ; unqualified # ☦ E1.0 orthodox cross +262A FE0F ; fully-qualified # ☪️ E0.7 star and crescent +262A ; unqualified # ☪ E0.7 star and crescent +262E FE0F ; fully-qualified # ☮️ E1.0 peace symbol +262E ; unqualified # ☮ E1.0 peace symbol +1F54E ; fully-qualified # 🕎 E1.0 menorah +1F52F ; fully-qualified # 🔯 E0.6 dotted six-pointed star +1FAAF ; fully-qualified # 🪯 E15.0 khanda + +# subgroup: zodiac +2648 ; fully-qualified # ♈ E0.6 Aries +2649 ; fully-qualified # ♉ E0.6 Taurus +264A ; fully-qualified # ♊ E0.6 Gemini +264B ; fully-qualified # ♋ E0.6 Cancer +264C ; fully-qualified # ♌ E0.6 Leo +264D ; fully-qualified # ♍ E0.6 Virgo +264E ; fully-qualified # ♎ E0.6 Libra +264F ; fully-qualified # ♏ E0.6 Scorpio +2650 ; fully-qualified # ♐ E0.6 Sagittarius +2651 ; fully-qualified # ♑ E0.6 Capricorn +2652 ; fully-qualified # ♒ E0.6 Aquarius +2653 ; fully-qualified # ♓ E0.6 Pisces +26CE ; fully-qualified # ⛎ E0.6 Ophiuchus + +# subgroup: av-symbol +1F500 ; fully-qualified # 🔀 E1.0 shuffle tracks button +1F501 ; fully-qualified # 🔁 E1.0 repeat button +1F502 ; fully-qualified # 🔂 E1.0 repeat single button +25B6 FE0F ; fully-qualified # ▶️ E0.6 play button +25B6 ; unqualified # ▶ E0.6 play button +23E9 ; fully-qualified # ⏩ E0.6 fast-forward button +23ED FE0F ; fully-qualified # ⏭️ E0.7 next track button +23ED ; unqualified # ⏭ E0.7 next track button +23EF FE0F ; fully-qualified # ⏯️ E1.0 play or pause button +23EF ; unqualified # ⏯ E1.0 play or pause button +25C0 FE0F ; fully-qualified # ◀️ E0.6 reverse button +25C0 ; unqualified # ◀ E0.6 reverse button +23EA ; fully-qualified # ⏪ E0.6 fast reverse button +23EE FE0F ; fully-qualified # ⏮️ E0.7 last track button +23EE ; unqualified # ⏮ E0.7 last track button +1F53C ; fully-qualified # 🔼 E0.6 upwards button +23EB ; fully-qualified # ⏫ E0.6 fast up button +1F53D ; fully-qualified # 🔽 E0.6 downwards button +23EC ; fully-qualified # ⏬ E0.6 fast down button +23F8 FE0F ; fully-qualified # ⏸️ E0.7 pause button +23F8 ; unqualified # ⏸ E0.7 pause button +23F9 FE0F ; fully-qualified # ⏹️ E0.7 stop button +23F9 ; unqualified # ⏹ E0.7 stop button +23FA FE0F ; fully-qualified # ⏺️ E0.7 record button +23FA ; unqualified # ⏺ E0.7 record button +23CF FE0F ; fully-qualified # ⏏️ E1.0 eject button +23CF ; unqualified # ⏏ E1.0 eject button +1F3A6 ; fully-qualified # 🎦 E0.6 cinema +1F505 ; fully-qualified # 🔅 E1.0 dim button +1F506 ; fully-qualified # 🔆 E1.0 bright button +1F4F6 ; fully-qualified # 📶 E0.6 antenna bars +1F6DC ; fully-qualified # 🛜 E15.0 wireless +1F4F3 ; fully-qualified # 📳 E0.6 vibration mode +1F4F4 ; fully-qualified # 📴 E0.6 mobile phone off + +# subgroup: gender +2640 FE0F ; fully-qualified # ♀️ E4.0 female sign +2640 ; unqualified # ♀ E4.0 female sign +2642 FE0F ; fully-qualified # ♂️ E4.0 male sign +2642 ; unqualified # ♂ E4.0 male sign +26A7 FE0F ; fully-qualified # ⚧️ E13.0 transgender symbol +26A7 ; unqualified # ⚧ E13.0 transgender symbol + +# subgroup: math +2716 FE0F ; fully-qualified # ✖️ E0.6 multiply +2716 ; unqualified # ✖ E0.6 multiply +2795 ; fully-qualified # ➕ E0.6 plus +2796 ; fully-qualified # ➖ E0.6 minus +2797 ; fully-qualified # ➗ E0.6 divide +1F7F0 ; fully-qualified # 🟰 E14.0 heavy equals sign +267E FE0F ; fully-qualified # ♾️ E11.0 infinity +267E ; unqualified # ♾ E11.0 infinity + +# subgroup: punctuation +203C FE0F ; fully-qualified # ‼️ E0.6 double exclamation mark +203C ; unqualified # ‼ E0.6 double exclamation mark +2049 FE0F ; fully-qualified # ⁉️ E0.6 exclamation question mark +2049 ; unqualified # ⁉ E0.6 exclamation question mark +2753 ; fully-qualified # ❓ E0.6 red question mark +2754 ; fully-qualified # ❔ E0.6 white question mark +2755 ; fully-qualified # ❕ E0.6 white exclamation mark +2757 ; fully-qualified # ❗ E0.6 red exclamation mark +3030 FE0F ; fully-qualified # 〰️ E0.6 wavy dash +3030 ; unqualified # 〰 E0.6 wavy dash + +# subgroup: currency +1F4B1 ; fully-qualified # 💱 E0.6 currency exchange +1F4B2 ; fully-qualified # 💲 E0.6 heavy dollar sign + +# subgroup: other-symbol +2695 FE0F ; fully-qualified # ⚕️ E4.0 medical symbol +2695 ; unqualified # ⚕ E4.0 medical symbol +267B FE0F ; fully-qualified # ♻️ E0.6 recycling symbol +267B ; unqualified # ♻ E0.6 recycling symbol +269C FE0F ; fully-qualified # ⚜️ E1.0 fleur-de-lis +269C ; unqualified # ⚜ E1.0 fleur-de-lis +1F531 ; fully-qualified # 🔱 E0.6 trident emblem +1F4DB ; fully-qualified # 📛 E0.6 name badge +1F530 ; fully-qualified # 🔰 E0.6 Japanese symbol for beginner +2B55 ; fully-qualified # ⭕ E0.6 hollow red circle +2705 ; fully-qualified # ✅ E0.6 check mark button +2611 FE0F ; fully-qualified # ☑️ E0.6 check box with check +2611 ; unqualified # ☑ E0.6 check box with check +2714 FE0F ; fully-qualified # ✔️ E0.6 check mark +2714 ; unqualified # ✔ E0.6 check mark +274C ; fully-qualified # ❌ E0.6 cross mark +274E ; fully-qualified # ❎ E0.6 cross mark button +27B0 ; fully-qualified # ➰ E0.6 curly loop +27BF ; fully-qualified # ➿ E1.0 double curly loop +303D FE0F ; fully-qualified # 〽️ E0.6 part alternation mark +303D ; unqualified # 〽 E0.6 part alternation mark +2733 FE0F ; fully-qualified # ✳️ E0.6 eight-spoked asterisk +2733 ; unqualified # ✳ E0.6 eight-spoked asterisk +2734 FE0F ; fully-qualified # ✴️ E0.6 eight-pointed star +2734 ; unqualified # ✴ E0.6 eight-pointed star +2747 FE0F ; fully-qualified # ❇️ E0.6 sparkle +2747 ; unqualified # ❇ E0.6 sparkle +00A9 FE0F ; fully-qualified # ©️ E0.6 copyright +00A9 ; unqualified # © E0.6 copyright +00AE FE0F ; fully-qualified # ®️ E0.6 registered +00AE ; unqualified # ® E0.6 registered +2122 FE0F ; fully-qualified # ™️ E0.6 trade mark +2122 ; unqualified # ™ E0.6 trade mark +1FADF ; fully-qualified # 🫟 E16.0 splatter + +# subgroup: keycap +0023 FE0F 20E3 ; fully-qualified # #️⃣ E0.6 keycap: # +0023 20E3 ; unqualified # #⃣ E0.6 keycap: # +002A FE0F 20E3 ; fully-qualified # *️⃣ E2.0 keycap: * +002A 20E3 ; unqualified # *⃣ E2.0 keycap: * +0030 FE0F 20E3 ; fully-qualified # 0️⃣ E0.6 keycap: 0 +0030 20E3 ; unqualified # 0⃣ E0.6 keycap: 0 +0031 FE0F 20E3 ; fully-qualified # 1️⃣ E0.6 keycap: 1 +0031 20E3 ; unqualified # 1⃣ E0.6 keycap: 1 +0032 FE0F 20E3 ; fully-qualified # 2️⃣ E0.6 keycap: 2 +0032 20E3 ; unqualified # 2⃣ E0.6 keycap: 2 +0033 FE0F 20E3 ; fully-qualified # 3️⃣ E0.6 keycap: 3 +0033 20E3 ; unqualified # 3⃣ E0.6 keycap: 3 +0034 FE0F 20E3 ; fully-qualified # 4️⃣ E0.6 keycap: 4 +0034 20E3 ; unqualified # 4⃣ E0.6 keycap: 4 +0035 FE0F 20E3 ; fully-qualified # 5️⃣ E0.6 keycap: 5 +0035 20E3 ; unqualified # 5⃣ E0.6 keycap: 5 +0036 FE0F 20E3 ; fully-qualified # 6️⃣ E0.6 keycap: 6 +0036 20E3 ; unqualified # 6⃣ E0.6 keycap: 6 +0037 FE0F 20E3 ; fully-qualified # 7️⃣ E0.6 keycap: 7 +0037 20E3 ; unqualified # 7⃣ E0.6 keycap: 7 +0038 FE0F 20E3 ; fully-qualified # 8️⃣ E0.6 keycap: 8 +0038 20E3 ; unqualified # 8⃣ E0.6 keycap: 8 +0039 FE0F 20E3 ; fully-qualified # 9️⃣ E0.6 keycap: 9 +0039 20E3 ; unqualified # 9⃣ E0.6 keycap: 9 +1F51F ; fully-qualified # 🔟 E0.6 keycap: 10 + +# subgroup: alphanum +1F520 ; fully-qualified # 🔠 E0.6 input latin uppercase +1F521 ; fully-qualified # 🔡 E0.6 input latin lowercase +1F522 ; fully-qualified # 🔢 E0.6 input numbers +1F523 ; fully-qualified # 🔣 E0.6 input symbols +1F524 ; fully-qualified # 🔤 E0.6 input latin letters +1F170 FE0F ; fully-qualified # 🅰️ E0.6 A button (blood type) +1F170 ; unqualified # 🅰 E0.6 A button (blood type) +1F18E ; fully-qualified # 🆎 E0.6 AB button (blood type) +1F171 FE0F ; fully-qualified # 🅱️ E0.6 B button (blood type) +1F171 ; unqualified # 🅱 E0.6 B button (blood type) +1F191 ; fully-qualified # 🆑 E0.6 CL button +1F192 ; fully-qualified # 🆒 E0.6 COOL button +1F193 ; fully-qualified # 🆓 E0.6 FREE button +2139 FE0F ; fully-qualified # ℹ️ E0.6 information +2139 ; unqualified # ℹ E0.6 information +1F194 ; fully-qualified # 🆔 E0.6 ID button +24C2 FE0F ; fully-qualified # Ⓜ️ E0.6 circled M +24C2 ; unqualified # Ⓜ E0.6 circled M +1F195 ; fully-qualified # 🆕 E0.6 NEW button +1F196 ; fully-qualified # 🆖 E0.6 NG button +1F17E FE0F ; fully-qualified # 🅾️ E0.6 O button (blood type) +1F17E ; unqualified # 🅾 E0.6 O button (blood type) +1F197 ; fully-qualified # 🆗 E0.6 OK button +1F17F FE0F ; fully-qualified # 🅿️ E0.6 P button +1F17F ; unqualified # 🅿 E0.6 P button +1F198 ; fully-qualified # 🆘 E0.6 SOS button +1F199 ; fully-qualified # 🆙 E0.6 UP! button +1F19A ; fully-qualified # 🆚 E0.6 VS button +1F201 ; fully-qualified # 🈁 E0.6 Japanese “here” button +1F202 FE0F ; fully-qualified # 🈂️ E0.6 Japanese “service charge” button +1F202 ; unqualified # 🈂 E0.6 Japanese “service charge” button +1F237 FE0F ; fully-qualified # 🈷️ E0.6 Japanese “monthly amount” button +1F237 ; unqualified # 🈷 E0.6 Japanese “monthly amount” button +1F236 ; fully-qualified # 🈶 E0.6 Japanese “not free of charge” button +1F22F ; fully-qualified # 🈯 E0.6 Japanese “reserved” button +1F250 ; fully-qualified # 🉐 E0.6 Japanese “bargain” button +1F239 ; fully-qualified # 🈹 E0.6 Japanese “discount” button +1F21A ; fully-qualified # 🈚 E0.6 Japanese “free of charge” button +1F232 ; fully-qualified # 🈲 E0.6 Japanese “prohibited” button +1F251 ; fully-qualified # 🉑 E0.6 Japanese “acceptable” button +1F238 ; fully-qualified # 🈸 E0.6 Japanese “application” button +1F234 ; fully-qualified # 🈴 E0.6 Japanese “passing grade” button +1F233 ; fully-qualified # 🈳 E0.6 Japanese “vacancy” button +3297 FE0F ; fully-qualified # ㊗️ E0.6 Japanese “congratulations” button +3297 ; unqualified # ㊗ E0.6 Japanese “congratulations” button +3299 FE0F ; fully-qualified # ㊙️ E0.6 Japanese “secret” button +3299 ; unqualified # ㊙ E0.6 Japanese “secret” button +1F23A ; fully-qualified # 🈺 E0.6 Japanese “open for business” button +1F235 ; fully-qualified # 🈵 E0.6 Japanese “no vacancy” button + +# subgroup: geometric +1F534 ; fully-qualified # 🔴 E0.6 red circle +1F7E0 ; fully-qualified # 🟠 E12.0 orange circle +1F7E1 ; fully-qualified # 🟡 E12.0 yellow circle +1F7E2 ; fully-qualified # 🟢 E12.0 green circle +1F535 ; fully-qualified # 🔵 E0.6 blue circle +1F7E3 ; fully-qualified # 🟣 E12.0 purple circle +1F7E4 ; fully-qualified # 🟤 E12.0 brown circle +26AB ; fully-qualified # ⚫ E0.6 black circle +26AA ; fully-qualified # ⚪ E0.6 white circle +1F7E5 ; fully-qualified # 🟥 E12.0 red square +1F7E7 ; fully-qualified # 🟧 E12.0 orange square +1F7E8 ; fully-qualified # 🟨 E12.0 yellow square +1F7E9 ; fully-qualified # 🟩 E12.0 green square +1F7E6 ; fully-qualified # 🟦 E12.0 blue square +1F7EA ; fully-qualified # 🟪 E12.0 purple square +1F7EB ; fully-qualified # 🟫 E12.0 brown square +2B1B ; fully-qualified # ⬛ E0.6 black large square +2B1C ; fully-qualified # ⬜ E0.6 white large square +25FC FE0F ; fully-qualified # ◼️ E0.6 black medium square +25FC ; unqualified # ◼ E0.6 black medium square +25FB FE0F ; fully-qualified # ◻️ E0.6 white medium square +25FB ; unqualified # ◻ E0.6 white medium square +25FE ; fully-qualified # ◾ E0.6 black medium-small square +25FD ; fully-qualified # ◽ E0.6 white medium-small square +25AA FE0F ; fully-qualified # ▪️ E0.6 black small square +25AA ; unqualified # ▪ E0.6 black small square +25AB FE0F ; fully-qualified # ▫️ E0.6 white small square +25AB ; unqualified # ▫ E0.6 white small square +1F536 ; fully-qualified # 🔶 E0.6 large orange diamond +1F537 ; fully-qualified # 🔷 E0.6 large blue diamond +1F538 ; fully-qualified # 🔸 E0.6 small orange diamond +1F539 ; fully-qualified # 🔹 E0.6 small blue diamond +1F53A ; fully-qualified # 🔺 E0.6 red triangle pointed up +1F53B ; fully-qualified # 🔻 E0.6 red triangle pointed down +1F4A0 ; fully-qualified # 💠 E0.6 diamond with a dot +1F518 ; fully-qualified # 🔘 E0.6 radio button +1F533 ; fully-qualified # 🔳 E0.6 white square button +1F532 ; fully-qualified # 🔲 E0.6 black square button + +# Symbols subtotal: 305 +# Symbols subtotal: 305 w/o modifiers + +# group: Flags + +# subgroup: flag +1F3C1 ; fully-qualified # 🏁 E0.6 chequered flag +1F6A9 ; fully-qualified # 🚩 E0.6 triangular flag +1F38C ; fully-qualified # 🎌 E0.6 crossed flags +1F3F4 ; fully-qualified # 🏴 E1.0 black flag +1F3F3 FE0F ; fully-qualified # 🏳️ E0.7 white flag +1F3F3 ; unqualified # 🏳 E0.7 white flag +1F3F3 FE0F 200D 1F308 ; fully-qualified # 🏳️‍🌈 E4.0 rainbow flag +1F3F3 200D 1F308 ; unqualified # 🏳‍🌈 E4.0 rainbow flag +1F3F3 FE0F 200D 26A7 FE0F ; fully-qualified # 🏳️‍⚧️ E13.0 transgender flag +1F3F3 200D 26A7 FE0F ; unqualified # 🏳‍⚧️ E13.0 transgender flag +1F3F3 FE0F 200D 26A7 ; minimally-qualified # 🏳️‍⚧ E13.0 transgender flag +1F3F3 200D 26A7 ; unqualified # 🏳‍⚧ E13.0 transgender flag +1F3F4 200D 2620 FE0F ; fully-qualified # 🏴‍☠️ E11.0 pirate flag +1F3F4 200D 2620 ; minimally-qualified # 🏴‍☠ E11.0 pirate flag + +# subgroup: country-flag +1F1E6 1F1E8 ; fully-qualified # 🇦🇨 E2.0 flag: Ascension Island +1F1E6 1F1E9 ; fully-qualified # 🇦🇩 E2.0 flag: Andorra +1F1E6 1F1EA ; fully-qualified # 🇦🇪 E2.0 flag: United Arab Emirates +1F1E6 1F1EB ; fully-qualified # 🇦🇫 E2.0 flag: Afghanistan +1F1E6 1F1EC ; fully-qualified # 🇦🇬 E2.0 flag: Antigua & Barbuda +1F1E6 1F1EE ; fully-qualified # 🇦🇮 E2.0 flag: Anguilla +1F1E6 1F1F1 ; fully-qualified # 🇦🇱 E2.0 flag: Albania +1F1E6 1F1F2 ; fully-qualified # 🇦🇲 E2.0 flag: Armenia +1F1E6 1F1F4 ; fully-qualified # 🇦🇴 E2.0 flag: Angola +1F1E6 1F1F6 ; fully-qualified # 🇦🇶 E2.0 flag: Antarctica +1F1E6 1F1F7 ; fully-qualified # 🇦🇷 E2.0 flag: Argentina +1F1E6 1F1F8 ; fully-qualified # 🇦🇸 E2.0 flag: American Samoa +1F1E6 1F1F9 ; fully-qualified # 🇦🇹 E2.0 flag: Austria +1F1E6 1F1FA ; fully-qualified # 🇦🇺 E2.0 flag: Australia +1F1E6 1F1FC ; fully-qualified # 🇦🇼 E2.0 flag: Aruba +1F1E6 1F1FD ; fully-qualified # 🇦🇽 E2.0 flag: Åland Islands +1F1E6 1F1FF ; fully-qualified # 🇦🇿 E2.0 flag: Azerbaijan +1F1E7 1F1E6 ; fully-qualified # 🇧🇦 E2.0 flag: Bosnia & Herzegovina +1F1E7 1F1E7 ; fully-qualified # 🇧🇧 E2.0 flag: Barbados +1F1E7 1F1E9 ; fully-qualified # 🇧🇩 E2.0 flag: Bangladesh +1F1E7 1F1EA ; fully-qualified # 🇧🇪 E2.0 flag: Belgium +1F1E7 1F1EB ; fully-qualified # 🇧🇫 E2.0 flag: Burkina Faso +1F1E7 1F1EC ; fully-qualified # 🇧🇬 E2.0 flag: Bulgaria +1F1E7 1F1ED ; fully-qualified # 🇧🇭 E2.0 flag: Bahrain +1F1E7 1F1EE ; fully-qualified # 🇧🇮 E2.0 flag: Burundi +1F1E7 1F1EF ; fully-qualified # 🇧🇯 E2.0 flag: Benin +1F1E7 1F1F1 ; fully-qualified # 🇧🇱 E2.0 flag: St. Barthélemy +1F1E7 1F1F2 ; fully-qualified # 🇧🇲 E2.0 flag: Bermuda +1F1E7 1F1F3 ; fully-qualified # 🇧🇳 E2.0 flag: Brunei +1F1E7 1F1F4 ; fully-qualified # 🇧🇴 E2.0 flag: Bolivia +1F1E7 1F1F6 ; fully-qualified # 🇧🇶 E2.0 flag: Caribbean Netherlands +1F1E7 1F1F7 ; fully-qualified # 🇧🇷 E2.0 flag: Brazil +1F1E7 1F1F8 ; fully-qualified # 🇧🇸 E2.0 flag: Bahamas +1F1E7 1F1F9 ; fully-qualified # 🇧🇹 E2.0 flag: Bhutan +1F1E7 1F1FB ; fully-qualified # 🇧🇻 E2.0 flag: Bouvet Island +1F1E7 1F1FC ; fully-qualified # 🇧🇼 E2.0 flag: Botswana +1F1E7 1F1FE ; fully-qualified # 🇧🇾 E2.0 flag: Belarus +1F1E7 1F1FF ; fully-qualified # 🇧🇿 E2.0 flag: Belize +1F1E8 1F1E6 ; fully-qualified # 🇨🇦 E2.0 flag: Canada +1F1E8 1F1E8 ; fully-qualified # 🇨🇨 E2.0 flag: Cocos (Keeling) Islands +1F1E8 1F1E9 ; fully-qualified # 🇨🇩 E2.0 flag: Congo - Kinshasa +1F1E8 1F1EB ; fully-qualified # 🇨🇫 E2.0 flag: Central African Republic +1F1E8 1F1EC ; fully-qualified # 🇨🇬 E2.0 flag: Congo - Brazzaville +1F1E8 1F1ED ; fully-qualified # 🇨🇭 E2.0 flag: Switzerland +1F1E8 1F1EE ; fully-qualified # 🇨🇮 E2.0 flag: Côte d’Ivoire +1F1E8 1F1F0 ; fully-qualified # 🇨🇰 E2.0 flag: Cook Islands +1F1E8 1F1F1 ; fully-qualified # 🇨🇱 E2.0 flag: Chile +1F1E8 1F1F2 ; fully-qualified # 🇨🇲 E2.0 flag: Cameroon +1F1E8 1F1F3 ; fully-qualified # 🇨🇳 E0.6 flag: China +1F1E8 1F1F4 ; fully-qualified # 🇨🇴 E2.0 flag: Colombia +1F1E8 1F1F5 ; fully-qualified # 🇨🇵 E2.0 flag: Clipperton Island +1F1E8 1F1F6 ; fully-qualified # 🇨🇶 E16.0 flag: Sark +1F1E8 1F1F7 ; fully-qualified # 🇨🇷 E2.0 flag: Costa Rica +1F1E8 1F1FA ; fully-qualified # 🇨🇺 E2.0 flag: Cuba +1F1E8 1F1FB ; fully-qualified # 🇨🇻 E2.0 flag: Cape Verde +1F1E8 1F1FC ; fully-qualified # 🇨🇼 E2.0 flag: Curaçao +1F1E8 1F1FD ; fully-qualified # 🇨🇽 E2.0 flag: Christmas Island +1F1E8 1F1FE ; fully-qualified # 🇨🇾 E2.0 flag: Cyprus +1F1E8 1F1FF ; fully-qualified # 🇨🇿 E2.0 flag: Czechia +1F1E9 1F1EA ; fully-qualified # 🇩🇪 E0.6 flag: Germany +1F1E9 1F1EC ; fully-qualified # 🇩🇬 E2.0 flag: Diego Garcia +1F1E9 1F1EF ; fully-qualified # 🇩🇯 E2.0 flag: Djibouti +1F1E9 1F1F0 ; fully-qualified # 🇩🇰 E2.0 flag: Denmark +1F1E9 1F1F2 ; fully-qualified # 🇩🇲 E2.0 flag: Dominica +1F1E9 1F1F4 ; fully-qualified # 🇩🇴 E2.0 flag: Dominican Republic +1F1E9 1F1FF ; fully-qualified # 🇩🇿 E2.0 flag: Algeria +1F1EA 1F1E6 ; fully-qualified # 🇪🇦 E2.0 flag: Ceuta & Melilla +1F1EA 1F1E8 ; fully-qualified # 🇪🇨 E2.0 flag: Ecuador +1F1EA 1F1EA ; fully-qualified # 🇪🇪 E2.0 flag: Estonia +1F1EA 1F1EC ; fully-qualified # 🇪🇬 E2.0 flag: Egypt +1F1EA 1F1ED ; fully-qualified # 🇪🇭 E2.0 flag: Western Sahara +1F1EA 1F1F7 ; fully-qualified # 🇪🇷 E2.0 flag: Eritrea +1F1EA 1F1F8 ; fully-qualified # 🇪🇸 E0.6 flag: Spain +1F1EA 1F1F9 ; fully-qualified # 🇪🇹 E2.0 flag: Ethiopia +1F1EA 1F1FA ; fully-qualified # 🇪🇺 E2.0 flag: European Union +1F1EB 1F1EE ; fully-qualified # 🇫🇮 E2.0 flag: Finland +1F1EB 1F1EF ; fully-qualified # 🇫🇯 E2.0 flag: Fiji +1F1EB 1F1F0 ; fully-qualified # 🇫🇰 E2.0 flag: Falkland Islands +1F1EB 1F1F2 ; fully-qualified # 🇫🇲 E2.0 flag: Micronesia +1F1EB 1F1F4 ; fully-qualified # 🇫🇴 E2.0 flag: Faroe Islands +1F1EB 1F1F7 ; fully-qualified # 🇫🇷 E0.6 flag: France +1F1EC 1F1E6 ; fully-qualified # 🇬🇦 E2.0 flag: Gabon +1F1EC 1F1E7 ; fully-qualified # 🇬🇧 E0.6 flag: United Kingdom +1F1EC 1F1E9 ; fully-qualified # 🇬🇩 E2.0 flag: Grenada +1F1EC 1F1EA ; fully-qualified # 🇬🇪 E2.0 flag: Georgia +1F1EC 1F1EB ; fully-qualified # 🇬🇫 E2.0 flag: French Guiana +1F1EC 1F1EC ; fully-qualified # 🇬🇬 E2.0 flag: Guernsey +1F1EC 1F1ED ; fully-qualified # 🇬🇭 E2.0 flag: Ghana +1F1EC 1F1EE ; fully-qualified # 🇬🇮 E2.0 flag: Gibraltar +1F1EC 1F1F1 ; fully-qualified # 🇬🇱 E2.0 flag: Greenland +1F1EC 1F1F2 ; fully-qualified # 🇬🇲 E2.0 flag: Gambia +1F1EC 1F1F3 ; fully-qualified # 🇬🇳 E2.0 flag: Guinea +1F1EC 1F1F5 ; fully-qualified # 🇬🇵 E2.0 flag: Guadeloupe +1F1EC 1F1F6 ; fully-qualified # 🇬🇶 E2.0 flag: Equatorial Guinea +1F1EC 1F1F7 ; fully-qualified # 🇬🇷 E2.0 flag: Greece +1F1EC 1F1F8 ; fully-qualified # 🇬🇸 E2.0 flag: South Georgia & South Sandwich Islands +1F1EC 1F1F9 ; fully-qualified # 🇬🇹 E2.0 flag: Guatemala +1F1EC 1F1FA ; fully-qualified # 🇬🇺 E2.0 flag: Guam +1F1EC 1F1FC ; fully-qualified # 🇬🇼 E2.0 flag: Guinea-Bissau +1F1EC 1F1FE ; fully-qualified # 🇬🇾 E2.0 flag: Guyana +1F1ED 1F1F0 ; fully-qualified # 🇭🇰 E2.0 flag: Hong Kong SAR China +1F1ED 1F1F2 ; fully-qualified # 🇭🇲 E2.0 flag: Heard & McDonald Islands +1F1ED 1F1F3 ; fully-qualified # 🇭🇳 E2.0 flag: Honduras +1F1ED 1F1F7 ; fully-qualified # 🇭🇷 E2.0 flag: Croatia +1F1ED 1F1F9 ; fully-qualified # 🇭🇹 E2.0 flag: Haiti +1F1ED 1F1FA ; fully-qualified # 🇭🇺 E2.0 flag: Hungary +1F1EE 1F1E8 ; fully-qualified # 🇮🇨 E2.0 flag: Canary Islands +1F1EE 1F1E9 ; fully-qualified # 🇮🇩 E2.0 flag: Indonesia +1F1EE 1F1EA ; fully-qualified # 🇮🇪 E2.0 flag: Ireland +1F1EE 1F1F1 ; fully-qualified # 🇮🇱 E2.0 flag: Israel +1F1EE 1F1F2 ; fully-qualified # 🇮🇲 E2.0 flag: Isle of Man +1F1EE 1F1F3 ; fully-qualified # 🇮🇳 E2.0 flag: India +1F1EE 1F1F4 ; fully-qualified # 🇮🇴 E2.0 flag: British Indian Ocean Territory +1F1EE 1F1F6 ; fully-qualified # 🇮🇶 E2.0 flag: Iraq +1F1EE 1F1F7 ; fully-qualified # 🇮🇷 E2.0 flag: Iran +1F1EE 1F1F8 ; fully-qualified # 🇮🇸 E2.0 flag: Iceland +1F1EE 1F1F9 ; fully-qualified # 🇮🇹 E0.6 flag: Italy +1F1EF 1F1EA ; fully-qualified # 🇯🇪 E2.0 flag: Jersey +1F1EF 1F1F2 ; fully-qualified # 🇯🇲 E2.0 flag: Jamaica +1F1EF 1F1F4 ; fully-qualified # 🇯🇴 E2.0 flag: Jordan +1F1EF 1F1F5 ; fully-qualified # 🇯🇵 E0.6 flag: Japan +1F1F0 1F1EA ; fully-qualified # 🇰🇪 E2.0 flag: Kenya +1F1F0 1F1EC ; fully-qualified # 🇰🇬 E2.0 flag: Kyrgyzstan +1F1F0 1F1ED ; fully-qualified # 🇰🇭 E2.0 flag: Cambodia +1F1F0 1F1EE ; fully-qualified # 🇰🇮 E2.0 flag: Kiribati +1F1F0 1F1F2 ; fully-qualified # 🇰🇲 E2.0 flag: Comoros +1F1F0 1F1F3 ; fully-qualified # 🇰🇳 E2.0 flag: St. Kitts & Nevis +1F1F0 1F1F5 ; fully-qualified # 🇰🇵 E2.0 flag: North Korea +1F1F0 1F1F7 ; fully-qualified # 🇰🇷 E0.6 flag: South Korea +1F1F0 1F1FC ; fully-qualified # 🇰🇼 E2.0 flag: Kuwait +1F1F0 1F1FE ; fully-qualified # 🇰🇾 E2.0 flag: Cayman Islands +1F1F0 1F1FF ; fully-qualified # 🇰🇿 E2.0 flag: Kazakhstan +1F1F1 1F1E6 ; fully-qualified # 🇱🇦 E2.0 flag: Laos +1F1F1 1F1E7 ; fully-qualified # 🇱🇧 E2.0 flag: Lebanon +1F1F1 1F1E8 ; fully-qualified # 🇱🇨 E2.0 flag: St. Lucia +1F1F1 1F1EE ; fully-qualified # 🇱🇮 E2.0 flag: Liechtenstein +1F1F1 1F1F0 ; fully-qualified # 🇱🇰 E2.0 flag: Sri Lanka +1F1F1 1F1F7 ; fully-qualified # 🇱🇷 E2.0 flag: Liberia +1F1F1 1F1F8 ; fully-qualified # 🇱🇸 E2.0 flag: Lesotho +1F1F1 1F1F9 ; fully-qualified # 🇱🇹 E2.0 flag: Lithuania +1F1F1 1F1FA ; fully-qualified # 🇱🇺 E2.0 flag: Luxembourg +1F1F1 1F1FB ; fully-qualified # 🇱🇻 E2.0 flag: Latvia +1F1F1 1F1FE ; fully-qualified # 🇱🇾 E2.0 flag: Libya +1F1F2 1F1E6 ; fully-qualified # 🇲🇦 E2.0 flag: Morocco +1F1F2 1F1E8 ; fully-qualified # 🇲🇨 E2.0 flag: Monaco +1F1F2 1F1E9 ; fully-qualified # 🇲🇩 E2.0 flag: Moldova +1F1F2 1F1EA ; fully-qualified # 🇲🇪 E2.0 flag: Montenegro +1F1F2 1F1EB ; fully-qualified # 🇲🇫 E2.0 flag: St. Martin +1F1F2 1F1EC ; fully-qualified # 🇲🇬 E2.0 flag: Madagascar +1F1F2 1F1ED ; fully-qualified # 🇲🇭 E2.0 flag: Marshall Islands +1F1F2 1F1F0 ; fully-qualified # 🇲🇰 E2.0 flag: North Macedonia +1F1F2 1F1F1 ; fully-qualified # 🇲🇱 E2.0 flag: Mali +1F1F2 1F1F2 ; fully-qualified # 🇲🇲 E2.0 flag: Myanmar (Burma) +1F1F2 1F1F3 ; fully-qualified # 🇲🇳 E2.0 flag: Mongolia +1F1F2 1F1F4 ; fully-qualified # 🇲🇴 E2.0 flag: Macao SAR China +1F1F2 1F1F5 ; fully-qualified # 🇲🇵 E2.0 flag: Northern Mariana Islands +1F1F2 1F1F6 ; fully-qualified # 🇲🇶 E2.0 flag: Martinique +1F1F2 1F1F7 ; fully-qualified # 🇲🇷 E2.0 flag: Mauritania +1F1F2 1F1F8 ; fully-qualified # 🇲🇸 E2.0 flag: Montserrat +1F1F2 1F1F9 ; fully-qualified # 🇲🇹 E2.0 flag: Malta +1F1F2 1F1FA ; fully-qualified # 🇲🇺 E2.0 flag: Mauritius +1F1F2 1F1FB ; fully-qualified # 🇲🇻 E2.0 flag: Maldives +1F1F2 1F1FC ; fully-qualified # 🇲🇼 E2.0 flag: Malawi +1F1F2 1F1FD ; fully-qualified # 🇲🇽 E2.0 flag: Mexico +1F1F2 1F1FE ; fully-qualified # 🇲🇾 E2.0 flag: Malaysia +1F1F2 1F1FF ; fully-qualified # 🇲🇿 E2.0 flag: Mozambique +1F1F3 1F1E6 ; fully-qualified # 🇳🇦 E2.0 flag: Namibia +1F1F3 1F1E8 ; fully-qualified # 🇳🇨 E2.0 flag: New Caledonia +1F1F3 1F1EA ; fully-qualified # 🇳🇪 E2.0 flag: Niger +1F1F3 1F1EB ; fully-qualified # 🇳🇫 E2.0 flag: Norfolk Island +1F1F3 1F1EC ; fully-qualified # 🇳🇬 E2.0 flag: Nigeria +1F1F3 1F1EE ; fully-qualified # 🇳🇮 E2.0 flag: Nicaragua +1F1F3 1F1F1 ; fully-qualified # 🇳🇱 E2.0 flag: Netherlands +1F1F3 1F1F4 ; fully-qualified # 🇳🇴 E2.0 flag: Norway +1F1F3 1F1F5 ; fully-qualified # 🇳🇵 E2.0 flag: Nepal +1F1F3 1F1F7 ; fully-qualified # 🇳🇷 E2.0 flag: Nauru +1F1F3 1F1FA ; fully-qualified # 🇳🇺 E2.0 flag: Niue +1F1F3 1F1FF ; fully-qualified # 🇳🇿 E2.0 flag: New Zealand +1F1F4 1F1F2 ; fully-qualified # 🇴🇲 E2.0 flag: Oman +1F1F5 1F1E6 ; fully-qualified # 🇵🇦 E2.0 flag: Panama +1F1F5 1F1EA ; fully-qualified # 🇵🇪 E2.0 flag: Peru +1F1F5 1F1EB ; fully-qualified # 🇵🇫 E2.0 flag: French Polynesia +1F1F5 1F1EC ; fully-qualified # 🇵🇬 E2.0 flag: Papua New Guinea +1F1F5 1F1ED ; fully-qualified # 🇵🇭 E2.0 flag: Philippines +1F1F5 1F1F0 ; fully-qualified # 🇵🇰 E2.0 flag: Pakistan +1F1F5 1F1F1 ; fully-qualified # 🇵🇱 E2.0 flag: Poland +1F1F5 1F1F2 ; fully-qualified # 🇵🇲 E2.0 flag: St. Pierre & Miquelon +1F1F5 1F1F3 ; fully-qualified # 🇵🇳 E2.0 flag: Pitcairn Islands +1F1F5 1F1F7 ; fully-qualified # 🇵🇷 E2.0 flag: Puerto Rico +1F1F5 1F1F8 ; fully-qualified # 🇵🇸 E2.0 flag: Palestinian Territories +1F1F5 1F1F9 ; fully-qualified # 🇵🇹 E2.0 flag: Portugal +1F1F5 1F1FC ; fully-qualified # 🇵🇼 E2.0 flag: Palau +1F1F5 1F1FE ; fully-qualified # 🇵🇾 E2.0 flag: Paraguay +1F1F6 1F1E6 ; fully-qualified # 🇶🇦 E2.0 flag: Qatar +1F1F7 1F1EA ; fully-qualified # 🇷🇪 E2.0 flag: Réunion +1F1F7 1F1F4 ; fully-qualified # 🇷🇴 E2.0 flag: Romania +1F1F7 1F1F8 ; fully-qualified # 🇷🇸 E2.0 flag: Serbia +1F1F7 1F1FA ; fully-qualified # 🇷🇺 E0.6 flag: Russia +1F1F7 1F1FC ; fully-qualified # 🇷🇼 E2.0 flag: Rwanda +1F1F8 1F1E6 ; fully-qualified # 🇸🇦 E2.0 flag: Saudi Arabia +1F1F8 1F1E7 ; fully-qualified # 🇸🇧 E2.0 flag: Solomon Islands +1F1F8 1F1E8 ; fully-qualified # 🇸🇨 E2.0 flag: Seychelles +1F1F8 1F1E9 ; fully-qualified # 🇸🇩 E2.0 flag: Sudan +1F1F8 1F1EA ; fully-qualified # 🇸🇪 E2.0 flag: Sweden +1F1F8 1F1EC ; fully-qualified # 🇸🇬 E2.0 flag: Singapore +1F1F8 1F1ED ; fully-qualified # 🇸🇭 E2.0 flag: St. Helena +1F1F8 1F1EE ; fully-qualified # 🇸🇮 E2.0 flag: Slovenia +1F1F8 1F1EF ; fully-qualified # 🇸🇯 E2.0 flag: Svalbard & Jan Mayen +1F1F8 1F1F0 ; fully-qualified # 🇸🇰 E2.0 flag: Slovakia +1F1F8 1F1F1 ; fully-qualified # 🇸🇱 E2.0 flag: Sierra Leone +1F1F8 1F1F2 ; fully-qualified # 🇸🇲 E2.0 flag: San Marino +1F1F8 1F1F3 ; fully-qualified # 🇸🇳 E2.0 flag: Senegal +1F1F8 1F1F4 ; fully-qualified # 🇸🇴 E2.0 flag: Somalia +1F1F8 1F1F7 ; fully-qualified # 🇸🇷 E2.0 flag: Suriname +1F1F8 1F1F8 ; fully-qualified # 🇸🇸 E2.0 flag: South Sudan +1F1F8 1F1F9 ; fully-qualified # 🇸🇹 E2.0 flag: São Tomé & Príncipe +1F1F8 1F1FB ; fully-qualified # 🇸🇻 E2.0 flag: El Salvador +1F1F8 1F1FD ; fully-qualified # 🇸🇽 E2.0 flag: Sint Maarten +1F1F8 1F1FE ; fully-qualified # 🇸🇾 E2.0 flag: Syria +1F1F8 1F1FF ; fully-qualified # 🇸🇿 E2.0 flag: Eswatini +1F1F9 1F1E6 ; fully-qualified # 🇹🇦 E2.0 flag: Tristan da Cunha +1F1F9 1F1E8 ; fully-qualified # 🇹🇨 E2.0 flag: Turks & Caicos Islands +1F1F9 1F1E9 ; fully-qualified # 🇹🇩 E2.0 flag: Chad +1F1F9 1F1EB ; fully-qualified # 🇹🇫 E2.0 flag: French Southern Territories +1F1F9 1F1EC ; fully-qualified # 🇹🇬 E2.0 flag: Togo +1F1F9 1F1ED ; fully-qualified # 🇹🇭 E2.0 flag: Thailand +1F1F9 1F1EF ; fully-qualified # 🇹🇯 E2.0 flag: Tajikistan +1F1F9 1F1F0 ; fully-qualified # 🇹🇰 E2.0 flag: Tokelau +1F1F9 1F1F1 ; fully-qualified # 🇹🇱 E2.0 flag: Timor-Leste +1F1F9 1F1F2 ; fully-qualified # 🇹🇲 E2.0 flag: Turkmenistan +1F1F9 1F1F3 ; fully-qualified # 🇹🇳 E2.0 flag: Tunisia +1F1F9 1F1F4 ; fully-qualified # 🇹🇴 E2.0 flag: Tonga +1F1F9 1F1F7 ; fully-qualified # 🇹🇷 E2.0 flag: Türkiye +1F1F9 1F1F9 ; fully-qualified # 🇹🇹 E2.0 flag: Trinidad & Tobago +1F1F9 1F1FB ; fully-qualified # 🇹🇻 E2.0 flag: Tuvalu +1F1F9 1F1FC ; fully-qualified # 🇹🇼 E2.0 flag: Taiwan +1F1F9 1F1FF ; fully-qualified # 🇹🇿 E2.0 flag: Tanzania +1F1FA 1F1E6 ; fully-qualified # 🇺🇦 E2.0 flag: Ukraine +1F1FA 1F1EC ; fully-qualified # 🇺🇬 E2.0 flag: Uganda +1F1FA 1F1F2 ; fully-qualified # 🇺🇲 E2.0 flag: U.S. Outlying Islands +1F1FA 1F1F3 ; fully-qualified # 🇺🇳 E4.0 flag: United Nations +1F1FA 1F1F8 ; fully-qualified # 🇺🇸 E0.6 flag: United States +1F1FA 1F1FE ; fully-qualified # 🇺🇾 E2.0 flag: Uruguay +1F1FA 1F1FF ; fully-qualified # 🇺🇿 E2.0 flag: Uzbekistan +1F1FB 1F1E6 ; fully-qualified # 🇻🇦 E2.0 flag: Vatican City +1F1FB 1F1E8 ; fully-qualified # 🇻🇨 E2.0 flag: St. Vincent & Grenadines +1F1FB 1F1EA ; fully-qualified # 🇻🇪 E2.0 flag: Venezuela +1F1FB 1F1EC ; fully-qualified # 🇻🇬 E2.0 flag: British Virgin Islands +1F1FB 1F1EE ; fully-qualified # 🇻🇮 E2.0 flag: U.S. Virgin Islands +1F1FB 1F1F3 ; fully-qualified # 🇻🇳 E2.0 flag: Vietnam +1F1FB 1F1FA ; fully-qualified # 🇻🇺 E2.0 flag: Vanuatu +1F1FC 1F1EB ; fully-qualified # 🇼🇫 E2.0 flag: Wallis & Futuna +1F1FC 1F1F8 ; fully-qualified # 🇼🇸 E2.0 flag: Samoa +1F1FD 1F1F0 ; fully-qualified # 🇽🇰 E2.0 flag: Kosovo +1F1FE 1F1EA ; fully-qualified # 🇾🇪 E2.0 flag: Yemen +1F1FE 1F1F9 ; fully-qualified # 🇾🇹 E2.0 flag: Mayotte +1F1FF 1F1E6 ; fully-qualified # 🇿🇦 E2.0 flag: South Africa +1F1FF 1F1F2 ; fully-qualified # 🇿🇲 E2.0 flag: Zambia +1F1FF 1F1FC ; fully-qualified # 🇿🇼 E2.0 flag: Zimbabwe + +# subgroup: subdivision-flag +1F3F4 E0067 E0062 E0065 E006E E0067 E007F ; fully-qualified # 🏴󠁧󠁢󠁥󠁮󠁧󠁿 E5.0 flag: England +1F3F4 E0067 E0062 E0073 E0063 E0074 E007F ; fully-qualified # 🏴󠁧󠁢󠁳󠁣󠁴󠁿 E5.0 flag: Scotland +1F3F4 E0067 E0062 E0077 E006C E0073 E007F ; fully-qualified # 🏴󠁧󠁢󠁷󠁬󠁳󠁿 E5.0 flag: Wales + +# Flags subtotal: 276 +# Flags subtotal: 276 w/o modifiers + +# Status Counts +# fully-qualified : 3781 +# minimally-qualified : 1009 +# unqualified : 243 +# component : 9 + +#EOF diff --git a/tools/make-emoji-keys/src/main/resources/values/emoji-categories.tmpl b/tools/make-emoji-keys/src/main/resources/values/emoji-categories.tmpl deleted file mode 100644 index 347e4cd55e..0000000000 --- a/tools/make-emoji-keys/src/main/resources/values/emoji-categories.tmpl +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 30 - 31 - - - - :-) - ;-) - :-( - :-! - :-$ - B-) - =-O - :-P - :O - :-* - :-D - :\'( - :-\\ - O:-) - :-[ - (╯° - □°) - ╯︵ - ┻━┻ - ¯\\_ - (ツ) - _/¯ - ┬─┬ - ︵ /( - .□.\\ - - - - diff --git a/tools/make-keyboard-text/build.gradle b/tools/make-keyboard-text/build.gradle deleted file mode 100644 index 627b174304..0000000000 --- a/tools/make-keyboard-text/build.gradle +++ /dev/null @@ -1,26 +0,0 @@ -apply plugin: 'java' - -version 'unspecified' - -jar { - manifest { - attributes["Main-Class"] = 'com.android.inputmethod.keyboard.tools.MakeKeyboardText' - } -} - -task makeText(type: JavaExec, dependsOn: ['jar']) { - main = '-jar' - args jar.archiveFile.get() - args '-java' - args project.rootProject.project('app').projectDir.path + File.separator + 'src' + - File.separator + 'main' + File.separator + 'java' -} - -repositories { - mavenCentral() -} - -java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 -} \ No newline at end of file diff --git a/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/ArrayInitializerFormatter.java b/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/ArrayInitializerFormatter.java deleted file mode 100644 index 48bf8010a9..0000000000 --- a/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/ArrayInitializerFormatter.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.inputmethod.keyboard.tools; - -import java.io.PrintStream; - -public class ArrayInitializerFormatter { - private final PrintStream mOut; - private final int mMaxWidth; - private final String mIndent; - // String resource names array; indexed by {@link #CurrentIndex} and - // {@link #mStartIndexOfBuffer}. - private final String[] mResourceNames; - - private int mCurrentIndex = 0; - private String mLastElement; - private final StringBuilder mBuffer = new StringBuilder(); - private int mBufferedLen; - private int mStartIndexOfBuffer = Integer.MIN_VALUE; - - public ArrayInitializerFormatter(final PrintStream out, final int width, final String indent, - final String[] resourceNames) { - mOut = out; - mMaxWidth = width - indent.length(); - mIndent = indent; - mResourceNames = resourceNames; - } - - public int getCurrentIndex() { - return mCurrentIndex; - } - - public void flush() { - if (mBuffer.length() == 0) { - return; - } - final int lastIndex = mCurrentIndex - 1; - if (mStartIndexOfBuffer == lastIndex) { - mOut.format("%s/* %s */ %s\n", - mIndent, mResourceNames[mStartIndexOfBuffer], mBuffer); - } else if (mStartIndexOfBuffer == lastIndex - 1) { - final String startElement = mBuffer.toString() - .substring(0, mBuffer.length() - mLastElement.length()) - .trim(); - mOut.format("%s/* %s */ %s\n" - + "%s/* %s */ %s\n", - mIndent, mResourceNames[mStartIndexOfBuffer], startElement, - mIndent, mResourceNames[lastIndex], mLastElement); - } else { - mOut.format("%s/* %s ~ */\n" - + "%s%s\n" - + "%s/* ~ %s */\n", - mIndent, mResourceNames[mStartIndexOfBuffer], - mIndent, mBuffer, - mIndent, mResourceNames[lastIndex]); - } - mBuffer.setLength(0); - mBufferedLen = 0; - } - - public void outCommentLines(final String lines) { - flush(); - mOut.print(lines); - mLastElement = null; - } - - public void outElement(final String element) { - if (!element.equals(mLastElement)) { - flush(); - mStartIndexOfBuffer = mCurrentIndex; - } - final int nextLen = mBufferedLen + " ".length() + element.length(); - if (mBufferedLen != 0 && nextLen < mMaxWidth) { - // Element can fit in the current line. - mBuffer.append(' '); - mBuffer.append(element); - mBufferedLen = nextLen; - } else { - // Element should be on the next line. - if (mBufferedLen != 0) { - mBuffer.append('\n'); - mBuffer.append(mIndent); - } - mBuffer.append(element); - mBufferedLen = element.length(); - } - mCurrentIndex++; - mLastElement = element; - } -} diff --git a/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/JarUtils.java b/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/JarUtils.java deleted file mode 100644 index 00356ec16f..0000000000 --- a/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/JarUtils.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.inputmethod.keyboard.tools; - -import java.io.Closeable; -import java.io.IOException; -import java.io.InputStream; -import java.io.UnsupportedEncodingException; -import java.net.URL; -import java.net.URLDecoder; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.Locale; -import java.util.jar.JarEntry; -import java.util.jar.JarFile; - -public final class JarUtils { - private JarUtils() { - // This utility class is not publicly instantiable. - } - - public static JarFile getJarFile(final Class mainClass) { - final String mainClassPath = "/" + mainClass.getName().replace('.', '/') + ".class"; - final URL resUrl = mainClass.getResource(mainClassPath); - if (!resUrl.getProtocol().equals("jar")) { - throw new RuntimeException("Should run as jar and not as " + resUrl.getProtocol()); - } - final String path = resUrl.getPath(); - if (!path.startsWith("file:")) { - throw new RuntimeException("Unknown jar path: " + path); - } - final String jarPath = path.substring("file:".length(), path.indexOf('!')); - try { - return new JarFile(URLDecoder.decode(jarPath, "UTF-8")); - } catch (UnsupportedEncodingException e) { - } catch (IOException e) { - } - return null; - } - - public static InputStream openResource(final String name) { - return JarUtils.class.getResourceAsStream("/" + name); - } - - public interface JarFilter { - public boolean accept(String dirName, String name); - } - - public static ArrayList getEntryNameListing(final JarFile jar, final JarFilter filter) { - final ArrayList result = new ArrayList<>(); - final Enumeration entries = jar.entries(); - while (entries.hasMoreElements()) { - final JarEntry entry = entries.nextElement(); - final String path = entry.getName(); - final int pos = path.lastIndexOf('/'); - final String dirName = (pos >= 0) ? path.substring(0, pos) : ""; - final String name = (pos >= 0) ? path.substring(pos + 1) : path; - if (filter.accept(dirName, name)) { - result.add(path); - } - } - return result; - } - - public static ArrayList getEntryNameListing(final JarFile jar, - final String filterName) { - return getEntryNameListing(jar, new JarFilter() { - @Override - public boolean accept(final String dirName, final String name) { - return name.equals(filterName); - } - }); - } - - // The locale is taken from string resource jar entry name (values-/) - // or {@link LocaleUtils#DEFAULT_LOCALE} for the default string resource - // directory (values/). - public static Locale getLocaleFromEntryName(final String jarEntryName) { - final String dirName = jarEntryName.substring(0, jarEntryName.lastIndexOf('/')); - final int pos = dirName.lastIndexOf('/'); - final String parentName = (pos >= 0) ? dirName.substring(pos + 1) : dirName; - final int localePos = parentName.indexOf('-'); - if (localePos < 0) { - // Default resource name. - return LocaleUtils.DEFAULT_LOCALE; - } - final String localeStr = parentName.substring(localePos + 1); - final int regionPos = localeStr.indexOf("-r"); - if (regionPos < 0) { - return LocaleUtils.constructLocaleFromString(localeStr); - } - return LocaleUtils.constructLocaleFromString(localeStr.replace("-r", "_")); - } - - public static void close(final Closeable stream) { - try { - if (stream != null) { - stream.close(); - } - } catch (IOException e) { - } - } -} diff --git a/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/LocaleUtils.java b/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/LocaleUtils.java deleted file mode 100644 index c1a7ec5eb2..0000000000 --- a/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/LocaleUtils.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.inputmethod.keyboard.tools; - -import java.util.HashMap; -import java.util.Locale; - -/** - * A class to help with handling Locales in string form. - * - * This is a subset of com/android/inputmethod/latin/utils/LocaleUtils.java in order to use - * for the make-keyboard-text tool. - */ -public final class LocaleUtils { - public static final Locale DEFAULT_LOCALE = Locale.ROOT; - private static final String DEFAULT_LOCALE_CODE = "DEFAULT"; - public static final String NO_LANGUAGE_LOCALE_CODE = "zz"; - public static final String NO_LANGUAGE_LOCALE_DISPLAY_NAME = "Alphabet"; - - private LocaleUtils() { - // Intentional empty constructor for utility class. - } - - private static final HashMap sLocaleCache = new HashMap<>(); - - private static final int INDEX_LANGUAGE = 0; - private static final int INDEX_SCRIPT = 1; - private static final int INDEX_REGION = 2; - private static final int ELEMENT_LIMIT = INDEX_REGION + 1; - - /** - * Creates a locale from a string specification. - * - * Locale string is: language(_script)?(_region)? - * where: language := [a-zA-Z]{2,3} - * script := [a-zA-Z]{4} - * region := [a-zA-Z]{2,3}|[0-9]{3} - */ - public static Locale constructLocaleFromString(final String localeStr) { - if (localeStr == null) { - return null; - } - synchronized (sLocaleCache) { - if (sLocaleCache.containsKey(localeStr)) { - return sLocaleCache.get(localeStr); - } - boolean hasRegion = false; - final Locale.Builder builder = new Locale.Builder(); - final String[] localeElements = localeStr.split("_", ELEMENT_LIMIT); - if (localeElements.length > INDEX_LANGUAGE) { - final String text = localeElements[INDEX_LANGUAGE]; - if (isValidLanguage(text)) { - builder.setLanguage(text); - } else { - throw new RuntimeException("Unknown locale format: " + localeStr); - } - } - if (localeElements.length > INDEX_SCRIPT) { - final String text = localeElements[INDEX_SCRIPT]; - if (isValidScript(text)) { - builder.setScript(text); - } else if (isValidRegion(text)) { - builder.setRegion(text); - hasRegion = true; - } else { - throw new RuntimeException("Unknown locale format: " + localeStr); - } - } - if (localeElements.length > INDEX_REGION) { - final String text = localeElements[INDEX_REGION]; - if (!hasRegion && isValidRegion(text)) { - builder.setRegion(text); - } else { - throw new RuntimeException("Unknown locale format: " + localeStr); - } - } - final Locale locale = builder.build(); - sLocaleCache.put(localeStr, locale); - return locale; - } - } - - private static final int MIN_LENGTH_OF_LANGUAGE = 2; - private static final int MAX_LENGTH_OF_LANGUAGE = 2; - private static final int LENGTH_OF_SCRIPT = 4; - private static final int MIN_LENGTH_OF_REGION = 2; - private static final int MAX_LENGTH_OF_REGION = 2; - private static final int LENGTH_OF_AREA_CODE = 3; - - private static boolean isValidLanguage(final String text) { - return isAlphabetSequence(text, MIN_LENGTH_OF_LANGUAGE, MAX_LENGTH_OF_LANGUAGE); - } - - private static boolean isValidScript(final String text) { - return isAlphabetSequence(text, LENGTH_OF_SCRIPT, LENGTH_OF_SCRIPT); - } - - private static boolean isValidRegion(final String text) { - return isAlphabetSequence(text, MIN_LENGTH_OF_REGION, MAX_LENGTH_OF_REGION) - || isDigitSequence(text, LENGTH_OF_AREA_CODE, LENGTH_OF_AREA_CODE); - } - - private static boolean isAlphabetSequence(final String text, final int lower, final int upper) { - final int length = text.length(); - if (length < lower || length > upper) { - return false; - } - for (int index = 0; index < length; index++) { - if (!isAsciiAlphabet(text.charAt(index))) { - return false; - } - } - return true; - } - - private static boolean isDigitSequence(final String text, final int lower, final int upper) { - final int length = text.length(); - if (length < lower || length > upper) { - return false; - } - for (int index = 0; index < length; ++index) { - if (!isAsciiDigit(text.charAt(index))) { - return false; - } - } - return true; - } - - private static boolean isAsciiAlphabet(char c) { - return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); - } - - private static boolean isAsciiDigit(char c) { - return c >= '0' && c <= '9'; - } - - public static String getLocaleCode(final Locale locale) { - if (locale == DEFAULT_LOCALE) { - return DEFAULT_LOCALE_CODE; - } - return locale.toString(); - } - - public static String getLocaleDisplayName(final Locale locale) { - if (locale == DEFAULT_LOCALE) { - return DEFAULT_LOCALE_CODE; - } - if (locale.getLanguage().equals(NO_LANGUAGE_LOCALE_CODE)) { - return NO_LANGUAGE_LOCALE_DISPLAY_NAME; - } - return locale.getDisplayName(Locale.ENGLISH); - } -} diff --git a/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/MakeKeyboardText.java b/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/MakeKeyboardText.java deleted file mode 100644 index 6c15ce6bf0..0000000000 --- a/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/MakeKeyboardText.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -package com.android.inputmethod.keyboard.tools; - -import java.util.Arrays; -import java.util.LinkedList; -import java.util.NoSuchElementException; -import java.util.jar.JarFile; - -public class MakeKeyboardText { - static class Options { - private static final String OPTION_JAVA = "-java"; - - public final String mJava; - - public static void usage(String message) { - if (message != null) { - System.err.println(message); - } - System.err.println("usage: make-keyboard-text " + OPTION_JAVA + " "); - System.exit(1); - } - - public Options(final String[] argsArray) { - final LinkedList args = new LinkedList<>(Arrays.asList(argsArray)); - String arg = null; - String java = null; - try { - while (!args.isEmpty()) { - arg = args.removeFirst(); - if (arg.equals(OPTION_JAVA)) { - java = args.removeFirst(); - } else { - usage("Unknown option: " + arg); - } - } - } catch (NoSuchElementException e) { - usage("Option " + arg + " needs argument"); - } - - mJava = java; - } - } - - public static void main(final String[] args) { - final Options options = new Options(args); - final JarFile jar = JarUtils.getJarFile(MakeKeyboardText.class); - final MoreKeysResources resources = new MoreKeysResources(jar); - resources.writeToJava(options.mJava); - } -} diff --git a/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/MoreKeysResources.java b/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/MoreKeysResources.java deleted file mode 100644 index 563acc57e2..0000000000 --- a/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/MoreKeysResources.java +++ /dev/null @@ -1,255 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.inputmethod.keyboard.tools; - -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.LineNumberReader; -import java.io.PrintStream; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.Locale; -import java.util.TreeMap; -import java.util.jar.JarFile; - -public class MoreKeysResources { - private static final String TEXT_RESOURCE_NAME = "donottranslate-more-keys.xml"; - - private static final String JAVA_TEMPLATE = "KeyboardTextsTable.tmpl"; - private static final String MARK_NAMES = "@NAMES@"; - private static final String MARK_DEFAULT_TEXTS = "@DEFAULT_TEXTS@"; - private static final String MARK_TEXTS = "@TEXTS@"; - private static final String TEXTS_ARRAY_NAME_PREFIX = "TEXTS_"; - private static final String MARK_LOCALES_AND_TEXTS = "@LOCALES_AND_TEXTS@"; - private static final String EMPTY_STRING_VAR = "EMPTY"; - - private final JarFile mJar; - // String resources maps sorted by its language. The language is determined from the jar entry - // name by calling {@link JarUtils#getLocaleFromEntryName(String)}. - private final TreeMap mResourcesMap = new TreeMap<>(); - // Default string resources map. - private final StringResourceMap mDefaultResourceMap; - // Histogram of string resource names. This is used to sort {@link #mSortedResourceNames}. - private final HashMap mNameHistogram = new HashMap<>(); - // Sorted string resource names array; Descending order of histogram count. - // The string resource name is specified as an attribute "name" in string resource files. - // The string resource can be accessed by specifying name "!text/" - // via {@link KeyboardTextsSet#getText(String)}. - private final String[] mSortedResourceNames; - - public MoreKeysResources(final JarFile jar) { - mJar = jar; - final ArrayList resourceEntryNames = JarUtils.getEntryNameListing( - jar, TEXT_RESOURCE_NAME); - for (final String entryName : resourceEntryNames) { - final StringResourceMap resMap = new StringResourceMap(entryName); - mResourcesMap.put(LocaleUtils.getLocaleCode(resMap.mLocale), resMap); - } - mDefaultResourceMap = mResourcesMap.get( - LocaleUtils.getLocaleCode(LocaleUtils.DEFAULT_LOCALE)); - - // Initialize name histogram and names list. - final HashMap nameHistogram = mNameHistogram; - final ArrayList resourceNamesList = new ArrayList<>(); - for (final StringResource res : mDefaultResourceMap.getResources()) { - nameHistogram.put(res.mName, 0); // Initialize histogram value. - resourceNamesList.add(res.mName); - } - // Make name histogram. - for (final String locale : mResourcesMap.keySet()) { - final StringResourceMap resMap = mResourcesMap.get(locale); - if (resMap == mDefaultResourceMap) continue; - for (final StringResource res : resMap.getResources()) { - if (!mDefaultResourceMap.contains(res.mName)) { - throw new RuntimeException(res.mName + " in " + locale - + " doesn't have default resource"); - } - final int histogramValue = nameHistogram.get(res.mName); - nameHistogram.put(res.mName, histogramValue + 1); - } - } - // Sort names list. - Collections.sort(resourceNamesList, new Comparator() { - @Override - public int compare(final String leftName, final String rightName) { - final int leftCount = nameHistogram.get(leftName); - final int rightCount = nameHistogram.get(rightName); - // Descending order of histogram count. - if (leftCount > rightCount) return -1; - if (leftCount < rightCount) return 1; - // TODO: Add further criteria to order the same histogram value names to be able to - // minimize footprints of string resources arrays. - return 0; - } - }); - mSortedResourceNames = resourceNamesList.toArray(new String[resourceNamesList.size()]); - } - - public void writeToJava(final String outDir) { - final ArrayList list = JarUtils.getEntryNameListing(mJar, JAVA_TEMPLATE); - if (list.isEmpty()) { - throw new RuntimeException("Can't find java template " + JAVA_TEMPLATE); - } - if (list.size() > 1) { - throw new RuntimeException("Found multiple java template " + JAVA_TEMPLATE); - } - final String template = list.get(0); - final String javaPackage = template.substring(0, template.lastIndexOf('/')); - PrintStream ps = null; - LineNumberReader lnr = null; - try { - if (outDir == null) { - ps = System.out; - } else { - final File outPackage = new File(outDir, javaPackage); - final File outputFile = new File(outPackage, - JAVA_TEMPLATE.replace(".tmpl", ".java")); - outPackage.mkdirs(); - ps = new PrintStream(outputFile, "UTF-8"); - } - lnr = new LineNumberReader(new InputStreamReader(JarUtils.openResource(template))); - inflateTemplate(lnr, ps); - } catch (IOException e) { - throw new RuntimeException(e); - } finally { - JarUtils.close(lnr); - JarUtils.close(ps); - } - } - - private void inflateTemplate(final LineNumberReader in, final PrintStream out) - throws IOException { - String line; - while ((line = in.readLine()) != null) { - if (line.contains(MARK_NAMES)) { - dumpNames(out); - } else if (line.contains(MARK_DEFAULT_TEXTS)) { - dumpDefaultTexts(out); - } else if (line.contains(MARK_TEXTS)) { - dumpTexts(out); - } else if (line.contains(MARK_LOCALES_AND_TEXTS)) { - dumpLocalesMap(out); - } else { - out.println(line); - } - } - } - - private void dumpNames(final PrintStream out) { - final int namesCount = mSortedResourceNames.length; - for (int index = 0; index < namesCount; index++) { - final String name = mSortedResourceNames[index]; - final int histogramValue = mNameHistogram.get(name); - out.format(" /* %3d:%2d */ \"%s\",\n", index, histogramValue, name); - } - } - - private void dumpDefaultTexts(final PrintStream out) { - final int outputArraySize = dumpTextsInternal(out, mDefaultResourceMap); - mDefaultResourceMap.setOutputArraySize(outputArraySize); - } - - private static String getArrayNameForLocale(final Locale locale) { - return TEXTS_ARRAY_NAME_PREFIX + LocaleUtils.getLocaleCode(locale); - } - - private void dumpTexts(final PrintStream out) { - for (final StringResourceMap resMap : mResourcesMap.values()) { - final Locale locale = resMap.mLocale; - if (resMap == mDefaultResourceMap) continue; - out.format(" /* Locale %s: %s */\n", - locale, LocaleUtils.getLocaleDisplayName(locale)); - out.format(" private static final String[] " + getArrayNameForLocale(locale) - + " = {\n"); - final int outputArraySize = dumpTextsInternal(out, resMap); - resMap.setOutputArraySize(outputArraySize); - out.format(" };\n\n"); - } - } - - private void dumpLocalesMap(final PrintStream out) { - for (final StringResourceMap resMap : mResourcesMap.values()) { - final Locale locale = resMap.mLocale; - final String localeStr = LocaleUtils.getLocaleCode(locale); - final String localeToDump = (locale == LocaleUtils.DEFAULT_LOCALE) - ? String.format("\"%s\"", localeStr) - : String.format("\"%s\"%s", localeStr, " ".substring(localeStr.length())); - out.format(" %s, %-12s /* %3d/%3d %s */\n", - localeToDump, getArrayNameForLocale(locale) + ",", - resMap.getResources().size(), resMap.getOutputArraySize(), - LocaleUtils.getLocaleDisplayName(locale)); - } - } - - private int dumpTextsInternal(final PrintStream out, final StringResourceMap resMap) { - final ArrayInitializerFormatter formatter = - new ArrayInitializerFormatter(out, 100, " ", mSortedResourceNames); - int outputArraySize = 0; - boolean successiveNull = false; - final int namesCount = mSortedResourceNames.length; - for (int index = 0; index < namesCount; index++) { - final String name = mSortedResourceNames[index]; - final StringResource res = resMap.get(name); - if (res != null) { - // TODO: Check whether the resource value is equal to the default. - if (res.mComment != null) { - formatter.outCommentLines(addPrefix(" // ", res. mComment)); - } - final String escaped = escapeNonAscii(res.mValue); - if (escaped.length() == 0) { - formatter.outElement(EMPTY_STRING_VAR + ","); - } else { - formatter.outElement(String.format("\"%s\",", escaped)); - } - successiveNull = false; - outputArraySize = formatter.getCurrentIndex(); - } else { - formatter.outElement("null,"); - successiveNull = true; - } - } - if (!successiveNull) { - formatter.flush(); - } - return outputArraySize; - } - - private static String addPrefix(final String prefix, final String lines) { - final StringBuilder sb = new StringBuilder(); - for (final String line : lines.split("\n")) { - sb.append(prefix + line.trim() + "\n"); - } - return sb.toString(); - } - - private static String escapeNonAscii(final String text) { - final StringBuilder sb = new StringBuilder(); - final int length = text.length(); - for (int i = 0; i < length; i++) { - final char c = text.charAt(i); - if (c >= ' ' && c < 0x7f) { - sb.append(c); - } else { - sb.append(String.format("\\u%04X", (int)c)); - } - } - return sb.toString(); - } -} diff --git a/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/StringResource.java b/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/StringResource.java deleted file mode 100644 index a49b8fe70e..0000000000 --- a/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/StringResource.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.inputmethod.keyboard.tools; - -public class StringResource { - public final String mName; - public final String mValue; - public final String mComment; - - public StringResource(final String name, final String value, final String comment) { - mName = name; - mValue = value; - mComment = comment; - } -} diff --git a/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/StringResourceMap.java b/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/StringResourceMap.java deleted file mode 100644 index cf44f2cade..0000000000 --- a/tools/make-keyboard-text/src/main/java/com/android/inputmethod/keyboard/tools/StringResourceMap.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.inputmethod.keyboard.tools; - -import org.xml.sax.Attributes; -import org.xml.sax.SAXException; -import org.xml.sax.SAXParseException; -import org.xml.sax.ext.DefaultHandler2; - -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; - -public class StringResourceMap { - // Locale of this string resource map. - public final Locale mLocale; - // String resource list. - private final List mResources; - // Name to string resource map. - private final Map mResourcesMap; - - // The length of String[] that is created from this {@link StringResourceMap}. The length is - // calculated in {@link MoreKeysResources#dumpTexts(OutputStream)} and recorded by - // {@link #setOutputArraySize(int)}. The recorded length is used as a part of comment by - // {@link MoreKeysResources#dumpLocaleMap(OutputStream)} via {@link #getOutputArraySize()}. - private int mOutputArraySize; - - public StringResourceMap(final String jarEntryName) { - mLocale = JarUtils.getLocaleFromEntryName(jarEntryName); - final StringResourceHandler handler = new StringResourceHandler(); - final SAXParserFactory factory = SAXParserFactory.newInstance(); - factory.setNamespaceAware(true); - final InputStream stream = JarUtils.openResource(jarEntryName); - try { - final SAXParser parser = factory.newSAXParser(); - // In order to get comment tag. - parser.setProperty("http://xml.org/sax/properties/lexical-handler", handler); - parser.parse(stream, handler); - } catch (ParserConfigurationException e) { - throw new RuntimeException(e.getMessage(), e); - } catch (SAXParseException e) { - throw new RuntimeException(e.getMessage() + " at line " + e.getLineNumber() - + ", column " + e.getColumnNumber(), e); - } catch (SAXException e) { - throw new RuntimeException(e.getMessage(), e); - } catch (IOException e) { - throw new RuntimeException(e.getMessage(), e); - } finally { - JarUtils.close(stream); - } - - mResources = Collections.unmodifiableList(handler.mResources); - final HashMap map = new HashMap<>(); - for (final StringResource res : mResources) { - map.put(res.mName, res); - } - mResourcesMap = map; - } - - public List getResources() { - return mResources; - } - - public boolean contains(final String name) { - return mResourcesMap.containsKey(name); - } - - public StringResource get(final String name) { - return mResourcesMap.get(name); - } - - public void setOutputArraySize(final int arraySize) { - mOutputArraySize = arraySize; - } - - public int getOutputArraySize() { - return mOutputArraySize; - } - - static class StringResourceHandler extends DefaultHandler2 { - private static final String TAG_RESOURCES = "resources"; - private static final String TAG_STRING = "string"; - private static final String ATTR_NAME = "name"; - - final ArrayList mResources = new ArrayList<>(); - - private String mName; - private final StringBuilder mValue = new StringBuilder(); - private final StringBuilder mComment = new StringBuilder(); - - private void init() { - mName = null; - mComment.setLength(0); - } - - @Override - public void comment(char[] ch, int start, int length) { - mComment.append(ch, start, length); - if (ch[start + length - 1] != '\n') { - mComment.append('\n'); - } - } - - @Override - public void startElement(String uri, String localName, String qName, Attributes attr) { - if (TAG_RESOURCES.equals(localName)) { - init(); - } else if (TAG_STRING.equals(localName)) { - mName = attr.getValue(ATTR_NAME); - mValue.setLength(0); - } - } - - @Override - public void characters(char[] ch, int start, int length) { - mValue.append(ch, start, length); - } - - @Override - public void endElement(String uri, String localName, String qName) throws SAXException { - if (TAG_STRING.equals(localName)) { - if (mName == null) - throw new SAXException(TAG_STRING + " doesn't have name"); - final String comment = mComment.length() > 0 ? mComment.toString() : null; - String value = mValue.toString(); - if (value.startsWith("\"") && value.endsWith("\"")) { - // Trim surroundings double quote. - value = value.substring(1, value.length() - 1); - } - mResources.add(new StringResource(mName, value, comment)); - init(); - } - } - } -} diff --git a/tools/make-keyboard-text/src/main/resources/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl b/tools/make-keyboard-text/src/main/resources/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl deleted file mode 100644 index 3e55aab90e..0000000000 --- a/tools/make-keyboard-text/src/main/resources/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (C) 2014 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.dslul.openboard.inputmethod.keyboard.internal; - -import java.util.HashMap; -import java.util.Locale; - -/** - * !!!!! DO NOT EDIT THIS FILE !!!!! - * - * This file is generated by tools/make-keyboard-text. The base template file is - * tools/make-keyboard-text/src/main/resources/org/dslul/openboard/inputmethod/keyboard/ - * internal/KeyboardTextsTable.tmpl - * - * This file must be updated when any text resources in keyboard layout files have been changed. - * These text resources are referred as "!text/" in keyboard XML definitions, - * and should be defined in - * tools/make-keyboard-text/src/main/resources/values-/donottranslate-more-keys.xml - * - * To update this file, please run the following commands. - * $ gradle :tools:make-keyboard-text:makeText - * - * The updated source file will be generated to the following path (this file). - * app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardTextsTable.java - * - */ -public final class KeyboardTextsTable { - // Name to index map. - private static final HashMap sNameToIndexesMap = new HashMap<>(); - // Locale to texts table map. - private static final HashMap sLocaleToTextsTableMap = new HashMap<>(); - // TODO: Remove this variable after debugging. - // Texts table to locale maps. - private static final HashMap sTextsTableToLocaleMap = new HashMap<>(); - - public static String getText(final String name, final String[] textsTable) { - final Integer indexObj = sNameToIndexesMap.get(name); - if (indexObj == null) { - throw new RuntimeException("Unknown text name=" + name + " locale=" - + sTextsTableToLocaleMap.get(textsTable)); - } - final int index = indexObj; - final String text = (index < textsTable.length) ? textsTable[index] : null; - if (text != null) { - return text; - } - // Validity check. - if (index >= 0 && index < TEXTS_DEFAULT.length) { - return TEXTS_DEFAULT[index]; - } - // Throw exception for debugging purpose. - throw new RuntimeException("Illegal index=" + index + " for name=" + name - + " locale=" + sTextsTableToLocaleMap.get(textsTable)); - } - - public static String[] getTextsTable(final Locale locale) { - final String localeKey = locale.toString(); - if (sLocaleToTextsTableMap.containsKey(localeKey)) { - return sLocaleToTextsTableMap.get(localeKey); - } - final String languageKey = locale.getLanguage(); - if (sLocaleToTextsTableMap.containsKey(languageKey)) { - return sLocaleToTextsTableMap.get(languageKey); - } - return TEXTS_DEFAULT; - } - - private static final String[] NAMES = { - // /* index:histogram */ "name", - /* @NAMES@ */ - }; - - private static final String EMPTY = ""; - - /* Default texts */ - private static final String[] TEXTS_DEFAULT = { - /* @DEFAULT_TEXTS@ */ - }; - - /* @TEXTS@ */ - private static final Object[] LOCALES_AND_TEXTS = { - // "locale", TEXT_ARRAY, /* numberOfNonNullText/lengthOf_TEXT_ARRAY localeName */ - /* @LOCALES_AND_TEXTS@ */ - }; - - static { - for (int index = 0; index < NAMES.length; index++) { - sNameToIndexesMap.put(NAMES[index], index); - } - - for (int i = 0; i < LOCALES_AND_TEXTS.length; i += 2) { - final String locale = (String)LOCALES_AND_TEXTS[i]; - final String[] textsTable = (String[])LOCALES_AND_TEXTS[i + 1]; - sLocaleToTextsTableMap.put(locale, textsTable); - sTextsTableToLocaleMap.put(textsTable, locale); - } - } -} \ No newline at end of file diff --git a/tools/make-keyboard-text/src/main/resources/values-af/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-af/donottranslate-more-keys.xml deleted file mode 100644 index 45acb7e57a..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-af/donottranslate-more-keys.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - á,â,ä,à,æ,ã,å,ā - - é,è,ê,ë,ę,ė,ē - - í,ì,ï,î,į,ī,ij - - ó,ô,ö,ò,õ,œ,ø,ō - - ú,û,ü,ù,ū - - ñ,ń - - ý,ij - diff --git a/tools/make-keyboard-text/src/main/resources/values-ar/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-ar/donottranslate-more-keys.xml deleted file mode 100644 index ab78f45c65..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-ar/donottranslate-more-keys.xml +++ /dev/null @@ -1,132 +0,0 @@ - - - - - أ‌ب‌ج - - ١ - - ٢ - - ٣ - - ٤ - - ٥ - - ٦ - - ٧ - - ٨ - - ٩ - - ٠ - - ٣٢١؟ - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - - 0,٫,٬ - - ، - - ّ - !text/morekeys_arabic_diacritics - ّ - !text/morekeys_arabic_diacritics - ؟ - ؛ - - ٪ - - ?,¿ - ; - - \\%,‰ - - "،" - "؟" - "!fixedColumnOrder!4,:,!,؟,؛,-,\",\'" - - - - ★,٭ - - - !fixedColumnOrder!4,﴾|﴿,!text/keyspecs_left_parenthesis_more_keys - !fixedColumnOrder!4,﴿|﴾,!text/keyspecs_right_parenthesis_more_keys - - (|) - )|( - [|] - ]|[ - {|} - }|{ - <|> - >|< - ≤|≥ - ≥|≤ - «|» - »|« - ‹|› - ›|‹ - - - - - "!fixedColumnOrder!7, ٕ|ٕ, ٔ|ٔ, ْ|ْ, ٍ|ٍ, ٌ|ٌ, ً|ً, ّ|ّ, ٖ|ٖ, ٰ|ٰ, ٓ|ٓ, ِ|ِ, ُ|ُ, َ|َ,ـــ|ـ" - diff --git a/tools/make-keyboard-text/src/main/resources/values-az/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-az/donottranslate-more-keys.xml deleted file mode 100644 index 52fe5658c5..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-az/donottranslate-more-keys.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - â,ä,á - - ə,é - - ı,î,ï,ì,í,į,ī - - ö,ô,œ,ò,ó,õ,ø,ō - - ü,û,ù,ú,ū - - ş,ß,ś,š - - ğ - - ň,ñ - - ç,ć,č - - ý - - ž - diff --git a/tools/make-keyboard-text/src/main/resources/values-be/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-be/donottranslate-more-keys.xml deleted file mode 100644 index 52ada29d92..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-be/donottranslate-more-keys.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - ў - - ы - - э - - і - - ё - - ъ - - АБВ - !text/single_9qm_lqm - !text/double_9qm_lqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-bg/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-bg/donottranslate-more-keys.xml deleted file mode 100644 index 8a98b12277..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-bg/donottranslate-more-keys.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - АБВ - - !text/double_9qm_lqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-bn-rBD/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-bn-rBD/donottranslate-more-keys.xml deleted file mode 100644 index 6d4f6aed18..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-bn-rBD/donottranslate-more-keys.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - কখগ - - - - - - - - - - - - - - - - - - - - - - - - ?১২৩ - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 0 - - - "!autoColumnOrder!8,\\,,॥,?,!,!icon/zwnj_key|\u200C,!icon/zwj_key|\u200D,#,@,!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis,/,;,:,-,+,\\%" - "!autoColumnOrder!8,\\,,॥,?,!,!icon/zwnj_key|\u200C,!icon/zwj_key|\u200D,#,@,!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis,/,;,:,-,+,\\%" - - diff --git a/tools/make-keyboard-text/src/main/resources/values-bn-rIN/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-bn-rIN/donottranslate-more-keys.xml deleted file mode 100644 index 1ec4249d0e..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-bn-rIN/donottranslate-more-keys.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - কখগ - - - diff --git a/tools/make-keyboard-text/src/main/resources/values-ca/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-ca/donottranslate-more-keys.xml deleted file mode 100644 index 125f08f26c..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-ca/donottranslate-more-keys.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - - - à,á,ä,â,ã,å,ą,æ,ā,ª - - è,é,ë,ê,ę,ė,ē - - í,ï,ì,î,į,ī - - ò,ó,ö,ô,õ,ø,œ,ō,º - - ú,ü,ù,û,ū - - ñ,ń - - ç,ć,č - - l·l,ł - - "!autoColumnOrder!9,\\,,?,!,·,#,),(,/,;,',@,:,-,\",+,\\%,&" - "!autoColumnOrder!8,\\,,',·,#,),(,/,;,@,:,-,\",+,\\%,&" - - ç - diff --git a/tools/make-keyboard-text/src/main/resources/values-cs/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-cs/donottranslate-more-keys.xml deleted file mode 100644 index 1a27783e97..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-cs/donottranslate-more-keys.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - - á,à,â,ä,æ,ã,å,ā - - é,ě,è,ê,ë,ę,ė,ē - - í,î,ï,ì,į,ī - - ó,ö,ô,ò,õ,œ,ø,ō - - ú,ů,û,ü,ù,ū - - š,ß,ś - - ň,ñ,ń - - č,ç,ć - - ý,ÿ - - ď - - ř - - ť - - ž,ź,ż - !text/single_9qm_lqm - !text/double_9qm_lqm - !text/single_raqm_laqm - !text/double_raqm_laqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-da/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-da/donottranslate-more-keys.xml deleted file mode 100644 index 98abb05868..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-da/donottranslate-more-keys.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - å,æ,á,ä,à,â,ã,ā - - é,ë - - í,ï - - ø,ö,ó,ô,ò,õ,œ,ō - - ú,ü,û,ù,ū - - ß,ś,š - - ñ,ń - - ý,ÿ - - ð - - ł - - å - - æ - - ø - - ä - - ö - !text/single_9qm_lqm - !text/double_9qm_lqm - !text/single_raqm_laqm - !text/double_raqm_laqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-de-rDE/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-de-rDE/donottranslate-more-keys.xml deleted file mode 100644 index d0e3f09725..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-de-rDE/donottranslate-more-keys.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - ä,â,à,á,æ,ã,å,ā - - é,è,ê,ë,ė - - ö,ô,ò,ó,õ,œ,ø,ō - - ü,û,ù,ú,ū - - ß,%,ś,š - - ñ,ń - - ü - - è - - ö - - é - - ä - - à - !text/single_9qm_lqm - !text/double_9qm_lqm - !text/single_raqm_laqm - !text/double_raqm_laqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-de/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-de/donottranslate-more-keys.xml deleted file mode 100644 index 0c6d3ad2b4..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-de/donottranslate-more-keys.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - ä,%,â,à,á,æ,ã,å,ā - - é,è,ê,ë,ė - - ö,%,ô,ò,ó,õ,œ,ø,ō - - ü,%,û,ù,ú,ū - - ß,ś,š - - ñ,ń - - ü - - è - - ö - - é - - ä - - à - !text/single_9qm_lqm - !text/double_9qm_lqm - !text/single_raqm_laqm - !text/double_raqm_laqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-el/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-el/donottranslate-more-keys.xml deleted file mode 100644 index 77950c3b34..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-el/donottranslate-more-keys.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - ΑΒΓ - diff --git a/tools/make-keyboard-text/src/main/resources/values-en/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-en/donottranslate-more-keys.xml deleted file mode 100644 index c22edbaae9..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-en/donottranslate-more-keys.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - à,á,â,ä,æ,ã,å,ā - - é,è,ê,ë,ē - - í,î,ï,ī,ì - - ó,ô,ö,ò,œ,ø,ō,õ - - ú,û,ü,ù,ū - - ß - - ñ - - ç - diff --git a/tools/make-keyboard-text/src/main/resources/values-eo/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-eo/donottranslate-more-keys.xml deleted file mode 100644 index 7ef3101f5b..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-eo/donottranslate-more-keys.xml +++ /dev/null @@ -1,146 +0,0 @@ - - - - - á,à,â,ä,æ,ã,å,ā,ă,ą,ª - - é,ě,è,ê,ë,ę,ė,ē - - í,î,ï,ĩ,ì,į,ī,ı,ij - - ó,ö,ô,ò,õ,œ,ø,ō,ő,º - - ú,ů,û,ü,ù,ū,ũ,ű,ų,µ - - ß,š,ś,ș,ş - - ñ,ń,ņ,ň,ʼn,ŋ - - ć,č,ç,ċ - - y,ý,ŷ,ÿ,þ - - ð,ď,đ - - ř,ŕ,ŗ - - ť,ț,ţ,ŧ - - ź,ż,ž - - ķ,ĸ - - ĺ,ļ,ľ,ŀ,ł - - ğ,ġ,ģ - - w,ŵ - - ĥ,ħ - - w,ŵ - q - x - - ŝ - - ĝ - - ŭ - - ĉ - - ĵ - diff --git a/tools/make-keyboard-text/src/main/resources/values-es/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-es/donottranslate-more-keys.xml deleted file mode 100644 index 22e5370698..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-es/donottranslate-more-keys.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - á,à,ä,â,ã,å,ą,æ,ā,ª - - é,è,ë,ê,ę,ė,ē - - í,ï,ì,î,į,ī - - ó,ò,ö,ô,õ,ø,œ,ō,º - - ú,ü,ù,û,ū - - ñ,ń - - ç,ć,č - - "!autoColumnOrder!9,\\,,?,!,#,),(,/,;,¡,',@,:,-,\",+,\\%,&,¿" - diff --git a/tools/make-keyboard-text/src/main/resources/values-et/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-et/donottranslate-more-keys.xml deleted file mode 100644 index 79266e8235..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-et/donottranslate-more-keys.xml +++ /dev/null @@ -1,115 +0,0 @@ - - - - - ä,ā,à,á,â,ã,å,æ,ą - - ē,è,ė,é,ê,ë,ę,ě - - ī,ì,į,í,î,ï,ı - - ö,õ,ò,ó,ô,œ,ő,ø - - ü,ū,ų,ù,ú,û,ů,ű - - š,ß,ś,ş - - ņ,ñ,ń - - č,ç,ć - - ý,ÿ - - ď - - ŗ,ř,ŕ - - ţ,ť - - ž,ż,ź - - ķ - - ļ,ł,ĺ,ľ - - ģ,ğ - - ü - - ö - - ä - - õ - !text/single_9qm_lqm - !text/double_9qm_lqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-eu/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-eu/donottranslate-more-keys.xml deleted file mode 100644 index 95f632a52d..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-eu/donottranslate-more-keys.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - á,à,ä,â,ã,å,ą,æ,ā,ª - - é,è,ë,ê,ę,ė,ē - - í,ï,ì,î,į,ī - - ó,ò,ö,ô,õ,ø,œ,ō,º - - ú,ü,ù,û,ū - - ñ,ń - - ç,ć,č - diff --git a/tools/make-keyboard-text/src/main/resources/values-fa/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-fa/donottranslate-more-keys.xml deleted file mode 100644 index 58f4555043..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-fa/donottranslate-more-keys.xml +++ /dev/null @@ -1,138 +0,0 @@ - - - - - ا‌ب‌پ - - ۱ - - ۲ - - ۳ - - ۴ - - ۵ - - ۶ - - ۷ - - ۸ - - ۹ - - ۰ - - ۳۲۱؟ - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - - 0,٫,٬ - - ، - - ً - !text/morekeys_arabic_diacritics - ً - !text/morekeys_arabic_diacritics - ؟ - ؛ - - ٪ - - ?,¿ - ; - - \\%,‰ - - "،" - "؟" - "!fixedColumnOrder!4,:,!,؟,؛,-,!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote" - - - - - - ★,٭ - - - !fixedColumnOrder!4,﴾|﴿,!text/keyspecs_left_parenthesis_more_keys - !fixedColumnOrder!4,﴿|﴾,!text/keyspecs_right_parenthesis_more_keys - - !fixedColumnOrder!3,!text/keyspec_left_single_angle_quote,!text/keyspec_less_than_equal,!text/keyspec_less_than - !fixedColumnOrder!3,!text/keyspec_right_single_angle_quote,!text/keyspec_greater_than_equal,!text/keyspec_greater_than - (|) - )|( - [|] - ]|[ - {|} - }|{ - <|> - >|< - ≤|≥ - ≥|≤ - «|» - »|« - ‹|› - ›|‹ - - - - - "!fixedColumnOrder!7, ٕ|ٕ, ْ|ْ, ّ|ّ, ٌ|ٌ, ٍ|ٍ, ً|ً, ٔ|ٔ, ٖ|ٖ, ٰ|ٰ, ٓ|ٓ, ُ|ُ, ِ|ِ, َ|َ,ـــ|ـ" - diff --git a/tools/make-keyboard-text/src/main/resources/values-fi/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-fi/donottranslate-more-keys.xml deleted file mode 100644 index b06d9e49df..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-fi/donottranslate-more-keys.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - ä,å,æ,à,á,â,ã,ā - - ö,ø,ô,ò,ó,õ,œ,ō - - ü - - š,ß,ś - - ž,ź,ż - - å - - ö - - ä - - ø - - æ - diff --git a/tools/make-keyboard-text/src/main/resources/values-fr/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-fr/donottranslate-more-keys.xml deleted file mode 100644 index dded5d251a..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-fr/donottranslate-more-keys.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - à,â,%,æ,á,ä,ã,å,ā,ª - - é,è,ê,ë,%,ę,ė,ē - - î,%,ï,ì,í,į,ī - - ô,œ,%,ö,ò,ó,õ,ø,ō,º - - ù,û,%,ü,ú,ū - - ç,%,ć,č - - %,ÿ - - è - - ü - - é - - ö - - à - - ä - diff --git a/tools/make-keyboard-text/src/main/resources/values-gl/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-gl/donottranslate-more-keys.xml deleted file mode 100644 index 95f632a52d..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-gl/donottranslate-more-keys.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - á,à,ä,â,ã,å,ą,æ,ā,ª - - é,è,ë,ê,ę,ė,ē - - í,ï,ì,î,į,ī - - ó,ò,ö,ô,õ,ø,œ,ō,º - - ú,ü,ù,û,ū - - ñ,ń - - ç,ć,č - diff --git a/tools/make-keyboard-text/src/main/resources/values-hi-rZZ/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-hi-rZZ/donottranslate-more-keys.xml deleted file mode 100644 index 50834e0fc9..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-hi-rZZ/donottranslate-more-keys.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - Go - Send - Next - Done - Search - Prev - Pause - Wait - diff --git a/tools/make-keyboard-text/src/main/resources/values-hi/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-hi/donottranslate-more-keys.xml deleted file mode 100644 index 2a37d8ba17..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-hi/donottranslate-more-keys.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - कखग - - - - - - - - - - - - - - - - - - - - - - ?१२३ - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 0 - - - - - - "!autoColumnOrder!9,\\,,.,?,!,#,),(,/,;,',@,:,-,\",+,\\%,&" - "!autoColumnOrder!8,\\,,.,',#,),(,/,;,@,:,-,\",+,\\%,&" - diff --git a/tools/make-keyboard-text/src/main/resources/values-hr/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-hr/donottranslate-more-keys.xml deleted file mode 100644 index 73e51db4f4..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-hr/donottranslate-more-keys.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - š,ś,ß - - ñ,ń - - ž,ź,ż - - č,ć,ç - - đ - !text/single_9qm_rqm - !text/double_9qm_rqm - !text/single_raqm_laqm - !text/double_raqm_laqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-hu/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-hu/donottranslate-more-keys.xml deleted file mode 100644 index 1a3ad170c4..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-hu/donottranslate-more-keys.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - á - - é - - í - - ó,ö,ő - - ú,ü,ű - !text/single_9qm_rqm - !text/double_9qm_rqm - !text/single_raqm_laqm - !text/double_raqm_laqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-hy/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-hy/donottranslate-more-keys.xml deleted file mode 100644 index 08d88e54dd..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-hy/donottranslate-more-keys.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - ԱԲԳ - - "!autoColumnOrder!8,\\,,՞,՜,.,՚,ՙ,?,!,՝,՛,֊,»,«,՟,;,:" - - ՞,¿ - - ՜,¡ - - - - ՝ - ՝ - - ։ - ։ - !text/morekeys_punctuation - diff --git a/tools/make-keyboard-text/src/main/resources/values-is/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-is/donottranslate-more-keys.xml deleted file mode 100644 index ea7f86f1f9..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-is/donottranslate-more-keys.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - á,ä,æ,å,à,â,ã,ā - - é,ë,è,ê,ę,ė,ē - - í,ï,î,ì,į,ī - - ó,ö,ô,ò,õ,œ,ø,ō - - ú,ü,û,ù,ū - - ý,ÿ - - ð - - þ - !text/single_9qm_lqm - !text/double_9qm_lqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-it/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-it/donottranslate-more-keys.xml deleted file mode 100644 index 0b4694a1fb..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-it/donottranslate-more-keys.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - à,á,â,ä,æ,ã,å,ā,ª - - è,é,ê,ë,ę,ė,ē,ə - - ì,í,î,ï,į,ī - - ò,ó,ô,ö,õ,œ,ø,ō,º - - ù,ú,û,ü,ū - - ü - - è - - ö - - é - - ä - - à - diff --git a/tools/make-keyboard-text/src/main/resources/values-iw/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-iw/donottranslate-more-keys.xml deleted file mode 100644 index 0decb8fa25..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-iw/donottranslate-more-keys.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - אבג - - - - ±,﬩ - - - (|) - )|( - [|] - ]|[ - {|} - }|{ - <|> - >|< - ≤|≥ - ≥|≤ - «|» - »|« - ‹|› - ›|‹ - !text/single_rqm_9qm - !text/double_rqm_9qm - - - diff --git a/tools/make-keyboard-text/src/main/resources/values-ka/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-ka/donottranslate-more-keys.xml deleted file mode 100644 index f458c02e3e..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-ka/donottranslate-more-keys.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - აბგ - !text/single_9qm_lqm - !text/double_9qm_lqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-kk/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-kk/donottranslate-more-keys.xml deleted file mode 100644 index 5e18128daf..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-kk/donottranslate-more-keys.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - щ - - ы - - э - - и - - ү,ұ - - қ - - ё - - ң - - ғ - - і - - ә - - ө - - һ - - ъ - - АБВ - diff --git a/tools/make-keyboard-text/src/main/resources/values-km/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-km/donottranslate-more-keys.xml deleted file mode 100644 index edd3753b74..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-km/donottranslate-more-keys.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - កខគ - - ៛,¢,£,€,¥,₱ - diff --git a/tools/make-keyboard-text/src/main/resources/values-kn/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-kn/donottranslate-more-keys.xml deleted file mode 100644 index 54b2674626..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-kn/donottranslate-more-keys.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - ಅಆಇ - - - diff --git a/tools/make-keyboard-text/src/main/resources/values-ky/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-ky/donottranslate-more-keys.xml deleted file mode 100644 index 3d885bf722..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-ky/donottranslate-more-keys.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - щ - - ы - - э - - и - - ү - - ё - - ң - - ө - - ъ - - АБВ - diff --git a/tools/make-keyboard-text/src/main/resources/values-lo/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-lo/donottranslate-more-keys.xml deleted file mode 100644 index 1059930e4d..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-lo/donottranslate-more-keys.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - ກຂຄ - - - diff --git a/tools/make-keyboard-text/src/main/resources/values-lt/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-lt/donottranslate-more-keys.xml deleted file mode 100644 index 8b6a1b2b6d..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-lt/donottranslate-more-keys.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - ą,ä,ā,à,á,â,ã,å,æ - - ė,ę,ē,è,é,ê,ë,ě - - į,ī,ì,í,î,ï,ı - - ö,õ,ò,ó,ô,œ,ő,ø - - ū,ų,ü,ū,ù,ú,û,ů,ű - - š,ß,ś,ş - - ņ,ñ,ń - - č,ç,ć - - ý,ÿ - - ď - - ŗ,ř,ŕ - - ţ,ť - - ž,ż,ź - - ķ - - ļ,ł,ĺ,ľ - - ģ,ğ - !text/single_9qm_lqm - !text/double_9qm_lqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-lv/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-lv/donottranslate-more-keys.xml deleted file mode 100644 index 83f83fc990..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-lv/donottranslate-more-keys.xml +++ /dev/null @@ -1,107 +0,0 @@ - - - - - ā,à,á,â,ã,ä,å,æ,ą - - ē,ė,è,é,ê,ë,ę,ě - - ī,į,ì,í,î,ï,ı - - ò,ó,ô,õ,ö,œ,ő,ø - - ū,ų,ù,ú,û,ü,ů,ű - - š,ß,ś,ş - - ņ,ñ,ń - - č,ç,ć - - ý,ÿ - - ď - - ŗ,ř,ŕ - - ţ,ť - - ž,ż,ź - - ķ - - ļ,ł,ĺ,ľ - - ģ,ğ - !text/single_9qm_lqm - !text/double_9qm_lqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-mk/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-mk/donottranslate-more-keys.xml deleted file mode 100644 index 1ab1354c87..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-mk/donottranslate-more-keys.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - ѕ - - ќ - - з - - ѓ - - ѐ - - ѝ - - АБВ - !text/single_9qm_lqm - !text/double_9qm_lqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-ml/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-ml/donottranslate-more-keys.xml deleted file mode 100644 index 7a2aeed361..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-ml/donottranslate-more-keys.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - diff --git a/tools/make-keyboard-text/src/main/resources/values-mn/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-mn/donottranslate-more-keys.xml deleted file mode 100644 index 3fafb397ba..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-mn/donottranslate-more-keys.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - АБВ - - - diff --git a/tools/make-keyboard-text/src/main/resources/values-mr/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-mr/donottranslate-more-keys.xml deleted file mode 100644 index 19db16da15..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-mr/donottranslate-more-keys.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - कखग - - - - - - - - - - - - - - - - - - - - - - ?१२३ - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 0 - - - diff --git a/tools/make-keyboard-text/src/main/resources/values-my/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-my/donottranslate-more-keys.xml deleted file mode 100644 index f408f588a7..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-my/donottranslate-more-keys.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - ကခဂ - - - "\\," - - - - "!autoColumnOrder!9,၊,.,?,!,#,),(,/,;,...,',@,:,-,\",+,\\%,&" - "!autoColumnOrder!8,.,',#,),(,/,;,@,...,:,-,\",+,\\%,&" - diff --git a/tools/make-keyboard-text/src/main/resources/values-nb/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-nb/donottranslate-more-keys.xml deleted file mode 100644 index 37f9f8a1fd..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-nb/donottranslate-more-keys.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - å,æ,ä,à,á,â,ã,ā - - é,è,ê,ë,ę,ė,ē - - ø,ö,ô,ò,ó,õ,œ,ō - - ü,û,ù,ú,ū - - å - - ø - - æ - - ö - - ä - !text/single_9qm_rqm - !text/double_9qm_rqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-ne/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-ne/donottranslate-more-keys.xml deleted file mode 100644 index 56b594f3a1..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-ne/donottranslate-more-keys.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - कखग - - - - - - - - - - - - - - - - - - - - - - ?१२३ - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 0 - - रु. - - - - "!autoColumnOrder!9,.,\\,,?,!,#,),(,/,;,',@,:,-,\",+,\\%,&" - "!autoColumnOrder!8,.,\\,,',#,),(,/,;,@,:,-,\",+,\\%,&" - diff --git a/tools/make-keyboard-text/src/main/resources/values-nl/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-nl/donottranslate-more-keys.xml deleted file mode 100644 index f9a26c5400..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-nl/donottranslate-more-keys.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - á,ä,â,à,æ,ã,å,ā - - é,ë,ê,è,ę,ė,ē - - í,ï,ì,î,į,ī,ij - - ó,ö,ô,ò,õ,œ,ø,ō - - ú,ü,û,ù,ū - - ñ,ń - - ij - !text/single_9qm_rqm - !text/double_9qm_rqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-pl/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-pl/donottranslate-more-keys.xml deleted file mode 100644 index 8a87db41e1..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-pl/donottranslate-more-keys.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - ą,á,à,â,ä,æ,ã,å,ā - - ę,è,é,ê,ë,ė,ē - - ó,ö,ô,ò,õ,œ,ø,ō - - ś,ß,š - - ń,ñ - - ć,ç,č - - ż,ź,ž - - ł - !text/single_9qm_rqm - !text/double_9qm_rqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-pt/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-pt/donottranslate-more-keys.xml deleted file mode 100644 index f3f667efc5..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-pt/donottranslate-more-keys.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - á,ã,à,â,ä,å,æ,ª - - é,ê,è,ę,ė,ē,ë - - í,î,ì,ï,į,ī - - ó,õ,ô,ò,ö,œ,ø,ō,º - - ú,ü,ù,û,ū - - ç,č,ć - diff --git a/tools/make-keyboard-text/src/main/resources/values-rm/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-rm/donottranslate-more-keys.xml deleted file mode 100644 index 2df401eb4d..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-rm/donottranslate-more-keys.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - ò,ó,ö,ô,õ,œ,ø - diff --git a/tools/make-keyboard-text/src/main/resources/values-ro/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-ro/donottranslate-more-keys.xml deleted file mode 100644 index 834e039689..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-ro/donottranslate-more-keys.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - ă,â,ã,à,á,ä,æ,å,ā - - î,ï,ì,í,į,ī - - ș,ß,ś,š - - ț - !text/single_9qm_rqm - !text/double_9qm_rqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-ru/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-ru/donottranslate-more-keys.xml deleted file mode 100644 index 2093ba88bb..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-ru/donottranslate-more-keys.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - щ - - ы - - э - - и - - ё - - ъ - - АБВ - !text/single_9qm_lqm - !text/double_9qm_lqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-si/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-si/donottranslate-more-keys.xml deleted file mode 100644 index 871d82ab0c..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-si/donottranslate-more-keys.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - අ,ආ - - රු - diff --git a/tools/make-keyboard-text/src/main/resources/values-sk/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-sk/donottranslate-more-keys.xml deleted file mode 100644 index a05b703705..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-sk/donottranslate-more-keys.xml +++ /dev/null @@ -1,110 +0,0 @@ - - - - - á,ä,ā,à,â,ã,å,æ,ą - - é,ě,ē,ė,è,ê,ë,ę - - í,ī,į,ì,î,ï,ı - - ô,ó,ö,ò,õ,œ,ő,ø - - ú,ů,ü,ū,ų,ù,û,ű - - š,ß,ś,ş - - ň,ņ,ñ,ń - - č,ç,ć - - ý,ÿ - - ď - - ŕ,ř,ŗ - - ť,ţ - - ž,ż,ź - - ķ - - ľ,ĺ,ļ,ł - - ģ,ğ - !text/single_9qm_lqm - !text/double_9qm_lqm - !text/single_raqm_laqm - !text/double_raqm_laqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-sl/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-sl/donottranslate-more-keys.xml deleted file mode 100644 index d529589a04..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-sl/donottranslate-more-keys.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - š - - č,ć - - đ - - ž - !text/single_9qm_lqm - !text/double_9qm_lqm - !text/single_raqm_laqm - !text/double_raqm_laqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-sr-rZZ/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-sr-rZZ/donottranslate-more-keys.xml deleted file mode 100644 index 1168126ffc..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-sr-rZZ/donottranslate-more-keys.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - è - - ì - - š,% - - č,ć,% - - đ,% - - ž,% - "Idi" - "Šalji" - "Sled" - "Gotov" - "Traži" - "Preth" - "Pauza" - "Čekaj" - diff --git a/tools/make-keyboard-text/src/main/resources/values-sr/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-sr/donottranslate-more-keys.xml deleted file mode 100644 index 870a71331e..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-sr/donottranslate-more-keys.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - з - - ћ - - ѕ - - ђ - - ѐ - - ѝ - - - АБВ - !text/single_9qm_lqm - !text/double_9qm_lqm - !text/single_raqm_laqm - !text/double_raqm_laqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-sv/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-sv/donottranslate-more-keys.xml deleted file mode 100644 index 832e438f38..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-sv/donottranslate-more-keys.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - ä,å,æ,á,à,â,ą,ã - - ç,ć,č - - ð,ď - - é,è,ê,ë,ę - - í,ì,î,ï - - ł - - ń,ñ,ň - - ö,ø,œ,ó,ò,ô,õ,ō - - ř - - ś,š,ş,ß - - ť,þ - - ü,ú,ù,û,ū - - ý,ÿ - - ź,ž,ż - - å - - ä - - æ - - ö - - ø,œ - !text/single_raqm_laqm - !text/double_raqm_laqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-sw/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-sw/donottranslate-more-keys.xml deleted file mode 100644 index e06ae21cd9..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-sw/donottranslate-more-keys.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - à,á,â,ä,æ,ã,å,ā - - è,é,ê,ë,ē - - î,ï,í,ī,ì - - ô,ö,ò,ó,œ,ø,ō,õ - - û,ü,ù,ú,ū - - ß - - ñ - - ç - g\' - diff --git a/tools/make-keyboard-text/src/main/resources/values-ta-rIN/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-ta-rIN/donottranslate-more-keys.xml deleted file mode 100644 index 547c8e1322..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-ta-rIN/donottranslate-more-keys.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - தமிழ் - - - diff --git a/tools/make-keyboard-text/src/main/resources/values-ta-rLK/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-ta-rLK/donottranslate-more-keys.xml deleted file mode 100644 index 9e900a6b11..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-ta-rLK/donottranslate-more-keys.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - தமிழ் - - රු - diff --git a/tools/make-keyboard-text/src/main/resources/values-ta-rSG/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-ta-rSG/donottranslate-more-keys.xml deleted file mode 100644 index 07e4d8beb5..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-ta-rSG/donottranslate-more-keys.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - தமிழ் - diff --git a/tools/make-keyboard-text/src/main/resources/values-te/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-te/donottranslate-more-keys.xml deleted file mode 100644 index 6518dea8f8..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-te/donottranslate-more-keys.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - అఆఇ - - - diff --git a/tools/make-keyboard-text/src/main/resources/values-th/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-th/donottranslate-more-keys.xml deleted file mode 100644 index 3329cf241c..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-th/donottranslate-more-keys.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - กขค - - ฿ - diff --git a/tools/make-keyboard-text/src/main/resources/values-tl/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-tl/donottranslate-more-keys.xml deleted file mode 100644 index cf25b6f43f..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-tl/donottranslate-more-keys.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - á,à,ä,â,ã,å,ą,æ,ā,ª - - é,è,ë,ê,ę,ė,ē - - í,ï,ì,î,į,ī - - ó,ò,ö,ô,õ,ø,œ,ō,º - - ú,ü,ù,û,ū - - ñ,ń - - ç,ć,č - diff --git a/tools/make-keyboard-text/src/main/resources/values-tr/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-tr/donottranslate-more-keys.xml deleted file mode 100644 index 2398430e17..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-tr/donottranslate-more-keys.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - â,ä,á - - ə,é - - ı,î,ï,ì,í,į,ī - - ö,ô,œ,ò,ó,õ,ø,ō - - ü,û,ù,ú,ū - - ş,ß,ś,š - - ğ - - ň,ñ - - ç,ć,č - - ý - - ž - diff --git a/tools/make-keyboard-text/src/main/resources/values-uk/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-uk/donottranslate-more-keys.xml deleted file mode 100644 index 1f72d068bd..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-uk/donottranslate-more-keys.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - щ - - і - - є - - и - - ґ - - ї - - ъ - - - - АБВ - !text/single_9qm_lqm - !text/double_9qm_lqm - diff --git a/tools/make-keyboard-text/src/main/resources/values-uz/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-uz/donottranslate-more-keys.xml deleted file mode 100644 index 24dd091b53..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-uz/donottranslate-more-keys.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - â,ä,á - - ə,é - - ı,î,ï,ì,í,į,ī - - ö,ô,œ,ò,ó,õ,ø,ō - - ü,û,ù,ú,ū - - ş,ß,ś,š - - ğ - - ň,ñ - - ç,ć,č - - ý - - ž - diff --git a/tools/make-keyboard-text/src/main/resources/values-vi/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-vi/donottranslate-more-keys.xml deleted file mode 100644 index aa571700fe..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-vi/donottranslate-more-keys.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - - - à,á,ả,ã,ạ,ă,ằ,ắ,ẳ,ẵ,ặ,â,ầ,ấ,ẩ,ẫ,ậ - - è,é,ẻ,ẽ,ẹ,ê,ề,ế,ể,ễ,ệ - - ì,í,ỉ,ĩ,ị - - ò,ó,ỏ,õ,ọ,ô,ồ,ố,ổ,ỗ,ộ,ơ,ờ,ớ,ở,ỡ,ợ - - ù,ú,ủ,ũ,ụ,ư,ừ,ứ,ử,ữ,ự - - ỳ,ý,ỷ,ỹ,ỵ - - đ - - - diff --git a/tools/make-keyboard-text/src/main/resources/values-zu/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-zu/donottranslate-more-keys.xml deleted file mode 100644 index 2c5df0c81b..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-zu/donottranslate-more-keys.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - à,á,â,ä,æ,ã,å,ā - - é,è,ê,ë,ē - - í,î,ï,ī,ì - - ó,ô,ö,ò,œ,ø,ō,õ - - ú,û,ü,ù,ū - - ß - - ñ - - ç - diff --git a/tools/make-keyboard-text/src/main/resources/values-zz/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values-zz/donottranslate-more-keys.xml deleted file mode 100644 index f20c7f6184..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values-zz/donottranslate-more-keys.xml +++ /dev/null @@ -1,139 +0,0 @@ - - - - - à,á,â,ã,ä,å,æ,ā,ă,ą,ª - - è,é,ê,ë,ē,ĕ,ė,ę,ě - - ì,í,î,ï,ĩ,ī,ĭ,į,ı,ij - - ò,ó,ô,õ,ö,ø,ō,ŏ,ő,œ,º - - ù,ú,û,ü,ũ,ū,ŭ,ů,ű,ų - - ß,ś,ŝ,ş,š,ſ - - ñ,ń,ņ,ň,ʼn,ŋ - - ç,ć,ĉ,ċ,č - - ý,ŷ,ÿ,ij - - ď,đ,ð - - ŕ,ŗ,ř - - þ,ţ,ť,ŧ - - ź,ż,ž - - ķ,ĸ - - ĺ,ļ,ľ,ŀ,ł - - ĝ,ğ,ġ,ģ - - ĥ - - ĵ - - ŵ - diff --git a/tools/make-keyboard-text/src/main/resources/values/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values/donottranslate-more-keys.xml deleted file mode 100644 index d26383e203..0000000000 --- a/tools/make-keyboard-text/src/main/resources/values/donottranslate-more-keys.xml +++ /dev/null @@ -1,275 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - q - w - y - x - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ABC - !text/single_lqm_rqm - !text/double_lqm_rqm - !text/single_laqm_raqm - !text/double_laqm_raqm - - ¢,£,€,¥,₱ - $ - $,¢,€,£,¥,₱ - "!autoColumnOrder!8,\\,,?,!,#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,',@,:,-,\",+,\\%,&" - "!autoColumnOrder!7,\\,,',#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,@,:,-,\",+,\\%,&" - - ñ - - †,‡,★ - - ♪,♥,♠,♦,♣ - - ± - !fixedColumnOrder!3,!text/keyspecs_left_parenthesis_more_keys - !fixedColumnOrder!3,!text/keyspecs_right_parenthesis_more_keys - !fixedColumnOrder!3,!text/keyspec_left_single_angle_quote,!text/keyspec_less_than_equal,!text/keyspec_left_double_angle_quote - !fixedColumnOrder!3,!text/keyspec_right_single_angle_quote,!text/keyspec_greater_than_equal,!text/keyspec_right_double_angle_quote - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 0 - - ?123 - - - - - - - - - - - - ¹,½,⅓,¼,⅛ - - ²,⅔ - - ³,¾,⅜ - - - - - - - - - - - ⁿ,∅ - - ( - ) - [ - ] - { - } - < - > - - - « - » - - - - , - , - - - - . - - !text/morekeys_punctuation - . - - !text/morekeys_tablet_punctuation - ? - ; - % - - ¡ - - ¿ - - - - !fixedColumnOrder!2,!hasLabels!,!text/keylabel_time_am,!text/keylabel_time_pm - !icon/settings_key|!code/key_settings - !icon/shortcut_key|!code/key_shortcut - !hasLabels!,!text/label_next_key|!code/key_action_next - !hasLabels!,!text/label_previous_key|!code/key_action_previous - - = \\\\ < - - ~ [ < - - 123 - - - *# - - "AM" - - "PM" - ".com" - - "!hasLabels!,.net,.org,.gov,.edu" - !text/keyspec_less_than,!text/keyspec_left_curly_bracket,!text/keyspec_left_square_bracket - !text/keyspec_greater_than,!text/keyspec_right_curly_bracket,!text/keyspec_right_square_bracket - - - - !text/keyspec_left_single_angle_quote,!text/keyspec_right_single_angle_quote - !text/keyspec_right_single_angle_quote,!text/keyspec_left_single_angle_quote - !text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote - !text/keyspec_right_double_angle_quote,!text/keyspec_left_double_angle_quote - - ‚,‘,’ - ’,‚,‘ - ‘,‚,’ - ‘,’,‚ - „,“,” - ”,„,“ - “,„,” - “,”,„ - !fixedColumnOrder!5,!text/single_quotes,!text/single_angle_quotes - !fixedColumnOrder!5,!text/double_quotes,!text/double_angle_quotes - !fixedColumnOrder!6,!text/double_quotes,!text/single_quotes,!text/double_angle_quotes,!text/single_angle_quotes - !icon/emoji_action_key|!code/key_emoji - !icon/emoji_normal_key|!code/key_emoji - !icon/clipboard_action_key|!code/key_clipboard - !icon/clipboard_normal_key|!code/key_clipboard - !icon/start_onehanded_mode_key|!code/key_start_onehanded - !icon/language_switch_key|!code/key_language_switch - !string/label_go_key - !string/label_send_key - !string/label_next_key - !string/label_done_key - !string/label_search_key - !string/label_previous_key - !string/label_pause_key - !string/label_wait_key - diff --git a/tools/release.py b/tools/release.py new file mode 100755 index 0000000000..d4f347281a --- /dev/null +++ b/tools/release.py @@ -0,0 +1,126 @@ +#!/bin/python + +import os +import subprocess +import sys +import zipfile +from urllib.request import urlretrieve + + +# git diff should be empty, and there should be no errors +def check_git(): + result = subprocess.run(["git", "diff", "--name-only"], capture_output=True) + if result.returncode != 0 or len(result.stdout) != 0: + cont = input("uncommitted changes found, continue? [y/N] ") + if cont != "y": + sys.exit() + + +# download and update translations +def update_translations(): + url = "https://translate.codeberg.org/download/heliboard/?format=zip" + zip_file_name = "translations.zip" + urlretrieve(url, zip_file_name) + # extract all in heliboard/heliboard/app/src/main/res and heliboard/heliboard/fastlane/metadata + with zipfile.ZipFile(zip_file_name, "r") as f: + for file in f.filelist: + if not file.filename.startswith("heliboard/heliboard/app/src/main/res")\ + and not file.filename.startswith("heliboard/heliboard/fastlane/metadata"): + continue + file.filename = file.filename.replace("heliboard/heliboard/", "") + f.extract(file) + os.remove(zip_file_name) + + +# git diff to make sure default strings are the same +def check_default_values_diff(): + result = subprocess.run(["git", "diff", "--name-only", "app/src/main/res/values"], capture_output=True) + if result.returncode != 0 or len(result.stdout) != 0: + raise ValueError("default strings changed after translation import, something is wrong") + + +def read_dicts_readme() -> list[str]: + dicts_readme_file = "../dictionaries/README.md" + if os.path.isfile(dicts_readme_file): + f = open(dicts_readme_file) + lines = f.readlines() + f.close() + return lines + readme_url = "https://codeberg.org/Helium314/aosp-dictionaries/raw/branch/main/README.md" + tmp_readme = "dicts_readme_tmp.md" + urlretrieve(readme_url, tmp_readme) + f = open(tmp_readme) + lines = f.readlines() + f.close() + os.remove(tmp_readme) + return lines + + +# generate a list of dictionaries available in the dictionaries repository at (https://codeberg.org/Helium314/aosp-dictionaries +# for convenient linking when adding dictionaries in HeliBoard. +def update_dict_list(): + lines = read_dicts_readme() + mode = 0 + dicts = [] + for line in lines: + line = line.strip() + if line.startswith("#"): + mode = 0 + if line.startswith("# Dictionaries"): + mode = 1 + if mode == 0 or not line.startswith("|") or line.startswith("| Language |") or line.startswith("| --- |"): + continue + split = line.split("|") + dict_name = split[2].split("]")[1].split("(")[1].split(")")[0].split("/")[-1].split(".dict")[0] + (dict_type, locale) = dict_name.split("_", 1) + if "_" in locale: + sp = locale.split("_") + locale = sp[0] + for s in sp[1:]: + locale = locale + "_" + s.upper() + if split[3].strip() == "yes": + extra = "exp" + elif "UNICODE LICENSE V3 (CLDR)" in split[7]: + extra = "cldr" + else: + extra = "" + dicts.append(f"{dict_type},{locale},{extra}\n") + target_file = "app/src/main/assets/dictionaries_in_dict_repo.csv" + with open(target_file, 'w') as f: + f.writelines(dicts) + + +# check whether there is a changelog file for current version and print result and version code +def check_changelog(): + changelog_dir = "fastlane/metadata/android/en-US/changelogs" + assert os.path.isdir(changelog_dir) + filenames = [] + for file in os.scandir(changelog_dir): + filenames.append(file.name) + filenames.sort() + changelog_version = filenames[-1].replace(".txt", "") + version = "" + with open("app/build.gradle.kts") as f: + for line in f: + line = line.lstrip() + if line.startswith("versionCode"): + version = line.split(" ")[2].rstrip() + break + if changelog_version == version: + print("changelog for", version, "exists") + else: + print("changelog for", version, "does not exist") + + +def main(): + if os.getcwd().endswith("tools"): + os.chdir("../") + check_git() + update_translations() + check_default_values_diff() + update_dict_list() + check_changelog() + + +if __name__ == "__main__": + main()