This is a keyboard layout (chwerty) for the Obolo language of Nigeria. This layout covers the need of every dialect in that language. + +
NOTE: This keyboard has been modified from the original for the purposes of +testing https://github.com/keymanapp/keyman/issues/6347. It is not intended to +be used for general purposes, and is not the final release version. Changes +made:
+ ++Obolo Chwerty Keyboard
+Rogers Katelem Edeh
+This is the Chwerty layout for writing Obolo language. In this keyboard, accents are typed after the base letters. +
+So, to type "usem Obolo" with this keyboard layout, simply tap the given letters and tap the appropriate accents to pace them on the letters. +
+
+
+
+The keyboard uses CHWERTY layout. +
+"Ebi Obolo" do not have 'C' and 'H' in their "abiche" (alphabet), but they have the 'CH' sound (as well as the 'SH' sound in some dialect).
+This and other features make Obolo Language unique, hence this unique layout.
+
+
+
+
+
+
Due to the size and number of keys, some characters are hidden in the long press. Press and hold on the key with a little dot on the top right to reveal and use them.
+
+
+
+
+
+
+
+ In this language, note that: +
(1) Only one tone mark can sit on a letter. So, diacritic stacking is not allowed. +
(2) Some tones are not to be marked in writing; they are not required. They are only used in primers and for beginners. +
(3) Some letters do not accept some accents. +
(4) Others do not accept accents at all. +
+Except for the optional accents which are not required, the keyboard will notify you when you inadvertently go against the spelling rules. +
+On mobile devices, tap the deadkey (⨷) then the given key to get the English letter in that position. +
+On desktop, if what you are doing does not support 'n̄' or does not render it well, then you can tap the BACKSLASH key after the 'n̄' to get 'ñ'. +
+The position of your BACKSLASH key depends on type of keyboard you are using. You can tell where your BACKSLASH key is by looking at the shape of the ENTER/RETURN key on your keyboard +
The three keyboard types and the respective position of the BACKSLASH keys are shown below: +
+
+
+
+
+
+
+Use this sentence to test your keyboard and character set: +
+mkpinyọn̄ kè evion̄ îben nchat balì ije bûu kire ǹnàan̄ iraka òsô mè ùkộ fiâm ikilap mudim m̀fọ̀tọ̀ shishini me èwê ozugbo +
+MKPINYỌN̄ KÈ EVION̄ ÎBEN NCHAT BALÌ IJE BÛU KIRE ǸNÀAN̄ IRAKA ÒSÔ MÈ ÙKỘ FIÂM IKILAP MUDIM M̀FỌ̀TỌ̀ SHISHINI ME ÈWÊ OZUGBO +
+Keyman ... type to the world in your language.
+
+Obolo Chwerty ... ge inu me usem kwun̄ ria si ere geelek me linyọn̄.
+
Onirọ-o! +
Itọn̄ ikup inyi Awaji!
+
+
diff --git a/common/test/keyboards/obolo_chwerty_6351/HISTORY.md b/common/test/keyboards/obolo_chwerty_6351/HISTORY.md
new file mode 100644
index 0000000000..e4b8b51ee0
--- /dev/null
+++ b/common/test/keyboards/obolo_chwerty_6351/HISTORY.md
@@ -0,0 +1,36 @@
+Obolo Chwerty Keyboard Change History
+====================
+
+1.2.1 (2021-11-23)
+----------------
+* Removed accent key from numbers row on default layer, and from symbols row on shift layer.
+
+1.2.0 (2021-07-05)
+----------------
+* Updated keycap for key 6 to match output on mobile shift layer, and added longpress for ^
+* Activated spacebar on layer alt for mobile/tablet layout
+* Updated documentation
+* Miscellaneous minor updates
+
+1.1.2 (2021-02-04)
+----------------
+* Updated output for keys CH and SH on SHIFT layer to match key cap on touchscreen and desktop.
+* Resolved capslock issue for keys CH, SH, Ọ and N̄ on desktop.
+* Added long press on touchscreen for frequently used accented letters.
+* Added the Naira sign (₦) and Ñ (an alternative where software cannot render N̄ well, though Ñ is not part of the Obolo orthography.)
+
+1.1.1 (2020-10-27)
+----------------
+* Increment version number to force recompile of touch layout
+
+1.1 (2020-07-07)
+----------------
+* Moved the high tone (which is not required, except in primers) to long press on low tone button (for touchscreen).
+* Changed backspace behavior for ch, sh, n̄.
+* Added long press for Q, H, X and C keys on touchscreen.
+* Added hyphen-dash (a frequently used mark) to default and shift layers for touchscreen.
+* Fixed typo and omissions in documentation.
+
+1.0 (2019-07-20)
+----------------
+* Created by Rogers Katelem Edeh
diff --git a/common/test/keyboards/obolo_chwerty_6351/LICENSE.md b/common/test/keyboards/obolo_chwerty_6351/LICENSE.md
new file mode 100644
index 0000000000..eee2ba508b
--- /dev/null
+++ b/common/test/keyboards/obolo_chwerty_6351/LICENSE.md
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+© 2019 - 2021 Rogers Katelem Edeh
+
+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/common/test/keyboards/obolo_chwerty_6351/README.md b/common/test/keyboards/obolo_chwerty_6351/README.md
new file mode 100644
index 0000000000..2c5fe9b38d
--- /dev/null
+++ b/common/test/keyboards/obolo_chwerty_6351/README.md
@@ -0,0 +1,37 @@
+Obolo Chwerty keyboard
+==============
+
+© 2019 - 2021 Rogers Katelem Edeh
+
+Version 1.2.0
+
+Description
+-----------
+
+NOTE: This keyboard has been modified from the original for the purposes of testing https://github.com/keymanapp/keyman/issues/6351. It is not intended to be used for general purposes, and is not the final release version. Changes made:
+
+* NCAPS mismatches have been resolved
+* Files renamed
+* Font and PHP help have been removed (reduce distribution size)
+
+Obolo Chwerty Keyboard is a keyboard layout for the Obolo language of Nigeria. This layout covers the need of every dialect in that language.
+On this keyboard, accents are typed after the base letters. So, to type Obolo language, simply tap the given latters and tap the appropriate accent key to place the accent on the letter.
+
+Links
+-----
+https://keyman.com/keyboards/obolo_chwerty
+
+Supported Platforms
+-------------------
+ * Windows
+ * macOS
+ * Linux
+ * Web
+ * iPhone
+ * iPad
+ * Android phone
+ * Android tablet
+ * Mobile devices
+ * Desktop devices
+ * Tablet devices
+
diff --git a/common/test/keyboards/obolo_chwerty_6351/obolo_chwerty_6351.keyboard_info b/common/test/keyboards/obolo_chwerty_6351/obolo_chwerty_6351.keyboard_info
new file mode 100644
index 0000000000..1513b8bb47
--- /dev/null
+++ b/common/test/keyboards/obolo_chwerty_6351/obolo_chwerty_6351.keyboard_info
@@ -0,0 +1,7 @@
+{
+ "license": "mit",
+ "languages": [
+ "ann-Latn"
+ ],
+ "description": "Obolo Chwerty Keyboard: A keyboard layout for the Obolo language of Nigeria. It covers the need of every dialect in that language"
+}
diff --git a/common/test/keyboards/obolo_chwerty_6351/obolo_chwerty_6351.kpj b/common/test/keyboards/obolo_chwerty_6351/obolo_chwerty_6351.kpj
new file mode 100644
index 0000000000..7f076c964a
--- /dev/null
+++ b/common/test/keyboards/obolo_chwerty_6351/obolo_chwerty_6351.kpj
@@ -0,0 +1,183 @@
+
+
This is a keyboard layout (chwerty) for the Obolo language of Nigeria. This layout covers the need of every dialect in that language. + +
NOTE: This keyboard has been modified from the original for the purposes of +testing https://github.com/keymanapp/keyman/issues/6351. It is not intended to +be used for general purposes, and is not the final release version. Changes +made:
+ ++Obolo Chwerty Keyboard
+Rogers Katelem Edeh
+This is the Chwerty layout for writing Obolo language. In this keyboard, accents are typed after the base letters. +
+So, to type "usem Obolo" with this keyboard layout, simply tap the given letters and tap the appropriate accents to pace them on the letters. +
+
+
+
+The keyboard uses CHWERTY layout. +
+"Ebi Obolo" do not have 'C' and 'H' in their "abiche" (alphabet), but they have the 'CH' sound (as well as the 'SH' sound in some dialect).
+This and other features make Obolo Language unique, hence this unique layout.
+
+
+
+
+
+
Due to the size and number of keys, some characters are hidden in the long press. Press and hold on the key with a little dot on the top right to reveal and use them.
+
+
+
+
+
+
+
+ In this language, note that: +
(1) Only one tone mark can sit on a letter. So, diacritic stacking is not allowed. +
(2) Some tones are not to be marked in writing; they are not required. They are only used in primers and for beginners. +
(3) Some letters do not accept some accents. +
(4) Others do not accept accents at all. +
+Except for the optional accents which are not required, the keyboard will notify you when you inadvertently go against the spelling rules. +
+On mobile devices, tap the deadkey (⨷) then the given key to get the English letter in that position. +
+On desktop, if what you are doing does not support 'n̄' or does not render it well, then you can tap the BACKSLASH key after the 'n̄' to get 'ñ'. +
+The position of your BACKSLASH key depends on type of keyboard you are using. You can tell where your BACKSLASH key is by looking at the shape of the ENTER/RETURN key on your keyboard +
The three keyboard types and the respective position of the BACKSLASH keys are shown below: +
+
+
+
+
+
+
+Use this sentence to test your keyboard and character set: +
+mkpinyọn̄ kè evion̄ îben nchat balì ije bûu kire ǹnàan̄ iraka òsô mè ùkộ fiâm ikilap mudim m̀fọ̀tọ̀ shishini me èwê ozugbo +
+MKPINYỌN̄ KÈ EVION̄ ÎBEN NCHAT BALÌ IJE BÛU KIRE ǸNÀAN̄ IRAKA ÒSÔ MÈ ÙKỘ FIÂM IKILAP MUDIM M̀FỌ̀TỌ̀ SHISHINI ME ÈWÊ OZUGBO +
+Keyman ... type to the world in your language.
+
+Obolo Chwerty ... ge inu me usem kwun̄ ria si ere geelek me linyọn̄.
+
Onirọ-o! +
Itọn̄ ikup inyi Awaji!
+
+
diff --git a/common/test/keyboards/the_99/README.md b/common/test/keyboards/the_99/README.md
new file mode 100644
index 0000000000..4479efe738
--- /dev/null
+++ b/common/test/keyboards/the_99/README.md
@@ -0,0 +1,34 @@
+the 99 keyboard
+==============
+
+Version 1.0
+
+Description
+-----------
+the 99 generated from template. kmp.json manually edited to have system.fileVersion = "99.0"
+to validate the minimum keyboard version is checked before package installation.
+
+Links
+-----
+See Github issue #6254
+https://github.com/keymanapp/keyman/issues/6254
+
+
+Copyright
+---------
+See [LICENSE.md](LICENSE.md)
+
+Supported Platforms
+-------------------
+ * Windows
+ * macOS
+ * Linux
+ * Web
+ * iPhone
+ * iPad
+ * Android phone
+ * Android tablet
+ * Mobile devices
+ * Desktop devices
+ * Tablet devices
+
diff --git a/common/test/keyboards/the_99/build.sh b/common/test/keyboards/the_99/build.sh
new file mode 100755
index 0000000000..8ea4680ada
--- /dev/null
+++ b/common/test/keyboards/the_99/build.sh
@@ -0,0 +1,63 @@
+#!/usr/bin/env bash
+
+set -e
+set -u
+
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null || readlink -f "${BASH_SOURCE[0]}")"
+. "$(dirname "$THIS_SCRIPT")/../../../../resources/build/build-utils.sh"
+# . "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+THIS_DIR="$(dirname "$THIS_SCRIPT")"
+
+display_usage() {
+ echo "Usage: build.sh [-c]"
+ exit $1
+}
+
+# Parse args
+shopt -s nocasematch
+
+CLEAN=false
+DEBUG=false
+QUIET=false
+KEYBOARDS_ONLY=false
+
+while [[ $# -gt 0 ]] ; do
+ key="$1"
+ case $key in
+ --help|-h|-\?)
+ display_usage 0
+ ;;
+ --clean|-c)
+ CLEAN=true
+ ;;
+ --debug|-d)
+ DEBUG=true
+ ;;
+ --silent|-s)
+ QUIET=true
+ ;;
+ --keyboard|-k)
+ KEYBOARDS_ONLY=true
+ ;;
+ *)
+ display_usage 1
+ ;;
+ esac
+ shift
+done
+
+if $CLEAN; then
+ if ! $QUIET; then
+ echo Cleaning the_99.kmp from build/
+ fi
+ rm -rf "$THIS_DIR"/build
+else
+ if ! $QUIET; then
+ echo Copying the_99.kmp to build/
+ fi
+ mkdir -p "$THIS_DIR"/build
+ cp "$THIS_DIR"/the_99.kmp build/the_99.kmp
+fi
\ No newline at end of file
diff --git a/common/test/keyboards/the_99/the_99.kmp b/common/test/keyboards/the_99/the_99.kmp
new file mode 100644
index 0000000000..f634601670
Binary files /dev/null and b/common/test/keyboards/the_99/the_99.kmp differ
diff --git a/developer/js/package-lock.json b/developer/js/package-lock.json
index e9f86e6d49..7c5242c7ad 100644
--- a/developer/js/package-lock.json
+++ b/developer/js/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "@keymanapp/lexical-model-compiler",
- "version": "15.0.211",
+ "version": "15.0.216",
"lockfileVersion": 2,
"requires": true,
"packages": {
diff --git a/developer/js/package.json b/developer/js/package.json
index d6110c62dd..feb257b144 100644
--- a/developer/js/package.json
+++ b/developer/js/package.json
@@ -1,6 +1,6 @@
{
"name": "@keymanapp/lexical-model-compiler",
- "version": "15.0.211",
+ "version": "15.0.216",
"description": "Keyman Developer lexical model compiler",
"keywords": [
"keyboard",
@@ -37,14 +37,14 @@
"node": ">=12.0.0"
},
"dependencies": {
- "@keymanapp/models-types": "^15.0.211",
+ "@keymanapp/models-types": "^15.0.216",
"commander": "^3.0.0",
"typescript": "^3.8.3",
"xml2js": "^0.4.19"
},
"devDependencies": {
- "@keymanapp/models-templates": "^15.0.211",
- "@keymanapp/models-wordbreakers": "^15.0.211",
+ "@keymanapp/models-templates": "^15.0.216",
+ "@keymanapp/models-wordbreakers": "^15.0.216",
"@types/chai": "^4.1.7",
"@types/mocha": "^5.2.7",
"@types/node": "^10.14.6",
diff --git a/developer/server/package-lock.json b/developer/server/package-lock.json
index 85e02f8f68..d446541e4f 100644
--- a/developer/server/package-lock.json
+++ b/developer/server/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "@keymanapp/developer-server",
- "version": "15.0.211",
+ "version": "15.0.216",
"lockfileVersion": 2,
"requires": true,
"packages": {
diff --git a/developer/server/package.json b/developer/server/package.json
index 09eca855d5..aa88108be2 100644
--- a/developer/server/package.json
+++ b/developer/server/package.json
@@ -1,6 +1,6 @@
{
"name": "@keymanapp/developer-server",
- "version": "15.0.211",
+ "version": "15.0.216",
"description": "Keyman Developer backend server",
"main": "dist/index.js",
"scripts": {
diff --git a/ios/engine/KMEI/KeymanEngine/Classes/Keyboard/InputViewController.swift b/ios/engine/KMEI/KeymanEngine/Classes/Keyboard/InputViewController.swift
index 031bb9daab..ec7807110f 100644
--- a/ios/engine/KMEI/KeymanEngine/Classes/Keyboard/InputViewController.swift
+++ b/ios/engine/KMEI/KeymanEngine/Classes/Keyboard/InputViewController.swift
@@ -287,7 +287,7 @@ open class InputViewController: UIInputViewController, KeymanWebDelegate {
return
}
- // What the actual heck, Apple. Apparently, in system-keyboard mode, this is also self-triggered if we erase back to a newline.
+ // Apparently, in system-keyboard mode, this is also self-triggered if we erase back to a newline.
// Refer to https://github.com/keymanapp/keyman/pull/2770 for context.
if self.swallowBackspaceTextChange && Manager.shared.isSystemKeyboard && textDocumentProxy.documentContextBeforeInput == "\n" {
self.swallowBackspaceTextChange = false
@@ -333,6 +333,11 @@ open class InputViewController: UIInputViewController, KeymanWebDelegate {
return
}
+ if numCharsToDelete > 0 && textDocumentProxy.documentContextBeforeInput == nil {
+ textDocumentProxy.deleteBackward()
+ return
+ }
+
for _ in 0..