diff --git a/HISTORY.md b/HISTORY.md index a9a8505d7a..37318fe7f2 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -213,6 +213,23 @@ * chore: prepare 15.0 alpha (#4129) +## 14.0.243 beta 2021-02-12 + +* change(ios/app): Generate offline help from markdown (#4470) +* fix(windows): tsysinfox64 not signed (#4486) +* chore(android/app): Update help formatting and images (#4485) +* fix(android/engine): Display welcome.htm help within the app (#4477) +* fix(ios): tutorial's link to "Add a Keyboard" links directly to keyboard search (#4491) +* feat(linux): Improve output of km-package-list-installed (#4481) + +## 14.0.242 beta 2021-02-11 + +* fix(android/engine): Display online keyboard help (#4462) +* fix(windows): Track modifier changes in UWP apps (#4468) +* fix(common/resources): Fix help.keyman.com path for commit (#4469) +* fix(common): create GitHub comments serially (#4472) +* fix(linux): Fix dependencies on packages (#4464) + ## 14.0.241 beta 2021-02-10 * fix(common/resources): Just use master branch for help.keyman.com (#4459) diff --git a/VERSION.md b/VERSION.md index e63595d7c0..2c81c0f477 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -15.0.17 \ No newline at end of file +15.0.17 diff --git a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeyboardSettingsActivity.java b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeyboardSettingsActivity.java index 2d0b9bbc25..6094dab1b2 100644 --- a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeyboardSettingsActivity.java +++ b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeyboardSettingsActivity.java @@ -1,9 +1,8 @@ /* - * Copyright (C) 2019 SIL International. All rights reserved. + * Copyright (C) 2019-2021 SIL International. All rights reserved. */ package com.tavultesoft.kmapro; -import java.io.File; import java.util.ArrayList; import java.util.HashMap; @@ -11,18 +10,14 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import android.app.DialogFragment; -import android.app.DownloadManager; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Typeface; import android.net.Uri; import android.os.Bundle; -import androidx.core.content.FileProvider; -import android.util.Log; import android.view.View; -import android.view.ViewGroup; import android.view.Window; import android.widget.AdapterView; import android.widget.ImageView; @@ -31,21 +26,14 @@ import android.widget.ListAdapter; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; -import android.widget.Toast; import com.tavultesoft.kmea.ConfirmDialogFragment; +import com.tavultesoft.kmea.KMHelpFileActivity; import com.tavultesoft.kmea.KMManager; import com.tavultesoft.kmea.KMKeyboardDownloaderActivity; -import com.tavultesoft.kmea.cloud.CloudApiTypes; -import com.tavultesoft.kmea.cloud.CloudDownloadMgr; -import com.tavultesoft.kmea.cloud.impl.CloudKeyboardPackageDownloadCallback; -import com.tavultesoft.kmea.cloud.impl.CloudLexicalPackageDownloadCallback; -import com.tavultesoft.kmea.data.CloudRepository; -import com.tavultesoft.kmea.data.Dataset; import com.tavultesoft.kmea.data.Keyboard; import com.tavultesoft.kmea.util.FileUtils; import com.tavultesoft.kmea.util.FileProviderUtils; -import com.tavultesoft.kmea.util.HelpFile; import com.tavultesoft.kmea.util.KMLog; import com.tavultesoft.kmea.util.MapCompat; import com.tavultesoft.kmea.util.QRCodeUtil; @@ -177,11 +165,11 @@ public final class KeyboardSettingsActivity extends AppCompatActivity { } else if (itemTitle.equals(getString(R.string.help_link))) { if (FileUtils.isWelcomeFile(customHelpLink)) { // Display local welcome.htm help file, including associated assets - Intent i = HelpFile.toActionView(context, customHelpLink, packageID); - - if (FileProviderUtils.exists(context) || KMManager.isTestMode()) { - startActivity(i); - } + Intent i = new Intent(context, KMHelpFileActivity.class); + // Have to use package ID since we don't store the package name + i.putExtra(KMManager.KMKey_PackageID, packageID); + i.putExtra(KMManager.KMKey_CustomHelpLink, customHelpLink); + startActivity(i); } else { Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(customHelpLink)); diff --git a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java index 7019af1c94..15200b4bb1 100644 --- a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java +++ b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java @@ -18,6 +18,7 @@ import java.util.List; import java.util.Map; import com.tavultesoft.kmea.BaseActivity; +import com.tavultesoft.kmea.KMHelpFileActivity; import com.tavultesoft.kmea.KMKeyboardDownloaderActivity; import com.tavultesoft.kmea.KMManager; import com.tavultesoft.kmea.KMManager.KeyboardType; @@ -35,7 +36,6 @@ import com.tavultesoft.kmea.util.FileProviderUtils; import com.tavultesoft.kmea.util.FileUtils; import com.tavultesoft.kmea.util.DownloadFileUtils; import com.tavultesoft.kmea.util.DownloadIntentService; -import com.tavultesoft.kmea.util.HelpFile; import com.tavultesoft.kmea.util.KMLog; import com.tavultesoft.kmea.util.KMPLink; @@ -967,11 +967,11 @@ public class MainActivity extends BaseActivity implements OnKeyboardEventListene if (customHelpLink != null && !customHelpLink.isEmpty() && packageID != null && !packageID.isEmpty() && FileUtils.isWelcomeFile(customHelpLink)) { // Display local welcome.htm help file, including associated assets - Intent i = HelpFile.toActionView(context, customHelpLink, packageID); - - if (FileProviderUtils.exists(context)) { - startActivity(i); - } + Intent i = new Intent(this, KMHelpFileActivity.class); + // Have to use packageID since we don't store the package name + i.putExtra(KMManager.KMKey_PackageID, packageID); + i.putExtra(KMManager.KMKey_CustomHelpLink, customHelpLink); + startActivity(i); } } diff --git a/android/KMAPro/kMAPro/src/main/res/values-ann/strings.xml b/android/KMAPro/kMAPro/src/main/res/values-ann/strings.xml index 1ba8da1447..163349f5fe 100644 --- a/android/KMAPro/kMAPro/src/main/res/values-ann/strings.xml +++ b/android/KMAPro/kMAPro/src/main/res/values-ann/strings.xml @@ -105,8 +105,6 @@ Kpekọt isan̄a isibi Wop Uwot-nge - - Onu me %1$s Wop Ikpa-usem diff --git a/android/KMAPro/kMAPro/src/main/res/values-de-rDE/strings.xml b/android/KMAPro/kMAPro/src/main/res/values-de-rDE/strings.xml index 71767f4fa8..6fae23d0b9 100644 --- a/android/KMAPro/kMAPro/src/main/res/values-de-rDE/strings.xml +++ b/android/KMAPro/kMAPro/src/main/res/values-de-rDE/strings.xml @@ -105,8 +105,6 @@ Entpacken fehlgeschlagen Tastatur installieren - - Willkommen bei %1$s Wörterbuch installieren diff --git a/android/KMAPro/kMAPro/src/main/res/values-fr-rFR/strings.xml b/android/KMAPro/kMAPro/src/main/res/values-fr-rFR/strings.xml index e1c788b4e8..106dbc741c 100644 --- a/android/KMAPro/kMAPro/src/main/res/values-fr-rFR/strings.xml +++ b/android/KMAPro/kMAPro/src/main/res/values-fr-rFR/strings.xml @@ -107,8 +107,6 @@ Échec de l\'extraction Installer un clavier - - Bienvenue à %1$s Installez un dictionnaire diff --git a/android/KMAPro/kMAPro/src/main/res/values-km-rKH/strings.xml b/android/KMAPro/kMAPro/src/main/res/values-km-rKH/strings.xml index e3a757c63b..2baba5b78f 100644 --- a/android/KMAPro/kMAPro/src/main/res/values-km-rKH/strings.xml +++ b/android/KMAPro/kMAPro/src/main/res/values-km-rKH/strings.xml @@ -104,8 +104,6 @@ មិន​អាច​ស្រង់​ចេញបាន​ទេ ដំឡើង​ក្ដារចុច - - ស្វាគមន៍​មកកាន់ %1$s ដំឡើង​បញ្ជី​ពាក្យ diff --git a/android/KMAPro/kMAPro/src/main/res/values/strings.xml b/android/KMAPro/kMAPro/src/main/res/values/strings.xml index 1285c9f2e7..772d3f0589 100644 --- a/android/KMAPro/kMAPro/src/main/res/values/strings.xml +++ b/android/KMAPro/kMAPro/src/main/res/values/strings.xml @@ -174,9 +174,6 @@ Install Keyboard - - Welcome to %1$s - Install Dictionary diff --git a/android/KMEA/app/src/main/AndroidManifest.xml b/android/KMEA/app/src/main/AndroidManifest.xml index aab539f437..fe795afa30 100644 --- a/android/KMEA/app/src/main/AndroidManifest.xml +++ b/android/KMEA/app/src/main/AndroidManifest.xml @@ -29,6 +29,12 @@ android:label="" android:theme="@style/Theme.AppCompat.Light.Dialog"> + + + + + + + + + + + + + + + + + + diff --git a/android/KMAPro/kMAPro/src/main/res/layout/titlebar.xml b/android/KMEA/app/src/main/res/layout/titlebar.xml similarity index 100% rename from android/KMAPro/kMAPro/src/main/res/layout/titlebar.xml rename to android/KMEA/app/src/main/res/layout/titlebar.xml diff --git a/android/KMEA/app/src/main/res/values-ann/strings.xml b/android/KMEA/app/src/main/res/values-ann/strings.xml index 5a73b08c3d..11c7ba2c31 100644 --- a/android/KMEA/app/src/main/res/values-ann/strings.xml +++ b/android/KMEA/app/src/main/res/values-ann/strings.xml @@ -63,6 +63,8 @@ [aya] %1$s Gwuku iman̄ yi kè òbọkọ\nuwot-nge yi me ofifi okwukwut + + Onu me %1$s Wèek ikpa-usem òje me lek bọkọ tap diff --git a/android/KMEA/app/src/main/res/values-de-rDE/strings.xml b/android/KMEA/app/src/main/res/values-de-rDE/strings.xml index b9a06bd466..452d732bf2 100644 --- a/android/KMEA/app/src/main/res/values-de-rDE/strings.xml +++ b/android/KMEA/app/src/main/res/values-de-rDE/strings.xml @@ -63,6 +63,8 @@ [neu] %1$s Scannen Sie diesen Code, um diese\nTastatur auf einem anderen Gerät zu laden + + Willkommen bei %1$s Suche nach zugehörigem Wörterbuch zum Herunterladen diff --git a/android/KMEA/app/src/main/res/values-fr-rFR/strings.xml b/android/KMEA/app/src/main/res/values-fr-rFR/strings.xml index b5d6816e82..58e4805793 100644 --- a/android/KMEA/app/src/main/res/values-fr-rFR/strings.xml +++ b/android/KMEA/app/src/main/res/values-fr-rFR/strings.xml @@ -63,6 +63,8 @@ [nouveau] %1$s Scannez ce code pour charger ce clavier\nsur un autre appareil + + Bienvenue à %1$s Vérification du dictionnaire associé à télécharger diff --git a/android/KMEA/app/src/main/res/values-km-rKH/strings.xml b/android/KMEA/app/src/main/res/values-km-rKH/strings.xml index 42a7a39dfc..f6b833b134 100644 --- a/android/KMEA/app/src/main/res/values-km-rKH/strings.xml +++ b/android/KMEA/app/src/main/res/values-km-rKH/strings.xml @@ -60,6 +60,8 @@ លុប​ក្ដារចុច [ថ្មី] %1$s + + ស្វាគមន៍​មកកាន់ %1$s ស្កេនកូដ​នេះដើម្បី​ផ្ទុក​ក្ដារចុចនេះ\n​នៅ​លើ​ឧបករណ៍​ផ្សេង diff --git a/android/KMEA/app/src/main/res/values/strings.xml b/android/KMEA/app/src/main/res/values/strings.xml index 43c626951f..982a3cc79b 100644 --- a/android/KMEA/app/src/main/res/values/strings.xml +++ b/android/KMEA/app/src/main/res/values/strings.xml @@ -102,6 +102,11 @@ Scan this code to load this\nkeyboard on another device + + + Welcome to %1$s + + Checking for associated dictionary to download diff --git a/android/KMEA/app/src/test/java/com/tavultesoft/kmea/view/KeyboardPickerTest.java b/android/KMEA/app/src/test/java/com/tavultesoft/kmea/view/KeyboardPickerTest.java index 21fcec27cc..e0e23b58ed 100644 --- a/android/KMEA/app/src/test/java/com/tavultesoft/kmea/view/KeyboardPickerTest.java +++ b/android/KMEA/app/src/test/java/com/tavultesoft/kmea/view/KeyboardPickerTest.java @@ -9,6 +9,7 @@ import android.widget.ListView; import androidx.test.core.app.ApplicationProvider; import com.tavultesoft.kmea.KMManager; +import com.tavultesoft.kmea.KMHelpFileActivity; import com.tavultesoft.kmea.KeyboardInfoActivity; import com.tavultesoft.kmea.KeyboardPickerActivity; import com.tavultesoft.kmea.R; @@ -183,7 +184,7 @@ public class KeyboardPickerTest { // check result intent to be a weblink to open Intent actual2 = Shadows.shadowOf(_info).getNextStartedActivity(); Assert.assertNotNull(actual2); - Assert.assertEquals(actual2.getAction(),Intent.ACTION_VIEW); + Assert.assertEquals("com.tavultesoft.kmea.KMHelpFileActivity", actual2.getComponent().getClassName()); } finally { if(_controller2!=null) diff --git a/android/README.md b/android/README.md index a1e5b6703b..c1af6669ee 100644 --- a/android/README.md +++ b/android/README.md @@ -4,6 +4,7 @@ * Android Studio 4.1+ * Java SE Development Kit 8 * [Node.js](https://nodejs.org/) 8.9+ (for building KeymanWeb) +* [Pandoc](#Install-Pandoc) for generating offline help ## Install Java It is recommended to use openJDK because of oracle license issues. diff --git a/android/build-help.sh b/android/build-help.sh index 91e6eb5c18..02e236e903 100644 --- a/android/build-help.sh +++ b/android/build-help.sh @@ -71,7 +71,7 @@ displayInfo "" \ cd $KEYMAN_ROOT/android/help -MDLUA="$THIS_DIR/htmlink.lua" +MDLUA="$KEYMAN_ROOT/resources/build/htmlink.lua" MD=`find -name "*.md"` DESTHTM="$THIS_DIR/KMAPro/kMAPro/src/main/assets/info" diff --git a/android/help/android_images/dist-readme-ap.png b/android/help/android_images/dist-readme-ap.png deleted file mode 100644 index 1a8d116863..0000000000 Binary files a/android/help/android_images/dist-readme-ap.png and /dev/null differ diff --git a/android/help/android_images/dist-readme-at.png b/android/help/android_images/dist-readme-at.png deleted file mode 100644 index d6af1b5c84..0000000000 Binary files a/android/help/android_images/dist-readme-at.png and /dev/null differ diff --git a/android/help/android_images/dist-welcome-ap.png b/android/help/android_images/dist-welcome-ap.png deleted file mode 100644 index 8d753979b1..0000000000 Binary files a/android/help/android_images/dist-welcome-ap.png and /dev/null differ diff --git a/android/help/android_images/dist-welcome-at.png b/android/help/android_images/dist-welcome-at.png deleted file mode 100644 index 9ef2ce4b37..0000000000 Binary files a/android/help/android_images/dist-welcome-at.png and /dev/null differ diff --git a/android/help/android_images/dl-success-ap.png b/android/help/android_images/dl-success-ap.png index 847ba5e4ee..a8ba037415 100644 Binary files a/android/help/android_images/dl-success-ap.png and b/android/help/android_images/dl-success-ap.png differ diff --git a/android/help/android_images/dl-success-at.png b/android/help/android_images/dl-success-at.png deleted file mode 100644 index d47af615e8..0000000000 Binary files a/android/help/android_images/dl-success-at.png and /dev/null differ diff --git a/android/help/android_images/khmer-readme-a.png b/android/help/android_images/khmer-readme-a.png index 3d6d1799df..6ed6c1ae72 100644 Binary files a/android/help/android_images/khmer-readme-a.png and b/android/help/android_images/khmer-readme-a.png differ diff --git a/android/help/android_images/khmer-welcome-a.png b/android/help/android_images/khmer-welcome-a.png index faeeff79e1..63db0dc29c 100644 Binary files a/android/help/android_images/khmer-welcome-a.png and b/android/help/android_images/khmer-welcome-a.png differ diff --git a/android/help/android_images/settings-language-ap.png b/android/help/android_images/settings-language-ap.png index c8c678d94e..fdb386571a 100644 Binary files a/android/help/android_images/settings-language-ap.png and b/android/help/android_images/settings-language-ap.png differ diff --git a/android/help/basic/installing-custom-packages.md b/android/help/basic/installing-custom-packages.md index 9b3ab55400..dc2971db99 100644 --- a/android/help/basic/installing-custom-packages.md +++ b/android/help/basic/installing-custom-packages.md @@ -42,7 +42,7 @@ This will be displayed at the confirmation to install the keyboard package. If "readme.htm" is not included, a generic page with the package ID and package version will be shown. Click the **"Install"** button to install the entire keyboard package. -![](../android_images/dist-readme-ap.png) +![](../android_images/khmer-readme-a.png) Step 5) All the keyboards in the package are installed as a group. In this example, the package only has the "Khmer Angkor" keyboard, so it becomes the active keyboard. For custom dictionary packages, only one dictionary @@ -51,7 +51,7 @@ will be installed. If the keyboard package includes Welcome documentation, it will be displayed after the keyboard package is installed. This documentation helps you to get started using the keyboard. -![](../android_images/dist-welcome-ap.png) +![](../android_images/khmer-welcome-a.png) Click the **"OK"** button to finish installing the keyboard. You should be able to select it from the Keyman globe and start typing with it in any app. diff --git a/android/help/context/menu-phone.md b/android/help/context/menu-phone.md index 2288644cbb..6db638c3d8 100644 --- a/android/help/context/menu-phone.md +++ b/android/help/context/menu-phone.md @@ -2,7 +2,7 @@ title: Keyman for Android (Phone Layout) --- -| | Keyboard Keys (Keyboard Present) | +| | Keyboard Keys
(Keyboard Present) | |---|---| | ![](../android_images/globe-ap.png) | Select another language/keyboard | | ![](../android_images/hide-keyboard-ap.png) | Hide the keyboard | @@ -11,6 +11,11 @@ title: Keyman for Android (Phone Layout) | ![](../android_images/shift-ap.png) | Shift key. Long press this key to access the CTRL, ALT and CTRLALT keys (which can access additional key layers) | | ![](../android_images/touch-hold-ap.png) | Keys with a small dot in the top right corner indicate a long press key. Access further functionality by long pressing the key | | ![](../android_images/share-a.png) | Share your text with other apps like Messages, Gmail, or Twitter. Some versions of Android also let you copy your text to the clipboard. | + +---- + +| | Toolbar Icons +|---|---| | ![](../android_images/browser-a.png) | Open the Keyman Browser to use the web in your language | | ![](../android_images/menu-icon-a.png) | Open the menu for additional options | | ![](../android_images/font-size-a.png) | Adjust the font size | diff --git a/android/help/context/menu-tablet.md b/android/help/context/menu-tablet.md index 30c46c8f05..cebf6bfda1 100644 --- a/android/help/context/menu-tablet.md +++ b/android/help/context/menu-tablet.md @@ -2,7 +2,7 @@ title: Keyman for Android (Tablet Layout) --- -| | Keyboard Keys (Keyboard Present) | +| | Keyboard Keys
(Keyboard Present) | |---|---| | ![](../android_images/globe-at.png) | Select another language/keyboard | | ![](../android_images/hide-keyboard-at.png) | Hide the keyboard | @@ -10,6 +10,11 @@ title: Keyman for Android (Tablet Layout) | ![](../android_images/return-at.png) | Return | | ![](../android_images/shift-at.png) | Shift key. Long press this key to access the CTRL, ALT and CTRLALT keys (which can access additional key layers) | | ![](../android_images/touch-hold-at.png) | Keys with a small dot in the top right corner indicate a long press key. Access further functionality by long pressing the key | + +---- + +| | Toolbar Icons +|---|---| | ![](../android_images/share-a.png) | Share your text with other atps like Messages, Gmail, or Twitter. Some versions of Android also let you copy your text to the clipboard. | | ![](../android_images/browser-a.png) | Open the Keyman Browser to use the web in your language | | ![](../android_images/menu-icon-a.png) | Open the menu for additional options | diff --git a/common/core/web/keyboard-processor/src/text/outputTarget.ts b/common/core/web/keyboard-processor/src/text/outputTarget.ts index 87c0382ab6..64c12ea5cf 100644 --- a/common/core/web/keyboard-processor/src/text/outputTarget.ts +++ b/common/core/web/keyboard-processor/src/text/outputTarget.ts @@ -288,7 +288,8 @@ namespace com.keyman.text { this.text = text ? text : ""; var defaultLength = this.text._kmwLength(); - this.caretIndex = caretPos ? caretPos : defaultLength; + // Ensures that `caretPos == 0` is handled correctly. + this.caretIndex = typeof caretPos == "number" ? caretPos : defaultLength; } // Clones the state of an existing EditableElement, creating a Mock version of its state. diff --git a/ios/.gitignore b/ios/.gitignore index 2f451173f7..ff589919ee 100644 --- a/ios/.gitignore +++ b/ios/.gitignore @@ -17,9 +17,12 @@ engine/KMEI/KeymanEngine/resources/Keyman.bundle/Contents/Resources/keyman-sentr Keyman 2* Carthage +# Generated offline help +keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources + # Explicitly ignores just the SWKeyboard scheme; testing against different # targets makes a lot of noise. **/SWKeyboard.scheme # Ignores exported localization files. -en.xcloc \ No newline at end of file +en.xcloc diff --git a/ios/README.md b/ios/README.md index 107ce7725d..dd5ff1afdf 100644 --- a/ios/README.md +++ b/ios/README.md @@ -3,13 +3,20 @@ ## Prerequisites * Xcode 9.1 * iOS 8+ +* [Node.js](https://nodejs.org/) 8.9+ (for building the embedded KeymanWeb engine) * SwiftLint (`brew install swiftlint`) * Carthage (`brew install carthage`) -* [Node.js](https://nodejs.org/) 8.9+ (for building KeymanWeb) + - If using Xcode 12 or later, note that you may need to use the instructions found at https://github.com/Carthage/Carthage/blob/master/Documentation/Xcode12Workaround.md + - We plan to update to use of Carthage 0.37's .xcframeworks solution early in the 15.0 development cycle once 14.0 has successfully released, which will negate the need for the workaround mentioned above. +* Pandoc (`brew install pandoc`) + - Used solely to generate offline help. * Coreutils (`brew install coreutils`) * sentry-cli (`brew install getsentry/tools/sentry-cli`) to utilize Sentry-based error reporting * jq (`brew install jq`) +Note that the `brew` command mentioned above is Homebrew, which may be found at https://brew.sh/. +While not strictly necessary, it certainly simplifies installing the prerequisites above. + ## Keyman App The source for our published iOS Keyman app is found within the **keyman/** subdirectory. This project only contains diff --git a/ios/build-help.sh b/ios/build-help.sh index 6dbd8408d6..1049226306 100755 --- a/ios/build-help.sh +++ b/ios/build-help.sh @@ -1,47 +1,108 @@ #!/bin/bash -# Uses the open-source `wget` utility to create an embedding-friendly offline mirror -# equivalent of the online iOS help. +# Set sensible script defaults: +# set -e: Terminate script if a command returns an error +set -e +# set -u: Terminate script if an unset variable is used +set -u -HELP_ROOT=keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources +## 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" +## END STANDARD BUILD SCRIPT INCLUDE -VERSION=`cat ../resources/VERSION.md` +QUIET=0 -# If TIER is set to "alpha", use the previous version. Help is usually only updated during -# the "beta" process. -if [ -z $TIER ]; then - # Prevents an error message on the next check. Also, manual runs will likely be during beta. - TIER=beta +. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh" + +THIS_DIR="$(dirname "$THIS_SCRIPT")" + +display_usage() { + echo "build.sh [--no-clean] target [...target]" + echo "Builds help documentation for Keyman for iPhone and iPad" + echo "Targets:" + echo " * htm or html: convert documentation to html using pandoc" + echo + echo " --no-clean: don't clean target folder before building" +} + +DO_HTM=false +DO_CLEAN=true + +# Debug flags +DO_HTM_CONVERSION=true + +# +# Parse args +# + +shopt -s nocasematch + +while [[ $# -gt 0 ]] ; do + key="$1" + case $key in + htm | html) + DO_HTM=true + ;; + --no-clean) + DO_CLEAN=false + ;; + *) + display_usage + exit 1 + esac + shift # past argument +done + +if ! $DO_HTM ; then + display_usage + exit 1 fi -if [ $TIER = "alpha" ]; then - # More readable: (major).minor - [[ "$VERSION" =~ ([0-9]+)\.[0-9]+ ]] - # Construct a decremented version string with .minor set to .0 - VERSION="$((${BASH_REMATCH[1]}-1)).0" +displayInfo "" \ + "DO_HTM: $DO_HTM" \ + "DO_CLEAN: $DO_CLEAN" \ + "" + +# +# Compile all .md to .html +# + +cd $KEYMAN_ROOT/ios/help + +MDLUA="$KEYMAN_ROOT/resources/build/htmlink.lua" +MD=`find . -name "*.md"` +DESTHTM="$THIS_DIR/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources" + +if $DO_HTM; then + # + # Clean existing folder + # + + if $DO_CLEAN; then + rm -rf "$DESTHTM" || true # We don't want to die when we clean an empty folder + fi + mkdir -p "$DESTHTM" + + # + # Generate HTML files from Markdown + # + + if $DO_HTM_CONVERSION; then + for INFILE in $MD; do + OUTFILE="$DESTHTM/${INFILE%.md}.html" + echo "Processing $INFILE to $(basename "$OUTFILE")" + mkdir -p "$(dirname "$OUTFILE")" + pandoc -s --lua-filter="$MDLUA" -t html -o "$OUTFILE" $INFILE + done + fi + + # + # Copy Images + # + cd $KEYMAN_ROOT/ios/help/ + mkdir -p "$DESTHTM/ios_images" + cp ios_images/* "$DESTHTM/ios_images/" + fi - -# Clear previous help file downloads (if they exist) -if [ -d "$HELP_ROOT" ]; then - rm -r "$HELP_ROOT" -fi - -# Create local mirror of the help page subdirectory. -# We don't need /font/deploy folder resources, so they're excluded here. -# One of the .css files auto-includes them otherwise. -wget --mirror \ - --convert-links \ - --wait=2 \ - --keep-session-cookies \ - --page-requisites \ - --no-parent \ - --restrict-file-names=windows \ - --exclude-directories /font/deploy \ - --directory-prefix="$HELP_ROOT" \ - --no-directories \ - --default-page=index.php \ - --adjust-extension \ - "help.keyman.com/products/iphone-and-ipad/$VERSION/index.php?embed=ios" - -# Results in a flat-structured mirror of the iphone-and-ipad/$VERSION folder, -# together with all needed resources within the 'site' folder. diff --git a/ios/engine/KMEI/KeymanEngine/Classes/Settings/InstalledLanguagesViewController.swift b/ios/engine/KMEI/KeymanEngine/Classes/Settings/InstalledLanguagesViewController.swift index 019b86d0c6..359e2f283e 100644 --- a/ios/engine/KMEI/KeymanEngine/Classes/Settings/InstalledLanguagesViewController.swift +++ b/ios/engine/KMEI/KeymanEngine/Classes/Settings/InstalledLanguagesViewController.swift @@ -439,8 +439,8 @@ public class InstalledLanguagesViewController: UITableViewController, UIAlertVie } extension InstalledLanguagesViewController { - - @objc func addClicked(_ sender: Any) { + + public func launchKeyboardSearch() { let keyboardSearchVC = KeyboardSearchViewController(keyboardSelectionBlock: KeyboardSearchViewController.defaultDownloadClosure() { result in switch result { case .cancelled: @@ -459,5 +459,9 @@ extension InstalledLanguagesViewController { navigationController!.pushViewController(keyboardSearchVC, animated: true) } + + @objc func addClicked(_ sender: Any) { + launchKeyboardSearch() + } } diff --git a/ios/help/about/history.md b/ios/help/about/history.md new file mode 100644 index 0000000000..3a0b9af3a6 --- /dev/null +++ b/ios/help/about/history.md @@ -0,0 +1,8 @@ +--- +title: Version History +--- + +A frequent updated changelog for Keyman is kept at [help.keyman.com/version-history](https://help.keyman.com/version-history/) on the Keyman Help website. + +## Related Topics +* [What's New](whatsnew) diff --git a/ios/help/about/index.md b/ios/help/about/index.md new file mode 100644 index 0000000000..71ead99252 --- /dev/null +++ b/ios/help/about/index.md @@ -0,0 +1,8 @@ +--- +title: About Keyman +--- + +* [Welcome to Keyman](welcome) +* [What's New](whatsnew) +* [System Requirements](system-requirements) +* [Version History](history) diff --git a/ios/help/about/system-requirements.md b/ios/help/about/system-requirements.md new file mode 100644 index 0000000000..183545ac5f --- /dev/null +++ b/ios/help/about/system-requirements.md @@ -0,0 +1,9 @@ +--- +title: System Requirements - Keyman for iPhone and iPad Help +--- + +## Minimum System Requirements + +### Minimum iOS Version +Keyman for iPhone and iPad will run on Apple iPhones and iPads that have a minimum version of +iOS 9. diff --git a/ios/help/about/welcome.md b/ios/help/about/welcome.md new file mode 100644 index 0000000000..0835b4ca28 --- /dev/null +++ b/ios/help/about/welcome.md @@ -0,0 +1,11 @@ +--- +title: Welcome to Keyman +--- + +Thank you for installing Keyman for iPhone and iPad. Whether you're a new or returning user, +we believe you will appreciate the significant enhancements in this latest version of Keyman for iPhone and iPad. + +## What is Keyman for iPhone and iPad? +Keyman for iPhone and iPad lets you type in over 600 languages on Apple iPhones and iPads. + +[Click here](../start) to get started diff --git a/ios/help/about/whatsnew.md b/ios/help/about/whatsnew.md new file mode 100644 index 0000000000..05b0f72359 --- /dev/null +++ b/ios/help/about/whatsnew.md @@ -0,0 +1,13 @@ +--- +title: What's New +--- + +Here are some of the new features we have added to Keyman for iPhone and iPad 14.0: + +* Simpler and smoother keyboard search +* Localizable UI through [translate.keyman.com](https://translate.keyman.com) +* Consolidated crash reporting to [sentry.keyman.com](https://sentry.keyman.com) +* Choose associated language(s) when keyboard is installed (#3437) +* Improved batching of keyboard and dictionary downloads (#3458) +* Improved corrections and predictions (#3555) +* Match user input capital letters when offering suggestions (#3845) diff --git a/ios/help/basic/index.md b/ios/help/basic/index.md new file mode 100644 index 0000000000..0a5cbcc11d --- /dev/null +++ b/ios/help/basic/index.md @@ -0,0 +1,12 @@ +--- +title: Basic Help +--- + +* [Switching Between Keyboards](switching-between-keyboards) + +* [Installing Custom Keyboards](installing-custom-keyboards) +* [Sharing Keyboards](sharing-keyboards) + +* [Using the Keyman Browser](using-keyman-browser) + +* [Removing Keyboards](uninstalling-keyboards) diff --git a/ios/help/basic/installing-custom-keyboards.md b/ios/help/basic/installing-custom-keyboards.md new file mode 100644 index 0000000000..e56a240cb6 --- /dev/null +++ b/ios/help/basic/installing-custom-keyboards.md @@ -0,0 +1,55 @@ +--- +title: Installing Custom Keyboards - Keyman for iPhone and iPad Help +--- + +The following steps can also be used to install a dictionary package. + +###Download the File +If downloading a custom keyboard from the internet, click the link to your custom keyboard package file. + +For this example, we'll install a custom keyboard from a link in Safari. Our example keyboard is for the GFF Amharic 7 keyboard. + +![](../ios_images/dist-url-screen-i.png) + +Safari will display an option to open the KMP file with Keyman. + +![](../ios_images/dist-kmp-open-i.png) + +Click **Open in "Keyman"** to continue. + +### Finding the File (iOS 13+ only) +Installation is also possible from email clients and other sources. +Once you download the file and save it to your device, look for an +**Open in "Keyman"** option or use the +Install From File option in Keyman seen below. + +![](../ios_images/add-keyboard-i2.png) + +Once this option is selected, a file browser will appear. By default, it will show the most + recently downloaded files that can be installed. + +![](../ios_images/add-keyboard-file-i.png) + +If you have difficulty finding the right file, consider using the **Browse** +option at the bottom-right. Once you select it, you should then be greeted with the screen shown in +the section below. + +### Installing the Package +Either approach seen above will start the installation process. From there, Keyman +for iPhone and iPad will parse the metadata in the package. Some packages include +documentation that will be displayed at this time. + +![](../ios_images/dist-welcome-i.png) + +Click the **"Install"** button at the top right. + +The keyboard from the keyboard package will then be successfully installed! + +![](../ios_images/dist-kmp-success-i.png) + +All the keyboards in the package are installed as a group. In this example, the package only has the "GFF Amharic 7" +keyboard, so it becomes the active keyboard. + +![](../ios_images/dist-install1-i.png) + +To learn how to create a custom installable keyboard, [click here](http://help.keyman.com/developer/current-version/guides/distribute/). diff --git a/ios/help/basic/sharing-keyboards.md b/ios/help/basic/sharing-keyboards.md new file mode 100644 index 0000000000..8cd217ab55 --- /dev/null +++ b/ios/help/basic/sharing-keyboards.md @@ -0,0 +1,48 @@ +--- +title: Sharing Keyboards - Keyman for iPhone and iPad Help +--- + +### Sharing the File +If you have installed a custom keyboard or dictionary from a file, Keyman keeps a copy +of that file on your device. You can find these copies in the iOS Files app. + +![](../ios_images/file-share-1i.png) + +Simply select the "Keyman" folder to view these files. + +![](../ios_images/file-share-2i.png) + +From here, longpress the file for the keyboard or dictionary you wish to share, then +click **Share** to view sharing options. + +### Sharing via QR code +For keyboards and dictionaries downloaded directly through the app, +you can provide friends with a scannable QR code. First, find the resource +through the Settings menu under Installed Languages. + +![](../ios_images/add-keyboard-i2.png) + +![](../ios_images/add-keyboard-i3.png) + +![](../ios_images/qr-code-share-1i.png) + +When you select the keyboard, a page like the following should appear: + +![](../ios_images/qr-code-share-2i.png) + +Note that QR codes are only provided for certain keyboards and dictionaries +at this time. + +### Installing from QR code +To install from QR code, simply launch your device's Camera app and point +it at the code, as seen below. + +![](../ios_images/qr-code-share-3i.png) + +Selecting the notification seen at the top will lead you to the following page: + +![](../ios_images/qr-code-share-4i.png) + +Select the big **Install on iPhone** (or +**Install on iPad**) option will then download +the file for easy installation. (Refer to [Installing custom keyboards](installing-custom-keyboards) as necessary.) diff --git a/ios/help/basic/switching-between-keyboards.md b/ios/help/basic/switching-between-keyboards.md new file mode 100644 index 0000000000..5189121e7d --- /dev/null +++ b/ios/help/basic/switching-between-keyboards.md @@ -0,0 +1,25 @@ +--- +title: Switching between keyboards - Keyman for iPhone and iPad Help +--- + +Keyboard switching is always activated by using the following key: + +![](../ios_images/globe.png) + + This will bring up a list of all currently installed languages (the default is English USA). If you have already downloaded additional languages, they will appear here. Simply select them and the keyboard will re-appear with the new language. + +### The In-App Menu +![](../ios_images/in-app-picker-i.png) + +Simply select any keyboard to activate it and return to the previous screen. + +### The System Keyboard Menu + +![](../ios_images/system-picker-i.png) + +This menu only displays when the 'globe' key is touched and held. + +The "Close Keyman" option will activate the next available non-Keyman system keyboard. + +A quick tap on the "globe" key will instead transition to the next available installed keyboard +without displaying the menu. diff --git a/ios/help/basic/uninstalling-keyboards.md b/ios/help/basic/uninstalling-keyboards.md new file mode 100644 index 0000000000..4f1af7ae24 --- /dev/null +++ b/ios/help/basic/uninstalling-keyboards.md @@ -0,0 +1,29 @@ +--- +title: Uninstalling Keyboards - Keyman for iPhone and iPad Help +--- + +To uninstall a keyboard, follow these steps. + +### Access "Installed Languages" +First, open the "Settings" menu. + +![](../ios_images/add-keyboard-i.png) + +The "Installed Languages" menu found here manages your installed keyboards and dictionaries. + +![](../ios_images/add-keyboard-i2.png) + +You should then see the following screen: + +![](../ios_images/add-keyboard-i3.png) + +### Removing the Keyboard +Start by selecting the language for the keyboard you wish to uninstall. + +![](../ios_images/delete-keyboard-i.png) + +Swipe left on the keyboard you want to remove. You'll see a button to **Delete**. + +![](../ios_images/delete-keyboard-i2.png) + +Click the **Delete** button to uninstall the keyboard. diff --git a/ios/help/basic/using-keyman-browser.md b/ios/help/basic/using-keyman-browser.md new file mode 100644 index 0000000000..9a587b8b33 --- /dev/null +++ b/ios/help/basic/using-keyman-browser.md @@ -0,0 +1,12 @@ +--- +title: Using the Keyman Browser - Keyman for iPhone and iPad Help +--- + +Step 1) Click the Keyman Browser button in the Keyman app + +Step 2) Enter the URL of a website to visit into the address bar, for example **google.com**. Keyman Browser will load +the page and detect your language if it is present, and reformat it to show your language instead of square boxes. + +Step 3) Use the bookmark button to save the current page for browsing later. + +Step 4) Use the Globe icon to swap between languages. diff --git a/ios/help/context/index.md b/ios/help/context/index.md new file mode 100644 index 0000000000..99e41dd65c --- /dev/null +++ b/ios/help/context/index.md @@ -0,0 +1,24 @@ +--- +title: Keyman for iPhone and iPad Help +--- + +| | Keyboard Keys
(Keyboard Present) | +|---|---| +| ![](../ios_images/globe.png) | Install or select another language/keyboard | +| ![](../ios_images/hide-keyboard.png) | Hide the keyboard | +| ![](../ios_images/backspace.png) | Backspace | +| ![](../ios_images/return.png) | Return | +| ![](../ios_images/shift.png) | Shift key. Long press this key to access the CTRL, ALT and CTRLALT keys (which can access additional key layers) | +| ![](../ios_images/touch-hold.png) | Keys with a small dot in the top right corner indicate a long press key. Access further functionality by long pressing the key | + +---- + +| | Toolbar Icons +|---|---| +| ![](../ios_images/share.png) | Share your text via Mail, Text, Facebook or Twitter | +| ![](../ios_images/browser-icon.png) | Open the Keyman Browser | +| ![](../ios_images/menu-icon.png) | Open the menu for additional options | +| ![](../ios_images/font-size.png) | Adjust the font size | +| ![](../ios_images/delete.png) | Delete all current text | +| ![](../ios_images/get-started.png) | Open the initial setup screen | +| ![](../ios_images/info.png) | Load the Keyman help page | diff --git a/ios/help/index.md b/ios/help/index.md new file mode 100644 index 0000000000..8602639a08 --- /dev/null +++ b/ios/help/index.md @@ -0,0 +1,35 @@ +--- +title: Keyman for iPhone and iPad 14.0 Help +--- + +## [About Keyman](about/) +* [Welcome to Keyman](about/welcome) +* [What's New](about/whatsnew) +* [System Requirements](about/system-requirements) +* [Version History](about/history) + +## [Getting Started](start/) +* [How To - Adding a Keyboard](start/installing-keyboards) +* [How To - Installing Keyman as a System Keyboard](start/installing-system-keyboard) + +## [Using the Menu](context/) + +## Ask for Help +* [Ask other users in the SIL Keyman Community](https://community.software.sil.org/c/keyman) + +## Help Topics +### [Troubleshooting](troubleshooting/) +* [How To - Installing fonts](troubleshooting/installing-fonts) +* [How To - Integrating Keyman for iPhone and iPad](troubleshooting/integrating) + +### [Using Keyman for iPhone and iPad](basic/) +* [Switching Between Keyboards](basic/switching-between-keyboards) +* [Installing Custom Keyboards](basic/installing-custom-keyboards) +* [Sharing Keyboards](basic/sharing-keyboards) +* [Using the Keyman Browser](basic/using-keyman-browser) +* [Removing Keyboards](basic/uninstalling-keyboards) + +## Further Help +For more information on Keyman, [keyman.com](https://keyman.com). + +For more information on Keyman for iPhone and iPad, visit [keyman.com/iphone-and-ipad](https://keyman.com/iphone-and-ipad/) diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/add-keyboard-file-i.b0b4249fc27f737685a10fa6781db8b6.png b/ios/help/ios_images/add-keyboard-file-i.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/add-keyboard-file-i.b0b4249fc27f737685a10fa6781db8b6.png rename to ios/help/ios_images/add-keyboard-file-i.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/add-keyboard-i.47ed580b93a138e29e9c9ad70e00d25f.png b/ios/help/ios_images/add-keyboard-i.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/add-keyboard-i.47ed580b93a138e29e9c9ad70e00d25f.png rename to ios/help/ios_images/add-keyboard-i.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/add-keyboard-i2.f815f73c0363f547b5c756ebcdb4a89a.png b/ios/help/ios_images/add-keyboard-i2.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/add-keyboard-i2.f815f73c0363f547b5c756ebcdb4a89a.png rename to ios/help/ios_images/add-keyboard-i2.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/add-keyboard-i3.3509794b85cff04330f9f5449df2f874.png b/ios/help/ios_images/add-keyboard-i3.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/add-keyboard-i3.3509794b85cff04330f9f5449df2f874.png rename to ios/help/ios_images/add-keyboard-i3.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/add-keyboard-i4.961fbda76f16aca5b91afd600f4f9df1.png b/ios/help/ios_images/add-keyboard-i4.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/add-keyboard-i4.961fbda76f16aca5b91afd600f4f9df1.png rename to ios/help/ios_images/add-keyboard-i4.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/add-keyboard-i5.f41b6636a605786bafa435d2cf52267f.png b/ios/help/ios_images/add-keyboard-i5.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/add-keyboard-i5.f41b6636a605786bafa435d2cf52267f.png rename to ios/help/ios_images/add-keyboard-i5.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/backspace.e7aa44e2e9f4ccd68dfffd7cdae23d1f.png b/ios/help/ios_images/backspace.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/backspace.e7aa44e2e9f4ccd68dfffd7cdae23d1f.png rename to ios/help/ios_images/backspace.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/browser-icon.af5dfe566575261f1ea8164481323cb4.png b/ios/help/ios_images/browser-icon.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/browser-icon.af5dfe566575261f1ea8164481323cb4.png rename to ios/help/ios_images/browser-icon.png diff --git a/ios/help/ios_images/confirm-dl.png b/ios/help/ios_images/confirm-dl.png new file mode 100644 index 0000000000..b2f42cba7d Binary files /dev/null and b/ios/help/ios_images/confirm-dl.png differ diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/delete-keyboard-i.e69d65b22ce139e0ba20a1ba705a28cd.png b/ios/help/ios_images/delete-keyboard-i.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/delete-keyboard-i.e69d65b22ce139e0ba20a1ba705a28cd.png rename to ios/help/ios_images/delete-keyboard-i.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/delete-keyboard-i2.ec40fd5e372cbac2dcb4266fb7ed79f7.png b/ios/help/ios_images/delete-keyboard-i2.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/delete-keyboard-i2.ec40fd5e372cbac2dcb4266fb7ed79f7.png rename to ios/help/ios_images/delete-keyboard-i2.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/delete.3a5deb2cca38d2fceafdab4ecc07dd5d.png b/ios/help/ios_images/delete.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/delete.3a5deb2cca38d2fceafdab4ecc07dd5d.png rename to ios/help/ios_images/delete.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/dist-install1-i.9f5bb46e89bbdcf2bbe406da41ce6771.png b/ios/help/ios_images/dist-install1-i.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/dist-install1-i.9f5bb46e89bbdcf2bbe406da41ce6771.png rename to ios/help/ios_images/dist-install1-i.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/dist-kmp-open-i.6a948c2a5b45cf7ad8d430cfd4c275af.png b/ios/help/ios_images/dist-kmp-open-i.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/dist-kmp-open-i.6a948c2a5b45cf7ad8d430cfd4c275af.png rename to ios/help/ios_images/dist-kmp-open-i.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/dist-kmp-success-i.ebdf47a9e455838a09060ad92abcbf4e.png b/ios/help/ios_images/dist-kmp-success-i.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/dist-kmp-success-i.ebdf47a9e455838a09060ad92abcbf4e.png rename to ios/help/ios_images/dist-kmp-success-i.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/dist-url-screen-i.58b4bbebb629e6152eb43ece3451fb3c.png b/ios/help/ios_images/dist-url-screen-i.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/dist-url-screen-i.58b4bbebb629e6152eb43ece3451fb3c.png rename to ios/help/ios_images/dist-url-screen-i.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/dist-welcome-i.e4fac681e32f983734f73b37f3b445da.png b/ios/help/ios_images/dist-welcome-i.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/dist-welcome-i.e4fac681e32f983734f73b37f3b445da.png rename to ios/help/ios_images/dist-welcome-i.png diff --git a/ios/help/ios_images/dl-success.png b/ios/help/ios_images/dl-success.png new file mode 100644 index 0000000000..e61f1eded2 Binary files /dev/null and b/ios/help/ios_images/dl-success.png differ diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/file-share-1i.6b5cb90a3fe79c777ae3e71db9d389c4.png b/ios/help/ios_images/file-share-1i.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/file-share-1i.6b5cb90a3fe79c777ae3e71db9d389c4.png rename to ios/help/ios_images/file-share-1i.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/file-share-2i.b5ac36c325ecebb21ae10a44ee80a7e2.png b/ios/help/ios_images/file-share-2i.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/file-share-2i.b5ac36c325ecebb21ae10a44ee80a7e2.png rename to ios/help/ios_images/file-share-2i.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/font-dl1.b8983c24d229e8bfaef5757e8cf61579.png b/ios/help/ios_images/font-dl1.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/font-dl1.b8983c24d229e8bfaef5757e8cf61579.png rename to ios/help/ios_images/font-dl1.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/font-dl2.e89447124a646205302905cf75903b84.png b/ios/help/ios_images/font-dl2.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/font-dl2.e89447124a646205302905cf75903b84.png rename to ios/help/ios_images/font-dl2.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/font-dl3.8ed35f744cca7be7ef8c0930744b713a.png b/ios/help/ios_images/font-dl3.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/font-dl3.8ed35f744cca7be7ef8c0930744b713a.png rename to ios/help/ios_images/font-dl3.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/font-dl4.713ea3fe6632dc78a7d943305efca977.png b/ios/help/ios_images/font-dl4.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/font-dl4.713ea3fe6632dc78a7d943305efca977.png rename to ios/help/ios_images/font-dl4.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/font-dl5.89bddef8908a51a5f56890f0ad93c673.png b/ios/help/ios_images/font-dl5.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/font-dl5.89bddef8908a51a5f56890f0ad93c673.png rename to ios/help/ios_images/font-dl5.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/font-size.ad6bf9de6369ea97531dfc845b92547a.png b/ios/help/ios_images/font-size.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/font-size.ad6bf9de6369ea97531dfc845b92547a.png rename to ios/help/ios_images/font-size.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/get-started.148a309221b6ae085ccbc3892614c3b3.png b/ios/help/ios_images/get-started.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/get-started.148a309221b6ae085ccbc3892614c3b3.png rename to ios/help/ios_images/get-started.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/globe.b98948bb94a60ffb1822a9f8c6b355e2.png b/ios/help/ios_images/globe.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/globe.b98948bb94a60ffb1822a9f8c6b355e2.png rename to ios/help/ios_images/globe.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/hide-keyboard.010579769b43952703da6147f8225501.png b/ios/help/ios_images/hide-keyboard.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/hide-keyboard.010579769b43952703da6147f8225501.png rename to ios/help/ios_images/hide-keyboard.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/in-app-picker-i.0a1e8e542953df06cc90590f16d6e52f.png b/ios/help/ios_images/in-app-picker-i.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/in-app-picker-i.0a1e8e542953df06cc90590f16d6e52f.png rename to ios/help/ios_images/in-app-picker-i.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/info.ac50440ebab389e55bad424d2aef4f3d.png b/ios/help/ios_images/info.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/info.ac50440ebab389e55bad424d2aef4f3d.png rename to ios/help/ios_images/info.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keyman-settings.fa7bb95bf3f13c7777484dcdaab9dd0a.png b/ios/help/ios_images/keyman-settings.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keyman-settings.fa7bb95bf3f13c7777484dcdaab9dd0a.png rename to ios/help/ios_images/keyman-settings.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keyman-settings2.01cbeb0ac2121190250eadcdb38e9c27.png b/ios/help/ios_images/keyman-settings2.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keyman-settings2.01cbeb0ac2121190250eadcdb38e9c27.png rename to ios/help/ios_images/keyman-settings2.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keyman-settings3.228f5978261f580be7b6ac285b59c995.png b/ios/help/ios_images/keyman-settings3.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keyman-settings3.228f5978261f580be7b6ac285b59c995.png rename to ios/help/ios_images/keyman-settings3.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keyman-settings4.d6965eba9a73ea210512c32c69ec6981.png b/ios/help/ios_images/keyman-settings4.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keyman-settings4.d6965eba9a73ea210512c32c69ec6981.png rename to ios/help/ios_images/keyman-settings4.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keyman-settings5.eb3048ad1e8bb9e24016134d6f1a9956.png b/ios/help/ios_images/keyman-settings5.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keyman-settings5.eb3048ad1e8bb9e24016134d6f1a9956.png rename to ios/help/ios_images/keyman-settings5.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keyman-settings6.72000b5e1174fb6898febb017a63eb6d.png b/ios/help/ios_images/keyman-settings6.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keyman-settings6.72000b5e1174fb6898febb017a63eb6d.png rename to ios/help/ios_images/keyman-settings6.png diff --git a/ios/help/ios_images/lang-list.png b/ios/help/ios_images/lang-list.png new file mode 100644 index 0000000000..a4f966467e Binary files /dev/null and b/ios/help/ios_images/lang-list.png differ diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/menu-icon.3ba89748b61f4ad9d363b9d0000c21cd.png b/ios/help/ios_images/menu-icon.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/menu-icon.3ba89748b61f4ad9d363b9d0000c21cd.png rename to ios/help/ios_images/menu-icon.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/qr-code-share-1i.712a0fe2abd4897b44a7b16ada1eaeda.png b/ios/help/ios_images/qr-code-share-1i.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/qr-code-share-1i.712a0fe2abd4897b44a7b16ada1eaeda.png rename to ios/help/ios_images/qr-code-share-1i.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/qr-code-share-2i.fdd13bba60d1e46353290256e00f663a.png b/ios/help/ios_images/qr-code-share-2i.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/qr-code-share-2i.fdd13bba60d1e46353290256e00f663a.png rename to ios/help/ios_images/qr-code-share-2i.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/qr-code-share-3i.7391cc9a2f049740cb6512d1e74273ff.png b/ios/help/ios_images/qr-code-share-3i.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/qr-code-share-3i.7391cc9a2f049740cb6512d1e74273ff.png rename to ios/help/ios_images/qr-code-share-3i.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/qr-code-share-4i.b7bd5f4cea227ffa9e72bfb3554f2fb0.png b/ios/help/ios_images/qr-code-share-4i.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/qr-code-share-4i.b7bd5f4cea227ffa9e72bfb3554f2fb0.png rename to ios/help/ios_images/qr-code-share-4i.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/return.bdf81704b5532f32581ad2b7533a46a9.png b/ios/help/ios_images/return.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/return.bdf81704b5532f32581ad2b7533a46a9.png rename to ios/help/ios_images/return.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/share.a6c8dd88ab8dbb2614442fcce23f4f27.png b/ios/help/ios_images/share.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/share.a6c8dd88ab8dbb2614442fcce23f4f27.png rename to ios/help/ios_images/share.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/shift.2cab323b121fe156b13ad0d6262f7852.png b/ios/help/ios_images/shift.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/shift.2cab323b121fe156b13ad0d6262f7852.png rename to ios/help/ios_images/shift.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/system-picker-i.7d584a3ef7e6ff7826353b2e112af3ae.png b/ios/help/ios_images/system-picker-i.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/system-picker-i.7d584a3ef7e6ff7826353b2e112af3ae.png rename to ios/help/ios_images/system-picker-i.png diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/touch-hold.42dd80d1666945835f79a9c3f5d05d55.png b/ios/help/ios_images/touch-hold.png similarity index 100% rename from ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/touch-hold.42dd80d1666945835f79a9c3f5d05d55.png rename to ios/help/ios_images/touch-hold.png diff --git a/ios/help/ios_images/uninstall-delete-i.png b/ios/help/ios_images/uninstall-delete-i.png new file mode 100644 index 0000000000..eb66a11b5b Binary files /dev/null and b/ios/help/ios_images/uninstall-delete-i.png differ diff --git a/ios/help/ios_images/uninstall-list-i.png b/ios/help/ios_images/uninstall-list-i.png new file mode 100644 index 0000000000..110a63a96c Binary files /dev/null and b/ios/help/ios_images/uninstall-list-i.png differ diff --git a/ios/help/start/index.md b/ios/help/start/index.md new file mode 100644 index 0000000000..55d9e1f64a --- /dev/null +++ b/ios/help/start/index.md @@ -0,0 +1,6 @@ +--- +title: Getting Started +--- + +* [How To - Adding a Keyboard](installing-keyboards) +* [How To - Installing Keyman as a System Keyboard](installing-system-keyboard) diff --git a/ios/help/start/installing-keyboards.md b/ios/help/start/installing-keyboards.md new file mode 100644 index 0000000000..2d01475a66 --- /dev/null +++ b/ios/help/start/installing-keyboards.md @@ -0,0 +1,35 @@ +--- +title: Adding keyboards - Keyman for iPhone and iPad Help +--- + +To install resources for use with a new language, follow these steps. + +### Access "Installed Languages" +First, open the "Settings" menu. + +![](../ios_images/add-keyboard-i.png) + +The "Installed Languages" menu found here manages your installed keyboards and dictionaries. + +![](../ios_images/add-keyboard-i2.png) + +You should then see the following screen: + +![](../ios_images/add-keyboard-i3.png) + + +### Finding Your Keyboard +Click the **+** at the top-right to open the keyboard catalog. + +![](../ios_images/add-keyboard-i4.png) + +From there, select the language and keyboard you want to install. + +A list of all available languages will appear. Scroll through this list until you find the language you want to install. +Some languages may have multiple keyboards - for example we have 10 different Tamil keyboards. + +A popup will then ask for confirmation. Hit the **Download** button. + +![](../ios_images/add-keyboard-i5.png) + +The new keyboard will then be installed and available for use. diff --git a/ios/help/start/installing-system-keyboard.md b/ios/help/start/installing-system-keyboard.md new file mode 100644 index 0000000000..d4cf98d6e8 --- /dev/null +++ b/ios/help/start/installing-system-keyboard.md @@ -0,0 +1,41 @@ +--- +title: Installing the Keyman System Keyboard - Keyman for iPhone and iPad Help +--- + +Open the 'Settings' App and go to 'General' > 'Keyboard'. + +![](../ios_images/keyman-settings5.png) + +Touch 'Keyboards'. + +![](../ios_images/keyman-settings6.png) + +### Enabling Keyman +To activate Keyman as a system keyboard, touch 'Add New Keyboard...' + +![](../ios_images/keyman-settings.png) + +Touch 'Keyman' under THIRD-PARTY KEYBOARDS. + +![](../ios_images/keyman-settings2.png) + +Touch 'Keyman - Keyman'. + +![](../ios_images/keyman-settings3.png) + +Turn on the 'Allow Full Access' toggle and confirm. + +![](../ios_images/keyman-settings4.png) + +Your Keyman keyboards will now be available throughout your entire device. You can switch between Keyman keyboards and +the default iOS keyboard layout by touching the globe key of the keyboard whenever you are typing. + +![](../ios_images/globe.png) + +### On "Allow Full Access" +After opening the Keyman system keyboard for the first time in an app, you can turn off the "Allow Full Access" option +again. + +You may need to temporarily switch this on again in the future for app updates and for some changes to keyboard preferences. + +It may always be safely deactivated immediately after opening the system keyboard again in an app. diff --git a/ios/help/troubleshooting/index.md b/ios/help/troubleshooting/index.md new file mode 100644 index 0000000000..2f31716c95 --- /dev/null +++ b/ios/help/troubleshooting/index.md @@ -0,0 +1,7 @@ +--- +title: Troubleshooting +--- + +* [How To - Installing fonts](installing-fonts) + +* [How To - Integrating Keyman for iPhone and iPad](integrating) diff --git a/ios/help/troubleshooting/installing-fonts.md b/ios/help/troubleshooting/installing-fonts.md new file mode 100644 index 0000000000..183b722c82 --- /dev/null +++ b/ios/help/troubleshooting/installing-fonts.md @@ -0,0 +1,27 @@ +--- +title: Installing fonts - Keyman for iPhone and iPad Help +--- + +Some keyboards require special fonts that do not come standard with your iPhone or iPad. +For keyboards that use these fonts, the Keyman app will provide a download of the font to install onto your device, +meaning all apps will be able to correctly display the font. To install the font, touch **Install**. + +![](../ios_images/font-dl1.png) + +You will then be taken to your device settings, and asked to install a profile for the font. Touch **Install**. + +![](../ios_images/font-dl2.png) + +Then Install again in the Consent page. + +![](../ios_images/font-dl3.png) + +Once the profile is installed, touch Done. + +![](../ios_images/font-dl4.png) + +And then Touch now to return to Keyman. + +![](../ios_images/font-dl5.png) + +The font is now successfully installed, and will display correctly throughout your device! diff --git a/ios/help/troubleshooting/integrating.md b/ios/help/troubleshooting/integrating.md new file mode 100644 index 0000000000..516503d091 --- /dev/null +++ b/ios/help/troubleshooting/integrating.md @@ -0,0 +1,8 @@ +--- +title: How To - Integrating Keyman for iPhone and iPad +--- + +## Integrate Keyman with your App or Website +If you are interested in learning how Keyman can be integrated into your own app or +website, visit [keyman.com/engine](https://keyman.com/engine) + diff --git a/ios/keyman/Keyman/Keyman/InfoViewController/InfoViewController.swift b/ios/keyman/Keyman/Keyman/InfoViewController/InfoViewController.swift index f0721834bc..31f63e104b 100644 --- a/ios/keyman/Keyman/Keyman/InfoViewController/InfoViewController.swift +++ b/ios/keyman/Keyman/Keyman/InfoViewController/InfoViewController.swift @@ -43,27 +43,29 @@ class InfoViewController: UIViewController, UIWebViewDelegate { } func reloadKeymanHelp() { - let networkStatus = networkReachable?.connection - switch networkStatus { - case Reachability.Connection.none?: + if let networkStatus = networkReachable?.connection { + switch networkStatus { + case Reachability.Connection.none, Reachability.Connection.unavailable: + loadFromLocal() + default: + loadFromServer() + } + } else { loadFromLocal() - default: - loadFromServer() } } private func loadFromLocal() { let offlineHelpBundle = Bundle(path: Bundle.main.path(forResource: "OfflineHelp", ofType: "bundle")!)! - // Yes, .php.html. That's how `wget` is set to retrieve it, since Safari won't recognize the contents - // without the .html ending, it seems. - let filePath = offlineHelpBundle.path(forResource: "index.php", ofType: "html", inDirectory: nil) + // Safari won't recognize the contents without the .html ending. + let filePath = offlineHelpBundle.path(forResource: "index", ofType: "html", inDirectory: nil) webView.loadRequest(URLRequest(url: URL.init(fileURLWithPath: filePath!))) } private func loadFromServer() { let appVersion = Version.current.majorMinor - let url = "https://help.keyman.com/products/iphone-and-ipad/\(appVersion.plainString)/?embed=ios" + let url = "\(KeymanHosts.HELP_KEYMAN_COM)/products/iphone-and-ipad/\(appVersion.plainString)/" webView.loadRequest(URLRequest(url: URL(string: url)!)) log.debug("Info page URL: \(url)") } diff --git a/ios/keyman/Keyman/Keyman/MainViewController.swift b/ios/keyman/Keyman/Keyman/MainViewController.swift index 323af5544e..b708befd8e 100644 --- a/ios/keyman/Keyman/Keyman/MainViewController.swift +++ b/ios/keyman/Keyman/Keyman/MainViewController.swift @@ -536,7 +536,10 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg let installedLanguagesVC = InstalledLanguagesViewController() nc.pushViewController(installedLanguagesVC, animated: true) - self.present(nc, animated: true) + self.present(nc, animated: true) { + // Requires a host NavigationViewController, hence calling it afterward. + installedLanguagesVC.launchKeyboardSearch() + } } @objc func actionButtonClick(_ sender: Any) { diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/NotoSans-Regular-Ascii.ttf b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/NotoSans-Regular-Ascii.ttf deleted file mode 100644 index f221c4a87a..0000000000 Binary files a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/NotoSans-Regular-Ascii.ttf and /dev/null differ diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/app-info.8f6cb12701af2facf8c6dd7c729c65bc.css b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/app-info.8f6cb12701af2facf8c6dd7c729c65bc.css deleted file mode 100644 index 3fbe3544d2..0000000000 --- a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/app-info.8f6cb12701af2facf8c6dd7c729c65bc.css +++ /dev/null @@ -1,59 +0,0 @@ -/*********************** - Wrapper CSS -***********************/ - -h2{ - font-size: 22pt; - font-weight: 400; - margin: 30px 0px 15px 0px; - text-align: center; - color: #BA2034; -} - - -p img{ - margin-top: 10px !important; - display: block !important; - margin-left: auto !important; - margin-right: auto !important; - margin-bottom: 10px !important; -} - -table{ - width: 100% !important; - margin-bottom: 50px !important; -} - - -td{ - text-align: left !important; - vertical-align: middle !important; - padding: 10px !important; -} - -th{ - font-weight: bold !important; - font-size: 14pt !important; - padding: 15px 0px 5px 0px !important; -} - -.command{ - font-weight: bold !important; - color: #69B7D3 !important; -} - -@media all and (min-width: 10px) and (max-width: 720px){ - #section2 img{ - min-width: 40px; - } -} - -/** - Removes existing max-width property settings from images in tables. - They overly shrink the images on the main iOS symbol glossary. - */ -#section2 td img { - max-width: unset; -} - - diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/embed.5f7dc4fec739bda98e73bbe078e4f770.css b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/embed.5f7dc4fec739bda98e73bbe078e4f770.css deleted file mode 100644 index 8a291613a8..0000000000 --- a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/embed.5f7dc4fec739bda98e73bbe078e4f770.css +++ /dev/null @@ -1,7 +0,0 @@ -.embed-on .content-online { - display: none; -} - -.embed-off .content-in-app { - display: none; -} \ No newline at end of file diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/favicon.56e7a2d76793fb59cca3133b8bb1dd3d.ico b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/favicon.56e7a2d76793fb59cca3133b8bb1dd3d.ico deleted file mode 100644 index 671c7c9156..0000000000 Binary files a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/favicon.56e7a2d76793fb59cca3133b8bb1dd3d.ico and /dev/null differ diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/fonts.css b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/fonts.css deleted file mode 100644 index c72972eed5..0000000000 --- a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/fonts.css +++ /dev/null @@ -1,139 +0,0 @@ -@font-face { - font-family:GeezWeb; - font-style:normal; - font-weight:normal; - src:url('https://s.keyman.com/font/deploy/wookianos.ttf') format('truetype'); -} -@font-face { - font-family:MyanmarWeb; - font-style:normal; - font-weight:normal; - src:url('https://s.keyman.com/font/deploy/Padauk.ttf') format('truetype'); -} -/*@font-face { - font-family:LatinWeb; - font-style:normal; - font-weight:normal; - src:url('https://s.keyman.com/font/deploy/DejaVuSans.ttf') format('truetype'); -}*/ -@font-face { - font-family:OriyaWeb; - font-style:normal; - font-weight:normal; - src:url('https://s.keyman.com/font/deploy/utkalm.ttf') format('truetype'); -} -@font-face { - font-family:SinhalaWeb; - font-style:normal; - font-weight:normal; - src:url('https://s.keyman.com/font/deploy/kaputaunicode.ttf') format('truetype'); -} -@font-face { - font-family:TamilWeb; - font-style:normal; - font-weight:normal; - src:url('https://s.keyman.com/font/deploy/aava1.ttf') format('truetype'); -} -@font-face { - font-family:CherokeeWeb; - font-style:normal; - font-weight:normal; - src:url('https://s.keyman.com/font/deploy/digohweli_1_7.ttf') format('truetype'); -} -@font-face { - font-family: SindhiWeb; - font-style: normal; - font-weight: normal; - src: url('https://s.keyman.com/font/deploy/MBKhursheed10.6.ttf') format("truetype"); -} -@font-face { - font-family: TibetanWeb; - font-style: normal; - font-weight: normal; - src: url('https://s.keyman.com/font/deploy/CTRC-Uchen.ttf') format("truetype"); -} -@font-face { - font-family: LaoWeb; - font-style: normal; - font-weight: normal; - src: url('https://s.keyman.com/font/deploy/SAYSETT0.eot'); - src: url('https://s.keyman.com/font/deploy/SAYSETT0.eot?#iefix') format('embedded-opentype'), - url('https://s.keyman.com/font/deploy/saysettha_web.woff') format('woff'), - url('https://s.keyman.com/font/deploy/saysettha_OT.ttf') format('truetype'); -} -@font-face { - font-family: PashtoWeb; - font-style: normal; - font-weight: normal; - src: url('https://s.keyman.com/font/deploy/LateefRegOT.ttf') format("truetype"); -} - -@font-face { - font-family: "Noto Nastaliq Urdu Draft"; - src: url('https://s.keyman.com/font/deploy/NotoNastaliqUrduDraft.ttf') format("truetype"); -} - -/* Amharic */ -:lang(amh).lang-example { - font-family: GeezWeb; -} -/* Burmese */ -:lang(mya).lang-example { - font-family: MyanmarWeb; -} -/* Cherokee */ -:lang(chr).lang-example { - font-family: CherokeeWeb; -} -/* Lao */ -:lang(lao).lang-example { - font-family: LaoWeb; -} -/* Malayalam -:lang(mal).lang-example { - font-family: GeezWeb; -} */ - -/* Marathi -:lang(mar).lang-example { - font-family: GeezWeb; -} */ -/* Oriya */ -:lang(ori).lang-example { - font-family: OriyaWeb; -} -/* Sindhi */ -:lang(snd).lang-example { - font-family: SindhiWeb; -} -/* Sinhala */ -:lang(sin).lang-example { - font-family: SinhalaWeb; -} - -/* Tamil */ -:lang(tam).lang-example { - font-family: TamilWeb; -} -/* Tibetan */ -:lang(bod).lang-example { - font-family: TibetanWeb; -} -/* Tigrigna */ -:lang(tir).lang-example { - font-family: GeezWeb; -} - -:lang(egy).language, .hiero{ - font-family:EgyptianWeb !important; -} - -.lang2:lang(urd) { - font-family: "Noto Nastaliq Urdu Draft"; - font-weight: normal; -} - -#hiero{ - position: relative; - top: 2px; -} diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/headerbar.5b66d10475396d1a17cb0d687f794262.png b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/headerbar.5b66d10475396d1a17cb0d687f794262.png deleted file mode 100644 index f61db79b21..0000000000 Binary files a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/headerbar.5b66d10475396d1a17cb0d687f794262.png and /dev/null differ diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/helpIcon.e6531e8bf34d0f667dac699db8f7438f.png b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/helpIcon.e6531e8bf34d0f667dac699db8f7438f.png deleted file mode 100644 index 8178e4ff76..0000000000 Binary files a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/helpIcon.e6531e8bf34d0f667dac699db8f7438f.png and /dev/null differ diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/index.php.html b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/index.php.html deleted file mode 100644 index ff5e90e9bf..0000000000 --- a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/index.php.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - Keyman for iPhone and iPad Help - - - - - - - - - - - - - - -
-
-
- -
- Header bottom - -

Keyman.com

-
-
-
-
-
-
-

Index

-
-
-
-
-
-

Getting Started

-

Keyman for iPhone and iPad

- -

- The Keyman App lets you type in over 600 languages. To get started, here are some helpful hints: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Keyboard Keys
(Keyboard Present)

Install or select another language/keyboard
Hide the keyboard
Backspace
Return
Shift key. Long press this key to access the CTRL, ALT and CTRL ALT keys (which can access additional - key layers)
Keys with a small dot in the top right corner indicate a long press key. Access further functionality - by long pressing the key

Toolbar Icons

Share your text via Mail, Text, Facebook or Twitter
Open the Keyman Browser
Open the menu for additional options
Adjust the font size
Delete all current text
Open the initial setup screen
Load this help page
-

- -

Help Index

- - -

Integrate Keyman with your App or Website

-

- If you are interested in learning how Keyman can be integrated into your own app or website, visit www.keyman.com/engine -

-

Further Help

-

- For more information on Keyman, visit www.keyman.com -

- -
-

Version History

-

Full version history

-
-
-
-
- - - \ No newline at end of file diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/index.php@embed=ios.html b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/index.php@embed=ios.html deleted file mode 100644 index ab3c169f7e..0000000000 --- a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/index.php@embed=ios.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - Keyman for iPhone and iPad Help - - - - - - - - - - - - - - -
-
-
- -
- Header bottom - -

Keyman.com

-
-
-
-
-
-
-

Index

-
-
-
-
-
-

Getting Started

-

Keyman for iPhone and iPad

- -

- The Keyman App lets you type in over 600 languages. To get started, here are some helpful hints: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Keyboard Keys
(Keyboard Present)

Install or select another language/keyboard
Hide the keyboard
Backspace
Return
Shift key. Long press this key to access the CTRL, ALT and CTRL ALT keys (which can access additional - key layers)
Keys with a small dot in the top right corner indicate a long press key. Access further functionality - by long pressing the key

Toolbar Icons

Share your text via Mail, Text, Facebook or Twitter
Open the Keyman Browser
Open the menu for additional options
Adjust the font size
Delete all current text
Open the initial setup screen
Load this help page
-

- -

Help Index

- - -

Integrate Keyman with your App or Website

-

- If you are interested in learning how Keyman can be integrated into your own app or website, visit www.keyman.com/engine -

-

Further Help

-

- For more information on Keyman, visit www.keyman.com -

- -
-

Version History

-

Full version history

-
-
-
-
- - - \ No newline at end of file diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/installing-custom-keyboards.php.html b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/installing-custom-keyboards.php.html deleted file mode 100644 index 320ef4bff5..0000000000 --- a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/installing-custom-keyboards.php.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - Installing Custom Keyboards - Keyman for iPhone and iPad Help - - - - - - - - - - - - - -
-
-
- -
- Header bottom - -

Keyman.com

-
-
-
-
-
-
-

Index

-
-
-
-
-
-

Keyman for iPhone and iPad: Installing Custom Keyboards

- -

Download the File

-

- If downloading a custom keyboard from the internet, click the link to your custom keyboard package file. -

-

- For this example, we'll install a custom keyboard from a link in Safari. Our example keyboard is for the GFF Amharic 7 keyboard. -

-

- -

-

- Safari will display an option to open the KMP file with Keyman.
-

-

- -

-

- Click Open in "Keyman" to continue. -

-

Finding the File (iOS 11+ only)

-

- Installation is also possible from email clients and other sources. - Once you download the file and save it to your device, look for an - Open in "Keyman" option or use the - Install From File option in Keyman seen below. -

-

- -

-

- Once this option is selected, a file browser will appear. By default, it will show the most - recently downloaded files that can be installed. -

-

- -

-

- If you have difficulty finding the right file, consider using the Browse - option at the bottom-right. Once you select it, you should then be greeted with the screen shown in - the section below. -

- -

Installing the Package

-

- Either approach seen above will start the installation process. From there, Keyman - for iPhone and iPad will parse the metadata in the package. Some packages include - documentation that will be displayed at this time. -

-

- -

-

- Click the "Install" button at the top right. -

-

-The keyboard from the keyboard package will then be successfully installed! -

-

- -

-

- All the keyboards in the package are installed as a group. In this example, the package only has the "GFF Amharic 7" - keyboard, so it becomes the active keyboard. -

-

- -

- -

- To learn how to create a custom installable keyboard, click here. -

- -

Help Index

- - -
-
-
-
- - - \ No newline at end of file diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/installing-fonts.php.html b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/installing-fonts.php.html deleted file mode 100644 index dc4438b7e2..0000000000 --- a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/installing-fonts.php.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - Installing fonts - Keyman for iPhone and iPad Help - - - - - - - - - - - - - - -
-
-
- -
- Header bottom - -

Keyman.com

-
-
-
-
-
-
-

Index

-
-
-
-
-
-

Keyman for iPhone and iPad: Installing Fonts

- -

- Some keyboards require special fonts that do not come standard with your iPhone or iPad. For keyboards that use these fonts, the Keyman app will provide a download of the font to install onto your device, meaning all apps will be able to correctly display the font. To install the font, touch Install. -
- -

- You will then be taken to your device settings, and asked to install a profile for the font. Touch Install. -
- -

- Then Install again in the Consent page. -
- -

- Once the profile is installed, touch Done. -
- -

- And then Touch now to return to Keyman. -
- -

- The font is now successfully installed, and will display correctly throughout your device! -

- -

Help Index

- - -
-
-
-
- - - \ No newline at end of file diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/installing-keyboards.php.html b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/installing-keyboards.php.html deleted file mode 100644 index d37053ad7a..0000000000 --- a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/installing-keyboards.php.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - Adding keyboards - Keyman for iPhone and iPad Help - - - - - - - - - - - - - -
-
-
- -
- Header bottom - -

Keyman.com

-
-
-
-
-
-
-

Index

-
-
-
-
-
-

Keyman for iPhone and iPad: Adding Keyboards

- -

- To install resources for use with a new language, follow these steps. -

-

Access "Installed Languages"

-

First, open the "Settings" menu.

-

- -

-

- The "Installed Languages" menu found here manages your installed keyboards and dictionaries. -

-

- -

-

You should then see the following screen:

-

- -

- -

Finding Your Keyboard

-

Click the + at the top-right to open the keyboard catalog.

-

- -

-

From there, select the language and keyboard you want to install.

-

A list of all available languages will appear. Scroll through this list until you find the language you want to install. Some languages may have multiple keyboards - for example we have 10 different Tamil keyboards.

-

A popup will then ask for confirmation. Hit the Download button.

-

- -

-

The new keyboard will then be installed and available for use.

-

Help Index

- -
-
-
-
- - - \ No newline at end of file diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/installing-system-keyboard.php.html b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/installing-system-keyboard.php.html deleted file mode 100644 index be101586fb..0000000000 --- a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/installing-system-keyboard.php.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - Installing the Keyman System Keyboard - Keyman for iPhone and iPad Help - - - - - - - - - - - - - -
-
-
- -
- Header bottom - -

Keyman.com

-
-
-
-
-
-
-

Index

-
-
-
-
-
-

Keyman for iPhone and iPad: Installing the Keyman System Keyboard

- -

- Open the 'Settings' App and go to 'General' > 'Keyboard'. -

-

- -

-

- Touch 'Keyboards'. -

-

- -

-

Enabling Keyman

-

- To activate Keyman as a system keyboard, touch 'Add New Keyboard...' -

-

- -

-

- Touch 'Keyman' under THIRD-PARTY KEYBOARDS. -

-

- -

-

- Touch 'Keyman - Keyman'. -

-

- -

-

- Turn on the 'Allow Full Access' toggle and confirm. -

-

- -

-

- Your Keyman keyboards will now be available throughout your entire device. You can switch between Keyman keyboards and the default iOS keyboard layout by touching the globe key of the keyboard whenever you are typing. -

-

- -

-

On "Allow Full Access"

-

After opening the Keyman system keyboard for the first time in an app, you can turn off the "Allow Full Access" option -again. -

-

- You may need to temporarily switch this on again in the future for app updates and for some changes to keyboard preferences. -

-

- It may always be safely deactivated immediately after opening the system keyboard again in an app. -

-

Help Index

- -
-
-
-
- - - \ No newline at end of file diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keyboard.f84ff11b7f61a4be1fa5437cf6ba17e0.css b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keyboard.f84ff11b7f61a4be1fa5437cf6ba17e0.css deleted file mode 100644 index f8aeee7bca..0000000000 --- a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keyboard.f84ff11b7f61a4be1fa5437cf6ba17e0.css +++ /dev/null @@ -1,95 +0,0 @@ -@import 'fonts.css'; - -#section2 h3, #section2 h2{ - color: #B92034; - margin-top: 10px; -} - -#section2 a{ - color: #B92034; -} - -#section2 h3{ - margin-top: 30px; -} - -#section2 h4{ - font-weight: bold; - margin: 10px 10px; -} - -#section2 img{ - margin: 0px; -} - -.lang2{ - line-height: 1.2; - font-size: 150% !important; -} - -#keymanExample{ - background: #E0E0FF; - border: solid 2px #69B7D2; - padding: 10px; -} - -#keymanExample tr td{ - padding: 0px 30px; -} - -#keymanExample tr th{ - font-weight: bold; -} - -#keymanExample img{ - margin: 5px 2px 0px 2px; - position: relative; - top: 3px; -} - -#osk .desktop.kmw-osk-inner-frame { - background: rgb(204,204,204); - padding: 4px 0; -} - -#osk .desktop.kmw-osk-inner-frame .kmw-key-square { - - border-bottom: solid 2px rgb(204,204,204); -} - -.highlightKeys .key-print { display: none } -.highlightKeys img { - vertical-align: baseline; - margin: 0 2px 0 0; - background-image: url('keys3.gif'); - height: 15px; width: 15px; - margin: 2px !important; -} - -.grid tr { - font-weight: normal; - height: 55px; - text-align: center; -} - -td samp { - font-size: 24pt; -} -samp { - color: #0000FF; - font-family: "Times New Roman"; -} -.grid td, .grid th { - border-bottom: 1px solid #DDDDDD; - padding: 2px 5px; -} - -.grid th{ - vertical-align: bottom; - font-weight: bold; -} - -.navheader{ - margin-top: 20px; -} - diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keyrenderer.e17ddbf43da5e1a6cc9ba8d723c98ec6.js b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keyrenderer.e17ddbf43da5e1a6cc9ba8d723c98ec6.js deleted file mode 100644 index 7b1b1e79ab..0000000000 --- a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keyrenderer.e17ddbf43da5e1a6cc9ba8d723c98ec6.js +++ /dev/null @@ -1,250 +0,0 @@ -if(typeof KeyRenderer == 'undefined') -{ - var KeyRenderer = new function() - { - var site = '/cdn/dev'; - - this.render = function(s) - { - return "" + this.renderInternal(s, true) + ""; - } - - this.renderInternal = function(s, includePrintable) - { - var i = 0, r = ''; - var spkey = {PgUp:'pgup',PgDn:'pgdn',Left:'left',Right:'right',Up:'up',Down:'down',Ins:'ins',Del:'del',Home:'home',End:'end', - Enter:'enter',Tab:'tab',Esc:'esc',Caps:'caps',Shift:'shift2',Ctrl:'ctrl2',Alt:'alt2',Bksp:'bksp'}; - while(i < s.length) - { - var endspan = false; - var ch = s.charAt(i); - if(ch == '[' && i < s.length-1) - { - i++; ch = s.charAt(i); - if(ch != '[') - { - /* Ctrl+Shift+Alt+key */ - var t = ''; - while(s.charAt(i) != ']' && i < s.length) - { - t += s.charAt(i); - i++; - } - var n = t.indexOf('&'),t1=t; - if(n >= 0) - { - ch = t.substr(n,t.length-n); - t = t.substr(0,n); - } - else - { - ch = t.charAt(t.length-1); - t = t.substr(0, t.length-1); - } - r += ""; - - var x = t1.indexOf('!'),u='',ks,kn; - if(x >= 0) - { - ks = t1.substr(x+1,t1.length-x-1); - kn = spkey[ks]; - if(kn) - { - u = ""+ks+""; - t = t.substr(0,x); ch = '*'; - } - } - - if(t.indexOf('C') >= 0) r += "Ctrl"; - if(t.indexOf('S') >= 0) r += "Shift"; - if(t.indexOf('A') >= 0) r += "Alt"; - - r += u; - endspan = true; - } - } - if(!endspan || ch != '*') - { - if(ch.substr(0,1) == '&') - { - if(ch == '&') - { - ch = ''; - while(s.charAt(i) != ';' && i < s.length) - { - ch += s.charAt(i); - i++; - } - ch += ';'; - } - if(ch == '<') ch = '<'; - else if(ch == '>') ch = '>'; - else if(ch == '&') ch = '&'; - else if(ch == '"') ch = '"'; - } - chv = ch.charCodeAt(0); - r += ""+this.encodeEntities(ch)+""; - } - if(endspan) r += ""; - i++; - } - - if(includePrintable) - { - r += ""; - i = 0; - while(i < s.length) - { - endspan = false; - ch = s.charAt(i); - if(ch == '[' && i < s.length-1) - { - i++; ch = s.charAt(i); - if(ch != '[') - { - /* Ctrl+Shift+Alt+key */ - t = ''; - while(s.charAt(i) != ']' && i < s.length) - { - t += s.charAt(i); - i++; - } - var t1 = t; - ch = t.charAt(t.length-1); - t = t.substr(0, t.length-1); - r += ""; - - var x = t1.indexOf('!'),u='',ks,kn; - if(x >= 0) - { - ks = t1.substr(x+1,t1.length-x-1); - kn = spkey[ks]; - if(kn) - { - u = ks; - t = t.substr(0,x); ch = '*'; - } - } - - if(t.indexOf('C') >= 0) r += "Ctrl+"; - if(t.indexOf('S') >= 0) r += "Shift+"; - if(t.indexOf('A') >= 0) r += "Alt+"; - endspan = true; - - r += u; - } - } - if(!endspan || ch != '*') - if(ch == ' ') r += "Space"; else r += this.encodeEntities(ch); - if(endspan) r += ""; - i++; - } - r += ""; - } - - return r; - } - - this.encodeEntities = function(s) - { - return s.replace('&', '&').replace('<', '<').replace('>', '>').replace('"', '"').replace("'", '''); - } - - this.getElementsByClassName = function(className, tag, elm) - { - if (document.getElementsByClassName) { - getElementsByClassName = function (className, tag, elm) { - elm = elm || document; - var elements = elm.getElementsByClassName(className), - nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null, - returnElements = [], - current; - for(var i=0, il=elements.length; idocument.writeln(KeyRenderer.render('hf')); - } - - } - - if(window.attachEvent) - { - window.attachEvent('onload', KeyRenderer.renderAll); - } - else if(window.addEventListener) - { - window.addEventListener('load', KeyRenderer.renderAll, false); - } -} \ No newline at end of file diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keys.298336161ce24cc84fd19fc4ecb6f7ae.css b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keys.298336161ce24cc84fd19fc4ecb6f7ae.css deleted file mode 100644 index cc4193f1c0..0000000000 --- a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keys.298336161ce24cc84fd19fc4ecb6f7ae.css +++ /dev/null @@ -1,126 +0,0 @@ -/* example and key images */ - -.highlightExample {color: blue; font-weight: bold; } -.highlightKeys {color: blue; font-weight: bold;} - -.highlightKeys .key-print { display: none } -.highlightKeys img { margin: 0 2px 0 0; background-image: url('keys2.gif'); height: 15px; width: 15px; } -.highlightKeys .key-grp { margin: 0 4px; } -.highlightKeys .key-shift { width: 41px !important; margin-right: 0px !important; background-position: 0 -45px; } -.highlightKeys .key-ctrl { width: 33px !important; margin-right: 0px !important; background-position: -41px -45px; } -.highlightKeys .key-alt { width: 32px !important; margin-right: 0px !important; background-position: -74px -45px; } -.highlightKeys .key-32 { width: 37px !important; } - -.key-33 { background-position: -37px 0px; } -.key-34 { background-position: -52px 0px; } -.key-35 { background-position: -67px 0px; } -.key-36 { background-position: -82px 0px; } -.key-37 { background-position: -97px 0px; } -.key-38 { background-position: -112px 0px; } -.key-39 { background-position: -127px 0px; } -.key-40 { background-position: -142px 0px; } -.key-41 { background-position: -157px 0px; } -.key-42 { background-position: -172px 0px; } -.key-43 { background-position: -187px 0px; } -.key-44 { background-position: -202px 0px; } -.key-45 { background-position: -217px 0px; } -.key-46 { background-position: -232px 0px; } -.key-47 { background-position: -247px 0px; } -.key-48 { background-position: -262px 0px; } -.key-49 { background-position: -277px 0px; } -.key-50 { background-position: -292px 0px; } -.key-51 { background-position: -307px 0px; } -.key-52 { background-position: -322px 0px; } -.key-53 { background-position: -337px 0px; } -.key-54 { background-position: -352px 0px; } -.key-55 { background-position: -367px 0px; } -.key-56 { background-position: -382px 0px; } -.key-57 { background-position: -397px 0px; } -.key-58 { background-position: -412px 0px; } -.key-59 { background-position: -427px 0px; } -.key-60 { background-position: -442px 0px; } -.key-61 { background-position: -457px 0px; } -.key-62 { background-position: -472px 0px; } -.key-63 { background-position: -487px 0px; } -.key-64 { background-position: 0px -15px; } -.key-65 { background-position: -15px -15px; } -.key-66 { background-position: -30px -15px; } -.key-67 { background-position: -45px -15px; } -.key-68 { background-position: -60px -15px; } -.key-69 { background-position: -75px -15px; } -.key-70 { background-position: -90px -15px; } -.key-71 { background-position: -105px -15px; } -.key-72 { background-position: -120px -15px; } -.key-73 { background-position: -135px -15px; } -.key-74 { background-position: -150px -15px; } -.key-75 { background-position: -165px -15px; } -.key-76 { background-position: -180px -15px; } -.key-77 { background-position: -195px -15px; } -.key-78 { background-position: -210px -15px; } -.key-79 { background-position: -225px -15px; } -.key-80 { background-position: -240px -15px; } -.key-81 { background-position: -255px -15px; } -.key-82 { background-position: -270px -15px; } -.key-83 { background-position: -285px -15px; } -.key-84 { background-position: -300px -15px; } -.key-85 { background-position: -315px -15px; } -.key-86 { background-position: -330px -15px; } -.key-87 { background-position: -345px -15px; } -.key-88 { background-position: -360px -15px; } -.key-89 { background-position: -375px -15px; } -.key-90 { background-position: -390px -15px; } -.key-91 { background-position: -405px -15px; } -.key-92 { background-position: -420px -15px; } -.key-93 { background-position: -435px -15px; } -.key-94 { background-position: -450px -15px; } -.key-95 { background-position: -465px -15px; } -.key-96 { background-position: 0px -30px; } -.key-97 { background-position: -15px -30px; } -.key-98 { background-position: -30px -30px; } -.key-99 { background-position: -45px -30px; } -.key-100 { background-position: -60px -30px; } -.key-101 { background-position: -75px -30px; } -.key-102 { background-position: -90px -30px; } -.key-103 { background-position: -105px -30px; } -.key-104 { background-position: -120px -30px; } -.key-105 { background-position: -135px -30px; } -.key-106 { background-position: -150px -30px; } -.key-107 { background-position: -165px -30px; } -.key-108 { background-position: -180px -30px; } -.key-109 { background-position: -195px -30px; } -.key-110 { background-position: -210px -30px; } -.key-111 { background-position: -225px -30px; } -.key-112 { background-position: -240px -30px; } -.key-113 { background-position: -255px -30px; } -.key-114 { background-position: -270px -30px; } -.key-115 { background-position: -285px -30px; } -.key-116 { background-position: -300px -30px; } -.key-117 { background-position: -315px -30px; } -.key-118 { background-position: -330px -30px; } -.key-119 { background-position: -345px -30px; } -.key-120 { background-position: -360px -30px; } -.key-121 { background-position: -375px -30px; } -.key-122 { background-position: -390px -30px; } -.key-123 { background-position: -405px -30px; } -.key-124 { background-position: -420px -30px; } -.key-125 { background-position: -435px -30px; } -.key-126 { background-position: -450px -30px; } - -.highlightKeys .key-shift2 { width: 30px !important; margin-right: -2px !important; background-position: 0 -45px; } -.highlightKeys .key-ctrl2 { width: 22px !important; margin-right: -2px !important; background-position: -41px -45px; } -.highlightKeys .key-alt2 { width: 20px !important; margin-right: -2px !important; background-position: -74px -45px; } -.highlightKeys .key-pgup { width: 28px !important; margin-right: -2px !important; background-position: -236px -45px; } -.highlightKeys .key-pgdn { width: 28px !important; margin-right: -2px !important; background-position: -208px -45px; } -.highlightKeys .key-up { width: 15px !important; margin-right: -2px !important; background-position: -309px -45px; } -.highlightKeys .key-down { width: 15px !important; margin-right: -2px !important; background-position: -294px -45px; } -.highlightKeys .key-left { width: 15px !important; margin-right: -2px !important; background-position: -279px -45px; } -.highlightKeys .key-right { width: 15px !important; margin-right: -2px !important; background-position: -264px -45px; } -.highlightKeys .key-ins { width: 20px !important; margin-right: -2px !important; background-position: -147px -45px; } -.highlightKeys .key-del { width: 20px !important; margin-right: -2px !important; background-position: -167px -45px; } -.highlightKeys .key-home { width: 32px !important; margin-right: -2px !important; background-position: -324px -45px; } -.highlightKeys .key-end { width: 21px !important; margin-right: -2px !important; background-position: -187px -45px; } -.highlightKeys .key-enter { width: 30px !important; margin-right: -2px !important; background-position: -356px -45px; } -.highlightKeys .key-esc { width: 20px !important; margin-right: -2px !important; background-position: -106px -45px; } -.highlightKeys .key-tab { width: 21px !important; margin-right: -2px !important; background-position: -126px -45px; } -.highlightKeys .key-caps { width: 28px !important; margin-right: -2px !important; background-position: -386px -45px; } -.highlightKeys .key-bksp { width: 29px !important; margin-right: -2px !important; background-position: -414px -45px; } diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keys2.gif b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keys2.gif deleted file mode 100644 index 58b560cfaf..0000000000 Binary files a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keys2.gif and /dev/null differ diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keys3.gif b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keys3.gif deleted file mode 100644 index 713efa4219..0000000000 Binary files a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/keys3.gif and /dev/null differ diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/logo2.d8805a27a5c0399d234f1f84aca74cae.png b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/logo2.d8805a27a5c0399d234f1f84aca74cae.png deleted file mode 100644 index 4ae5da5a2b..0000000000 Binary files a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/logo2.d8805a27a5c0399d234f1f84aca74cae.png and /dev/null differ diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/robots.txt.html b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/robots.txt.html deleted file mode 100644 index 63f46b7023..0000000000 --- a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/robots.txt.html +++ /dev/null @@ -1,270 +0,0 @@ - - - - - - Page not found - - - - - - - - - - - - -
-
- - - Header bottom -

Keyman.com

-
-
- -
-
-
-
-

Index

-
-
-
-
-

On this page

-
-
-
-
-

Page not found

- -

Sorry, we couldn't find the page /robots.txt.

- -

Please use the blue Support tab at the bottom of this page to tell us about this problem.

- -

Search Keyman Help

- - -
-
-
-
- - - -
- - - - \ No newline at end of file diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/search-icon.png b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/search-icon.png deleted file mode 100644 index f72be105f3..0000000000 Binary files a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/search-icon.png and /dev/null differ diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/sharing-keyboards.php.html b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/sharing-keyboards.php.html deleted file mode 100644 index 16ffc3a7c9..0000000000 --- a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/sharing-keyboards.php.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - Sharing Keyboards - Keyman for iPhone and iPad Help - - - - - - - - - - - - - -
-
-
- -
- Header bottom - -

Keyman.com

-
-
-
-
-
-
-

Index

-
-
-
-
-
-

Keyman for iPhone and iPad: Sharing Keyboards

- -

Sharing the File

-

- If you have installed a custom keyboard or dictionary from a file, Keyman keeps a copy - of that file on your device. You can find these copies in the iOS Files app. -

-

- -

-

- Simply select the "Keyman" folder to view these files. -

-

- -

-

- From here, longpress the file for the keyboard or dictionary you wish to share, then - click Share to view sharing options. -

-

Sharing via QR code

-

- For keyboards and dictionaries downloaded directly through the app, - you can provide friends with a scannable QR code. First, find the resource - through the Settings menu under Installed Languages. -

-

- -

-

- -

-

- -

-

- When you select the keyboard, a page like the following should appear: -

-

- -

-

- Note that QR codes are only provided for certain keyboards and dictionaries - at this time. -

-

Installing from QR code

-

- To install from QR code, simply launch your device's Camera app and point - it at the code, as seen below. -

-

- -

-

- Selecting the notification seen at the top will lead you to the following page: -

-

- -

-

- Select the big Install on iPhone (or - Install on iPad) option will then download - the file for easy installation. (Refer to - Installing custom keyboards as necessary.) -

- -

Help Index

- - -
-
-
-
- - - \ No newline at end of file diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/sil-logo-blue-2017_1.7742a0bfa005af55e62b98d27f8b033c.png b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/sil-logo-blue-2017_1.7742a0bfa005af55e62b98d27f8b033c.png deleted file mode 100644 index 4f862a9617..0000000000 Binary files a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/sil-logo-blue-2017_1.7742a0bfa005af55e62b98d27f8b033c.png and /dev/null differ diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/social-logos.ttf b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/social-logos.ttf deleted file mode 100644 index e8013681b9..0000000000 Binary files a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/social-logos.ttf and /dev/null differ diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/switching-between-keyboards.php.html b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/switching-between-keyboards.php.html deleted file mode 100644 index 0f4dac8d5a..0000000000 --- a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/switching-between-keyboards.php.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - Switching between keyboards - Keyman for iPhone and iPad Help - - - - - - - - - - - - - -
-
-
- -
- Header bottom - -

Keyman.com

-
-
-
-
-
-
-

Index

-
-
-
-
-
-

Keyman for iPhone and iPad: Switching between Keyboards

- -

- Keyboard switching is always activated by using the following key: -

-

- -

-

- This will bring up a list of all currently installed languages (the default is English USA). If you have already downloaded additional languages, they will appear here. Simply select them and the keyboard will re-appear with the new language. -

-

The In-App Menu

-

- -

-

Simply select any keyboard to activate it and return to the previous screen.

-

The System Keyboard Menu

-

- -

-

This menu only displays when the 'globe' key is touched and held.

-

The "Close Keyman" option will activate the next available non-Keyman system keyboard.

-

A quick tap on the "globe" key will instead transition to the next available installed keyboard - without displaying the menu.

- -

Help Index

- -
-
-
-
- - - \ No newline at end of file diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/template.5f4056fcb922f05667eb19e3809c64db.css b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/template.5f4056fcb922f05667eb19e3809c64db.css deleted file mode 100644 index 9c17521cfd..0000000000 --- a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/template.5f4056fcb922f05667eb19e3809c64db.css +++ /dev/null @@ -1,1852 +0,0 @@ -/************************************** - * CSS RESET - * ***********************************/ - -/* http://meyerweb.com/eric/tools/css/reset/ - v2.0 | 20110126 - License: none (public domain) -*/ - -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td, -article, aside, canvas, details, embed, -figure, figcaption, footer, header, hgroup, -menu, nav, output, ruby, section, summary, -time, mark, audio, video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; -} -/* HTML5 display-role reset for older browsers */ -article, aside, details, figcaption, figure, -footer, header, hgroup, menu, nav, section { - display: block; -} -body { - line-height: 1; -} -ol, ul { - list-style: none; - padding-left: 10px; -} -blockquote, q { - quotes: none; -} -blockquote:before, blockquote:after, -q:before, q:after { - content: ''; - content: none; -} -table { - border-collapse: collapse; -} - -tbody { - display: table-row-group; - vertical-align: middle; -} - -table td{ - padding: 4px; -} - -html{ - font-family: 'Cabin', sans-serif; - color: #333; -} - -html p, -html dd, -html li { - font-family: 'Calibri', sans-serif; - font-size: 14pt; -} - -body { - line-height: inherit; -} - -/************************************** - * Language Section CSS - * ***********************************/ - -@import 'fonts.css'; - -/************************************** - * Page Layout CSS - * ***********************************/ - -html{ - cursor: default; - background: #fff; -} - -.wrapper { - margin-left: auto; - margin-right: auto; -} - -#section2 .wrapper { - overflow-x: auto; /* fixes content too wide leading to content dropping below index, but not ideal, temp fix better than previous */ - margin-left: 220px; - margin-right: 316px; /* leave space for the short menu */ -} - -:not(div.interface-hierarchy) blockquote { - margin-left: 32px; - margin-bottom: 16px; - background: rgba(242,242,242,0.9); - padding: 4px; - border-radius: 4px; -} - -div.interface-hierarchy { - padding: 0px 10px 10px 10px; - line-height: 1.4; - font-size: 14pt; -} - -div.interface-hierarchy blockquote { - padding-left: 20px; -} - -.no-toc #section2 .wrapper { - margin-right: auto; -} - -.no-index #section2 .wrapper { - margin-left: auto; -} - -@media only screen and (min-width: 1440px) { - body #section2 { - float: none; - max-width: 1400px; - margin-left: auto; - margin-right: auto; - display: block; - } -} - -@media only screen and (min-width: 1640px) { - body #section2 { - float: none; - max-width: 1600px; - margin-left: auto; - margin-right: auto; - display: block; - } - - body #index { - width: 256px; - } - - #section2 .wrapper { - margin-left: 316px; - } -} - -@media only screen and (min-width: 1024px) and (max-width: 1279px) { - #section2 .wrapper { - margin-right: 20px; - } -} - -.menu-wrapper { - width: 960px; - margin-left: auto; - margin-right: auto; -} - -.button{ - float: left; - width: 200px; - height: 40px; - line-height: 40px; - border-radius: 6px; - text-align: center; - margin: 20px; - cursor: pointer; - box-shadow: 1px 1px 2px #3e3e3e; -} - -.button a{ - text-decoration: none; -} - -.button h2{ - color: #fff; -} - -#container{ - min-height: 100%; - width: 100%; -} - -.main{ - float: left; - width: 100%; -} - -.valign-outer{ - height: 100%; - width: 100%; - overflow: hidden; - display: table; - position: static; -} - -.valign-middle{ - display: table-cell; - vertical-align: middle; - width: 100%; - position: static; -} - -.center{ - text-align: center; -} - -.command{ - font-weight: 400; - color: #69B7D2; -} - -.inline{ - text-align: center; -} - -.red{ - color: #B92034; -} - -.underline{ - border-bottom: 1px solid #B92034; - margin-bottom: 15px; - padding-bottom: 0px !important; -} - -.caption{ - text-align: center; - font-size: 11pt; - font-weight: 600; - margin-top: -15px; - padding: 0px 10px; -} - -.people-text{ - font-size: 12pt !important; -} - -.testimonial{ - display: block; - margin: 20px; - background: #fff; - border-radius: 14px; - padding: 30px 20px; - box-shadow: 1px 1px 4px #000; - font-style: italic; - color: #6e6e6e; -} - -.caption a{ - text-decoration: underline; - color: #B92034; -} - -.contact-social{ - position: relative; - top: 12px; -} - -/********************************** - * HEADER CSS - *********************************/ - -.header{ - float: left; - width: 100%; - background: #f2f2f2; - display: block; - z-index: 5; -} - -#show-phone-menu{ - display: none; -} - -#logo{ - margin-left: 30px; - float: left; -} - -#no-menu-spacer{ - float: left; - width: 100%; - height: 20px; - display: block; -} - -#header-bottom{ - width: 100%; - height: 8px; - display: block; -} - -#help{ - width: 160px; - position: absolute; - top: 35px; - left: 100%; - margin-left: -160px; - text-decoration: none; -} - -#help p{ - float: left; - font-size: 14pt; - color: #000; - vertical-align: top; - text-decoration: underline; -} - -#help img{ - float: left; - margin-left: 10px; -} - -#breadcrumbTrail{ - float: left; - margin: 10px 10px 20px 40px; - background: #f2f2f2; - padding: 10px; - border-radius: 4px; - font-size: 10pt; -} - -#breadcrumbTrail a{ - color: #B92034; -} - -/* Version Selector */ - -#version-selector { - float: right; - margin: 10px 312px 20px 10px; - background: #f2f2f2; - padding: 10px; - border-radius: 4px; - font-size: 10pt; -} - -#version-selector div { - display: none; -} - -#version-selector:hover div { - display: block; - position: absolute; - margin-top: 10px; - margin-left: -10px; - box-shadow: 0px 0px 4px rgba(0,0,0,0.4); - border-radius: 2px; - z-index: 2; - background: #f2f2f2; - padding: 10px; -} - -#version-selector div span { - display: block; - padding: 4px 10px; -} - -#version-selector div a { - display: block; - color: #b92034; - padding: 4px 10px; -} - -#version-selector div a:hover { - color: #b92034; - background: rgba(224,224,224,0.9); -} - -/************************************** - * TOP MENU 1 CSS - * ***********************************/ - -#top-menu1{ - float: left; - width: 100%; - height: 50px; - background: #f2f2f2; - position: absolute; - z-index: 2; - top: 66px; - padding-top: 12px; -} - -#top-menu-bg{ - position:relative; - top:-8px; - width:100%; - padding-top: 12px; - height:50px; - float: left; - background:white; -} - -#top-menu1.faded-menu { - position: fixed; - top: 0; - background: rgba(242,242,242,0.9); -} - -#top-menu-icon{ - float: left; - position: absolute; - top: 13px; - left: 30px; - display: none; -} - -#top-menu-icon2{ - float: left; - position: absolute; - top: 25px; - left: 100%; - margin-left: -57px; - display: none; -} - -#top-menu1 .menu-item{ - float: left; - width: 240px; - height: 50px; - text-align: center; - line-height: 50px; - overflow-y: visible; -} - -#top-menu1 .menu-item:hover, #top-menu1 .menu-item img:hover, #top-menu1 .menu-item h3:hover, #top-menu1 .menu-item h3:hover a{ - color: #B92034; -} - -#top-menu1 .menu-item:nth-child(odd):hover{ - background: #f2f2f2; - box-shadow: 1px 1px 4px #000; - position: relative; - z-index: 2; -} - -#top-menu1 .menu-item:hover .menu-item-dropdown{ - display: block !important; -} - -#top-menu1 .menu-item:hover .header-triangle img{ - background: url('triangle.png') 17px 0; -} - -#top-menu1 .menu-item a{ - color: #000; - text-decoration: none; -} - -#top-menu1 .menu-item h3 a:hover{ - color: #B92034; -} - -#top-menu1 .menu-item h3{ - font-weight: 600; - color: #000; -} - -.header-triangle img{ - margin-left: 5px; - height: 9px; - width: 17px; - background: url('triangle.png') 0 0; -} - -#top-menu1 .menu-item .menu-item-sub{ - float: right; -} - -#top-menu-bottom{ - width: 100%; - height: 8px; - display: block; -} - -.menu-item-dropdown{ - width: 240px; - position: relative; - left: -5px; - z-index: 3; - display: none; - text-align: left; - padding: 0px 5px 5px 5px; - overflow: hidden; -} - -.menu-dropdown-inner{ - width: 240px; - background: #f2f2f2; - margin-bottom: 10px; - padding-bottom: 10px; - box-shadow: 1px 1px 4px #000; -} - -.menu-item-dropdown h4{ - color: #000; - border-bottom: 1px solid #000; - margin: 0px 10px; - padding-top: 10px; - font-weight: 600; - line-height: 1.5em; -} - -.menu-item-dropdown h4:first-child{ - border-top: none; -} - -.menu-item-dropdown form{ - width: 100%; - height: 30px; - padding: 10px 0px; -} - -#language-search{ - float: left; - width: 139px; - height: 28px; - border-radius: 0px; - border: solid 1px gray; - margin-left: 10px; - padding-left: 10px; -} - -#search-submit{ - float: left; - position: relative; - left: -1px; -} - -.menu-item-dropdown ul{ - padding-top: 10px; -} - -.menu-item-dropdown ul li{ - padding: 0px; - text-align: left; - line-height: 1.8em; - width: 220px; - margin: 0px 10px; -} - -.menu-item-dropdown ul li a{ - color: #B92034 !important; - font-weight: 500; - font-size: 11pt; - display: inline-block; - width: 100%; - height: 100%; - padding: 0px 10px; -} - -.menu-item-dropdown ul li:hover a{ - text-decoration: underline !important; -} - -.menu-item-dropdown ul li:hover{ - background: #e2e2e2; -} - -.beta{ - display: inline-block; - font-size:8pt; - color:#000; - position:relative; - top:-6px;left:3px -} - -#phone-menu{ - display: none; -} - -#phone-header-spacer{ - display: none; -} - -/* Search Box */ - -.search-wrap { - right: 0; - top: 0; - position: absolute; - margin: 21px 32px 21px 21px; -} - -input[type="search"] { - -webkit-appearance: textfield; - appearance: textfield; - -moz-appearance: textfield; -} - -.search-wrap input { - width: 22px; - -moz-transition: all 0.3s ease-out; - -webkit-transition: all 0.3s ease-out; - transition: all 0.3s ease-out; - padding: 4px 22px 4px 4px; - background-color: #6D6C6F; - border-radius: 6px; - border: none; - background-image: url('search-icon.png'); - background-repeat: no-repeat; - background-position: right 4px; - color: white; -} -.search-wrap input:focus { - width: 200px; - -moz-transition: all 0.3s ease-out; - -webkit-transition: all 0.3s ease-out; - transition: all 0.3s ease-out; -} - -.search-wrap .offscreen { - border: 0; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; -} - - -/********************************** - * FOOTER CSS - *********************************/ - -.footer{ - float: left; - width: 100%; - text-align: center; - background: #A4A8AB; -} - -.footer .wrapper { - width: auto; - display: inline-block; - margin: 0; - text-align: left; -} - -.footer-third{ - float: left; - width: 320px; - margin-left: 4px; - margin-right: 4px; -} - -.footer-third-title{ - margin-top: 30px; - text-align: center; - font-size: 18pt; - color: #fff; - margin-bottom: 25px; -} - -.footer-third form{ - width: 320px; -} - -.footer-third form input{ - -webkit-appearance: none; - padding: 0px; - float: left; - height: 38px; - width: 200px; - padding-left: 10px; - font-size: 14pt; - border-radius: 6px; - border-bottom-right-radius: 0px; - border-top-right-radius: 0px; - box-shadow: none; - border: 1px solid #FFFFFF; - margin-left: 10px; -} - -.footer-third form input:focus{ - outline: 0; -} - -.subscribe{ - width: 90px; - margin: 0px; - border-top-left-radius: 0px; - border-bottom-left-radius: 0px; - background: #666666; - box-shadow: none; -} - -.subscribe h2{ - font-size: 16px; - margin: 0px; - padding: 0px; - font-weight: normal; -} - -.subscribe:hover{ - background: #888888; -} - -#footer-mailchimp br { - clear: both; -} - -/* - social-logos font from https://github.com/Automattic/social-logos, GPLv2 - */ -@font-face { - font-family: "social-logos"; - src: url("social-logos.ttf"); - font-weight: normal; - font-style: normal; -} - -/* - Noto Sans Regular Ascii font is the ASCII portion of NotoSans-Regular - from https://www.google.com/get/noto/, SIL Open Font License v1.1 - Generated with: pyftsubset ../fonts/Noto_Sans/NotoSans-Regular.ttf --unicodes=U+0020-007F - */ -@font-face { - font-family: "NotoSans-Regular-Ascii"; - src: url("NotoSans-Regular-Ascii.ttf"); - font-weight: normal; - font-style: normal; -} - -[data-icon]:before { - font-family: "social-logos" !important; - content: attr(data-icon); - font-style: normal !important; - font-weight: normal !important; - font-variant: normal !important; - text-transform: none !important; - line-height: 1; - padding-right: 4px; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; } - -#footer-social { - text-align: center; -} - -#footer-social a { - display: block; - text-decoration: none; - color: #666666; - font-size: 14pt; - padding: 4px; -} - -#footer-social a:hover { - color: #444444; -} - -#privacy-policy { - text-align: center; - margin-top: 32px; - display: block; -} - -#privacy-policy a { - display: block; - text-decoration: none; - color: white; - font-size: 12pt; -} - -#privacy-policy a:hover { - color: #444444; -} - -#footer-social div { - display: inline-block; - text-align: left; - margin-bottom: 24px; -} - -#footer-social a#footer-community { - padding-left: 27px; -} - -.sil-logo a, .sil-logo a:visited { - color: white; - text-decoration: none; -} - -.sil-logo a:hover { - color: white; - text-decoration: underline; -} - -.sil-logo{ - text-align: center; - margin-top: 20px; -} - -.sil-logo p{ - color: #fff; - font-size: 12pt; - margin-top: 10px; -} - -/********************************** - * SECTION 2 CSS - *********************************/ - -#section2{ - display: inline; -} - -#section2 h1{ - text-align: left; - font-size: 28pt; - padding: 40px 10px 10px 10px; -} - -#section2 h2{ - font-size: 20pt; - line-height: 1.4; - padding: 32px 10px 10px 10px; -} - -#section2 h3{ - font-size: 16pt; - font-weight: 600; - padding: 16px 10px 10px 10px; -} - -#section2 h4{ - font-size: 14pt; - font-weight: 600; - padding: 4px 10px 4px 10px; -} - -#section2 p, #section2 dl, #section2 .itemizedlist { - padding: 0px 10px 10px 10px; - line-height: 1.4; - font-size: 14pt; -} - -#section2 p a{ - color: #B92034; - text-decoration: underline; - cursor: pointer; - font-weight: 600; - line-height: 1.4; -} - -#section2 li{ - margin-left: 30px; - list-style: disc; - list-style-position: outside; - line-height: 1.4; - font-size: 14pt; -} - -#section2 p.context-main-image { - text-align: center; - margin-left: -12px; -} - -#section2 p.context-main-image img, -#section2 img.context-main-image { - box-shadow: 0px 4px 12px rgba(0,0,0,0.75); - border-radius: 4px; -} - -/*#section2 img{ - margin: 10px; -}*/ - -#section2 img.center{ - margin-left: auto; - margin-right: auto; - display: block; -} - -#section2 img.inline { - margin: 0; -} - -#section2 .itemizedlist li{ - list-style-position: outside; -} - -#section2 li { - margin-bottom: 12px; -} - -/* TODO: deprecate this since prismjs handles it. This also conflicts with the line-numbers plugin */ -#section2 pre[class*="language-"] { - margin-left: 9px; - margin-right: 9px; - padding: 9px; - line-height: 1.4; -} - -#section2 pre[class*="language-"] code[class*="language-"] { - line-height: 1.4; -} - -.product-index { - text-align: center; -} - -.product{ - margin-bottom: 10px; - margin-top: 20px; - background: #e3e3e3; - text-align: center; - max-height: 362px; - display: inline-block; - vertical-align: top; - width: 300px; - min-height: 295px; - padding: 0px 5px 10px 5px; - margin-left: 5px; - margin-right: 5px; -} - -.product:hover { - background: #D6D6D6; - cursor: pointer; -} - -.product a{ - text-decoration: none; - color: #000; - display: inline-block; -} - -.product h3{ - margin-bottom: 6px; - font-size: 16pt; - color: #B92034; - text-align: center; -} - -.product p{ - padding: 0 8px; - line-height: 1.3; - color: #333; -} - -.product p{ - text-align: left; - font-size: 12pt !important; - height: 130px; -} - -#engine-support-list{ - margin-bottom: 20px; - columns: 2; - -webkit-columns: 2; - -moz-columns: 2; -} - -#keyboard-support-list{ - margin-bottom: 20px; - columns: 4; - -webkit-columns: 4; - -moz-columns: 4; -} - -#product-support-list{ - columns: 3; - -webkit-columns: 3; - -moz-columns: 3; - text-align: center; -} - -#version-history{ - text-align: center; -} - -#keyboard-support-list li, #product-support-list li, #engine-support-list li, #version-history li{ - list-style: none !important; -} - -#keyboard-support-list li a, #product-support-list li a, #engine-support-list li a, #version-history li a{ - color: #B92034; - text-decoration: underline; -} - -/* Font styling limited to Ascii characters */ -kbd { - background: none repeat scroll 0 0 #CCCCD0; - border: 1px solid #808080; - border-radius: 4px; - color: #000000; - font-family: "NotoSans-Regular-Ascii"; - font-size: 13px; - font-weight: bold; - margin: 0 1px; - padding: 0px 0px 0px; - min-width: 1.5em; - text-align: center; - vertical-align: bottom; - display: inline-block; -} - -/* Make the element look like an iOS key. */ -kbd.ios { - background-color: #fafafa; /* faaa fa fa fa fa faaaa far better... */ - border: 0; - box-shadow: /* Hard shadow */ 0 1px rgba(0,0,0,0.4), - /* Diffuse shadow */ 0 1px 4px rgba(0,0,0,0.2), - /* Highlight */ inset 0 1px white; - border-radius: 4px; - font-weight: 500; -} - -#section2 aside { - margin: 12px; - background: #e3e5e6; - border-radius: 6px; - padding: 1px 0; -} - -#section2 aside h2, -#section2 aside h3 { - padding-top: 8px; -} - -.list-of-tables { - display: none; -} - -.bold{ - font-weight: bold; -} - -.programlisting{ - font-family: -moz-fixed; - font-family: "Courier New", Courier, monospace; - background: #f2f2f2; - padding: 5px; - line-height: 1.3; - margin: 10px; - overflow-x: auto; -} - -.navheader, .navfooter{ - width: auto; - margin: 0px 10px; -} - -ol li a{ - color: #B92034; -} - -.tip{ - background: #f2f2f2; - border-radius: 6px; - padding: 20px; - margin: 10px 30px; -} - -.tip .title{ - margin-top: 0px !important; -} - -.informaltable table{ - background: #f2f2f2; - margin: 10px; -} - -.informaltable td, .informaltable th{ - border: 1px solid gray; - padding: 5px; -} - -.note{ - border: 1px solid #F3E5DE; -} - -.note .title{ - margin-top: 0px !important; - padding-top: 5px; - background-color: #F3E5DE; -} - -.display{ - background: #f2f2f2; -} - -.display td, .display th{ - border: solid 1px gray; - padding: 5px; -} - -.display th{ - font-weight: bold; -} - -table.display { - margin-bottom: 12px; -} - -table.platform { - margin-left: 10px; - margin-bottom: 12px; -} - -.platform th { - background: #f2f2f2; - font-weight: bold; -} - -.platform td, .platform th { - border: solid 1px gray; - padding: 5px; - text-align: center; -} - -#osk, -#osk-phone, -#osk-tablet{ - position: relative; - z-index: -2; -} - -#osk .kmw-osk-inner-frame{ - height: 320px !important; - font-size: 2em !important; - padding: 4px 0 4px 4px; -} - -#osk-phone .kmw-osk-inner-frame{ - padding-top: 6px !important; - height: 256px !important; - width: 528px !important; - font-size: 1.5em !important; -} - -#osk-tablet .kmw-osk-inner-frame{ - padding-top: 6px !important; - width: 726px !important; - height: 372px !important; - font-size: 1.5em !important; -} - -#osk-container, -#osk-phone-container, -#osk-tablet-container { - display: none; -} - -body[data-device='Windows'] #osk-container, -body[data-device='Windows'] #osk-phone-container, -body[data-device='Windows'] #osk-tablet-container { - display: block; -} - -body[data-device='iPhone'] #osk-phone-container, -body[data-device='Android'] #osk-phone-container { - display: block; -} - -body[data-device='iPad'] #osk-tablet-container, -body[data-device='Android'] #osk-tablet-container { - display: block; -} - -body[data-device='Unknown'] #osk-container, -body[data-device='Unknown'] #osk-phone-container, -body[data-device='Unknown'] #osk-tablet-container { - display: block; -} - -/********************************** - * PHONE MENU CSS - *********************************/ - -#show-phone-menu{ - display: none; - float: left; - margin: 10px; - position: relative; - z-index: 6; -} -#phone-menu{ - position: fixed; - top: 49px; - left: 0px; - z-index: 6; - width: 80%; - height: 100%; -} -#phone-menu-inner{ - width: 100%; - height: 100%; - overflow-y: scroll; - padding-bottom: 40%; - -webkit-overflow-scrolling:touch; - border-right: solid 4px #C1C1C1; - background: #fff; -} -.phone-menu-item{ - float: left; - width: 100%; - height: auto; - padding: 10px 0px; - background: #f2f2f2; -} -.phone-menu-item:last-child{ - margin-bottom: 60px; -} -.phone-menu-item h3{ - font-size: 14pt; - font-weight: bold; - margin: 0px 10px; - border-bottom: solid 1px #000; -} -.phone-menu-item form{ - margin-top: 10px; -} -#language-search2{ - float: left; - width: 144px; - height: 30px; - margin-left: 10px; - border-radius: 0px; - border: solid 1px gray; - padding: 0px; - padding-left: 10px; - font-size: 12pt; -} -#search-submit2{ - float: left; - position: relative; - left: -1px; - border-radius: 0px; -} -.phone-menu-item ul{ - padding: 10px; -} -.phone-menu-item ul li{ - line-height: 1.8em; -} -.phone-menu-item ul li a{ - text-decoration: underline; - color: #B92034; -} -#show-phone-menu-spacer{ - display: none; - float: left; -} - - /************************************** - * FOOTER TABS - * ***********************************/ - -.footer-tab-holder{ - width: 70px; - height: 20px; - padding: 9px; - position: fixed; - top: 100%; - left: 100%; - z-index: 4; -} - -#footer-tab-support { - margin-left: -340px; -} - -#footer-tab-edit { - margin-left: -260px; -} - -.footer-tab{ - float: right; - position: relative; - font-size: 10pt; - top: -34px; - right: -10px; - background: #69B7D2; - height: 20px; - padding: 5px 0px; - text-align: center; - border-top-left-radius: 7px; - border-top-right-radius: 7px; - width: 70px; - margin-left: 210px; - cursor: pointer; - border-top: solid 1px #444; - border-left: solid 1px #444; - border-right: solid 1px #444; -} - -.footer-tab a{ - color: #444; - text-decoration: none; -} - -/************************************** - * TABLET CSS - * ***********************************/ - -@media only screen and (min-width: 768px) and (max-width: 1024px){ - .wrapper, #section2 .wrapper{ - width: 740px; - margin-left: auto; - margin-right: auto; - } - /* Header */ - .header{ - position: fixed; - } - #top-menu1 .menu-item{ - width: 148px; - } - #top-menu1 .menu-item h3{ - font-size: 10pt; - } - #logo{ - margin-bottom: 15px; - } - #phone-header-spacer{ - display: block; - height: 80px; - } - /* Footer */ - .footer { - height: auto; - } - .footer-third{ - float: none; - clear: both; - width: 370px; - margin: 20px 0px 0px 0px; - } - /* Section 1 */ - #sect1-title h1{ - font-size: 36pt; - } - #sect1-image img{ - max-width: 90%; - } - /* Phone Menu */ - #top-menu1{ - display: none; - } - #top-menu-bg{ - display: none; - } - #show-phone-menu{ - display: block; - margin-top: 28px; - } - #phone-menu{ - top: 81px; - width: 40%; - } - #osk .kmw-osk-inner-frame{ - height: 280px; - font-size: 1.8em !important; - } - .footer-tab-holder{ - display: none; - } -} - -@media only screen and (min-width: 768px) and (max-width: 1024px) and (orientation: portrait){ - #sect1-title h1{ - text-align: center; - font-size: 28pt; - } -} - -/* 7 inch */ -@media all and (min-width: 600px) and (max-width: 768px){ - .wrapper, #section2 .wrapper{ - width: 580px; - margin-left: auto; - margin-right: auto; - } - /* Header */ - #top-menu-bg{ - display: none; - } - #top-menu1 .menu-item{ - width: auto; - padding: 0 16px; - } - #top-menu1 .menu-item h3{ - font-size: 8pt; - } - /* Footer */ - .footer-third{ - width: 290px; - margin-left: 0px; - margin-right: 0px; - } - .footer-third form{ - width: 290px; - } - .footer-third form input{ - width: 170px; - } - #facebook{ - margin-left: 20px; - } - /* Section 1 */ - #sect1-title h1{ - font-size: 28pt; - text-align: center; - } - #sect1-image img{ - max-width: 90%; - } - /* Phone Menu */ - #show-phone-menu{ - display: block; - } - #osk .kmw-osk-inner-frame{ - height: 220px; - font-size: 1.5em !important; - } - .footer-tab-holder{ - display: none; - } -} - - - - -/************************************** - * PHONE CSS - * ***********************************/ - -@media all and (min-width: 10px) and (max-width: 600px){ - .wrapper, #section2 .wrapper{ - width: 320px; - margin-left: auto; - margin-right: auto; - } - /* Header */ - #top-menu-bg{ - display: none; - } - .header{ - position: fixed; - } - #top-menu1{ - display: none; - } - #help{ - display: none; - } - .header{ - height: 49px !important; - } - #logo{ - margin-top: 3px; - width: 185px; - position: fixed; - left: 50%; - margin-left: -92px; - } - #phone-header-spacer{ - display: block; - height: 57px; - } - /* Products */ - - .product{ - display: inline-block; - vertical-align: top; - width: auto; - min-height: auto; - } - - .product img { - z-index: 1; - position: absolute; - width: 150px; - left: 50%; - margin-left: -75px; - opacity: 0.2; - } - - .product h3{ - z-index: 2; - } - - .product p{ - height: 60px; - z-index: 2; - } - - - - /* Footer */ - .footer{ - height: auto; - } - .footer-third{ - margin-left: 0px; - margin-right: 0px; - height: auto; - } - .sil-logo{ - float: left; - margin-top: 40px; - margin-bottom: 20px; - } - /* Section 1 */ - .section1{ - height: auto; - background-size: auto 100%; - } - #sect1-image{ - width: 100%; - height: auto; - } - #sect1-image img{ - max-width: 80%; - height: auto; - padding-bottom: 10px; - } - #sect1-title{ - width: 100%; - height: auto; - } - #sect1-title h1{ - font-size: 24pt; - text-align: center; - padding: 20px 10px 0px 10px; - } - #sect1-title a{ - display: none; - } - /* Phone Menu */ - #show-phone-menu{ - display: block; - } - #show-phone-menu-spacer{ - display: block; - width: 40px; - height: 29px; - } - /* Section 2 */ - #section2 img{ - max-width: 80%; - } - #section2 h2{ - margin: 10px 10px 15px 10px; - text-align: center; - } - #keyboard-support-list{ - columns: 2; - -webkit-columns: 2; - -moz-columns: 2; - margin-bottom: 20px; - } - #product-support-list { - padding: 0px 30px; - font-size: 14pt; - columns: 1; - -webkit-columns: 1; - -moz-columns: 1; - margin-bottom: 20px; - } - #osk .kmw-osk-inner-frame{ - height: 140px; - font-size: 1em !important; - } - #keymanExample{ - overflow-x: scroll; - overflow-y: hidden; - height: 100px; - } - #keymanExample table{ - width: 1000px; - } - .footer-tab-holder{ - display: none; - } -} - -#KeymanWebControl{ - display: none; -} - -/* Landscape mode */ -@media all and (min-width: 480px) and (max-width: 600px) and (orientation: landscape){ - .wrapper, #section2 .wrapper{ - width: 460px; - margin-left: auto; - margin-right: auto; - } - /* Header */ - /* Footer */ - .footer-third{ - margin-left: 70px; - margin-right: 70px; - } - .sil-logo{ - margin-left: 70px; - } - /* Section 1 */ -} - -/************************************** - * WEB DEVELOPER HELP CSS - * ***********************************/ - -div.webhelp { - clear: both; -} - -div.webhelp h3 { - margin: 16px 0 0 0; - padding: 0; -} - -div.webhelp h4 { - margin: 0 0 16px 0; - padding:0; -} -img.webhelp, div.webhelp img {margin:16px 0 !important;border: 1px solid grey;} - - -code { - font-family: Consolas, Courier, "Courier New", mono; - font-size: 10.5pt; -} - -strong, b { - font-weight: bold; -} - -i, cite, em, var, address, dfn { -font-style: italic; -} - -dt { - margin-top: 16px; -} - -dt:first-child { - margin-top: 0; -} - -dd { - margin-left: 32pt; -} - -table.standard-table td, -table.standard-table th { - border: solid #e0e0dc; - border-width: 0 1px 1px 0; - padding: 6px; - text-align: left; -} -table.standard-table th { - border: 2px solid #fff; - border-bottom: 2px solid #d4dde4; - background: #eaeff2; - background: rgba(212,221,228,.5); - font-family: 'Open Sans Light',sans-serif; - font-size: 14px; - padding: 2px 8px 4px; - font-weight: 700; -} - -table.standard-table td { - background-color: #f9fafb; - background-color: rgba(212,221,228,.15); - border: 2px solid #fff; - box-shadow: inset 0 -1px 0 0 #eaeff2; - box-shadow: inset 0 -1px 0 0 rgba(212,221,228,.5); -} - -article dl dt span.readonly { - background-color: #666769; - font-size: 13px; - color: white; - padding: 1px 6px 3px; - border-radius: 6px; -} - -article dl dd span.optional { - background-color: #9c9c9c; - font-size: 13px; - font-style: italic; - font-weight: lighter; - color: white; - padding: 1px 6px 3px; - border-radius: 6px; -} - -/** - Table of contents -- developer section only -*/ - -.column-right { - display: none; - float: right; -} - -.column-left { - display: none; - float: left; -} - -.column-left.show-index { - display: block; -} - -.column-right.show-toc { - display: block; -} - -/* TOC on narrow displays should be shown at top */ - -@media all and (max-width: 1279px){ - .column-right { - display: none !important; - float: none; - } - #toc.fixed { - position: static !important; - } - - #version-selector { - margin-right: 40px; - } -} - -@media all and (max-width: 1023px){ - .column-left { - display: none !important; - float: none; - } -} - -#toc.fixed { - position: fixed; - top: 102px; -} - -#toc { - top: 172px; - position: absolute; - right: 20px; - margin-right: 10px; - max-width: 256px; - padding-right: 10px; - background: rgba(242,242,242,0.9); - overflow: auto; - border-radius: 4px; -} - -#index { - margin-left: 10px; - width: 200px; - overflow: auto; -} - -#section2 #toc h3 { - padding: 8px 12px; - margin-top: 0px; - color: black; -} - -#section2 h3, #section2 h2 { - color: #B92034; - margin-top: 10px; -} - -#section2 a { - color: #B92034; -} - -#section2 #toc a { - color: black; -} - -#toc ul, -#index ul { - margin: 0; - padding: 0 0 8px 0; - list-style: none; -} - -#index li { - margin-left: 16px; -} - -#toc li { - list-style: none; - margin-left: 12px; -} - -#toc li, -#index li { - font-family: 'Calibri', sans-serif; - font-size: 11pt; - margin-bottom: 2px; -} - -#toc a, -#toc a:visited, -#index a, -#index a:visited { - color: black; - text-decoration: none; - display: block; -} - -#toc a:hover, -#index a:hover { - background: rgba(224,224,224,0.9); -} - -#index .current { - background: rgba(242,242,242,0.9); -} - -#toc .toc-h2 { - padding-left: 10px; -} - -#toc .toc-h3 { - padding-left: 20px; -} - -#toc .toc-h4 { - padding-left: 30px; -} - -#toc .toc-active a { - color: #69B7D2; -} diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/triangle.png b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/triangle.png deleted file mode 100644 index b0a200c11b..0000000000 Binary files a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/triangle.png and /dev/null differ diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/uninstalling-keyboards.php.html b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/uninstalling-keyboards.php.html deleted file mode 100644 index bf0d4f77cd..0000000000 --- a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/uninstalling-keyboards.php.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - Uninstalling Keyboards - Keyman for iPhone and iPad Help - - - - - - - - - - - - - -
-
-
- -
- Header bottom - -

Keyman.com

-
-
-
-
-
-
-

Index

-
-
-
-
-
-

Keyman for iPhone and iPad: Uninstalling Keyboards

- -

- To uninstall a keyboard, follow these steps. -

-

Access "Installed Languages"

-

First, open the "Settings" menu.

-

- -

-

- The "Installed Languages" menu found here manages your installed keyboards and dictionaries. -

-

- -

-

You should then see the following screen:

-

- -

- -

Removing the Keyboard

-

Start by selecting the language for the keyboard you wish to uninstall.

-

- -

-

- Swipe left on the keyboard you want to remove. You'll see a button to Delete. -

-

- -

-

- Click the Delete button to uninstall the keyboard. -

- -

Help Index

- -
-
-
-
- - - \ No newline at end of file diff --git a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/using-keyman-browser.php.html b/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/using-keyman-browser.php.html deleted file mode 100644 index 9bf49f3a53..0000000000 --- a/ios/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources/using-keyman-browser.php.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - Using the Keyman Browser - Keyman for iPhone and iPad Help - - - - - - - - - - - - - -
-
-
- -
- Header bottom - -

Keyman.com

-
-
-
-
-
-
-

Index

-
-
-
-
-
-

Keyman for iPhone and iPad: Using the Keyman Browser

- -

- Step 1) Click the Keyman Browser button in the Keyman app -
- Step 2) Enter the URL of a website to visit into the address bar, for example google.com Keyman Browser will load - the page and detect your language if it is present, and reformat it to show your language instead of square boxes. -
- Step 3) Use the bookmark button to save the current page for browsing later. -
- Step 4) Use the Globe icon to swap between languages. -

- -

Help Index

- -
-
-
-
- - - \ No newline at end of file diff --git a/ios/kmbuild.sh b/ios/kmbuild.sh index b25f0b8cdb..05faaa46c3 100755 --- a/ios/kmbuild.sh +++ b/ios/kmbuild.sh @@ -204,45 +204,52 @@ assertDirExists "$FRAMEWORK_PATH_UNIVERSAL" echo "KMEI build complete." if [ $DO_KEYMANAPP = true ]; then - # Provides a needed link for codesigning for our CI. - if ! [ -z "${DEVELOPMENT_TEAM}" ]; then - DEV_TEAM="DEVELOPMENT_TEAM=${DEVELOPMENT_TEAM}" - fi - - if [ $DO_ARCHIVE = false ]; then - xcodebuild $XCODEFLAGS_EXT $CODE_SIGN -scheme Keyman \ - VERSION=$VERSION \ - VERSION_WITH_TAG=$VERSION_WITH_TAG \ - VERSION_ENVIRONMENT=$VERSION_ENVIRONMENT \ - UPLOAD_SENTRY=$UPLOAD_SENTRY - - if [ $? -ne 0 ]; then - fail "Keyman app build failed." - fi - - else - # Time to prepare the deployment archive data. - echo "" - echo "Preparing .ipa file for deployment." - xcodebuild $XCODEFLAGS_EXT -scheme Keyman \ - -archivePath $ARCHIVE_PATH \ - archive -allowProvisioningUpdates \ - VERSION=$VERSION \ - VERSION_WITH_TAG=$VERSION_WITH_TAG \ - VERSION_ENVIRONMENT=$VERSION_ENVIRONMENT \ - UPLOAD_SENTRY=$UPLOAD_SENTRY - - assertDirExists "$ARCHIVE_PATH" - - xcodebuild $XCODEFLAGS -exportArchive -archivePath $ARCHIVE_PATH \ - -exportOptionsPlist exportAppStore.plist \ - -exportPath $BUILD_PATH/${CONFIG}-iphoneos -allowProvisioningUpdates + echo "" + echo "Building offline help." + ./build-help.sh html + + echo "" + echo "Building Keyman app." + + # Provides a needed link for codesigning for our CI. + if ! [ -z "${DEVELOPMENT_TEAM}" ]; then + DEV_TEAM="DEVELOPMENT_TEAM=${DEVELOPMENT_TEAM}" + fi + + if [ $DO_ARCHIVE = false ]; then + xcodebuild $XCODEFLAGS_EXT $CODE_SIGN -scheme Keyman \ + VERSION=$VERSION \ + VERSION_WITH_TAG=$VERSION_WITH_TAG \ + VERSION_ENVIRONMENT=$VERSION_ENVIRONMENT \ + UPLOAD_SENTRY=$UPLOAD_SENTRY + + if [ $? -ne 0 ]; then + fail "Keyman app build failed." fi + else + # Time to prepare the deployment archive data. echo "" - if [ $? = 0 ]; then - echo "Build succeeded." - else - fail "Build failed - please see the log above for details." - fi + echo "Preparing .ipa file for deployment." + xcodebuild $XCODEFLAGS_EXT -scheme Keyman \ + -archivePath $ARCHIVE_PATH \ + archive -allowProvisioningUpdates \ + VERSION=$VERSION \ + VERSION_WITH_TAG=$VERSION_WITH_TAG \ + VERSION_ENVIRONMENT=$VERSION_ENVIRONMENT \ + UPLOAD_SENTRY=$UPLOAD_SENTRY + + assertDirExists "$ARCHIVE_PATH" + + xcodebuild $XCODEFLAGS -exportArchive -archivePath $ARCHIVE_PATH \ + -exportOptionsPlist exportAppStore.plist \ + -exportPath $BUILD_PATH/${CONFIG}-iphoneos -allowProvisioningUpdates + fi + + echo "" + if [ $? = 0 ]; then + echo "Build succeeded." + else + fail "Build failed - please see the log above for details." + fi fi diff --git a/linux/keyman-config/debian/control b/linux/keyman-config/debian/control index c985a593c6..2795069759 100644 --- a/linux/keyman-config/debian/control +++ b/linux/keyman-config/debian/control @@ -19,10 +19,9 @@ Build-Depends: python3-pil, python3-pip, python3-qrcode, - python3-raven , + python3-raven | python3-sentry-sdk, python3-requests, python3-requests-cache, - python3-sentry-sdk , python3-setuptools, Standards-Version: 4.5.0 Vcs-Git: https://github.com/keymanapp/keyman.git @@ -71,8 +70,7 @@ Depends: kmflcomp (>=10.99.33), python3-bs4, python3-gi, - python3-raven , - python3-sentry-sdk , + python3-raven | python3-sentry-sdk, ${misc:Depends}, ${python3:Depends}, Description: Keyman for Linux configuration diff --git a/linux/keyman-config/km-package-list-installed b/linux/keyman-config/km-package-list-installed index 42ca05e645..fd7baa5e32 100755 --- a/linux/keyman-config/km-package-list-installed +++ b/linux/keyman-config/km-package-list-installed @@ -7,11 +7,11 @@ from keyman_config import __version__ def main(): - parser = argparse.ArgumentParser(description='Show installed Keyman keyboards with name, version, id.') + parser = argparse.ArgumentParser(description='Show installed Keyman keyboard packages with name, version, id.') parser.add_argument('-l', "--long", help='long format also shows description', action="store_true") - parser.add_argument('-s', "--shared", help='show those installed in shared areas', action="store_true") + parser.add_argument('-s', "--shared", help='show those installed in shared area', action="store_true") parser.add_argument('-o', "--os", help='show those installed by the OS', action="store_true") - parser.add_argument('-u', "--user", help='show those installed in user areas', action="store_true") + parser.add_argument('-u', "--user", help='show those installed in user area', action="store_true") parser.add_argument('--version', action='version', version='%(prog)s version ' + __version__) parser.add_argument('-v', '--verbose', action='store_true', help='verbose logging') parser.add_argument('-vv', '--veryverbose', action='store_true', help='very verbose logging') @@ -25,18 +25,28 @@ def main(): logging.basicConfig(format='%(levelname)s:%(message)s') all = not args.user and not args.shared and not args.os - from keyman_config.list_installed_kmp import get_installed_kmp, InstallArea + from keyman_config.list_installed_kmp import get_installed_kmp, get_install_area_path, InstallArea if args.user or all: installed_kmp = get_installed_kmp(InstallArea.IA_USER) - print("--- Installed user keyboards ---") + if args.verbose or args.veryverbose: + print("--- Installed user Keyman keyboard packages (%s) ---" % (get_install_area_path(InstallArea.IA_USER))) + else: + print("--- Installed user Keyman keyboard packages ---") print_keyboards(installed_kmp, args.long) if args.shared or all: installed_kmp = get_installed_kmp(InstallArea.IA_SHARED) - print("--- Installed shared keyboards ---") + if args.verbose or args.veryverbose: + print("--- Installed shared Keyman keyboard packages (%s) ---" % + (get_install_area_path(InstallArea.IA_SHARED))) + else: + print("--- Installed shared Keyman keyboard packages ---") print_keyboards(installed_kmp, args.long) if args.os or all: installed_kmp = get_installed_kmp(InstallArea.IA_OS) - print("--- Installed OS keyboards ---") + if args.verbose or args.veryverbose: + print("--- Installed OS Keyman keyboard packages (%s) ---" % (get_install_area_path(InstallArea.IA_OS))) + else: + print("--- Installed OS Keyman keyboard packages ---") print_keyboards(installed_kmp, args.long) @@ -45,10 +55,10 @@ def print_keyboards(installed_kmp, verbose): print(installed_kmp[packageID]['name'] + ", version:", installed_kmp[packageID]['version'] + ", id:", packageID) if verbose: if installed_kmp[packageID]['version'] != installed_kmp[packageID]['kmpversion']: - print("Version mismatch. Installed keyboard is %s. Website says it is %s." + print("Version mismatch. Installed keyboard package is %s. Website says it is %s." % (installed_kmp[packageID]['kmpversion'], installed_kmp[packageID]['version'])) if installed_kmp[packageID]['name'] != installed_kmp[packageID]['kmpname']: - print("Name mismatch. Installed keyboard is %s. Website says it is %s." + print("Name mismatch. Installed keyboard package is %s. Website says it is %s." % (installed_kmp[packageID]['name'], installed_kmp[packageID]['kmpname'])) if installed_kmp[packageID]['description']: diff --git a/mac/help/about/history.md b/mac/help/about/history.md new file mode 100644 index 0000000000..3a0b9af3a6 --- /dev/null +++ b/mac/help/about/history.md @@ -0,0 +1,8 @@ +--- +title: Version History +--- + +A frequent updated changelog for Keyman is kept at [help.keyman.com/version-history](https://help.keyman.com/version-history/) on the Keyman Help website. + +## Related Topics +* [What's New](whatsnew) diff --git a/mac/help/about/index.md b/mac/help/about/index.md new file mode 100644 index 0000000000..12e0a682cc --- /dev/null +++ b/mac/help/about/index.md @@ -0,0 +1,8 @@ +--- +title: About Keyman for macOS +--- + +* [Welcome to Keyman](welcome) +* [What's New](whatsnew) +* [System Requirements](requirements) +* [Version History](history) diff --git a/mac/help/about/requirements.md b/mac/help/about/requirements.md new file mode 100644 index 0000000000..b1c3123be7 --- /dev/null +++ b/mac/help/about/requirements.md @@ -0,0 +1,19 @@ +--- +title: System Requirements +--- + +## Supported Mac Operating Systems + +Keyman 14.0 supports the following Mac operating systems: + +* Mac OS X Yosemite (10.10) +* Mac OS X El Capitan (10.11) +* macOS Sierra (10.12) +* macOS High Sierra (10.13) +* macOS Mojave (10.14) +* macOS Catalina (10.15) + +## Resource Requirements + +Keyman for macOS has minimal resource requirements. Any computer running +Mac OS X 10.10 or later should be able to run Keyman for macOS without trouble. diff --git a/mac/help/about/welcome.md b/mac/help/about/welcome.md new file mode 100644 index 0000000000..5bd92f2fd8 --- /dev/null +++ b/mac/help/about/welcome.md @@ -0,0 +1,26 @@ +--- +title: Welcome to Keyman +--- + +Thank you for installing Keyman for macOS. Whether you're a new or returning user, +we believe you will appreciate the significant enhancements in this latest +version of Keyman for macOS. + +## What is Keyman for for macOS? + +Keyman for macOS brings an extensive library of keyboards for over 1,000 +languages to macOS. You can even create your own custom keyboards with +[Keyman Developer](https://keyman.com/developer) (a Windows product). + +Our unique virtual keyboard technology makes it easy to type in all your programs, +including Microsoft Office, Adobe Creative Suite, internet browsers and more, as well as +supporting the latest version of macOS. + +A list of new features in Keyman is available [here](whatsnew). + +![](../mac_images/osk_amharic.png) + +## Related Topics + +- [What's New](whatsnew) +- [System Requirements](requirements) diff --git a/mac/help/about/whatsnew.md b/mac/help/about/whatsnew.md new file mode 100644 index 0000000000..8b3ad4c333 --- /dev/null +++ b/mac/help/about/whatsnew.md @@ -0,0 +1,11 @@ +--- +title: What's New +--- + +Here are some of the new features we have added to Keyman 14.0 for macOS: + +* Added icon for Keyman app (#3892) +* Improved compatibility with Java apps (#3944) +* Added support for European layouts in On Screen Keyboard (#3924) +* Made it possible to specify app compatibility modes as a user default (#3949) +* Improved input reliability with modifier keys and cursor keys (#2588, #3946) diff --git a/mac/help/basic/config/index.md b/mac/help/basic/config/index.md new file mode 100644 index 0000000000..a288a787b0 --- /dev/null +++ b/mac/help/basic/config/index.md @@ -0,0 +1,31 @@ +--- +title: Keyman Configuration +--- + +The Configuration window allows you to change several things about the way +Keyman works, as well as access information about installed keyboards. + +## Opening Keyman Configuration +To open Keyman Configuration: + +1. ![mac OS menu bar](../../mac_images/menu_bar_keyman.png) + + Make sure that Keyman for macOS is the active input source (as shown above). + For more information, see [Getting Started with Keyman for macOS](../../start/tutorial). +2. Click the Keyman icon to display the Input menu. +3. On the Input menu, in the section for Keyman, click **Configuration**. Note: If you just + installed Keyman and the Configuration menu is not available, please restart the computer. + + ![Keyman Configuration in menu](../../mac_images/keyman_menu_config.png) + +4. The Keyman Configuration window appears: + ![Keyman Configuration](../../mac_images/keyman_config.png) + +## Using Keyman Configuration + +Following are instructions for performing various tasks in the Configuration window: + +- [Keyman Configuration - Keyboard Layouts Tab](keyboards) +- [Keyman Configuration - Options Tab](options) +- [Keyman Configuration - Support Tab](support) + diff --git a/mac/help/basic/config/keyboards.md b/mac/help/basic/config/keyboards.md new file mode 100644 index 0000000000..7305053714 --- /dev/null +++ b/mac/help/basic/config/keyboards.md @@ -0,0 +1,54 @@ +--- +title: Keyman Configuration - Keyboard Layouts Tab +--- + +## Enable and Disable a Keyboard + +Keyman keyboards can be enabled and disabled. Disabling a Keyman keyboard removes +it from the Keyman menu and Keyman Toolbox but does not uninstall the keyboard. +This is useful if: + +* You are using a single keyboard layout from a package with multiple + keyboards and you want to remove the extra keyboards from the Keyman + Toolbox and menu. + +* You have a keyboard layout installed which you aren't currently using but don't + want to uninstall. + +To disable a Keyman keyboard, untick the corresponding checkbox. To enable a +disabled keyboard, tick the checkbox. + +## Remove Keyboards + +Removing a Keyman keyboard package uninstalls and deletes the entire +package. Although you can disable individual keyboards (as described above), +if an installed package contains more than one keyboard, you cannot remove +them individually. + +To remove a keyboard package, click the delete button +![-](../../mac_images/remove_button.png) in the far right of the row with the +package name. + +## Display Keyboard Information + +All Keyman keyboard packages contain some basic metadata information, +such as the name and version, included fonts, author, and copyright. To +display this information, click the information button +![(i)](../../mac_images/information_button.png) to the right of the package name. + +## Display Keyboard Help + +Many Keyman keyboard packages contain help files, with instructions for +learning to use the keyboard(s) to type special characters. This is +especially helpful for keyboards that use multiple key sequences to +generate characters, since it is not usually possible to convey this +information via an on-screen keyboard showing the individual characters +associated with the keys on the physical keyboard. To open a window that +will allow you to view the keyboard help, click the help button +![?](../../mac_images/help_button.png) to the right of the package name. (If +this button is disabled, it means that no help files were included in the +package.) + +## Related Topics + +- [Keyman Configuration](../config/) diff --git a/mac/help/basic/config/options.md b/mac/help/basic/config/options.md new file mode 100644 index 0000000000..f863536354 --- /dev/null +++ b/mac/help/basic/config/options.md @@ -0,0 +1,28 @@ +--- +title: Keyman Configuration - Options Tab +--- + +## Keyman Configuration Options + +If you select the **Options** tab on the Keyman Configuration window, you +will see that there are two configuration options that affect the general +behavior of Keyman, regardless of which keyboard is active: + +* **Always show on-screen keyboard**: If this option is ticked, the + on-screen keyboard will be displayed automatically whenever Keyman + becomes the active input source. + +* **Use verbose Console logging**: If this option is ticked, advanced + troubleshooting information will be sent to the system log. If the + Keyman development team is assisting you to resolve a problem, they + might instruct you to enable this option so you can supply them with a + log of important debugging messages from Keyman. You can view this log + information yourself using the Console utility, by filtering to show + only messages from the Keyman process (although it probably won't be + very meaningful to you unless you are a computer programmer and you are + looking at the Keyman for macOS source code). Console is a log viewer + developed by Apple Inc. and included with macOS. + +## Related Topics + +- [Keyman Configuration](../config/) diff --git a/mac/help/basic/config/support.md b/mac/help/basic/config/support.md new file mode 100644 index 0000000000..17cdab9974 --- /dev/null +++ b/mac/help/basic/config/support.md @@ -0,0 +1,12 @@ +--- +title: Keyman Configuration - Support Tab +--- + + +The **Support** tab on the Keyman Configuration window displays the same +program help information available on-line at +[help.keyman.com/products/mac](https://help.keyman.com/products/mac/) + +## Related Topics + +- [Keyman Configuration](../config/) diff --git a/mac/help/basic/index.md b/mac/help/basic/index.md new file mode 100644 index 0000000000..8b3d0df07a --- /dev/null +++ b/mac/help/basic/index.md @@ -0,0 +1,5 @@ +--- +title: Basic Help +--- + +* [Keyman Configuration](config/) diff --git a/mac/help/common/adware.md b/mac/help/common/adware.md new file mode 100644 index 0000000000..a29e146ca6 --- /dev/null +++ b/mac/help/common/adware.md @@ -0,0 +1,14 @@ +--- +title: Does Keyman for macOS include adware or spyware? +--- + +Simple answer: No! + +We never have and never will include adware or spyware components. + +We take your privacy seriously. Keyman does include an error reporting +component, so if you find Keyman crashing, it will report the error to +our server. The error report will contain details about your system +configuration, such as operating system version and free disk space, +but contains no personal data. This information helps us to address +the problem. diff --git a/mac/help/common/bug.md b/mac/help/common/bug.md new file mode 100644 index 0000000000..8c67a85936 --- /dev/null +++ b/mac/help/common/bug.md @@ -0,0 +1,7 @@ +--- +title: I think I found a bug! How can I tell you about it? +--- + +We want to hear about problems you experience: if we don't +hear about the problem, we can't fix it! So please do send bug reports +through to the [SIL Keyman Community](https://community.software.sil.org/c/keyman) diff --git a/mac/help/common/free.md b/mac/help/common/free.md new file mode 100644 index 0000000000..a5e908b5f9 --- /dev/null +++ b/mac/help/common/free.md @@ -0,0 +1,10 @@ +--- +title: Is Keyman for macOS really free? +--- + +Yes! As with all Keyman products, Keyman for macOS is completely free. + +The source code for Keyman is freely available as well: you can download +the code, change it, distribute your own version of Keyman, or contribute +your improvments back to the Keyman project so we can all benefit. +[Learn more](https://keyman.com/about/get-involved) diff --git a/mac/help/common/index.md b/mac/help/common/index.md new file mode 100644 index 0000000000..8fe9d2274c --- /dev/null +++ b/mac/help/common/index.md @@ -0,0 +1,12 @@ +--- +title: Common Questions about Keyman for macOS +--- + +* [Which versions does Keyman for macOS work with?](os) +* [What are Keyman's hardware requirements?](requirements) +* [Which keyboards work on Mac?](keyboards) +* [Does Keyman for macOS include adware or spyware?](adware) +* [Does Keyman for macOS include a virtual on-screen keyboard?](osk) +* [Is Keyman for macOS really free?](free) +* [Will you help me install Keyman?](support) +* [I think I found a bug! How can I tell you about it?](bug) diff --git a/mac/help/common/keyboards.md b/mac/help/common/keyboards.md new file mode 100644 index 0000000000..2b43713113 --- /dev/null +++ b/mac/help/common/keyboards.md @@ -0,0 +1,11 @@ +--- +title: Which keyboards work on Mac? +--- + +Most Keyman keyboards work on Mac. A small subset of keyboards require features which +are not yet available in version 14.0. These features will be progressively implemented. +Keyman for macOS will inform you when you attempt to install a keyboard if it is using +a currently unsupported feature. + +The [Keyman keyboard catalogue](https://keyman.com/keyboards) also includes information +about macOS compatibility for each keyboard. diff --git a/mac/help/common/os.md b/mac/help/common/os.md new file mode 100644 index 0000000000..79b2b5e4fb --- /dev/null +++ b/mac/help/common/os.md @@ -0,0 +1,14 @@ +--- +title: Which versions does Keyman for macOS work with? +--- + +## Supported Mac Operating Systems + +Keyman 14.0 supports the following Mac operating systems: + +* Mac OS X Yosemite (10.10) +* Mac OS X El Capitan (10.11) +* macOS Sierra (10.12) +* macOS High Sierra (10.13) +* macOS Mojave (10.14) +* macOS Catalina (10.15) diff --git a/mac/help/common/osk.md b/mac/help/common/osk.md new file mode 100644 index 0000000000..3589eeb464 --- /dev/null +++ b/mac/help/common/osk.md @@ -0,0 +1,9 @@ +--- +title: Does Keyman for macOS include a virtual on-screen keyboard? +--- + +Yes, Keyman includes an on-screen keyboard. Most Keyman keyboards include +the information needed to display the on screen keyboard. + +To display the on-screen keyboard for the currently selected Keyman keyboard, +in the Input menu, point to Keyman, and then click On-Screen Keyboard. diff --git a/mac/help/common/requirements.md b/mac/help/common/requirements.md new file mode 100644 index 0000000000..b54aa64bfd --- /dev/null +++ b/mac/help/common/requirements.md @@ -0,0 +1,6 @@ +--- +title: What are Keyman's hardware requirements? +--- + +Keyman for macOS has minimal resource requirements. Any computer running +Mac OS X 10.10 or later should be able to run Keyman for macOS without trouble. diff --git a/mac/help/common/support.md b/mac/help/common/support.md new file mode 100644 index 0000000000..3c4b9f8f35 --- /dev/null +++ b/mac/help/common/support.md @@ -0,0 +1,8 @@ +--- +title: Will you help me install Keyman? +--- + +SIL is pleased to provide Keyman software for free. However, we do not have the resources to +provide free technical support. We do our best to monitor the +[Keyman community forum](https://community.software.sil.org/c/keyman) for technical issues that +warrant support, so if you post a question there, someone may be able to assist you. \ No newline at end of file diff --git a/mac/help/index.md b/mac/help/index.md new file mode 100644 index 0000000000..d564804a90 --- /dev/null +++ b/mac/help/index.md @@ -0,0 +1,49 @@ +--- +title: Keyman 14.0 for macOS Help +--- + +Need help using Keyman 14.0 for macOS? You'll find everything you need here, including product documentation, +frequently asked questions, tutorials and videos. + +## [About Keyman](about/) +* [Welcome to Keyman](about/welcome) +* [What's New](about/whatsnew) +* [System Requirements](about/requirements) +* [Version History](about/history) + +## [Getting Started](start/tutorial) +* [Step-by-step Guide](start/tutorial) +* [Tutorial: Installing Keyman](start/install-keyman) +* [Tutorial: Installing a keyboard](start/install-keyboard) + +## [Common Questions](common/) +* [Which versions does Keyman for macOS work with?](common/os) +* [What are Keyman's hardware requirements?](common/requirements) +* [Which keyboards work on Mac?](common/keyboards) +* [Does Keyman for macOS include adware or spyware?](common/adware) +* [Does Keyman for macOS include a virtual on-screen keyboard?](common/osk) +* [Is Keyman for macOS really free?](common/free) +* [Will you help me install Keyman?](common/support) +* [I think I found a bug! How can I tell you about it?](common/bug) + +## Ask for Help +[Ask other users in the SIL Keyman Community](https://community.software.sil.org/c/keyman) + +## Help Topics + +### [Troubleshooting](troubleshooting/) +* [Configure macOS security for Keyman](troubleshooting/configure-security) +* [Uninstalling Keyman](troubleshooting/uninstall-keyman) + +### Using Keyman for macOS +* [Configuration Tasks](basic/config/) + +### Advanced Topics +* [Keyman for macOS version history](https://help.keyman.com/products/mac/version-history) + +## Other Resources +* [Knowledge Base](https://help.keyman.com/kb) +* [Keyman Developer Help](https://help.keyman.com/developer) +* [KeymanWeb Help](https://help.keyman.com/products/web) +* [Keyman for Windows Help](https://help.keyman.com/products/windows) +* [Keyman for Linux Help](https://help.keyman.com/products/linux) diff --git a/mac/help/mac_images/add.png b/mac/help/mac_images/add.png new file mode 100644 index 0000000000..bbcf7454dc Binary files /dev/null and b/mac/help/mac_images/add.png differ diff --git a/mac/help/mac_images/add_keyman.png b/mac/help/mac_images/add_keyman.png new file mode 100644 index 0000000000..c34d8ebfb6 Binary files /dev/null and b/mac/help/mac_images/add_keyman.png differ diff --git a/mac/help/mac_images/apple_menu.png b/mac/help/mac_images/apple_menu.png new file mode 100644 index 0000000000..fb4dd0a60f Binary files /dev/null and b/mac/help/mac_images/apple_menu.png differ diff --git a/mac/help/mac_images/go_to_folder.png b/mac/help/mac_images/go_to_folder.png new file mode 100644 index 0000000000..b72aa42559 Binary files /dev/null and b/mac/help/mac_images/go_to_folder.png differ diff --git a/mac/help/mac_images/help_button.png b/mac/help/mac_images/help_button.png new file mode 100644 index 0000000000..e9cba61c2e Binary files /dev/null and b/mac/help/mac_images/help_button.png differ diff --git a/mac/help/mac_images/icon-fonts.png b/mac/help/mac_images/icon-fonts.png new file mode 100644 index 0000000000..cd235433c4 Binary files /dev/null and b/mac/help/mac_images/icon-fonts.png differ diff --git a/mac/help/mac_images/icon-help.png b/mac/help/mac_images/icon-help.png new file mode 100644 index 0000000000..2e8c2f40ba Binary files /dev/null and b/mac/help/mac_images/icon-help.png differ diff --git a/mac/help/mac_images/icon-intro.png b/mac/help/mac_images/icon-intro.png new file mode 100644 index 0000000000..cfd2310e0a Binary files /dev/null and b/mac/help/mac_images/icon-intro.png differ diff --git a/mac/help/mac_images/icon-keyman.png b/mac/help/mac_images/icon-keyman.png new file mode 100644 index 0000000000..de36600859 Binary files /dev/null and b/mac/help/mac_images/icon-keyman.png differ diff --git a/mac/help/mac_images/icon-osk.png b/mac/help/mac_images/icon-osk.png new file mode 100644 index 0000000000..a1cbdc416a Binary files /dev/null and b/mac/help/mac_images/icon-osk.png differ diff --git a/mac/help/mac_images/icon-unicode.png b/mac/help/mac_images/icon-unicode.png new file mode 100644 index 0000000000..edeb18f039 Binary files /dev/null and b/mac/help/mac_images/icon-unicode.png differ diff --git a/mac/help/mac_images/information_button.png b/mac/help/mac_images/information_button.png new file mode 100644 index 0000000000..8a8b5dbd76 Binary files /dev/null and b/mac/help/mac_images/information_button.png differ diff --git a/mac/help/mac_images/input_menu.png b/mac/help/mac_images/input_menu.png new file mode 100644 index 0000000000..fd0a0b0840 Binary files /dev/null and b/mac/help/mac_images/input_menu.png differ diff --git a/mac/help/mac_images/keyboards_menu.png b/mac/help/mac_images/keyboards_menu.png new file mode 100644 index 0000000000..fcf7966dda Binary files /dev/null and b/mac/help/mac_images/keyboards_menu.png differ diff --git a/mac/help/mac_images/keyman_config.png b/mac/help/mac_images/keyman_config.png new file mode 100644 index 0000000000..cb58a6b6fc Binary files /dev/null and b/mac/help/mac_images/keyman_config.png differ diff --git a/mac/help/mac_images/keyman_install.png b/mac/help/mac_images/keyman_install.png new file mode 100644 index 0000000000..95ade979fd Binary files /dev/null and b/mac/help/mac_images/keyman_install.png differ diff --git a/mac/help/mac_images/keyman_menu_config.png b/mac/help/mac_images/keyman_menu_config.png new file mode 100644 index 0000000000..07cc664c36 Binary files /dev/null and b/mac/help/mac_images/keyman_menu_config.png differ diff --git a/mac/help/mac_images/menu_bar.png b/mac/help/mac_images/menu_bar.png new file mode 100644 index 0000000000..0d74ebf79d Binary files /dev/null and b/mac/help/mac_images/menu_bar.png differ diff --git a/mac/help/mac_images/menu_bar_keyman.png b/mac/help/mac_images/menu_bar_keyman.png new file mode 100644 index 0000000000..6a68897cdc Binary files /dev/null and b/mac/help/mac_images/menu_bar_keyman.png differ diff --git a/mac/help/mac_images/osk_amharic.png b/mac/help/mac_images/osk_amharic.png new file mode 100644 index 0000000000..d636ae0404 Binary files /dev/null and b/mac/help/mac_images/osk_amharic.png differ diff --git a/mac/help/mac_images/privacy_accessibility.png b/mac/help/mac_images/privacy_accessibility.png new file mode 100644 index 0000000000..9af915507d Binary files /dev/null and b/mac/help/mac_images/privacy_accessibility.png differ diff --git a/mac/help/mac_images/privacy_files_and_folders.png b/mac/help/mac_images/privacy_files_and_folders.png new file mode 100644 index 0000000000..7ffddb7f73 Binary files /dev/null and b/mac/help/mac_images/privacy_files_and_folders.png differ diff --git a/mac/help/mac_images/privacy_input_monitoring.png b/mac/help/mac_images/privacy_input_monitoring.png new file mode 100644 index 0000000000..3b4310262b Binary files /dev/null and b/mac/help/mac_images/privacy_input_monitoring.png differ diff --git a/mac/help/mac_images/privacy_input_monitoring_locked.png b/mac/help/mac_images/privacy_input_monitoring_locked.png new file mode 100644 index 0000000000..e5652b06d7 Binary files /dev/null and b/mac/help/mac_images/privacy_input_monitoring_locked.png differ diff --git a/mac/help/mac_images/remove.png b/mac/help/mac_images/remove.png new file mode 100644 index 0000000000..bbb4cee892 Binary files /dev/null and b/mac/help/mac_images/remove.png differ diff --git a/mac/help/mac_images/remove_button.png b/mac/help/mac_images/remove_button.png new file mode 100644 index 0000000000..a01314556e Binary files /dev/null and b/mac/help/mac_images/remove_button.png differ diff --git a/mac/help/mac_images/remove_keyman.png b/mac/help/mac_images/remove_keyman.png new file mode 100644 index 0000000000..846c88437e Binary files /dev/null and b/mac/help/mac_images/remove_keyman.png differ diff --git a/mac/help/mac_images/system_preferences.png b/mac/help/mac_images/system_preferences.png new file mode 100644 index 0000000000..d6e66dcc77 Binary files /dev/null and b/mac/help/mac_images/system_preferences.png differ diff --git a/mac/help/start/index.md b/mac/help/start/index.md new file mode 100644 index 0000000000..7818eee925 --- /dev/null +++ b/mac/help/start/index.md @@ -0,0 +1,6 @@ +--- +title: Getting started +--- +* [Getting started with Keyman for macOS](tutorial) +* [Install Keyman for macOS](install-keyman) +* [Install a Keyman Keyboard](install-keyboard) diff --git a/mac/help/start/install-keyboard.md b/mac/help/start/install-keyboard.md new file mode 100644 index 0000000000..6d22793586 --- /dev/null +++ b/mac/help/start/install-keyboard.md @@ -0,0 +1,72 @@ +--- +title: Install a Keyman Keyboard +--- + +You must have a Keyman keyboard installed to type with Keyman for macOS in your language. + +## Downloading and Installing a Keyman Keyboard within Keyman for macOS + +Here's how to download and install a Keyman keyboard within Keyman for macOS: + +1. Choose Keyman from the Input menu in the menu bar. +2. Open Keyman Configuration, from the Configuration link under Keyman in the Input menu. + Note: If you just installed Keyman and the Configuration menu is not available, please + restart the computer. + + ![Keyman Configuration in menu](../mac_images/keyman_menu_config.png) + +3. Select the Keyboard Layouts tab. +4. Click **Download keyboard…**. +5. From the dropdown boxes, find a language associated with your keyboard and click **Search**. +6. Click **Install Keyboard** for the keyboard you want to install. +7. Click **Done**. The keyboard will be installed automatically and + you will see a Keyboard/Package Info window. + +## Installing a Keyman Keyboard from a Folder on Your Computer + +There are two ways to install a keyboard from your computer. The easiest way is simply +to find the keyboard package (.KMP file) on your computer using Finder and double-click. +When prompted whether or not to install the package, click Yes. (If you don't see the +dialog box, it might be hiding behind your Finder window.) + +The other way is to drag and drop a keyboard package file onto the Keyman Configuration +window. Here's how: + +1. Choose Keyman from the Input menu in the menu bar. +2. Open Keyman Configuration, from the Configuration link under Keyman in the Input menu. + + ![Keyman Configuration in menu](../mac_images/keyman_menu_config.png) + +3. Select the Keyboard Layouts tab. +4. Back in Finder, find the keyboard package on your computer. Keyman keyboard packages + have a file name that ends with .kmp. +5. Drag and drop the keyboard package file in the installed keyboards list in Keyman + Configuration window. + + **Note:** You can drag and drop multiple keyboard packages at once. + + +## After installation + +**Tip:** The Keyboard/Package Info window includes some helpful information about +the keyboard you have installed. In addition to the name and version of the keyboard, +the dialog may also show: +* Fonts installed with the keyboard. +* Author name and contact information. +* Specific help and readme information (under the readme tab). + +**Note:** Keyman keyboards are installed for the current user only. You can find +the installed keyboards in 'Documents/Keyman-Keyboards' folder; however, you should +not delete or modify this folder or its contents. + +1. To enable/disable a keyboard; click on the check box next to the keyboard. +2. You can now select a Keyman keyboard from the Keyboards menu under Keyman in the + Input menu. + +**Note:** Only enabled keyboards will be displayed in the Keyboards menu under Keyman +in the Input menu. + +## Related topics + +* [Install Keyman](install-keyman) +* [Keyman Configuration](../basic/config/) diff --git a/mac/help/start/install-keyman.md b/mac/help/start/install-keyman.md new file mode 100644 index 0000000000..315d9f81ed --- /dev/null +++ b/mac/help/start/install-keyman.md @@ -0,0 +1,38 @@ +--- +title: Install Keyman for macOS +--- + +*Keyman for macOS* is available for [download](https://keyman.com/mac/download) as a standard +Apple Disk Image (.dmg) file. It should be installed according to the following instructions. + +1. Double click the DMG file to open it in Finder. +2. Double click the **Install Keyman** icon to open the Keyman installer. +3. You will be prompted to install Keyman. Follow the prompts to complete installation. + +4. Keyman should now be an option in the Input Sources menu towards the right hand + side of the menu bar. + + ![Input Sources menu](../mac_images/input_menu.png) + + **Note**: On recent versions of macOS, the first time you enable Keyman by selecting Keyman + from the menu, you will be prompted to give certain permissions to Keyman. It is + important that you allow Keyman these permissions, otherwise it will not be able + to remap the keyboard. [More information on permissions](../troubleshooting/configure-security) + +4. Click the input menu and switch to Keyman. Click the input menu again to see the + installed keyboards in Keyman:Keyboards menu. + + This will show "(None)" at first. You may switch to another keyboard from this menu, + once they are installed. + + See [Install a Keyman Keyboard](install-keyboard) to learn how to install keyboards. + +5. Now you can start typing with the selected keyboard in any text editor or + application that uses standard macOS input methods. + +## How To - Updating Keyman for macOS + +When a new version of Keyman is released, you can update by following the instructions +above. + +**Note**: To uninstall Keyman for macOS, follow the steps in [Uninstall Keyman](../troubleshooting/uninstall-keyman). diff --git a/mac/help/start/tutorial.md b/mac/help/start/tutorial.md new file mode 100644 index 0000000000..2ad6a0842a --- /dev/null +++ b/mac/help/start/tutorial.md @@ -0,0 +1,81 @@ +--- +title: Getting started with Keyman for macOS +--- + +Follow these steps for a basic introduction to Keyman for macOS: + +**Note:** *Keyman for macOS* must be installed first. For help on +installing *Keyman for macOS*, please see: [Install Keyman for macOS](install-keyman). + +## Step 1: Is Keyman active? + +![Keyman menu bar](../mac_images/menu_bar_keyman.png) + +Check the menu bar near the date and time to see if Keyman for macOS is +active. If it is active you will see the Keyman icon: ![Keyman icon](../mac_images/icon-keyman.png) + +* If the Keyman icon is in the menu bar near the date/time, continue on to **Step 4**. + +## Step 2: Choose Keyman from Input Menu + +If the Keyman icon is not in the menu bar, choose **Keyman** from the Input menu in the +menu bar and continue on to **Step 4**. + +![Input menu](../mac_images/input_menu.png) + +The Input menu appears in the menu bar only if you enable at least two input +sources in Keyboard preferences. The Input menu is identified by a flag or character +that represents the input source currently in use. + +If Keyman is not in the Input menu, Keyman for macOS is not added as an input source. +Follow **Step 3** to add Keyman for macOS as an input source. + +## Step 3: Add Keyman for macOS + +To add Keyman for macOS as an input source: + +1. On the Apple menu, click System Preferences. + + ![Apple menu](../mac_images/apple_menu.png) + +2. Click Keyboard, select the **Input Sources** tab, and then click ![+](../mac_images/add.png). + +3. In the left-hand pane, select **Multiple Languages**, and then select **Keyman** in the + right-hand pane. + + ![Add Keyman](../mac_images/add_keyman.png) + +4. Click Add. + +Now, return to **Step 2**. + +## Step 4: Select a Keyman keyboard + +On the Input menu, point to Keyboards, and then select a Keyman keyboard. Note: If +the Keyman menu items are not available, please restart the computer. + +**Tip:**: If there are no Keyman keyboards in the Keyboards menu, you can learn +how to install one here: [Install a keyboard](../start/install-keyboard). + +## Step 5: Enable the On-Screen Keyboard + +![Amharic On Screen Keyboard](../mac_images/osk_amharic.png) + +To become familiar with the layout of a Keyman keyboard, use the +On-Screen Keyboard tool: On the Input menu, point to Keyman, and then click +On-Screen Keyboard. + +**Tip:**: You do not need to use the On-Screen Keyboard in order to type. You can turn it +off at any time. + +**Tip:**: Some Keyman keyboards do not include an On-Screen Keyboard. You will see +a standard US keyboard layout if the selected keyboard does not include an +On-Screen Keyboard. + +## Step 6: Start typing! + +You can now start typing in your language in almost any application. Use your +hardware keyboard or click the keys in the On-Screen Keyboard to type. + +**Note:** To return to using your normal keyboard, choose your default keyboard +from the Input menu in the menu bar. diff --git a/mac/help/troubleshooting/configure-security.md b/mac/help/troubleshooting/configure-security.md new file mode 100644 index 0000000000..0365b9962c --- /dev/null +++ b/mac/help/troubleshooting/configure-security.md @@ -0,0 +1,61 @@ +--- +title: How to configure macOS security options for Keyman +--- + +Keyman requires access to your keyboard in order to translate input. In macOS Catalina, there +are three different Privacy settings you will need to configure in order for Keyman to work +correctly: + +* **Privacy** / **Input Monitoring** +* **Privacy** / **Accessibility** +* **Privacy** / **Files and Folders** + +The Keyman installer will configure these privacy settings for you, and prompt you to allow access for Keyman. If you do not allow access at that time, you will need to follow the steps here in order to use Keyman. + +Symptoms that you may experience if Security & Privacy is not configured correctly include: + +* Some key combinations may not work +* You may find that some letters are duplicated or not deleted as you expect + +**Note:** Keyman may not appear under these settings until it has been run at least one +time. If Keyman does not appear in the relevant panes in System Preferences, select Keyman +from the Input Sources menu and try typing in an app. + +In some situations, even then, Keyman won't appear in the Accessibility setting. In this case, +macOS should prompt you the first time that Keyman needs access to Accessibility. + +## Enabling Keyman in macOS Privacy System Preferences + +1. Open **System Preferences**: + + ![System Preferences menu](../mac_images/apple_menu.png) + +2. Select **Security & Privacy**, and choose the **Privacy** tab: + + ![System Preferences](../mac_images/system_preferences.png) + +3. Select **Input Monitoring** and unlock the settings with the lock icon, + + ![Input Monitoring - not checked](../mac_images/privacy_input_monitoring_locked.png) + +4. Keyman should appear in the list. Tick the Keyman item: + + ![Input Monitoring](../mac_images/privacy_input_monitoring.png) + +5. Select **Accessibility**, and ensure that Keyman is ticked there as well: + + ![Accessibility](../mac_images/privacy_accessibility.png) + +6. Select **Files and Folders**, and ensure that Keyman has access to the **Documents** folder there: + + ![Files and Folders](../mac_images/privacy_files_and_folders.png) + +**Note:** You may be prompted to shut down Keyman in order for the changes to take +effect. If so, follow the prompts to allow the system to close Keyman. You'll need +to select an alternate input source from the Input Sources, and then switch back to +Keyman, to start using Keyman again. + +## Upgrading macOS + +You should only have to undertake this procedure once. However, if you upgrade your +version of macOS, and Keyman stops working, follow these steps to re-enable Keyman. diff --git a/mac/help/troubleshooting/index.md b/mac/help/troubleshooting/index.md new file mode 100644 index 0000000000..2190a7c3cb --- /dev/null +++ b/mac/help/troubleshooting/index.md @@ -0,0 +1,6 @@ +--- +title: Troubleshooting +--- + +* [Configure macOS security for Keyman](configure-security) +* [Uninstall Keyman for macOS](uninstall-keyman) diff --git a/mac/help/troubleshooting/uninstall-keyman.md b/mac/help/troubleshooting/uninstall-keyman.md new file mode 100644 index 0000000000..64ba2648e0 --- /dev/null +++ b/mac/help/troubleshooting/uninstall-keyman.md @@ -0,0 +1,25 @@ +--- +title: Uninstalling Keyman +--- + +To uninstall Keyman for macOS: + +1. Choose Apple menu > System Preferences. + + ![Apple menu](../mac_images/apple_menu.png) + +2. Click Keyboard, then click Input Sources. + +3. Select Keyman, then click ![-](../mac_images/remove.png): + ![Input Sources](../mac_images/remove_keyman.png) + +4. In Finder, on the **Go** menu, click **Go to Folder...** + +5. Type `~/Library/Input Methods`, then click **Go** + ![Go to Folder](../mac_images/go_to_folder.png) + +6. Right-click Keyman.app and choose **Move to Trash** + +**Note:** If you get the error 'The item "Keyman.app" can't be +moved to the Trash because it's open', log out and log back in +or restart your Mac and repeat the last step. diff --git a/oem/firstvoices/common/build_keyboards.sh b/oem/firstvoices/common/build_keyboards.sh index 7ead3ceb73..569a6e003d 100755 --- a/oem/firstvoices/common/build_keyboards.sh +++ b/oem/firstvoices/common/build_keyboards.sh @@ -35,11 +35,10 @@ function die { } function display_usage { - echo "Usage: build_keyboards.sh [-download-keyboards] [-download-js-keyboards] [-copy-keyboards] [-clean-keyboards] [-debug] [-h|-?]" + echo "Usage: build_keyboards.sh [-download-keyboards] [-copy-keyboards] [-clean-keyboards] [-debug] [-h|-?]" echo "Builds all keyboards used by the app and copies them into the" echo "target path." echo " -download-keyboards: Download fv_all.kmp from downloads.keyman.com" - echo " -download-js-keyboards: Download js keyboards from downloads.keyman.com" echo " -copy-keyboards: Only copy the keyboards; don't rebuild them" echo " -clean-keyboards: Clean the keyboards from this repo" echo " -debug: Build debug versions of the keyboards" @@ -50,7 +49,6 @@ DO_CLEAN=true DO_COPY=true DO_BUILD=true DO_DOWNLOAD=false -DO_JS_DOWNLOAD=false # Remove when iOS handles fv-all.kmp while [[ $# -gt 0 ]] ; do key="$1" @@ -60,12 +58,6 @@ while [[ $# -gt 0 ]] ; do DO_COPY=false DO_BUILD=false ;; - -download-js-keyboards) - DO_DOWNLOAD=true - DO_JS_DOWNLOAD=true - DO_COPY=false - DO_BUILD=false - ;; -copy-keyboards) DO_BUILD=false ;; @@ -145,28 +137,10 @@ if [ $DO_DOWNLOAD = true ]; then URL_DOWNLOAD=https://downloads.keyman.com URL_API_VERSION=${URL_DOWNLOAD}/api/keyboard/ - if [ $DO_JS_DOWNLOAD = true ]; then - # iOS still copies individual JS keyboard files - { - # Skip header line - read - - # Read CSV and build each referenced keyboard - while IFS=, read -r shortname id name region old_keyboard; do - echo "Downloading $id ($name)" - # Get latest version - URL_DOWNLOAD_FILE=`curl -s "$URL_API_VERSION/$id" | "$JQ" -r .js` - curl -s "$URL_DOWNLOAD_FILE" > "$SCRIPT_ROOT/$KEYBOARDS_TARGET/$id.js" - curl -s "${URL_DOWNLOAD_FILE%.*}.keyboard_info" > "$SCRIPT_ROOT/$KEYBOARDS_TARGET/$id.keyboard_info" - done - } < "$SCRIPT_ROOT/../keyboards.csv" - else - # Desktop and Android use fv_all.kmp - id="fv_all" - echo "Downloading $id" - URL_DOWNLOAD_FILE=`curl -s "$URL_API_VERSION/$id" | "$JQ" -r .kmp` - curl -s "$URL_DOWNLOAD_FILE" > "$SCRIPT_ROOT/$KEYBOARDS_TARGET/$id.kmp" - fi + id="fv_all" + echo "Downloading $id" + URL_DOWNLOAD_FILE=`curl -s "$URL_API_VERSION/$id" | "$JQ" -r .kmp` + curl -s "$URL_DOWNLOAD_FILE" > "$SCRIPT_ROOT/$KEYBOARDS_TARGET/$id.kmp" fi echo "Keyboards built successfully." diff --git a/oem/firstvoices/ios/FVShared/FVShared.swift b/oem/firstvoices/ios/FVShared/FVShared.swift index 84d8ee8614..c5148d119c 100644 --- a/oem/firstvoices/ios/FVShared/FVShared.swift +++ b/oem/firstvoices/ios/FVShared/FVShared.swift @@ -24,12 +24,13 @@ struct FVConstants { static let legacy_kFVKeyboardFilenameKey = "FVKeyboardFilename" // Keyboard files and paths - static let keyboardsPath = "Keyboards/files" + static let keyboardsPath = "Keyboards" + static let keyboardsPackage = "fv_all" + static let keyboardsPackageExt = "kmp" static let keyboardsCSVPath = "Keyboards" static let keyboardsCSVName = "keyboards" static let keyboardsCSVType = "csv" static let keyboardInfoType = "keyboard_info" - static let keyboardType = "js" // Instructions web page static let instructionsName = "setup" diff --git a/oem/firstvoices/ios/FirstVoices/FVKeyboardList.swift b/oem/firstvoices/ios/FirstVoices/FVKeyboardList.swift index 39dbe4a0ea..75ee364b47 100644 --- a/oem/firstvoices/ios/FirstVoices/FVKeyboardList.swift +++ b/oem/firstvoices/ios/FirstVoices/FVKeyboardList.swift @@ -194,49 +194,48 @@ class FVRegionStorage { while Manager.shared.removeKeyboard(at: 0) { } - // Iterate through the available keyboards + // Load the primary keyboards package so that we can install keyboards from it. + let keyboardPackagePath: String = Bundle.main.path(forResource: FVConstants.keyboardsPackage, + ofType: FVConstants.keyboardsPackageExt, + inDirectory: FVConstants.keyboardsPath)! + let pathUrl = URL(fileURLWithPath: keyboardPackagePath) + let keyboardsPackage: KeyboardKeymanPackage + do { + let package = try ResourceFileManager.shared.prepareKMPInstall(from: pathUrl) + guard package as? KeyboardKeymanPackage != nil else { + print("Failed to load \(FVConstants.keyboardsPackage).\(FVConstants.keyboardsPackageExt)") + return + } + keyboardsPackage = (package as? KeyboardKeymanPackage)! + } catch { + print("Failed to load \(FVConstants.keyboardsPackage).\(FVConstants.keyboardsPackageExt)") + return + } + + // Iterate through the available keyboards for region in keyboardList { let keyboards = region.keyboards for kb in keyboards { if loadedKeyboards.contains(kb.id) { - - // Load the .keyboard_info file and find its first language code - - var keyboardInfo: KeyboardInfo + // Install the keyboard from its package. do { - let kbinfoFilename: String = Bundle.main.path(forResource: kb.id, ofType: FVConstants.keyboardInfoType, inDirectory: FVConstants.keyboardsPath)! - keyboardInfo = try KeyboardInfoParser.decode(file: kbinfoFilename) - } catch { - print("Failed to load keyboard info for " + kb.id+": " + error.localizedDescription) + // Find the matching keyboard entry from the package. + // We currently rely on the package to track each keyboard's available language tags. + if let packageKbId = keyboardsPackage.installables.first(where: { entry in + // Each entry in the returned array corresponds to one supported language for the keyboard. + entry.contains { $0.id == kb.id } + // We only install the first available language. Easy to change, though. + }).map({ $0[0] })?.fullID { // then + try ResourceFileManager.shared.install(resourceWithID: packageKbId, from: keyboardsPackage) + } else { + print("Keyboard "+kb.id+" not found in primary keyboards package") continue - } - - // Preload the keyboard - - do { - let kbPath: String = Bundle.main.path(forResource: kb.id, - ofType: FVConstants.keyboardType, - inDirectory: FVConstants.keyboardsPath)! - let pathUrl = URL(fileURLWithPath: kbPath) - try Manager.shared.preloadFiles(forKeyboardID: kb.id, at: [pathUrl], shouldOverwrite: true) + } } catch { print("Failed to load preload "+kb.id+": " + error.localizedDescription) continue } - - // Install the keyboard into Keyman Engine - - let keyboard: InstallableKeyboard = InstallableKeyboard.init(id: kb.id, - name: kb.name, - languageID: keyboardInfo.languages.keys[keyboardInfo.languages.startIndex], - languageName: kb.name, - version: keyboardInfo.version, - isRTL: false, - font: nil, - oskFont: nil, - isCustom: true) - Manager.shared.addKeyboard(keyboard) } } } diff --git a/oem/firstvoices/ios/FirstVoices/ViewController.swift b/oem/firstvoices/ios/FirstVoices/ViewController.swift index 1d67e4d5ce..1081c390d1 100644 --- a/oem/firstvoices/ios/FirstVoices/ViewController.swift +++ b/oem/firstvoices/ios/FirstVoices/ViewController.swift @@ -21,22 +21,6 @@ class ViewController: UIViewController, UIWebViewDelegate { override func viewDidLoad() { super.viewDidLoad() - // - // Install all the .js files into Keyman Engine (doesn't show them in the keyboard list) - // - - let kbPaths: [String] = Bundle.main.paths(forResourcesOfType: FVConstants.keyboardType, - inDirectory: FVConstants.keyboardsPath) - for kbPath in kbPaths { - let pathUrl = URL(fileURLWithPath: kbPath) - let id = pathUrl.deletingPathExtension().lastPathComponent - do { - try Manager.shared.preloadFiles(forKeyboardID: id, at: [pathUrl], shouldOverwrite: true) - } catch { - print("Failed to preload "+id+": "+error.localizedDescription) - } - } - // // Show Instructions page // diff --git a/oem/firstvoices/ios/build.sh b/oem/firstvoices/ios/build.sh index 4b56f116f6..3f83c56d70 100755 --- a/oem/firstvoices/ios/build.sh +++ b/oem/firstvoices/ios/build.sh @@ -3,11 +3,11 @@ set -e export TARGET=FirstVoices -export KEYBOARDS_TARGET="$TARGET/Keyboards/files" +export KEYBOARDS_TARGET="$TARGET/Keyboards" export KEYBOARDS_CSV_TARGET="$TARGET/Keyboards/keyboards.csv" # TODO: support passing -copy-keyboards, -debug, -clean etc in to build_keyboards -../common/build_keyboards.sh -download-js-keyboards +../common/build_keyboards.sh -download-keyboards TARGET=FirstVoices # TODO: in the future build_common.sh should probably be shared with all oem products? diff --git a/oem/firstvoices/windows/.gitignore b/oem/firstvoices/windows/.gitignore index ad51cca561..58e1ecbc7a 100644 --- a/oem/firstvoices/windows/.gitignore +++ b/oem/firstvoices/windows/.gitignore @@ -6,6 +6,7 @@ src/inst/*.exe src/inst/download.mak src/inst/fv_all.kmp src/xml/localedef.dtd +src/xml/sentry.init.js **/Thumbs.db # Temporary ignores diff --git a/oem/firstvoices/windows/src/branding/menutitle.png b/oem/firstvoices/windows/src/branding/menutitle.png index 3cbd973be4..70d7fa600f 100644 Binary files a/oem/firstvoices/windows/src/branding/menutitle.png and b/oem/firstvoices/windows/src/branding/menutitle.png differ diff --git a/oem/firstvoices/windows/src/inst/Makefile b/oem/firstvoices/windows/src/inst/Makefile index a0e2ec268a..be9f4ad9f6 100644 --- a/oem/firstvoices/windows/src/inst/Makefile +++ b/oem/firstvoices/windows/src/inst/Makefile @@ -11,7 +11,7 @@ MSI=firstvoices.msi EXE=firstvoices.exe KMP=fv_all.kmp INTEXE=firstvoices-fv_all.exe -APPTITLE="FirstVoices Keyboards" +APPTITLE="Keyman for FirstVoices" TITLEIMAGE=setuptitle.png # If doing manual build of the project, manual-setup is the default target @@ -28,6 +28,9 @@ prereq: cd $(FVROOT)\src\inst $(MKVER_U) download.in download.mak + cd $(FVROOT)\src\xml + $(MKVER_U) sentry.init.js.in sentry.init.js + # # Build FirstVoices keyboards fv_all.kmp # diff --git a/oem/firstvoices/windows/src/inst/license.html b/oem/firstvoices/windows/src/inst/license.html index f8734937cf..9c601dc5c7 100644 --- a/oem/firstvoices/windows/src/inst/license.html +++ b/oem/firstvoices/windows/src/inst/license.html @@ -9,7 +9,7 @@ -

FirstVoices Keyboards

+

Keyman for FirstVoices and FirstVoices Keyboards

The MIT License

diff --git a/oem/firstvoices/windows/src/inst/license.rtf b/oem/firstvoices/windows/src/inst/license.rtf index c086fa8dfa..d26ff0142c 100644 Binary files a/oem/firstvoices/windows/src/inst/license.rtf and b/oem/firstvoices/windows/src/inst/license.rtf differ diff --git a/oem/firstvoices/windows/src/inst/setuptitle.png b/oem/firstvoices/windows/src/inst/setuptitle.png index c4d82690d4..1c2e00fe8f 100644 Binary files a/oem/firstvoices/windows/src/inst/setuptitle.png and b/oem/firstvoices/windows/src/inst/setuptitle.png differ diff --git a/oem/firstvoices/windows/src/xml/basekeyboard.xsl b/oem/firstvoices/windows/src/xml/basekeyboard.xsl index 0a993ff776..85bdf38672 100644 --- a/oem/firstvoices/windows/src/xml/basekeyboard.xsl +++ b/oem/firstvoices/windows/src/xml/basekeyboard.xsl @@ -1,20 +1,21 @@ - + - + - + + <xsl:value-of select="$locale/string[@name='S_BaseKeyboard_Title']"/> - config.css + - - - - - - - - -
-
-
- -
-
-
-
- - - -
- - - - - -
-
- -
-
- - - - - -
-
- - - -
-
- -
- -
-
- - - -
-
-
-
-
- -
-
- - - - - - -
-
- - - -
-
-
-
- -
-
-
-
- - - - -
-
-
-
-
-
-
- -
-
-
- - - info.png - - - - -
-
-
-
- -
-
-
-
-
-
-
-
-
- - - - -
- - - - font_ - - - - - % - - - - - - - char excluded - U+ - - - - - -
diff --git a/oem/firstvoices/windows/src/xml/globe.png b/oem/firstvoices/windows/src/xml/globe.png new file mode 100644 index 0000000000..ceb2d60db1 Binary files /dev/null and b/oem/firstvoices/windows/src/xml/globe.png differ diff --git a/oem/firstvoices/windows/src/xml/help.xsl b/oem/firstvoices/windows/src/xml/help.xsl index dbd20a37f9..16a1865438 100644 --- a/oem/firstvoices/windows/src/xml/help.xsl +++ b/oem/firstvoices/windows/src/xml/help.xsl @@ -11,11 +11,12 @@ - + + <xsl:value-of select="$locale/string[@name='S_HelpTitle']" /> - config.css + - - +
@@ -50,14 +50,14 @@ - defaultkeyboard.gif + /app/defaultkeyboard.gif - + /data/installkeyboard/package/?tag= height: 250px; width: 140px; border: solid 1px black - defaultpackage.gif + /app/defaultpackage.gif @@ -70,10 +70,10 @@
- +
@@ -82,13 +82,11 @@ - + /data/installkeyboard/bitmap/?tag= - - no_icon.gif - + @@ -106,7 +104,7 @@ - keyman:keyboard_installallusers + javascript:keyboard_install(true) 120px 1 @@ -115,7 +113,7 @@ 1 - keyman:keyboard_install + javascript:keyboard_install(false) 70px @@ -129,15 +127,32 @@ - - -
+ + + + + + + + + + +

- +
@@ -160,7 +175,7 @@ - + @@ -168,27 +183,46 @@ - + - - - - - + + + + + + + + + + + + + + + + + + + + + + - + - + - + @@ -207,7 +241,7 @@ - + \ No newline at end of file diff --git a/oem/firstvoices/windows/src/xml/keyman-desktop-for-first-voices-486x86-black.png b/oem/firstvoices/windows/src/xml/keyman-desktop-for-first-voices-486x86-black.png index 3b5ec042c7..60cfe5c77a 100644 Binary files a/oem/firstvoices/windows/src/xml/keyman-desktop-for-first-voices-486x86-black.png and b/oem/firstvoices/windows/src/xml/keyman-desktop-for-first-voices-486x86-black.png differ diff --git a/oem/firstvoices/windows/src/xml/keyman-desktop.png b/oem/firstvoices/windows/src/xml/keyman-desktop.png index e344653015..d902bbd122 100644 Binary files a/oem/firstvoices/windows/src/xml/keyman-desktop.png and b/oem/firstvoices/windows/src/xml/keyman-desktop.png differ diff --git a/oem/firstvoices/windows/src/xml/keyman.xsl b/oem/firstvoices/windows/src/xml/keyman.xsl index 110ee2e894..e96f064191 100644 --- a/oem/firstvoices/windows/src/xml/keyman.xsl +++ b/oem/firstvoices/windows/src/xml/keyman.xsl @@ -1,11 +1,11 @@ - + - + @@ -15,24 +15,29 @@ - + + + + <xsl:value-of select="$locale/string[@name='S_ConfigurationTitle']"/> - config.css - menu.css - - - - - - + + + + + + + + + - +
+
@@ -102,9 +95,9 @@
- list_hotkey_ - return list_keydown(event,'hotkey_'); - document.getElementById('list_hotkey_').focus(); return true; + list_hotkey_ + return list_keydown(event,'hotkey_'); + document.getElementById('list_hotkey_').focus(); return true;
@@ -112,7 +105,7 @@ - + @@ -122,13 +115,13 @@
diff --git a/oem/firstvoices/windows/src/xml/keyman_keepintouch.xsl b/oem/firstvoices/windows/src/xml/keyman_keepintouch.xsl index 641faec994..4f1eabb39d 100644 --- a/oem/firstvoices/windows/src/xml/keyman_keepintouch.xsl +++ b/oem/firstvoices/windows/src/xml/keyman_keepintouch.xsl @@ -5,7 +5,7 @@ diff --git a/oem/firstvoices/windows/src/xml/keyman_keyboardlist.xsl b/oem/firstvoices/windows/src/xml/keyman_keyboardlist.xsl index bd93b63c0b..18378bc390 100644 --- a/oem/firstvoices/windows/src/xml/keyman_keyboardlist.xsl +++ b/oem/firstvoices/windows/src/xml/keyman_keyboardlist.xsl @@ -2,7 +2,7 @@ - + @@ -13,7 +13,7 @@
- +
@@ -30,16 +30,14 @@ - + - +
package_ - - - package.gif - + +
@@ -58,11 +56,7 @@
- - - info.png - - +
@@ -95,7 +89,7 @@ return list_focus(event,'keyboard_'); return list_blur(event,'keyboard_'); event.cancelBubble=true;event.returnValue=false; - + left:0;top:0;width:99%
return list_detail(event,'keyboard_'); @@ -113,17 +107,8 @@
- - - - - - - - - no_icon.gif - - + /data/keyman/bitmap/?tag= + /app/no_icon.gif
@@ -138,11 +123,11 @@
- -
+ + +
@@ -275,6 +260,45 @@ + + +
 
@@ -284,21 +308,20 @@
- +
- +
- + \ No newline at end of file diff --git a/oem/firstvoices/windows/src/xml/keyman_menu.xsl b/oem/firstvoices/windows/src/xml/keyman_menu.xsl index e5d9f3acec..b5adc5de7c 100644 --- a/oem/firstvoices/windows/src/xml/keyman_menu.xsl +++ b/oem/firstvoices/windows/src/xml/keyman_menu.xsl @@ -2,14 +2,14 @@ - + diff --git a/oem/firstvoices/windows/src/xml/keyman_options.xsl b/oem/firstvoices/windows/src/xml/keyman_options.xsl index 363be1664d..65acc0c817 100644 --- a/oem/firstvoices/windows/src/xml/keyman_options.xsl +++ b/oem/firstvoices/windows/src/xml/keyman_options.xsl @@ -14,7 +14,7 @@
- + @@ -29,7 +29,13 @@ keyman:support_proxyconfig - + + + 1 @@ -73,13 +79,13 @@
- vertical-align: middle; display: inline; margin-left: 3px; color: #808080 + display: inline; margin-left: 3px; color: #808080 - vertical-align: middle; display: inline; margin-left: 3px; + display: inline; margin-left: 3px; - +
diff --git a/oem/firstvoices/windows/src/xml/keyman_support.xsl b/oem/firstvoices/windows/src/xml/keyman_support.xsl index 5c489746fe..dfd8c8445b 100644 --- a/oem/firstvoices/windows/src/xml/keyman_support.xsl +++ b/oem/firstvoices/windows/src/xml/keyman_support.xsl @@ -2,28 +2,23 @@ - - + +
-
- - - keyman-desktop.png - - +
- +
-  
+  
- +
- - \ No newline at end of file + diff --git a/oem/firstvoices/windows/src/xml/locale.xml b/oem/firstvoices/windows/src/xml/locale.xml deleted file mode 100644 index 0d1c4f81a6..0000000000 --- a/oem/firstvoices/windows/src/xml/locale.xml +++ /dev/null @@ -1,583 +0,0 @@ - - - - - - -]> - - - - - -Keyman - -Tahoma -8 - - - - - - - -&Name_CNV; - - - - - -Yes -No - -&Yes -&No - -OK -Cancel -Close -Apply -Remind me Later - -OK -Cancel - -Click this icon to select a keyboard -&Name; is still running. Click this icon to use your language keyboard at any time - - - - - -&Name; Configuration - - - 40 - 118 - 40 - - -Help - - - -Keyboard Layouts K -Options O -Hotkeys H -Support S -Keep in Touch T - - - -Filename: - -Package version: -Keyboard version: -Author: -Website: - -Package: -Fonts: -Keyboard Layouts: - -Encodings: - -Layout Type: - Fixed (Positional) - Mapped to Windows layout (Mnemonic) - -Description: - -Installed for: - All users - Current user - -Languages: - - Add language - -On Screen Keyboard: - Custom - Installed - Not installed - -Documentation: - Installed - Not installed - -Message: -Copyright: - - - -Package options -Options -Install keyboard... -Download keyboard... - - Keyboard options -Uninstall -Uninstall package -Show introductory help -Change hotkey -Set hotkey -Uninstall On Screen Keyboard -Install On Screen Keyboard... - -You do not have any keyboards installed. Click the Download Keyboard button to install a keyboard layout from the Keyman website. -You can only uninstall the keyboard '%0:s' if you are an Administrator - - - -General -Startup -On Screen Keyboard -Advanced - -Keyboard hotkeys toggle keyboard activation -Simulate AltGr with Ctrl+Alt -Treat hardware deadkeys as plain keys -Show hint messages - -Start when Windows starts -Show splash screen -Show welcome screen -Automatically check keyman.com weekly for updates -Test for conflicting applications when &Name; starts - -Release Shift/Ctrl/Alt on On Screen Keyboard after clicking a key -Always show On Screen Keyboard Window when Keyman keyboard is selected -Switch to appropriate On Screen Keyboard/Help automatically when a keyboard is selected - -Turn on Unicode supplementary character display (requires restart) -Turn on 'Unknown' language -Debugging -Switch Windows language when a Keyman keyboard is selected - Select keyboard layout for all applications -Always elevate user permissions when running in Windows Vista - -User interface language... - -Base Keyboard... - - - - - - - - - -(none) -Switch &Name; Off -Open Keyboard Menu -Show On Screen Keyboard Pane -Open Configuration - -Show Keyboard Usage Pane -Show Font Helper Pane -Show Character Map Pane -Open Text Editor - -Open Language Switcher - -General Hotkeys -Keyboard Layouts - - - -Installed Language -Windows Layout -Keyman Keyboard - -(use Windows layout) - - - -Upgrade now! -Send Support Request -Contact Keyman Support -If you have any issues using Keyman, just ask us for help. -Open FirstVoices Help Center -Created by SIL International -Copyright © SIL International. All Rights Reserved. -Version -Engine Version - -Useful Links - -Online Help -Diagnostics -Check for Updates -Proxy Settings... - -Diagnostics -Check Language Settings - -Microsoft Windows appears to be correctly configured for your language(s). - - - - - - - 40 - - -Download Keyboard From keyman.com -Don't install, just download - - - - - - - - - -Install Keyboard/Package - -Details -Readme - -Install -Install for all users - - - - - - - -Proxy Server Configuration - -Server: -Port: -Username: -Password: - - - - - - - -Set Base Keyboard -Select the base Latin script -keyboard that you use in Windows. Keyman keyboards will adapt automatically to your preferred layout. - - - - - -Change Hotkey - -&Clear Hotkey -Select a standard hotkey or choose 'Custom' and hold Ctrl,Shift and/or Alt and type your desired hotkey for keyboard %0:s: -Select a standard hotkey or choose 'Custom' and hold Ctrl,Shift and/or Alt and type your desired hotkey for language %0:s: -Select a standard hotkey or choose 'Custom' and hold Ctrl,Shift and/or Alt and type your desired hotkey: - -The hotkey %0:s will conflict with normal keyboard use. You should use at least Ctrl or Alt. Do you want to change this now? -The hotkey %0:s conflicts with the hotkey selected for keyboard %1:s. If you continue, the hotkey for keyboard %1:s will be cleared. Continue? - - - - - -Select Keyboards to Install -You cannot install all the keyboards in this package. You can install a maximum of %0:d additional keyboards. Please select the keyboards you wish to install from this package. - - - - - - - -Updated &Name; Components Available - -Updates for &Name_CN; are now available -Please select the updates you wish to install: - -Do you want to download and install this patch now? -You can download the new version from: -Do you want to visit the website now? - -Install Now -Cancel - -Old Version -Updated Component -Size - -&Name; %0:s -Keyboard %0:s %1:s - -Unable to contact keyman.com - please make sure you have an active Internet connection and try again. -Unable to contact keyman.com - please make sure you have an active Internet connection and try again. The error received was: %0:s - -&Name; updates are available -Click this icon to download and install updates -View and &install &Name; updates -E&xit online update check - - - - - - - -&Name_CNV; -&Name; - - -Start Keyman -Exit - -Other tasks - Configuration - Show this screen at startup - Hide this screen at startup - - - - - -Display in -Find other display languages online... -Help translate the user interface... -English -English -en -en - -&Name; - -Select User Interface Language - -Choose the language that you want displayed in the &Name; interface. -&More languages online... - -Create a new translation online - - - - - - -Language Configuration Tasks - -Configure your computer to work with - - -&Name; has detected that the following configuration tasks need to be completed in order for -script(s) to work correctly on your computer: - -Microsoft Office Language Support - -More Information... - -Do you want &Name; to complete these tasks now? - - -Don't ask me about this again - - - - - - - 40 - 40 - - -Reset Hints -All hint messages have been reset and will be displayed again. - -Exit &Name;? -Are you sure you want to exit &Name;? Your Keyman keyboards will still be listed in the Windows languages, but will not be functional until you restart &Name;. - -On Screen Keyboard Closed -You have closed the On Screen Keyboard. &Name; is still running. You can open the On Screen Keyboard at any time by clicking on the &Name; Icon and selecting "On Screen Keyboard" - -Don't show this hint again - - - - - - -&Name; Help -Help Contents - -Help on " -" keyboard - -View On Screen Keyboard -View Keyboard Usage -View Font Helper -View Character Map -Switch &Name; Off -Open &Name; Configuration -Open Help -Close On Screen Keyboard - - - - - -Switch &Name; &Off -On Screen &Keyboard -Keyboard &Usage -&Font Helper -Character &Map -&Text Editor... -&Configuration... - -&Help... -E&xit - -No keyboard layouts are installed. -Choose "Configuration" to install a -keyboard layout for your language. - -Fade When Inactive -Show Toolbar -Save as Web Page... -Print... - - - - - - - - - -&Name_CN; -Version %0:s - -Help -&Print... -&Download... - - - -A package with the name %0:s is already installed. Do you want to uninstall it and install the new one? -A keyboard with the name '%0:s' is already installed. If you continue, it will be uninstalled before the new one is installed. Continue? -The keyboard '%0:s' is part of package '%1:s'. You must uninstall the entire package. Continue? -You can only install or uninstall keyboards as Administrator. Use Control Panel to select languages for use as a normal user. -Changing the setting of Surrogates requires Windows to be restarted. Do you want to restart Windows now? -The package or keyboard '%0:s' does not include any introductory help. -This operating system is not supported. -Your licence has been successfully activated. -KeymanDesktop.chm -The help file $(SKOnlineHelpFile) could not be found. -<Damaged keyboard> -Codepage -Unicode -Downloading File - - - - -Are you sure you want to remove the on screen keyboard installed for %0:s? -Are you sure you want to uninstall keyboard %0:s? -Are you sure you want to uninstall package %0:s? - -%1:s -The following fonts will also be uninstalled: %0:s. -Do you want to activate $(SKShortApplicationTitle) online now with licence number %0:s? If you click No, you can choose from alternate activation methods. -The Character Map has a database of characters that needs to be built before it can be used. Build it now? - - - -The Unicode Character database could not be deleted for a rebuild. Error details are: %0:s -The Unicode Character database could not be created and has been disabled. Error details are: %0:s -The Unicode character database did not load successfully (%0:s). Rebuild it now? - - -Cannot activate browser or email program for this URL. -The keyboard could not be printed successfully. Please save to a web page and print manually. -&Name; failed to start. Please check your security settings to make sure that the program keyman.exe is allowed to start before continuing. The error returned was: - -"%0:s" - -Do you want to try and start &Name; again now? - - - -&Name; debug information will be stored in a log file called %LOCALAPPDATA%\Keyman\Diag\system#.etl (where # is a number). You should exit &Name; before attempting to delete this file. - -WARNING: This file can grow large very quickly. Enabling debugging may slow down your system and should only be done if advised by technical support. - -PRIVACY WARNING: Please note that the debug logfile records all keystrokes that you type. You should only turn on the debug log for the duration of a debugging or diagnostic session. - - - -Add %0:s editing support to %1:s -Microsoft Office 2000 -Microsoft Office XP -Microsoft Office 2003 -Microsoft Office 2007 -Microsoft Office 2010 - - -Link language %0:s to Keyman keyboard %1:s -Install language %0:s and link to Keyman keyboard %1:s - - - -Please wait while &Name; finds the fonts that will work with -keyboard. - - -is not a Unicode keyboard. Fonts cannot be automatically located. Please check the keyboard documentation for font information. - -The following fonts work with -keyboard: - -The following fonts may also work: - -The following fonts may work with -keyboard: - -No fonts were found on your system that work with -. Please check the documentation to find fonts for this keyboard. - -No keyboard layouts are currently installed or loaded. Use &Name; Configuration to install a keyboard layout. -Please choose a &Name; keyboard to find the fonts that will work with it. - - - -Hint: -Resize the On Screen Keyboard by clicking and dragging on the window border -Move the On Screen Keyboard by clicking and dragging on the "&Name;" title -Insert any Unicode character into your document with the -Character Map Tool -Find out which fonts will work with your language with the -Font Helper Tool -Get more help on the keyboard by clicking the -Keyboard Usage button - - - - - -Text Editor - &Name; - - diff --git a/oem/firstvoices/windows/src/xml/menu-frame.js b/oem/firstvoices/windows/src/xml/menu-frame.js index 95aa0797c6..6c77e7478f 100644 --- a/oem/firstvoices/windows/src/xml/menu-frame.js +++ b/oem/firstvoices/windows/src/xml/menu-frame.js @@ -1,5 +1,5 @@ var menuframe_activeindex=0, menuframe_items = []; - + function menuframe_add(path, name, description, hotkey) { var n = menuframe_items.length; @@ -13,18 +13,18 @@ menuframe_items[n].menu_hotkey = hotkey; menuframe_items[n].menu_name = name; } - + function menuframe_activate(n) { var p = menuframe_items[menuframe_activeindex], c = menuframe_items[n]; var itemtype, blah; - - p.className='menuframe'; - c.className='menuframe_active'; + + p.className='menuframe'; + c.className='menuframe_active'; menuframe_activeindex=n; document.getElementById('content_'+p.menu_name).style.display = 'none'; document.getElementById('content_'+c.menu_name).style.display = 'block'; - + save_state(); if(!loading_state) { @@ -32,19 +32,19 @@ for(var i = 0; i < q.length; i++) { blah = q[i].id; itemtype = blah.substr(0, 5); - + if( itemtype == "list_" ) { q[i].focus(); break; } } } - + if(typeof window['menuframe_activate_'+c.menu_name] != 'undefined') { window['menuframe_activate_'+c.menu_name](); } } - + function menuframe_keydown(event) //document.onkeydown = function() { @@ -80,16 +80,11 @@ } break; case 13: // enter - if( event.target.id.substring(0,6) != 'button' && event.target.tagName != 'TEXTAREA' ) { - event.cancelBubble = true; event.returnValue = false; - location.href='keyman:footer_ok'; - break; - } - event.cancelBubble = true; event.returnValue = true; + event.cancelBubble = true; + event.returnValue = event.target.id.substring(0,6) == 'button' || event.target.tagName == 'TEXTAREA'; break; case 27: // esc event.cancelBubble = true; event.returnValue = false; - location.href='keyman:footer_cancel'; break; case 32: // spacebar switch(event.srcElement.tagName.toLowerCase()) { @@ -103,18 +98,18 @@ document.getElementById(k).focus(); break; case 'input': return true; - case 'div': - case 'span': + case 'div': + case 'span': if(event.srcElement.parentElement) { switch(event.srcElement.parentElement.id) { case 'keyboards': - keyboard_checkclick(event.srcElement.id.substring(5),true); + keyboard_checkclick(event.srcElement.id.substring('list_keyboard_'.length),true); break; case 'options': - options_updatecheck(event.srcElement.id.substring(5),true); + options_updatecheck(event.srcElement.id.substring('list_option_'.length),true); break; - case 'hotkeys': - location.href='keyman:hotkey_set?index=hotkey_' + event.srcElement.id.substring(5); + case 'subcontent_hotkeys': + location.href='keyman:hotkey_set?index=hotkey_' + event.srcElement.id.substring('list_hotkey_'.length); break; default: break; @@ -124,13 +119,13 @@ } event.cancelBubble = true; event.returnValue = false; event.preventDefault(); break; break; - default: + default: for(var i = 0; i < menuframe_items.length; i++) if(menuframe_items[i].menu_hotkey.charCodeAt(0) == event.keyCode && event.altKey) { event.cancelBubble = true; event.returnValue = false; menuframe_activate(i); break; } - + } } @@ -138,5 +133,4 @@ document.onkeydown = menuframe_keydown; } doAttachEvent(window, 'load', menuframe_setup); - - \ No newline at end of file + diff --git a/oem/firstvoices/windows/src/xml/menu.css b/oem/firstvoices/windows/src/xml/menu.css index bf1dcdba94..b1b7bec882 100644 --- a/oem/firstvoices/windows/src/xml/menu.css +++ b/oem/firstvoices/windows/src/xml/menu.css @@ -1,6 +1,6 @@ /* Popup menu styles */ .menu -{ +{ white-space: nowrap; position: absolute; display: block; @@ -9,22 +9,23 @@ border: solid 1px #ACA899; font-size: 11px; padding: 4px; - background-image: url("menugrey.gif"); - background-repeat: repeat-y; + background-image: url("menugrey.gif"); + background-repeat: repeat-y; background-position: 0 0; width: 220px; z-index: 100; } .menuitem -{ - display: block; - padding: 4px 4px 4px 28px; +{ + display: block; + padding: 4px 4px 4px 28px; margin: 1px; + cursor: default; } - + .hover -{ +{ color: #000000; background: #FFE3DB; border: solid 1px #DB704F; @@ -32,6 +33,21 @@ } .down -{ - background: #DB704F; +{ + background: #DB704F; +} + +#menubackground { + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + background: rgba(64,64,64,0.1); + display: none; +} + +#menubackground.show { + display: block; + z-index: 99; } diff --git a/oem/firstvoices/windows/src/xml/menu.js b/oem/firstvoices/windows/src/xml/menu.js index 5016042016..b120341d4c 100644 --- a/oem/firstvoices/windows/src/xml/menu.js +++ b/oem/firstvoices/windows/src/xml/menu.js @@ -55,12 +55,15 @@ var menudiv = null, global_menu_elem_name = null; q = menudiv.children[0]; q.focus(); + + document.getElementById('menubackground').className = 'show'; } function HideMenu() { if(event.srcElement != menudiv) { global_menu_elem_name = null; menudiv.style.visibility='hidden'; + document.getElementById('menubackground').className = ''; try { if(lastfocus_item != null) lastfocus_item.focus(); } catch(e) { diff --git a/oem/firstvoices/windows/src/xml/onlineupdate.xsl b/oem/firstvoices/windows/src/xml/onlineupdate.xsl index 2eeb2fbf23..931c0c106b 100644 --- a/oem/firstvoices/windows/src/xml/onlineupdate.xsl +++ b/oem/firstvoices/windows/src/xml/onlineupdate.xsl @@ -1,19 +1,22 @@ - + - + + + + <xsl:value-of select="$locale/string[@name='S_Update_Title']"/> + + + + @@ -26,12 +28,12 @@
- +
- +
@@ -40,20 +42,20 @@
- +
No keyboards loaded - Open Configuration
- +
- +
- + diff --git a/oem/firstvoices/windows/src/xml/strings.xml b/oem/firstvoices/windows/src/xml/strings.xml new file mode 100644 index 0000000000..e585e05bab --- /dev/null +++ b/oem/firstvoices/windows/src/xml/strings.xml @@ -0,0 +1,1197 @@ + + + + + + + + + + Keyman + + + + + Segoe UI + + + + + 9 + + + + + + + + &Yes + + + + + &No + + + + + OK + + + + + Cancel + + + + + Close + + + + + OK + + + + + Cancel + + + + + Click this icon to select a keyboard + + + + + Keyman is still running. Click this icon to use your language keyboard at any time + + + + + Keyman for FirstVoices is already running. Click the Keyman for FirstVoices icon in the system notification area to use your language keyboard + + + + + Keyman for FirstVoices Configuration + + + + + Help + + + + + + + Keyboard Layouts + + + + + K + + + + + Options + + + + + O + + + + + Hotkeys + + + + + H + + + + + Support + + + + + S + + + + + Keep in Touch + + + + + T + + + + + + + + Filename: + + + + + Package version: + + + + + Keyboard version: + + + + + Author: + + + + + Website: + + + + + Package: + + + + + Fonts: + + + + + Keyboard Layouts: + + + + + Keyboard Layout: + + + + + Keyboard Language: + + + + + Encodings: + + + + + Layout Type: + + + + + Fixed (Positional) + + + + + Mapped to Windows layout (Mnemonic) + + + + + Languages: + + + + + + + + + + Add language + + + + + On Screen Keyboard: + + + + + Custom + + + + + Installed + + + + + Not installed + + + + + Documentation: + + + + + Installed + + + + + Not installed + + + + + Message: + + + + + Copyright: + + + + + Changes are applied immediately + + + + + Install keyboard... + + + + + Download keyboard... + + + + + Keyboard options + + + + + You do not have any keyboards installed. Click the Download Keyboard button to install a keyboard layout from the Keyman website. + + + + + + You can only uninstall the keyboard \'%1$s\' if you are an Administrator + + + + + Share keyboard + + + + + Scan this code to load this keyboard on another device or + + + + + share online + + + + + + + + + + + + General + + + + + Startup + + + + + On Screen Keyboard + + + + + Advanced + + + + + Keyboard hotkeys toggle keyboard activation + + + + + Simulate AltGr with Ctrl+Alt + + + + + Treat hardware deadkeys as plain keys + + + + + Show hint messages + + + + + Automatically report errors to keyman.com + + + + + Share anonymous usage statistics with keyman.com + + + + + Start when Windows starts + + + + + Show splash screen + + + + + Show welcome screen + + + + + Automatically check keyman.com weekly for updates + + + + + Test for conflicting applications when Keyman for FirstVoices starts + + + + + Release Shift/Ctrl/Alt on On Screen Keyboard after clicking a key + + + + + Always show On Screen Keyboard Window when a FirstVoices keyboard is selected + + + + + Switch to appropriate On Screen Keyboard/Help automatically when a keyboard is selected + + + + + Turn on Unicode supplementary character display (requires restart) + + + + + Turn on \'Unknown\' language + + + + + Debugging + + + + + Switch Windows language when a FirstVoices keyboard is selected + + + + + Select keyboard layout for all applications + + + + + Always elevate user permissions when running in Windows Vista + + + + + Base Keyboard... + + + + + + + + + + + + + + + + + (none) + + + + + Switch Keyman for FirstVoices Off + + + + + Open Keyboard Menu + + + + + Show On Screen Keyboard Pane + + + + + Open Configuration + + + + + Show Font Helper Pane + + + + + Show Character Map Pane + + + + + Open Text Editor + + + + + Open Language Switcher + + + + + General Hotkeys + + + + + Keyboard Layouts + + + + + + + If you have any issues using Keyman for FirstVoices, just ask a question on the FirstVoices Help Center. + + + + + Open FirstVoices Help Center + + + + + Created by SIL International + + + + + Copyright © SIL International. All Rights Reserved. + + + + + Version + + + + + Useful Links + + + + + Online Help + + + + + Check for Updates + + + + + Proxy Settings... + + + + + Keyman System Settings... + + + + + Diagnostics + + + + + + + Download Keyboard From keyman.com + + + + + Don\'t install, just download + + + + + + Unable to download keyboard, error %2$d: %1$s + + + + + < Back + + + + + + + Install Keyboard/Package + + + + + Details + + + + + Readme + + + + + Install + + + + + + + + Proxy Server Configuration + + + + + Server: + + + + + Port: + + + + + Username: + + + + + Password: + + + + + + + + Set Base Keyboard + + + + + Select the base Latin script +keyboard that you use in Windows. Keyman for FirstVoices will adapt automatically to your preferred layout. + + + + + + + + Change Hotkey + + + + + + Select a standard hotkey or choose \'Custom\' and hold Ctrl,Shift and/or Alt and type your desired hotkey for language %1$s: + + + + + Select a standard hotkey or choose \'Custom\' and hold Ctrl,Shift and/or Alt and type your desired hotkey: + + + + + + The hotkey %1$s will conflict with normal keyboard use. You should use at least Ctrl or Alt. Do you want to change this now\? + + + + + + The hotkey %1$s conflicts with the hotkey selected for keyboard %2$s. If you continue, the hotkey for keyboard %2$s will be cleared. Continue\? + + + + + + The hotkey %1$s conflicts with another hotkey. If you continue, the other hotkey will be cleared. Continue\? + + + + + + + + Updated Keyman for FirstVoices Components Available + + + + + Updates for Keyman for FirstVoices are now available + + + + + Please select the updates you wish to install: + + + + + You can download the new version from: + + + + + Install Now + + + + + Cancel + + + + + Old Version + + + + + Updated Component + + + + + Size + + + + + + Keyman for FirstVoices %1$s + + + + + + Keyboard %1$s %2$s + + + + + Unable to contact keyman.com - please make sure you have an active Internet connection and try again. + + + + + + Unable to contact keyman.com - please make sure you have an active Internet connection and try again. The error received was: %1$s + + + + + Keyman for FirstVoices updates are available + + + + + Click this icon to download and install updates + + + + + View and &install Keyman for FirstVoices updates + + + + + E&xit online update check + + + + + + + + Keyman for FirstVoices + + + + + Start Keyman for FirstVoices + + + + + Exit + + + + + Configuration + + + + + Show this screen at startup + + + + + + + + Display in + + + + + Find other display languages online... + + + + + Help translate the user interface... + + + + + English + + + + + English + + + + + en + + + + + en + + + + + Keyman for FirstVoices + + + + + + + + Reset Hints + + + + + All hint messages have been reset and will be displayed again. + + + + + + Exit Keyman for FirstVoices\? + + + + + + Are you sure you want to exit Keyman for FirstVoices\? Your FirstVoices keyboards will still be listed in the Windows languages, but will not be functional until you restart Keyman for FirstVoices. + + + + + + On Screen Keyboard Closed + + + + + + You have closed the On Screen Keyboard. Keyman for FirstVoices is still running. You can open the On Screen Keyboard at any time by clicking on the Keyman for FirstVoices Icon and selecting "On Screen Keyboard" + + + + + Don\'t show this hint again + + + + + + + + Keyman for FirstVoices Help + + + + + Help Contents + + + + + Help on " + + + + + " keyboard + + + + + View On Screen Keyboard + + + + + View Font Helper + + + + + View Character Map + + + + + Open Keyman for FirstVoices Configuration + + + + + Open Help + + + + + Close On Screen Keyboard + + + + + + + + Switch Keyman for FirstVoices &Off + + + + + On Screen &Keyboard + + + + + &Font Helper + + + + + Character &Map + + + + + &Text Editor... + + + + + &Configuration... + + + + + &Help... + + + + + E&xit + + + + + Fade When Inactive + + + + + Show Toolbar + + + + + Save as Web Page... + + + + + Print... + + + + + + + + Keyman for FirstVoices + + + + + + Version %1$s + + + + + &Print... + + + + + + + + A package with the name %1$s is already installed. Do you want to uninstall it and install the new one\? + + + + + + A keyboard with the name \'%1$s\' is already installed. If you continue, it will be uninstalled before the new one is installed. Continue\? + + + + + + The keyboard \'%1$s\' is part of package \'%2$s\'. You must uninstall the entire package. Continue\? + + + + + + Unable to install keyboard language; Windows has a limit of 4 custom \'transient\' languages, and you may have reached this limit. + + + + + + The package or keyboard \'%1$s\' does not include any introductory help. + + + + + This operating system is not supported. + + + + + KeymanDesktop.chm + + + + + The help file could not be found. + + + + + Codepage + + + + + Unicode + + + + + Downloading File + + + + + + + + + Are you sure you want to remove the on screen keyboard installed for %1$s\? + + + + + + Are you sure you want to uninstall keyboard %1$s\? + + + + + + Are you sure you want to uninstall package %1$s\?\n\n%2$s + + + + + + The following fonts will also be uninstalled: %1$s. + + + + + The Character Map has a database of characters that needs to be built before it can be used. Build it now\? + + + + + + + + + The Unicode Character database could not be deleted for a rebuild. Error details are: %1$s + + + + + + The Unicode Character database could not be created and has been disabled. Error details are: %1$s + + + + + + The Unicode character database did not load successfully (%1$s). Rebuild it now\? + + + + + + + Keyman for FirstVoices failed to start. Please check your security settings to make sure that the program keyman.exe is allowed to start before continuing. The error returned was:\n\n"%1$s"\n\nDo you want to try and start Keyman for FirstVoices again now\? + + + + + + + Keyman debug information will be stored in a log file called %LOCALAPPDATA%\Keyman\Diag\system#.etl (where # is a number). You should exit Keyman for FirstVoices before attempting to delete this file.\n\n\WARNING: This file can grow large very quickly. Enabling debugging may slow down your system and should only be done if advised by technical support.\n\nPRIVACY WARNING: Please note that the debug logfile records all keystrokes that you type. You should only turn on the debug log for the duration of a debugging or diagnostic session. + + + + + + + + Please wait while searching for related fonts for keyboard %1$s + + + + + Keyboard %1$s is not a Unicode keyboard. Fonts cannot be automatically located. Please check the keyboard documentation for font information. + + + + + No keyboard layouts are currently installed or loaded. + + + + + Please select a FirstVoices keyboard to find related fonts. + + + + + + + Text Editor - Keyman for FirstVoices + + diff --git a/oem/firstvoices/windows/src/xml/vkhints.xsl b/oem/firstvoices/windows/src/xml/vkhints.xsl deleted file mode 100644 index e165b706d9..0000000000 --- a/oem/firstvoices/windows/src/xml/vkhints.xsl +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - - - - - - hintbar - - - - -
-
-
- - -
-
-
-
-
- - - iconcharmapicon.gif - - -
-
- - - iconfonthinticon.gif - - -
-
- - - iconkeyboardhelpicon.gif - - -
-
-
-
- - -
-
diff --git a/oem/firstvoices/windows/src/xml/welcome_fonts.xsl b/oem/firstvoices/windows/src/xml/welcome_fonts.xsl index a812594091..ab3780a854 100644 --- a/oem/firstvoices/windows/src/xml/welcome_fonts.xsl +++ b/oem/firstvoices/windows/src/xml/welcome_fonts.xsl @@ -8,11 +8,11 @@ - - + + fonts