mirror of
https://github.com/keymanapp/keyman.git
synced 2026-10-07 14:37:29 +00:00
chore(ios): Merge branch 'master' into chore/ios/handled-error-logging
This commit is contained in:
commit
fcdb04ec14
125 changed files with 2375 additions and 2633 deletions
32
HISTORY.md
32
HISTORY.md
|
|
@ -1,5 +1,37 @@
|
|||
# Keyman Version History
|
||||
|
||||
## 15.0.56 alpha 2021-05-27
|
||||
|
||||
* fix(ios): link, but NOT embed KeymanEngine.xcframework in app exs (#5164)
|
||||
* feat(common): offline help css (#5157)
|
||||
* change(ios): help always offline (#5158)
|
||||
|
||||
## 15.0.55 alpha 2021-05-27
|
||||
|
||||
* fix(ios): artifact upload preparation (#5160)
|
||||
|
||||
## 15.0.54 alpha 2021-05-26
|
||||
|
||||
* docs(windows): Initial commit - README.md (#5119)
|
||||
* chore(windows): Update Sentry to 0.4.9 (#5144)
|
||||
* chore(web): Add CI script to kill BrowserStack tunnel (#5136)
|
||||
* docs(linux): Update readme (#5147)
|
||||
* chore(linux): Update changelogs 🍒 (#5146)
|
||||
* fix(ios): re-enable SKIP_INSTALL (#5155)
|
||||
|
||||
## 15.0.53 alpha 2021-05-25
|
||||
|
||||
* fix(developer): buffer size for range expansions (#4831)
|
||||
* feat(web): basic promise wrapper on cloud api call (#5121)
|
||||
* feat(android/app): Auto-generate Play Store release notes (#5132)
|
||||
* fix(web): active element selection in multi-touch scenarios (#5134)
|
||||
* chore(windows): cleanup old .dof, .bdsproj and .cfg files (#5131)
|
||||
* chore(ios): shift to use of XCFrameworks (#5107)
|
||||
* chore(ios): imports iOS artifact-upload script for CI use (#5140)
|
||||
* refactor(ios/engine): "should reload keyboard" now a property of the keyboard (#4847)
|
||||
* docs(windows): Initial commit - README.md (#5119)
|
||||
* chore(windows): move to vc++ 2019 (#5143)
|
||||
|
||||
## 15.0.52 alpha 2021-05-24
|
||||
|
||||
* chore(android): Update targetSDKVersion to 30 (#5126)
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
15.0.53
|
||||
15.0.57
|
||||
|
|
@ -72,6 +72,7 @@ displayInfo "" \
|
|||
cd $KEYMAN_ROOT/android/help
|
||||
|
||||
MDLUA="$KEYMAN_ROOT/resources/build/html-link.lua"
|
||||
CSS="../../resources/build/offline-help-style-spec.txt"
|
||||
MD=`find . -name "*.md"`
|
||||
DESTHTM="$THIS_DIR/KMAPro/kMAPro/src/main/assets/info"
|
||||
|
||||
|
|
@ -94,7 +95,7 @@ if $DO_HTM; then
|
|||
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
|
||||
pandoc -s -H "$CSS" --lua-filter="$MDLUA" -t html -o "$OUTFILE" $INFILE
|
||||
done
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,9 @@
|
|||
keyman-keyboardprocessor (14.0.273-1) unstable; urgency=medium
|
||||
|
||||
* Keyman 14
|
||||
|
||||
-- Eberhard Beilharz <eb1@sil.org> Mon, 26 Apr 2021 18:24:41 +0200
|
||||
|
||||
keyman-keyboardprocessor (11.0.101-3) unstable; urgency=medium
|
||||
|
||||
* Team upload.
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
## Prerequisites
|
||||
|
||||
- Python 3
|
||||
- Meson build system.
|
||||
- C++14 or later compiler (VC++ 2017 or later for Windows).
|
||||
- Meson build system 0.50 or later.
|
||||
- C++14 or later compiler (VC++ 2019 or later for Windows).
|
||||
- lib std::fs
|
||||
- kmcomp (for tests) -- must be added to path
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/input-processor",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/input-processor",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"description": "The core text and prediction processing engine for KeymanWeb",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
|
@ -18,8 +18,8 @@
|
|||
},
|
||||
"homepage": "https://github.com/keymanapp/keyman#readme",
|
||||
"devDependencies": {
|
||||
"@keymanapp/lexical-model-compiler": "^15.0.53",
|
||||
"@keymanapp/resources-gosh": "^15.0.53",
|
||||
"@keymanapp/lexical-model-compiler": "^15.0.57",
|
||||
"@keymanapp/resources-gosh": "^15.0.57",
|
||||
"@types/node": "^11.9.4",
|
||||
"chai": "^4.3.4",
|
||||
"mocha": "^8.4.0",
|
||||
|
|
@ -34,11 +34,11 @@
|
|||
"mocha": "mocha"
|
||||
},
|
||||
"dependencies": {
|
||||
"@keymanapp/keyboard-processor": "^15.0.53",
|
||||
"@keymanapp/lexical-model-layer": "^15.0.53",
|
||||
"@keymanapp/models-types": "^15.0.53",
|
||||
"@keymanapp/web-environment": "^15.0.53",
|
||||
"@keymanapp/web-utils": "^15.0.53",
|
||||
"@keymanapp/keyboard-processor": "^15.0.57",
|
||||
"@keymanapp/lexical-model-layer": "^15.0.57",
|
||||
"@keymanapp/models-types": "^15.0.57",
|
||||
"@keymanapp/web-environment": "^15.0.57",
|
||||
"@keymanapp/web-utils": "^15.0.57",
|
||||
"eventemitter3": "^4.0.0"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/keyboard-processor",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/keyboard-processor",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"description": "Core module for Keyman keyboard support in KeymanWeb.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
},
|
||||
"homepage": "https://github.com/keymanapp/keyman#readme",
|
||||
"devDependencies": {
|
||||
"@keymanapp/resources-gosh": "^15.0.53",
|
||||
"@keymanapp/resources-gosh": "^15.0.57",
|
||||
"chai": "^4.3.4",
|
||||
"mocha": "^8.4.0",
|
||||
"mocha-teamcity-reporter": "^4.0.0",
|
||||
|
|
@ -32,9 +32,9 @@
|
|||
"mocha": "mocha"
|
||||
},
|
||||
"dependencies": {
|
||||
"@keymanapp/models-types": "^15.0.53",
|
||||
"@keymanapp/web-environment": "^15.0.53",
|
||||
"@keymanapp/web-utils": "^15.0.53",
|
||||
"@keymanapp/models-types": "^15.0.57",
|
||||
"@keymanapp/web-environment": "^15.0.57",
|
||||
"@keymanapp/web-utils": "^15.0.57",
|
||||
"@types/node": "^11.9.4"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
2
common/core/web/tools/recorder/package-lock.json
generated
2
common/core/web/tools/recorder/package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/recorder-core",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/recorder-core",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"description": "Core classes used to develop KeymanWeb test cases based on keystrokes",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
|
|
@ -17,10 +17,10 @@
|
|||
},
|
||||
"homepage": "https://github.com/keymanapp/keyman#readme",
|
||||
"dependencies": {
|
||||
"@keymanapp/keyboard-processor": "^15.0.53",
|
||||
"@keymanapp/models-types": "^15.0.53",
|
||||
"@keymanapp/web-environment": "^15.0.53",
|
||||
"@keymanapp/web-utils": "^15.0.53"
|
||||
"@keymanapp/keyboard-processor": "^15.0.57",
|
||||
"@keymanapp/models-types": "^15.0.57",
|
||||
"@keymanapp/web-environment": "^15.0.57",
|
||||
"@keymanapp/web-utils": "^15.0.57"
|
||||
},
|
||||
"devDependencies": {
|
||||
"typescript": "^3.8.3"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/web-sentry-manager",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/web-sentry-manager",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"description": "Common setup for KeymanWeb's Sentry-based error reporting",
|
||||
"main": "dist/index.js",
|
||||
"scripts": {
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
"typescript": "^3.8.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@keymanapp/web-environment": "^15.0.53",
|
||||
"@keymanapp/web-environment": "^15.0.57",
|
||||
"@sentry/browser": "^5.27.4"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
2
common/core/web/utils/package-lock.json
generated
2
common/core/web/utils/package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/web-utils",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/web-utils",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"description": "Common utility functions used throughout other Keyman packages",
|
||||
"main": "./dist/index.js",
|
||||
"types": "./dist/index.d.ts",
|
||||
|
|
@ -20,8 +20,8 @@
|
|||
},
|
||||
"homepage": "https://github.com/keymanapp/keyman#readme",
|
||||
"devDependencies": {
|
||||
"@keymanapp/resources-gosh": "^15.0.53",
|
||||
"@keymanapp/web-environment": "^15.0.53",
|
||||
"@keymanapp/resources-gosh": "^15.0.57",
|
||||
"@keymanapp/web-environment": "^15.0.57",
|
||||
"@types/node": "^14.0.5",
|
||||
"typescript": "^3.8.3"
|
||||
}
|
||||
|
|
|
|||
2
common/models/templates/package-lock.json
generated
2
common/models/templates/package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/models-templates",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/models-templates",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"description": "Backing model implementations (templates) for Keyman's modelling layer",
|
||||
"keywords": [
|
||||
"lm",
|
||||
|
|
@ -42,8 +42,8 @@
|
|||
"url": "https://github.com/keymanapp/keyman/issues"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@keymanapp/models-types": "^15.0.53",
|
||||
"@keymanapp/web-utils": "^15.0.53",
|
||||
"@keymanapp/models-types": "^15.0.57",
|
||||
"@keymanapp/web-utils": "^15.0.57",
|
||||
"@types/chai": "^4.2.11",
|
||||
"@types/mocha": "^7.0.2",
|
||||
"@types/node": "^14.0.4",
|
||||
|
|
@ -52,6 +52,6 @@
|
|||
"typescript": "^3.8.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@keymanapp/models-wordbreakers": "^15.0.53"
|
||||
"@keymanapp/models-wordbreakers": "^15.0.57"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
2
common/models/types/package-lock.json
generated
2
common/models/types/package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/models-types",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/models-types",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"description": "Type definitions in used in the modeling (lexical model/predictive text) component of Keyman.",
|
||||
"types": "./index.d.ts",
|
||||
"scripts": {
|
||||
|
|
|
|||
2
common/models/wordbreakers/package-lock.json
generated
2
common/models/wordbreakers/package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/models-wordbreakers",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/models-wordbreakers",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"description": "Word breakers bundled in the modeling layer",
|
||||
"keywords": [
|
||||
"lexical model",
|
||||
|
|
@ -40,7 +40,7 @@
|
|||
"url": "https://github.com/keymanapp/keyman/issues"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@keymanapp/models-types": "^15.0.53",
|
||||
"@keymanapp/models-types": "^15.0.57",
|
||||
"@types/chai": "^4.2.11",
|
||||
"@types/mocha": "^7.0.2",
|
||||
"chai": "^4.3.4",
|
||||
|
|
|
|||
2
common/predictive-text/package-lock.json
generated
2
common/predictive-text/package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/lexical-model-layer",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/lexical-model-layer",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"description": "Keyman/Predictive Text integration layer",
|
||||
"main": "build/index.js",
|
||||
"scripts": {
|
||||
|
|
@ -21,8 +21,8 @@
|
|||
},
|
||||
"homepage": "https://github.com/keymanapp/keyman#readme",
|
||||
"devDependencies": {
|
||||
"@keymanapp/models-types": "^15.0.53",
|
||||
"@keymanapp/resources-gosh": "^15.0.53",
|
||||
"@keymanapp/models-types": "^15.0.57",
|
||||
"@keymanapp/resources-gosh": "^15.0.57",
|
||||
"@types/node": "^10.17.21",
|
||||
"chai": "^4.3.4",
|
||||
"karma": "^6.3.2",
|
||||
|
|
@ -46,10 +46,10 @@
|
|||
"typescript": "^3.8.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@keymanapp/models-templates": "^15.0.53",
|
||||
"@keymanapp/models-wordbreakers": "^15.0.53",
|
||||
"@keymanapp/web-environment": "^15.0.53",
|
||||
"@keymanapp/web-utils": "^15.0.53",
|
||||
"@keymanapp/models-templates": "^15.0.57",
|
||||
"@keymanapp/models-wordbreakers": "^15.0.57",
|
||||
"@keymanapp/web-environment": "^15.0.57",
|
||||
"@keymanapp/web-utils": "^15.0.57",
|
||||
"es6-shim": "^0.35.5",
|
||||
"string.prototype.codepointat": "^0.2.1",
|
||||
"string.prototype.startswith": "^0.2.0"
|
||||
|
|
|
|||
2
developer/js/package-lock.json
generated
2
developer/js/package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/lexical-model-compiler",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/lexical-model-compiler",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"description": "Keyman Developer lexical model compiler",
|
||||
"keywords": [
|
||||
"keyboard",
|
||||
|
|
@ -37,14 +37,14 @@
|
|||
"node": ">=12.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@keymanapp/models-types": "^15.0.53",
|
||||
"@keymanapp/models-types": "^15.0.57",
|
||||
"commander": "^3.0.0",
|
||||
"typescript": "^3.8.3",
|
||||
"xml2js": "^0.4.19"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@keymanapp/models-templates": "^15.0.53",
|
||||
"@keymanapp/models-wordbreakers": "^15.0.53",
|
||||
"@keymanapp/models-templates": "^15.0.57",
|
||||
"@keymanapp/models-wordbreakers": "^15.0.57",
|
||||
"@types/chai": "^4.1.7",
|
||||
"@types/mocha": "^5.2.7",
|
||||
"@types/node": "^10.14.6",
|
||||
|
|
|
|||
3
ios/.gitignore
vendored
3
ios/.gitignore
vendored
|
|
@ -19,6 +19,9 @@ engine/KMEI/KeymanEngine/resources/Keyman.bundle/Contents/Resources/keyman-sentr
|
|||
Keyman 2*
|
||||
Carthage
|
||||
|
||||
# Path for build artifact upload preparation
|
||||
upload
|
||||
|
||||
# Default resource packages (which may be downloaded automatically via build-script
|
||||
engine/KMEI/KeymanEngine/resources/Keyman.bundle/Contents/Resources/*.kmp
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
* Coreutils (`brew install coreutils`)
|
||||
* sentry-cli (`brew install getsentry/tools/sentry-cli`) to utilize Sentry-based error reporting
|
||||
* jq (`brew install jq`)
|
||||
* `bash` (`brew install bash`)
|
||||
|
||||
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.
|
||||
|
|
|
|||
|
|
@ -72,6 +72,7 @@ displayInfo "" \
|
|||
cd $KEYMAN_ROOT/ios/help
|
||||
|
||||
MDLUA="$KEYMAN_ROOT/resources/build/html-link.lua"
|
||||
CSS="../../resources/build/offline-help-style-spec.txt"
|
||||
MD=`find . -name "*.md"`
|
||||
DESTHTM="$THIS_DIR/keyman/Keyman/resources/OfflineHelp.bundle/Contents/Resources"
|
||||
|
||||
|
|
@ -94,7 +95,7 @@ if $DO_HTM; then
|
|||
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
|
||||
pandoc -s -H "$CSS" --lua-filter="$MDLUA" -t html -o "$OUTFILE" $INFILE
|
||||
done
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -1704,7 +1704,7 @@
|
|||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
INFOPLIST_FILE = SystemKeyboard/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -1750,7 +1750,7 @@
|
|||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
INFOPLIST_FILE = SystemKeyboard/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -1893,7 +1893,7 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
INFOPLIST_FILE = KeymanEngine/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -1904,7 +1904,6 @@
|
|||
PRODUCT_BUNDLE_IDENTIFIER = org.sil.Keyman.ios.Engine;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = NO;
|
||||
STRIP_INSTALLED_PRODUCT = NO;
|
||||
STRIP_SWIFT_SYMBOLS = NO;
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
|
|
@ -1949,7 +1948,7 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
INFOPLIST_FILE = KeymanEngine/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -1960,7 +1959,6 @@
|
|||
PRODUCT_BUNDLE_IDENTIFIER = org.sil.Keyman.ios.Engine;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = NO;
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
|
|
@ -2016,7 +2014,7 @@
|
|||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
INFOPLIST_FILE = "KeymanEngine/resources/Keyman.bundle/Contents/Resources/KeymanEngine-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.2;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -2053,7 +2051,7 @@
|
|||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
INFOPLIST_FILE = "KeymanEngine/resources/Keyman.bundle/Contents/Resources/KeymanEngine-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.2;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -2107,6 +2105,7 @@
|
|||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
KEYMAN_ROOT = "$(SRCROOT)/../../..";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
};
|
||||
name = "Debug + Sentry";
|
||||
|
|
@ -2145,7 +2144,7 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
INFOPLIST_FILE = KeymanEngine/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -2156,7 +2155,6 @@
|
|||
PRODUCT_BUNDLE_IDENTIFIER = org.sil.Keyman.ios.Engine;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = NO;
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
|
|
@ -2189,7 +2187,7 @@
|
|||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = 3YE4W86L3G;
|
||||
ENABLE_BITCODE = NO;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -2239,7 +2237,7 @@
|
|||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
INFOPLIST_FILE = SystemKeyboard/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -2328,7 +2326,7 @@
|
|||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
INFOPLIST_FILE = "KeymanEngine/resources/Keyman.bundle/Contents/Resources/KeymanEngine-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.2;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -2382,6 +2380,7 @@
|
|||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
KEYMAN_ROOT = "$(SRCROOT)/../../..";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG NO_SENTRY";
|
||||
};
|
||||
name = Debug;
|
||||
|
|
@ -2424,6 +2423,7 @@
|
|||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
KEYMAN_ROOT = "$(SRCROOT)/../../..";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
};
|
||||
|
|
@ -2442,7 +2442,7 @@
|
|||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = 3YE4W86L3G;
|
||||
ENABLE_BITCODE = NO;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -2475,7 +2475,7 @@
|
|||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = 3YE4W86L3G;
|
||||
ENABLE_BITCODE = NO;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
|
|||
|
|
@ -24,95 +24,50 @@ extension Colors {
|
|||
// The primary color used for selected UI elements in the settings menu.
|
||||
public static var selectionPrimary: UIColor {
|
||||
get {
|
||||
if #available(iOS 11.0, *) {
|
||||
return UIColor(named: "SelectionPrimary")!
|
||||
} else {
|
||||
return UIColor(red: 204.0 / 255.0,
|
||||
green: 136.0 / 255.0,
|
||||
blue: 34.0 / 255.0,
|
||||
alpha: 1.0)
|
||||
}
|
||||
return UIColor(named: "SelectionPrimary")!
|
||||
}
|
||||
}
|
||||
|
||||
// The primary color used for selected UI elements in Get Started menu.
|
||||
public static var selectionSecondary: UIColor {
|
||||
get {
|
||||
if #available(iOS 11.0, *) {
|
||||
return UIColor(named: "SelectionSecondary")!
|
||||
} else {
|
||||
return UIColor(red: 95.0 / 255.0,
|
||||
green: 196.0 / 255.0,
|
||||
blue: 217.0 / 255.0,
|
||||
alpha: 1.0)
|
||||
}
|
||||
return UIColor(named: "SelectionSecondary")!
|
||||
}
|
||||
}
|
||||
|
||||
public static var statusToolbar: UIColor {
|
||||
get {
|
||||
if #available(iOS 11.0, *) {
|
||||
return UIColor(named: "StatusToolbar")!
|
||||
} else {
|
||||
return UIColor(red: 0.5,
|
||||
green: 0.75,
|
||||
blue: 0.25,
|
||||
alpha: 0.9)
|
||||
}
|
||||
return UIColor(named: "StatusToolbar")!
|
||||
}
|
||||
}
|
||||
|
||||
public static var statusResourceUpdateButton: UIColor {
|
||||
get {
|
||||
if #available(iOS 11.0, *) {
|
||||
return UIColor(named: "StatusResourceUpdateButton")!
|
||||
} else {
|
||||
return UIColor(red: 0.75,
|
||||
green: 1.0,
|
||||
blue: 0.5,
|
||||
alpha: 1.0)
|
||||
}
|
||||
return UIColor(named: "StatusResourceUpdateButton")!
|
||||
}
|
||||
}
|
||||
|
||||
public static var spinnerBackground: UIColor {
|
||||
get {
|
||||
if #available(iOS 11.0, *) {
|
||||
return UIColor(named: "SpinnerBackground")!
|
||||
} else {
|
||||
return UIColor(white: 0.5,
|
||||
alpha: 0.8)
|
||||
}
|
||||
return UIColor(named: "SpinnerBackground")!
|
||||
}
|
||||
}
|
||||
|
||||
public static var labelNormal: UIColor {
|
||||
get {
|
||||
if #available(iOS 11.0, *) {
|
||||
return UIColor(named: "LabelNormal")!
|
||||
} else {
|
||||
return UIColor.lightGray
|
||||
}
|
||||
return UIColor(named: "LabelNormal")!
|
||||
}
|
||||
}
|
||||
|
||||
public static var labelHighlighted: UIColor {
|
||||
get {
|
||||
if #available(iOS 11.0, *) {
|
||||
return UIColor(named: "LabelHighlighted")!
|
||||
} else {
|
||||
return UIColor.darkGray
|
||||
}
|
||||
return UIColor(named: "LabelHighlighted")!
|
||||
}
|
||||
}
|
||||
|
||||
public static var listSeparator: UIColor {
|
||||
get {
|
||||
if #available(iOS 11.0, *) {
|
||||
return UIColor(named: "ListSeparator")!
|
||||
} else {
|
||||
return UIColor.lightGray
|
||||
}
|
||||
return UIColor(named: "ListSeparator")!
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,103 +32,50 @@ public class Colors {
|
|||
|
||||
public static var popupKey: UIColor {
|
||||
get {
|
||||
if #available(iOSApplicationExtension 11.0, *) {
|
||||
return UIColor(named: "KeyPrimary", in: engineBundle, compatibleWith: nil)!
|
||||
} else {
|
||||
return UIColor(red: 244.0 / 255.0,
|
||||
green: 244.0 / 255.0,
|
||||
blue: 244.0 / 255.0,
|
||||
alpha: 1.0)
|
||||
}
|
||||
return UIColor(named: "KeyPrimary", in: engineBundle, compatibleWith: nil)!
|
||||
}
|
||||
}
|
||||
|
||||
public static var keyText: UIColor {
|
||||
get {
|
||||
if #available(iOSApplicationExtension 11.0, *) {
|
||||
return UIColor(named: "KeyText", in: engineBundle, compatibleWith: nil)!
|
||||
} else {
|
||||
return UIColor.black
|
||||
}
|
||||
return UIColor(named: "KeyText", in: engineBundle, compatibleWith: nil)!
|
||||
}
|
||||
}
|
||||
|
||||
public static var popupKeyHighlighted: UIColor {
|
||||
get {
|
||||
if #available(iOSApplicationExtension 11.0, *) {
|
||||
return UIColor(named: "SelectedKey", in: engineBundle, compatibleWith: nil)!
|
||||
} else {
|
||||
return UIColor(red: 136.0 / 255.0,
|
||||
green: 136.0 / 255.0,
|
||||
blue: 1.0,
|
||||
alpha: 1.0)
|
||||
}
|
||||
return UIColor(named: "SelectedKey", in: engineBundle, compatibleWith: nil)!
|
||||
}
|
||||
}
|
||||
|
||||
// I'm not 100% on the distinction, but this should be fine for now.
|
||||
public static var popupKeyTint: UIColor {
|
||||
get {
|
||||
if #available(iOSApplicationExtension 11.0, *) {
|
||||
return UIColor(named: "SelectedKey", in: engineBundle, compatibleWith: nil)!
|
||||
} else {
|
||||
return UIColor(red: 181.0 / 255.0,
|
||||
green: 181.0 / 255.0,
|
||||
blue: 181.0 / 255.0,
|
||||
alpha: 1.0)
|
||||
}
|
||||
return UIColor(named: "SelectedKey", in: engineBundle, compatibleWith: nil)!
|
||||
}
|
||||
}
|
||||
|
||||
public static var keyboardBackground: UIColor {
|
||||
get {
|
||||
if #available(iOSApplicationExtension 11.0, *) {
|
||||
return UIColor(named: "KeyboardBackground", in: engineBundle, compatibleWith: nil)!
|
||||
} else {
|
||||
return UIColor(red: 210.0 / 255.0,
|
||||
green: 214.0 / 255.0,
|
||||
blue: 220.0 / 255.0,
|
||||
alpha: 1.0)
|
||||
}
|
||||
return UIColor(named: "KeyboardBackground", in: engineBundle, compatibleWith: nil)!
|
||||
}
|
||||
}
|
||||
|
||||
public static var keyboardSelectionPrimary: UIColor {
|
||||
get {
|
||||
if #available(iOS 11.0, *) {
|
||||
return UIColor(named: "KeyboardSelectionPrimary", in: engineBundle, compatibleWith: nil)!
|
||||
} else {
|
||||
return UIColor(red: 204.0 / 255.0,
|
||||
green: 136.0 / 255.0,
|
||||
blue: 34.0 / 255.0,
|
||||
alpha: 1.0)
|
||||
}
|
||||
return UIColor(named: "KeyboardSelectionPrimary", in: engineBundle, compatibleWith: nil)!
|
||||
}
|
||||
}
|
||||
|
||||
public static var helpBubbleGradient1: UIColor {
|
||||
get {
|
||||
if #available(iOSApplicationExtension 11.0, *) {
|
||||
return UIColor(named: "HelpBubbleGradient1", in: engineBundle, compatibleWith: nil)!
|
||||
} else {
|
||||
return UIColor(red: 253.0 / 255.0,
|
||||
green: 244.0 / 255.0,
|
||||
blue: 196.0 / 255.0,
|
||||
alpha: 1.0)
|
||||
}
|
||||
return UIColor(named: "HelpBubbleGradient1", in: engineBundle, compatibleWith: nil)!
|
||||
}
|
||||
}
|
||||
|
||||
public static var helpBubbleGradient2: UIColor {
|
||||
get {
|
||||
if #available(iOSApplicationExtension 11.0, *) {
|
||||
return UIColor(named: "HelpBubbleGradient2", in: engineBundle, compatibleWith: nil)!
|
||||
} else {
|
||||
return UIColor(red: 233.0 / 255.0,
|
||||
green: 224.0 / 255.0,
|
||||
blue: 176.0 / 255.0,
|
||||
alpha: 1.0)
|
||||
}
|
||||
return UIColor(named: "HelpBubbleGradient2", in: engineBundle, compatibleWith: nil)!
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,13 +16,7 @@ extension JSONDecoder.DateDecodingStrategy {
|
|||
return .formatted(formatter)
|
||||
}
|
||||
static var ios8601WithFallback: JSONDecoder.DateDecodingStrategy {
|
||||
if #available(iOS 10.0, *) {
|
||||
return .iso8601
|
||||
}
|
||||
let formatter = DateFormatter()
|
||||
formatter.locale = Locale(identifier: "en_US_POSIX")
|
||||
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
|
||||
return .formatted(formatter)
|
||||
return .iso8601
|
||||
}
|
||||
|
||||
static var ios8601WithMilliseconds: JSONDecoder.DateDecodingStrategy {
|
||||
|
|
|
|||
|
|
@ -73,34 +73,18 @@ private class CustomInputView: UIInputView, UIInputViewAudioFeedback {
|
|||
func setConstraints() {
|
||||
let innerView = keymanWeb.view!
|
||||
|
||||
var guide: UILayoutGuide
|
||||
var conditionalGuide: Bool = false
|
||||
|
||||
if #available(iOSApplicationExtension 11.0, *) {
|
||||
guide = self.safeAreaLayoutGuide
|
||||
conditionalGuide = true
|
||||
} else {
|
||||
guide = self.layoutMarginsGuide
|
||||
}
|
||||
let guide = self.safeAreaLayoutGuide
|
||||
|
||||
// Fallback on earlier versions
|
||||
innerView.topAnchor.constraint(equalTo: guide.topAnchor).isActive = true
|
||||
innerView.bottomAnchor.constraint(equalTo: guide.bottomAnchor).isActive = true
|
||||
if conditionalGuide {
|
||||
innerView.leftAnchor.constraint(equalTo: guide.leftAnchor).isActive = true
|
||||
innerView.rightAnchor.constraint(equalTo: guide.rightAnchor).isActive = true
|
||||
} else {
|
||||
innerView.leftAnchor.constraint(equalTo: self.leftAnchor).isActive = true
|
||||
innerView.rightAnchor.constraint(equalTo: self.rightAnchor).isActive = true
|
||||
}
|
||||
|
||||
innerView.leftAnchor.constraint(equalTo: guide.leftAnchor).isActive = true
|
||||
innerView.rightAnchor.constraint(equalTo: guide.rightAnchor).isActive = true
|
||||
|
||||
// Allow these to be broken if/as necessary to resolve layout issues.
|
||||
var kbdWidthConstraint: NSLayoutConstraint
|
||||
if conditionalGuide {
|
||||
kbdWidthConstraint = innerView.widthAnchor.constraint(equalTo: guide.widthAnchor)
|
||||
} else {
|
||||
kbdWidthConstraint = innerView.widthAnchor.constraint(equalTo: self.widthAnchor)
|
||||
}
|
||||
let kbdWidthConstraint = innerView.widthAnchor.constraint(equalTo: guide.widthAnchor)
|
||||
|
||||
kbdWidthConstraint.priority = .defaultHigh
|
||||
kbdWidthConstraint.isActive = true
|
||||
|
||||
|
|
@ -166,7 +150,6 @@ open class InputViewController: UIInputViewController, KeymanWebDelegate {
|
|||
var landscapeConstraint: NSLayoutConstraint?
|
||||
|
||||
private var keymanWeb: KeymanWebViewController
|
||||
|
||||
private var swallowBackspaceTextChange: Bool = false
|
||||
|
||||
open class var isPortrait: Bool {
|
||||
|
|
@ -179,14 +162,6 @@ open class InputViewController: UIInputViewController, KeymanWebDelegate {
|
|||
return scaling?.bannerHeight ?? 38 // default for iPhone SE, older/smaller devices
|
||||
}
|
||||
|
||||
open override var hasFullAccess: Bool {
|
||||
if #available(iOS 11.0, *) {
|
||||
// Nice and straight-forward here!
|
||||
return super.hasFullAccess
|
||||
}
|
||||
return Storage.shared != nil
|
||||
}
|
||||
|
||||
private var keyboardListCount: Int {
|
||||
return Storage.active.userDefaults.userKeyboards?.count ?? 0
|
||||
}
|
||||
|
|
@ -267,8 +242,8 @@ open class InputViewController: UIInputViewController, KeymanWebDelegate {
|
|||
|
||||
if (!Manager.shared.didSynchronize || shouldSynchronize) && Storage.shared != nil {
|
||||
Manager.shared.synchronizeSWKeyboard()
|
||||
if Manager.shared.currentKeyboardID != nil || Manager.shared.shouldReloadKeyboard {
|
||||
Manager.shared.shouldReloadKeyboard = true
|
||||
if Manager.shared.currentKeyboardID != nil || keymanWeb.shouldReload {
|
||||
keymanWeb.shouldReload = true
|
||||
reload()
|
||||
}
|
||||
Manager.shared.didSynchronize = true
|
||||
|
|
@ -280,10 +255,7 @@ open class InputViewController: UIInputViewController, KeymanWebDelegate {
|
|||
|
||||
open override func viewWillAppear(_ animated: Bool) {
|
||||
super.viewWillAppear(animated)
|
||||
|
||||
if Manager.shared.shouldReloadKeyboard {
|
||||
self.reload()
|
||||
}
|
||||
self.reloadIfNeeded()
|
||||
}
|
||||
|
||||
open override func viewDidAppear(_ animated: Bool) {
|
||||
|
|
@ -304,7 +276,7 @@ open class InputViewController: UIInputViewController, KeymanWebDelegate {
|
|||
// Necessary for existing infrastructure to resend info for the keyboard after reloading
|
||||
// as system keyboard. Do NOT perform if in-app, as this unnecessarily resets the WebView.
|
||||
if(Manager.shared.isSystemKeyboard) {
|
||||
Manager.shared.shouldReloadKeyboard = true
|
||||
keymanWeb.shouldReload = true
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -356,11 +328,9 @@ open class InputViewController: UIInputViewController, KeymanWebDelegate {
|
|||
|
||||
// A full-context deletion will report numCharsToDelete == 0 and won't
|
||||
// otherwise delete selected text.
|
||||
if #available(iOSApplicationExtension 11.0, *) {
|
||||
if let selected = textDocumentProxy.selectedText {
|
||||
if selected.count > 0 {
|
||||
textDocumentProxy.deleteBackward()
|
||||
}
|
||||
if let selected = textDocumentProxy.selectedText {
|
||||
if selected.count > 0 {
|
||||
textDocumentProxy.deleteBackward()
|
||||
}
|
||||
}
|
||||
return
|
||||
|
|
@ -455,12 +425,7 @@ open class InputViewController: UIInputViewController, KeymanWebDelegate {
|
|||
// These require the view to appear - parent and our relationship with it must exist!
|
||||
private func setOuterConstraints() {
|
||||
var baseWidthConstraint: NSLayoutConstraint
|
||||
if #available(iOSApplicationExtension 11.0, *) {
|
||||
baseWidthConstraint = self.inputView!.widthAnchor.constraint(equalTo: parent!.view.safeAreaLayoutGuide.widthAnchor)
|
||||
} else {
|
||||
//baseWidthConstraint = self.inputView!.widthAnchor.constraint(equalTo: parent!.view.layoutMarginsGuide.widthAnchor)
|
||||
baseWidthConstraint = self.inputView!.widthAnchor.constraint(equalTo: parent!.view.widthAnchor)
|
||||
}
|
||||
baseWidthConstraint = self.inputView!.widthAnchor.constraint(equalTo: parent!.view.safeAreaLayoutGuide.widthAnchor)
|
||||
baseWidthConstraint.priority = UILayoutPriority(rawValue: 999)
|
||||
baseWidthConstraint.isActive = true
|
||||
}
|
||||
|
|
@ -528,10 +493,25 @@ open class InputViewController: UIInputViewController, KeymanWebDelegate {
|
|||
func reload() {
|
||||
keymanWeb.reloadKeyboard()
|
||||
}
|
||||
|
||||
func reloadIfNeeded() {
|
||||
if keymanWeb.shouldReload {
|
||||
reload()
|
||||
keymanWeb.shouldReload = false
|
||||
}
|
||||
}
|
||||
|
||||
func setKeyboard(_ kb: InstallableKeyboard) {
|
||||
keymanWeb.setKeyboard(kb)
|
||||
}
|
||||
|
||||
public func setShouldReload() {
|
||||
keymanWeb.shouldReload = true
|
||||
}
|
||||
|
||||
internal var shouldReload: Bool {
|
||||
return keymanWeb.shouldReload
|
||||
}
|
||||
|
||||
func registerLexicalModel(_ lm: InstallableLexicalModel) {
|
||||
keymanWeb.registerLexicalModel(lm)
|
||||
|
|
|
|||
|
|
@ -61,6 +61,7 @@ class KeymanWebViewController: UIViewController {
|
|||
/// when predictive text is not active
|
||||
private var bannerImgPath: String = ""
|
||||
|
||||
var shouldReload: Bool = true
|
||||
var isLoading: Bool = false
|
||||
|
||||
private var currentText: String = ""
|
||||
|
|
@ -569,17 +570,12 @@ extension KeymanWebViewController: WKScriptMessageHandler {
|
|||
// Not usable by older iPhone models.
|
||||
AudioServicesPlaySystemSound(kSystemSoundID_MediumVibrate)
|
||||
} else { // if vibrationSupport == .taptic
|
||||
if #available(iOSApplicationExtension 10.0, *) {
|
||||
// Available with iPhone 7 and beyond, we can now produce nicely customized haptic feedback.
|
||||
// We use this style b/c it's short, and in essence it is a minor UI element collision -
|
||||
// a single key with blocked (erroneous) output.
|
||||
// Oddly, is a closer match to SystemSoundID 1520 than 1521.
|
||||
let vibrator = UIImpactFeedbackGenerator(style: UIImpactFeedbackGenerator.FeedbackStyle.heavy)
|
||||
vibrator.impactOccurred()
|
||||
} else {
|
||||
// Fallback on earlier feedback style
|
||||
AudioServicesPlaySystemSound(kSystemSoundID_MediumVibrate)
|
||||
}
|
||||
// Available with iPhone 7 and beyond, we can now produce nicely customized haptic feedback.
|
||||
// We use this style b/c it's short, and in essence it is a minor UI element collision -
|
||||
// a single key with blocked (erroneous) output.
|
||||
// Oddly, is a closer match to SystemSoundID 1520 than 1521.
|
||||
let vibrator = UIImpactFeedbackGenerator(style: UIImpactFeedbackGenerator.FeedbackStyle.heavy)
|
||||
vibrator.impactOccurred()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -616,11 +612,10 @@ extension KeymanWebViewController: KeymanWebDelegate {
|
|||
}
|
||||
|
||||
setDeviceType(UIDevice.current.userInterfaceIdiom)
|
||||
|
||||
let shouldReloadKeyboard = Manager.shared.shouldReloadKeyboard
|
||||
|
||||
var newKb = Manager.shared.currentKeyboard
|
||||
|
||||
if !shouldReloadKeyboard { // otherwise, we automatically reload anyway.
|
||||
if !shouldReload { // otherwise, we automatically reload anyway.
|
||||
let userData = Manager.shared.isSystemKeyboard ? UserDefaults.standard : Storage.active.userDefaults
|
||||
if newKb == nil {
|
||||
if let id = userData.currentKeyboardID {
|
||||
|
|
@ -642,7 +637,7 @@ extension KeymanWebViewController: KeymanWebDelegate {
|
|||
_ = Manager.shared.setKeyboard(newKb!)
|
||||
}
|
||||
|
||||
// in case `shouldReloadKeyboard == true`. Is set otherwise above.
|
||||
// in case `shouldReload == true`. Is set otherwise above.
|
||||
if(newKb == nil) {
|
||||
newKb = Defaults.keyboard
|
||||
}
|
||||
|
|
@ -655,10 +650,10 @@ extension KeymanWebViewController: KeymanWebDelegate {
|
|||
fixLayout()
|
||||
|
||||
NotificationCenter.default.post(name: Notifications.keyboardLoaded, object: self, value: newKb!)
|
||||
if shouldReloadKeyboard {
|
||||
if shouldReload {
|
||||
NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(self.resetKeyboard), object: nil)
|
||||
perform(#selector(self.resetKeyboard), with: nil, afterDelay: 0.25)
|
||||
Manager.shared.shouldReloadKeyboard = false
|
||||
shouldReload = false
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -141,9 +141,6 @@ public class Manager: NSObject, UIGestureRecognizerDelegate {
|
|||
}
|
||||
}
|
||||
|
||||
// Set to true on init - this allows other engine consumers to set the
|
||||
// keyboard before it displays.
|
||||
var shouldReloadKeyboard = true
|
||||
var shouldReloadLexicalModel = false
|
||||
|
||||
var _inputViewController: InputViewController?
|
||||
|
|
@ -279,7 +276,7 @@ public class Manager: NSObject, UIGestureRecognizerDelegate {
|
|||
//
|
||||
// We MUST NOT shortcut this method as a result; doing so may (rarely) result in the infamous
|
||||
// blank keyboard bug!
|
||||
if kb.fullID == currentKeyboardID && !self.isSystemKeyboard && !self.shouldReloadKeyboard {
|
||||
if kb.fullID == currentKeyboardID && !self.isSystemKeyboard && !inputViewController.shouldReload {
|
||||
SentryManager.breadcrumbAndLog("Keyboard unchanged: \(kb.fullID)")
|
||||
return false
|
||||
// throw KeyboardError.unchanged
|
||||
|
|
@ -754,6 +751,7 @@ public class Manager: NSObject, UIGestureRecognizerDelegate {
|
|||
// true source of the problems.
|
||||
viewController.dismiss(animated: false)
|
||||
showKeyboard()
|
||||
inputViewController.reloadIfNeeded()
|
||||
|
||||
NotificationCenter.default.post(name: Notifications.keyboardPickerDismissed, object: self, value: ())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -352,11 +352,11 @@ public class PackageInstallViewController<Resource: LanguageResource>: UIViewCon
|
|||
let selectedResources = self.package.installableResourceSets.flatMap { $0.filter { selectedLanguageCodes.contains($0.languageID) }} as! [Resource]
|
||||
|
||||
// Always reload after installing or updating resources.
|
||||
Manager.shared.shouldReloadKeyboard = true
|
||||
Manager.shared.inputViewController.setShouldReload()
|
||||
self.pickingCompletionHandler(selectedResources.map { $0.typedFullID })
|
||||
|
||||
// Prevent swipe dismissal.
|
||||
if #available(iOSApplicationExtension 13.0, *) {
|
||||
if #available(iOS 13.0, *) {
|
||||
self.isModalInPresentation = true
|
||||
}
|
||||
|
||||
|
|
@ -375,7 +375,7 @@ public class PackageInstallViewController<Resource: LanguageResource>: UIViewCon
|
|||
// First, show the package's welcome - if it exists.
|
||||
if let welcomeVC = PackageWebViewController(for: package, page: .welcome) {
|
||||
// Prevent swipe dismissal.
|
||||
if #available(iOSApplicationExtension 13.0, *) {
|
||||
if #available(iOS 13.0, *) {
|
||||
welcomeVC.isModalInPresentation = true
|
||||
}
|
||||
|
||||
|
|
@ -467,11 +467,7 @@ public class PackageInstallViewController<Resource: LanguageResource>: UIViewCon
|
|||
} else {
|
||||
let selectionColor = UIView()
|
||||
|
||||
if #available(iOSApplicationExtension 11.0, *) {
|
||||
selectionColor.backgroundColor = UIColor(named: "SelectionPrimary")
|
||||
} else {
|
||||
selectionColor.backgroundColor = Colors.selectionPrimary
|
||||
}
|
||||
selectionColor.backgroundColor = Colors.selectionPrimary
|
||||
|
||||
cell = UITableViewCell(style: .subtitle, reuseIdentifier: cellIdentifier)
|
||||
cell.selectedBackgroundView = selectionColor
|
||||
|
|
|
|||
|
|
@ -197,11 +197,7 @@ public class InstalledLanguagesViewController: UITableViewController, UIAlertVie
|
|||
} else {
|
||||
let selectionColor = UIView()
|
||||
|
||||
if #available(iOSApplicationExtension 11.0, *) {
|
||||
selectionColor.backgroundColor = UIColor(named: "SelectionPrimary")
|
||||
} else {
|
||||
selectionColor.backgroundColor = Colors.selectionPrimary
|
||||
}
|
||||
selectionColor.backgroundColor = Colors.selectionPrimary
|
||||
|
||||
if keyboards.count < 2 {
|
||||
cell = KeyboardNameTableViewCell(style: .subtitle, reuseIdentifier: cellIdentifier)
|
||||
|
|
@ -310,6 +306,7 @@ public class InstalledLanguagesViewController: UITableViewController, UIAlertVie
|
|||
|
||||
switch(package.resourceType()) {
|
||||
case .keyboard:
|
||||
Manager.shared.inputViewController.setShouldReload()
|
||||
msg = NSLocalizedString("notification-download-success-keyboard", bundle: engineBundle, comment: "")
|
||||
case .lexicalModel:
|
||||
msg = NSLocalizedString("notification-download-success-lexical-model", bundle: engineBundle, comment: "")
|
||||
|
|
|
|||
|
|
@ -151,10 +151,9 @@ class LanguageSettingsViewController: UITableViewController {
|
|||
doPredictionsSwitch!.isOn = userDefaults.predictSettingForLanguage(languageID: self.language.id)
|
||||
doPredictionsSwitch!.addTarget(self, action: #selector(self.predictionSwitchValueChanged), for: .valueChanged)
|
||||
cell.addSubview(doPredictionsSwitch!)
|
||||
if #available(iOSApplicationExtension 9.0, *) {
|
||||
doPredictionsSwitch!.rightAnchor.constraint(equalTo: cell.layoutMarginsGuide.rightAnchor).isActive = true
|
||||
doPredictionsSwitch!.centerYAnchor.constraint(equalTo: cell.layoutMarginsGuide.centerYAnchor).isActive = true
|
||||
}
|
||||
|
||||
doPredictionsSwitch!.rightAnchor.constraint(equalTo: cell.layoutMarginsGuide.rightAnchor).isActive = true
|
||||
doPredictionsSwitch!.centerYAnchor.constraint(equalTo: cell.layoutMarginsGuide.centerYAnchor).isActive = true
|
||||
} else if 1 == indexPath.row {
|
||||
correctionsCell = cell
|
||||
cell.accessoryType = .none
|
||||
|
|
@ -167,10 +166,9 @@ class LanguageSettingsViewController: UITableViewController {
|
|||
doCorrectionsSwitch!.isOn = userDefaults.correctSettingForLanguage(languageID: self.language.id)
|
||||
doCorrectionsSwitch!.addTarget(self, action: #selector(self.correctionSwitchValueChanged), for: .valueChanged)
|
||||
cell.addSubview(doCorrectionsSwitch!)
|
||||
if #available(iOSApplicationExtension 9.0, *) {
|
||||
doCorrectionsSwitch!.rightAnchor.constraint(equalTo: cell.layoutMarginsGuide.rightAnchor).isActive = true
|
||||
doCorrectionsSwitch!.centerYAnchor.constraint(equalTo: cell.layoutMarginsGuide.centerYAnchor).isActive = true
|
||||
}
|
||||
|
||||
doCorrectionsSwitch!.rightAnchor.constraint(equalTo: cell.layoutMarginsGuide.rightAnchor).isActive = true
|
||||
doCorrectionsSwitch!.centerYAnchor.constraint(equalTo: cell.layoutMarginsGuide.centerYAnchor).isActive = true
|
||||
|
||||
// Disable interactivity if the prediction toggle is set to 'off'.
|
||||
doCorrectionsSwitch!.isHidden = !userDefaults.predictSettingForLanguage(languageID: self.language.id)
|
||||
|
|
|
|||
|
|
@ -78,31 +78,28 @@ open class SettingsViewController: UITableViewController {
|
|||
"reuseid": "enablecrashreporting"
|
||||
])
|
||||
|
||||
// The iOS Files app is only available with 11.0+.
|
||||
if #available(iOS 11.0, *) {
|
||||
if let _ = URL(string: UIApplication.openSettingsURLString) {
|
||||
itemsArray.append([
|
||||
"title": NSLocalizedString("menu-settings-system-keyboard-menu", bundle: engineBundle, comment: ""),
|
||||
"subtitle": "",
|
||||
"reuseid": "systemkeyboardsettings"
|
||||
])
|
||||
}
|
||||
|
||||
if let _ = URL(string: UIApplication.openSettingsURLString) {
|
||||
itemsArray.append([
|
||||
"title": NSLocalizedString("menu-settings-install-from-file", bundle: engineBundle, comment: ""),
|
||||
"subtitle": NSLocalizedString("menu-settings-install-from-file-description", bundle: engineBundle, comment: ""),
|
||||
"reuseid" : "installfile"
|
||||
"title": NSLocalizedString("menu-settings-system-keyboard-menu", bundle: engineBundle, comment: ""),
|
||||
"subtitle": "",
|
||||
"reuseid": "systemkeyboardsettings"
|
||||
])
|
||||
|
||||
#if DEBUG && !NO_SENTRY
|
||||
itemsArray.append([
|
||||
"title": "Force a crash",
|
||||
"subtitle": "Test Sentry error-reporting integration",
|
||||
"reuseid" : "forcederror"
|
||||
])
|
||||
#endif
|
||||
}
|
||||
|
||||
itemsArray.append([
|
||||
"title": NSLocalizedString("menu-settings-install-from-file", bundle: engineBundle, comment: ""),
|
||||
"subtitle": NSLocalizedString("menu-settings-install-from-file-description", bundle: engineBundle, comment: ""),
|
||||
"reuseid" : "installfile"
|
||||
])
|
||||
|
||||
#if DEBUG && !NO_SENTRY
|
||||
itemsArray.append([
|
||||
"title": "Force a crash",
|
||||
"subtitle": "Test Sentry error-reporting integration",
|
||||
"reuseid" : "forcederror"
|
||||
])
|
||||
#endif
|
||||
|
||||
_ = view
|
||||
}
|
||||
|
||||
|
|
@ -158,11 +155,9 @@ open class SettingsViewController: UITableViewController {
|
|||
showBannerSwitch.addTarget(self, action: #selector(self.bannerSwitchValueChanged),
|
||||
for: .valueChanged)
|
||||
cell.addSubview(showBannerSwitch)
|
||||
|
||||
if #available(iOSApplicationExtension 9.0, *) {
|
||||
showBannerSwitch.rightAnchor.constraint(equalTo: cell.layoutMarginsGuide.rightAnchor).isActive = true
|
||||
showBannerSwitch.centerYAnchor.constraint(equalTo: cell.layoutMarginsGuide.centerYAnchor).isActive = true
|
||||
}
|
||||
|
||||
showBannerSwitch.rightAnchor.constraint(equalTo: cell.layoutMarginsGuide.rightAnchor).isActive = true
|
||||
showBannerSwitch.centerYAnchor.constraint(equalTo: cell.layoutMarginsGuide.centerYAnchor).isActive = true
|
||||
case "showgetstarted":
|
||||
let showAgainSwitch = UISwitch()
|
||||
showAgainSwitch.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
|
@ -174,11 +169,9 @@ open class SettingsViewController: UITableViewController {
|
|||
showAgainSwitch.addTarget(self, action: #selector(self.showGetStartedSwitchValueChanged),
|
||||
for: .valueChanged)
|
||||
cell.addSubview(showAgainSwitch)
|
||||
|
||||
if #available(iOSApplicationExtension 9.0, *) {
|
||||
showAgainSwitch.rightAnchor.constraint(equalTo: cell.layoutMarginsGuide.rightAnchor).isActive = true
|
||||
showAgainSwitch.centerYAnchor.constraint(equalTo: cell.layoutMarginsGuide.centerYAnchor).isActive = true
|
||||
}
|
||||
|
||||
showAgainSwitch.rightAnchor.constraint(equalTo: cell.layoutMarginsGuide.rightAnchor).isActive = true
|
||||
showAgainSwitch.centerYAnchor.constraint(equalTo: cell.layoutMarginsGuide.centerYAnchor).isActive = true
|
||||
case "enablecrashreporting":
|
||||
let enableReportingSwitch = UISwitch()
|
||||
enableReportingSwitch.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
|
@ -191,10 +184,9 @@ open class SettingsViewController: UITableViewController {
|
|||
for: .valueChanged)
|
||||
cell.addSubview(enableReportingSwitch)
|
||||
|
||||
if #available(iOSApplicationExtension 9.0, *) {
|
||||
enableReportingSwitch.rightAnchor.constraint(equalTo: cell.layoutMarginsGuide.rightAnchor).isActive = true
|
||||
enableReportingSwitch.centerYAnchor.constraint(equalTo: cell.layoutMarginsGuide.centerYAnchor).isActive = true
|
||||
}
|
||||
enableReportingSwitch.rightAnchor.constraint(equalTo: cell.layoutMarginsGuide.rightAnchor).isActive = true
|
||||
enableReportingSwitch.centerYAnchor.constraint(equalTo: cell.layoutMarginsGuide.centerYAnchor).isActive = true
|
||||
|
||||
case "systemkeyboardsettings", "installfile", "forcederror":
|
||||
break
|
||||
default:
|
||||
|
|
@ -222,7 +214,7 @@ open class SettingsViewController: UITableViewController {
|
|||
|
||||
// Necessary for the keyboard to visually update to match
|
||||
// the new setting.
|
||||
Manager.shared.shouldReloadKeyboard = true
|
||||
Manager.shared.inputViewController.setShouldReload()
|
||||
}
|
||||
|
||||
@objc func showGetStartedSwitchValueChanged(_ sender: Any) {
|
||||
|
|
|
|||
|
|
@ -46,10 +46,8 @@ public class TextField: UITextField, KeymanResponder {
|
|||
delegateProxy = TextFieldDelegateProxy(self)
|
||||
delegate = delegateProxy
|
||||
|
||||
if #available(iOS 9.0, *) {
|
||||
inputAssistantItem.leadingBarButtonGroups = []
|
||||
inputAssistantItem.trailingBarButtonGroups = []
|
||||
}
|
||||
inputAssistantItem.leadingBarButtonGroups = []
|
||||
inputAssistantItem.trailingBarButtonGroups = []
|
||||
|
||||
self.inputView = Manager.shared.inputViewController.view
|
||||
|
||||
|
|
|
|||
|
|
@ -45,10 +45,8 @@ public class TextView: UITextView, KeymanResponder {
|
|||
delegateProxy = TextViewDelegateProxy(self)
|
||||
delegate = delegateProxy
|
||||
|
||||
if #available(iOS 9.0, *) {
|
||||
inputAssistantItem.leadingBarButtonGroups = []
|
||||
inputAssistantItem.trailingBarButtonGroups = []
|
||||
}
|
||||
inputAssistantItem.leadingBarButtonGroups = []
|
||||
inputAssistantItem.trailingBarButtonGroups = []
|
||||
|
||||
self.inputView = Manager.shared.inputViewController.view
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
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.
|
||||
A frequently-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)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: Keyman for iPhone and iPad 14.0 Help
|
||||
title: Keyman for iPhone and iPad 15.0 Help
|
||||
---
|
||||
|
||||
## [About Keyman](about/)
|
||||
|
|
|
|||
|
|
@ -145,7 +145,6 @@
|
|||
CE80AD33257F2B4A008D2150 /* KeymanEngine.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE80AD32257F2B4A008D2150 /* KeymanEngine.framework */; };
|
||||
CE80AD34257F2B4B008D2150 /* KeymanEngine.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CE80AD32257F2B4A008D2150 /* KeymanEngine.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
CEBD34322654FE3500EB2EA8 /* KeymanEngine.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE80AD32257F2B4A008D2150 /* KeymanEngine.framework */; };
|
||||
CEBD34332654FE3500EB2EA8 /* KeymanEngine.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CE80AD32257F2B4A008D2150 /* KeymanEngine.framework */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
CEBD343B2654FEB400EB2EA8 /* DeviceKit.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEBD34352654FEB400EB2EA8 /* DeviceKit.xcframework */; };
|
||||
CEBD343C2654FEB400EB2EA8 /* DeviceKit.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CEBD34352654FEB400EB2EA8 /* DeviceKit.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
CEBD343D2654FEB400EB2EA8 /* ObjcExceptionBridging.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEBD34362654FEB400EB2EA8 /* ObjcExceptionBridging.xcframework */; };
|
||||
|
|
@ -193,17 +192,6 @@
|
|||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
CEBD34342654FE3500EB2EA8 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
CEBD34332654FE3500EB2EA8 /* KeymanEngine.framework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
|
|
@ -344,13 +332,13 @@
|
|||
CEACC90E25F07D58006EAB45 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
CEACC90F25F07D5A006EAB45 /* km */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = km; path = km.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
CEACC91225F07D77006EAB45 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
CEBD3458265511B700EB2EA8 /* am */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = am; path = am.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
CEBD34352654FEB400EB2EA8 /* DeviceKit.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = DeviceKit.xcframework; path = ../../Carthage/Build/DeviceKit.xcframework; sourceTree = "<absolute>"; };
|
||||
CEBD34362654FEB400EB2EA8 /* ObjcExceptionBridging.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = ObjcExceptionBridging.xcframework; path = ../../Carthage/Build/ObjcExceptionBridging.xcframework; sourceTree = "<absolute>"; };
|
||||
CEBD34372654FEB400EB2EA8 /* Reachability.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Reachability.xcframework; path = ../../Carthage/Build/Reachability.xcframework; sourceTree = "<absolute>"; };
|
||||
CEBD34382654FEB400EB2EA8 /* Sentry.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Sentry.xcframework; path = ../../Carthage/Build/Sentry.xcframework; sourceTree = "<absolute>"; };
|
||||
CEBD34392654FEB400EB2EA8 /* XCGLogger.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = XCGLogger.xcframework; path = ../../Carthage/Build/XCGLogger.xcframework; sourceTree = "<absolute>"; };
|
||||
CEBD343A2654FEB400EB2EA8 /* Zip.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Zip.xcframework; path = ../../Carthage/Build/Zip.xcframework; sourceTree = "<absolute>"; };
|
||||
CEBD3458265511B700EB2EA8 /* am */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = am; path = am.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
CEF4E55523E95B7B0065B9C7 /* ImageBanner.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ImageBanner.xib; sourceTree = "<group>"; };
|
||||
CEF4E55823E967140065B9C7 /* ImageBannerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageBannerViewController.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
|
@ -748,7 +736,6 @@
|
|||
98CD125A19CA85710089385F /* Resources */,
|
||||
CED3CFDA240E49DF001540A1 /* ShellScript */,
|
||||
37BC8FFD1DE83BBD006AEBFF /* Headers */,
|
||||
CEBD34342654FE3500EB2EA8 /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
|
|
@ -1118,7 +1105,7 @@
|
|||
GCC_PREFIX_HEADER = "Keyman/Keyman-Prefix.pch";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)";
|
||||
INFOPLIST_FILE = "Keyman-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -1153,7 +1140,7 @@
|
|||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "Keyman/Keyman-Prefix.pch";
|
||||
INFOPLIST_FILE = "Keyman-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -1310,7 +1297,7 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
INFOPLIST_FILE = SWKeyboard/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -1354,7 +1341,7 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
INFOPLIST_FILE = SWKeyboard/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -1449,7 +1436,7 @@
|
|||
GCC_PREFIX_HEADER = "Keyman/Keyman-Prefix.pch";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)";
|
||||
INFOPLIST_FILE = "Keyman-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -1494,7 +1481,7 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
INFOPLIST_FILE = SWKeyboard/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
|||
_ = KeymanEngine.log
|
||||
|
||||
UniversalLinks.externalLinkLauncher = { url in
|
||||
UIApplication.shared.openURL(url)
|
||||
UIApplication.shared.open(url)
|
||||
}
|
||||
|
||||
Manager.applicationGroupIdentifier = "group.KM4I"
|
||||
|
|
@ -170,11 +170,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
|||
}
|
||||
|
||||
// Workaround to display overlay window above keyboard
|
||||
if #available(iOS 9.0, *) {
|
||||
let windows = UIApplication.shared.windows
|
||||
if let lastWindow = windows.last {
|
||||
_overlayWindow!.windowLevel = lastWindow.windowLevel + 1
|
||||
}
|
||||
let windows = UIApplication.shared.windows
|
||||
if let lastWindow = windows.last {
|
||||
_overlayWindow!.windowLevel = lastWindow.windowLevel + 1
|
||||
}
|
||||
return _overlayWindow!
|
||||
}
|
||||
|
|
|
|||
|
|
@ -114,17 +114,14 @@ class GetStartedViewController: UIViewController, UITableViewDelegate, UITableVi
|
|||
}
|
||||
case 1:
|
||||
cell.textLabel?.text = NSLocalizedString("tutorial-system-keyboard", comment: "")
|
||||
if #available(iOS 11.0, *) {
|
||||
// We can expedite this via near-direct settings link.
|
||||
// So, let's add the one extra needed detail to our detail text.
|
||||
let keyboardsMenuText = NSLocalizedString("ios-settings-keyboards", comment: "")
|
||||
let enableText = String.init(format: NSLocalizedString("toggle-to-enable", comment: ""), "Keyman")
|
||||
// Probably needs to be i18n-adjusted too.
|
||||
let menuBreadcrumbing = NSLocalizedString("menu-breadcrumbing", comment: "")
|
||||
cell.detailTextLabel?.text = String.init(format: menuBreadcrumbing, keyboardsMenuText, enableText)
|
||||
} else {
|
||||
cell.detailTextLabel?.text = ""
|
||||
}
|
||||
// We can expedite this via near-direct settings link.
|
||||
// So, let's add the one extra needed detail to our detail text.
|
||||
let keyboardsMenuText = NSLocalizedString("ios-settings-keyboards", comment: "")
|
||||
let enableText = String.init(format: NSLocalizedString("toggle-to-enable", comment: ""), "Keyman")
|
||||
// Probably needs to be i18n-adjusted too.
|
||||
let menuBreadcrumbing = NSLocalizedString("menu-breadcrumbing", comment: "")
|
||||
cell.detailTextLabel?.text = String.init(format: menuBreadcrumbing, keyboardsMenuText, enableText)
|
||||
|
||||
if !AppDelegate.isKeymanEnabledSystemWide() {
|
||||
cell.accessoryType = .none
|
||||
} else {
|
||||
|
|
@ -155,8 +152,7 @@ class GetStartedViewController: UIViewController, UITableViewDelegate, UITableVi
|
|||
mainViewController.dismissGetStartedView(nil)
|
||||
mainViewController.showInstalledLanguages()
|
||||
case 1:
|
||||
if #available(iOS 11.0, *), // if "Keyboards" is an option in our app's settings menu
|
||||
let appSettings = URL(string: UIApplication.openSettingsURLString) {
|
||||
if let appSettings = URL(string: UIApplication.openSettingsURLString) {
|
||||
UniversalLinks.externalLinkLauncher?(appSettings)
|
||||
} else {
|
||||
let setUpVC = SetUpViewController()
|
||||
|
|
|
|||
|
|
@ -43,16 +43,7 @@ class InfoViewController: UIViewController, UIWebViewDelegate {
|
|||
}
|
||||
|
||||
func reloadKeymanHelp() {
|
||||
if let networkStatus = networkReachable?.connection {
|
||||
switch networkStatus {
|
||||
case Reachability.Connection.none, Reachability.Connection.unavailable:
|
||||
loadFromLocal()
|
||||
default:
|
||||
loadFromServer()
|
||||
}
|
||||
} else {
|
||||
loadFromLocal()
|
||||
}
|
||||
loadFromLocal()
|
||||
}
|
||||
|
||||
private func loadFromLocal() {
|
||||
|
|
@ -63,6 +54,8 @@ class InfoViewController: UIViewController, UIWebViewDelegate {
|
|||
webView.loadRequest(URLRequest(url: URL.init(fileURLWithPath: filePath!)))
|
||||
}
|
||||
|
||||
// Currently unused, as we haven't yet added a toggle to allow users to choose online
|
||||
// over the default of offline.
|
||||
private func loadFromServer() {
|
||||
let appVersion = Version.current.majorMinor
|
||||
let url = "\(KeymanHosts.HELP_KEYMAN_COM)/products/iphone-and-ipad/\(appVersion.plainString)/"
|
||||
|
|
|
|||
|
|
@ -83,11 +83,13 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg
|
|||
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
|
||||
|
||||
// Setup Notifications
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow),
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(self.onKeyboardWillShow),
|
||||
name: UIResponder.keyboardWillShowNotification, object: nil)
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardDidShow),
|
||||
// `keyboardDidShow` apparently matches an internal Apple API and will fail an app submission.
|
||||
// So, cheap workaround: just prefix the thing.
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(self.onKeyboardDidShow),
|
||||
name: UIResponder.keyboardDidShowNotification, object: nil)
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide),
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(self.onKeyboardWillHide),
|
||||
name: UIResponder.keyboardWillHideNotification, object: nil)
|
||||
keyboardLoadedObserver = NotificationCenter.default.addObserver(
|
||||
forName: Notifications.keyboardLoaded,
|
||||
|
|
@ -109,16 +111,14 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg
|
|||
// Unfortunately, it's the main app with the file definitions.
|
||||
// We have to gerry-rig this so that the framework-based SettingsViewController
|
||||
// can launch the app-based DocumentViewController.
|
||||
if #available(iOS 11.0, *) {
|
||||
Manager.shared.fileBrowserLauncher = { navVC in
|
||||
let vc = PackageBrowserViewController(documentTypes: ["com.keyman.kmp"],
|
||||
in: .import,
|
||||
navVC: navVC)
|
||||
Manager.shared.fileBrowserLauncher = { navVC in
|
||||
let vc = PackageBrowserViewController(documentTypes: ["com.keyman.kmp"],
|
||||
in: .import,
|
||||
navVC: navVC)
|
||||
|
||||
// Present the "install from file" browser within the specified navigation view controller.
|
||||
// (Allows displaying from within the Settings menu)
|
||||
navVC.present(vc, animated: true)
|
||||
}
|
||||
// Present the "install from file" browser within the specified navigation view controller.
|
||||
// (Allows displaying from within the Settings menu)
|
||||
navVC.present(vc, animated: true)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -130,7 +130,6 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg
|
|||
super.viewDidLoad()
|
||||
|
||||
extendedLayoutIncludesOpaqueBars = true
|
||||
automaticallyAdjustsScrollViewInsets = false
|
||||
|
||||
let systemFonts = Set<String>(UIFont.familyNames)
|
||||
|
||||
|
|
@ -144,13 +143,7 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg
|
|||
ResourceDownloadManager.shared.queryKeysForUpdatablePackages { _, _ in }
|
||||
}
|
||||
|
||||
// Implement a default color...
|
||||
var bgColor = UIColor(red: 1.0, green: 1.0, blue: 207.0 / 255.0, alpha: 1.0)
|
||||
// And if the iOS version is current enough, override it from the palette.
|
||||
if #available(iOS 11.0, *) {
|
||||
bgColor = UIColor(named: "InputBackground")!
|
||||
}
|
||||
view?.backgroundColor = bgColor
|
||||
view?.backgroundColor = UIColor(named: "InputBackground")!
|
||||
|
||||
// Check for configuration profiles/fonts to install
|
||||
FontManager.shared.registerCustomFonts()
|
||||
|
|
@ -192,7 +185,7 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg
|
|||
textView = TextView(frame: view.frame)
|
||||
textView.setKeymanDelegate(self)
|
||||
textView.viewController = self
|
||||
textView.backgroundColor = bgColor
|
||||
textView.backgroundColor = UIColor(named: "InputBackground")!
|
||||
textView.isScrollEnabled = true
|
||||
textView.isUserInteractionEnabled = true
|
||||
textView.font = textView.font?.withSize(textSize)
|
||||
|
|
@ -206,7 +199,7 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg
|
|||
}
|
||||
|
||||
infoView.view?.isHidden = true
|
||||
infoView.view?.backgroundColor = bgColor
|
||||
infoView.view?.backgroundColor = UIColor(named: "InputBackground")!
|
||||
view?.addSubview(infoView!.view)
|
||||
|
||||
resizeViews(withKeyboardVisible: textView.isFirstResponder)
|
||||
|
|
@ -396,21 +389,19 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg
|
|||
return navigationController!.navigationBar.frame.height
|
||||
}
|
||||
|
||||
@objc func keyboardWillShow(_ notification: Notification) {
|
||||
@objc func onKeyboardWillShow(_ notification: Notification) {
|
||||
_ = dismissDropDownMenu()
|
||||
resizeViews(withKeyboardVisible: true)
|
||||
}
|
||||
|
||||
@objc func keyboardDidShow(_ notification: Notification) {
|
||||
@objc func onKeyboardDidShow(_ notification: Notification) {
|
||||
// Workaround to display overlay window above keyboard
|
||||
if #available(iOS 9.0, *) {
|
||||
let windows = UIApplication.shared.windows
|
||||
let lastWindow = windows.last
|
||||
overlayWindow.windowLevel = lastWindow!.windowLevel + 1
|
||||
}
|
||||
let windows = UIApplication.shared.windows
|
||||
let lastWindow = windows.last
|
||||
overlayWindow.windowLevel = lastWindow!.windowLevel + 1
|
||||
}
|
||||
|
||||
@objc func keyboardWillHide(_ notification: Notification) {
|
||||
@objc func onKeyboardWillHide(_ notification: Notification) {
|
||||
resizeViews(withKeyboardVisible: false)
|
||||
}
|
||||
|
||||
|
|
@ -474,7 +465,7 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg
|
|||
navigationItem.rightBarButtonItem = nil
|
||||
setNavBarButtons()
|
||||
if wasKeyboardVisible {
|
||||
perform(#selector(self.showKeyboard), with: nil, afterDelay: 0.75)
|
||||
perform(#selector(self.displayKeyboard), with: nil, afterDelay: 0.75)
|
||||
}
|
||||
if shouldShowGetStarted {
|
||||
perform(#selector(self.showGetStartedView), with: nil, afterDelay: 0.75)
|
||||
|
|
@ -827,7 +818,8 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg
|
|||
}
|
||||
}
|
||||
|
||||
@objc func showKeyboard() {
|
||||
// showKeyboard matches an internal Apple API, so it's not available for use as a selector.
|
||||
@objc func displayKeyboard() {
|
||||
textView.becomeFirstResponder()
|
||||
}
|
||||
|
||||
|
|
@ -856,7 +848,7 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg
|
|||
userData.synchronize()
|
||||
|
||||
if action.style == .default {
|
||||
UIApplication.shared.openURL(URL(string: "\(baseUri)\(profileName)")!)
|
||||
UIApplication.shared.open(URL(string: "\(baseUri)\(profileName)")!)
|
||||
}
|
||||
self.profileName = nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#!/bin/sh
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# set -e: Terminate script if a command returns an error
|
||||
set -e
|
||||
|
|
@ -60,6 +60,7 @@ CLEAN_ONLY=false
|
|||
CONFIG=Release
|
||||
DO_KMP_DOWNLOADS=false
|
||||
CODE_SIGN=
|
||||
DO_CODE_SIGN=true
|
||||
|
||||
# Parse args
|
||||
while [[ $# -gt 0 ]] ; do
|
||||
|
|
@ -77,7 +78,7 @@ while [[ $# -gt 0 ]] ; do
|
|||
;;
|
||||
-no-codesign)
|
||||
CODE_SIGN="CODE_SIGN_IDENTITY= CODE_SIGNING_REQUIRED=NO ${DEV_TEAM:-} CODE_SIGN_ENTITLEMENTS= CODE_SIGNING_ALLOWED=NO"
|
||||
DO_ARCHIVE=false
|
||||
DO_CODE_SIGN=false
|
||||
;;
|
||||
-no-archive)
|
||||
DO_ARCHIVE=false
|
||||
|
|
@ -283,8 +284,8 @@ if [ $DO_KEYMANAPP = true ]; then
|
|||
else
|
||||
# Time to prepare the deployment archive data.
|
||||
echo ""
|
||||
echo "Preparing .ipa file for deployment."
|
||||
xcodebuild $XCODEFLAGS_EXT -scheme Keyman \
|
||||
echo "Preparing .xcarchive."
|
||||
xcodebuild $XCODEFLAGS_EXT $CODE_SIGN -scheme Keyman \
|
||||
-archivePath $ARCHIVE_PATH \
|
||||
archive -allowProvisioningUpdates \
|
||||
VERSION=$VERSION \
|
||||
|
|
@ -294,9 +295,12 @@ if [ $DO_KEYMANAPP = true ]; then
|
|||
|
||||
assertDirExists "$ARCHIVE_PATH"
|
||||
|
||||
xcodebuild $XCODEFLAGS -exportArchive -archivePath $ARCHIVE_PATH \
|
||||
-exportOptionsPlist exportAppStore.plist \
|
||||
-exportPath $BUILD_PATH/${CONFIG}-iphoneos -allowProvisioningUpdates
|
||||
if [ $DO_CODE_SIGN == true ]; then
|
||||
echo "Preparing .ipa file for deployment"
|
||||
xcodebuild $XCODEFLAGS -exportArchive -archivePath $ARCHIVE_PATH \
|
||||
-exportOptionsPlist exportAppStore.plist \
|
||||
-exportPath $BUILD_PATH/${CONFIG}-iphoneos -allowProvisioningUpdates
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
|
|
|||
|
|
@ -377,7 +377,7 @@
|
|||
"$(SRCROOT)/../../Carthage/Build/",
|
||||
);
|
||||
INFOPLIST_FILE = KMSample1/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -402,7 +402,7 @@
|
|||
"$(SRCROOT)/../../Carthage/Build/",
|
||||
);
|
||||
INFOPLIST_FILE = KMSample1/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
|
|||
|
|
@ -553,7 +553,7 @@
|
|||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
INFOPLIST_FILE = KMSample2/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -578,7 +578,7 @@
|
|||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
INFOPLIST_FILE = KMSample2/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -604,7 +604,7 @@
|
|||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = SWKeyboard/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -629,7 +629,7 @@
|
|||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
INFOPLIST_FILE = SWKeyboard/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#!/bin/sh
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# set -e: Terminate script if a command returns an error
|
||||
set -e
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#!/bin/sh
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -u
|
||||
|
|
|
|||
118
ios/tools/prepRelease.sh
Executable file
118
ios/tools/prepRelease.sh
Executable file
|
|
@ -0,0 +1,118 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
## Note - this script is designed solely for use within our Continuous
|
||||
## Integration processes with `pwd` as this script's parent folder.
|
||||
|
||||
# Exit if program call fails
|
||||
set -e
|
||||
|
||||
# Exit if unset variable used
|
||||
## set -u (causes history-utils.sh to fail)
|
||||
|
||||
## 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
|
||||
|
||||
# This script runs from its parent's folder
|
||||
cd "$(dirname "$THIS_SCRIPT")/.."
|
||||
|
||||
# Only allow one upload artifact set to exist.
|
||||
if [ -d "upload" ]; then
|
||||
rm -rf upload
|
||||
fi
|
||||
|
||||
#Include script dependency
|
||||
. $KEYMAN_ROOT/resources/build/history/history-utils.sh #includes the following
|
||||
#. ../resources/shellHelperFunctions.sh
|
||||
|
||||
BUILD_NUMBER=`cat ../VERSION.md`
|
||||
TIER=`cat ../TIER.md`
|
||||
|
||||
KEYMAN_CHANGELOG="changelog-${BUILD_NUMBER}-${TIER}.txt"
|
||||
CHANGELOG_PATH="upload/$BUILD_NUMBER/$KEYMAN_CHANGELOG"
|
||||
|
||||
WORK_DIR=`pwd`
|
||||
|
||||
BUILD_COUNTER="$((${BUILD_NUMBER##*.}))"
|
||||
|
||||
UPLOAD_BASE="upload"
|
||||
UPLOAD_FOLDER="${BUILD_NUMBER}"
|
||||
UPLOAD_DIR="${UPLOAD_BASE}/${UPLOAD_FOLDER}"
|
||||
|
||||
mkdir -p "${UPLOAD_DIR}"
|
||||
|
||||
# First, we prep the files for publication: write changelog
|
||||
|
||||
echo "Writing changelog to $CHANGELOG_PATH"
|
||||
get_version_notes "ios" "${BUILD_NUMBER}" "$TIER" > $CHANGELOG_PATH
|
||||
echo "* Minor fixes and performance improvements" >> $CHANGELOG_PATH
|
||||
assertFileExists "${CHANGELOG_PATH}"
|
||||
|
||||
# Strip emoji to make Apple happy
|
||||
emoji="\U1f300-\U1f5ff\U1f900-\U1f9ff\U1f600-\U1f64f\U1f680-\U1f6ff\U2600-\U26ff\U2700-\U27bf\U1f1e6-\U1f1ff\U1f191-\U1f251\U1f004\U1f0cf\U1f170-\U1f171\U1f17e-\U1f17f\U1f18e\U3030\U2b50\U2b55\U2934-\U2935\U2b05-\U2b07\U2b1b-\U2b1c\U3297\U3299\U303d\U00a9\U00ae\U2122\U23f3\U24c2\U23e9-\U23ef\U25b6\U23f8-\U23fa"
|
||||
LC_ALL=UTF-8 sed -e "s/[$(printf $emoji)]//g" < "$CHANGELOG_PATH" > "$CHANGELOG_PATH.1"
|
||||
mv -f "$CHANGELOG_PATH.1" "$CHANGELOG_PATH"
|
||||
assertFileExists "${CHANGELOG_PATH}"
|
||||
|
||||
#
|
||||
# Keyman Engine
|
||||
#
|
||||
|
||||
KMEI_DST_NAME="keyman-engine-ios-${BUILD_NUMBER}.zip"
|
||||
KMEI_DST="${WORK_DIR}/${UPLOAD_DIR}/${KMEI_DST_NAME}"
|
||||
|
||||
KMEI_FRAMEWORK_BASE="build/Build/Products/Release/"
|
||||
FRAMEWORK="KeymanEngine.xcframework"
|
||||
|
||||
KEYMAN_SAMPLES="samples"
|
||||
|
||||
echo "engine dest: $KMEI_DST"
|
||||
|
||||
echo "Zipping ${UNI_FRAMEWORK} => ${UPLOAD_DIR}/${KMEI_DST}..."
|
||||
cd "${KMEI_FRAMEWORK_BASE}"
|
||||
zip -qrX ${KMEI_DST} ${FRAMEWORK}
|
||||
cd $WORK_DIR
|
||||
|
||||
echo "Copying Keyman Engine samples into ${UPLOAD_DIR}/${KMEI_DST_NAME}..."
|
||||
cp -rf "${KEYMAN_SAMPLES}" "${UPLOAD_DIR}/samples"
|
||||
cd "${UPLOAD_DIR}"
|
||||
zip -qr "${KMEI_DST_NAME}" "samples"
|
||||
rm -rf "samples"
|
||||
cd $WORK_DIR
|
||||
|
||||
#
|
||||
# Keyman app
|
||||
#
|
||||
|
||||
KEYMANAPP_IPA="build/Build/Products/Release-iphoneos/Keyman.ipa"
|
||||
KEYMANAPP_IPA_DST="keyman-ios-${BUILD_NUMBER}.ipa"
|
||||
|
||||
echo "Copying Keyman IPA ${KEYMANAPP_IPA} => ${UPLOAD_DIR}/${KEYMANAPP_IPA/DST}..."
|
||||
cp "${KEYMANAPP_IPA}" "${WORK_DIR}/${UPLOAD_DIR}/${KEYMANAPP_IPA_DST}"
|
||||
|
||||
#
|
||||
# FirstVoices app
|
||||
#
|
||||
|
||||
if [ ${RELEASE_OEM_FIRSTVOICES} = true ]; then
|
||||
FIRSTVOICESAPP_IPA="../oem/firstvoices/ios/build/Build/Products/Release-iphoneos/FirstVoices.ipa"
|
||||
FIRSTVOICESAPP_IPA_DST="firstvoices-ios-${BUILD_NUMBER}.ipa"
|
||||
|
||||
echo "Copying FirstVoices IPA ${FIRSTVOICESAPP_IPA} => ${UPLOAD_DIR}/${FIRSTVOICESAPP_IPA/DST}..."
|
||||
cp "${FIRSTVOICESAPP_IPA}" "${WORK_DIR}/${UPLOAD_DIR}/${FIRSTVOICESAPP_IPA_DST}"
|
||||
fi
|
||||
|
||||
#
|
||||
# Write download info files
|
||||
#
|
||||
|
||||
cd "${UPLOAD_DIR}"
|
||||
|
||||
write_download_info "Keyman Engine for iOS" "${KMEI_DST_NAME}" "${BUILD_NUMBER}" "${TIER}" "ios"
|
||||
write_download_info "Keyman for iPhone and iPad" "${KEYMANAPP_IPA_DST}" "${BUILD_NUMBER}" "${TIER}" "ios"
|
||||
|
||||
if [ ${RELEASE_OEM_FIRSTVOICES} = true ]; then
|
||||
write_download_info "FirstVoices Keyboards" "${FIRSTVOICESAPP_IPA_DST}" "${BUILD_NUMBER}" "${TIER}" "ios"
|
||||
fi
|
||||
|
|
@ -20,5 +20,5 @@
|
|||
"ts-node",
|
||||
"typescript"
|
||||
],
|
||||
"version": "15.0.53"
|
||||
"version": "15.0.57"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
- [kmflcomp](./kmflcomp) - KMFL keyboard compiler
|
||||
- [libkmfl](./libkmfl) - older KMFL core library
|
||||
- [ibus-kmfl](./ibus-kmfl) - IBUS integration to use KMFL
|
||||
- scim\_kmfl\_imengine - deprecated SCIM engine to use KMFL
|
||||
|
||||
See [license information](./LICENSE.md) about licensing.
|
||||
|
||||
|
|
@ -18,7 +17,15 @@ See [license information](./LICENSE.md) about licensing.
|
|||
- It is helpful to be using the [packages.sil.org](http://packages.sil.org) repo
|
||||
|
||||
- Install packages required for building and developing KMFL and Keyman for Linux
|
||||
`sudo apt install cdbs debhelper libx11-dev autotools-dev build-essential dh-autoreconf flex bison libibus-1.0-dev python3-setuptools meson libjson-glib-dev libgtk-3-dev libxml2-utils help2man python3-lxml python3-magic python3-numpy python3-pil python3-pip python3-qrcode python3-requests python3-requests-cache python3 python3-gi dconf-cli dconf-editor`
|
||||
|
||||
```bash
|
||||
sudo apt install cdbs debhelper libx11-dev autotools-dev build-essential \
|
||||
dh-autoreconf flex bison libibus-1.0-dev python3-setuptools meson \
|
||||
libjson-glib-dev libgtk-3-dev libxml2-utils help2man python3-lxml \
|
||||
python3-magic python3-numpy python3-pil python3-pip python3-qrcode \
|
||||
python3-requests python3-requests-cache python3 python3-gi dconf-cli \
|
||||
dconf-editor
|
||||
```
|
||||
|
||||
## Compiling from Command Line
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,9 @@
|
|||
ibus-keyman (14.0.273-1) unstable; urgency=medium
|
||||
|
||||
* Keyman 14
|
||||
|
||||
-- Eberhard Beilharz <eb1@sil.org> Mon, 26 Apr 2021 18:24:41 +0200
|
||||
|
||||
ibus-keyman (11.0.103-4) unstable; urgency=medium
|
||||
|
||||
* don't attempt to restart ibus without sudo and ps
|
||||
|
|
|
|||
|
|
@ -1,3 +1,9 @@
|
|||
ibus-kmfl (14.0.273-1) unstable; urgency=medium
|
||||
|
||||
* Keyman 14
|
||||
|
||||
-- Eberhard Beilharz <eb1@sil.org> Mon, 26 Apr 2021 18:24:41 +0200
|
||||
|
||||
ibus-kmfl (11.0.101-1) unstable; urgency=medium
|
||||
|
||||
* New upstream Keyman for Linux 11.0 beta 1
|
||||
|
|
|
|||
|
|
@ -1,3 +1,9 @@
|
|||
keyman-config (14.0.273-1) unstable; urgency=medium
|
||||
|
||||
* Keyman 14
|
||||
|
||||
-- Eberhard Beilharz <eb1@sil.org> Mon, 26 Apr 2021 18:24:41 +0200
|
||||
|
||||
keyman-config (11.0.103-3) unstable; urgency=medium
|
||||
|
||||
* Update maintainer to Debian Input Method Team
|
||||
|
|
|
|||
|
|
@ -1,3 +1,9 @@
|
|||
kmflcomp (14.0.273-1) unstable; urgency=medium
|
||||
|
||||
* Keyman 14
|
||||
|
||||
-- Eberhard Beilharz <eb1@sil.org> Mon, 26 Apr 2021 18:24:41 +0200
|
||||
|
||||
kmflcomp (11.0.101-1) unstable; urgency=medium
|
||||
|
||||
* New upstream beta 1 of Keyman for Linux 11.0
|
||||
|
|
|
|||
|
|
@ -1,3 +1,9 @@
|
|||
libkmfl (14.0.273-1) unstable; urgency=medium
|
||||
|
||||
* Keyman 14
|
||||
|
||||
-- Eberhard Beilharz <eb1@sil.org> Mon, 26 Apr 2021 18:24:41 +0200
|
||||
|
||||
libkmfl (11.0.101-1) unstable; urgency=medium
|
||||
|
||||
* New upstream - Keyman for Linux 11.0 beta 1
|
||||
|
|
|
|||
|
|
@ -72,6 +72,7 @@ displayInfo "" \
|
|||
cd $KEYMAN_ROOT/mac/help
|
||||
|
||||
MDLUA="$KEYMAN_ROOT/resources/build/html-link.lua"
|
||||
CSS="../../resources/build/offline-help-style-spec.txt"
|
||||
MD=`find . -name "*.md"`
|
||||
DESTHTM="$THIS_DIR/Keyman4MacIM/Keyman4MacIM/Help"
|
||||
|
||||
|
|
@ -94,7 +95,7 @@ if $DO_HTM; then
|
|||
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
|
||||
pandoc -s -H "$CSS" --lua-filter="$MDLUA" -t html -o "$OUTFILE" $INFILE
|
||||
done
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
github "marmelroy/Zip"
|
||||
github "DaveWoodCom/XCGLogger" ~> 6.1.0
|
||||
github "dennisweissmann/DeviceKit" ~> 2.3
|
||||
github "devicekit/DeviceKit" ~> 2.3
|
||||
github "ashleymills/Reachability.swift"
|
||||
github "getsentry/sentry-cocoa" ~> 6.2.1
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
github "DaveWoodCom/XCGLogger" "6.1.0"
|
||||
github "ashleymills/Reachability.swift" "v5.0.0"
|
||||
github "dennisweissmann/DeviceKit" "2.3.0"
|
||||
github "devicekit/DeviceKit" "2.3.0"
|
||||
github "getsentry/sentry-cocoa" "6.2.1"
|
||||
github "marmelroy/Zip" "2.0.0"
|
||||
|
|
|
|||
|
|
@ -55,7 +55,6 @@
|
|||
CEBD34272654D76E00EB2EA8 /* Zip.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEBD340B2654D5AA00EB2EA8 /* Zip.xcframework */; };
|
||||
CEBD34282654D76E00EB2EA8 /* Zip.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CEBD340B2654D5AA00EB2EA8 /* Zip.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
CEBD34472654FF3300EB2EA8 /* KeymanEngine.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEBD34012654D41200EB2EA8 /* KeymanEngine.xcframework */; };
|
||||
CEBD34482654FF3300EB2EA8 /* KeymanEngine.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CEBD34012654D41200EB2EA8 /* KeymanEngine.xcframework */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
CEDB327F265C9C58000A2009 /* DeviceKit.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEBD34052654D4EB00EB2EA8 /* DeviceKit.xcframework */; };
|
||||
CEDB3280265C9C58000A2009 /* ObjcExceptionBridging.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEBD34082654D5AA00EB2EA8 /* ObjcExceptionBridging.xcframework */; };
|
||||
CEDB3281265C9C58000A2009 /* Reachability.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEBD340C2654D5AB00EB2EA8 /* Reachability.xcframework */; };
|
||||
|
|
@ -93,17 +92,6 @@
|
|||
name = "Embed App Extensions";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
CEBD34492654FF3300EB2EA8 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
CEBD34482654FF3300EB2EA8 /* KeymanEngine.xcframework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
|
|
@ -331,7 +319,6 @@
|
|||
98C9A8B91BFBF23C009E9A4F /* Frameworks */,
|
||||
98C9A8BA1BFBF23C009E9A4F /* Resources */,
|
||||
37B453EF245C09CE008877E5 /* ShellScript */,
|
||||
CEBD34492654FF3300EB2EA8 /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
|
|
@ -568,10 +555,6 @@
|
|||
ENABLE_BITCODE = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(PROJECT_DIR)",
|
||||
"$(SRCROOT)/../../../ios/Carthage/Build/",
|
||||
);
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
|
|
@ -630,10 +613,6 @@
|
|||
ENABLE_BITCODE = NO;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(PROJECT_DIR)",
|
||||
"$(SRCROOT)/../../../ios/Carthage/Build/",
|
||||
);
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
|
|
@ -663,7 +642,7 @@
|
|||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEVELOPMENT_TEAM = D7TR486TEH;
|
||||
INFOPLIST_FILE = FirstVoices/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
KEYMAN_ROOT = "$(SRCROOT)/../../..";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
|
@ -692,7 +671,7 @@
|
|||
CODE_SIGN_STYLE = Manual;
|
||||
DEVELOPMENT_TEAM = D7TR486TEH;
|
||||
INFOPLIST_FILE = FirstVoices/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
KEYMAN_ROOT = "$(SRCROOT)/../../..";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
|
@ -717,13 +696,9 @@
|
|||
CODE_SIGN_STYLE = Manual;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEVELOPMENT_TEAM = D7TR486TEH;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/Carthage/Build/iOS",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = "";
|
||||
INFOPLIST_FILE = SWKeyboard/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
KEYMAN_ROOT = "$(SRCROOT)/../../..";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
|
@ -752,13 +727,9 @@
|
|||
CODE_SIGN_IDENTITY = "iPhone Distribution";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEVELOPMENT_TEAM = D7TR486TEH;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/Carthage/Build/iOS",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = "";
|
||||
INFOPLIST_FILE = SWKeyboard/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
KEYMAN_ROOT = "$(SRCROOT)/../../..";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#!/bin/sh
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## START STANDARD BUILD SCRIPT INCLUDE
|
||||
# adjust relative paths as necessary
|
||||
|
|
|
|||
288
resources/build/offline-help-style-spec.txt
Normal file
288
resources/build/offline-help-style-spec.txt
Normal file
|
|
@ -0,0 +1,288 @@
|
|||
<style>
|
||||
/**************************************
|
||||
* 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;
|
||||
}
|
||||
|
||||
/**************************************
|
||||
* Page Layout CSS
|
||||
* ***********************************/
|
||||
|
||||
html{
|
||||
cursor: default;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
:not(div.interface-hierarchy) blockquote {
|
||||
margin-left: 32px;
|
||||
margin-bottom: 16px;
|
||||
background: rgba(242,242,242,0.9);
|
||||
padding: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
h1{
|
||||
text-align: left;
|
||||
font-size: 28pt;
|
||||
padding: 40px 10px 10px 10px;
|
||||
}
|
||||
|
||||
h2{
|
||||
font-size: 20pt;
|
||||
line-height: 1.4;
|
||||
padding: 32px 10px 10px 10px;
|
||||
}
|
||||
|
||||
h3{
|
||||
font-size: 16pt;
|
||||
font-weight: 600;
|
||||
padding: 16px 10px 10px 10px;
|
||||
}
|
||||
|
||||
h3, h2, h1 {
|
||||
color: #B92034;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
h1 a, h2 a, h3 a {
|
||||
color: #B92034;
|
||||
}
|
||||
|
||||
h1 a:visited, h2 a:visited, h3 a:visited {
|
||||
color: #B92034;
|
||||
}
|
||||
|
||||
h4{
|
||||
font-size: 14pt;
|
||||
font-weight: 600;
|
||||
padding: 4px 10px 4px 10px;
|
||||
}
|
||||
|
||||
p, dl, .itemizedlist {
|
||||
padding: 0px 10px 10px 10px;
|
||||
line-height: 1.4;
|
||||
font-size: 14pt;
|
||||
}
|
||||
|
||||
p a{
|
||||
color: #B92034;
|
||||
text-decoration: underline;
|
||||
cursor: pointer;
|
||||
font-weight: 600;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
li{
|
||||
margin-left: 30px;
|
||||
list-style: disc;
|
||||
list-style-position: outside;
|
||||
line-height: 1.4;
|
||||
font-size: 14pt;
|
||||
}
|
||||
|
||||
img.center{
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
display: block;
|
||||
}
|
||||
|
||||
img.inline {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.itemizedlist li{
|
||||
list-style-position: outside;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
/* TODO: deprecate this since prismjs handles it. This also conflicts with the line-numbers plugin */
|
||||
pre {
|
||||
margin-left: 9px;
|
||||
margin-right: 9px;
|
||||
padding: 9px;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
pre code {
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
ol li a{
|
||||
color: #B92034;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
/* Font styling limited to Ascii characters */
|
||||
kbd {
|
||||
background: none repeat scroll 0 0 #CCCCD0;
|
||||
border: 1px solid #808080;
|
||||
border-right: 2px solid #606060;
|
||||
border-bottom: 2px solid #606060;
|
||||
border-radius: 4px;
|
||||
color: #000000;
|
||||
font-family: "NotoSans-Regular-Ascii";
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
margin: 0;
|
||||
padding: 1px 4px;
|
||||
min-width: 1.5em;
|
||||
text-align: center;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
/* Make the <kbd> 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;
|
||||
}
|
||||
|
||||
</style>
|
||||
2
resources/gosh/package-lock.json
generated
2
resources/gosh/package-lock.json
generated
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"name": "@keymanapp/resources-gosh",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"lockfileVersion": 1
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/resources-gosh",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"description": "Good Ol' Shell",
|
||||
"author": "Marc Durdin <marc@keyman.com> (https://github.com/mcdurdin)",
|
||||
"contributors": [
|
||||
|
|
|
|||
2
resources/web-environment/package-lock.json
generated
2
resources/web-environment/package-lock.json
generated
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"name": "@keymanapp/web-environment",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"lockfileVersion": 1
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/web-environment",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"description": "A compilation utility for passing select environment variables into our TS builds",
|
||||
"author": "Joshua Horton <joshua_horton@sil.org> (https://github.com/jahorton)",
|
||||
"homepage": "https://github.com/keymanapp/keyman",
|
||||
|
|
@ -17,6 +17,6 @@
|
|||
"url": "https://github.com/keymanapp/keyman/issues"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@keymanapp/resources-gosh": "^15.0.53"
|
||||
"@keymanapp/resources-gosh": "^15.0.57"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
2
web/package-lock.json
generated
2
web/package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "keyman",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "keyman",
|
||||
"version": "15.0.53",
|
||||
"version": "15.0.57",
|
||||
"description": "Facilitates text input in any language.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
|
@ -18,8 +18,8 @@
|
|||
},
|
||||
"homepage": "https://github.com/keymanapp/keyman#readme",
|
||||
"devDependencies": {
|
||||
"@keymanapp/resources-gosh": "^15.0.53",
|
||||
"@keymanapp/web-sentry-manager": "^15.0.53",
|
||||
"@keymanapp/resources-gosh": "^15.0.57",
|
||||
"@keymanapp/web-sentry-manager": "^15.0.57",
|
||||
"@sentry/cli": "^1.52.3",
|
||||
"chai": "^4.3.4",
|
||||
"google-closure-compiler-java": "^20200224.0.0",
|
||||
|
|
@ -52,13 +52,13 @@
|
|||
"sentry-cli": "sentry-cli"
|
||||
},
|
||||
"dependencies": {
|
||||
"@keymanapp/input-processor": "^15.0.53",
|
||||
"@keymanapp/keyboard-processor": "^15.0.53",
|
||||
"@keymanapp/lexical-model-layer": "^15.0.53",
|
||||
"@keymanapp/models-types": "^15.0.53",
|
||||
"@keymanapp/recorder-core": "^15.0.53",
|
||||
"@keymanapp/web-environment": "^15.0.53",
|
||||
"@keymanapp/web-utils": "^15.0.53",
|
||||
"@keymanapp/input-processor": "^15.0.57",
|
||||
"@keymanapp/keyboard-processor": "^15.0.57",
|
||||
"@keymanapp/lexical-model-layer": "^15.0.57",
|
||||
"@keymanapp/models-types": "^15.0.57",
|
||||
"@keymanapp/recorder-core": "^15.0.57",
|
||||
"@keymanapp/web-environment": "^15.0.57",
|
||||
"@keymanapp/web-utils": "^15.0.57",
|
||||
"@types/node": "^11.9.4",
|
||||
"es6-shim": "^0.35.5",
|
||||
"eventemitter3": "^4.0.0"
|
||||
|
|
|
|||
19
web/source/build_kill_browserstack.sh
Executable file
19
web/source/build_kill_browserstack.sh
Executable file
|
|
@ -0,0 +1,19 @@
|
|||
#! /usr/bin/env bash
|
||||
#
|
||||
# CI script to kill BrowserStack testing tunnel (Windows only)
|
||||
#
|
||||
|
||||
set -eu
|
||||
|
||||
## START STANDARD BUILD SCRIPT INCLUDE
|
||||
# adjust relative paths as necessary
|
||||
THIS_SCRIPT="$(greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null || readlink -f "${BASH_SOURCE[0]}")"
|
||||
. "$(dirname "$THIS_SCRIPT")/../../resources/build/build-utils.sh"
|
||||
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
|
||||
## END STANDARD BUILD SCRIPT INCLUDE
|
||||
|
||||
get_builder_OS
|
||||
|
||||
if [ ${os_id} == 'win' ]; then
|
||||
taskkill //f //im BrowserStackLocal.exe
|
||||
fi
|
||||
|
|
@ -524,6 +524,34 @@ namespace com.keyman.dom {
|
|||
super(keyman);
|
||||
}
|
||||
|
||||
private static selectTouch(e: TouchEvent): Touch {
|
||||
/**
|
||||
* During multi-touch event's, it's possible for one or more touches of said multi-touch
|
||||
* to be against irrelevant parts of the page. We only want to consider touches against
|
||||
* valid OutputTargets - against elements of the page that KMW can attach to.
|
||||
* With touch active... that's a TouchAliasElement.
|
||||
*/
|
||||
let isValidTouch = function(touch: Touch, target: EventTarget): boolean {
|
||||
return e.target == target && !!(findTouchAliasTarget(touch.target as HTMLElement));
|
||||
}
|
||||
|
||||
// The event at least tells us the event's target, which can be used to help check
|
||||
// whether or not individual `Touch`es may be related to this specific event for
|
||||
// an ongoing multitouch scenario.
|
||||
let target = e.target;
|
||||
|
||||
// Find the first touch affected by this event that matches the current target.
|
||||
for(let i=0; i < e.changedTouches.length; i++) {
|
||||
if(isValidTouch(e.changedTouches[i], target)) {
|
||||
return e.changedTouches[i];
|
||||
}
|
||||
}
|
||||
|
||||
// Shouldn't be possible. Just in case, we'd prefer a silent failure that allows
|
||||
// callers to silently abort.
|
||||
throw new Error("Could not select valid Touch for event.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle receiving focus by simulated input field
|
||||
*
|
||||
|
|
@ -538,7 +566,12 @@ namespace com.keyman.dom {
|
|||
};
|
||||
|
||||
if(e && dom.Utils.instanceof(e, "TouchEvent")) {
|
||||
tEvent=(e as TouchEvent).touches[0];
|
||||
try {
|
||||
tEvent=DOMTouchHandlers.selectTouch(e as TouchEvent);
|
||||
} catch(err) {
|
||||
console.warn(err);
|
||||
return;
|
||||
}
|
||||
} else { // Allow external code to set focus and thus display the OSK on touch devices if required (KMEW-123)
|
||||
tEvent={clientX:0, clientY:0}
|
||||
|
||||
|
|
@ -796,9 +829,16 @@ namespace com.keyman.dom {
|
|||
|
||||
// Identify the target from the touch list or the event argument (IE 10 only)
|
||||
var target: HTMLElement;
|
||||
let touch: Touch;
|
||||
|
||||
if(dom.Utils.instanceof(e, "TouchEvent")) {
|
||||
target = (e as TouchEvent).targetTouches[0].target as HTMLElement;
|
||||
try {
|
||||
touch=DOMTouchHandlers.selectTouch(e as TouchEvent);
|
||||
} catch(err) {
|
||||
console.warn(err);
|
||||
return;
|
||||
}
|
||||
target = touch.target as HTMLElement;
|
||||
} else {
|
||||
target = e.target as HTMLElement;
|
||||
}
|
||||
|
|
@ -816,8 +856,8 @@ namespace com.keyman.dom {
|
|||
var x, y;
|
||||
|
||||
if(dom.Utils.instanceof(e, "TouchEvent")) {
|
||||
x = (e as TouchEvent).touches[0].screenX;
|
||||
y = (e as TouchEvent).touches[0].screenY;
|
||||
x = touch.screenX;
|
||||
y = touch.screenY;
|
||||
} else {
|
||||
x = (e as MouseEvent).screenX;
|
||||
y = (e as MouseEvent).screenY;
|
||||
|
|
|
|||
|
|
@ -34,52 +34,6 @@ namespace com.keyman.dom {
|
|||
// Not to be confused with the simulated scrollbar.
|
||||
let scroller: HTMLElement;
|
||||
|
||||
// Designed to 'breadcrumb' elements to assist in diagnosis of an evasive known issue.
|
||||
let elementLogger = function() {
|
||||
let elementDescriber = function(element: HTMLElement) {
|
||||
if(element) {
|
||||
let childIndex = undefined;
|
||||
let parent = element.parentElement;
|
||||
if(parent) {
|
||||
for(let child = parent.firstChild, i = 0; child; child = child.nextSibling, i++) {
|
||||
if(child == element) {
|
||||
childIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ID: should never be specified for TouchAliasElement components
|
||||
// Class: specified for the root TouchAliasElement and for its text spans
|
||||
// index: useful for identifying elements with no class info
|
||||
return `tag type ${element.tagName}, class '${element.classList}', index under parent: '${childIndex}', id '${element.id}'`;
|
||||
} else {
|
||||
return `null`;
|
||||
}
|
||||
};
|
||||
|
||||
// Very rough breadcrumbs for use with any Sentry logs.
|
||||
|
||||
// We'd expect to see the telltale 'keymanweb-input' appear as the class for one of the
|
||||
// three elements logged here... at least, normally.
|
||||
console.info(`(For diagnosing https://github.com/keymanapp/keyman/issues/4797)`);
|
||||
// We don't use .innerHTML because that would tell us what the user's been typing.
|
||||
// No keylogging!
|
||||
console.info(`Original target: ${elementDescriber(target)}`);
|
||||
if(target.previousSibling && target.previousSibling instanceof HTMLElement) {
|
||||
console.info(`Previous sibling: ${elementDescriber(target.previousSibling)}`);
|
||||
}
|
||||
if(target.nextSibling && target.nextSibling instanceof HTMLElement) {
|
||||
console.info(`Next sibling: ${elementDescriber(target.nextSibling)}`);
|
||||
}
|
||||
console.info(`Target's parent: ${elementDescriber(target.parentElement)}`);
|
||||
if(target.parentElement instanceof HTMLElement) {
|
||||
console.info(`Target's grandparent: ${elementDescriber(target.parentElement.parentElement)}`);
|
||||
}
|
||||
// Triggers the actual Sentry log (on pages that include Sentry logging)
|
||||
//throw new Error(`Unexpected touch-start event target.`);
|
||||
};
|
||||
|
||||
// Identify the scroller element
|
||||
if(target && dom.Utils.instanceof(target, "HTMLSpanElement")) {
|
||||
scroller=target.parentNode as HTMLElement;
|
||||
|
|
@ -101,12 +55,6 @@ namespace com.keyman.dom {
|
|||
return target['kmw_ip'] as TouchAliasElement;
|
||||
} else {
|
||||
// If it's not in any way related to a TouchAliasElement, simply return null.
|
||||
// NOTE: At present, this method should only be called in places that actually EXPECT a TouchAliasElement...
|
||||
// So if we fail to find one, something's gone wrong, and we'd like more details.
|
||||
|
||||
// There's an evasive error related to this at present so we'll temporarily console-log info
|
||||
// that may help us determine why we couldn't find the expected element.
|
||||
elementLogger();
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
@ -115,7 +63,6 @@ namespace com.keyman.dom {
|
|||
if(root['base'] !== undefined) {
|
||||
return root as TouchAliasElement;
|
||||
} else {
|
||||
elementLogger();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
3
windows/src/.gitignore
vendored
3
windows/src/.gitignore
vendored
|
|
@ -11,6 +11,9 @@
|
|||
**/obj
|
||||
**/x64
|
||||
|
||||
# Temporary build files for VC++
|
||||
**/*.FileListAbsolute.txt
|
||||
|
||||
# KeymanWeb is copied from /web/src during Developer build
|
||||
developer/TIKE/xml/kmw/resource
|
||||
|
||||
|
|
|
|||
|
|
@ -112,9 +112,9 @@ DELPHIWARNINGS=-W+MESSAGE_DIRECTIVE -W+IMPLICIT_STRING_CAST -W+IMPLICIT_STRING_C
|
|||
DELPHIWARNINGS=-W-MESSAGE_DIRECTIVE -W-IMPLICIT_STRING_CAST -W-IMPLICIT_STRING_CAST_LOSS -W-EXPLICIT_STRING_CAST -W-EXPLICIT_STRING_CAST_LOSS -W-CVT_WCHAR_TO_ACHAR -W-CVT_NARROWING_STRING_LOST -W-CVT_ACHAR_TO_WCHAR -W-CVT_WIDENING_STRING_LOST -W-UNICODE_TO_LOCALE -W-LOCALE_TO_UNICODE -W-IMPLICIT_VARIANTS -W-IMPLICIT_INTEGER_CAST_LOSS -W-IMPLICIT_CONVERSION_LOSS -W-COMBINING_SIGNED_UNSIGNED64 -W-COMBINING_SIGNED_UNSIGNED64
|
||||
!ENDIF
|
||||
|
||||
DELPHIDPRPARAMS=-Q -B -GD -H -VT -$C+ -$D+ -$L+ -$O+ -$Q- -$R- -$W+ -$Y+ -E. $(DELPHIWARNINGS) -I$(DELPHIINCLUDES) -U$(DELPHIINCLUDES) -R$(DELPHIINCLUDES) -NSVcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Web;Soap;Winapi;System.Win
|
||||
DELPHIDPRPARAMS64=-Q -B -GD -H -VT -$C+ -$D+ -$L+ -$O+ -$Q- -$R- -$W+ -$Y+ -E. $(DELPHIWARNINGS) -I$(DELPHIINCLUDES) -U$(DELPHIINCLUDES) -R$(DELPHIINCLUDES) -NSVcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Web;Soap;Winapi;System.Win
|
||||
DELPHIDPKPARAMS=-Q -B -GD -VT -$C+ -$D+ -$L+ -$O+ -$Q- -$R- -$W+ -$Y+ -E. $(DELPHIWARNINGS) -I$(DELPHIINCLUDES) -U$(DELPHIINCLUDES) -R$(DELPHIINCLUDES) -NSVcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Web;Soap;Winapi;System.Win -LE$(OUTLIB) -LN$(OUTLIB) -NSData
|
||||
DELPHIDPRPARAMS=-Q -B -GD -H -VT -$C+ -$D+ -$J+ -$L+ -$O+ -$Q- -$R- -$W+ -$Y+ -E. $(DELPHIWARNINGS) -I$(DELPHIINCLUDES) -U$(DELPHIINCLUDES) -R$(DELPHIINCLUDES) -NSVcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Web;Soap;Winapi;System.Win
|
||||
DELPHIDPRPARAMS64=-Q -B -GD -H -VT -$C+ -$D+ -$J+ -$L+ -$O+ -$Q- -$R- -$W+ -$Y+ -E. $(DELPHIWARNINGS) -I$(DELPHIINCLUDES) -U$(DELPHIINCLUDES) -R$(DELPHIINCLUDES) -NSVcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Web;Soap;Winapi;System.Win
|
||||
DELPHIDPKPARAMS=-Q -B -GD -VT -$C+ -$D+ -$J+ -$L+ -$O+ -$Q- -$R- -$W+ -$Y+ -E. $(DELPHIWARNINGS) -I$(DELPHIINCLUDES) -U$(DELPHIINCLUDES) -R$(DELPHIINCLUDES) -NSVcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Web;Soap;Winapi;System.Win -LE$(OUTLIB) -LN$(OUTLIB) -NSData
|
||||
|
||||
!IFDEF NOUI
|
||||
DCC32="$(DCC32PATH)\dcc32.exe" $(DELPHIDPRPARAMS)
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
## Build Prerequisites
|
||||
|
||||
1. Install [VS2017 Community Edition](#visual-studio-2017-community-edition-setup-requirements).
|
||||
1. Install [VS2019 Community Edition](#visual-studio-2019-community-edition-setup-requirements).
|
||||
2. Install [Delphi 10.3](#delphi-setup-requirements).
|
||||
3. Install [git](https://git-scm.com/download/win).
|
||||
4. Install [nodejs](https://nodejs.org/en/download/).
|
||||
|
|
@ -29,7 +29,7 @@ For local development you do not need to perform a release build so these are op
|
|||
|
||||
## Building Keyman for Windows and Keyman Developer
|
||||
|
||||
1. Start 'x64_x86 Cross Tools Command Prompt for VS 2017'.
|
||||
1. Start 'Developer Command Prompt for VS 2019'.
|
||||
2. Run `make build` from the **windows/src** folder.
|
||||
3. Artifacts from a successful build will be placed in **windows/bin** folder.
|
||||
|
||||
|
|
@ -50,7 +50,7 @@ To perform a release build, you will need to obtain valid certificates. A releas
|
|||
unnecessary for local development. Release builds are currently run from a TeamCity CI
|
||||
environment.
|
||||
|
||||
1. Start 'x64_x86 Cross Tools Command Prompt for VS 2017'.
|
||||
1. Start 'Developer Command Prompt for VS 2019'.
|
||||
2. Run `make release` from the **windows/src** folder.
|
||||
3. Artifacts from a successful build will be placed in **windows/release** folder.
|
||||
4. **buildtools/help-keyman-com.sh** will push updated documentation to help.keyman.com.
|
||||
|
|
@ -76,22 +76,22 @@ These steps are only required the first time you install Keyman:
|
|||
'Trusted Root Certification Authorities'. Click Next and finish the wizard.
|
||||
|
||||
To deploy a development build of Keyman and Keyman Developer,
|
||||
1. Start 'x64_x86 Cross Tools Command Prompt for VS 2017'.
|
||||
1. Start 'Developer Command Prompt for VS 2019'.
|
||||
2. Run `make signcode` from the **windows/src** folder.
|
||||
3. Ensure that Keyman and Keyman Developer are not running.
|
||||
4. Run `make install` in **windows/src/engine**, **windows/src/desktop** and **windows/src/developer**.
|
||||
|
||||
## Detailed Prerequisite Notes
|
||||
|
||||
### Visual Studio 2017 Community Edition setup requirements
|
||||
### Visual Studio 2019 Community Edition setup requirements
|
||||
|
||||
In Visual Studio 2017, you need to have the following installed:
|
||||
In Visual Studio 2019, you need to have the following installed:
|
||||
#### Workloads
|
||||
* Desktop development with C++
|
||||
* Universal Windows Platform development
|
||||
|
||||
#### Individual components
|
||||
* Windows Universal CRT SDK
|
||||
--* Windows Universal CRT SDK
|
||||
* Windows 10.0.17763.0 SDK
|
||||
|
||||
Configure Visual Studio to use two-space tab stops:
|
||||
|
|
|
|||
35
windows/src/desktop/README.md
Normal file
35
windows/src/desktop/README.md
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
# Keyman for Windows
|
||||
|
||||
Formerly called "Keyman Desktop", now called "Keyman" to harmonize with other platforms.
|
||||
|
||||
# help
|
||||
|
||||
Contains all the help documents in Markdown format for Keyman for Windows. It can build both compiled help chm or HTML format.
|
||||
|
||||
# inst - keymandesktop.msi
|
||||
|
||||
Building and signing of the installation archive keymandesktop.msi
|
||||
|
||||
# insthelp - insthelp.exe
|
||||
|
||||
Builds a helper executable to do various installation tasks - insthelp.exe.
|
||||
|
||||
# kmbrowserhost - kmbrowserhost.exe
|
||||
|
||||
kmbrowserhost.exe is the chromium embedded framework (CEF) host process executable. CEF uses a multi-process model and subprocesses are hosted in kmbrowserhost.exe.
|
||||
|
||||
# kmconfig
|
||||
|
||||
Used for configuration of advanced Keyman settings. Configuration can be imported from a json file or exported to a json file. Individual settings can be set.
|
||||
|
||||
# kmshell - Kmshell.exe
|
||||
|
||||
Keyman configuration tool that can be run from the command line with arguments to automate a number of tasks.
|
||||
For example installing and uninstalling keyboards.
|
||||
|
||||
# locale
|
||||
User interface strings in various languages
|
||||
|
||||
# setup
|
||||
|
||||
Installation program for installing and initial setup of Keyman. A wrapper for keymandesktop.msi that also automates keyboard downloads and update downloads.
|
||||
3
windows/src/desktop/help/build.sh
Normal file → Executable file
3
windows/src/desktop/help/build.sh
Normal file → Executable file
|
|
@ -137,6 +137,7 @@ build_hhc() {
|
|||
#
|
||||
|
||||
MDLUA="$KEYMAN_ROOT/resources/build/htm-link.lua"
|
||||
CSS="../../../../resources/build/offline-help-style-spec.txt"
|
||||
MD=`find -name "*.md"`
|
||||
DESTCHM="$THIS_DIR/../../../bin/help/desktop"
|
||||
|
||||
|
|
@ -159,7 +160,7 @@ if $DO_CHM; then
|
|||
OUTFILE="$DESTCHM/${INFILE%.md}.htm"
|
||||
echo "Processing $INFILE to $(basename "$OUTFILE")"
|
||||
mkdir -p "$(dirname "$OUTFILE")"
|
||||
pandoc -s --lua-filter="$MDLUA" -t html -o "$OUTFILE" $INFILE
|
||||
pandoc -s -H "$CSS" --lua-filter="$MDLUA" -t html -o "$OUTFILE" $INFILE
|
||||
done
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -64,8 +64,7 @@ Here's how to download and install a Keyman keyboard within Keyman:
|
|||
computer.
|
||||
|
||||
**Note:** If a keyboard with the same name is already installed, Keyman will
|
||||
ask you if you want to replace the old keyboard or cancel the
|
||||
installation.
|
||||
automatically replace it.
|
||||
|
||||
9. You may be prompted by User Account Control to allow
|
||||
Keyman to make changes to your computer -- click 'Yes'.
|
||||
|
|
@ -118,8 +117,7 @@ how:
|
|||
**Note:** Install installs the keyboard for anyone who can log on to your computer.
|
||||
|
||||
**Note:** If a keyboard with the same name is already installed, Keyman will
|
||||
ask you if you want to replace the old keyboard or cancel the
|
||||
installation.
|
||||
automatically replace it.
|
||||
|
||||
8. Click OK to save your settings and exit Keyman Configuration.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,46 +0,0 @@
|
|||
-$A1
|
||||
-$B-
|
||||
-$C-
|
||||
-$D+
|
||||
-$E-
|
||||
-$F-
|
||||
-$G+
|
||||
-$H+
|
||||
-$I-
|
||||
-$J+
|
||||
-$K-
|
||||
-$L+
|
||||
-$M-
|
||||
-$N+
|
||||
-$O+
|
||||
-$P+
|
||||
-$Q-
|
||||
-$R-
|
||||
-$S-
|
||||
-$T-
|
||||
-$U-
|
||||
-$V+
|
||||
-$W+
|
||||
-$X+
|
||||
-$Y+
|
||||
-$Z1
|
||||
-GD
|
||||
-cg
|
||||
-vn
|
||||
-vr
|
||||
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
||||
-H+
|
||||
-W+
|
||||
-M
|
||||
-$M16384,1048576
|
||||
-K$2C400000
|
||||
-LE"C:\Users\mcdurdin.TAVULTESOFT\Documents\Borland Studio Projects\Bpl"
|
||||
-LN"C:\Users\mcdurdin.TAVULTESOFT\Documents\Borland Studio Projects\Bpl"
|
||||
-U"C:\temp\EmbeddedWB_D5-D2009_Version_14.67.8\Source;C:\keyman\8.0\src\global\delphi\jedi\"
|
||||
-O"C:\temp\EmbeddedWB_D5-D2009_Version_14.67.8\Source;C:\keyman\8.0\src\global\delphi\jedi\"
|
||||
-I"C:\temp\EmbeddedWB_D5-D2009_Version_14.67.8\Source;C:\keyman\8.0\src\global\delphi\jedi\"
|
||||
-R"C:\temp\EmbeddedWB_D5-D2009_Version_14.67.8\Source;C:\keyman\8.0\src\global\delphi\jedi\"
|
||||
-DVISUALKEYBOARD_NOCUSTOMBITMAP;VERSION_KEYMAN_REDIST;RELEASE_KEYMAN;EXCMAGIC_GUI
|
||||
-w-UNSAFE_TYPE
|
||||
-w-UNSAFE_CODE
|
||||
-w-UNSAFE_CAST
|
||||
|
|
@ -1,82 +0,0 @@
|
|||
[Compiler]
|
||||
A=1
|
||||
B=0
|
||||
C=0
|
||||
D=1
|
||||
E=0
|
||||
F=0
|
||||
G=1
|
||||
H=1
|
||||
I=0
|
||||
J=1
|
||||
K=0
|
||||
L=1
|
||||
M=0
|
||||
N=1
|
||||
O=1
|
||||
P=1
|
||||
Q=0
|
||||
R=0
|
||||
S=0
|
||||
T=0
|
||||
U=0
|
||||
V=1
|
||||
W=0
|
||||
X=1
|
||||
Y=2
|
||||
Z=1
|
||||
ShowHints=1
|
||||
ShowWarnings=1
|
||||
UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
||||
[Linker]
|
||||
MapFile=3
|
||||
OutputObjs=0
|
||||
ConsoleApp=1
|
||||
DebugInfo=1
|
||||
RemoteSymbols=1
|
||||
MinStackSize=16384
|
||||
MaxStackSize=1048576
|
||||
ImageBase=4194304
|
||||
ExeDescription=
|
||||
[Directories]
|
||||
OutputDir=
|
||||
UnitOutputDir=
|
||||
PackageDLLOutputDir=
|
||||
PackageDCPOutputDir=
|
||||
SearchPath=c:\keyman\5.1\src\global\delphi\vclzip;c:\keyman\5.1\src\global\delphi\folderdlg
|
||||
Packages=Vcl40;Vclx40;vcljpg40;comp51;VCLZipD4;dclkmn;Vcl50;Vclx50;keyman_components;vclie50;Inetdb50;Inet50;Vcldb50
|
||||
Conditionals=VISUALKEYBOARD_NOCUSTOMBITMAP;VERSION_KEYMAN_REDIST;RELEASE_KEYMAN;EXCMAGIC_GUI
|
||||
DebugSourceDirs=C:\keyman\5.1\src\dist\kmcomapi\;C:\keyman\5.1\src\dist\kmcomapi\util\;$(DELPHI)\source\vcl;C:\keyman\5.1\src\dist\kmcomapi\com\;C:\keyman\5.1\src\dist\kmcomapi\com\products\;C:\keyman\5.1\src\dist\kmcomapi\com\customisation\;C:\keyman\5.1\src\dist\kmcomapi\com\packages\;C:\keyman\5.1\src\global\delphi\general\;C:\keyman\5.1\src\dist\kmcomapi\com\keyboards\
|
||||
UsePackages=0
|
||||
[Parameters]
|
||||
RunParams=
|
||||
HostApplication=
|
||||
[Language]
|
||||
ActiveLang=
|
||||
ProjectLang=$00000C09
|
||||
RootDir=
|
||||
[Version Info]
|
||||
IncludeVerInfo=0
|
||||
AutoIncBuild=1
|
||||
MajorVer=5
|
||||
MinorVer=0
|
||||
Release=0
|
||||
Build=17
|
||||
Debug=0
|
||||
PreRelease=0
|
||||
Special=0
|
||||
Private=0
|
||||
DLL=0
|
||||
Locale=3081
|
||||
CodePage=1252
|
||||
[Version Info Keys]
|
||||
CompanyName=
|
||||
FileDescription=Tavultesoft Keyboard Manager
|
||||
FileVersion=5.0.0.17
|
||||
InternalName=
|
||||
LegalCopyright=
|
||||
LegalTrademarks=
|
||||
OriginalFilename=
|
||||
ProductName=
|
||||
ProductVersion=1.0.0.0
|
||||
Comments=
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
-$A1
|
||||
-$B-
|
||||
-$C+
|
||||
-$D+
|
||||
-$E-
|
||||
-$F-
|
||||
-$G+
|
||||
-$H+
|
||||
-$I+
|
||||
-$J+
|
||||
-$K-
|
||||
-$L+
|
||||
-$M-
|
||||
-$N+
|
||||
-$O+
|
||||
-$P+
|
||||
-$Q+
|
||||
-$R+
|
||||
-$S-
|
||||
-$T-
|
||||
-$U-
|
||||
-$V+
|
||||
-$W+
|
||||
-$X+
|
||||
-$Y+
|
||||
-$Z1
|
||||
-GD
|
||||
-cg
|
||||
-vn
|
||||
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
||||
-H+
|
||||
-W+
|
||||
-M
|
||||
-$M16384,1048576
|
||||
-K$00400000
|
||||
-LE"C:\Users\mcdurdin.TAVULTESOFT\Documents\Borland Studio Projects\Bpl"
|
||||
-LN"C:\Users\mcdurdin.TAVULTESOFT\Documents\Borland Studio Projects\Bpl"
|
||||
-U"C:\keyman\8.0\src\global\delphi\jedi\;C:\keyman\8.0\cmpsrc\EmbeddedWB\Source"
|
||||
-O"C:\keyman\8.0\src\global\delphi\jedi\;C:\keyman\8.0\cmpsrc\EmbeddedWB\Source"
|
||||
-I"C:\keyman\8.0\src\global\delphi\jedi\;C:\keyman\8.0\cmpsrc\EmbeddedWB\Source"
|
||||
-R"C:\keyman\8.0\src\global\delphi\jedi\;C:\keyman\8.0\cmpsrc\EmbeddedWB\Source"
|
||||
-DVERSION_KEYMAN_DEVELOPER;DaoCheck;DaoNamedEx;DaoDebug;DaoMessageEx;DAOIdent
|
||||
-w-UNSAFE_TYPE
|
||||
-w-UNSAFE_CODE
|
||||
-w-UNSAFE_CAST
|
||||
48
windows/src/developer/README.md
Normal file
48
windows/src/developer/README.md
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
# Keyman Developer for Windows
|
||||
|
||||
This is the current home for Keyman Developer except for the Lexical Model Compiler.
|
||||
|
||||
The Lexical Model Compiler is found at the root level /developer folder.
|
||||
|
||||
## inst - keymandeveloper.msi
|
||||
|
||||
Building and signing of the installation archive keymandeveloper.msi
|
||||
|
||||
## kmanalyze - kmanalyze.exe
|
||||
|
||||
A keyboard source analysis and automated regression test tool. Testing for logical errors of a keyboard.
|
||||
|
||||
|
||||
## kcmpdll - kmcmpdll.dll & kmcmpdll.x64.dll
|
||||
|
||||
This is the main source code for the keyboard compiler, packaged as dynamic linked library. The consumers will call 'CompileKeyboardFile'
|
||||
|
||||
## kcframe.exe & kcframe.x64.exe
|
||||
|
||||
Located under kmcomp folder this is used for debugging in Visual Studio. A command line program compiler for a keyboard file 'kmn' into a binary format 'kmx'. Has hardcoded default arguments.
|
||||
|
||||
## kmcomp - kmcomp.exe & kmcomp.x64.exe
|
||||
|
||||
The main command line compiler for a keyboard. It compiles keyboards (.kmn), packages (.kps), and projects (.kpj).
|
||||
|
||||
## kmconvert - kmconvert.exe & kmconvert.x64.exe
|
||||
|
||||
KMConvert converts keyboard layouts between different formats. KMConvert will generate a full Keyman template project from the imported layout or data, in a new folder named with the ID of the keyboard. It will not overwrite an existing folder.
|
||||
|
||||
## kmdecomp - kmdecomp.exe
|
||||
|
||||
Unsupported utility decompiles a Keyman .kmx keyboard. It will produce a .kmn source file and optionally a .ico or
|
||||
.bmp image. see kmdecomp/kmdecomp.md for details.
|
||||
|
||||
## samples
|
||||
|
||||
Contains sample keyboards and sample developer projects. See readme.txt for details.
|
||||
|
||||
## setup - setup.exe
|
||||
|
||||
Installation program for Keyman Developer.
|
||||
|
||||
## TIKE - Tavultesoft Integrated Keyboard Editor
|
||||
|
||||
This is the designer side of the Developer. Used for designing, developing, testing and packing keyboards for distribution.
|
||||
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,45 +0,0 @@
|
|||
-$A1
|
||||
-$B-
|
||||
-$C+
|
||||
-$D+
|
||||
-$E-
|
||||
-$F-
|
||||
-$G+
|
||||
-$H+
|
||||
-$I+
|
||||
-$J+
|
||||
-$K-
|
||||
-$L+
|
||||
-$M-
|
||||
-$N+
|
||||
-$O-
|
||||
-$P+
|
||||
-$Q+
|
||||
-$R+
|
||||
-$S-
|
||||
-$T-
|
||||
-$U-
|
||||
-$V+
|
||||
-$W+
|
||||
-$X+
|
||||
-$Y+
|
||||
-$Z1
|
||||
-GD
|
||||
-cg
|
||||
-vn
|
||||
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
||||
-H+
|
||||
-W+
|
||||
-M
|
||||
-$M16384,1048576
|
||||
-K$00400000
|
||||
-LE"C:\Users\mcdurdin.TAVULTESOFT\Documents\Borland Studio Projects\Bpl"
|
||||
-LN"C:\Users\mcdurdin.TAVULTESOFT\Documents\Borland Studio Projects\Bpl"
|
||||
-U"c:\program files\borland\bds\4.0\lib\Debug;c:\program files\borland\bds\4.0\Lib\Debug\Indy10;c:\program files\borland\bds\4.0\lib;c:\keyman\8.0\src\global\delphi\jedi;C:\keyman\8.0\src\global\delphi\vcl;\keyman\8.0\cmpsrc\mbcolor;C:\keyman\8.0\cmpsrc\embeddedwb\source"
|
||||
-O"c:\program files\borland\bds\4.0\lib\Debug;c:\program files\borland\bds\4.0\Lib\Debug\Indy10;c:\program files\borland\bds\4.0\lib;c:\keyman\8.0\src\global\delphi\jedi;C:\keyman\8.0\src\global\delphi\vcl;\keyman\8.0\cmpsrc\mbcolor;C:\keyman\8.0\cmpsrc\embeddedwb\source"
|
||||
-I"c:\program files\borland\bds\4.0\lib\Debug;c:\program files\borland\bds\4.0\Lib\Debug\Indy10;c:\program files\borland\bds\4.0\lib;c:\keyman\8.0\src\global\delphi\jedi;C:\keyman\8.0\src\global\delphi\vcl;\keyman\8.0\cmpsrc\mbcolor;C:\keyman\8.0\cmpsrc\embeddedwb\source"
|
||||
-R"c:\program files\borland\bds\4.0\lib\Debug;c:\program files\borland\bds\4.0\Lib\Debug\Indy10;c:\program files\borland\bds\4.0\lib;c:\keyman\8.0\src\global\delphi\jedi;C:\keyman\8.0\src\global\delphi\vcl;\keyman\8.0\cmpsrc\mbcolor;C:\keyman\8.0\cmpsrc\embeddedwb\source"
|
||||
-DVERSION_KEYMAN_DEVELOPER;DaoCheck;DaoNamedEx;DaoDebug;DaoMessageEx;DAOIdent
|
||||
-w-UNSAFE_TYPE
|
||||
-w-UNSAFE_CODE
|
||||
-w-UNSAFE_CAST
|
||||
|
|
@ -1,82 +0,0 @@
|
|||
[Compiler]
|
||||
A=1
|
||||
B=0
|
||||
C=1
|
||||
D=1
|
||||
E=0
|
||||
F=0
|
||||
G=1
|
||||
H=1
|
||||
I=1
|
||||
J=1
|
||||
K=0
|
||||
L=1
|
||||
M=0
|
||||
N=1
|
||||
O=0
|
||||
P=1
|
||||
Q=1
|
||||
R=1
|
||||
S=0
|
||||
T=0
|
||||
U=0
|
||||
V=1
|
||||
W=1
|
||||
X=1
|
||||
Y=2
|
||||
Z=1
|
||||
ShowHints=1
|
||||
ShowWarnings=1
|
||||
UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
||||
[Linker]
|
||||
MapFile=3
|
||||
OutputObjs=0
|
||||
ConsoleApp=1
|
||||
DebugInfo=1
|
||||
RemoteSymbols=0
|
||||
MinStackSize=16384
|
||||
MaxStackSize=1048576
|
||||
ImageBase=4194304
|
||||
ExeDescription=
|
||||
[Directories]
|
||||
OutputDir=
|
||||
UnitOutputDir=
|
||||
PackageDLLOutputDir=
|
||||
PackageDCPOutputDir=
|
||||
SearchPath=$(DELPHI)\lib;$(DELPHI)\source\vcl;\keyman\8.0\src\global\delphi\jedi
|
||||
Packages=Vcl40;Vclx40;comp51;VCLZipD4;PMemoPack4;dclkmn;vcljpg40;Vcl50;Vclx50
|
||||
Conditionals=VERSION_KEYMAN_DEVELOPER;DaoCheck;DaoNamedEx;DaoDebug;DaoMessageEx;DAOIdent
|
||||
DebugSourceDirs=
|
||||
UsePackages=0
|
||||
[Parameters]
|
||||
RunParams=
|
||||
HostApplication=
|
||||
[Language]
|
||||
ActiveLang=
|
||||
ProjectLang=$00000C09
|
||||
RootDir=
|
||||
[Version Info]
|
||||
IncludeVerInfo=0
|
||||
AutoIncBuild=1
|
||||
MajorVer=5
|
||||
MinorVer=0
|
||||
Release=0
|
||||
Build=23
|
||||
Debug=0
|
||||
PreRelease=0
|
||||
Special=0
|
||||
Private=0
|
||||
DLL=0
|
||||
Locale=3081
|
||||
CodePage=1252
|
||||
[Version Info Keys]
|
||||
CompanyName=
|
||||
FileDescription=Tavultesoft IKE
|
||||
FileVersion=5.0.0.23
|
||||
InternalName=
|
||||
LegalCopyright=
|
||||
LegalTrademarks=
|
||||
OriginalFilename=
|
||||
ProductName=
|
||||
ProductVersion=5.0.0.0
|
||||
Comments=
|
||||
|
|
@ -23,32 +23,32 @@
|
|||
<ProjectGuid>{4EAE6DFD-E18A-493D-A00F-4846A2593F56}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>kmanalyze</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
|
|
|
|||
|
|
@ -21,28 +21,28 @@
|
|||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{7E26FE08-721E-424B-9DA0-4A0DCA88A86E}</ProjectGuid>
|
||||
<RootNamespace>kmcmpdll</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
|
|
|
|||
|
|
@ -1,175 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<BorlandProject>
|
||||
<PersonalityInfo>
|
||||
<Option>
|
||||
<Option Name="Personality">Delphi.Personality</Option>
|
||||
<Option Name="ProjectType">VCLApplication</Option>
|
||||
<Option Name="Version">1.0</Option>
|
||||
<Option Name="GUID">{CB0DF7C0-19BB-4F2B-AFCC-2E51DAB3A1AA}</Option>
|
||||
</Option>
|
||||
</PersonalityInfo>
|
||||
<Delphi.Personality>
|
||||
<Source>
|
||||
<Source Name="MainSource">kmcomp.dpr</Source>
|
||||
</Source>
|
||||
<FileVersion>
|
||||
<FileVersion Name="Version">7.0</FileVersion>
|
||||
</FileVersion>
|
||||
<Compiler>
|
||||
<Compiler Name="A">1</Compiler>
|
||||
<Compiler Name="B">0</Compiler>
|
||||
<Compiler Name="C">0</Compiler>
|
||||
<Compiler Name="D">1</Compiler>
|
||||
<Compiler Name="E">0</Compiler>
|
||||
<Compiler Name="F">0</Compiler>
|
||||
<Compiler Name="G">1</Compiler>
|
||||
<Compiler Name="H">1</Compiler>
|
||||
<Compiler Name="I">0</Compiler>
|
||||
<Compiler Name="J">1</Compiler>
|
||||
<Compiler Name="K">0</Compiler>
|
||||
<Compiler Name="L">1</Compiler>
|
||||
<Compiler Name="M">0</Compiler>
|
||||
<Compiler Name="N">1</Compiler>
|
||||
<Compiler Name="O">1</Compiler>
|
||||
<Compiler Name="P">1</Compiler>
|
||||
<Compiler Name="Q">0</Compiler>
|
||||
<Compiler Name="R">0</Compiler>
|
||||
<Compiler Name="S">0</Compiler>
|
||||
<Compiler Name="T">0</Compiler>
|
||||
<Compiler Name="U">0</Compiler>
|
||||
<Compiler Name="V">1</Compiler>
|
||||
<Compiler Name="W">1</Compiler>
|
||||
<Compiler Name="X">1</Compiler>
|
||||
<Compiler Name="Y">2</Compiler>
|
||||
<Compiler Name="Z">1</Compiler>
|
||||
<Compiler Name="ShowHints">True</Compiler>
|
||||
<Compiler Name="ShowWarnings">True</Compiler>
|
||||
<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler>
|
||||
<Compiler Name="NamespacePrefix"></Compiler>
|
||||
<Compiler Name="GenerateDocumentation">False</Compiler>
|
||||
<Compiler Name="DefaultNamespace"></Compiler>
|
||||
<Compiler Name="SymbolDeprecated">True</Compiler>
|
||||
<Compiler Name="SymbolLibrary">True</Compiler>
|
||||
<Compiler Name="SymbolPlatform">True</Compiler>
|
||||
<Compiler Name="SymbolExperimental">True</Compiler>
|
||||
<Compiler Name="UnitLibrary">True</Compiler>
|
||||
<Compiler Name="UnitPlatform">True</Compiler>
|
||||
<Compiler Name="UnitDeprecated">True</Compiler>
|
||||
<Compiler Name="UnitExperimental">True</Compiler>
|
||||
<Compiler Name="HResultCompat">True</Compiler>
|
||||
<Compiler Name="HidingMember">True</Compiler>
|
||||
<Compiler Name="HiddenVirtual">True</Compiler>
|
||||
<Compiler Name="Garbage">True</Compiler>
|
||||
<Compiler Name="BoundsError">True</Compiler>
|
||||
<Compiler Name="ZeroNilCompat">True</Compiler>
|
||||
<Compiler Name="StringConstTruncated">True</Compiler>
|
||||
<Compiler Name="ForLoopVarVarPar">True</Compiler>
|
||||
<Compiler Name="TypedConstVarPar">True</Compiler>
|
||||
<Compiler Name="AsgToTypedConst">True</Compiler>
|
||||
<Compiler Name="CaseLabelRange">True</Compiler>
|
||||
<Compiler Name="ForVariable">True</Compiler>
|
||||
<Compiler Name="ConstructingAbstract">True</Compiler>
|
||||
<Compiler Name="ComparisonFalse">True</Compiler>
|
||||
<Compiler Name="ComparisonTrue">True</Compiler>
|
||||
<Compiler Name="ComparingSignedUnsigned">True</Compiler>
|
||||
<Compiler Name="CombiningSignedUnsigned">True</Compiler>
|
||||
<Compiler Name="UnsupportedConstruct">True</Compiler>
|
||||
<Compiler Name="FileOpen">True</Compiler>
|
||||
<Compiler Name="FileOpenUnitSrc">True</Compiler>
|
||||
<Compiler Name="BadGlobalSymbol">True</Compiler>
|
||||
<Compiler Name="DuplicateConstructorDestructor">True</Compiler>
|
||||
<Compiler Name="InvalidDirective">True</Compiler>
|
||||
<Compiler Name="PackageNoLink">True</Compiler>
|
||||
<Compiler Name="PackageThreadVar">True</Compiler>
|
||||
<Compiler Name="ImplicitImport">True</Compiler>
|
||||
<Compiler Name="HPPEMITIgnored">True</Compiler>
|
||||
<Compiler Name="NoRetVal">True</Compiler>
|
||||
<Compiler Name="UseBeforeDef">True</Compiler>
|
||||
<Compiler Name="ForLoopVarUndef">True</Compiler>
|
||||
<Compiler Name="UnitNameMismatch">True</Compiler>
|
||||
<Compiler Name="NoCFGFileFound">True</Compiler>
|
||||
<Compiler Name="ImplicitVariants">True</Compiler>
|
||||
<Compiler Name="UnicodeToLocale">True</Compiler>
|
||||
<Compiler Name="LocaleToUnicode">True</Compiler>
|
||||
<Compiler Name="ImagebaseMultiple">True</Compiler>
|
||||
<Compiler Name="SuspiciousTypecast">True</Compiler>
|
||||
<Compiler Name="PrivatePropAccessor">True</Compiler>
|
||||
<Compiler Name="UnsafeType">False</Compiler>
|
||||
<Compiler Name="UnsafeCode">False</Compiler>
|
||||
<Compiler Name="UnsafeCast">False</Compiler>
|
||||
<Compiler Name="OptionTruncated">True</Compiler>
|
||||
<Compiler Name="WideCharReduced">True</Compiler>
|
||||
<Compiler Name="DuplicatesIgnored">True</Compiler>
|
||||
<Compiler Name="UnitInitSeq">True</Compiler>
|
||||
<Compiler Name="LocalPInvoke">True</Compiler>
|
||||
<Compiler Name="MessageDirective">True</Compiler>
|
||||
<Compiler Name="CodePage"></Compiler>
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Linker Name="MapFile">3</Linker>
|
||||
<Linker Name="OutputObjs">0</Linker>
|
||||
<Linker Name="GenerateHpps">False</Linker>
|
||||
<Linker Name="ConsoleApp">0</Linker>
|
||||
<Linker Name="DebugInfo">True</Linker>
|
||||
<Linker Name="RemoteSymbols">False</Linker>
|
||||
<Linker Name="GenerateDRC">False</Linker>
|
||||
<Linker Name="MinStackSize">16384</Linker>
|
||||
<Linker Name="MaxStackSize">1048576</Linker>
|
||||
<Linker Name="ImageBase">4194304</Linker>
|
||||
<Linker Name="ExeDescription"></Linker>
|
||||
</Linker>
|
||||
<Directories>
|
||||
<Directories Name="OutputDir"></Directories>
|
||||
<Directories Name="UnitOutputDir"></Directories>
|
||||
<Directories Name="PackageDLLOutputDir"></Directories>
|
||||
<Directories Name="PackageDCPOutputDir"></Directories>
|
||||
<Directories Name="SearchPath">..\..\global\delphi\vclzip;..\..\resellers;C:\keyman\8.0\src\global\delphi\jedi</Directories>
|
||||
<Directories Name="Packages">VCL40;VCLX40;VCLDB40;VCLDBX40;VCLSMP40;QRPT40;TEEUI40;TEEDB40;TEE40;ibevnt40;nmfast40;bcutil;VCLJPG40;bccomp;bcdb;bcacct;bcappt</Directories>
|
||||
<Directories Name="Conditionals">KPSMALL;VERSION_KEYMAN_DEVELOPER</Directories>
|
||||
<Directories Name="DebugSourceDirs"></Directories>
|
||||
<Directories Name="UsePackages">False</Directories>
|
||||
</Directories>
|
||||
<Parameters>
|
||||
<Parameters Name="RunParams">ktunaxa3.kps</Parameters>
|
||||
<Parameters Name="HostApplication"></Parameters>
|
||||
<Parameters Name="Launcher"></Parameters>
|
||||
<Parameters Name="UseLauncher">False</Parameters>
|
||||
<Parameters Name="DebugCWD">S:\Tavultesoft\Customers\FirstVoices\Keyman for FV 70\keyboards\Ktunaxa3</Parameters>
|
||||
<Parameters Name="Debug Symbols Search Path"></Parameters>
|
||||
<Parameters Name="LoadAllSymbols">True</Parameters>
|
||||
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
|
||||
</Parameters>
|
||||
<Language>
|
||||
<Language Name="ActiveLang"></Language>
|
||||
<Language Name="ProjectLang">$00000C09</Language>
|
||||
<Language Name="RootDir"></Language>
|
||||
</Language>
|
||||
<VersionInfo>
|
||||
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
|
||||
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
|
||||
<VersionInfo Name="MajorVer">0</VersionInfo>
|
||||
<VersionInfo Name="MinorVer">8</VersionInfo>
|
||||
<VersionInfo Name="Release">0</VersionInfo>
|
||||
<VersionInfo Name="Build">14</VersionInfo>
|
||||
<VersionInfo Name="Debug">False</VersionInfo>
|
||||
<VersionInfo Name="PreRelease">False</VersionInfo>
|
||||
<VersionInfo Name="Special">False</VersionInfo>
|
||||
<VersionInfo Name="Private">False</VersionInfo>
|
||||
<VersionInfo Name="DLL">False</VersionInfo>
|
||||
<VersionInfo Name="Locale">3081</VersionInfo>
|
||||
<VersionInfo Name="CodePage">1252</VersionInfo>
|
||||
</VersionInfo>
|
||||
<VersionInfoKeys>
|
||||
<VersionInfoKeys Name="CompanyName">CASEG Practice Computing</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="FileDescription">Blue Chip</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="FileVersion">0.8.0.14</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="InternalName">BlueChip</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="LegalCopyright">Copyright © 1997-1999 CASEG Practice Computing</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="OriginalFilename">BlueChip.exe</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="ProductName">Blue Chip</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="Comments"></VersionInfoKeys>
|
||||
</VersionInfoKeys>
|
||||
</Delphi.Personality>
|
||||
</BorlandProject>
|
||||
|
|
@ -1,92 +0,0 @@
|
|||
[Compiler]
|
||||
A=1
|
||||
B=0
|
||||
C=0
|
||||
D=1
|
||||
E=0
|
||||
F=0
|
||||
G=1
|
||||
H=1
|
||||
I=0
|
||||
J=1
|
||||
K=0
|
||||
L=1
|
||||
M=0
|
||||
N=1
|
||||
O=1
|
||||
P=1
|
||||
Q=0
|
||||
R=0
|
||||
S=0
|
||||
T=0
|
||||
U=0
|
||||
V=1
|
||||
W=1
|
||||
X=1
|
||||
Y=2
|
||||
Z=1
|
||||
ShowHints=1
|
||||
ShowWarnings=1
|
||||
UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
||||
[Linker]
|
||||
MapFile=3
|
||||
OutputObjs=0
|
||||
ConsoleApp=0
|
||||
DebugInfo=1
|
||||
RemoteSymbols=0
|
||||
MinStackSize=16384
|
||||
MaxStackSize=1048576
|
||||
ImageBase=4194304
|
||||
ExeDescription=
|
||||
[Directories]
|
||||
OutputDir=
|
||||
UnitOutputDir=
|
||||
PackageDLLOutputDir=
|
||||
PackageDCPOutputDir=
|
||||
SearchPath=..\..\global\delphi\vclzip;..\..\resellers;C:\keyman\8.0\src\global\delphi\jedi
|
||||
Packages=VCL40;VCLX40;VCLDB40;VCLDBX40;VCLSMP40;QRPT40;TEEUI40;TEEDB40;TEE40;ibevnt40;nmfast40;bcutil;VCLJPG40;bccomp;bcdb;bcacct;bcappt
|
||||
Conditionals=KPSMALL;VERSION_KEYMAN_DEVELOPER
|
||||
DebugSourceDirs=
|
||||
UsePackages=0
|
||||
[Parameters]
|
||||
RunParams=-Pc:\keyman\8.0\bin\keyman c:\keyman\8.0\src\addins\inst\wordlink.kps
|
||||
HostApplication=
|
||||
[Language]
|
||||
ActiveLang=
|
||||
ProjectLang=$00000C09
|
||||
RootDir=
|
||||
[Version Info]
|
||||
IncludeVerInfo=1
|
||||
AutoIncBuild=0
|
||||
MajorVer=0
|
||||
MinorVer=8
|
||||
Release=0
|
||||
Build=14
|
||||
Debug=0
|
||||
PreRelease=0
|
||||
Special=0
|
||||
Private=0
|
||||
DLL=0
|
||||
Locale=3081
|
||||
CodePage=1252
|
||||
[Version Info Keys]
|
||||
CompanyName=CASEG Practice Computing
|
||||
FileDescription=Blue Chip
|
||||
FileVersion=0.8.0.14
|
||||
InternalName=BlueChip
|
||||
LegalCopyright=Copyright © 1997-1999 CASEG Practice Computing
|
||||
LegalTrademarks=
|
||||
OriginalFilename=BlueChip.exe
|
||||
ProductName=Blue Chip
|
||||
ProductVersion=1.0.0.0
|
||||
Comments=
|
||||
[HistoryLists\hlConditionals]
|
||||
Count=1
|
||||
Item0=KPSMALL;VERSION_KEYMAN_DEVELOPER
|
||||
[HistoryLists\hlUnitAliases]
|
||||
Count=1
|
||||
Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
||||
[HistoryLists\hlSearchPath]
|
||||
Count=2
|
||||
Item0=..\..\global\delphi\vclzip;..\..\resellers;C:\keyman\8.0\src\global\delphi\jedi
|
||||
Item1=..\..\global\delphi\vclzip;..\..\resellers
|
||||
|
|
@ -12,20 +12,20 @@
|
|||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{963D608A-6689-469C-AE42-F56696DD42CC}</ProjectGuid>
|
||||
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
|
|
|
|||
|
|
@ -1,177 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<BorlandProject>
|
||||
<PersonalityInfo>
|
||||
<Option>
|
||||
<Option Name="Personality">Delphi.Personality</Option>
|
||||
<Option Name="ProjectType"></Option>
|
||||
<Option Name="Version">1.0</Option>
|
||||
<Option Name="GUID">{6199E379-0539-4702-AD8B-97B3859C16EC}</Option>
|
||||
</Option>
|
||||
</PersonalityInfo>
|
||||
<Delphi.Personality>
|
||||
<Source>
|
||||
<Source Name="MainSource">setup.dpr</Source>
|
||||
</Source>
|
||||
<FileVersion>
|
||||
<FileVersion Name="Version">7.0</FileVersion>
|
||||
</FileVersion>
|
||||
<Compiler>
|
||||
<Compiler Name="A">1</Compiler>
|
||||
<Compiler Name="B">0</Compiler>
|
||||
<Compiler Name="C">1</Compiler>
|
||||
<Compiler Name="D">1</Compiler>
|
||||
<Compiler Name="E">0</Compiler>
|
||||
<Compiler Name="F">0</Compiler>
|
||||
<Compiler Name="G">1</Compiler>
|
||||
<Compiler Name="H">1</Compiler>
|
||||
<Compiler Name="I">1</Compiler>
|
||||
<Compiler Name="J">1</Compiler>
|
||||
<Compiler Name="K">0</Compiler>
|
||||
<Compiler Name="L">1</Compiler>
|
||||
<Compiler Name="M">0</Compiler>
|
||||
<Compiler Name="N">1</Compiler>
|
||||
<Compiler Name="O">1</Compiler>
|
||||
<Compiler Name="P">1</Compiler>
|
||||
<Compiler Name="Q">1</Compiler>
|
||||
<Compiler Name="R">1</Compiler>
|
||||
<Compiler Name="S">0</Compiler>
|
||||
<Compiler Name="T">0</Compiler>
|
||||
<Compiler Name="U">0</Compiler>
|
||||
<Compiler Name="V">1</Compiler>
|
||||
<Compiler Name="W">1</Compiler>
|
||||
<Compiler Name="X">1</Compiler>
|
||||
<Compiler Name="Y">2</Compiler>
|
||||
<Compiler Name="Z">1</Compiler>
|
||||
<Compiler Name="ShowHints">True</Compiler>
|
||||
<Compiler Name="ShowWarnings">True</Compiler>
|
||||
<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler>
|
||||
<Compiler Name="NamespacePrefix"></Compiler>
|
||||
<Compiler Name="GenerateDocumentation">False</Compiler>
|
||||
<Compiler Name="DefaultNamespace"></Compiler>
|
||||
<Compiler Name="SymbolDeprecated">True</Compiler>
|
||||
<Compiler Name="SymbolLibrary">True</Compiler>
|
||||
<Compiler Name="SymbolPlatform">True</Compiler>
|
||||
<Compiler Name="SymbolExperimental">True</Compiler>
|
||||
<Compiler Name="UnitLibrary">True</Compiler>
|
||||
<Compiler Name="UnitPlatform">True</Compiler>
|
||||
<Compiler Name="UnitDeprecated">True</Compiler>
|
||||
<Compiler Name="UnitExperimental">True</Compiler>
|
||||
<Compiler Name="HResultCompat">True</Compiler>
|
||||
<Compiler Name="HidingMember">True</Compiler>
|
||||
<Compiler Name="HiddenVirtual">True</Compiler>
|
||||
<Compiler Name="Garbage">True</Compiler>
|
||||
<Compiler Name="BoundsError">True</Compiler>
|
||||
<Compiler Name="ZeroNilCompat">True</Compiler>
|
||||
<Compiler Name="StringConstTruncated">True</Compiler>
|
||||
<Compiler Name="ForLoopVarVarPar">True</Compiler>
|
||||
<Compiler Name="TypedConstVarPar">True</Compiler>
|
||||
<Compiler Name="AsgToTypedConst">True</Compiler>
|
||||
<Compiler Name="CaseLabelRange">True</Compiler>
|
||||
<Compiler Name="ForVariable">True</Compiler>
|
||||
<Compiler Name="ConstructingAbstract">True</Compiler>
|
||||
<Compiler Name="ComparisonFalse">True</Compiler>
|
||||
<Compiler Name="ComparisonTrue">True</Compiler>
|
||||
<Compiler Name="ComparingSignedUnsigned">True</Compiler>
|
||||
<Compiler Name="CombiningSignedUnsigned">True</Compiler>
|
||||
<Compiler Name="UnsupportedConstruct">True</Compiler>
|
||||
<Compiler Name="FileOpen">True</Compiler>
|
||||
<Compiler Name="FileOpenUnitSrc">True</Compiler>
|
||||
<Compiler Name="BadGlobalSymbol">True</Compiler>
|
||||
<Compiler Name="DuplicateConstructorDestructor">True</Compiler>
|
||||
<Compiler Name="InvalidDirective">True</Compiler>
|
||||
<Compiler Name="PackageNoLink">True</Compiler>
|
||||
<Compiler Name="PackageThreadVar">True</Compiler>
|
||||
<Compiler Name="ImplicitImport">True</Compiler>
|
||||
<Compiler Name="HPPEMITIgnored">True</Compiler>
|
||||
<Compiler Name="NoRetVal">True</Compiler>
|
||||
<Compiler Name="UseBeforeDef">True</Compiler>
|
||||
<Compiler Name="ForLoopVarUndef">True</Compiler>
|
||||
<Compiler Name="UnitNameMismatch">True</Compiler>
|
||||
<Compiler Name="NoCFGFileFound">True</Compiler>
|
||||
<Compiler Name="ImplicitVariants">True</Compiler>
|
||||
<Compiler Name="UnicodeToLocale">True</Compiler>
|
||||
<Compiler Name="LocaleToUnicode">True</Compiler>
|
||||
<Compiler Name="ImagebaseMultiple">True</Compiler>
|
||||
<Compiler Name="SuspiciousTypecast">True</Compiler>
|
||||
<Compiler Name="PrivatePropAccessor">True</Compiler>
|
||||
<Compiler Name="UnsafeType">False</Compiler>
|
||||
<Compiler Name="UnsafeCode">False</Compiler>
|
||||
<Compiler Name="UnsafeCast">False</Compiler>
|
||||
<Compiler Name="OptionTruncated">True</Compiler>
|
||||
<Compiler Name="WideCharReduced">True</Compiler>
|
||||
<Compiler Name="DuplicatesIgnored">True</Compiler>
|
||||
<Compiler Name="UnitInitSeq">True</Compiler>
|
||||
<Compiler Name="LocalPInvoke">True</Compiler>
|
||||
<Compiler Name="MessageDirective">True</Compiler>
|
||||
<Compiler Name="CodePage"></Compiler>
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Linker Name="MapFile">3</Linker>
|
||||
<Linker Name="OutputObjs">0</Linker>
|
||||
<Linker Name="GenerateHpps">False</Linker>
|
||||
<Linker Name="ConsoleApp">1</Linker>
|
||||
<Linker Name="DebugInfo">True</Linker>
|
||||
<Linker Name="RemoteSymbols">False</Linker>
|
||||
<Linker Name="GenerateDRC">False</Linker>
|
||||
<Linker Name="MinStackSize">16384</Linker>
|
||||
<Linker Name="MaxStackSize">1048576</Linker>
|
||||
<Linker Name="ImageBase">4194304</Linker>
|
||||
<Linker Name="ExeDescription"></Linker>
|
||||
</Linker>
|
||||
<Directories>
|
||||
<Directories Name="OutputDir"></Directories>
|
||||
<Directories Name="UnitOutputDir"></Directories>
|
||||
<Directories Name="PackageDLLOutputDir"></Directories>
|
||||
<Directories Name="PackageDCPOutputDir"></Directories>
|
||||
<Directories Name="SearchPath">C:\keyman\8.0\src\global\delphi\jedi</Directories>
|
||||
<Directories Name="Packages">Vcl40;Vclx40;comp51;VCLZipD4;PMemoPack4;dclkmn;vcljpg40;Vcl50;Vclx50;vcl;rtl;vclactnband;vclx;dbrtl;adortl;vcldb;bdertl;vcldbx;dbxcds;dbexpress;vclib;ibxpress;xmlrtl;vclie;inet;inetdbbde;inetdbxpress;dsnap;VclSmp;soaprtl;keyman_components;TntUnicodeVcl;tb2k_d10;tbx_d10;SpTBXLib_d10;SpTBXMemoPackage;IndyCore;IndySystem;IndyProtocols;IntrawebDB_80_100;Intraweb_80_100;dclOfficeXP;mbColorLibD9D;marcscancomponents;teeui;teedb;tee</Directories>
|
||||
<Directories Name="Conditionals">VERSION_KEYMAN_DEVELOPER;DaoCheck;DaoNamedEx;DaoDebug;DaoMessageEx;DAOIdent</Directories>
|
||||
<Directories Name="DebugSourceDirs"></Directories>
|
||||
<Directories Name="UsePackages">False</Directories>
|
||||
</Directories>
|
||||
<Parameters>
|
||||
<Parameters Name="RunParams"></Parameters>
|
||||
<Parameters Name="HostApplication"></Parameters>
|
||||
<Parameters Name="Launcher"></Parameters>
|
||||
<Parameters Name="UseLauncher">False</Parameters>
|
||||
<Parameters Name="DebugCWD"></Parameters>
|
||||
<Parameters Name="Debug Symbols Search Path"></Parameters>
|
||||
<Parameters Name="LoadAllSymbols">True</Parameters>
|
||||
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
|
||||
</Parameters>
|
||||
<Language>
|
||||
<Language Name="ActiveLang"></Language>
|
||||
<Language Name="ProjectLang">$00000C09</Language>
|
||||
<Language Name="RootDir"></Language>
|
||||
</Language>
|
||||
<VersionInfo>
|
||||
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
|
||||
<VersionInfo Name="AutoIncBuild">True</VersionInfo>
|
||||
<VersionInfo Name="MajorVer">5</VersionInfo>
|
||||
<VersionInfo Name="MinorVer">0</VersionInfo>
|
||||
<VersionInfo Name="Release">0</VersionInfo>
|
||||
<VersionInfo Name="Build">32</VersionInfo>
|
||||
<VersionInfo Name="Debug">False</VersionInfo>
|
||||
<VersionInfo Name="PreRelease">False</VersionInfo>
|
||||
<VersionInfo Name="Special">False</VersionInfo>
|
||||
<VersionInfo Name="Private">False</VersionInfo>
|
||||
<VersionInfo Name="DLL">False</VersionInfo>
|
||||
<VersionInfo Name="Locale">3081</VersionInfo>
|
||||
<VersionInfo Name="CodePage">1252</VersionInfo>
|
||||
</VersionInfo>
|
||||
<VersionInfoKeys>
|
||||
<VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="FileDescription">Tavultesoft IKE</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="FileVersion">5.0.0.32</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="InternalName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="ProductName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="ProductVersion">5.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="Comments"></VersionInfoKeys>
|
||||
</VersionInfoKeys>
|
||||
</Delphi.Personality>
|
||||
<StarTeamAssociation></StarTeamAssociation>
|
||||
<StarTeamNonRelativeFiles></StarTeamNonRelativeFiles>
|
||||
</BorlandProject>
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
-$A1
|
||||
-$B-
|
||||
-$C+
|
||||
-$D+
|
||||
-$E-
|
||||
-$F-
|
||||
-$G+
|
||||
-$H+
|
||||
-$I+
|
||||
-$J+
|
||||
-$K-
|
||||
-$L+
|
||||
-$M-
|
||||
-$N+
|
||||
-$O+
|
||||
-$P+
|
||||
-$Q+
|
||||
-$R+
|
||||
-$S-
|
||||
-$T-
|
||||
-$U-
|
||||
-$V+
|
||||
-$W+
|
||||
-$X+
|
||||
-$Y+
|
||||
-$Z1
|
||||
-GD
|
||||
-cg
|
||||
-vn
|
||||
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
||||
-H+
|
||||
-W+
|
||||
-M
|
||||
-$M16384,1048576
|
||||
-K$00400000
|
||||
-LE"C:\Users\mcdurdin.TAVULTESOFT\Documents\Borland Studio Projects\Bpl"
|
||||
-LN"C:\Users\mcdurdin.TAVULTESOFT\Documents\Borland Studio Projects\Bpl"
|
||||
-U"C:\keyman\8.0\src\global\delphi\jedi"
|
||||
-O"C:\keyman\8.0\src\global\delphi\jedi"
|
||||
-I"C:\keyman\8.0\src\global\delphi\jedi"
|
||||
-R"C:\keyman\8.0\src\global\delphi\jedi"
|
||||
-DVERSION_KEYMAN_DEVELOPER;DaoCheck;DaoNamedEx;DaoDebug;DaoMessageEx;DAOIdent
|
||||
-w-UNSAFE_TYPE
|
||||
-w-UNSAFE_CODE
|
||||
-w-UNSAFE_CAST
|
||||
36
windows/src/engine/README.md
Normal file
36
windows/src/engine/README.md
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
# Keyman Engine for Windows
|
||||
|
||||
There are a number of build artifacts that make up the Keyman Engine. This is a brief description of each artifact's purpose.
|
||||
|
||||
## inst - keymanengine.msm
|
||||
|
||||
The installation merge module database for the Keyman Engine.
|
||||
|
||||
## keyman - keyman.exe
|
||||
|
||||
Host application for the Keyman Engine. Shows the Keyman icon, Keyman menu, OSK, and handles language switching etc, as well as running the windows hooks to capture and translate keystrokes.
|
||||
|
||||
## keymanx64 - keymanx64.exe
|
||||
|
||||
64-bit version of keyman.exe. All UI is in keyman.exe, so this is a thin wrapper around the keyman32 build.
|
||||
|
||||
## kmcomapi - kmcomapi.dll | kmcomapi.x64.dll
|
||||
|
||||
This is the public COM API library, used by keyman.exe, kmshell.exe, and various other Keyman and 3rd party programs.
|
||||
|
||||
## kmrefresh - kmrefresh.x86.exe & kmrefresh.x64.exe
|
||||
|
||||
A helper app to refresh Windows language settings, due to a bug in Windows; read ../kmrefresh/kmrefresh.cpp for details.
|
||||
|
||||
## kmtip - kmtip.dll | kmtip64.dll
|
||||
|
||||
Implementation of a Text Service for the Text Services Framework (TSF). This implementation is named Keyman TIP.
|
||||
Architecturally it sits between the TSF Manager and Keyman.exe
|
||||
|
||||
## mcompile - mcompile.exe
|
||||
|
||||
A tool to recompile keyboard layouts after install to map to various European Latin script keyboard layouts
|
||||
|
||||
## tsysinfo - tsysinfo.exe & tsysinfox64.exe
|
||||
|
||||
Diagnostics
|
||||
|
|
@ -1,176 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<BorlandProject>
|
||||
<PersonalityInfo>
|
||||
<Option>
|
||||
<Option Name="Personality">Delphi.Personality</Option>
|
||||
<Option Name="ProjectType">VCLApplication</Option>
|
||||
<Option Name="Version">1.0</Option>
|
||||
<Option Name="GUID">{47B3274B-FC3D-4BB6-94B6-98F61D2CD47B}</Option>
|
||||
</Option>
|
||||
</PersonalityInfo>
|
||||
<Delphi.Personality>
|
||||
<Source>
|
||||
<Source Name="MainSource">insthelper.dpr</Source>
|
||||
</Source>
|
||||
<FileVersion>
|
||||
<FileVersion Name="Version">7.0</FileVersion>
|
||||
</FileVersion>
|
||||
<Compiler>
|
||||
<Compiler Name="A">1</Compiler>
|
||||
<Compiler Name="B">0</Compiler>
|
||||
<Compiler Name="C">1</Compiler>
|
||||
<Compiler Name="D">1</Compiler>
|
||||
<Compiler Name="E">0</Compiler>
|
||||
<Compiler Name="F">0</Compiler>
|
||||
<Compiler Name="G">1</Compiler>
|
||||
<Compiler Name="H">1</Compiler>
|
||||
<Compiler Name="I">0</Compiler>
|
||||
<Compiler Name="J">1</Compiler>
|
||||
<Compiler Name="K">0</Compiler>
|
||||
<Compiler Name="L">1</Compiler>
|
||||
<Compiler Name="M">0</Compiler>
|
||||
<Compiler Name="N">1</Compiler>
|
||||
<Compiler Name="O">1</Compiler>
|
||||
<Compiler Name="P">1</Compiler>
|
||||
<Compiler Name="Q">0</Compiler>
|
||||
<Compiler Name="R">0</Compiler>
|
||||
<Compiler Name="S">0</Compiler>
|
||||
<Compiler Name="T">0</Compiler>
|
||||
<Compiler Name="U">0</Compiler>
|
||||
<Compiler Name="V">1</Compiler>
|
||||
<Compiler Name="W">1</Compiler>
|
||||
<Compiler Name="X">1</Compiler>
|
||||
<Compiler Name="Y">1</Compiler>
|
||||
<Compiler Name="Z">1</Compiler>
|
||||
<Compiler Name="ShowHints">True</Compiler>
|
||||
<Compiler Name="ShowWarnings">True</Compiler>
|
||||
<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler>
|
||||
<Compiler Name="NamespacePrefix"></Compiler>
|
||||
<Compiler Name="GenerateDocumentation">False</Compiler>
|
||||
<Compiler Name="DefaultNamespace"></Compiler>
|
||||
<Compiler Name="SymbolDeprecated">True</Compiler>
|
||||
<Compiler Name="SymbolLibrary">True</Compiler>
|
||||
<Compiler Name="SymbolPlatform">True</Compiler>
|
||||
<Compiler Name="SymbolExperimental">True</Compiler>
|
||||
<Compiler Name="UnitLibrary">True</Compiler>
|
||||
<Compiler Name="UnitPlatform">True</Compiler>
|
||||
<Compiler Name="UnitDeprecated">True</Compiler>
|
||||
<Compiler Name="UnitExperimental">True</Compiler>
|
||||
<Compiler Name="HResultCompat">True</Compiler>
|
||||
<Compiler Name="HidingMember">True</Compiler>
|
||||
<Compiler Name="HiddenVirtual">True</Compiler>
|
||||
<Compiler Name="Garbage">True</Compiler>
|
||||
<Compiler Name="BoundsError">True</Compiler>
|
||||
<Compiler Name="ZeroNilCompat">True</Compiler>
|
||||
<Compiler Name="StringConstTruncated">True</Compiler>
|
||||
<Compiler Name="ForLoopVarVarPar">True</Compiler>
|
||||
<Compiler Name="TypedConstVarPar">True</Compiler>
|
||||
<Compiler Name="AsgToTypedConst">True</Compiler>
|
||||
<Compiler Name="CaseLabelRange">True</Compiler>
|
||||
<Compiler Name="ForVariable">True</Compiler>
|
||||
<Compiler Name="ConstructingAbstract">True</Compiler>
|
||||
<Compiler Name="ComparisonFalse">True</Compiler>
|
||||
<Compiler Name="ComparisonTrue">True</Compiler>
|
||||
<Compiler Name="ComparingSignedUnsigned">True</Compiler>
|
||||
<Compiler Name="CombiningSignedUnsigned">True</Compiler>
|
||||
<Compiler Name="UnsupportedConstruct">True</Compiler>
|
||||
<Compiler Name="FileOpen">True</Compiler>
|
||||
<Compiler Name="FileOpenUnitSrc">True</Compiler>
|
||||
<Compiler Name="BadGlobalSymbol">True</Compiler>
|
||||
<Compiler Name="DuplicateConstructorDestructor">True</Compiler>
|
||||
<Compiler Name="InvalidDirective">True</Compiler>
|
||||
<Compiler Name="PackageNoLink">True</Compiler>
|
||||
<Compiler Name="PackageThreadVar">True</Compiler>
|
||||
<Compiler Name="ImplicitImport">True</Compiler>
|
||||
<Compiler Name="HPPEMITIgnored">True</Compiler>
|
||||
<Compiler Name="NoRetVal">True</Compiler>
|
||||
<Compiler Name="UseBeforeDef">True</Compiler>
|
||||
<Compiler Name="ForLoopVarUndef">True</Compiler>
|
||||
<Compiler Name="UnitNameMismatch">True</Compiler>
|
||||
<Compiler Name="NoCFGFileFound">True</Compiler>
|
||||
<Compiler Name="ImplicitVariants">True</Compiler>
|
||||
<Compiler Name="UnicodeToLocale">True</Compiler>
|
||||
<Compiler Name="LocaleToUnicode">True</Compiler>
|
||||
<Compiler Name="ImagebaseMultiple">True</Compiler>
|
||||
<Compiler Name="SuspiciousTypecast">True</Compiler>
|
||||
<Compiler Name="PrivatePropAccessor">True</Compiler>
|
||||
<Compiler Name="UnsafeType">False</Compiler>
|
||||
<Compiler Name="UnsafeCode">False</Compiler>
|
||||
<Compiler Name="UnsafeCast">False</Compiler>
|
||||
<Compiler Name="OptionTruncated">True</Compiler>
|
||||
<Compiler Name="WideCharReduced">True</Compiler>
|
||||
<Compiler Name="DuplicatesIgnored">True</Compiler>
|
||||
<Compiler Name="UnitInitSeq">True</Compiler>
|
||||
<Compiler Name="LocalPInvoke">True</Compiler>
|
||||
<Compiler Name="MessageDirective">True</Compiler>
|
||||
<Compiler Name="CodePage"></Compiler>
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Linker Name="MapFile">3</Linker>
|
||||
<Linker Name="OutputObjs">0</Linker>
|
||||
<Linker Name="GenerateHpps">False</Linker>
|
||||
<Linker Name="ConsoleApp">1</Linker>
|
||||
<Linker Name="DebugInfo">True</Linker>
|
||||
<Linker Name="RemoteSymbols">True</Linker>
|
||||
<Linker Name="GenerateDRC">False</Linker>
|
||||
<Linker Name="MinStackSize">16384</Linker>
|
||||
<Linker Name="MaxStackSize">1048576</Linker>
|
||||
<Linker Name="ImageBase">4194304</Linker>
|
||||
<Linker Name="ExeDescription">Keyman Engine Installer Functions</Linker>
|
||||
</Linker>
|
||||
<Directories>
|
||||
<Directories Name="OutputDir"></Directories>
|
||||
<Directories Name="UnitOutputDir"></Directories>
|
||||
<Directories Name="PackageDLLOutputDir"></Directories>
|
||||
<Directories Name="PackageDCPOutputDir"></Directories>
|
||||
<Directories Name="SearchPath">c:\keyman\8.0\src\global\delphi\jedi</Directories>
|
||||
<Directories Name="Packages">vclie50;Vcl50;Inetdb50;Inet50;Vcldb50;Vclx50;Vclbde50;proide50</Directories>
|
||||
<Directories Name="Conditionals"></Directories>
|
||||
<Directories Name="DebugSourceDirs"></Directories>
|
||||
<Directories Name="UsePackages">False</Directories>
|
||||
</Directories>
|
||||
<Parameters>
|
||||
<Parameters Name="RunParams">-path c:\keyman\7.0\test -pri -pi c:\keyman\7.0\test\keyman.kce</Parameters>
|
||||
<Parameters Name="HostApplication">C:\keyman\5.1\src\dist\kmshell\kmshell.exe</Parameters>
|
||||
<Parameters Name="Launcher"></Parameters>
|
||||
<Parameters Name="UseLauncher">False</Parameters>
|
||||
<Parameters Name="DebugCWD"></Parameters>
|
||||
<Parameters Name="Debug Symbols Search Path"></Parameters>
|
||||
<Parameters Name="LoadAllSymbols">True</Parameters>
|
||||
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
|
||||
</Parameters>
|
||||
<Language>
|
||||
<Language Name="ActiveLang"></Language>
|
||||
<Language Name="ProjectLang">$00000C09</Language>
|
||||
<Language Name="RootDir"></Language>
|
||||
</Language>
|
||||
<VersionInfo>
|
||||
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
|
||||
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
|
||||
<VersionInfo Name="MajorVer">1</VersionInfo>
|
||||
<VersionInfo Name="MinorVer">0</VersionInfo>
|
||||
<VersionInfo Name="Release">0</VersionInfo>
|
||||
<VersionInfo Name="Build">0</VersionInfo>
|
||||
<VersionInfo Name="Debug">False</VersionInfo>
|
||||
<VersionInfo Name="PreRelease">False</VersionInfo>
|
||||
<VersionInfo Name="Special">False</VersionInfo>
|
||||
<VersionInfo Name="Private">False</VersionInfo>
|
||||
<VersionInfo Name="DLL">False</VersionInfo>
|
||||
<VersionInfo Name="Locale">3081</VersionInfo>
|
||||
<VersionInfo Name="CodePage">1252</VersionInfo>
|
||||
</VersionInfo>
|
||||
<VersionInfoKeys>
|
||||
<VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="FileDescription">Tavultesoft IKE</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="FileVersion">5.0.0.23</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="InternalName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="ProductName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="ProductVersion">5.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="Comments"></VersionInfoKeys>
|
||||
</VersionInfoKeys>
|
||||
</Delphi.Personality>
|
||||
<ModelSupport>True</ModelSupport>
|
||||
</BorlandProject>
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
-$A1
|
||||
-$B-
|
||||
-$C+
|
||||
-$D+
|
||||
-$E-
|
||||
-$F-
|
||||
-$G+
|
||||
-$H+
|
||||
-$I-
|
||||
-$J+
|
||||
-$K-
|
||||
-$L+
|
||||
-$M-
|
||||
-$N+
|
||||
-$O+
|
||||
-$P+
|
||||
-$Q-
|
||||
-$R-
|
||||
-$S-
|
||||
-$T-
|
||||
-$U-
|
||||
-$V+
|
||||
-$W+
|
||||
-$X+
|
||||
-$YD
|
||||
-$Z1
|
||||
-GD
|
||||
-cg
|
||||
-vn
|
||||
-vr
|
||||
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
||||
-H+
|
||||
-W+
|
||||
-M
|
||||
-$M16384,1048576
|
||||
-K$00400000
|
||||
-LE"C:\Users\mcdurdin.TAVULTESOFT\Documents\Borland Studio Projects\Bpl"
|
||||
-LN"C:\Users\mcdurdin.TAVULTESOFT\Documents\Borland Studio Projects\Bpl"
|
||||
-U"c:\keyman\8.0\src\global\delphi\jedi"
|
||||
-O"c:\keyman\8.0\src\global\delphi\jedi"
|
||||
-I"c:\keyman\8.0\src\global\delphi\jedi"
|
||||
-R"c:\keyman\8.0\src\global\delphi\jedi"
|
||||
-w-UNSAFE_TYPE
|
||||
-w-UNSAFE_CODE
|
||||
-w-UNSAFE_CAST
|
||||
|
|
@ -1,92 +0,0 @@
|
|||
[Compiler]
|
||||
A=1
|
||||
B=0
|
||||
C=1
|
||||
D=1
|
||||
E=0
|
||||
F=0
|
||||
G=1
|
||||
H=1
|
||||
I=0
|
||||
J=1
|
||||
K=0
|
||||
L=1
|
||||
M=0
|
||||
N=1
|
||||
O=1
|
||||
P=1
|
||||
Q=0
|
||||
R=0
|
||||
S=0
|
||||
T=0
|
||||
U=0
|
||||
V=1
|
||||
W=1
|
||||
X=1
|
||||
Y=1
|
||||
Z=1
|
||||
ShowHints=1
|
||||
ShowWarnings=1
|
||||
UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
||||
[Linker]
|
||||
MapFile=0
|
||||
OutputObjs=0
|
||||
ConsoleApp=1
|
||||
DebugInfo=1
|
||||
RemoteSymbols=1
|
||||
MinStackSize=16384
|
||||
MaxStackSize=1048576
|
||||
ImageBase=4194304
|
||||
ExeDescription=Greatis Form Designer Design-Time Package
|
||||
[Directories]
|
||||
OutputDir=
|
||||
UnitOutputDir=
|
||||
PackageDLLOutputDir=
|
||||
PackageDCPOutputDir=
|
||||
SearchPath=c:\keyman\8.0\src\global\delphi\jedi
|
||||
Packages=vclie50;Vcl50;Inetdb50;Inet50;Vcldb50;Vclx50;Vclbde50;proide50
|
||||
Conditionals=
|
||||
DebugSourceDirs=
|
||||
UsePackages=0
|
||||
[Parameters]
|
||||
RunParams=-path c:\keyman\8.0\test -pri -pi c:\keyman\8.0\test\keyman.kce
|
||||
HostApplication=C:\keyman\5.1\src\dist\kmshell\kmshell.exe
|
||||
[Language]
|
||||
ActiveLang=
|
||||
ProjectLang=$00000C09
|
||||
RootDir=
|
||||
[Version Info]
|
||||
IncludeVerInfo=0
|
||||
AutoIncBuild=0
|
||||
MajorVer=1
|
||||
MinorVer=0
|
||||
Release=0
|
||||
Build=0
|
||||
Debug=0
|
||||
PreRelease=0
|
||||
Special=0
|
||||
Private=0
|
||||
DLL=0
|
||||
Locale=3081
|
||||
CodePage=1252
|
||||
[Excluded Packages]
|
||||
$(DELPHI)\Bin\stride50.bpl=String Resource Editor IDE Package
|
||||
[HistoryLists\hlDebugSourcePath]
|
||||
Count=1
|
||||
Item0=$(DELPHI)\source\vcl
|
||||
[HistoryLists\hlConditionals]
|
||||
Count=2
|
||||
Item0=KPSMALL
|
||||
Item1=VISUALKEYBOARD_NOCUSTOMBITMAP;VERSION_KEYMAN_REDIST;RELEASE_KEYMAN
|
||||
[HistoryLists\hlUnitAliases]
|
||||
Count=1
|
||||
Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
||||
[HistoryLists\hlSearchPath]
|
||||
Count=4
|
||||
Item0=c:\keyman\8.0\src\global\delphi\jedi
|
||||
Item1=$(DELPHI)\source\vcl;c:\keyman\5.1\src\global\delphi\vclzip
|
||||
Item2=$(DELPHI)\source\rtl\sys;$(DELPHI)\source\vcl;c:\keyman\5.1\src\global\delphi\vclzip
|
||||
Item3=c:\keyman\5.1\src\global\delphi\vclzip;c:\keyman\5.1\src\global\delphi\folderdlg
|
||||
[HistoryLists\hlOutputDirectorry]
|
||||
Count=1
|
||||
Item0=c:\temp\kmshell-test
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue