From 80558aec31e93c367dd4b795dfc3e8af95d4dd30 Mon Sep 17 00:00:00 2001 From: Asnake Berhanu Date: Tue, 5 May 2026 18:35:14 +0300 Subject: [PATCH 1/3] Initial Submission of Nyangatom Keyboard --- .gitattributes | 2 + .gitignore | 68 ++++++++--------- HISTORY.md | 6 ++ LICENSE | 23 ++++++ LICENSE.md | 21 ++++++ README.md | 192 +---------------------------------------------- yangap_phone.kpj | 8 ++ 7 files changed, 95 insertions(+), 225 deletions(-) create mode 100644 .gitattributes create mode 100644 HISTORY.md create mode 100644 LICENSE create mode 100644 LICENSE.md create mode 100644 yangap_phone.kpj diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..dfe0770424 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.gitignore b/.gitignore index bd9be27135..0c1aed6e09 100644 --- a/.gitignore +++ b/.gitignore @@ -1,35 +1,33 @@ -*.kpj.user -.idea/ -legacy/*/*/build/ -release/*/*/build/ -release/*/*/tests/ -experimental/*/*/build/ -packages/*/build/ -.cache -.DS_Store -/.project -.vscode/ -node_modules/ - -# compiler is downloaded into tools/kmcomp/ -/tools/kmcomp/ - -# regression tests will be built into /output -/output/ - -# Program files downloaded -- legacy, these are no longer required -# but we'll keep them in .gitignore so they don't accidentally get -# added into commits -/tools/keyboard_info.distribution.json -/tools/keyboard_info.source.json -/tools/kmcmpdll.dll -/tools/kmcmpdll.x64.dll -/tools/kmcomp.exe -/tools/kmcomp.x64.exe -/tools/kmconvert.exe - -.source_is_binary -build_targets.txt -build_external_targets.txt -build_fv_all.txt -build_legacy.txt +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Log/OS Files +*.log + +# Android Studio generated files and folders +captures/ +.externalNativeBuild/ +.cxx/ +*.apk +output.json + +# IntelliJ +*.iml +.idea/ +misc.xml +deploymentTargetDropDown.xml +render.experimental.xml + +# Keystore files +*.jks +*.keystore + +# Google Services (e.g. APIs or Firebase) +google-services.json + +# Android Profiling +*.hprof diff --git a/HISTORY.md b/HISTORY.md new file mode 100644 index 0000000000..0e61cc1812 --- /dev/null +++ b/HISTORY.md @@ -0,0 +1,6 @@ +Yangap_phone Change History +==================== + +1.0 (2025-09-23) +---------------- +* Created by Asnake Berhanu diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000..0755c1bc86 --- /dev/null +++ b/LICENSE @@ -0,0 +1,23 @@ +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000000..751b7c0e72 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +© 2025SILEthiopia + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index addd6faddf..7d250c8525 100644 --- a/README.md +++ b/README.md @@ -1,190 +1,2 @@ -# Open Source Keyman keyboards - -## Table of Contents -- [File Layout](#file-layout) -- [Contributing](#contributing) - - [Tool](#tool) - - [Standard keyboard design](#standard-keyboard-design) - - [Keyboard submission guidelines](#keyboard-submission-guidelines) - - [Publish your keyboard](#publish-your-keyboard) - - [Modify a keyboard layout](#modify-a-keyboard) - - [Documentation](#documentation) -- [Building Keyboards](#building-keyboards) - - [Prerequisites](#prerequisites) - - [Build instructions](#build-instructions) - - [Common `build.sh` parameters](#common-buildsh-parameters) -- [Deprecated Keyboards](#deprecated-keyboards) -- [Common Links](#common-links) -- [Community](#community) - -## File Layout - -Keyboards are grouped into three folders: - - * `release` - keyboards with full source that pass our stringent quality - checks, Unicode only, generally no PUA - * `legacy` - binary distributions of keyboards, migrated from Tavultesoft - servers, Unicode and non-Unicode - * `experimental` - keyboards that have not yet passed the quality check, - available from the 'experimental' category in Keyman apps with Keyman 10 and - later. Unicode only, but PUA is acceptable. - -Within each of the folders, keyboards are further grouped by first letter or by -prefix, where multiple keyboards share the same prefix indicating provenance, -for example `sil` or `gff`. - -## Contributing - -### Tool - -Get the latest version of [Keyman Developer](https://keyman.com/developer) to start the journey of keyboard development. - -### Standard keyboard design - -A good way to start creating a keyboard is to plan out the requirements of the keyboard ahead and decide on the keyboard's language, target users, usability, structure, and many more steps that can be carried out further along the process. To ensure that the keyboard is up to standard, start by implementing the D.I.S.C.U.S. method. Find out [more](https://help.keyman.com/developer/keyboards/standard/)! - -### Keyboard submission guidelines - -Please make sure the keyboard and the package compile successfully before making a keyboard submission. If there are warning messages, try to address all of them; if there are errors, those must be corrected before submission. Help on this: [Compiler Messages](https://help.keyman.com/developer/current-version/reference/messages/) - -### Publish your keyboard - -When a keyboard is ready to submit, please confirm that the folders and files are consistent to the repository. For more clarification: - -- [Folder and File layout](https://help.keyman.com/developer/current-version/reference/file-layout) -- [File types](https://help.keyman.com/developer/current-version/reference/file-types/) - -After two to three rounds of confirmation and testing, you are welcome to create a Pull Request - -- [GitHub Keyboard Submission Guide](https://help.keyman.com/developer/keyboards/github/) - -### Modify a keyboard - -To update a keyboard in this repository, follow these steps: - -1. Create a fork from this repository (Update your fork of the keyboards repository if you already have one) - - The Fork button is located near the top of the repository, then follow the instructions [here](https://help.keyman.com/developer/keyboards/advanced/), and come back. - - Update the forked repository [here](https://help.keyman.com/developer/keyboards/github/step-3#toc-updating-your-fork), and proceed to the next step. - -2. Download a copy of the latest files that are in your forked repository as a ZIP file. - - Go to `https://github.com/[YourGitHubName]/keyboards/` (after replacing `[YourGitHubName]` with your actual GitHub name) - - Navigate to the keyboard, for example, to “release”, then “a”, then “ausephon” - - At that point, the browser URL will be something like: `https://github.com/[YourGitHubName]/keyboards/tree/master/release/a/ausephon` - - Copy the URL - - Go to: - - Paste the URL into the field and press Enter - - The files for the keyboard are zipped up and offered for download as: `keymanapp keyboards master release-a_ausephon.zip` - - Rename the file to `ausephon.zip` and save (Or save first, then rename). - - Unzip `ausephon.zip` to get the keyboard project folder ausephon with all of its files and subfolders. - -3. Update the keyboard files on your computer with Keyman Developer and/or a text editor - - Double-click on the `ausephon.kpj` (Keyman project file) in the ausephon folder to launch Keyman Developer - - Make your changes - - Build and test the keyboard, then build the package - - When everything is working and complete, include the changes to the HISTORY.md file and, if necessary, to the LICENSE.md file. - - Almost there, but first, delete the build folder and the files in it - - Also delete the .kpj.user (but don’t delete the .kpj file!). - -4. Submit your updates as a new pull request - - Go back to GitHub - - Create a new branch (from master) with a short name to represent the pull request. For example, ausephon-updates... - - Navigate to the target folder location (click on release, then on a, and you’ll see the ausephon folder) - - Click on “Add file”, then “Upload files” - - Drag the “ausephon” folder from your Windows Explorer window, and drop it on the GitHub window - - Follow the steps to create a pull request, although the commit message will be something like `[ausephon] updated keyboard` - -### Include font files - -If the fonts are used on multiple keyboards, the font files must be placed under the `shared folder`. Follow through this [documentation](https://help.keyman.com/developer/keyboards/github/step-2#toc-including-fonts-in-your-keyboard-package). However, if you are editing the keyboard package within the folders of the forked repository (skip step 2 above) only specifying the existing shared-font location in the package is necessary. - -### Documentation - -If the guides are not enough to provide you with a complete keyboard, don't be afraid to explore the main keyboard and keyman developer help pages! - -- [Keyboard helps](https://help.keyman.com/developer/keyboards/) -- [Keyman Developer helps](https://help.keyman.com/developer/current-version/) - -## Building Keyboards - -### Prerequisites - -Windows: - * Git for Windows (or MinGW) - * You will need to use **Git Bash** or equivalent to build (not tested with - Cygwin), not Windows Command Prompt or PowerShell. - * You can also use **WSL2** (Bash on Ubuntu on Windows). Beware of line-ending - changes if mixing Windows and WSL usage. - * Node.js 18.0 - -Linux: - * Node.js 18.0 - * bash 5.0 (standard now on most distributions) - -macOS: - * bash 5.0 (`brew install bash`) - * coreutils (`brew install coreutils`) - * Node.js 18.0 (`brew install node`) - * Ensure coreutils is on the PATH: `export PATH="$HOMEBREW_PREFIX/opt/coreutils/libexec/gnubin:$PATH"` - -### Build instructions - -`./build.sh` can be used to build all the keyboards from the command line. - -* `kmc`, the Keyman Developer compiler, is installed as a Node.js module, and so - Keyman Developer is not required for builds. - -#### Common `build.sh` parameters - -``` -Summary: - Build Keyman keyboards - -Script Identifier: - /c/Projects/keyman/keyboards - -Usage: - build.sh [options...] [action][:target]... - -Actions: - clean remove build/ folder and build artifacts - configure install dependencies, e.g. npm - build build target(s) - test run automated tests - -Targets: - :project this project - -Options: - --silent, -s Suppress unnecessary messages - --keyboard, -k KEYBOARD Build specific targets only, e.g. release/ or release/a/ or release/a/anii/, comma separated - --verbose, -v Verbose logging - --debug, -d Debug build - --color Force colorized output - --no-color Never use colorized output - --help, -h Show this help - -Dependencies: - This module has no dependencies - -* Specify action:target to run a specific action against a specific :target. -* If action is specified without a target suffix, it will be applied to all :targets. -* If :target is specified without an action prefix, build:target will be inferred. -* If no action, :target, or action:target entries are specified, build will run on all :targets. -``` - -* Each keyboard also includes a project file which can be used to build the project - either from the command line - kmc compiler, or from the Keyman Developer IDE. - -## Deprecated Keyboards - -If a keyboard has been replaced by another keyboard, include a DEPRECATED.md file in the folder referencing the new keyboard name. - -## Common Links - -* : Guide to working with this repository -* : Published documentation for each keyboard -* : JSON API for compiled keyboards available from Keyman Cloud - -## Community - -We appreciate the effort of reaching out about any issue or suggestion that is beneficial for the community. Share with us on our [community site](https://community.software.sil.org/new-message?groupname=keyman). +# yangap_phone + This is Neyangatom keyboard for Andriod diff --git a/yangap_phone.kpj b/yangap_phone.kpj new file mode 100644 index 0000000000..d3a678044b --- /dev/null +++ b/yangap_phone.kpj @@ -0,0 +1,8 @@ + + + + 2.0 + True + True + + From 8745efcb95c279ddaced51947948905a67795116 Mon Sep 17 00:00:00 2001 From: Asnake Berhanu Date: Tue, 21 Jul 2026 12:04:18 +0300 Subject: [PATCH 2/3] Add files via upload --- Nyangatom Keyboard/HISTORY.md | 6 + Nyangatom Keyboard/LICENSE | 23 + Nyangatom Keyboard/LICENSE.md | 21 + Nyangatom Keyboard/Nyangatom.kpj.user | 149 ++++ Nyangatom Keyboard/README.md | 2 + Nyangatom Keyboard/source/Nyangatom.ico | Bin 0 -> 1150 bytes Nyangatom Keyboard/source/Nyangatom.js | 1 + .../source/Nyangatom.keyman-touch-layout | 650 ++++++++++++++++++ Nyangatom Keyboard/source/Nyangatom.kmx | Bin 0 -> 550 bytes Nyangatom Keyboard/source/Nyangatom.kps | 98 +++ Nyangatom Keyboard/source/Nyangatom.kvks | 8 + Nyangatom Keyboard/source/Nyangatom.png | Bin 0 -> 24841 bytes .../source/help/Nyangatom.php.text | 19 + Nyangatom Keyboard/source/nyangatom.kmn | 19 + Nyangatom Keyboard/source/readme.htm | 24 + Nyangatom Keyboard/source/welcome.htm | 27 + Nyangatom Keyboard/yangap_phone.kpj.user | 112 +++ 17 files changed, 1159 insertions(+) create mode 100644 Nyangatom Keyboard/HISTORY.md create mode 100644 Nyangatom Keyboard/LICENSE create mode 100644 Nyangatom Keyboard/LICENSE.md create mode 100644 Nyangatom Keyboard/Nyangatom.kpj.user create mode 100644 Nyangatom Keyboard/README.md create mode 100644 Nyangatom Keyboard/source/Nyangatom.ico create mode 100644 Nyangatom Keyboard/source/Nyangatom.js create mode 100644 Nyangatom Keyboard/source/Nyangatom.keyman-touch-layout create mode 100644 Nyangatom Keyboard/source/Nyangatom.kmx create mode 100644 Nyangatom Keyboard/source/Nyangatom.kps create mode 100644 Nyangatom Keyboard/source/Nyangatom.kvks create mode 100644 Nyangatom Keyboard/source/Nyangatom.png create mode 100644 Nyangatom Keyboard/source/help/Nyangatom.php.text create mode 100644 Nyangatom Keyboard/source/nyangatom.kmn create mode 100644 Nyangatom Keyboard/source/readme.htm create mode 100644 Nyangatom Keyboard/source/welcome.htm create mode 100644 Nyangatom Keyboard/yangap_phone.kpj.user diff --git a/Nyangatom Keyboard/HISTORY.md b/Nyangatom Keyboard/HISTORY.md new file mode 100644 index 0000000000..0e61cc1812 --- /dev/null +++ b/Nyangatom Keyboard/HISTORY.md @@ -0,0 +1,6 @@ +Yangap_phone Change History +==================== + +1.0 (2025-09-23) +---------------- +* Created by Asnake Berhanu diff --git a/Nyangatom Keyboard/LICENSE b/Nyangatom Keyboard/LICENSE new file mode 100644 index 0000000000..0755c1bc86 --- /dev/null +++ b/Nyangatom Keyboard/LICENSE @@ -0,0 +1,23 @@ +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/Nyangatom Keyboard/LICENSE.md b/Nyangatom Keyboard/LICENSE.md new file mode 100644 index 0000000000..751b7c0e72 --- /dev/null +++ b/Nyangatom Keyboard/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +© 2025SILEthiopia + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Nyangatom Keyboard/Nyangatom.kpj.user b/Nyangatom Keyboard/Nyangatom.kpj.user new file mode 100644 index 0000000000..cee14e708b --- /dev/null +++ b/Nyangatom Keyboard/Nyangatom.kpj.user @@ -0,0 +1,149 @@ + + + + 3 + 1 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\yangap_phone.kpj + + + + + id_fc723d30b02a4cca7a534518111c1a66 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\.gitattributes + + + id_a084b794bc0759e7a6b77810e01874f2 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\.gitignore + + + id_ede98e4633e239f933cbfd1f4e1b766c + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\HISTORY.md + + + id_718779752b851ac0dc6281a8c8d77e7e + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\LICENSE + + + id_53e892b8b41cc4caece1cfd5ef21d6e7 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\LICENSE.md + + + id_a5ac2f387096241fb38521ad52d9e419 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\Nyangatom Keyboard.kpj + + + id_731c267d1ecb84776386acce2142eb48 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\Nyangatom Keyboard.kpj.user + + + id_505044229e72b4688cb0bed66e5954b9 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\Nyangatom.kpj + + + id_0730bb7c2e8f9ea2438b52e419dd86c9 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\README.md + + + id_8259ba1ad7f1d32c5600c9bd3eb68849 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\yangap.kpj.user + + + id_004dc1dad5edd32727cd3bd2314bbea6 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\yangap_phone.kpj + + + id_900876a35a2996c81c29e4e2cbd0087d + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\yangap_phone.kpj.user + + + id_51f167459f897df041b333fef61dd778 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\Nyangatom Keyboard.kmn + False + + + id_3dc74a3e762ce520e7eb0032c07acfa4 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\Nyangatom Keyboard.kps + + + id_7872080524a07674901995b5aa7f27d6 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\Nyangatom Keyboard.kvks + + + id_151b3b308ead4ac972374b1d9dbf1481 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\Nyangatom Keyboard.png + + + id_fdd27e84a29cc79c375e66b8d8afe6ec + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\Nyangatom.ico + + + id_98b3afec8f4ebc5cee0380df4361f7fc + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\Nyangatom.keyman-touch-layout + + + id_5f380c1e558939edca9a00df92c23473 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\Nyangatom.kmn + False + + + id_2a3f9219045327e4d564c994d618fdae + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\Nyangatom.kps + + + id_5610184d66c8f3eb4266c789b892be4f + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\Nyangatom.kvks + + + id_8d87109b3bfd9a0bb30d5b801bb9243e + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\Nyangatom.png + + + id_8da344c4cea6f467013357fe099006f5 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\readme.htm + + + id_356e5d149c1e539356d72698c1e401a6 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\welcome.htm + + + id_f678f1226f19a480241735c7867eb8a9 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\yangap_phone.ico + + + id_bb5c8c7825200f3c0377f5ed23dcbc2b + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\yangap_phone.keyman-touch-layout + + + id_844400f113dd27040e84000e7ff43a22 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\yangap_phone.kvks + + + id_c4a99d13a8b29c479c996e7766409c26 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\..\build\yangap_phone.kmx + + + id_45c81eac1ecf0545504543153992c9fb + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\..\build\yangap_phone.js + + + id_87f0848bfc1cdbdf1027c346716986fa + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\..\build\yangap_phone.kvk + + + id_c296b5df3dc126e219e0173fcbc1baec + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\..\LICENSE.md + + + id_8015a1accd2c6e2add79f263d40d4a13 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\yangap_phoneU.png + + + + + id_MRU0 + Nyangatom.kps + .kps + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\Nyangatom.kps + + + diff --git a/Nyangatom Keyboard/README.md b/Nyangatom Keyboard/README.md new file mode 100644 index 0000000000..7d250c8525 --- /dev/null +++ b/Nyangatom Keyboard/README.md @@ -0,0 +1,2 @@ +# yangap_phone + This is Neyangatom keyboard for Andriod diff --git a/Nyangatom Keyboard/source/Nyangatom.ico b/Nyangatom Keyboard/source/Nyangatom.ico new file mode 100644 index 0000000000000000000000000000000000000000..c919bf142b943446daf20ed4586a98c42ea1da67 GIT binary patch literal 1150 zcmZQzU<5(|0R;vS$Y5b$5ChU0Kr8^n3P8*VCV>o~96I>_|3AYh9t{J$X#kjL{(~^N zX$7XA6f=j8BXku&IIR2hrH%35g-=C)Esey-+@oq6h#0-juqe literal 0 HcmV?d00001 diff --git a/Nyangatom Keyboard/source/Nyangatom.js b/Nyangatom Keyboard/source/Nyangatom.js new file mode 100644 index 0000000000..3a7ad6d1af --- /dev/null +++ b/Nyangatom Keyboard/source/Nyangatom.js @@ -0,0 +1 @@ +if(typeof keyman === 'undefined') {console.log('Keyboard requires KeymanWeb 10.0 or later');if(typeof tavultesoft !== 'undefined') tavultesoft.keymanweb.util.alert("This keyboard requires KeymanWeb 10.0 or later");} else {KeymanWeb.KR(new Keyboard_nyangatom());}function Keyboard_nyangatom(){this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;this.KI="Keyboard_nyangatom";this.KN="Nyangatom";this.KMINVER="10.0";this.KV=null;this.KDU=0;this.KH='';this.KM=0;this.KBVER="1.0";this.KMBM=0x10;this.KVER="18.0.249.0";this.KVS=[];this.gs=function(t,e) {return this.g0(t,e);};this.gs=function(t,e) {return this.g0(t,e);};this.g0=function(t,e) {var k=KeymanWeb,r=0,m=0;if(k.KKM(e,16384,222)) {if(k.KFCM(1,t,[';'])){r=m=1;k.KDC(1,t);k.KO(-1,t,"!");}}else if(k.KKM(e,16400,69)) {if(k.KFCM(1,t,[';'])){r=m=1;k.KDC(1,t);k.KO(-1,t,"Ɛ");}}else if(k.KKM(e,16400,79)) {if(k.KFCM(1,t,[';'])){r=m=1;k.KDC(1,t);k.KO(-1,t,"Ɔ");}}else if(k.KKM(e,16384,69)) {if(k.KFCM(1,t,[';'])){r=m=1;k.KDC(1,t);k.KO(-1,t,"ɛ");}}else if(k.KKM(e,16384,79)) {if(k.KFCM(1,t,[';'])){r=m=1;k.KDC(1,t);k.KO(-1,t,"ɔ");}}return r;};} \ No newline at end of file diff --git a/Nyangatom Keyboard/source/Nyangatom.keyman-touch-layout b/Nyangatom Keyboard/source/Nyangatom.keyman-touch-layout new file mode 100644 index 0000000000..3fdc7f1a63 --- /dev/null +++ b/Nyangatom Keyboard/source/Nyangatom.keyman-touch-layout @@ -0,0 +1,650 @@ +{ + "phone": { + "font": "Tahoma", + "layer": [ + { + "id": "default", + "row": [ + { + "id": 1, + "key": [ + { + "id": "K_Q", + "text": "q" + }, + { + "id": "K_W", + "text": "w" + }, + { + "id": "K_E", + "text": "e", + "sk": [ + { + "text": "ɛ", + "id": "U_025B" + } + ] + }, + { + "id": "K_R", + "text": "r" + }, + { + "id": "K_T", + "text": "t" + }, + { + "id": "K_Y", + "text": "y" + }, + { + "id": "K_U", + "text": "u" + }, + { + "id": "K_I", + "text": "i" + }, + { + "id": "K_O", + "text": "o", + "sk": [ + { + "text": "ɔ", + "id": "U_0254" + } + ] + }, + { + "id": "K_P", + "text": "p" + } + ] + }, + { + "id": 2, + "key": [ + { + "id": "K_A", + "text": "a", + "pad": 50 + }, + { + "id": "K_S", + "text": "s" + }, + { + "id": "K_D", + "text": "d" + }, + { + "id": "K_F", + "text": "f" + }, + { + "id": "K_G", + "text": "g" + }, + { + "id": "K_H", + "text": "h" + }, + { + "id": "K_J", + "text": "j" + }, + { + "id": "K_K", + "text": "k" + }, + { + "id": "K_L", + "text": "l" + }, + { + "id": "T_new_88", + "text": "", + "width": 10, + "sp": 10 + } + ] + }, + { + "id": 3, + "key": [ + { + "id": "K_SHIFT", + "text": "*Shift*", + "sp": 1, + "nextlayer": "shift" + }, + { + "id": "K_Z", + "text": "z" + }, + { + "id": "K_X", + "text": "x" + }, + { + "id": "K_C", + "text": "c" + }, + { + "id": "K_V", + "text": "v" + }, + { + "id": "K_B", + "text": "b" + }, + { + "id": "K_N", + "text": "n" + }, + { + "id": "K_M", + "text": "m" + }, + { + "id": "K_PERIOD", + "text": "'", + "sk": [ + { + "text": "'", + "id": "K_QUOTE" + } + ] + }, + { + "id": "K_BKSP", + "text": "*BkSp*", + "width": 100, + "sp": 1 + } + ] + }, + { + "id": 4, + "key": [ + { + "id": "K_NUMLOCK", + "text": "*123*", + "width": 150, + "sp": 1, + "nextlayer": "numeric" + }, + { + "id": "K_LOPT", + "text": "*Menu*", + "width": 120, + "sp": 1 + }, + { + "id": "K_SPACE", + "text": "", + "width": 610, + "sp": 0 + }, + { + "id": "K_ENTER", + "text": "*Enter*", + "width": 150, + "sp": 1 + } + ] + } + ] + }, + { + "id": "shift", + "row": [ + { + "id": 1, + "key": [ + { + "id": "K_Q", + "text": "Q" + }, + { + "id": "K_W", + "text": "W" + }, + { + "id": "K_E", + "text": "E", + "sk": [ + { + "text": "Ɛ", + "id": "U_0190" + } + ] + }, + { + "id": "K_R", + "text": "R" + }, + { + "id": "K_T", + "text": "T" + }, + { + "id": "K_Y", + "text": "Y" + }, + { + "id": "K_U", + "text": "U" + }, + { + "id": "K_I", + "text": "I" + }, + { + "id": "K_O", + "text": "O", + "sk": [ + { + "text": "Ɔ", + "id": "U_0186" + } + ] + }, + { + "id": "K_P", + "text": "P" + } + ] + }, + { + "id": 2, + "key": [ + { + "id": "K_A", + "text": "A", + "pad": 50 + }, + { + "id": "K_S", + "text": "S" + }, + { + "id": "K_D", + "text": "D" + }, + { + "id": "K_F", + "text": "F" + }, + { + "id": "K_G", + "text": "G" + }, + { + "id": "K_H", + "text": "H" + }, + { + "id": "K_J", + "text": "J" + }, + { + "id": "K_K", + "text": "K" + }, + { + "id": "K_L", + "text": "L" + }, + { + "id": "T_new_124", + "text": "", + "width": 10, + "sp": 10 + } + ] + }, + { + "id": 3, + "key": [ + { + "id": "K_SHIFT", + "text": "*Shift*", + "sp": 2, + "nextlayer": "default" + }, + { + "id": "K_Z", + "text": "Z" + }, + { + "id": "K_X", + "text": "X" + }, + { + "id": "K_C", + "text": "C" + }, + { + "id": "K_V", + "text": "V" + }, + { + "id": "K_B", + "text": "B" + }, + { + "id": "K_N", + "text": "N" + }, + { + "id": "K_M", + "text": "M" + }, + { + "id": "K_PERIOD", + "text": ".", + "layer": "default", + "sk": [ + { + "text": ",", + "id": "K_COMMA", + "layer": "default" + }, + { + "text": "!", + "id": "K_1", + "layer": "shift" + }, + { + "text": "?", + "id": "K_SLASH", + "layer": "shift" + }, + { + "text": "'", + "id": "K_QUOTE", + "layer": "default" + }, + { + "text": "\"", + "id": "K_QUOTE", + "layer": "shift" + }, + { + "text": "\\", + "id": "K_BKSLASH", + "layer": "default" + }, + { + "text": ":", + "id": "K_COLON", + "layer": "shift" + }, + { + "text": ";", + "id": "K_COLON", + "layer": "default" + } + ] + }, + { + "id": "K_BKSP", + "text": "*BkSp*", + "sp": 1 + } + ] + }, + { + "id": 4, + "key": [ + { + "id": "K_NUMLOCK", + "text": "*123*", + "width": 150, + "sp": 1, + "nextlayer": "numeric" + }, + { + "id": "K_LOPT", + "text": "*Menu*", + "width": 120, + "sp": 1 + }, + { + "id": "K_SPACE", + "text": "", + "width": 610, + "sp": 0 + }, + { + "id": "K_ENTER", + "text": "*Enter*", + "width": 150, + "sp": 1 + } + ] + } + ] + }, + { + "id": "numeric", + "row": [ + { + "id": 1, + "key": [ + { + "id": "K_1", + "text": "1" + }, + { + "id": "K_2", + "text": "2" + }, + { + "id": "K_3", + "text": "3" + }, + { + "id": "K_4", + "text": "4" + }, + { + "id": "K_5", + "text": "5" + }, + { + "id": "K_6", + "text": "6" + }, + { + "id": "K_7", + "text": "7" + }, + { + "id": "K_8", + "text": "8" + }, + { + "id": "K_9", + "text": "9" + }, + { + "id": "K_0", + "text": "0" + } + ] + }, + { + "id": 2, + "key": [ + { + "id": "K_4", + "text": "$", + "pad": 50, + "layer": "shift" + }, + { + "id": "K_2", + "text": "@", + "layer": "shift" + }, + { + "id": "K_3", + "text": "#", + "layer": "shift" + }, + { + "id": "K_5", + "text": "%", + "layer": "shift" + }, + { + "id": "K_7", + "text": "&", + "layer": "shift" + }, + { + "id": "K_HYPHEN", + "text": "_", + "layer": "shift" + }, + { + "id": "K_EQUAL", + "text": "=", + "layer": "default" + }, + { + "id": "K_BKSLASH", + "text": "|", + "layer": "shift" + }, + { + "id": "K_BKSLASH", + "text": "\\", + "layer": "default" + }, + { + "id": "T_new_297", + "text": "", + "width": 10, + "sp": 10 + } + ] + }, + { + "id": 3, + "key": [ + { + "id": "K_LBRKT", + "text": "[", + "pad": 110, + "sk": [ + { + "id": "U_00AB", + "text": "«" + }, + { + "id": "K_COMMA", + "text": "<", + "layer": "shift" + }, + { + "id": "K_LBRKT", + "text": "{", + "layer": "shift" + } + ] + }, + { + "id": "K_9", + "text": "(", + "layer": "shift" + }, + { + "id": "K_0", + "text": ")", + "layer": "shift" + }, + { + "id": "K_RBRKT", + "text": "]", + "sk": [ + { + "id": "U_00BB", + "text": "»" + }, + { + "id": "K_PERIOD", + "text": ">", + "layer": "shift" + }, + { + "id": "K_RBRKT", + "text": "}", + "layer": "shift" + } + ] + }, + { + "id": "K_EQUAL", + "text": "+", + "layer": "shift" + }, + { + "id": "K_HYPHEN", + "text": "-" + }, + { + "id": "K_8", + "text": "*", + "layer": "shift" + }, + { + "id": "K_SLASH", + "text": "/" + }, + { + "id": "K_BKSP", + "text": "*BkSp*", + "width": 100, + "sp": 1 + } + ] + }, + { + "id": 4, + "key": [ + { + "id": "K_LOWER", + "text": "*abc*", + "width": 150, + "sp": 1, + "nextlayer": "default" + }, + { + "id": "K_LOPT", + "text": "*Menu*", + "width": 120, + "sp": 1 + }, + { + "id": "K_SPACE", + "text": "", + "width": 610, + "sp": 0 + }, + { + "id": "K_ENTER", + "text": "*Enter*", + "width": 150, + "sp": 1 + } + ] + } + ] + } + ] + } +} \ No newline at end of file diff --git a/Nyangatom Keyboard/source/Nyangatom.kmx b/Nyangatom Keyboard/source/Nyangatom.kmx new file mode 100644 index 0000000000000000000000000000000000000000..29604d3f50a21ef6e6dcea91f224f8b8bea7f65a GIT binary patch literal 550 zcmZvYK}$kG6orpMRxVsf8MFwCP-qdpXi)?al#4Ku(1lPNLCL^+@`}Q3i(Is6-9Hfe zMg5rSyW=HZ(1kPiJ7;F@JYJ*IZYeKaOg>*lWo)4qk?|3F2EHlqw<_5gE_?DpFF6-D zzv5hk7o5xRyz>_9BXkIFdVU30oO|$+^AJ8(qQ1I%VC|`_C*8mUs6jH;Eqiyk6Wk*j zD%OaekeN?(&y6^oiL|F})zFT1wI5h`{h1|2;f&?yykPUM!xzN7CQX^#(y7kq_3$k= zf5a + + + 18.0.249.0 + 7.0 + + + + readme.htm + ..\LICENSE.md + welcome.htm + + + + + + + + + + Nyangatom Keyboard + © SILEthiopia + Asnake Berhanu + This keyboard is a Yangatom language Keyboard and it is use for Phone + + + + + welcome.htm + + 0 + .htm + + + readme.htm + + 0 + .htm + + + ..\LICENSE.md + + 0 + .md + + + Nyangatom.kmn + File Nyangatom.kmn + 0 + .kmn + + + Nyangatom.kps + File Nyangatom.kps + 0 + .kps + + + Nyangatom.ico + File Nyangatom.ico + 0 + .ico + + + Nyangatom.kvks + File Nyangatom.kvks + 0 + .kvks + + + Nyangatom.png + File Nyangatom.png + 0 + .png + + + Nyangatom.js + File Nyangatom.js + 0 + .js + + + Nyangatom.kmx + Keyboard Nyangatom + 0 + .kmx + + + + + nyangatom + + Nyangatom + + + + + diff --git a/Nyangatom Keyboard/source/Nyangatom.kvks b/Nyangatom Keyboard/source/Nyangatom.kvks new file mode 100644 index 0000000000..00b21cb3c5 --- /dev/null +++ b/Nyangatom Keyboard/source/Nyangatom.kvks @@ -0,0 +1,8 @@ + + +
+ 10.0 + yangap_phone + +
+
diff --git a/Nyangatom Keyboard/source/Nyangatom.png b/Nyangatom Keyboard/source/Nyangatom.png new file mode 100644 index 0000000000000000000000000000000000000000..bc162f067858e26469cfb28039c7a0f923e215d0 GIT binary patch literal 24841 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 + +

+ This is a touch/mobile keyboard layout for the Nyangatom (Nyangatom) language. +

+ +

Touch Keyboard Layout

+

Open the keyboard on your mobile device to view the touch layout distribution.

+ + \ No newline at end of file diff --git a/Nyangatom Keyboard/source/nyangatom.kmn b/Nyangatom Keyboard/source/nyangatom.kmn new file mode 100644 index 0000000000..db22d70c57 --- /dev/null +++ b/Nyangatom Keyboard/source/nyangatom.kmn @@ -0,0 +1,19 @@ +c Nyangatom generated from template at 2025-09-23 23:56:28 +c with name "Nyangatom" +store(&VERSION) '10.0' +store(&NAME) 'Nyangatom' +store(©RIGHT) '© SIL Ethiopia' +store(&KEYBOARDVERSION) '1.0' +store(&TARGETS) 'any' + +group(main) using keys + +begin Unicode > use(main) +";" + "e" > "ɛ" +";" + "o" > "ɔ" +";" + "E" > "Ɛ" +";" + "O" > "Ɔ" +";" + "'" > "!" + + + diff --git a/Nyangatom Keyboard/source/readme.htm b/Nyangatom Keyboard/source/readme.htm new file mode 100644 index 0000000000..4459cefd86 --- /dev/null +++ b/Nyangatom Keyboard/source/readme.htm @@ -0,0 +1,24 @@ + + + + + + Yangap_phone + + + + +

Yangap_phone

+ +

+ This keyboard is a Yangatom language Keyboard and it is use for Phone +

+ +

© SIL Ethiopia

+ + + diff --git a/Nyangatom Keyboard/source/welcome.htm b/Nyangatom Keyboard/source/welcome.htm new file mode 100644 index 0000000000..f5ac7025bb --- /dev/null +++ b/Nyangatom Keyboard/source/welcome.htm @@ -0,0 +1,27 @@ + + + + + + Start Using Yangap_phone + + + + +

Start Using Yangap_phone

+ +

+ This keyboard is a Yangatom language Keyboard and it is use for Phone +

see this document for all the key combinations.

+ +

Keyboard Layout

+ + + + + + \ No newline at end of file diff --git a/Nyangatom Keyboard/yangap_phone.kpj.user b/Nyangatom Keyboard/yangap_phone.kpj.user new file mode 100644 index 0000000000..01e5408812 --- /dev/null +++ b/Nyangatom Keyboard/yangap_phone.kpj.user @@ -0,0 +1,112 @@ + + + + 3 + 1 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\yangap_phone.kpj + + + + + id_ede98e4633e239f933cbfd1f4e1b766c + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\HISTORY.md + + + id_718779752b851ac0dc6281a8c8d77e7e + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\LICENSE + + + id_53e892b8b41cc4caece1cfd5ef21d6e7 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\LICENSE.md + + + id_505044229e72b4688cb0bed66e5954b9 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\Nyangatom.kpj + + + id_608a3779f5b97418f561824ebab3c367 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\Nyangatom.kpj.user + + + id_0730bb7c2e8f9ea2438b52e419dd86c9 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\README.md + + + id_004dc1dad5edd32727cd3bd2314bbea6 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\yangap_phone.kpj + + + id_900876a35a2996c81c29e4e2cbd0087d + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\yangap_phone.kpj.user + + + id_fdd27e84a29cc79c375e66b8d8afe6ec + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\Nyangatom.ico + + + id_98b3afec8f4ebc5cee0380df4361f7fc + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\Nyangatom.keyman-touch-layout + + + id_5f380c1e558939edca9a00df92c23473 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\Nyangatom.kmn + False + + + id_2a3f9219045327e4d564c994d618fdae + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\Nyangatom.kps + + Consolas|-9| |0 + Consolas|-9| |0 + + + + id_5610184d66c8f3eb4266c789b892be4f + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\Nyangatom.kvks + + + id_8d87109b3bfd9a0bb30d5b801bb9243e + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\Nyangatom.png + + + id_8da344c4cea6f467013357fe099006f5 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\readme.htm + + + id_356e5d149c1e539356d72698c1e401a6 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\welcome.htm + + + id_f678f1226f19a480241735c7867eb8a9 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\yangap_phone.ico + + + id_c4a99d13a8b29c479c996e7766409c26 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\..\build\yangap_phone.kmx + + + id_45c81eac1ecf0545504543153992c9fb + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\..\build\yangap_phone.js + + + id_87f0848bfc1cdbdf1027c346716986fa + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\..\build\yangap_phone.kvk + + + id_c296b5df3dc126e219e0173fcbc1baec + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\..\LICENSE.md + + + id_8015a1accd2c6e2add79f263d40d4a13 + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\yangap_phoneU.png + + + + + id_MRU0 + Nyangatom.kps + .kps + C:\Users\Mesfin\Documents\Keyman Developer\Projects\Nyangatom Keyboard\source\Nyangatom.kps + + + From ec57fbe10a6649c0343d9fbb0161747e69d34c49 Mon Sep 17 00:00:00 2001 From: Asnake Berhanu Date: Tue, 21 Jul 2026 12:05:01 +0300 Subject: [PATCH 3/3] Rename project from 'yangap_phone' to 'Nyangatom' --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7d250c8525..67a8937d7e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# yangap_phone +# Nyangatom This is Neyangatom keyboard for Andriod