chore(windows): Merge branch 'beta' into fix/windows/5996/no-keystrokes-emoji-input
|
|
@ -9,7 +9,7 @@ insert_final_newline = true
|
|||
trim_trailing_whitespace = true
|
||||
|
||||
[*.md]
|
||||
max_line_length = off
|
||||
max_line_length = 160
|
||||
|
||||
[{Makefile,rules}]
|
||||
indent_style = tab
|
||||
|
|
|
|||
|
|
@ -115,7 +115,8 @@ Include details about your configuration and environment:
|
|||
|
||||
This section guides you through submitting an enhancement suggestion for Keyman, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion :pencil: and find related suggestions :mag_right:.
|
||||
|
||||
Before creating enhancement suggestions, please check [this list](#before-submitting-an-enhancement-suggestion) as you might find out that you don't need to create one. When you are creating an enhancement suggestion, please [include as many details as possible](#how-do-i-submit-a-good-enhancement-suggestion). Fill in [the template](https://github.com/keymanapp/keyman/issues/new?assignees=&labels=feat&template=feature_request.md&title=feat%3A+), including the steps that you imagine you would take if the feature you're requesting existed.
|
||||
Before creating enhancement suggestions, please check [this list](#before-submitting-an-enhancement-suggestion) as you might find out that you don't need to create one. When you are creating an enhancement suggestion, please [include as many details as possible](#how-do-i-submit-a-good-enhancement-suggestion).
|
||||
Fill in [the template](https://github.com/keymanapp/keyman/issues/new?assignees=&labels=feat&template=feature_request.md&title=feat%3A+), including the steps that you imagine you would take if the feature you're requesting existed.
|
||||
|
||||
#### Before Submitting An Enhancement Suggestion
|
||||
|
||||
|
|
|
|||
31
HISTORY.md
|
|
@ -1,5 +1,36 @@
|
|||
# Keyman Version History
|
||||
|
||||
## 15.0.215 beta 2022-03-17
|
||||
|
||||
* fix(web): crash on focus before init (#6393)
|
||||
|
||||
## 15.0.214 beta 2022-03-16
|
||||
|
||||
* feat(web): `&newLayer` and `&oldLayer` (#6366)
|
||||
|
||||
## 15.0.213 beta 2022-03-15
|
||||
|
||||
* feat(common): zip and index keyboard artifacts (#6367)
|
||||
* fix(android/engine): Activate menu on globe longpress before release (#6356)
|
||||
* fix(web): subkey touch position after scroll (#6340)
|
||||
* fix(developer): warn on ncaps usage inconsistency (#6347)
|
||||
* fix(web): caps state tracking for touch (#6351)
|
||||
* chore(windows): Update license date (#6374)
|
||||
* chore(android): Separate CI step to generate Play Store notes (#6375)
|
||||
* chore(linux): Update changelog and copyright (#6372)
|
||||
* fix(oem/fv/android): Consolidate dictionary and keyboard settings (#6369)
|
||||
* fix(linux): Don't start ibus-daemon multiple times (#6283)
|
||||
|
||||
## 15.0.212 beta 2022-03-11
|
||||
|
||||
* chore(linux): Fix lintian warnings (#6360)
|
||||
* fix(common): allow custom keyboard builds (#6358)
|
||||
|
||||
## 15.0.211 beta 2022-03-10
|
||||
|
||||
* fix(oem/fv/android): Check keyboard exists before registering a model (#6346)
|
||||
* chore(common): cleanup sh global color variables (#6353)
|
||||
|
||||
## 15.0.210 beta 2022-03-10
|
||||
|
||||
* feat(common): build test keyboards via script (#6352)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# License
|
||||
|
||||
Copyright (c) 2017-2021 SIL International. All rights reserved.
|
||||
Copyright (c) 2017-2022 SIL International. All rights reserved.
|
||||
|
||||
Licensed under the MIT License.
|
||||
|
||||
|
|
@ -10,7 +10,7 @@ Licensed under the MIT License.
|
|||
|
||||
The MIT License
|
||||
|
||||
Copyright (c) 2017-2021 SIL International
|
||||
Copyright (c) 2017-2022 SIL International
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
15.0.211
|
||||
15.0.216
|
||||
48
android/KMAPro/build-play-store-notes.sh
Executable file
|
|
@ -0,0 +1,48 @@
|
|||
# Set sensible script defaults:
|
||||
# set -e: Terminate script if a command returns an error
|
||||
set -e
|
||||
# set -u: Terminate script if an unset variable is used
|
||||
set -u
|
||||
|
||||
## 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
|
||||
|
||||
QUIET=0
|
||||
|
||||
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
|
||||
|
||||
THIS_DIR="$(dirname "$THIS_SCRIPT")"
|
||||
|
||||
#
|
||||
# Copy release notes for Gradle Play Publisher to upload
|
||||
# Reference: https://github.com/Triple-T/gradle-play-publisher#uploading-release-notes
|
||||
#
|
||||
PLAY_RELEASE_NOTES="$KEYMAN_ROOT/android/KMAPro/kMAPro/src/main/play/release-notes/en-US/$TIER.txt"
|
||||
if [ $TIER = "stable" ]; then
|
||||
PLAY_RELEASE_NOTES="$KEYMAN_ROOT/android/KMAPro/kMAPro/src/main/play/release-notes/en-US/default.txt"
|
||||
fi
|
||||
echo "Generating Play Store release notes to $PLAY_RELEASE_NOTES"
|
||||
echo "" > "$PLAY_RELEASE_NOTES"
|
||||
|
||||
# Copy whatsnew.md to release notes 1 line at a time,
|
||||
# filtering for lines that start with "*".
|
||||
# Play Store release notes have a limit of 500 characters
|
||||
FILTERED_LINES=`grep '^\s*\*.*$' "$KEYMAN_ROOT/android/help/about/whatsnew.md"`
|
||||
IFS=$'\n' # Change IFS to new line
|
||||
for line in $FILTERED_LINES
|
||||
do
|
||||
CHARS_IN_RELEASE_NOTES=$( wc -m < $PLAY_RELEASE_NOTES )
|
||||
CHARS_IN_CURRENT_LINE=$( wc -m <<< $line )
|
||||
if (( CHARS_IN_RELEASE_NOTES + CHARS_IN_CURRENT_LINE + 1 < 450 )); then
|
||||
# Copy line to Play Store release notes
|
||||
echo "$line" >> $PLAY_RELEASE_NOTES
|
||||
else
|
||||
# 450 chars reached
|
||||
warn "Warning: Play Store release notes approaching 500 character limit"
|
||||
echo '* Additional bug fixes and improvements' >> $PLAY_RELEASE_NOTES
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
|
@ -105,6 +105,13 @@ public class PackageActivity extends AppCompatActivity implements
|
|||
return;
|
||||
}
|
||||
|
||||
// Check minimum keyboard version to ensure current version of Keyman supports the features
|
||||
String pkgMinimumKeyboardVersion = kmpProcessor.getPackageMinimumKeyboardVersion(pkgInfo);
|
||||
if (FileUtils.compareVersions(pkgMinimumKeyboardVersion, KMManager.getMajorVersion()) == FileUtils.VERSION_GREATER) {
|
||||
showErrorToast(context, getString(R.string.minimum_keyboard_version_not_supported));
|
||||
return;
|
||||
}
|
||||
|
||||
pkgName = kmpProcessor.getPackageName(pkgInfo);
|
||||
final int keyboardCount = kmpProcessor.getKeyboardCount(pkgInfo);
|
||||
|
||||
|
|
|
|||
|
|
@ -241,4 +241,7 @@
|
|||
<!-- Context: KMP Package strings -->
|
||||
<string name="invalid_metadata" comment="kmp.json metadata file is invalid or missing in package">Invalid/Missing metadata in package</string>
|
||||
|
||||
<!-- Context: KMP Package strings -->
|
||||
<string name="minimum_keyboard_version_not_supported" comment="Notification when keyboard has functionality not supported by current Keyman">
|
||||
Keyboard requires a newer version of Keyman</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -190,6 +190,7 @@ final class KMKeyboard extends WebView {
|
|||
return;
|
||||
} else if (KMManager.getGlobeKeyState() == KMManager.GlobeKeyState.GLOBE_KEY_STATE_DOWN) {
|
||||
KMManager.setGlobeKeyState(KMManager.GlobeKeyState.GLOBE_KEY_STATE_LONGPRESS);
|
||||
KMManager.handleGlobeKeyAction(context, true, keyboardType);
|
||||
return;
|
||||
/* For future implementation
|
||||
else if(suggestionJSON != null) {
|
||||
|
|
|
|||
|
|
@ -1325,7 +1325,17 @@ public final class KMManager {
|
|||
return true;
|
||||
}
|
||||
|
||||
public static boolean setBannerOptions(boolean mayPredict) {
|
||||
/**
|
||||
* deleteLexicalModel - Remove lexical model from the installed list
|
||||
* and deregister the model with KMW
|
||||
* @param context
|
||||
* @param position - int position in the models list
|
||||
*/
|
||||
public static void deleteLexicalModel(Context context, int position, boolean silenceNotification) {
|
||||
KeyboardPickerActivity.deleteLexicalModel(context, position, silenceNotification);
|
||||
}
|
||||
|
||||
public static boolean setBannerOptions(boolean mayPredict) {
|
||||
String url = KMString.format("setBannerOptions(%s)", mayPredict);
|
||||
if (InAppKeyboard != null) {
|
||||
InAppKeyboard.loadJavascript(url);
|
||||
|
|
@ -2099,21 +2109,30 @@ public final class KMManager {
|
|||
globeKeyState = state;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return if the lock screen is locked (prevents keyboard picker menu from being displayed)
|
||||
* @return boolean
|
||||
*/
|
||||
private static boolean isLocked() {
|
||||
KeyguardManager keyguardManager = (KeyguardManager) appContext.getSystemService(Context.KEYGUARD_SERVICE);
|
||||
// inKeyguardRestrictedInputMode() deprecated, so check isKeyguardLocked() to determine if screen is locked
|
||||
return keyguardManager.isKeyguardLocked();
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the globe key action
|
||||
* @param globeKeyDown boolean if the globe key state is GLOBE_KEY_STATE_DOWN
|
||||
* @param keyboardType KeyboardType KEYBOARD_TYPE_INAPP or KEYBOARD_TYPE_SYSTEM
|
||||
*/
|
||||
private static void handleGlobeKeyAction(Context context, boolean globeKeyDown, KeyboardType keyboardType) {
|
||||
public static void handleGlobeKeyAction(Context context, boolean globeKeyDown, KeyboardType keyboardType) {
|
||||
// Update globeKeyState
|
||||
if (globeKeyState != GlobeKeyState.GLOBE_KEY_STATE_LONGPRESS) {
|
||||
globeKeyState = globeKeyDown ? GlobeKeyState.GLOBE_KEY_STATE_DOWN : GlobeKeyState.GLOBE_KEY_STATE_UP;
|
||||
}
|
||||
|
||||
if (KMManager.shouldAllowSetKeyboard()) {
|
||||
KeyguardManager keyguardManager = (KeyguardManager) appContext.getSystemService(Context.KEYGUARD_SERVICE);
|
||||
// inKeyguardRestrictedInputMode() deprecated, so check isKeyguardLocked() to determine if screen is locked
|
||||
if (keyguardManager.isKeyguardLocked()) {
|
||||
if (isLocked()) {
|
||||
if (keyboardType == KeyboardType.KEYBOARD_TYPE_SYSTEM && globeKeyState == GlobeKeyState.GLOBE_KEY_STATE_UP) {
|
||||
doGlobeKeyLockscreenAction(context);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -275,7 +275,7 @@ public final class ModelPickerActivity extends BaseActivity {
|
|||
|
||||
// Uses the repo dataset's master lexical model list to create a filtered adapter for use here.
|
||||
// As this one is specific to this class, we can implement Activity-specific functionality within it.
|
||||
static private class FilteredLexicalModelAdapter extends NestedAdapter<LexicalModel, Dataset.LexicalModels, String> {
|
||||
static public class FilteredLexicalModelAdapter extends NestedAdapter<LexicalModel, Dataset.LexicalModels, String> {
|
||||
static final int RESOURCE = R.layout.models_list_row_layout;
|
||||
private final Context context;
|
||||
|
||||
|
|
|
|||
|
|
@ -394,6 +394,22 @@ public class PackageProcessor {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse a kmp.json JSON object and return the package's minimum keyboard version (system.fileVersion).
|
||||
* This is to avoid issues with app crashing if keyboard functionality is not supported.
|
||||
* If undefined, return default version "7.0".
|
||||
* @param json kmp.json as a JSON object.
|
||||
* @return String of the package's minimum keyboard version
|
||||
*/
|
||||
public static String getPackageMinimumKeyboardVersion(JSONObject json) {
|
||||
try {
|
||||
return json.getJSONObject("system").getString("fileVersion");
|
||||
} catch (Exception e) {
|
||||
KMLog.LogException(TAG, "", e);
|
||||
return "7.0";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse a kmp.json JSON object and return the package's target (keyboards vs lexical models).
|
||||
* Only one can be valid. Otherwise, return "invalid"
|
||||
|
|
|
|||
|
|
@ -97,7 +97,6 @@
|
|||
<!-- Context: Keyboard Updates -->
|
||||
<string name="dictionary_update_message">Updates available for dictionary %1$s: %2$s </string>
|
||||
|
||||
|
||||
<!-- Context: Keyboard Info and Keyboard Settings -->
|
||||
<string name="keyboard_version" comment="Label for keyboard version">Keyboard version</string>
|
||||
|
||||
|
|
@ -133,6 +132,9 @@
|
|||
<!-- Context: Query for associated dictionary -->
|
||||
<string name="query_associated_model" comment="Check if there's an available dictionary to download">Checking for associated dictionary to download</string>
|
||||
|
||||
<string name="cannot_query_associated_model" comment="Cannot reach server to check if there's an available dictionary to download">
|
||||
Cannot connect to Keyman server to check for associated dictionary to download</string>
|
||||
|
||||
<!-- Context: Model Updates -->
|
||||
<string name="confirm_download_model" comment="Confirmation to download a dictionary update">Would you like to download the latest version of this dictionary?</string>
|
||||
|
||||
|
|
@ -210,10 +212,14 @@
|
|||
|
||||
<!-- Context: Language Settings menu strings -->
|
||||
<string name="model_label">Dictionary</string>
|
||||
<plurals name="model_count">
|
||||
<item quantity="one">Dictionary</item>
|
||||
<item quantity="other">Dictionaries</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Context: Language Settings menu substring - Check for available dictionary -->
|
||||
<string name="check_available_model" comment="Check for available dictionary">Check for available dictionary</string>
|
||||
|
||||
<string name="check_model_online" comment="Check for dictionaries online">Check for dictionaries online</string>
|
||||
|
||||
<!-- Context: Language Settings menu strings -->
|
||||
<string name="model_info_header" comment="Dictionary name">Dictionary: %1$s</string>
|
||||
|
|
|
|||
|
|
@ -107,34 +107,3 @@ if $DO_HTM; then
|
|||
cp android_images/* "$DESTHTM/android_images/"
|
||||
|
||||
fi
|
||||
|
||||
#
|
||||
# Copy release notes for Gradle Play Publisher to upload
|
||||
# Reference: https://github.com/Triple-T/gradle-play-publisher#uploading-release-notes
|
||||
#
|
||||
PLAY_RELEASE_NOTES="$KEYMAN_ROOT/android/KMAPro/kMAPro/src/main/play/release-notes/en-US/$TIER.txt"
|
||||
if [ $TIER = "stable" ]; then
|
||||
PLAY_RELEASE_NOTES="$KEYMAN_ROOT/android/KMAPro/kMAPro/src/main/play/release-notes/en-US/default.txt"
|
||||
fi
|
||||
echo "Generating Play Store release notes to $PLAY_RELEASE_NOTES"
|
||||
echo "" > "$PLAY_RELEASE_NOTES"
|
||||
|
||||
# Copy whatsnew.md to release notes 1 line at a time,
|
||||
# filtering for lines that start with "*".
|
||||
# Play Store release notes have a limit of 500 characters
|
||||
FILTERED_LINES=`grep '^\s*\*.*$' "$KEYMAN_ROOT/android/help/about/whatsnew.md"`
|
||||
IFS=$'\n' # Change IFS to new line
|
||||
for line in $FILTERED_LINES
|
||||
do
|
||||
CHARS_IN_RELEASE_NOTES=$( wc -m < $PLAY_RELEASE_NOTES )
|
||||
CHARS_IN_CURRENT_LINE=$( wc -m <<< $line )
|
||||
if (( CHARS_IN_RELEASE_NOTES + CHARS_IN_CURRENT_LINE + 1 < 450 )); then
|
||||
# Copy line to Play Store release notes
|
||||
echo "$line" >> $PLAY_RELEASE_NOTES
|
||||
else
|
||||
# 450 chars reached
|
||||
warn "Warning: Play Store release notes approaching 500 character limit"
|
||||
echo '* Additional bug fixes and improvements' >> $PLAY_RELEASE_NOTES
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
|
|
|||
3
android/build-publish.sh
Normal file → Executable file
|
|
@ -75,6 +75,9 @@ echo "BUILD_FLAGS $BUILD_FLAGS"
|
|||
# Publish Keyman for Android
|
||||
if [ "$DO_KMAPRO" = true ]; then
|
||||
cd "$KEYMAN_ROOT/android/KMAPro/"
|
||||
# Copy Release Notes
|
||||
./build-play-store-notes.sh
|
||||
|
||||
./gradlew $DAEMON_FLAG $BUILD_FLAGS
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,6 @@ Here are some of the new features we have added to Keyman 15.0 for Android:
|
|||
| System | 1 | Quickly switch to previous system keyboard |
|
||||
| System | 2+ | Quickly switch to next Keyman keyboard |
|
||||
|
||||
* Long press and release the globe key to bring up the keyboard picker menu. On a Keyman system keyboard, the bottom of this menu will also display other enabled system keyboards that can be selected.
|
||||
* Long press the globe key to bring up the keyboard picker menu. On a Keyman system keyboard, the bottom of this menu will also display other enabled system keyboards that can be selected.
|
||||
|
||||
Note: On the lock screen, the keyboard picker menu is not displayed.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/input-processor",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/input-processor",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"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.211",
|
||||
"@keymanapp/resources-gosh": "^15.0.211",
|
||||
"@keymanapp/lexical-model-compiler": "^15.0.216",
|
||||
"@keymanapp/resources-gosh": "^15.0.216",
|
||||
"@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.211",
|
||||
"@keymanapp/lexical-model-layer": "^15.0.211",
|
||||
"@keymanapp/models-types": "^15.0.211",
|
||||
"@keymanapp/web-environment": "^15.0.211",
|
||||
"@keymanapp/web-utils": "^15.0.211",
|
||||
"@keymanapp/keyboard-processor": "^15.0.216",
|
||||
"@keymanapp/lexical-model-layer": "^15.0.216",
|
||||
"@keymanapp/models-types": "^15.0.216",
|
||||
"@keymanapp/web-environment": "^15.0.216",
|
||||
"@keymanapp/web-utils": "^15.0.216",
|
||||
"eventemitter3": "^4.0.0"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ if [ $FETCH_DEPS = true ]; then
|
|||
fi
|
||||
|
||||
# Ensures that the lexical model compiler has been built locally.
|
||||
echo "${TERM_HEADING}Preparing Lexical Model Compiler for test use${NORMAL}"
|
||||
echo_heading "Preparing Lexical Model Compiler for test use"
|
||||
pushd $WORKING_DIRECTORY/node_modules/@keymanapp/lexical-model-compiler
|
||||
npm run build
|
||||
popd
|
||||
|
|
@ -75,5 +75,5 @@ if [ $FETCH_DEPS = true ]; then
|
|||
fi
|
||||
|
||||
# Now we run our local tests.
|
||||
echo "${TERM_HEADING}Running Input Processor test suite${NORMAL}"
|
||||
echo_heading "Running Input Processor test suite"
|
||||
test-headless || fail "Input Processor tests failed!"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/keyboard-processor",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/keyboard-processor",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"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.211",
|
||||
"@keymanapp/resources-gosh": "^15.0.216",
|
||||
"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.211",
|
||||
"@keymanapp/web-environment": "^15.0.211",
|
||||
"@keymanapp/web-utils": "^15.0.211",
|
||||
"@keymanapp/models-types": "^15.0.216",
|
||||
"@keymanapp/web-environment": "^15.0.216",
|
||||
"@keymanapp/web-utils": "^15.0.216",
|
||||
"@types/node": "^11.9.4"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -421,16 +421,14 @@ namespace com.keyman.text {
|
|||
* Function _UpdateVKShift
|
||||
* Scope Private
|
||||
* @param {Object} e OSK event
|
||||
* @param {number} v keyboard shift state
|
||||
* @param {(boolean|number)} d set (1) or clear(0) shift state bits
|
||||
* @return {boolean} Always true
|
||||
* Description Updates the current shift state within KMW, updating the OSK's visualization thereof.
|
||||
*/
|
||||
_UpdateVKShift(e: KeyEvent, v: number, d: boolean|number): boolean {
|
||||
var keyShiftState=0, lockStates=0, i;
|
||||
_UpdateVKShift(e: KeyEvent): boolean {
|
||||
let keyShiftState=0;
|
||||
|
||||
var lockNames = ['CAPS', 'NUM_LOCK', 'SCROLL_LOCK'];
|
||||
var lockKeys = ['K_CAPS', 'K_NUMLOCK', 'K_SCROLL'];
|
||||
const lockNames = ['CAPS', 'NUM_LOCK', 'SCROLL_LOCK'];
|
||||
const lockKeys = ['K_CAPS', 'K_NUMLOCK', 'K_SCROLL'];
|
||||
|
||||
if(!this.activeKeyboard) {
|
||||
return true;
|
||||
|
|
@ -439,7 +437,6 @@ namespace com.keyman.text {
|
|||
if(e) {
|
||||
// read shift states from Pevent
|
||||
keyShiftState = e.Lmodifiers;
|
||||
lockStates = e.Lstates;
|
||||
|
||||
// Are we simulating AltGr? If it's a simulation and not real, time to un-simulate for the OSK.
|
||||
if(this.activeKeyboard.isChiral && (this.activeKeyboard.emulatesAltGr) &&
|
||||
|
|
@ -448,25 +445,10 @@ namespace com.keyman.text {
|
|||
keyShiftState &= ~Codes.modifierCodes['RALT'];
|
||||
}
|
||||
|
||||
for(i=0; i < lockNames.length; i++) {
|
||||
if(lockStates & Codes.stateBitmasks[lockNames[i]]) {
|
||||
this.stateKeys[lockKeys[i]] = !!(lockStates & Codes.modifierCodes[lockNames[i]]);
|
||||
}
|
||||
}
|
||||
} else if(d) {
|
||||
keyShiftState |= v;
|
||||
|
||||
for(i=0; i < lockNames.length; i++) {
|
||||
if(v & Codes.stateBitmasks[lockNames[i]]) {
|
||||
this.stateKeys[lockKeys[i]] = true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
keyShiftState &= ~v;
|
||||
|
||||
for(i=0; i < lockNames.length; i++) {
|
||||
if(v & Codes.stateBitmasks[lockNames[i]]) {
|
||||
this.stateKeys[lockKeys[i]] = false;
|
||||
// Set stateKeys where corresponding value is passed in e.Lstates
|
||||
for(let i=0; i < lockNames.length; i++) {
|
||||
if(e.Lstates & Codes.stateBitmasks[lockNames[i]]) {
|
||||
this.stateKeys[lockKeys[i]] = !!(e.Lstates & Codes.modifierCodes[lockNames[i]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -700,6 +682,13 @@ namespace com.keyman.text {
|
|||
this.layerId = 'default';
|
||||
}
|
||||
|
||||
if(keyEvent.device.formFactor != utils.FormFactor.Desktop) {
|
||||
// The caps layer works slightly differently on touch than on desktop.
|
||||
// It's a single layer with no ability to mix with other modifiers
|
||||
// We need to make sure that the state is kept in sync with the layer.
|
||||
this.stateKeys['K_CAPS'] = this.layerId == 'caps';
|
||||
}
|
||||
|
||||
let baseModifierState = text.KeyboardProcessor.getModifierState(this.layerId);
|
||||
this.modStateFlags = baseModifierState | keyEvent.Lstates;
|
||||
}
|
||||
|
|
@ -729,10 +718,10 @@ namespace com.keyman.text {
|
|||
// I3318 (always clear deadkeys after backspace)
|
||||
outputTarget.deadkeys().clear();
|
||||
} else if(KeyboardProcessor.isModifier(Levent)) {
|
||||
// For eventual integration - we bypass an OSK update for physical keystrokes when in touch mode.
|
||||
this.activeKeyboard.notify(Levent.Lcode, outputTarget, isKeyDown ? 1 : 0);
|
||||
// For eventual integration - we bypass an OSK update for physical keystrokes when in touch mode.
|
||||
if(!Levent.device.touchable) {
|
||||
return this._UpdateVKShift(Levent, Levent.Lcode-15, 1); // I2187
|
||||
return this._UpdateVKShift(Levent); // I2187
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -740,7 +729,7 @@ namespace com.keyman.text {
|
|||
|
||||
if(Levent.LmodifierChange) {
|
||||
this.activeKeyboard.notify(0, outputTarget, 1);
|
||||
this._UpdateVKShift(Levent, 0, 1);
|
||||
this._UpdateVKShift(Levent);
|
||||
}
|
||||
|
||||
// No modifier keypresses detected.
|
||||
|
|
@ -751,7 +740,7 @@ namespace com.keyman.text {
|
|||
this.layerId = 'default';
|
||||
|
||||
this.keyboardInterface.resetContextCache();
|
||||
this._UpdateVKShift(null, 15, 0);
|
||||
this._UpdateVKShift(null);
|
||||
};
|
||||
|
||||
setNumericLayer(device: utils.DeviceSpec) {
|
||||
|
|
|
|||
|
|
@ -64,6 +64,6 @@ pushd "$KEYMAN_ROOT/common/core/web/tools/recorder/src"
|
|||
popd
|
||||
|
||||
# Run headless (browserless) tests.
|
||||
echo "${TERM_HEADING}Running Keyboard Processor test suite${NORMAL}"
|
||||
echo_heading "Running Keyboard Processor test suite"
|
||||
test-headless || fail "Keyboard Processor tests failed!"
|
||||
|
||||
|
|
|
|||
2
common/core/web/tools/recorder/package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/recorder-core",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/recorder-core",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"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.211",
|
||||
"@keymanapp/models-types": "^15.0.211",
|
||||
"@keymanapp/web-environment": "^15.0.211",
|
||||
"@keymanapp/web-utils": "^15.0.211",
|
||||
"@keymanapp/keyboard-processor": "^15.0.216",
|
||||
"@keymanapp/models-types": "^15.0.216",
|
||||
"@keymanapp/web-environment": "^15.0.216",
|
||||
"@keymanapp/web-utils": "^15.0.216",
|
||||
"@types/node": "^11.9.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/web-sentry-manager",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/web-sentry-manager",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"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.211",
|
||||
"@keymanapp/web-environment": "^15.0.216",
|
||||
"@sentry/browser": "^5.27.4"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
2
common/core/web/utils/package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/web-utils",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/web-utils",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"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.211",
|
||||
"@keymanapp/web-environment": "^15.0.211",
|
||||
"@keymanapp/resources-gosh": "^15.0.216",
|
||||
"@keymanapp/web-environment": "^15.0.216",
|
||||
"@types/node": "^14.0.5",
|
||||
"typescript": "^3.8.3"
|
||||
}
|
||||
|
|
|
|||
2
common/models/templates/package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/models-templates",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/models-templates",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"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.211",
|
||||
"@keymanapp/web-utils": "^15.0.211",
|
||||
"@keymanapp/models-types": "^15.0.216",
|
||||
"@keymanapp/web-utils": "^15.0.216",
|
||||
"@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.211"
|
||||
"@keymanapp/models-wordbreakers": "^15.0.216"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
2
common/models/types/package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/models-types",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/models-types",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"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
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/models-wordbreakers",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/models-wordbreakers",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"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.211",
|
||||
"@keymanapp/models-types": "^15.0.216",
|
||||
"@types/chai": "^4.2.11",
|
||||
"@types/mocha": "^7.0.2",
|
||||
"chai": "^4.3.4",
|
||||
|
|
|
|||
2
common/predictive-text/package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/lexical-model-layer",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/lexical-model-layer",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"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.211",
|
||||
"@keymanapp/resources-gosh": "^15.0.211",
|
||||
"@keymanapp/models-types": "^15.0.216",
|
||||
"@keymanapp/resources-gosh": "^15.0.216",
|
||||
"@types/node": "^10.17.21",
|
||||
"chai": "^4.3.4",
|
||||
"karma": "^6.3.4",
|
||||
|
|
@ -46,10 +46,10 @@
|
|||
"typescript": "^3.8.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@keymanapp/models-templates": "^15.0.211",
|
||||
"@keymanapp/models-wordbreakers": "^15.0.211",
|
||||
"@keymanapp/web-environment": "^15.0.211",
|
||||
"@keymanapp/web-utils": "^15.0.211",
|
||||
"@keymanapp/models-templates": "^15.0.216",
|
||||
"@keymanapp/models-wordbreakers": "^15.0.216",
|
||||
"@keymanapp/web-environment": "^15.0.216",
|
||||
"@keymanapp/web-utils": "^15.0.216",
|
||||
"es6-shim": "^0.35.5",
|
||||
"string.prototype.codepointat": "^0.2.1",
|
||||
"string.prototype.startswith": "^0.2.0"
|
||||
|
|
|
|||
|
|
@ -1,33 +1,22 @@
|
|||
#! /bin/bash
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Compiles the Language Modeling Layer for common use in predictive text and autocorrective applications.
|
||||
# Designed for optimal compatibility with the Keyman Suite.
|
||||
#
|
||||
|
||||
## 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
|
||||
|
||||
display_usage ( ) {
|
||||
echo "build.sh [-clean]"
|
||||
echo
|
||||
echo " -clean to erase pre-existing build products before a re-build"
|
||||
}
|
||||
|
||||
# Fails the build if a specified file does not exist.
|
||||
assert ( ) {
|
||||
if ! [ -f $1 ]; then
|
||||
fail "Build failed."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Prints a nice, common error message.
|
||||
fail ( ) {
|
||||
FAILURE_MSG="$1"
|
||||
if [[ "$FAILURE_MSG" == "" ]]; then
|
||||
FAILURE_MSG="Unknown failure."
|
||||
fi
|
||||
echo "${ERROR_RED}$FAILURE_MSG${NORMAL}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
SOURCE="testing/one-stage-embedded-webworker"
|
||||
|
||||
echo "Node.js + dependencies check"
|
||||
|
|
|
|||
|
|
@ -1,33 +1,22 @@
|
|||
#! /bin/bash
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Compiles the Language Modeling Layer for common use in predictive text and autocorrective applications.
|
||||
# Designed for optimal compatibility with the Keyman Suite.
|
||||
#
|
||||
|
||||
## 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
|
||||
|
||||
display_usage ( ) {
|
||||
echo "build.sh [-clean]"
|
||||
echo
|
||||
echo " -clean to erase pre-existing build products before a re-build"
|
||||
}
|
||||
|
||||
# Fails the build if a specified file does not exist.
|
||||
assert ( ) {
|
||||
if ! [ -f $1 ]; then
|
||||
fail "Build failed."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Prints a nice, common error message.
|
||||
fail ( ) {
|
||||
FAILURE_MSG="$1"
|
||||
if [[ "$FAILURE_MSG" == "" ]]; then
|
||||
FAILURE_MSG="Unknown failure."
|
||||
fi
|
||||
echo "${ERROR_RED}$FAILURE_MSG${NORMAL}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
SOURCE="testing/two-stage-embedded-webworker"
|
||||
|
||||
COMPILED_WORKER="worker.js"
|
||||
|
|
|
|||
4
common/test/keyboards/.gitignore
vendored
|
|
@ -1 +1,3 @@
|
|||
*/build/
|
||||
*/build/
|
||||
*/*_source.zip
|
||||
index.html
|
||||
|
|
|
|||
148
common/test/keyboards/build.sh
Normal file → Executable file
|
|
@ -21,6 +21,9 @@ display_usage() {
|
|||
echo " --keyboard, -k Build only keyboards (not packages)"
|
||||
echo " --kmcomp path Specify path to kmcomp.exe, defaults"
|
||||
echo " to windows/bin/developer/kmcomp.exe"
|
||||
echo " --zip-source Create zip file for source of each"
|
||||
echo " keyboard for artifact tests"
|
||||
echo " --index Build index.html for artifact tests"
|
||||
echo
|
||||
echo "Targets (all unless specified):"
|
||||
|
||||
|
|
@ -37,6 +40,9 @@ QUIET=false
|
|||
DEBUG=false
|
||||
CLEAN=false
|
||||
KEYBOARDS_ONLY=false
|
||||
CUSTOM_KMCOMP=
|
||||
INDEX=false
|
||||
ZIPSOURCE=false
|
||||
KMCOMP="$KEYMAN_ROOT/windows/bin/developer/kmcomp.exe"
|
||||
TARGETS=()
|
||||
|
||||
|
|
@ -61,9 +67,16 @@ while [[ $# -gt 0 ]] ; do
|
|||
--keyboard|-k)
|
||||
KEYBOARDS_ONLY=true
|
||||
;;
|
||||
--zip-source)
|
||||
ZIPSOURCE=true
|
||||
;;
|
||||
--index)
|
||||
INDEX=true
|
||||
;;
|
||||
--kmcomp)
|
||||
shift
|
||||
KMCOMP="$1"
|
||||
CUSTOM_KMCOMP=true
|
||||
;;
|
||||
*)
|
||||
TARGETS+=("$key")
|
||||
|
|
@ -75,35 +88,35 @@ done
|
|||
# don't currently have a binary version of kmcomp available
|
||||
# during Linux and macOS builds, so that will need to be
|
||||
# manually sourced.
|
||||
KMCOMP_LAUNCHER=
|
||||
|
||||
case "${OSTYPE}" in
|
||||
"cygwin")
|
||||
KMCOMP_LAUNCHER=
|
||||
;;
|
||||
"msys")
|
||||
KMCOMP_LAUNCHER=
|
||||
;;
|
||||
"darwin"*)
|
||||
# For Catalina (10.15) onwards, must use wine64
|
||||
base_macos_ver=10.15
|
||||
macos_ver=$(sw_vers -productVersion)
|
||||
if verlt "$macos_ver" "$base_macos_ver"; then
|
||||
if ! $CUSTOM_KMCOMP; then
|
||||
case "${OSTYPE}" in
|
||||
"cygwin")
|
||||
;;
|
||||
"msys")
|
||||
;;
|
||||
"darwin"*)
|
||||
# For Catalina (10.15) onwards, must use wine64
|
||||
base_macos_ver=10.15
|
||||
macos_ver=$(sw_vers -productVersion)
|
||||
if verlt "$macos_ver" "$base_macos_ver"; then
|
||||
KMCOMP_LAUNCHER=wine
|
||||
else
|
||||
# On Catalina, and later versions:
|
||||
# wine-4.12.1 works; wine-5.0, wine-5.7 do not.
|
||||
# retrieve these from:
|
||||
# `brew tap gcenx/wine && brew install --cask --no-quarantine wine-crossover`
|
||||
# may also need to `sudo spctl --master-disable`
|
||||
KMCOMP_LAUNCHER=wine64
|
||||
KMCOMP="$(dirname $KMCOMP)/kmcomp.x64.exe"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
KMCOMP_LAUNCHER=wine
|
||||
else
|
||||
# On Catalina, and later versions:
|
||||
# wine-4.12.1 works; wine-5.0, wine-5.7 do not.
|
||||
# retrieve these from:
|
||||
# `brew tap gcenx/wine && brew install --cask --no-quarantine wine-crossover`
|
||||
# may also need to `sudo spctl --master-disable`
|
||||
KMCOMP_LAUNCHER=wine64
|
||||
KMCOMP="$(dirname $KMCOMP)/kmcomp.x64.exe"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
KMCOMP_LAUNCHER=wine
|
||||
;;
|
||||
esac
|
||||
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Build list of available targets from subfolders, if none specified
|
||||
if [ ${#TARGETS[@]} == 0 ]; then
|
||||
|
|
@ -120,22 +133,30 @@ if ! $QUIET; then
|
|||
"QUIET: $QUIET" \
|
||||
"KEYBOARDS_ONLY: $KEYBOARDS_ONLY" \
|
||||
"TARGETS: ${TARGETS[@]}" \
|
||||
"ZIPSOURCE: $ZIPSOURCE" \
|
||||
"INDEX: $INDEX" \
|
||||
""
|
||||
fi
|
||||
|
||||
clean() {
|
||||
local kpj="$1.kpj" ss=
|
||||
local kpj="$1.kpj" ss= s=
|
||||
if $QUIET; then
|
||||
ss=-ss
|
||||
s=-s
|
||||
fi
|
||||
pushd "$1" > /dev/null
|
||||
$KMCOMP_LAUNCHER "$KMCOMP" -c $ss "$kpj"
|
||||
if [ -f build.sh ]; then
|
||||
./build.sh -c $s
|
||||
else
|
||||
$KMCOMP_LAUNCHER "$KMCOMP" -c $ss "$kpj"
|
||||
fi
|
||||
popd > /dev/null
|
||||
}
|
||||
|
||||
build() {
|
||||
local kpj="$1.kpj" d= t= ss= target=
|
||||
local kpj="$1.kpj" d= t= ss= target= s= k=
|
||||
if $KEYBOARDS_ONLY; then
|
||||
k=-k
|
||||
t=-t
|
||||
target="$1.kmn"
|
||||
fi
|
||||
|
|
@ -143,12 +164,24 @@ build() {
|
|||
d=-d
|
||||
fi
|
||||
if $QUIET; then
|
||||
s=-s
|
||||
ss=-ss
|
||||
fi
|
||||
# -w - treat warnings as errors, we'll force this
|
||||
# -cfc - check filename conventions
|
||||
pushd "$1" > /dev/null
|
||||
$KMCOMP_LAUNCHER "$KMCOMP" $d $ss -w -cfc "$kpj" $t "$target"
|
||||
if [ -f build.sh ]; then
|
||||
./build.sh $d $k $s
|
||||
else
|
||||
$KMCOMP_LAUNCHER "$KMCOMP" $d $ss -w -cfc "$kpj" $t "$target"
|
||||
fi
|
||||
popd > /dev/null
|
||||
}
|
||||
|
||||
zipsource() {
|
||||
local target="$1"
|
||||
pushd "$1" > /dev/null
|
||||
7z a -r -x!build -x"!$target.kpj.user" "${target}_source.zip" .
|
||||
popd > /dev/null
|
||||
}
|
||||
|
||||
|
|
@ -156,16 +189,57 @@ build() {
|
|||
|
||||
for TARGET in "${TARGETS[@]}"; do
|
||||
if $CLEAN; then
|
||||
echo
|
||||
echo_heading "Cleaning target $TARGET"
|
||||
echo
|
||||
if ! $QUIET; then
|
||||
echo
|
||||
echo_heading "Cleaning target $TARGET"
|
||||
echo
|
||||
fi
|
||||
clean "$TARGET"
|
||||
else
|
||||
echo
|
||||
echo_heading "Building target $TARGET"
|
||||
echo
|
||||
if ! $QUIET; then
|
||||
echo
|
||||
echo_heading "Building target $TARGET"
|
||||
echo
|
||||
fi
|
||||
build "$TARGET"
|
||||
|
||||
if $ZIPSOURCE; then
|
||||
zipsource "$TARGET"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
###
|
||||
|
||||
if $INDEX; then
|
||||
if $CLEAN; then
|
||||
rm -f "$THIS_DIR/index.html"
|
||||
else
|
||||
cat << EOF > "$THIS_DIR/index.html"
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'>
|
||||
<title>Test Keyboards - $VERSION_WITH_TAG</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Test Keyboards - $VERSION_WITH_TAG</h1>
|
||||
<ul>
|
||||
EOF
|
||||
|
||||
for TARGET in "${TARGETS[@]}"; do
|
||||
if $ZIPSOURCE; then
|
||||
echo " <li><a href='$TARGET/build/$TARGET.kmp'>$TARGET.kmp</a> (<a href='$TARGET/${TARGET}_source.zip'>source</a>)</li>" >> "$THIS_DIR/index.html"
|
||||
else
|
||||
echo " <li><a href='$TARGET/build/$TARGET.kmp'>$TARGET.kmp</a></li>" >> "$THIS_DIR/index.html"
|
||||
fi
|
||||
done
|
||||
|
||||
cat << 'EOF' >> "$THIS_DIR/index.html"
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
EOF
|
||||
fi
|
||||
fi
|
||||
exit 0
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
c full_caps_3620_3621 generated from template at 2021-12-01 08:45:15
|
||||
c with name "full_caps_3620_3621"
|
||||
store(&VERSION) '10.0'
|
||||
store(&VERSION) '15.0'
|
||||
store(&NAME) 'full_caps_3620_3621'
|
||||
store(©RIGHT) '©'
|
||||
store(&KEYBOARDVERSION) '1.0'
|
||||
|
|
|
|||
36
common/test/keyboards/obolo_chwerty_6347/HISTORY.md
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
Obolo Chwerty Keyboard Change History
|
||||
====================
|
||||
|
||||
1.2.1 (2021-11-23)
|
||||
----------------
|
||||
* Removed accent key from numbers row on default layer, and from symbols row on shift layer.
|
||||
|
||||
1.2.0 (2021-07-05)
|
||||
----------------
|
||||
* Updated keycap for key 6 to match output on mobile shift layer, and added longpress for ^
|
||||
* Activated spacebar on layer alt for mobile/tablet layout
|
||||
* Updated documentation
|
||||
* Miscellaneous minor updates
|
||||
|
||||
1.1.2 (2021-02-04)
|
||||
----------------
|
||||
* Updated output for keys CH and SH on SHIFT layer to match key cap on touchscreen and desktop.
|
||||
* Resolved capslock issue for keys CH, SH, Ọ and N̄ on desktop.
|
||||
* Added long press on touchscreen for frequently used accented letters.
|
||||
* Added the Naira sign (₦) and Ñ (an alternative where software cannot render N̄ well, though Ñ is not part of the Obolo orthography.)
|
||||
|
||||
1.1.1 (2020-10-27)
|
||||
----------------
|
||||
* Increment version number to force recompile of touch layout
|
||||
|
||||
1.1 (2020-07-07)
|
||||
----------------
|
||||
* Moved the high tone (which is not required, except in primers) to long press on low tone button (for touchscreen).
|
||||
* Changed backspace behavior for ch, sh, n̄.
|
||||
* Added long press for Q, H, X and C keys on touchscreen.
|
||||
* Added hyphen-dash (a frequently used mark) to default and shift layers for touchscreen.
|
||||
* Fixed typo and omissions in documentation.
|
||||
|
||||
1.0 (2019-07-20)
|
||||
----------------
|
||||
* Created by Rogers Katelem Edeh
|
||||
21
common/test/keyboards/obolo_chwerty_6347/LICENSE.md
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
© 2019 - 2021 Rogers Katelem Edeh
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
36
common/test/keyboards/obolo_chwerty_6347/README.md
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
Obolo Chwerty keyboard
|
||||
==============
|
||||
|
||||
© 2019 - 2021 Rogers Katelem Edeh
|
||||
|
||||
Version 1.2.0
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
NOTE: This keyboard has been modified from the original for the purposes of testing https://github.com/keymanapp/keyman/issues/6347. It is not intended to be used for general purposes, and is not the final release version. Changes made:
|
||||
|
||||
* Files renamed
|
||||
* Font and PHP help have been removed (reduce distribution size)
|
||||
|
||||
Obolo Chwerty Keyboard is a keyboard layout for the Obolo language of Nigeria. This layout covers the need of every dialect in that language.
|
||||
On this keyboard, accents are typed after the base letters. So, to type Obolo language, simply tap the given latters and tap the appropriate accent key to place the accent on the letter.
|
||||
|
||||
Links
|
||||
-----
|
||||
https://keyman.com/keyboards/obolo_chwerty
|
||||
|
||||
Supported Platforms
|
||||
-------------------
|
||||
* Windows
|
||||
* macOS
|
||||
* Linux
|
||||
* Web
|
||||
* iPhone
|
||||
* iPad
|
||||
* Android phone
|
||||
* Android tablet
|
||||
* Mobile devices
|
||||
* Desktop devices
|
||||
* Tablet devices
|
||||
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"license": "mit",
|
||||
"languages": [
|
||||
"ann-Latn"
|
||||
],
|
||||
"description": "Obolo Chwerty Keyboard: A keyboard layout for the Obolo language of Nigeria. It covers the need of every dialect in that language"
|
||||
}
|
||||
183
common/test/keyboards/obolo_chwerty_6347/obolo_chwerty_6347.kpj
Normal file
|
|
@ -0,0 +1,183 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<KeymanDeveloperProject>
|
||||
<Options>
|
||||
<BuildPath>$PROJECTPATH\build</BuildPath>
|
||||
<CompilerWarningsAsErrors>True</CompilerWarningsAsErrors>
|
||||
<WarnDeprecatedCode>True</WarnDeprecatedCode>
|
||||
<CheckFilenameConventions>True</CheckFilenameConventions>
|
||||
<ProjectType>keyboard</ProjectType>
|
||||
</Options>
|
||||
<Files>
|
||||
<File>
|
||||
<ID>id_e2041c991cdc20c570b342a5803447b0</ID>
|
||||
<Filename>obolo_chwerty_6347.kmn</Filename>
|
||||
<Filepath>source\obolo_chwerty_6347.kmn</Filepath>
|
||||
<FileVersion>1.2.1</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
<Details>
|
||||
<Name>Obolo Chwerty</Name>
|
||||
<Copyright>© 2019-2022 Rogers Katelem Edeh</Copyright>
|
||||
<Message>A keyboard layout (chwerty) for the Obolo language of Nigeria. The keyboard covers the need of every dialect in that language.</Message>
|
||||
</Details>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_4ed7acb803d5177bff445780f774fdb3</ID>
|
||||
<Filename>obolo_chwerty_6347.kps</Filename>
|
||||
<Filepath>source\obolo_chwerty_6347.kps</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.kps</FileType>
|
||||
<Details>
|
||||
<Name>Obolo Chwerty</Name>
|
||||
<Copyright>© 2019-2022 Rogers Katelem Edeh</Copyright>
|
||||
</Details>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_ede98e4633e239f933cbfd1f4e1b766c</ID>
|
||||
<Filename>HISTORY.md</Filename>
|
||||
<Filepath>HISTORY.md</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.md</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_53e892b8b41cc4caece1cfd5ef21d6e7</ID>
|
||||
<Filename>LICENSE.md</Filename>
|
||||
<Filepath>LICENSE.md</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.md</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_0730bb7c2e8f9ea2438b52e419dd86c9</ID>
|
||||
<Filename>README.md</Filename>
|
||||
<Filepath>README.md</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.md</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_fa9ac62e52c7671ac61602e3583305fd</ID>
|
||||
<Filename>obolo_chwerty_6347.keyboard_info</Filename>
|
||||
<Filepath>obolo_chwerty_6347.keyboard_info</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.keyboard_info</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_ef2a383b75a0364689701ecbf2f6fefa</ID>
|
||||
<Filename>obolo_chwerty_6347.ico</Filename>
|
||||
<Filepath>source\obolo_chwerty_6347.ico</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.ico</FileType>
|
||||
<ParentFileID>id_e2041c991cdc20c570b342a5803447b0</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_fa2b1b4a5977c1283d061d23611709ef</ID>
|
||||
<Filename>obolo_chwerty_6347.kvk</Filename>
|
||||
<Filepath>source\..\build\obolo_chwerty_6347.kvk</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.kvk</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_13adcc1b6b8e23edd35cfc6ab7c245b0</ID>
|
||||
<Filename>obolo_chwerty_6347.kmx</Filename>
|
||||
<Filepath>source\..\build\obolo_chwerty_6347.kmx</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.kmx</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_3ec4dad3d83c69fc4b33eb86d401d8cb</ID>
|
||||
<Filename>obolo_chwerty_6347.js</Filename>
|
||||
<Filepath>source\..\build\obolo_chwerty_6347.js</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.js</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_f6212220adf6c5eb0ae25c33cb973c64</ID>
|
||||
<Filename>chwerty_default.png</Filename>
|
||||
<Filepath>source\welcome\chwerty_default.png</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.png</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_cd62e578000692c9966c069950904d06</ID>
|
||||
<Filename>chwerty_keycombi.png</Filename>
|
||||
<Filepath>source\welcome\chwerty_keycombi.png</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.png</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_2d29737f21e65a75ca98a9c3ab1f4a6f</ID>
|
||||
<Filename>chwerty_mobi_alt.png</Filename>
|
||||
<Filepath>source\welcome\chwerty_mobi_alt.png</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.png</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_2d856489cc6083c4b74a1b8c2b528785</ID>
|
||||
<Filename>chwerty_mobi_default.png</Filename>
|
||||
<Filepath>source\welcome\chwerty_mobi_default.png</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.png</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_ee5bdb44f34cd08e1c6012f91790c302</ID>
|
||||
<Filename>chwerty_mobi_shift.png</Filename>
|
||||
<Filepath>source\welcome\chwerty_mobi_shift.png</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.png</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_743e9cd02f1d4004a5320b9faa355587</ID>
|
||||
<Filename>chwerty_shift.png</Filename>
|
||||
<Filepath>source\welcome\chwerty_shift.png</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.png</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_a81a3f903e8ce052259e09e4a6fbabb0</ID>
|
||||
<Filename>chwertyftkey1.png</Filename>
|
||||
<Filepath>source\welcome\chwertyftkey1.png</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.png</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_cb8167846a4ac07edd78e5a39a7cc587</ID>
|
||||
<Filename>chwertyftkey2.png</Filename>
|
||||
<Filepath>source\welcome\chwertyftkey2.png</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.png</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_7325a11eaf4f66357aa7185056091802</ID>
|
||||
<Filename>chwertyftkey3.png</Filename>
|
||||
<Filepath>source\welcome\chwertyftkey3.png</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.png</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_724e5b4c63f10bc0abf7077f7c3172fc</ID>
|
||||
<Filename>welcome.htm</Filename>
|
||||
<Filepath>source\welcome\welcome.htm</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.htm</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_8da344c4cea6f467013357fe099006f5</ID>
|
||||
<Filename>readme.htm</Filename>
|
||||
<Filepath>source\readme.htm</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.htm</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
</Files>
|
||||
</KeymanDeveloperProject>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
/* tone keys colour */
|
||||
.android .kmw-keyboard-obolo_chwerty_6347 #default-T_GRV {color: #02ff02;}
|
||||
.android .kmw-keyboard-obolo_chwerty_6347 #default-T_CCM {color: #02ff02;}
|
||||
.android .kmw-keyboard-obolo_chwerty_6347 #shift-T_GRV {color: #02ff02;}
|
||||
.android .kmw-keyboard-obolo_chwerty_6347 #shift-T_CCM {color: #02ff02;}
|
||||
.android .kmw-keyboard-obolo_chwerty_6347 #caps-T_GRV {color: #02ff02;}
|
||||
.android .kmw-keyboard-obolo_chwerty_6347 #caps-T_CCM {color: #02ff02;}
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
|
|
@ -0,0 +1,254 @@
|
|||
store(&VERSION) '15.0'
|
||||
store(&NAME) 'Obolo Chwerty #6347'
|
||||
store(©RIGHT) '© 2019-2022 Rogers Katelem Edeh'
|
||||
store(&TARGETS) 'any'
|
||||
store(&VISUALKEYBOARD) 'obolo_chwerty_6347.kvks'
|
||||
store(&LAYOUTFILE) 'obolo_chwerty_6347.keyman-touch-layout'
|
||||
store(&BITMAP) 'obolo_chwerty_6347.ico'
|
||||
store(&MESSAGE) 'A keyboard layout (chwerty) for the Obolo language of Nigeria. The keyboard covers the need of every dialect in that language.'
|
||||
store(&KMW_HELPTEXT) 'A simple keyboard layout (chwerty) to help you type very easily in Obolo language.'
|
||||
store(&KEYBOARDVERSION) '1.2.1'
|
||||
store(&KMW_EMBEDCSS) 'obolo_chwerty_6347.css'
|
||||
|
||||
begin Unicode > use(main)
|
||||
begin NewContext > use(NewContext)
|
||||
begin PostKeystroke > use(PostKeystroke)
|
||||
|
||||
c store(capskeys) [CAPS K_A] [CAPS K_B] [CAPS K_C] [CAPS K_D] [CAPS K_E] [CAPS K_F] [CAPS K_G] [CAPS K_H] [CAPS K_I] [CAPS K_J] [CAPS K_K] [CAPS K_L] [CAPS K_M] [CAPS K_N] [CAPS K_O] [CAPS K_P] [CAPS K_Q] [CAPS K_R] [CAPS K_S] [CAPS K_T] [CAPS K_U] [CAPS K_V] [CAPS K_W] [CAPS K_X] [CAPS K_Y] [CAPS K_Z]
|
||||
c store(caps) 'A' 'B' 'N̄' 'D' 'E' 'F' 'G' 'SH' 'I' 'J' 'K' 'L' 'M' 'N' 'O' 'P' 'CH' 'R' 'S' 'T' 'U' 'V' 'W' 'Ọ' 'Y' 'Z'
|
||||
store(digit) '0'..'9'
|
||||
|
||||
group(NewContext) readonly
|
||||
nomatch > use(detectStartOfSentence)
|
||||
group(PostKeystroke) readonly
|
||||
if(&layerChanged = "0") if(&layer = 'numeric') any(digit) > context
|
||||
if(&layer = 'caps') > context
|
||||
if(&layerChanged = "0") > use(detectStartOfSentence)
|
||||
group(detectStartOfSentence) readonly
|
||||
store(sentencePunctuation) '.?!‽'
|
||||
nul > layer('shift')
|
||||
any(sentencePunctuation) ' ' > layer('shift')
|
||||
any(sentencePunctuation) ' ' > layer('shift')
|
||||
nomatch > layer('default')
|
||||
c group(main) using keys
|
||||
c + any(key) > index(out, 1)
|
||||
|
||||
store(accentibles) 'aeiọoumnAEIỌOUMNn̄'
|
||||
store(accents) [T_GRV] [T_ACU] [T_CCM] [T_CRN] [SHIFT T_GRV] [SHIFT T_ACU] [SHIFT T_CCM] [SHIFT T_CRN] [CAPS T_GRV] [CAPS T_ACU] [CAPS T_CCM] [CAPS T_CRN] c [K_BKQUOTE] [K_BKSLASH]
|
||||
store(nasals) 'mnMN'
|
||||
store(nnas) [NCAPS T_CCM] [NCAPS T_CRN] [SHIFT NCAPS T_CCM] [SHIFT NCAPS T_CRN] [CAPS T_CCM] [CAPS T_CRN] c [K_BKSLASH] [SHIFT K_BKSLASH]
|
||||
store(vow) 'aeiouAEIOU'
|
||||
store(grave) 'àèìòùÀÈÌÒÙ'
|
||||
store(acute) 'áéíóúÁÉÍÓÚ'
|
||||
store(circum) 'âêîôûÂÊÎÔÛ'
|
||||
store(caron) 'ǎěǐǒǔǍĚǏǑǓ'
|
||||
store(acnasals) 'ḿńḾŃ'
|
||||
store(spguy) 'mnọMNỌ'
|
||||
store(spguyop) 'ḿǹộḾǸỘ'
|
||||
store(erase) [NCAPS K_BKSP] [NCAPS SHIFT K_BKSP] [CAPS K_BKSP] [NCAPS ALT K_BKSP]
|
||||
store(gravekeys) [NCAPS T_GRV] [SHIFT NCAPS T_GRV] [CAPS T_GRV] [K_BKQUOTE]
|
||||
store(acutekeys) [NCAPS T_ACU] [SHIFT NCAPS T_ACU] [CAPS T_ACU] [SHIFT K_BKQUOTE]
|
||||
store(circumflexkeys) [NCAPS T_CCM] [SHIFT NCAPS T_CCM] [CAPS T_CCM] [K_BKSLASH]
|
||||
store(caronkeys) [NCAPS T_CRN] [SHIFT NCAPS T_CRN] [CAPS T_CRN] [SHIFT K_BKSLASH]
|
||||
|
||||
group(main) using keys
|
||||
|
||||
c + any(capskeys) > index(caps, 1) c by self to solve caps
|
||||
|
||||
+ [NCAPS T_ENG] > dk(1)
|
||||
+ [SHIFT NCAPS T_ENG] > dk(2)
|
||||
+ [CAPS T_ENG] > dk(3)
|
||||
|
||||
c caps
|
||||
+ [CAPS K_A] > 'A'
|
||||
+ [CAPS K_B] > 'B'
|
||||
+ [CAPS K_D] > 'D'
|
||||
+ [CAPS K_E] > 'E'
|
||||
+ [CAPS K_F] > 'F'
|
||||
+ [CAPS K_G] > 'G'
|
||||
+ [CAPS K_I] > 'I'
|
||||
+ [CAPS K_J] > 'J'
|
||||
+ [CAPS K_K] > 'K'
|
||||
+ [CAPS K_L] > 'L'
|
||||
+ [CAPS K_M] > 'M'
|
||||
+ [CAPS K_N] > 'N'
|
||||
+ [CAPS K_O] > 'O'
|
||||
+ [CAPS K_P] > 'P'
|
||||
+ [CAPS K_R] > 'R'
|
||||
+ [CAPS K_S] > 'S'
|
||||
+ [CAPS K_T] > 'T'
|
||||
+ [CAPS K_U] > 'U'
|
||||
+ [CAPS K_V] > 'V'
|
||||
+ [CAPS K_W] > 'W'
|
||||
+ [CAPS K_Y] > 'Y'
|
||||
+ [CAPS K_Z] > 'Z'
|
||||
|
||||
+ [CAPS K_Q] > 'CH'
|
||||
+ [CAPS K_H] > 'SH'
|
||||
+ [CAPS K_X] > 'Ọ'
|
||||
+ [CAPS K_C] > 'N̄'
|
||||
|
||||
+ [NCAPS K_Q] > 'ch'
|
||||
+ [NCAPS K_H] > 'sh'
|
||||
+ [NCAPS K_X] > 'ọ'
|
||||
+ [NCAPS K_C] > 'n̄'
|
||||
|
||||
+ [SHIFT CAPS K_Q] > 'Ch'
|
||||
+ [SHIFT CAPS K_H] > 'Sh'
|
||||
+ [SHIFT CAPS K_X] > 'ọ'
|
||||
+ [SHIFT CAPS K_C] > 'n̄'
|
||||
|
||||
+ [SHIFT NCAPS K_Q] > 'Ch'
|
||||
+ [SHIFT NCAPS K_H] > 'Sh'
|
||||
+ [SHIFT NCAPS K_X] > 'Ọ'
|
||||
+ [SHIFT NCAPS K_C] > 'N̄'
|
||||
|
||||
+ [SHIFT K_6] > '₦'
|
||||
|
||||
c (for touch layout)
|
||||
+ [NCAPS T_Q] > 'ch'
|
||||
+ [NCAPS SHIFT T_Q] > 'Ch'
|
||||
+ [CAPS T_Q] > 'CH'
|
||||
|
||||
+ [NCAPS T_H] > 'sh'
|
||||
+ [NCAPS SHIFT T_H] > 'Sh'
|
||||
+ [CAPS T_H] > 'SH'
|
||||
|
||||
+ [NCAPS T_X] > 'ọ'
|
||||
+ [NCAPS SHIFT T_X] > 'Ọ'
|
||||
+ [CAPS T_X] > 'Ọ'
|
||||
|
||||
+ [NCAPS T_C] > 'n̄'
|
||||
+ [NCAPS SHIFT T_C] > 'N̄'
|
||||
+ [CAPS T_C] > 'N̄'
|
||||
|
||||
c for mobile longpress
|
||||
c + [SHIFT T_MWG] > 'M̀'
|
||||
c + [T_MWG] > 'm̀'
|
||||
c + [SHIFT T_ORWG] > 'Ọ̀'
|
||||
c + [T_ORWG] > 'ọ̀'
|
||||
|
||||
|
||||
c English equivalent (for desktop)
|
||||
']' + [CAPS K_C] > 'C'
|
||||
']' + [NCAPS K_C] > 'c'
|
||||
']' + [SHIFT NCAPS K_C] > 'C'
|
||||
']' + [SHIFT CAPS K_C] > 'c'
|
||||
|
||||
']' + [CAPS K_X] > 'X'
|
||||
']' + [NCAPS K_X] > 'x'
|
||||
']' + [SHIFT NCAPS K_X] > 'X'
|
||||
']' + [SHIFT CAPS K_X] > 'x'
|
||||
|
||||
']' + [CAPS K_H] > 'H'
|
||||
']' + [NCAPS K_H] > 'h'
|
||||
']' + [SHIFT NCAPS K_H] > 'H'
|
||||
']' + [SHIFT CAPS K_H] > 'h'
|
||||
|
||||
']' + [CAPS K_Q] > 'Q'
|
||||
']' + [NCAPS K_Q] > 'q'
|
||||
']' + [NCAPS SHIFT K_Q] > 'Q'
|
||||
']' + [SHIFT CAPS K_Q] > 'q'
|
||||
|
||||
']' + [SHIFT K_6] > '^'
|
||||
|
||||
c space modifier accents
|
||||
']' + [K_BKQUOTE] > "`"
|
||||
']' + [SHIFT K_BKQUOTE] > "´"
|
||||
|
||||
']' + [K_BKSLASH] > "ˆ"
|
||||
']' + [SHIFT K_BKSLASH] > "ˇ"
|
||||
|
||||
c English equivalent (for touch layout)
|
||||
dk(1) + [NCAPS T_Q] > 'q'
|
||||
dk(2) + [NCAPS SHIFT T_Q] > 'Q'
|
||||
dk(3) + [CAPS T_Q] > 'Q'
|
||||
|
||||
dk(1) + [NCAPS T_H] > 'h'
|
||||
dk(2) + [SHIFT NCAPS T_H] > 'H'
|
||||
dk(3) + [CAPS T_H] > 'H'
|
||||
|
||||
dk(1) + [NCAPS T_X] > 'x'
|
||||
dk(2) + [SHIFT NCAPS T_X] > 'X'
|
||||
dk(3) + [CAPS T_X] > 'X'
|
||||
|
||||
dk(1) + [NCAPS T_C] > 'c'
|
||||
dk(2) + [SHIFT NCAPS T_C] > 'C'
|
||||
dk(3) + [CAPS T_C] > 'C'
|
||||
|
||||
dk(1) + [NCAPS K_S] > 'ṣ'
|
||||
dk(2) + [SHIFT NCAPS K_S] > 'Ṣ'
|
||||
dk(3) + [CAPS K_S] > 'Ṣ'
|
||||
|
||||
c deadkey for tones (touch layout only)
|
||||
dk(1) + [NCAPS T_GRV] > "`"
|
||||
dk(2) + [SHIFT NCAPS T_GRV] > "`"
|
||||
dk(3) + [CAPS T_GRV] > "`"
|
||||
|
||||
dk(1) + [NCAPS T_ACU] > "´"
|
||||
dk(2) + [SHIFT NCAPS T_ACU] > "´"
|
||||
dk(3) + [CAPS T_ACU] > "´"
|
||||
|
||||
dk(1) + [NCAPS T_CCM] > "ˆ"
|
||||
dk(2) + [SHIFT NCAPS T_CCM] > "ˆ"
|
||||
dk(3) + [CAPS T_CCM] > "ˆ"
|
||||
|
||||
dk(1) + [NCAPS T_CRN] > "ˇ"
|
||||
dk(2) + [SHIFT NCAPS T_CRN] > "ˇ"
|
||||
dk(3) + [CAPS T_CRN] > "ˇ"
|
||||
|
||||
dk(1) + [NCAPS K_HYPHEN] > "¯"
|
||||
dk(2) + [SHIFT NCAPS K_HYPHEN] > "¯"
|
||||
dk(3) + [CAPS K_HYPHEN] > "¯"
|
||||
|
||||
c make up for
|
||||
'm' + any(gravekeys) > 'm̀'
|
||||
'M' + any(gravekeys) > 'M̀'
|
||||
|
||||
'n' + any(gravekeys) > 'ǹ'
|
||||
'N' + any(gravekeys) > 'Ǹ'
|
||||
|
||||
'ọ' + any(gravekeys) > 'ọ̀'
|
||||
'Ọ' + any(gravekeys) > 'Ọ̀'
|
||||
|
||||
'ọ' + any(acutekeys) > 'ọ́'
|
||||
'Ọ' + any(acutekeys) > 'Ọ́'
|
||||
|
||||
'ọ' + any(circumflexkeys) > 'ộ'
|
||||
'Ọ' + any(circumflexkeys) > 'Ộ'
|
||||
|
||||
'ọ' + any(caronkeys) > 'ọ̌'
|
||||
'Ọ' + any(caronkeys) > 'Ọ̌'
|
||||
|
||||
'n̄' + [K_BKSLASH] > 'ñ'
|
||||
'N̄' + [K_BKSLASH] > 'Ñ'
|
||||
|
||||
's' + [K_BKSLASH] > 'ṣ'
|
||||
'S' + [K_BKSLASH] > 'Ṣ'
|
||||
|
||||
c any and index
|
||||
any(vow) + any(gravekeys) > index(grave,1)
|
||||
any(vow) + any(acutekeys) > index(acute,1)
|
||||
any(vow) + any(circumflexkeys) > index(circum,1)
|
||||
any(vow) + any(caronkeys) > index(caron,1)
|
||||
any(nasals) + any(acutekeys) > index(acnasals,1)
|
||||
|
||||
c change backspace behaviour for special diagraphs
|
||||
'ch' + any(erase) > nul
|
||||
'Ch' + any(erase) > nul
|
||||
'CH' + any(erase) > nul
|
||||
'sh' + any(erase) > nul
|
||||
'Sh' + any(erase) > nul
|
||||
'SH' + any(erase) > nul
|
||||
'n̄' + any(erase) > nul
|
||||
'N̄' + any(erase) > nul
|
||||
|
||||
c virtual keys
|
||||
any(grave) + any(erase) > index(vow,1)
|
||||
any(acute) + any(erase) > index(vow,1)
|
||||
any(circum) + any(erase) > index(vow,1)
|
||||
any(caron) + any(erase) > index(vow,1)
|
||||
any(spguyop) + any(erase) > index(spguy,1)
|
||||
|
||||
any(nasals) + any(nnas) > context beep c prevent certain accents on nasal consonants
|
||||
c notany(accentibles) + any(accents) > context beep c prevent diacritics (stacking, on empty space, and plain consonants)
|
||||
|
|
@ -0,0 +1,121 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Package>
|
||||
<System>
|
||||
<KeymanDeveloperVersion>15.0.206.0</KeymanDeveloperVersion>
|
||||
<FileVersion>7.0</FileVersion>
|
||||
</System>
|
||||
<Options>
|
||||
<ExecuteProgram></ExecuteProgram>
|
||||
<ReadMeFile>readme.htm</ReadMeFile>
|
||||
<MSIFileName></MSIFileName>
|
||||
<MSIOptions></MSIOptions>
|
||||
<FollowKeyboardVersion/>
|
||||
</Options>
|
||||
<StartMenu>
|
||||
<Folder></Folder>
|
||||
<Items/>
|
||||
</StartMenu>
|
||||
<Info>
|
||||
<Version URL=""></Version>
|
||||
<Name URL="">Obolo Chwerty</Name>
|
||||
<Copyright URL="">© 2019-2022 Rogers Katelem Edeh</Copyright>
|
||||
<Author URL="">Rogers Katelem Edeh</Author>
|
||||
</Info>
|
||||
<Files>
|
||||
<File>
|
||||
<Name>..\build\obolo_chwerty_6347.kvk</Name>
|
||||
<Description>File obolo_chwerty_6347.kvk</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.kvk</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>..\build\obolo_chwerty_6347.kmx</Name>
|
||||
<Description>Keyboard Obolo Chwerty</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.kmx</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>..\build\obolo_chwerty_6347.js</Name>
|
||||
<Description>File obolo_chwerty_6347.js</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.js</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\chwerty_default.png</Name>
|
||||
<Description>File chwerty_default.png</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.png</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\chwerty_keycombi.png</Name>
|
||||
<Description>File chwerty_keycombi.png</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.png</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\chwerty_mobi_alt.png</Name>
|
||||
<Description>File chwerty_mobi_alt.png</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.png</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\chwerty_mobi_default.png</Name>
|
||||
<Description>File chwerty_mobi_default.png</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.png</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\chwerty_mobi_shift.png</Name>
|
||||
<Description>File chwerty_mobi_shift.png</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.png</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\chwerty_shift.png</Name>
|
||||
<Description>File chwerty_shift.png</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.png</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\chwertyftkey1.png</Name>
|
||||
<Description>File chwertyftkey1.png</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.png</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\chwertyftkey2.png</Name>
|
||||
<Description>File chwertyftkey2.png</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.png</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\chwertyftkey3.png</Name>
|
||||
<Description>File chwertyftkey3.png</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.png</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\welcome.htm</Name>
|
||||
<Description>File welcome.htm</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.htm</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>readme.htm</Name>
|
||||
<Description>File readme.htm</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.htm</FileType>
|
||||
</File>
|
||||
</Files>
|
||||
<Keyboards>
|
||||
<Keyboard>
|
||||
<Name>Obolo Chwerty</Name>
|
||||
<ID>obolo_chwerty</ID>
|
||||
<Version>1.2.1</Version>
|
||||
<Languages>
|
||||
<Language ID="ann-Latn">Obolo (Andoni)</Language>
|
||||
</Languages>
|
||||
</Keyboard>
|
||||
</Keyboards>
|
||||
<Strings/>
|
||||
</Package>
|
||||
|
|
@ -0,0 +1,114 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<visualkeyboard>
|
||||
<header>
|
||||
<version>10.0</version>
|
||||
<kbdname>obolo_chwerty</kbdname>
|
||||
<flags>
|
||||
<key102/>
|
||||
</flags>
|
||||
</header>
|
||||
<encoding name="unicode" fontname="Tahoma" fontsize="12">
|
||||
<layer shift="">
|
||||
<key vkey="K_oDF">`</key>
|
||||
<key vkey="K_1">1</key>
|
||||
<key vkey="K_2">2</key>
|
||||
<key vkey="K_3">3</key>
|
||||
<key vkey="K_4">4</key>
|
||||
<key vkey="K_5">5</key>
|
||||
<key vkey="K_6">6</key>
|
||||
<key vkey="K_7">7</key>
|
||||
<key vkey="K_8">8</key>
|
||||
<key vkey="K_9">9</key>
|
||||
<key vkey="K_0">0</key>
|
||||
<key vkey="K_HYPHEN">-</key>
|
||||
<key vkey="K_EQUAL">=</key>
|
||||
<key vkey="K_Q">ch</key>
|
||||
<key vkey="K_W">w</key>
|
||||
<key vkey="K_E">e</key>
|
||||
<key vkey="K_R">r</key>
|
||||
<key vkey="K_T">t</key>
|
||||
<key vkey="K_Y">y</key>
|
||||
<key vkey="K_U">u</key>
|
||||
<key vkey="K_I">i</key>
|
||||
<key vkey="K_O">o</key>
|
||||
<key vkey="K_P">p</key>
|
||||
<key vkey="K_LBRKT">[</key>
|
||||
<key vkey="K_RBRKT">]</key>
|
||||
<key vkey="K_A">a</key>
|
||||
<key vkey="K_S">s</key>
|
||||
<key vkey="K_D">d</key>
|
||||
<key vkey="K_F">f</key>
|
||||
<key vkey="K_G">g</key>
|
||||
<key vkey="K_H">sh</key>
|
||||
<key vkey="K_J">j</key>
|
||||
<key vkey="K_K">k</key>
|
||||
<key vkey="K_L">l</key>
|
||||
<key vkey="K_COLON">;</key>
|
||||
<key vkey="K_BKQUOTE">`</key>
|
||||
<key vkey="K_Z">z</key>
|
||||
<key vkey="K_X">ọ</key>
|
||||
<key vkey="K_C">n̄</key>
|
||||
<key vkey="K_V">v</key>
|
||||
<key vkey="K_B">b</key>
|
||||
<key vkey="K_N">n</key>
|
||||
<key vkey="K_M">m</key>
|
||||
<key vkey="K_COMMA">,</key>
|
||||
<key vkey="K_PERIOD">.</key>
|
||||
<key vkey="K_SLASH">/</key>
|
||||
<key vkey="K_SPACE"></key>
|
||||
<key vkey="K_QUOTE">'</key>
|
||||
<key vkey="K_BKSLASH">\ˆ</key>
|
||||
</layer>
|
||||
<layer shift="S">
|
||||
<key vkey="K_oDF">¬</key>
|
||||
<key vkey="K_1">!</key>
|
||||
<key vkey="K_2">@</key>
|
||||
<key vkey="K_3">#</key>
|
||||
<key vkey="K_4">$</key>
|
||||
<key vkey="K_5">%</key>
|
||||
<key vkey="K_7">&</key>
|
||||
<key vkey="K_8">*</key>
|
||||
<key vkey="K_9">(</key>
|
||||
<key vkey="K_0">)</key>
|
||||
<key vkey="K_HYPHEN">_</key>
|
||||
<key vkey="K_EQUAL">+</key>
|
||||
<key vkey="K_Q">CH</key>
|
||||
<key vkey="K_W">W</key>
|
||||
<key vkey="K_E">E</key>
|
||||
<key vkey="K_R">R</key>
|
||||
<key vkey="K_T">T</key>
|
||||
<key vkey="K_Y">Y</key>
|
||||
<key vkey="K_U">U</key>
|
||||
<key vkey="K_I">I</key>
|
||||
<key vkey="K_O">O</key>
|
||||
<key vkey="K_P">P</key>
|
||||
<key vkey="K_LBRKT">{</key>
|
||||
<key vkey="K_RBRKT">}</key>
|
||||
<key vkey="K_QUOTE">"</key>
|
||||
<key vkey="K_A">A</key>
|
||||
<key vkey="K_S">S</key>
|
||||
<key vkey="K_D">D</key>
|
||||
<key vkey="K_F">F</key>
|
||||
<key vkey="K_G">G</key>
|
||||
<key vkey="K_H">SH</key>
|
||||
<key vkey="K_J">J</key>
|
||||
<key vkey="K_K">K</key>
|
||||
<key vkey="K_L">L</key>
|
||||
<key vkey="K_COLON">:</key>
|
||||
<key vkey="K_Z">Z</key>
|
||||
<key vkey="K_X">Ọ</key>
|
||||
<key vkey="K_C">N̄</key>
|
||||
<key vkey="K_V">V</key>
|
||||
<key vkey="K_B">B</key>
|
||||
<key vkey="K_N">N</key>
|
||||
<key vkey="K_M">M</key>
|
||||
<key vkey="K_COMMA"><</key>
|
||||
<key vkey="K_PERIOD">></key>
|
||||
<key vkey="K_SLASH">?</key>
|
||||
<key vkey="K_SPACE"></key>
|
||||
<key vkey="K_BKQUOTE">~´</key>
|
||||
<key vkey="K_BKSLASH">|ˇ</key>
|
||||
<key vkey="K_6">₦</key>
|
||||
</layer>
|
||||
</encoding>
|
||||
</visualkeyboard>
|
||||
28
common/test/keyboards/obolo_chwerty_6347/source/readme.htm
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Obolo Chwerty</title>
|
||||
<style type="text/css">
|
||||
p { font: 10pt Tahoma; }
|
||||
h1 { font: bold 16pt Tahoma; color: #4444cc; margin-bottom: 2px }
|
||||
h2 { font: bold 12pt Tahoma; color: #4444cc; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Obolo Chwerty</h1>
|
||||
<p>This is a keyboard layout (chwerty) for the Obolo language of Nigeria. This layout covers the need of every dialect in that language.
|
||||
|
||||
<p>NOTE: This keyboard has been modified from the original for the purposes of
|
||||
testing https://github.com/keymanapp/keyman/issues/6347. It is not intended to
|
||||
be used for general purposes, and is not the final release version. Changes
|
||||
made:</p>
|
||||
|
||||
<ul>
|
||||
<li>Files renamed</li>
|
||||
<li>Font and PHP help have been removed (reduce distribution size)</li>
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 7.9 KiB |
|
After Width: | Height: | Size: 8.1 KiB |
|
After Width: | Height: | Size: 8.1 KiB |
|
|
@ -0,0 +1,97 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" keyword="Obolo, keyboard">
|
||||
<title>Start Using Obolo Chwerty Keyboard</title>
|
||||
<style type="text/css">
|
||||
p { font: 10pt Tahoma; }
|
||||
h1 { font: bold 16pt Tahoma; color: #000080; margin-bottom: 2px }
|
||||
h2 { font: bold 12pt Tahoma; color: #000080; }
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<body lang="en-GB" dir="ltr">
|
||||
<p align="center" style="margin-top: 0.42cm; border-top: none; border-bottom: 1px dotted #000080; border-left: none; border-right: none; padding-top: 0cm; padding-bottom: 0.05cm; padding-left: 0cm; padding-right: 0cm; font-weight: light; page-break-after: avoid">
|
||||
<font face="Tahoma"><font size="12" style="font-size: 28pt">Obolo Chwerty Keyboard</font></font></p>
|
||||
<p align="center">Rogers Katelem Edeh</p><br/>
|
||||
|
||||
<h1>Onu! (Welcome!)</h1>
|
||||
<p>
|
||||
This is the Chwerty layout for writing Obolo language. In this keyboard, accents are typed after the base letters.
|
||||
<p>
|
||||
So, to type "usem Obolo" with this keyboard layout, simply tap the given letters and tap the appropriate accents to pace them on the letters.
|
||||
<p>
|
||||
<img src="chwerty_keycombi.png"
|
||||
alt="Key Combination"
|
||||
style="width:695px;height:189px;">
|
||||
|
||||
<h1>Keyboard Layout</h1>
|
||||
<p>
|
||||
The keyboard uses CHWERTY layout.
|
||||
<p>
|
||||
"Ebi Obolo" do not have 'C' and 'H' in their "abiche" (alphabet), but they have the 'CH' sound (as well as the 'SH' sound in some dialect).<br/>
|
||||
This and other features make Obolo Language unique, hence this unique layout.
|
||||
<p>
|
||||
<h2>Desktop Layout</h2>
|
||||
<!-- Insert Keyboard Layout Images or HTML here -->
|
||||
<img src="chwerty_default.png"
|
||||
alt="Keyboard Layout (default)"
|
||||
style="width:695px;height:189px;">
|
||||
<p>
|
||||
<img src="chwerty_shift.png"
|
||||
alt="Keyboard Layout (shift)"
|
||||
style="width:695px;height:189px;">
|
||||
<p>
|
||||
<h2>Mobile/Tablet Layout</h2>
|
||||
<p>Due to the size and number of keys, some characters are hidden in the long press. Press and hold on the key with a little dot on the top right to reveal and use them.</p>
|
||||
<p>
|
||||
<img src="chwerty_mobi_default.png"
|
||||
alt="Keyboard Layout Mobile (default)"
|
||||
style="width:695px;height:189px;">
|
||||
<p>
|
||||
<img src="chwerty_mobi_shift.png"
|
||||
alt="Keyboard Layout Mobile (shift)"
|
||||
style="width:695px;height:189px;">
|
||||
<p>
|
||||
<img src="chwerty_mobi_alt.png"
|
||||
alt="Keyboard Layout Mobile (alt)"
|
||||
style="width:695px;height:189px;">
|
||||
<p>
|
||||
In this language, note that:
|
||||
<p>(1) Only one tone mark can sit on a letter. So, diacritic stacking is not allowed.
|
||||
<p>(2) Some tones are not to be marked in writing; they are not required. They are only used in primers and for beginners.
|
||||
<p>(3) Some letters do not accept some accents.
|
||||
<p>(4) Others do not accept accents at all.
|
||||
<p>
|
||||
Except for the optional accents which are not required, the keyboard will notify you when you inadvertently go against the spelling rules.
|
||||
<p>
|
||||
On mobile devices, tap the deadkey (⨷) then the given key to get the English letter in that position.
|
||||
<p>
|
||||
On desktop, if what you are doing does not support 'n̄' or does not render it well, then you can tap the BACKSLASH key after the 'n̄' to get 'ñ'.
|
||||
<p>
|
||||
The position of your BACKSLASH key depends on type of keyboard you are using. You can tell where your BACKSLASH key is by looking at the shape of the ENTER/RETURN key on your keyboard
|
||||
<p>The three keyboard types and the respective position of the BACKSLASH keys are shown below:
|
||||
<p>
|
||||
<img src="chwertyftkey1.png"
|
||||
alt="ANSI Keyboard">
|
||||
<p>
|
||||
<img src="chwertyftkey2.png"
|
||||
alt="ISO/JIS Keyboard">
|
||||
<p>
|
||||
<img src="chwertyftkey3.png"
|
||||
alt="Backward-L Keyboard">
|
||||
<p>
|
||||
Use this sentence to test your keyboard and character set:
|
||||
<p>
|
||||
mkpinyọn̄ kè evion̄ îben nchat balì ije bûu kire ǹnàan̄ iraka òsô mè ùkộ fiâm ikilap mudim m̀fọ̀tọ̀ shishini me èwê ozugbo
|
||||
<p>
|
||||
MKPINYỌN̄ KÈ EVION̄ ÎBEN NCHAT BALÌ IJE BÛU KIRE ǸNÀAN̄ IRAKA ÒSÔ MÈ ÙKỘ FIÂM IKILAP MUDIM M̀FỌ̀TỌ̀ SHISHINI ME ÈWÊ OZUGBO
|
||||
<p>
|
||||
Keyman ... type to the world in your language.
|
||||
<br/>
|
||||
Obolo Chwerty ... ge inu me usem kwun̄ ria si ere geelek me linyọn̄.
|
||||
<p>Onirọ-o!
|
||||
<p>Itọn̄ ikup inyi Awaji!
|
||||
</body>
|
||||
</html>
|
||||
36
common/test/keyboards/obolo_chwerty_6351/HISTORY.md
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
Obolo Chwerty Keyboard Change History
|
||||
====================
|
||||
|
||||
1.2.1 (2021-11-23)
|
||||
----------------
|
||||
* Removed accent key from numbers row on default layer, and from symbols row on shift layer.
|
||||
|
||||
1.2.0 (2021-07-05)
|
||||
----------------
|
||||
* Updated keycap for key 6 to match output on mobile shift layer, and added longpress for ^
|
||||
* Activated spacebar on layer alt for mobile/tablet layout
|
||||
* Updated documentation
|
||||
* Miscellaneous minor updates
|
||||
|
||||
1.1.2 (2021-02-04)
|
||||
----------------
|
||||
* Updated output for keys CH and SH on SHIFT layer to match key cap on touchscreen and desktop.
|
||||
* Resolved capslock issue for keys CH, SH, Ọ and N̄ on desktop.
|
||||
* Added long press on touchscreen for frequently used accented letters.
|
||||
* Added the Naira sign (₦) and Ñ (an alternative where software cannot render N̄ well, though Ñ is not part of the Obolo orthography.)
|
||||
|
||||
1.1.1 (2020-10-27)
|
||||
----------------
|
||||
* Increment version number to force recompile of touch layout
|
||||
|
||||
1.1 (2020-07-07)
|
||||
----------------
|
||||
* Moved the high tone (which is not required, except in primers) to long press on low tone button (for touchscreen).
|
||||
* Changed backspace behavior for ch, sh, n̄.
|
||||
* Added long press for Q, H, X and C keys on touchscreen.
|
||||
* Added hyphen-dash (a frequently used mark) to default and shift layers for touchscreen.
|
||||
* Fixed typo and omissions in documentation.
|
||||
|
||||
1.0 (2019-07-20)
|
||||
----------------
|
||||
* Created by Rogers Katelem Edeh
|
||||
21
common/test/keyboards/obolo_chwerty_6351/LICENSE.md
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
© 2019 - 2021 Rogers Katelem Edeh
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
37
common/test/keyboards/obolo_chwerty_6351/README.md
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
Obolo Chwerty keyboard
|
||||
==============
|
||||
|
||||
© 2019 - 2021 Rogers Katelem Edeh
|
||||
|
||||
Version 1.2.0
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
NOTE: This keyboard has been modified from the original for the purposes of testing https://github.com/keymanapp/keyman/issues/6351. It is not intended to be used for general purposes, and is not the final release version. Changes made:
|
||||
|
||||
* NCAPS mismatches have been resolved
|
||||
* Files renamed
|
||||
* Font and PHP help have been removed (reduce distribution size)
|
||||
|
||||
Obolo Chwerty Keyboard is a keyboard layout for the Obolo language of Nigeria. This layout covers the need of every dialect in that language.
|
||||
On this keyboard, accents are typed after the base letters. So, to type Obolo language, simply tap the given latters and tap the appropriate accent key to place the accent on the letter.
|
||||
|
||||
Links
|
||||
-----
|
||||
https://keyman.com/keyboards/obolo_chwerty
|
||||
|
||||
Supported Platforms
|
||||
-------------------
|
||||
* Windows
|
||||
* macOS
|
||||
* Linux
|
||||
* Web
|
||||
* iPhone
|
||||
* iPad
|
||||
* Android phone
|
||||
* Android tablet
|
||||
* Mobile devices
|
||||
* Desktop devices
|
||||
* Tablet devices
|
||||
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"license": "mit",
|
||||
"languages": [
|
||||
"ann-Latn"
|
||||
],
|
||||
"description": "Obolo Chwerty Keyboard: A keyboard layout for the Obolo language of Nigeria. It covers the need of every dialect in that language"
|
||||
}
|
||||
183
common/test/keyboards/obolo_chwerty_6351/obolo_chwerty_6351.kpj
Normal file
|
|
@ -0,0 +1,183 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<KeymanDeveloperProject>
|
||||
<Options>
|
||||
<BuildPath>$PROJECTPATH\build</BuildPath>
|
||||
<CompilerWarningsAsErrors>True</CompilerWarningsAsErrors>
|
||||
<WarnDeprecatedCode>True</WarnDeprecatedCode>
|
||||
<CheckFilenameConventions>True</CheckFilenameConventions>
|
||||
<ProjectType>keyboard</ProjectType>
|
||||
</Options>
|
||||
<Files>
|
||||
<File>
|
||||
<ID>id_e2041c991cdc20c570b342a5803447b0</ID>
|
||||
<Filename>obolo_chwerty_6351.kmn</Filename>
|
||||
<Filepath>source\obolo_chwerty_6351.kmn</Filepath>
|
||||
<FileVersion>1.2.1</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
<Details>
|
||||
<Name>Obolo Chwerty</Name>
|
||||
<Copyright>© 2019-2022 Rogers Katelem Edeh</Copyright>
|
||||
<Message>A keyboard layout (chwerty) for the Obolo language of Nigeria. The keyboard covers the need of every dialect in that language.</Message>
|
||||
</Details>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_4ed7acb803d5177bff445780f774fdb3</ID>
|
||||
<Filename>obolo_chwerty_6351.kps</Filename>
|
||||
<Filepath>source\obolo_chwerty_6351.kps</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.kps</FileType>
|
||||
<Details>
|
||||
<Name>Obolo Chwerty</Name>
|
||||
<Copyright>© 2019-2022 Rogers Katelem Edeh</Copyright>
|
||||
</Details>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_ede98e4633e239f933cbfd1f4e1b766c</ID>
|
||||
<Filename>HISTORY.md</Filename>
|
||||
<Filepath>HISTORY.md</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.md</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_53e892b8b41cc4caece1cfd5ef21d6e7</ID>
|
||||
<Filename>LICENSE.md</Filename>
|
||||
<Filepath>LICENSE.md</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.md</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_0730bb7c2e8f9ea2438b52e419dd86c9</ID>
|
||||
<Filename>README.md</Filename>
|
||||
<Filepath>README.md</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.md</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_fa9ac62e52c7671ac61602e3583305fd</ID>
|
||||
<Filename>obolo_chwerty_6351.keyboard_info</Filename>
|
||||
<Filepath>obolo_chwerty_6351.keyboard_info</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.keyboard_info</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_ef2a383b75a0364689701ecbf2f6fefa</ID>
|
||||
<Filename>obolo_chwerty_6351.ico</Filename>
|
||||
<Filepath>source\obolo_chwerty_6351.ico</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.ico</FileType>
|
||||
<ParentFileID>id_e2041c991cdc20c570b342a5803447b0</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_fa2b1b4a5977c1283d061d23611709ef</ID>
|
||||
<Filename>obolo_chwerty_6351.kvk</Filename>
|
||||
<Filepath>source\..\build\obolo_chwerty_6351.kvk</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.kvk</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_13adcc1b6b8e23edd35cfc6ab7c245b0</ID>
|
||||
<Filename>obolo_chwerty_6351.kmx</Filename>
|
||||
<Filepath>source\..\build\obolo_chwerty_6351.kmx</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.kmx</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_3ec4dad3d83c69fc4b33eb86d401d8cb</ID>
|
||||
<Filename>obolo_chwerty_6351.js</Filename>
|
||||
<Filepath>source\..\build\obolo_chwerty_6351.js</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.js</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_f6212220adf6c5eb0ae25c33cb973c64</ID>
|
||||
<Filename>chwerty_default.png</Filename>
|
||||
<Filepath>source\welcome\chwerty_default.png</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.png</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_cd62e578000692c9966c069950904d06</ID>
|
||||
<Filename>chwerty_keycombi.png</Filename>
|
||||
<Filepath>source\welcome\chwerty_keycombi.png</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.png</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_2d29737f21e65a75ca98a9c3ab1f4a6f</ID>
|
||||
<Filename>chwerty_mobi_alt.png</Filename>
|
||||
<Filepath>source\welcome\chwerty_mobi_alt.png</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.png</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_2d856489cc6083c4b74a1b8c2b528785</ID>
|
||||
<Filename>chwerty_mobi_default.png</Filename>
|
||||
<Filepath>source\welcome\chwerty_mobi_default.png</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.png</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_ee5bdb44f34cd08e1c6012f91790c302</ID>
|
||||
<Filename>chwerty_mobi_shift.png</Filename>
|
||||
<Filepath>source\welcome\chwerty_mobi_shift.png</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.png</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_743e9cd02f1d4004a5320b9faa355587</ID>
|
||||
<Filename>chwerty_shift.png</Filename>
|
||||
<Filepath>source\welcome\chwerty_shift.png</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.png</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_a81a3f903e8ce052259e09e4a6fbabb0</ID>
|
||||
<Filename>chwertyftkey1.png</Filename>
|
||||
<Filepath>source\welcome\chwertyftkey1.png</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.png</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_cb8167846a4ac07edd78e5a39a7cc587</ID>
|
||||
<Filename>chwertyftkey2.png</Filename>
|
||||
<Filepath>source\welcome\chwertyftkey2.png</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.png</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_7325a11eaf4f66357aa7185056091802</ID>
|
||||
<Filename>chwertyftkey3.png</Filename>
|
||||
<Filepath>source\welcome\chwertyftkey3.png</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.png</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_724e5b4c63f10bc0abf7077f7c3172fc</ID>
|
||||
<Filename>welcome.htm</Filename>
|
||||
<Filepath>source\welcome\welcome.htm</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.htm</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_8da344c4cea6f467013357fe099006f5</ID>
|
||||
<Filename>readme.htm</Filename>
|
||||
<Filepath>source\readme.htm</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.htm</FileType>
|
||||
<ParentFileID>id_4ed7acb803d5177bff445780f774fdb3</ParentFileID>
|
||||
</File>
|
||||
</Files>
|
||||
</KeymanDeveloperProject>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
/* tone keys colour */
|
||||
.android .kmw-keyboard-obolo_chwerty_6351 #default-T_GRV {color: #02ff02;}
|
||||
.android .kmw-keyboard-obolo_chwerty_6351 #default-T_CCM {color: #02ff02;}
|
||||
.android .kmw-keyboard-obolo_chwerty_6351 #shift-T_GRV {color: #02ff02;}
|
||||
.android .kmw-keyboard-obolo_chwerty_6351 #shift-T_CCM {color: #02ff02;}
|
||||
.android .kmw-keyboard-obolo_chwerty_6351 #caps-T_GRV {color: #02ff02;}
|
||||
.android .kmw-keyboard-obolo_chwerty_6351 #caps-T_CCM {color: #02ff02;}
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
|
|
@ -0,0 +1,254 @@
|
|||
store(&VERSION) '15.0'
|
||||
store(&NAME) 'Obolo Chwerty #6351'
|
||||
store(©RIGHT) '© 2019-2022 Rogers Katelem Edeh'
|
||||
store(&TARGETS) 'any'
|
||||
store(&VISUALKEYBOARD) 'obolo_chwerty_6351.kvks'
|
||||
store(&LAYOUTFILE) 'obolo_chwerty_6351.keyman-touch-layout'
|
||||
store(&BITMAP) 'obolo_chwerty_6351.ico'
|
||||
store(&MESSAGE) 'A keyboard layout (chwerty) for the Obolo language of Nigeria. The keyboard covers the need of every dialect in that language.'
|
||||
store(&KMW_HELPTEXT) 'A simple keyboard layout (chwerty) to help you type very easily in Obolo language.'
|
||||
store(&KEYBOARDVERSION) '1.2.1'
|
||||
store(&KMW_EMBEDCSS) 'obolo_chwerty_6351.css'
|
||||
|
||||
begin Unicode > use(main)
|
||||
begin NewContext > use(NewContext)
|
||||
begin PostKeystroke > use(PostKeystroke)
|
||||
|
||||
c store(capskeys) [CAPS K_A] [CAPS K_B] [CAPS K_C] [CAPS K_D] [CAPS K_E] [CAPS K_F] [CAPS K_G] [CAPS K_H] [CAPS K_I] [CAPS K_J] [CAPS K_K] [CAPS K_L] [CAPS K_M] [CAPS K_N] [CAPS K_O] [CAPS K_P] [CAPS K_Q] [CAPS K_R] [CAPS K_S] [CAPS K_T] [CAPS K_U] [CAPS K_V] [CAPS K_W] [CAPS K_X] [CAPS K_Y] [CAPS K_Z]
|
||||
c store(caps) 'A' 'B' 'N̄' 'D' 'E' 'F' 'G' 'SH' 'I' 'J' 'K' 'L' 'M' 'N' 'O' 'P' 'CH' 'R' 'S' 'T' 'U' 'V' 'W' 'Ọ' 'Y' 'Z'
|
||||
store(digit) '0'..'9'
|
||||
|
||||
group(NewContext) readonly
|
||||
nomatch > use(detectStartOfSentence)
|
||||
group(PostKeystroke) readonly
|
||||
if(&layerChanged = "0") if(&layer = 'numeric') any(digit) > context
|
||||
if(&layer = 'caps') > context
|
||||
if(&layerChanged = "0") > use(detectStartOfSentence)
|
||||
group(detectStartOfSentence) readonly
|
||||
store(sentencePunctuation) '.?!‽'
|
||||
nul > layer('shift')
|
||||
any(sentencePunctuation) ' ' > layer('shift')
|
||||
any(sentencePunctuation) ' ' > layer('shift')
|
||||
nomatch > layer('default')
|
||||
c group(main) using keys
|
||||
c + any(key) > index(out, 1)
|
||||
|
||||
store(accentibles) 'aeiọoumnAEIỌOUMNn̄'
|
||||
store(accents) [T_GRV] [T_ACU] [T_CCM] [T_CRN] [SHIFT T_GRV] [SHIFT T_ACU] [SHIFT T_CCM] [SHIFT T_CRN] [CAPS T_GRV] [CAPS T_ACU] [CAPS T_CCM] [CAPS T_CRN] c [K_BKQUOTE] [K_BKSLASH]
|
||||
store(nasals) 'mnMN'
|
||||
store(nnas) [NCAPS T_CCM] [NCAPS T_CRN] [SHIFT NCAPS T_CCM] [SHIFT NCAPS T_CRN] [CAPS T_CCM] [CAPS T_CRN] c [K_BKSLASH] [SHIFT K_BKSLASH]
|
||||
store(vow) 'aeiouAEIOU'
|
||||
store(grave) 'àèìòùÀÈÌÒÙ'
|
||||
store(acute) 'áéíóúÁÉÍÓÚ'
|
||||
store(circum) 'âêîôûÂÊÎÔÛ'
|
||||
store(caron) 'ǎěǐǒǔǍĚǏǑǓ'
|
||||
store(acnasals) 'ḿńḾŃ'
|
||||
store(spguy) 'mnọMNỌ'
|
||||
store(spguyop) 'ḿǹộḾǸỘ'
|
||||
store(erase) [NCAPS K_BKSP] [NCAPS SHIFT K_BKSP] [CAPS K_BKSP] [NCAPS ALT K_BKSP]
|
||||
store(gravekeys) [NCAPS T_GRV] [SHIFT NCAPS T_GRV] [CAPS T_GRV] [K_BKQUOTE]
|
||||
store(acutekeys) [NCAPS T_ACU] [SHIFT NCAPS T_ACU] [CAPS T_ACU] [SHIFT K_BKQUOTE]
|
||||
store(circumflexkeys) [NCAPS T_CCM] [SHIFT NCAPS T_CCM] [CAPS T_CCM] [K_BKSLASH]
|
||||
store(caronkeys) [NCAPS T_CRN] [SHIFT NCAPS T_CRN] [CAPS T_CRN] [SHIFT K_BKSLASH]
|
||||
|
||||
group(main) using keys
|
||||
|
||||
c + any(capskeys) > index(caps, 1) c by self to solve caps
|
||||
|
||||
+ [NCAPS T_ENG] > dk(1)
|
||||
+ [SHIFT NCAPS T_ENG] > dk(2)
|
||||
+ [CAPS T_ENG] > dk(3)
|
||||
|
||||
c caps
|
||||
+ [CAPS K_A] > 'A'
|
||||
+ [CAPS K_B] > 'B'
|
||||
+ [CAPS K_D] > 'D'
|
||||
+ [CAPS K_E] > 'E'
|
||||
+ [CAPS K_F] > 'F'
|
||||
+ [CAPS K_G] > 'G'
|
||||
+ [CAPS K_I] > 'I'
|
||||
+ [CAPS K_J] > 'J'
|
||||
+ [CAPS K_K] > 'K'
|
||||
+ [CAPS K_L] > 'L'
|
||||
+ [CAPS K_M] > 'M'
|
||||
+ [CAPS K_N] > 'N'
|
||||
+ [CAPS K_O] > 'O'
|
||||
+ [CAPS K_P] > 'P'
|
||||
+ [CAPS K_R] > 'R'
|
||||
+ [CAPS K_S] > 'S'
|
||||
+ [CAPS K_T] > 'T'
|
||||
+ [CAPS K_U] > 'U'
|
||||
+ [CAPS K_V] > 'V'
|
||||
+ [CAPS K_W] > 'W'
|
||||
+ [CAPS K_Y] > 'Y'
|
||||
+ [CAPS K_Z] > 'Z'
|
||||
|
||||
+ [CAPS K_Q] > 'CH'
|
||||
+ [CAPS K_H] > 'SH'
|
||||
+ [CAPS K_X] > 'Ọ'
|
||||
+ [CAPS K_C] > 'N̄'
|
||||
|
||||
+ [NCAPS K_Q] > 'ch'
|
||||
+ [NCAPS K_H] > 'sh'
|
||||
+ [NCAPS K_X] > 'ọ'
|
||||
+ [NCAPS K_C] > 'n̄'
|
||||
|
||||
+ [SHIFT CAPS K_Q] > 'Ch'
|
||||
+ [SHIFT CAPS K_H] > 'Sh'
|
||||
+ [SHIFT CAPS K_X] > 'ọ'
|
||||
+ [SHIFT CAPS K_C] > 'n̄'
|
||||
|
||||
+ [SHIFT NCAPS K_Q] > 'Ch'
|
||||
+ [SHIFT NCAPS K_H] > 'Sh'
|
||||
+ [SHIFT NCAPS K_X] > 'Ọ'
|
||||
+ [SHIFT NCAPS K_C] > 'N̄'
|
||||
|
||||
+ [SHIFT K_6] > '₦'
|
||||
|
||||
c (for touch layout)
|
||||
+ [NCAPS T_Q] > 'ch'
|
||||
+ [NCAPS SHIFT T_Q] > 'Ch'
|
||||
+ [CAPS T_Q] > 'CH'
|
||||
|
||||
+ [NCAPS T_H] > 'sh'
|
||||
+ [NCAPS SHIFT T_H] > 'Sh'
|
||||
+ [CAPS T_H] > 'SH'
|
||||
|
||||
+ [NCAPS T_X] > 'ọ'
|
||||
+ [NCAPS SHIFT T_X] > 'Ọ'
|
||||
+ [CAPS T_X] > 'Ọ'
|
||||
|
||||
+ [NCAPS T_C] > 'n̄'
|
||||
+ [NCAPS SHIFT T_C] > 'N̄'
|
||||
+ [CAPS T_C] > 'N̄'
|
||||
|
||||
c for mobile longpress
|
||||
c + [SHIFT T_MWG] > 'M̀'
|
||||
c + [T_MWG] > 'm̀'
|
||||
c + [SHIFT T_ORWG] > 'Ọ̀'
|
||||
c + [T_ORWG] > 'ọ̀'
|
||||
|
||||
|
||||
c English equivalent (for desktop)
|
||||
']' + [CAPS K_C] > 'C'
|
||||
']' + [NCAPS K_C] > 'c'
|
||||
']' + [SHIFT NCAPS K_C] > 'C'
|
||||
']' + [SHIFT CAPS K_C] > 'c'
|
||||
|
||||
']' + [CAPS K_X] > 'X'
|
||||
']' + [NCAPS K_X] > 'x'
|
||||
']' + [SHIFT NCAPS K_X] > 'X'
|
||||
']' + [SHIFT CAPS K_X] > 'x'
|
||||
|
||||
']' + [CAPS K_H] > 'H'
|
||||
']' + [NCAPS K_H] > 'h'
|
||||
']' + [SHIFT NCAPS K_H] > 'H'
|
||||
']' + [SHIFT CAPS K_H] > 'h'
|
||||
|
||||
']' + [CAPS K_Q] > 'Q'
|
||||
']' + [NCAPS K_Q] > 'q'
|
||||
']' + [NCAPS SHIFT K_Q] > 'Q'
|
||||
']' + [SHIFT CAPS K_Q] > 'q'
|
||||
|
||||
']' + [SHIFT K_6] > '^'
|
||||
|
||||
c space modifier accents
|
||||
']' + [K_BKQUOTE] > "`"
|
||||
']' + [SHIFT K_BKQUOTE] > "´"
|
||||
|
||||
']' + [K_BKSLASH] > "ˆ"
|
||||
']' + [SHIFT K_BKSLASH] > "ˇ"
|
||||
|
||||
c English equivalent (for touch layout)
|
||||
dk(1) + [NCAPS T_Q] > 'q'
|
||||
dk(2) + [NCAPS SHIFT T_Q] > 'Q'
|
||||
dk(3) + [CAPS T_Q] > 'Q'
|
||||
|
||||
dk(1) + [NCAPS T_H] > 'h'
|
||||
dk(2) + [SHIFT NCAPS T_H] > 'H'
|
||||
dk(3) + [CAPS T_H] > 'H'
|
||||
|
||||
dk(1) + [NCAPS T_X] > 'x'
|
||||
dk(2) + [SHIFT NCAPS T_X] > 'X'
|
||||
dk(3) + [CAPS T_X] > 'X'
|
||||
|
||||
dk(1) + [NCAPS T_C] > 'c'
|
||||
dk(2) + [SHIFT NCAPS T_C] > 'C'
|
||||
dk(3) + [CAPS T_C] > 'C'
|
||||
|
||||
dk(1) + [NCAPS K_S] > 'ṣ'
|
||||
dk(2) + [SHIFT NCAPS K_S] > 'Ṣ'
|
||||
dk(3) + [CAPS K_S] > 'Ṣ'
|
||||
|
||||
c deadkey for tones (touch layout only)
|
||||
dk(1) + [NCAPS T_GRV] > "`"
|
||||
dk(2) + [SHIFT NCAPS T_GRV] > "`"
|
||||
dk(3) + [CAPS T_GRV] > "`"
|
||||
|
||||
dk(1) + [NCAPS T_ACU] > "´"
|
||||
dk(2) + [SHIFT NCAPS T_ACU] > "´"
|
||||
dk(3) + [CAPS T_ACU] > "´"
|
||||
|
||||
dk(1) + [NCAPS T_CCM] > "ˆ"
|
||||
dk(2) + [SHIFT NCAPS T_CCM] > "ˆ"
|
||||
dk(3) + [CAPS T_CCM] > "ˆ"
|
||||
|
||||
dk(1) + [NCAPS T_CRN] > "ˇ"
|
||||
dk(2) + [SHIFT NCAPS T_CRN] > "ˇ"
|
||||
dk(3) + [CAPS T_CRN] > "ˇ"
|
||||
|
||||
dk(1) + [NCAPS K_HYPHEN] > "¯"
|
||||
dk(2) + [SHIFT NCAPS K_HYPHEN] > "¯"
|
||||
dk(3) + [CAPS K_HYPHEN] > "¯"
|
||||
|
||||
c make up for
|
||||
'm' + any(gravekeys) > 'm̀'
|
||||
'M' + any(gravekeys) > 'M̀'
|
||||
|
||||
'n' + any(gravekeys) > 'ǹ'
|
||||
'N' + any(gravekeys) > 'Ǹ'
|
||||
|
||||
'ọ' + any(gravekeys) > 'ọ̀'
|
||||
'Ọ' + any(gravekeys) > 'Ọ̀'
|
||||
|
||||
'ọ' + any(acutekeys) > 'ọ́'
|
||||
'Ọ' + any(acutekeys) > 'Ọ́'
|
||||
|
||||
'ọ' + any(circumflexkeys) > 'ộ'
|
||||
'Ọ' + any(circumflexkeys) > 'Ộ'
|
||||
|
||||
'ọ' + any(caronkeys) > 'ọ̌'
|
||||
'Ọ' + any(caronkeys) > 'Ọ̌'
|
||||
|
||||
'n̄' + [K_BKSLASH] > 'ñ'
|
||||
'N̄' + [K_BKSLASH] > 'Ñ'
|
||||
|
||||
's' + [K_BKSLASH] > 'ṣ'
|
||||
'S' + [K_BKSLASH] > 'Ṣ'
|
||||
|
||||
c any and index
|
||||
any(vow) + any(gravekeys) > index(grave,1)
|
||||
any(vow) + any(acutekeys) > index(acute,1)
|
||||
any(vow) + any(circumflexkeys) > index(circum,1)
|
||||
any(vow) + any(caronkeys) > index(caron,1)
|
||||
any(nasals) + any(acutekeys) > index(acnasals,1)
|
||||
|
||||
c change backspace behaviour for special diagraphs
|
||||
'ch' + any(erase) > nul
|
||||
'Ch' + any(erase) > nul
|
||||
'CH' + any(erase) > nul
|
||||
'sh' + any(erase) > nul
|
||||
'Sh' + any(erase) > nul
|
||||
'SH' + any(erase) > nul
|
||||
'n̄' + any(erase) > nul
|
||||
'N̄' + any(erase) > nul
|
||||
|
||||
c virtual keys
|
||||
any(grave) + any(erase) > index(vow,1)
|
||||
any(acute) + any(erase) > index(vow,1)
|
||||
any(circum) + any(erase) > index(vow,1)
|
||||
any(caron) + any(erase) > index(vow,1)
|
||||
any(spguyop) + any(erase) > index(spguy,1)
|
||||
|
||||
any(nasals) + any(nnas) > context beep c prevent certain accents on nasal consonants
|
||||
c notany(accentibles) + any(accents) > context beep c prevent diacritics (stacking, on empty space, and plain consonants)
|
||||
|
|
@ -0,0 +1,121 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Package>
|
||||
<System>
|
||||
<KeymanDeveloperVersion>15.0.206.0</KeymanDeveloperVersion>
|
||||
<FileVersion>7.0</FileVersion>
|
||||
</System>
|
||||
<Options>
|
||||
<ExecuteProgram></ExecuteProgram>
|
||||
<ReadMeFile>readme.htm</ReadMeFile>
|
||||
<MSIFileName></MSIFileName>
|
||||
<MSIOptions></MSIOptions>
|
||||
<FollowKeyboardVersion/>
|
||||
</Options>
|
||||
<StartMenu>
|
||||
<Folder></Folder>
|
||||
<Items/>
|
||||
</StartMenu>
|
||||
<Info>
|
||||
<Version URL=""></Version>
|
||||
<Name URL="">Obolo Chwerty</Name>
|
||||
<Copyright URL="">© 2019-2022 Rogers Katelem Edeh</Copyright>
|
||||
<Author URL="">Rogers Katelem Edeh</Author>
|
||||
</Info>
|
||||
<Files>
|
||||
<File>
|
||||
<Name>..\build\obolo_chwerty_6351.kvk</Name>
|
||||
<Description>File obolo_chwerty_6351.kvk</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.kvk</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>..\build\obolo_chwerty_6351.kmx</Name>
|
||||
<Description>Keyboard Obolo Chwerty</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.kmx</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>..\build\obolo_chwerty_6351.js</Name>
|
||||
<Description>File obolo_chwerty_6351.js</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.js</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\chwerty_default.png</Name>
|
||||
<Description>File chwerty_default.png</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.png</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\chwerty_keycombi.png</Name>
|
||||
<Description>File chwerty_keycombi.png</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.png</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\chwerty_mobi_alt.png</Name>
|
||||
<Description>File chwerty_mobi_alt.png</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.png</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\chwerty_mobi_default.png</Name>
|
||||
<Description>File chwerty_mobi_default.png</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.png</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\chwerty_mobi_shift.png</Name>
|
||||
<Description>File chwerty_mobi_shift.png</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.png</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\chwerty_shift.png</Name>
|
||||
<Description>File chwerty_shift.png</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.png</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\chwertyftkey1.png</Name>
|
||||
<Description>File chwertyftkey1.png</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.png</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\chwertyftkey2.png</Name>
|
||||
<Description>File chwertyftkey2.png</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.png</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\chwertyftkey3.png</Name>
|
||||
<Description>File chwertyftkey3.png</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.png</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\welcome.htm</Name>
|
||||
<Description>File welcome.htm</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.htm</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>readme.htm</Name>
|
||||
<Description>File readme.htm</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.htm</FileType>
|
||||
</File>
|
||||
</Files>
|
||||
<Keyboards>
|
||||
<Keyboard>
|
||||
<Name>Obolo Chwerty</Name>
|
||||
<ID>obolo_chwerty</ID>
|
||||
<Version>1.2.1</Version>
|
||||
<Languages>
|
||||
<Language ID="ann-Latn">Obolo (Andoni)</Language>
|
||||
</Languages>
|
||||
</Keyboard>
|
||||
</Keyboards>
|
||||
<Strings/>
|
||||
</Package>
|
||||
|
|
@ -0,0 +1,114 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<visualkeyboard>
|
||||
<header>
|
||||
<version>10.0</version>
|
||||
<kbdname>obolo_chwerty</kbdname>
|
||||
<flags>
|
||||
<key102/>
|
||||
</flags>
|
||||
</header>
|
||||
<encoding name="unicode" fontname="Tahoma" fontsize="12">
|
||||
<layer shift="">
|
||||
<key vkey="K_oDF">`</key>
|
||||
<key vkey="K_1">1</key>
|
||||
<key vkey="K_2">2</key>
|
||||
<key vkey="K_3">3</key>
|
||||
<key vkey="K_4">4</key>
|
||||
<key vkey="K_5">5</key>
|
||||
<key vkey="K_6">6</key>
|
||||
<key vkey="K_7">7</key>
|
||||
<key vkey="K_8">8</key>
|
||||
<key vkey="K_9">9</key>
|
||||
<key vkey="K_0">0</key>
|
||||
<key vkey="K_HYPHEN">-</key>
|
||||
<key vkey="K_EQUAL">=</key>
|
||||
<key vkey="K_Q">ch</key>
|
||||
<key vkey="K_W">w</key>
|
||||
<key vkey="K_E">e</key>
|
||||
<key vkey="K_R">r</key>
|
||||
<key vkey="K_T">t</key>
|
||||
<key vkey="K_Y">y</key>
|
||||
<key vkey="K_U">u</key>
|
||||
<key vkey="K_I">i</key>
|
||||
<key vkey="K_O">o</key>
|
||||
<key vkey="K_P">p</key>
|
||||
<key vkey="K_LBRKT">[</key>
|
||||
<key vkey="K_RBRKT">]</key>
|
||||
<key vkey="K_A">a</key>
|
||||
<key vkey="K_S">s</key>
|
||||
<key vkey="K_D">d</key>
|
||||
<key vkey="K_F">f</key>
|
||||
<key vkey="K_G">g</key>
|
||||
<key vkey="K_H">sh</key>
|
||||
<key vkey="K_J">j</key>
|
||||
<key vkey="K_K">k</key>
|
||||
<key vkey="K_L">l</key>
|
||||
<key vkey="K_COLON">;</key>
|
||||
<key vkey="K_BKQUOTE">`</key>
|
||||
<key vkey="K_Z">z</key>
|
||||
<key vkey="K_X">ọ</key>
|
||||
<key vkey="K_C">n̄</key>
|
||||
<key vkey="K_V">v</key>
|
||||
<key vkey="K_B">b</key>
|
||||
<key vkey="K_N">n</key>
|
||||
<key vkey="K_M">m</key>
|
||||
<key vkey="K_COMMA">,</key>
|
||||
<key vkey="K_PERIOD">.</key>
|
||||
<key vkey="K_SLASH">/</key>
|
||||
<key vkey="K_SPACE"></key>
|
||||
<key vkey="K_QUOTE">'</key>
|
||||
<key vkey="K_BKSLASH">\ˆ</key>
|
||||
</layer>
|
||||
<layer shift="S">
|
||||
<key vkey="K_oDF">¬</key>
|
||||
<key vkey="K_1">!</key>
|
||||
<key vkey="K_2">@</key>
|
||||
<key vkey="K_3">#</key>
|
||||
<key vkey="K_4">$</key>
|
||||
<key vkey="K_5">%</key>
|
||||
<key vkey="K_7">&</key>
|
||||
<key vkey="K_8">*</key>
|
||||
<key vkey="K_9">(</key>
|
||||
<key vkey="K_0">)</key>
|
||||
<key vkey="K_HYPHEN">_</key>
|
||||
<key vkey="K_EQUAL">+</key>
|
||||
<key vkey="K_Q">CH</key>
|
||||
<key vkey="K_W">W</key>
|
||||
<key vkey="K_E">E</key>
|
||||
<key vkey="K_R">R</key>
|
||||
<key vkey="K_T">T</key>
|
||||
<key vkey="K_Y">Y</key>
|
||||
<key vkey="K_U">U</key>
|
||||
<key vkey="K_I">I</key>
|
||||
<key vkey="K_O">O</key>
|
||||
<key vkey="K_P">P</key>
|
||||
<key vkey="K_LBRKT">{</key>
|
||||
<key vkey="K_RBRKT">}</key>
|
||||
<key vkey="K_QUOTE">"</key>
|
||||
<key vkey="K_A">A</key>
|
||||
<key vkey="K_S">S</key>
|
||||
<key vkey="K_D">D</key>
|
||||
<key vkey="K_F">F</key>
|
||||
<key vkey="K_G">G</key>
|
||||
<key vkey="K_H">SH</key>
|
||||
<key vkey="K_J">J</key>
|
||||
<key vkey="K_K">K</key>
|
||||
<key vkey="K_L">L</key>
|
||||
<key vkey="K_COLON">:</key>
|
||||
<key vkey="K_Z">Z</key>
|
||||
<key vkey="K_X">Ọ</key>
|
||||
<key vkey="K_C">N̄</key>
|
||||
<key vkey="K_V">V</key>
|
||||
<key vkey="K_B">B</key>
|
||||
<key vkey="K_N">N</key>
|
||||
<key vkey="K_M">M</key>
|
||||
<key vkey="K_COMMA"><</key>
|
||||
<key vkey="K_PERIOD">></key>
|
||||
<key vkey="K_SLASH">?</key>
|
||||
<key vkey="K_SPACE"></key>
|
||||
<key vkey="K_BKQUOTE">~´</key>
|
||||
<key vkey="K_BKSLASH">|ˇ</key>
|
||||
<key vkey="K_6">₦</key>
|
||||
</layer>
|
||||
</encoding>
|
||||
</visualkeyboard>
|
||||
29
common/test/keyboards/obolo_chwerty_6351/source/readme.htm
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Obolo Chwerty</title>
|
||||
<style type="text/css">
|
||||
p { font: 10pt Tahoma; }
|
||||
h1 { font: bold 16pt Tahoma; color: #4444cc; margin-bottom: 2px }
|
||||
h2 { font: bold 12pt Tahoma; color: #4444cc; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Obolo Chwerty</h1>
|
||||
<p>This is a keyboard layout (chwerty) for the Obolo language of Nigeria. This layout covers the need of every dialect in that language.
|
||||
|
||||
<p>NOTE: This keyboard has been modified from the original for the purposes of
|
||||
testing https://github.com/keymanapp/keyman/issues/6351. It is not intended to
|
||||
be used for general purposes, and is not the final release version. Changes
|
||||
made:</p>
|
||||
|
||||
<ul>
|
||||
<li>Files renamed</li>
|
||||
<li>NCAPS mismatches have been resolved</li>
|
||||
<li>Font and PHP help have been removed (reduce distribution size)</li>
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 7.9 KiB |
|
After Width: | Height: | Size: 8.1 KiB |
|
After Width: | Height: | Size: 8.1 KiB |
|
|
@ -0,0 +1,97 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" keyword="Obolo, keyboard">
|
||||
<title>Start Using Obolo Chwerty Keyboard</title>
|
||||
<style type="text/css">
|
||||
p { font: 10pt Tahoma; }
|
||||
h1 { font: bold 16pt Tahoma; color: #000080; margin-bottom: 2px }
|
||||
h2 { font: bold 12pt Tahoma; color: #000080; }
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<body lang="en-GB" dir="ltr">
|
||||
<p align="center" style="margin-top: 0.42cm; border-top: none; border-bottom: 1px dotted #000080; border-left: none; border-right: none; padding-top: 0cm; padding-bottom: 0.05cm; padding-left: 0cm; padding-right: 0cm; font-weight: light; page-break-after: avoid">
|
||||
<font face="Tahoma"><font size="12" style="font-size: 28pt">Obolo Chwerty Keyboard</font></font></p>
|
||||
<p align="center">Rogers Katelem Edeh</p><br/>
|
||||
|
||||
<h1>Onu! (Welcome!)</h1>
|
||||
<p>
|
||||
This is the Chwerty layout for writing Obolo language. In this keyboard, accents are typed after the base letters.
|
||||
<p>
|
||||
So, to type "usem Obolo" with this keyboard layout, simply tap the given letters and tap the appropriate accents to pace them on the letters.
|
||||
<p>
|
||||
<img src="chwerty_keycombi.png"
|
||||
alt="Key Combination"
|
||||
style="width:695px;height:189px;">
|
||||
|
||||
<h1>Keyboard Layout</h1>
|
||||
<p>
|
||||
The keyboard uses CHWERTY layout.
|
||||
<p>
|
||||
"Ebi Obolo" do not have 'C' and 'H' in their "abiche" (alphabet), but they have the 'CH' sound (as well as the 'SH' sound in some dialect).<br/>
|
||||
This and other features make Obolo Language unique, hence this unique layout.
|
||||
<p>
|
||||
<h2>Desktop Layout</h2>
|
||||
<!-- Insert Keyboard Layout Images or HTML here -->
|
||||
<img src="chwerty_default.png"
|
||||
alt="Keyboard Layout (default)"
|
||||
style="width:695px;height:189px;">
|
||||
<p>
|
||||
<img src="chwerty_shift.png"
|
||||
alt="Keyboard Layout (shift)"
|
||||
style="width:695px;height:189px;">
|
||||
<p>
|
||||
<h2>Mobile/Tablet Layout</h2>
|
||||
<p>Due to the size and number of keys, some characters are hidden in the long press. Press and hold on the key with a little dot on the top right to reveal and use them.</p>
|
||||
<p>
|
||||
<img src="chwerty_mobi_default.png"
|
||||
alt="Keyboard Layout Mobile (default)"
|
||||
style="width:695px;height:189px;">
|
||||
<p>
|
||||
<img src="chwerty_mobi_shift.png"
|
||||
alt="Keyboard Layout Mobile (shift)"
|
||||
style="width:695px;height:189px;">
|
||||
<p>
|
||||
<img src="chwerty_mobi_alt.png"
|
||||
alt="Keyboard Layout Mobile (alt)"
|
||||
style="width:695px;height:189px;">
|
||||
<p>
|
||||
In this language, note that:
|
||||
<p>(1) Only one tone mark can sit on a letter. So, diacritic stacking is not allowed.
|
||||
<p>(2) Some tones are not to be marked in writing; they are not required. They are only used in primers and for beginners.
|
||||
<p>(3) Some letters do not accept some accents.
|
||||
<p>(4) Others do not accept accents at all.
|
||||
<p>
|
||||
Except for the optional accents which are not required, the keyboard will notify you when you inadvertently go against the spelling rules.
|
||||
<p>
|
||||
On mobile devices, tap the deadkey (⨷) then the given key to get the English letter in that position.
|
||||
<p>
|
||||
On desktop, if what you are doing does not support 'n̄' or does not render it well, then you can tap the BACKSLASH key after the 'n̄' to get 'ñ'.
|
||||
<p>
|
||||
The position of your BACKSLASH key depends on type of keyboard you are using. You can tell where your BACKSLASH key is by looking at the shape of the ENTER/RETURN key on your keyboard
|
||||
<p>The three keyboard types and the respective position of the BACKSLASH keys are shown below:
|
||||
<p>
|
||||
<img src="chwertyftkey1.png"
|
||||
alt="ANSI Keyboard">
|
||||
<p>
|
||||
<img src="chwertyftkey2.png"
|
||||
alt="ISO/JIS Keyboard">
|
||||
<p>
|
||||
<img src="chwertyftkey3.png"
|
||||
alt="Backward-L Keyboard">
|
||||
<p>
|
||||
Use this sentence to test your keyboard and character set:
|
||||
<p>
|
||||
mkpinyọn̄ kè evion̄ îben nchat balì ije bûu kire ǹnàan̄ iraka òsô mè ùkộ fiâm ikilap mudim m̀fọ̀tọ̀ shishini me èwê ozugbo
|
||||
<p>
|
||||
MKPINYỌN̄ KÈ EVION̄ ÎBEN NCHAT BALÌ IJE BÛU KIRE ǸNÀAN̄ IRAKA ÒSÔ MÈ ÙKỘ FIÂM IKILAP MUDIM M̀FỌ̀TỌ̀ SHISHINI ME ÈWÊ OZUGBO
|
||||
<p>
|
||||
Keyman ... type to the world in your language.
|
||||
<br/>
|
||||
Obolo Chwerty ... ge inu me usem kwun̄ ria si ere geelek me linyọn̄.
|
||||
<p>Onirọ-o!
|
||||
<p>Itọn̄ ikup inyi Awaji!
|
||||
</body>
|
||||
</html>
|
||||
34
common/test/keyboards/the_99/README.md
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
the 99 keyboard
|
||||
==============
|
||||
|
||||
Version 1.0
|
||||
|
||||
Description
|
||||
-----------
|
||||
the 99 generated from template. kmp.json manually edited to have system.fileVersion = "99.0"
|
||||
to validate the minimum keyboard version is checked before package installation.
|
||||
|
||||
Links
|
||||
-----
|
||||
See Github issue #6254
|
||||
https://github.com/keymanapp/keyman/issues/6254
|
||||
|
||||
|
||||
Copyright
|
||||
---------
|
||||
See [LICENSE.md](LICENSE.md)
|
||||
|
||||
Supported Platforms
|
||||
-------------------
|
||||
* Windows
|
||||
* macOS
|
||||
* Linux
|
||||
* Web
|
||||
* iPhone
|
||||
* iPad
|
||||
* Android phone
|
||||
* Android tablet
|
||||
* Mobile devices
|
||||
* Desktop devices
|
||||
* Tablet devices
|
||||
|
||||
63
common/test/keyboards/the_99/build.sh
Executable file
|
|
@ -0,0 +1,63 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -u
|
||||
|
||||
## START STANDARD BUILD SCRIPT INCLUDE
|
||||
# adjust relative paths as necessary
|
||||
THIS_SCRIPT="$(greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null || readlink -f "${BASH_SOURCE[0]}")"
|
||||
. "$(dirname "$THIS_SCRIPT")/../../../../resources/build/build-utils.sh"
|
||||
# . "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
|
||||
## END STANDARD BUILD SCRIPT INCLUDE
|
||||
THIS_DIR="$(dirname "$THIS_SCRIPT")"
|
||||
|
||||
display_usage() {
|
||||
echo "Usage: build.sh [-c]"
|
||||
exit $1
|
||||
}
|
||||
|
||||
# Parse args
|
||||
shopt -s nocasematch
|
||||
|
||||
CLEAN=false
|
||||
DEBUG=false
|
||||
QUIET=false
|
||||
KEYBOARDS_ONLY=false
|
||||
|
||||
while [[ $# -gt 0 ]] ; do
|
||||
key="$1"
|
||||
case $key in
|
||||
--help|-h|-\?)
|
||||
display_usage 0
|
||||
;;
|
||||
--clean|-c)
|
||||
CLEAN=true
|
||||
;;
|
||||
--debug|-d)
|
||||
DEBUG=true
|
||||
;;
|
||||
--silent|-s)
|
||||
QUIET=true
|
||||
;;
|
||||
--keyboard|-k)
|
||||
KEYBOARDS_ONLY=true
|
||||
;;
|
||||
*)
|
||||
display_usage 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if $CLEAN; then
|
||||
if ! $QUIET; then
|
||||
echo Cleaning the_99.kmp from build/
|
||||
fi
|
||||
rm -rf "$THIS_DIR"/build
|
||||
else
|
||||
if ! $QUIET; then
|
||||
echo Copying the_99.kmp to build/
|
||||
fi
|
||||
mkdir -p "$THIS_DIR"/build
|
||||
cp "$THIS_DIR"/the_99.kmp build/the_99.kmp
|
||||
fi
|
||||
BIN
common/test/keyboards/the_99/the_99.kmp
Normal file
2
developer/js/package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/lexical-model-compiler",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/lexical-model-compiler",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"description": "Keyman Developer lexical model compiler",
|
||||
"keywords": [
|
||||
"keyboard",
|
||||
|
|
@ -37,14 +37,14 @@
|
|||
"node": ">=12.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@keymanapp/models-types": "^15.0.211",
|
||||
"@keymanapp/models-types": "^15.0.216",
|
||||
"commander": "^3.0.0",
|
||||
"typescript": "^3.8.3",
|
||||
"xml2js": "^0.4.19"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@keymanapp/models-templates": "^15.0.211",
|
||||
"@keymanapp/models-wordbreakers": "^15.0.211",
|
||||
"@keymanapp/models-templates": "^15.0.216",
|
||||
"@keymanapp/models-wordbreakers": "^15.0.216",
|
||||
"@types/chai": "^4.1.7",
|
||||
"@types/mocha": "^5.2.7",
|
||||
"@types/node": "^10.14.6",
|
||||
|
|
|
|||
2
developer/server/package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/developer-server",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@keymanapp/developer-server",
|
||||
"version": "15.0.211",
|
||||
"version": "15.0.216",
|
||||
"description": "Keyman Developer backend server",
|
||||
"main": "dist/index.js",
|
||||
"scripts": {
|
||||
|
|
|
|||
|
|
@ -287,7 +287,7 @@ open class InputViewController: UIInputViewController, KeymanWebDelegate {
|
|||
return
|
||||
}
|
||||
|
||||
// What the actual heck, Apple. Apparently, in system-keyboard mode, this is also self-triggered if we erase back to a newline.
|
||||
// Apparently, in system-keyboard mode, this is also self-triggered if we erase back to a newline.
|
||||
// Refer to https://github.com/keymanapp/keyman/pull/2770 for context.
|
||||
if self.swallowBackspaceTextChange && Manager.shared.isSystemKeyboard && textDocumentProxy.documentContextBeforeInput == "\n" {
|
||||
self.swallowBackspaceTextChange = false
|
||||
|
|
@ -333,6 +333,11 @@ open class InputViewController: UIInputViewController, KeymanWebDelegate {
|
|||
return
|
||||
}
|
||||
|
||||
if numCharsToDelete > 0 && textDocumentProxy.documentContextBeforeInput == nil {
|
||||
textDocumentProxy.deleteBackward()
|
||||
return
|
||||
}
|
||||
|
||||
for _ in 0..<numCharsToDelete {
|
||||
let oldContext = textDocumentProxy.documentContextBeforeInput ?? ""
|
||||
textDocumentProxy.deleteBackward()
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ verify_on_mac
|
|||
|
||||
|
||||
#xcodebuild -exportLocalizations -project "engine/KMEI/KeymanEngine.xcodeproj"
|
||||
#xcodebuild -exportLocalizations -project "keyman/Keyman/Keyman.xcodeproj"
|
||||
#xcodebuild -exportLocalizations -project "keyman/Keyman/Keyman.xcodeproj"
|
||||
|
||||
BASE_EXPORT_FOLDER="build/crowdin"
|
||||
START_DIRECTORY=`pwd`
|
||||
|
|
@ -52,8 +52,8 @@ echo ""
|
|||
echo "---------------------------------------------"
|
||||
echo "iOS base i18n files have been exported."
|
||||
echo "Examine the contents of the folder at"
|
||||
echo "${SUCCESS_GREEN}$KEYMAN_ROOT/ios/$BASE_EXPORT_FOLDER${NORMAL}"
|
||||
echo "${COLOR_GREEN}$KEYMAN_ROOT/ios/$BASE_EXPORT_FOLDER${COLOR_RESET}"
|
||||
echo "and compare against the iOS entries within"
|
||||
echo "${SUCCESS_GREEN}$KEYMAN_ROOT/crowdin.yml${NORMAL}"
|
||||
echo "${COLOR_GREEN}$KEYMAN_ROOT/crowdin.yml${COLOR_RESET}"
|
||||
echo "---------------------------------------------"
|
||||
|
||||
|
|
|
|||
|
|
@ -207,7 +207,7 @@ update_bundle ( ) {
|
|||
downloadKeyboardPackage "$DEFAULT_KBD_ID" "$base_dir/$BUNDLE_PATH/$DEFAULT_KBD_ID.kmp"
|
||||
downloadModelPackage "$DEFAULT_LM_ID" "$base_dir/$BUNDLE_PATH/$DEFAULT_LM_ID.model.kmp"
|
||||
|
||||
echo "${SUCCESS_GREEN}Packages successfully updated${NORMAL}"
|
||||
echo "${COLOR_GREEN}Packages successfully updated${COLOR_RESET}"
|
||||
|
||||
# If we aren't downloading resources, make sure copies of them already exist!
|
||||
fi
|
||||
|
|
@ -317,7 +317,7 @@ if [ $DO_KEYMANAPP = true ]; then
|
|||
VERSION=$VERSION \
|
||||
VERSION_WITH_TAG=$VERSION_WITH_TAG \
|
||||
VERSION_ENVIRONMENT=$VERSION_ENVIRONMENT \
|
||||
UPLOAD_SENTRY=$UPLOAD_SENTRY
|
||||
UPLOAD_SENTRY=$UPLOAD_SENTRY
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
|
|
|||
|
|
@ -21,5 +21,5 @@
|
|||
"ts-node",
|
||||
"typescript"
|
||||
],
|
||||
"version": "15.0.211"
|
||||
"version": "15.0.216"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,17 @@
|
|||
keyman (15.0.90-1) UNRELEASED; urgency=medium
|
||||
|
||||
* Consolidate source packages
|
||||
Closes: #1007123
|
||||
|
||||
-- Eberhard Beilharz <eb1@sil.org> Mon, 02 Aug 2021 18:13:58 +0200
|
||||
|
||||
keyman-config (14.0.287-1) unstable; urgency=medium
|
||||
|
||||
* New upstream release
|
||||
* Re-release to Debian
|
||||
|
||||
-- Eberhard Beilharz <eb1@sil.org> Fri, 11 Mar 2022 12:32:34 +0100
|
||||
|
||||
keyman-config (14.0.284-3) unstable; urgency=medium
|
||||
|
||||
* Team upload
|
||||
|
|
|
|||
|
|
@ -36,17 +36,19 @@ Build-Depends:
|
|||
xvfb,
|
||||
metacity,
|
||||
gawk,
|
||||
Standards-Version: 4.5.1
|
||||
Standards-Version: 4.6.0
|
||||
Vcs-Git: https://github.com/keymanapp/keyman.git
|
||||
Vcs-Browser: https://github.com/keymanapp/keyman
|
||||
Homepage: https://www.keyman.com
|
||||
Rules-Requires-Root: binary-targets
|
||||
|
||||
Package: keyman
|
||||
Architecture: all
|
||||
Depends:
|
||||
libglib2.0-bin,
|
||||
python3-keyman-config (= ${binary:Version}),
|
||||
ibus-keyman (= ${binary:Version}),
|
||||
ibus-keyman (>= ${binary:Version}),
|
||||
ibus-keyman (<< ${binary:Version}.1~),
|
||||
${misc:Depends},
|
||||
Recommends:
|
||||
onboard-keyman,
|
||||
|
|
|
|||
|
|
@ -1,27 +1,105 @@
|
|||
Format: http://anonscm.debian.org/viewvc/dep/web/deps/dep5.mdwn?view=markup&pathrev=174
|
||||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: keyman
|
||||
Upstream-Contact: Keyman team <support@keyman.com>
|
||||
Source: https://github.com/keymanapp/keyman
|
||||
|
||||
Files: *
|
||||
Copyright: Copyright (C) 2018-2021 SIL International
|
||||
Copyright: 2018-2022 SIL International
|
||||
License: MIT
|
||||
|
||||
Files: linux/ibus-keyman/*
|
||||
Copyright: 2004-2021 SIL International
|
||||
Copyright: 2004-2022 SIL International
|
||||
License: GPL-2+
|
||||
|
||||
Files: linux/ibus-keyman/src/keymanutil.c
|
||||
linux/ibus-keyman/src/keymanutil.h
|
||||
linux/ibus-keyman/src/kmpdetails.c
|
||||
linux/ibus-keyman/src/kmpdetails.h
|
||||
Copyright: 2009-2021 SIL International
|
||||
Copyright: 2009-2022 SIL International
|
||||
License: GPL-2+ or MIT
|
||||
|
||||
Files: linux/ibus-keyman/src/keyman-service.c
|
||||
linux/ibus-keyman/src/keyman-service.h
|
||||
Copyright: 2018-2021 SIL International
|
||||
linux/keyman-config/buildtools/help2md
|
||||
Copyright: 2018-2022 SIL International
|
||||
License: GPL-3+
|
||||
|
||||
Files: linux/ibus-keyman/config.rpath
|
||||
linux/ibus-keyman/m4/*
|
||||
Copyright: 1996-2003, 2009-2015, Free Software Foundation, Inc.
|
||||
License: FSFULLR
|
||||
|
||||
Files: linux/ibus-keyman/Makefile.am
|
||||
linux/ibus-keyman/Makefile.in
|
||||
linux/ibus-keyman/compile
|
||||
linux/ibus-keyman/configure.ac
|
||||
linux/ibus-keyman/depcomp
|
||||
linux/ibus-keyman/m4/Makefile.am
|
||||
linux/ibus-keyman/m4/Makefile.in
|
||||
linux/ibus-keyman/missing
|
||||
linux/ibus-keyman/src/Makefile.am
|
||||
linux/ibus-keyman/src/Makefile.in
|
||||
linux/ibus-keyman/src/engine.c
|
||||
linux/ibus-keyman/src/engine.h
|
||||
linux/ibus-keyman/src/main.c
|
||||
linux/ibus-keyman/src/test/Makefile.am
|
||||
linux/ibus-keyman/src/test/Makefile.in
|
||||
linux/ibus-keyman/tap-driver.sh
|
||||
linux/ibus-keyman/test-driver
|
||||
linux/ibus-keyman/tests/Makefile.am
|
||||
linux/ibus-keyman/tests/Makefile.in
|
||||
Copyright: 1994-2017, Free Software Foundation, Inc.
|
||||
2009-2022, SIL International
|
||||
License: GPL-2+
|
||||
|
||||
Files: linux/ibus-keyman/m4/gettext.m4
|
||||
linux/ibus-keyman/m4/intl.m4
|
||||
linux/ibus-keyman/m4/intldir.m4
|
||||
linux/ibus-keyman/m4/intlmacosx.m4
|
||||
linux/ibus-keyman/m4/lcmessage.m4
|
||||
linux/ibus-keyman/m4/nls.m4
|
||||
linux/ibus-keyman/m4/po.m4
|
||||
linux/ibus-keyman/m4/progtest.m4
|
||||
Copyright: 1995-2014, Free Software Foundation, Inc.
|
||||
License: FSFULLR or GPL-3 or LGPL-3
|
||||
|
||||
Files: linux/ibus-keyman/install-sh
|
||||
Copyright: 1994, X Consortium
|
||||
2018, SIL International
|
||||
License: MIT
|
||||
|
||||
Files: linux/ibus-keyman/INSTALL
|
||||
linux/ibus-keyman/po/Makefile.in.in
|
||||
Copyright: 1994-1996, 1999-2002, 2004-2016, Free Software Foundation, Inc.
|
||||
1995-1997, 2000-2007, 2009-2010, Ulrich Drepper <drepper@gnu.ai.mit.edu>
|
||||
License: FSFAP
|
||||
|
||||
Files: linux/ibus-keyman/icons/Makefile.am
|
||||
linux/ibus-keyman/icons/Makefile.in
|
||||
Copyright: 1994-2017, Free Software Foundation, Inc.
|
||||
2018, SIL International
|
||||
License: LGPL-2+
|
||||
|
||||
Files: linux/ibus-keyman/tests/ibusimcontext.c
|
||||
linux/ibus-keyman/tests/ibusimcontext.h
|
||||
Copyright: 2008-2010, Peng Huang <shawn.p.huang@gmail.com>
|
||||
2008-2010, Red Hat, Inc.
|
||||
2008-2013, Peng Huang <shawn.p.huang@gmail.com>
|
||||
2008-2021, Red Hat, Inc.
|
||||
2015-2021, Takao Fujiwara <takao.fujiwara1@gmail.com>
|
||||
2021-2022, SIL International
|
||||
License: LGPL-2.1+
|
||||
|
||||
Files: linux/keyman-config/buildtools/help2man
|
||||
Copyright: 1997-2005, 2009-2017, 2020-2021, Free Software Foundation, Inc.
|
||||
License: GPL-3+
|
||||
|
||||
Files: debian/com.keyman.config.appdata.xml
|
||||
debian/com.keyman.ibus_keyman.metainfo.xml
|
||||
Copyright: 2019 Daniel Glassey <wdg@debian.org>
|
||||
2022 SIL International
|
||||
License: MIT
|
||||
|
||||
License: MIT
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
|
|
@ -61,6 +139,24 @@ License: GPL-2+
|
|||
License version 2 can be found in the file
|
||||
`/usr/share/common-licenses/GPL-2'.
|
||||
|
||||
License: GPL-3
|
||||
This package is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, version 3.
|
||||
.
|
||||
This package is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
.
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this package; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
.
|
||||
On Debian systems, the full text of the GNU General Public
|
||||
License version 3 can be found in the file
|
||||
`/usr/share/common-licenses/GPL-3'.
|
||||
|
||||
License: GPL-3+
|
||||
This package is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -79,3 +175,55 @@ License: GPL-3+
|
|||
On Debian systems, the full text of the GNU General Public
|
||||
License version 3 can be found in the file
|
||||
`/usr/share/common-licenses/GPL-3'.
|
||||
|
||||
License: FSFULLR
|
||||
This file is free software; the Free Software Foundation gives unlimited
|
||||
permission to copy and/or distribute it, with or without modifications, as long
|
||||
as this notice is preserved.
|
||||
|
||||
License: FSFAP
|
||||
Copying and distribution of this file, with or without modification, are
|
||||
permitted in any medium without royalty provided the copyright notice and this
|
||||
notice are preserved. This file is offered as-is, without any warranty.
|
||||
|
||||
License: LGPL-2+
|
||||
This library is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU Library General Public License as published by the Free
|
||||
Software Foundation; either version 2 of the License, or (at your option)
|
||||
any later version.
|
||||
.
|
||||
This library is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more
|
||||
details.
|
||||
.
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
.
|
||||
On Debian systems, the full text of the GNU Library General Public
|
||||
License version 2 can be found in the file
|
||||
`/usr/share/common-licenses/LGPL-2'.
|
||||
|
||||
License: LGPL-2.1+
|
||||
This library is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU Lesser General Public License as published by the Free
|
||||
Software Foundation; either version 2.1 of the License, or (at your option)
|
||||
any later version.
|
||||
.
|
||||
This library is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
||||
details.
|
||||
.
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this library; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
.
|
||||
On Debian systems, the full text of the GNU Lesser General Public
|
||||
License version 2.1 can be found in the file
|
||||
`/usr/share/common-licenses/LGPL-2.1'.
|
||||
|
||||
License: LGPL-3
|
||||
On Debian systems, the full text of the GNU Lesser General Public
|
||||
License version 3 can be found in `/usr/share/common-licenses/LGPL-3'.
|
||||
|
|
|
|||