mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-05 08:25:32 +00:00
Merge pull request #16049 from keymanapp/auto/A19S30-merge-master-into-autocorrect
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
auto: A19S30 merge master into autocorrect 🚂
This commit is contained in:
commit
e02404b365
899 changed files with 14195 additions and 7087 deletions
4
.github/workflows/pr-build-status.yml
vendored
4
.github/workflows/pr-build-status.yml
vendored
|
|
@ -81,7 +81,9 @@ jobs:
|
|||
} else if(status.context == 'Ubuntu Packaging') {
|
||||
summary += addStatus(o, 'build', status.context, status.state);
|
||||
} else if(status.context == 'Linux source verification') {
|
||||
summary += addStatus(o, 'build', status.context, status.state);
|
||||
// Ignore Linux source verification -- we won't block automerge
|
||||
// for this at this point
|
||||
summary += addLog(`Skipping ${status.context}`);
|
||||
} else if(status.context == 'npm pack/publish') {
|
||||
summary += addStatus(o, 'build', status.context, status.state);
|
||||
} else if(status.context == 'Keyman Core - ARM64 test') {
|
||||
|
|
|
|||
19
HISTORY.md
19
HISTORY.md
|
|
@ -1,5 +1,24 @@
|
|||
# Keyman Version History
|
||||
|
||||
## 19.0.240 alpha 2026-05-28
|
||||
|
||||
* chore(web): add filename to link text of manual web tests (#16019)
|
||||
* docs(web): reformat and small fixes (#16021)
|
||||
|
||||
## 19.0.239 alpha 2026-05-27
|
||||
|
||||
* chore(web): remove obsolete file (#16013)
|
||||
|
||||
## 19.0.238 alpha 2026-05-26
|
||||
|
||||
* maint(linux): Don't block merge if source verification check fails (#16010)
|
||||
* maint(linux): fix Linux source tarball (#16011)
|
||||
|
||||
## 19.0.237 alpha 2026-05-22
|
||||
|
||||
* fix(windows): Ensure default locale always appears in list of locales (#15984)
|
||||
* chore(ios): update First Voices distribution certificate (#15993)
|
||||
|
||||
## 19.0.236 alpha 2026-05-21
|
||||
|
||||
* docs(developer): write up basic internal docs on kmc modules (#15982)
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
19.0.237
|
||||
19.0.241
|
||||
|
|
@ -247,7 +247,7 @@ function deregisterModel(modelID) {
|
|||
}
|
||||
|
||||
function enableSuggestions(model, suggestionType) {
|
||||
// Set the options first so that KMW's ModelManager can properly handle model enablement states
|
||||
// Set the options first so that KMW's ModelCache can properly handle model enablement states
|
||||
// the moment we actually register the new model.
|
||||
// Use console_debug
|
||||
console_debug('enableSuggestions(model, maySuggest='+suggestionType+')');
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ JUNIT_RESULTS="##teamcity[importData type='junit' path='keyman\android\KMEA\app\
|
|||
|
||||
builder_describe "Builds Keyman Engine for Android." \
|
||||
"@/web/src/app/webview" \
|
||||
"@/web/src/engine/sentry-manager" \
|
||||
"@/common/web/sentry-manager" \
|
||||
"clean" \
|
||||
"configure" \
|
||||
"build" \
|
||||
|
|
@ -81,7 +81,7 @@ if builder_start_action build:engine; then
|
|||
cp "$KEYMAN_WEB_ROOT/build/app/resources/osk/kmwosk.css" "$ENGINE_ASSETS/kmwosk.css"
|
||||
cp "$KEYMAN_WEB_ROOT/build/app/resources/osk/globe-hint.css" "$ENGINE_ASSETS/globe-hint.css"
|
||||
cp "$KEYMAN_WEB_ROOT/build/app/resources/osk/keymanweb-osk.ttf" "$ENGINE_ASSETS/keymanweb-osk.ttf"
|
||||
cp "$KEYMAN_ROOT/web/src/engine/sentry-manager/build/lib/index.js" "$ENGINE_ASSETS/keyman-sentry.js"
|
||||
cp "$KEYMAN_ROOT/common/web/sentry-manager/build/lib/index.js" "$ENGINE_ASSETS/keyman-sentry.js"
|
||||
|
||||
echo "Copying es6-shim polyfill"
|
||||
cp "$KEYMAN_ROOT/node_modules/es6-shim/es6-shim.min.js" "$ENGINE_ASSETS/es6-shim.min.js"
|
||||
|
|
|
|||
|
|
@ -11,12 +11,20 @@
|
|||
|
||||
#if defined(__LP64__) || defined(_LP64)
|
||||
/* 64-bit, g++ */
|
||||
#define KMX_64BIT
|
||||
#define KMX_REQUIRES_REALIGNMENT
|
||||
#endif
|
||||
|
||||
#if defined(_WIN64) && !defined(USE_64)
|
||||
/* 64-bit, Windows */
|
||||
#define KMX_64BIT
|
||||
#define KMX_REQUIRES_REALIGNMENT
|
||||
#endif
|
||||
|
||||
#if defined(__EMSCRIPTEN__)
|
||||
// Emscripten/WASM. Emscripten even though it uses 32-bit (and not 64-bit
|
||||
// pointers like the 64-bit architectures above) requires 32-bit alignment
|
||||
// for pointers which we don't always have in the KMX data from file
|
||||
// (see #12844).
|
||||
#define KMX_REQUIRES_REALIGNMENT
|
||||
#endif
|
||||
|
||||
typedef uint32_t KMX_DWORD;
|
||||
|
|
|
|||
|
|
@ -4,11 +4,13 @@ This folder contains a set of keyboards that are used by multiple projects to
|
|||
verify behaviour, both for compilation, and for runtime tests.
|
||||
|
||||
The following projects are known to use these keyboards:
|
||||
|
||||
* core -- .kmn files only, compiled with kmc during tests
|
||||
* developer/kmcmplib -- .kmn files, compiled for tests, and .kmx as reference
|
||||
* linux -- .kmn files for test steps only, .kmx files
|
||||
* web -- .kmn files for test steps, .kmx and .js files
|
||||
|
||||
The .kmx files were built with kmcomp, not kmc, in order to ensure that
|
||||
The .kmx and .js files were built with kmcomp, not kmc, in order to ensure that
|
||||
developer/kmcmplib gets a valid baseline reference.
|
||||
|
||||
Once kmc is stable, it is possible that we will be able to use the kmc npm
|
||||
|
|
@ -16,9 +18,34 @@ module to build .kmx for all projects that need them.
|
|||
|
||||
## Build parameters
|
||||
|
||||
Keyboards were built with debug information and no compiler version embedded,
|
||||
with kmcomp 16.0.138:
|
||||
The keyboards can be built with:
|
||||
|
||||
```bat
|
||||
for %d in (*.kmn) do kmcomp -no-compiler-version -d %d
|
||||
```bash
|
||||
./build.sh build
|
||||
```
|
||||
|
||||
This builds the keyboards with debug information and no compiler version
|
||||
embedded.
|
||||
|
||||
## Grouping of the test fixtures
|
||||
|
||||
Fixtures that test similar functionality are roughly grouped together.
|
||||
There is some overlap between different groups, so this was done
|
||||
mainly by test name.
|
||||
|
||||
| Name | Test group |
|
||||
|----------|------------------------------------------|
|
||||
| k_00xx_* | Tests that didn't fit in any other group |
|
||||
| k_01xx_* | Basic rules |
|
||||
| k_02xx_* | RALT |
|
||||
| k_03xx_* | deadkeys |
|
||||
| k_04xx_* | Using multiple groups |
|
||||
| k_05xx_* | Options |
|
||||
| k_06xx_* | System stores |
|
||||
| k_07xx_* | Caps related tests |
|
||||
| k_08xx_* | Context related |
|
||||
|
||||
## Description of file format
|
||||
|
||||
See [README.md](/core/tests/unit/kmx/README.md) in core for a description
|
||||
of the file format.
|
||||
|
|
|
|||
|
|
@ -9,324 +9,324 @@
|
|||
</Options>
|
||||
<Files>
|
||||
<File>
|
||||
<ID>id_k_000___null_keyboard</ID>
|
||||
<Filename>k_000___null_keyboard.kmn</Filename>
|
||||
<Filepath>k_000___null_keyboard.kmn</Filepath>
|
||||
<ID>id_k_0000___null_keyboard</ID>
|
||||
<Filename>k_0000___null_keyboard.kmn</Filename>
|
||||
<Filepath>k_0000___null_keyboard.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_001___basic_input_unicodei</ID>
|
||||
<Filename>k_001___basic_input_unicodei.kmn</Filename>
|
||||
<Filepath>k_001___basic_input_unicodei.kmn</Filepath>
|
||||
<ID>id_k_0100___basic_input_unicodei</ID>
|
||||
<Filename>k_0100___basic_input_unicodei.kmn</Filename>
|
||||
<Filepath>k_0100___basic_input_unicodei.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_002___basic_input_unicode</ID>
|
||||
<Filename>k_002___basic_input_unicode.kmn</Filename>
|
||||
<Filepath>k_002___basic_input_unicode.kmn</Filepath>
|
||||
<ID>id_k_0101___basic_input_unicode</ID>
|
||||
<Filename>k_0101___basic_input_unicode.kmn</Filename>
|
||||
<Filepath>k_0101___basic_input_unicode.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_003___nul</ID>
|
||||
<Filename>k_003___nul.kmn</Filename>
|
||||
<Filepath>k_003___nul.kmn</Filepath>
|
||||
<ID>id_k_0001___nul</ID>
|
||||
<Filename>k_0001___nul.kmn</Filename>
|
||||
<Filepath>k_0001___nul.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_004___basic_input__shift_2_</ID>
|
||||
<Filename>k_004___basic_input__shift_2_.kmn</Filename>
|
||||
<Filepath>k_004___basic_input__shift_2_.kmn</Filepath>
|
||||
<ID>id_k_0102___basic_input__shift_2_</ID>
|
||||
<Filename>k_0102___basic_input__shift_2_.kmn</Filename>
|
||||
<Filepath>k_0102___basic_input__shift_2_.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_005___nul_with_initial_context</ID>
|
||||
<Filename>k_005___nul_with_initial_context.kmn</Filename>
|
||||
<Filepath>k_005___nul_with_initial_context.kmn</Filepath>
|
||||
<ID>id_k_0002___nul_with_initial_context</ID>
|
||||
<Filename>k_0002___nul_with_initial_context.kmn</Filename>
|
||||
<Filepath>k_0002___nul_with_initial_context.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_006___vkey_input__shift_ctrl_</ID>
|
||||
<Filename>k_006___vkey_input__shift_ctrl_.kmn</Filename>
|
||||
<Filepath>k_006___vkey_input__shift_ctrl_.kmn</Filepath>
|
||||
<ID>id_k_0103___vkey_input__shift_ctrl_</ID>
|
||||
<Filename>k_0103___vkey_input__shift_ctrl_.kmn</Filename>
|
||||
<Filepath>k_0103___vkey_input__shift_ctrl_.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_007___vkey_input__ctrl_alt_</ID>
|
||||
<Filename>k_007___vkey_input__ctrl_alt_.kmn</Filename>
|
||||
<Filepath>k_007___vkey_input__ctrl_alt_.kmn</Filepath>
|
||||
<ID>id_k_0104___vkey_input__ctrl_alt_</ID>
|
||||
<Filename>k_0104___vkey_input__ctrl_alt_.kmn</Filename>
|
||||
<Filepath>k_0104___vkey_input__ctrl_alt_.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_008___vkey_input__ctrl_alt_2_</ID>
|
||||
<Filename>k_008___vkey_input__ctrl_alt_2_.kmn</Filename>
|
||||
<Filepath>k_008___vkey_input__ctrl_alt_2_.kmn</Filepath>
|
||||
<ID>id_k_0105___vkey_input__ctrl_alt_2_</ID>
|
||||
<Filename>k_0105___vkey_input__ctrl_alt_2_.kmn</Filename>
|
||||
<Filepath>k_0105___vkey_input__ctrl_alt_2_.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_012___ralt</ID>
|
||||
<Filename>k_012___ralt.kmn</Filename>
|
||||
<Filepath>k_012___ralt.kmn</Filepath>
|
||||
<ID>id_k_0200___ralt</ID>
|
||||
<Filename>k_0200___ralt.kmn</Filename>
|
||||
<Filepath>k_0200___ralt.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_013___deadkeys</ID>
|
||||
<Filename>k_013___deadkeys.kmn</Filename>
|
||||
<Filepath>k_013___deadkeys.kmn</Filepath>
|
||||
<ID>id_k_0300___deadkeys</ID>
|
||||
<Filename>k_0300___deadkeys.kmn</Filename>
|
||||
<Filepath>k_0300___deadkeys.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_014___groups_and_virtual_keys</ID>
|
||||
<Filename>k_014___groups_and_virtual_keys.kmn</Filename>
|
||||
<Filepath>k_014___groups_and_virtual_keys.kmn</Filepath>
|
||||
<ID>id_k_0400___groups_and_virtual_keys</ID>
|
||||
<Filename>k_0400___groups_and_virtual_keys.kmn</Filename>
|
||||
<Filepath>k_0400___groups_and_virtual_keys.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_015___ralt_2</ID>
|
||||
<Filename>k_015___ralt_2.kmn</Filename>
|
||||
<Filepath>k_015___ralt_2.kmn</Filepath>
|
||||
<ID>id_k_0201___ralt_2</ID>
|
||||
<Filename>k_0201___ralt_2.kmn</Filename>
|
||||
<Filepath>k_0201___ralt_2.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_017___space_mnemonic_kbd</ID>
|
||||
<Filename>k_017___space_mnemonic_kbd.kmn</Filename>
|
||||
<Filepath>k_017___space_mnemonic_kbd.kmn</Filepath>
|
||||
<ID>id_k_0004___space_mnemonic_kbd</ID>
|
||||
<Filename>k_0004___space_mnemonic_kbd.kmn</Filename>
|
||||
<Filepath>k_0004___space_mnemonic_kbd.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_018___nul_testing</ID>
|
||||
<Filename>k_018___nul_testing.kmn</Filename>
|
||||
<Filepath>k_018___nul_testing.kmn</Filepath>
|
||||
<ID>id_k_0003___nul_testing</ID>
|
||||
<Filename>k_0003___nul_testing.kmn</Filename>
|
||||
<Filepath>k_0003___nul_testing.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_019___multiple_deadkeys</ID>
|
||||
<Filename>k_019___multiple_deadkeys.kmn</Filename>
|
||||
<Filepath>k_019___multiple_deadkeys.kmn</Filepath>
|
||||
<ID>id_k_0301___multiple_deadkeys</ID>
|
||||
<Filename>k_0301___multiple_deadkeys.kmn</Filename>
|
||||
<Filepath>k_0301___multiple_deadkeys.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_020___deadkeys_and_backspace</ID>
|
||||
<Filename>k_020___deadkeys_and_backspace.kmn</Filename>
|
||||
<Filepath>k_020___deadkeys_and_backspace.kmn</Filepath>
|
||||
<ID>id_k_0302___deadkeys_and_backspace</ID>
|
||||
<Filename>k_0302___deadkeys_and_backspace.kmn</Filename>
|
||||
<Filepath>k_0302___deadkeys_and_backspace.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_021___options</ID>
|
||||
<Filename>k_021___options.kmn</Filename>
|
||||
<Filepath>k_021___options.kmn</Filepath>
|
||||
<ID>id_k_0500___options</ID>
|
||||
<Filename>k_0500___options.kmn</Filename>
|
||||
<Filepath>k_0500___options.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_022___options_with_preset</ID>
|
||||
<Filename>k_022___options_with_preset.kmn</Filename>
|
||||
<Filepath>k_022___options_with_preset.kmn</Filepath>
|
||||
<ID>id_k_0501___options_with_preset</ID>
|
||||
<Filename>k_0501___options_with_preset.kmn</Filename>
|
||||
<Filepath>k_0501___options_with_preset.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_023___options_with_save</ID>
|
||||
<Filename>k_023___options_with_save.kmn</Filename>
|
||||
<Filepath>k_023___options_with_save.kmn</Filepath>
|
||||
<ID>id_k_0502___options_with_save</ID>
|
||||
<Filename>k_0502___options_with_save.kmn</Filename>
|
||||
<Filepath>k_0502___options_with_save.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_024___options_with_save_and_preset</ID>
|
||||
<Filename>k_024___options_with_save_and_preset.kmn</Filename>
|
||||
<Filepath>k_024___options_with_save_and_preset.kmn</Filepath>
|
||||
<ID>id_k_0503___options_with_save_and_preset</ID>
|
||||
<Filename>k_0503___options_with_save_and_preset.kmn</Filename>
|
||||
<Filepath>k_0503___options_with_save_and_preset.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_025___options_with_reset</ID>
|
||||
<Filename>k_025___options_with_reset.kmn</Filename>
|
||||
<Filepath>k_025___options_with_reset.kmn</Filepath>
|
||||
<ID>id_k_0504___options_with_reset</ID>
|
||||
<Filename>k_0504___options_with_reset.kmn</Filename>
|
||||
<Filepath>k_0504___options_with_reset.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_026___system_stores</ID>
|
||||
<Filename>k_026___system_stores.kmn</Filename>
|
||||
<Filepath>k_026___system_stores.kmn</Filepath>
|
||||
<ID>id_k_0600___system_stores</ID>
|
||||
<Filename>k_0600___system_stores.kmn</Filename>
|
||||
<Filepath>k_0600___system_stores.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_027___system_stores_2</ID>
|
||||
<Filename>k_027___system_stores_2.kmn</Filename>
|
||||
<Filepath>k_027___system_stores_2.kmn</Filepath>
|
||||
<ID>id_k_0601___system_stores_2</ID>
|
||||
<Filename>k_0601___system_stores_2.kmn</Filename>
|
||||
<Filepath>k_0601___system_stores_2.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_028___smp</ID>
|
||||
<Filename>k_028___smp.kmn</Filename>
|
||||
<Filepath>k_028___smp.kmn</Filepath>
|
||||
<ID>id_k_0106___smp</ID>
|
||||
<Filename>k_0106___smp.kmn</Filename>
|
||||
<Filepath>k_0106___smp.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_029___beep</ID>
|
||||
<Filename>k_029___beep.kmn</Filename>
|
||||
<Filepath>k_029___beep.kmn</Filepath>
|
||||
<ID>id_k_0005___beep</ID>
|
||||
<Filename>k_0005___beep.kmn</Filename>
|
||||
<Filepath>k_0005___beep.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_030___multiple_groups</ID>
|
||||
<Filename>k_030___multiple_groups.kmn</Filename>
|
||||
<Filepath>k_030___multiple_groups.kmn</Filepath>
|
||||
<ID>id_k_0401___multiple_groups</ID>
|
||||
<Filename>k_0401___multiple_groups.kmn</Filename>
|
||||
<Filepath>k_0401___multiple_groups.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_031___caps_lock</ID>
|
||||
<Filename>k_031___caps_lock.kmn</Filename>
|
||||
<Filepath>k_031___caps_lock.kmn</Filepath>
|
||||
<ID>id_k_0700___caps_lock</ID>
|
||||
<Filename>k_0700___caps_lock.kmn</Filename>
|
||||
<Filepath>k_0700___caps_lock.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_032___caps_control</ID>
|
||||
<Filename>k_032___caps_control.kmn</Filename>
|
||||
<Filepath>k_032___caps_control.kmn</Filepath>
|
||||
<ID>id_k_0701___caps_control</ID>
|
||||
<Filename>k_0701___caps_control.kmn</Filename>
|
||||
<Filepath>k_0701___caps_control.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_033___caps_always_off</ID>
|
||||
<Filename>k_033___caps_always_off.kmn</Filename>
|
||||
<Filepath>k_033___caps_always_off.kmn</Filepath>
|
||||
<ID>id_k_0702___caps_always_off</ID>
|
||||
<Filename>k_0702___caps_always_off.kmn</Filename>
|
||||
<Filepath>k_0702___caps_always_off.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_034___options_double_set_reset</ID>
|
||||
<Filename>k_034___options_double_set_reset.kmn</Filename>
|
||||
<Filepath>k_034___options_double_set_reset.kmn</Filepath>
|
||||
<ID>id_k_0505___options_double_set_reset</ID>
|
||||
<Filename>k_0505___options_double_set_reset.kmn</Filename>
|
||||
<Filepath>k_0505___options_double_set_reset.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_035___options_double_set_staged</ID>
|
||||
<Filename>k_035___options_double_set_staged.kmn</Filename>
|
||||
<Filepath>k_035___options_double_set_staged.kmn</Filepath>
|
||||
<ID>id_k_0506___options_double_set_staged</ID>
|
||||
<Filename>k_0506___options_double_set_staged.kmn</Filename>
|
||||
<Filepath>k_0506___options_double_set_staged.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_036___options___double_reset_staged</ID>
|
||||
<Filename>k_036___options___double_reset_staged.kmn</Filename>
|
||||
<Filepath>k_036___options___double_reset_staged.kmn</Filepath>
|
||||
<ID>id_k_0507___options___double_reset_staged</ID>
|
||||
<Filename>k_0507___options___double_reset_staged.kmn</Filename>
|
||||
<Filepath>k_0507___options___double_reset_staged.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_037___options___double_reset</ID>
|
||||
<Filename>k_037___options___double_reset.kmn</Filename>
|
||||
<Filepath>k_037___options___double_reset.kmn</Filepath>
|
||||
<ID>id_k_0508___options___double_reset</ID>
|
||||
<Filename>k_0508___options___double_reset.kmn</Filename>
|
||||
<Filepath>k_0508___options___double_reset.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_038___punctkeys</ID>
|
||||
<Filename>k_038___punctkeys.kmn</Filename>
|
||||
<Filepath>k_038___punctkeys.kmn</Filepath>
|
||||
<ID>id_k_0107___punctkeys</ID>
|
||||
<Filename>k_0107___punctkeys.kmn</Filename>
|
||||
<Filepath>k_0107___punctkeys.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_039___generic_ctrlalt</ID>
|
||||
<Filename>k_039___generic_ctrlalt.kmn</Filename>
|
||||
<Filepath>k_039___generic_ctrlalt.kmn</Filepath>
|
||||
<ID>id_k_0203___generic_ctrlalt</ID>
|
||||
<Filename>k_0203___generic_ctrlalt.kmn</Filename>
|
||||
<Filepath>k_0203___generic_ctrlalt.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_040___long_context</ID>
|
||||
<Filename>k_040___long_context.kmn</Filename>
|
||||
<Filepath>k_040___long_context.kmn</Filepath>
|
||||
<ID>id_k_0800___long_context</ID>
|
||||
<Filename>k_0800___long_context.kmn</Filename>
|
||||
<Filepath>k_0800___long_context.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_041___long_context_and_deadkeys</ID>
|
||||
<Filename>k_041___long_context_and_deadkeys.kmn</Filename>
|
||||
<Filepath>k_041___long_context_and_deadkeys.kmn</Filepath>
|
||||
<ID>id_k_0801___long_context_and_deadkeys</ID>
|
||||
<Filename>k_0801___long_context_and_deadkeys.kmn</Filename>
|
||||
<Filepath>k_0801___long_context_and_deadkeys.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_042___long_context_and_split_deadkeys</ID>
|
||||
<Filename>k_042___long_context_and_split_deadkeys.kmn</Filename>
|
||||
<Filepath>k_042___long_context_and_split_deadkeys.kmn</Filepath>
|
||||
<ID>id_k_0802___long_context_and_split_deadkeys</ID>
|
||||
<Filename>k_0802___long_context_and_split_deadkeys.kmn</Filename>
|
||||
<Filepath>k_0802___long_context_and_split_deadkeys.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_043___output_and_keystroke</ID>
|
||||
<Filename>k_043___output_and_keystroke.kmn</Filename>
|
||||
<Filepath>k_043___output_and_keystroke.kmn</Filepath>
|
||||
<ID>id_k_0402___output_and_keystroke</ID>
|
||||
<Filename>k_0402___output_and_keystroke.kmn</Filename>
|
||||
<Filepath>k_0402___output_and_keystroke.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_044___if_and_context</ID>
|
||||
<Filename>k_044___if_and_context.kmn</Filename>
|
||||
<Filepath>k_044___if_and_context.kmn</Filepath>
|
||||
<ID>id_k_0803___if_and_context</ID>
|
||||
<Filename>k_0803___if_and_context.kmn</Filename>
|
||||
<Filepath>k_0803___if_and_context.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_045___deadkey_and_context</ID>
|
||||
<Filename>k_045___deadkey_and_context.kmn</Filename>
|
||||
<Filepath>k_045___deadkey_and_context.kmn</Filepath>
|
||||
<ID>id_k_0804___deadkey_and_context</ID>
|
||||
<Filename>k_0804___deadkey_and_context.kmn</Filename>
|
||||
<Filepath>k_0804___deadkey_and_context.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_046___deadkey_and_contextex</ID>
|
||||
<Filename>k_046___deadkey_and_contextex.kmn</Filename>
|
||||
<Filepath>k_046___deadkey_and_contextex.kmn</Filepath>
|
||||
<ID>id_k_0805___deadkey_and_contextex</ID>
|
||||
<Filename>k_0805___deadkey_and_contextex.kmn</Filename>
|
||||
<Filepath>k_0805___deadkey_and_contextex.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_047___caps_always_off_initially_on</ID>
|
||||
<Filename>k_047___caps_always_off_initially_on.kmn</Filename>
|
||||
<Filepath>k_047___caps_always_off_initially_on.kmn</Filepath>
|
||||
<ID>id_k_0703___caps_always_off_initially_on</ID>
|
||||
<Filename>k_0703___caps_always_off_initially_on.kmn</Filename>
|
||||
<Filepath>k_0703___caps_always_off_initially_on.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_048___modifier_keys_keep_context</ID>
|
||||
<Filename>k_048___modifier_keys_keep_context.kmn</Filename>
|
||||
<Filepath>k_048___modifier_keys_keep_context.kmn</Filepath>
|
||||
<ID>id_k_0806___modifier_keys_keep_context</ID>
|
||||
<Filename>k_0806___modifier_keys_keep_context.kmn</Filename>
|
||||
<Filepath>k_0806___modifier_keys_keep_context.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_k_049___enter_invalidates_context</ID>
|
||||
<Filename>k_049___enter_invalidates_context.kmn</Filename>
|
||||
<Filepath>k_049___enter_invalidates_context.kmn</Filepath>
|
||||
<ID>id_k_0807___enter_invalidates_context</ID>
|
||||
<Filename>k_0807___enter_invalidates_context.kmn</Filename>
|
||||
<Filepath>k_0807___enter_invalidates_context.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
</File>
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ builder_parse "$@"
|
|||
|
||||
builder_describe_outputs \
|
||||
configure kmcomp/kmcomp.exe \
|
||||
build k_000___null_keyboard.kmx
|
||||
build k_0000___null_keyboard.kmx
|
||||
|
||||
do_configure() {
|
||||
mkdir -p kmcomp
|
||||
|
|
@ -25,9 +25,15 @@ do_configure() {
|
|||
}
|
||||
|
||||
do_build() {
|
||||
local name
|
||||
local name jsname
|
||||
for name in *.kmn; do
|
||||
./kmcomp/kmcomp.exe -no-compiler-version -d "$name"
|
||||
jsname="$(basename "${name%.kmn}").js"
|
||||
./kmcomp/kmcomp.exe -no-compiler-version -d "${name}"
|
||||
if [[ "${name}" != "k_0812___nul_and_contextex.kmn" ]]; then
|
||||
# k_0812___nul_and_contextex.kmn fails to compile because contextex
|
||||
# is not currently supported in context() match, so we skip it
|
||||
./kmcomp/kmcomp.exe -no-compiler-version -d "${name}" "${jsname}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
|
|
|
|||
28
common/test/keyboards/baseline/k_0000___null_keyboard.js
Normal file
28
common/test/keyboards/baseline/k_0000___null_keyboard.js
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
|
||||
KeymanWeb.KR(new Keyboard_k_0000___null_keyboard());
|
||||
|
||||
function Keyboard_k_0000___null_keyboard()
|
||||
{
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0000___null_keyboard";
|
||||
this.KN="0000 - null keyboard";
|
||||
this.KMINVER="6.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=0;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0x0000;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.g_Main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
return r;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
store(&NAME) '000 - null keyboard'
|
||||
store(&NAME) '0000 - null keyboard'
|
||||
c Description: Tests null keyboard
|
||||
c keys: [K_A][RALT K_B][SHIFT K_C]
|
||||
c expected: aC
|
||||
BIN
common/test/keyboards/baseline/k_0000___null_keyboard.kmx
Normal file
BIN
common/test/keyboards/baseline/k_0000___null_keyboard.kmx
Normal file
Binary file not shown.
42
common/test/keyboards/baseline/k_0001___nul.js
Normal file
42
common/test/keyboards/baseline/k_0001___nul.js
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
|
||||
KeymanWeb.KR(new Keyboard_k_0001___nul());
|
||||
|
||||
function Keyboard_k_0001___nul()
|
||||
{
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0001___nul";
|
||||
this.KN="0001 - nul";
|
||||
this.KMINVER="6.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=0;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0x0000;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.g_Main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
if(k.KKM(e, 0x4000, 0x41)) {
|
||||
if(k.KN(0,t)){
|
||||
r=m=1; // Line 13
|
||||
k.KO(0,t,"b");
|
||||
}
|
||||
else if(k.KCM(1,t,"b",1)){
|
||||
r=m=1; // Line 14
|
||||
k.KO(1,t,"c");
|
||||
}
|
||||
else if(1){
|
||||
r=m=1; // Line 15
|
||||
k.KO(0,t,"d");
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
store(&NAME) '003 - nul'
|
||||
store(&NAME) '0001 - nul'
|
||||
c Description: Tests nul context
|
||||
c keys: [K_A][K_A][K_A]
|
||||
c expected: cd
|
||||
c context:
|
||||
c context:
|
||||
|
||||
store(&version) '6.0'
|
||||
|
||||
BIN
common/test/keyboards/baseline/k_0001___nul.kmx
Normal file
BIN
common/test/keyboards/baseline/k_0001___nul.kmx
Normal file
Binary file not shown.
|
|
@ -0,0 +1,42 @@
|
|||
|
||||
KeymanWeb.KR(new Keyboard_k_0002___nul_with_initial_context());
|
||||
|
||||
function Keyboard_k_0002___nul_with_initial_context()
|
||||
{
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0002___nul_with_initial_context";
|
||||
this.KN="0002 - nul with initial context";
|
||||
this.KMINVER="6.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=0;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0x0000;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.g_Main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
if(k.KKM(e, 0x4000, 0x41)) {
|
||||
if(k.KN(0,t)){
|
||||
r=m=1; // Line 13
|
||||
k.KO(0,t,"b");
|
||||
}
|
||||
else if(k.KCM(1,t,"b",1)){
|
||||
r=m=1; // Line 14
|
||||
k.KO(1,t,"c");
|
||||
}
|
||||
else if(1){
|
||||
r=m=1; // Line 15
|
||||
k.KO(0,t,"d");
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
store(&NAME) '005 - nul with initial context'
|
||||
store(&NAME) '0002 - nul with initial context'
|
||||
c Description: Tests nul context with an initial context supplied
|
||||
c keys: [K_A][K_A]
|
||||
c expected: xdd
|
||||
Binary file not shown.
34
common/test/keyboards/baseline/k_0003___nul_testing.js
Normal file
34
common/test/keyboards/baseline/k_0003___nul_testing.js
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
|
||||
KeymanWeb.KR(new Keyboard_k_0003___nul_testing());
|
||||
|
||||
function Keyboard_k_0003___nul_testing()
|
||||
{
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0003___nul_testing";
|
||||
this.KN="0003 - nul testing";
|
||||
this.KMINVER="9.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=0;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0x0000;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.g_Main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
if(k.KKM(e, 0x4000, 0x41)) {
|
||||
if(k.KN(0,t)){
|
||||
r=m=1; // Line 12
|
||||
k.KO(0,t,"OK");
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
store(&NAME) '018 - nul testing'
|
||||
store(&NAME) '0003 - nul testing'
|
||||
c Description: Tests the processing of nul in LHS of rules
|
||||
c keys: [K_A][K_A]
|
||||
c expected: OKa
|
||||
BIN
common/test/keyboards/baseline/k_0003___nul_testing.kmx
Normal file
BIN
common/test/keyboards/baseline/k_0003___nul_testing.kmx
Normal file
Binary file not shown.
|
|
@ -0,0 +1,46 @@
|
|||
|
||||
KeymanWeb.KR(new Keyboard_k_0004___space_mnemonic_kbd());
|
||||
|
||||
function Keyboard_k_0004___space_mnemonic_kbd()
|
||||
{
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0004___space_mnemonic_kbd";
|
||||
this.KN="0004 - space mnemonic kbd";
|
||||
this.KMINVER="9.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=1;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0x0000;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_main_0(t,e);
|
||||
};
|
||||
this.g_main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
if(k.KKM(e, 0x4000, 0x20)) {
|
||||
if(k.KCM(2,t,"ab",2)){
|
||||
r=m=1; // Line 14
|
||||
k.KO(2,t,"X");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x64)) {
|
||||
if(k.KCM(2,t,"c ",2)){
|
||||
r=m=1; // Line 15
|
||||
k.KO(2,t,"Y");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x65)) {
|
||||
if(k.KCM(2,t," d",2)){
|
||||
r=m=1; // Line 16
|
||||
k.KO(2,t,"Z");
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
store(&NAME) '017 - space mnemonic kbd'
|
||||
store(&NAME) '0004 - space mnemonic kbd'
|
||||
c Description: Tests Space handling in mnemonic keyboards (failed with Win 98)
|
||||
c keys: [K_A][K_B][K_SPACE][K_C][K_SPACE][K_D][K_SPACE][K_D][K_E]
|
||||
c expected: XYZ
|
||||
BIN
common/test/keyboards/baseline/k_0004___space_mnemonic_kbd.kmx
Normal file
BIN
common/test/keyboards/baseline/k_0004___space_mnemonic_kbd.kmx
Normal file
Binary file not shown.
40
common/test/keyboards/baseline/k_0005___beep.js
Normal file
40
common/test/keyboards/baseline/k_0005___beep.js
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
if(typeof keyman === 'undefined') {
|
||||
console.log('Keyboard requires KeymanWeb 10.0 or later');
|
||||
if(typeof tavultesoft !== 'undefined') tavultesoft.keymanweb.util.alert("This keyboard requires KeymanWeb 10.0 or later");
|
||||
} else {
|
||||
KeymanWeb.KR(new Keyboard_k_0005___beep());
|
||||
}
|
||||
function Keyboard_k_0005___beep()
|
||||
{
|
||||
var modCodes = keyman.osk.modifierCodes;
|
||||
var keyCodes = keyman.osk.keyCodes;
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0005___beep";
|
||||
this.KN="0005 - beep";
|
||||
this.KMINVER="10.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=0;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0 /* 0x0000 */;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.g_Main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
if(k.KKM(e, modCodes.VIRTUAL_KEY /* 0x4000 */, keyCodes.K_1 /* 0x31 */)) {
|
||||
if(1){
|
||||
r=m=1; // Line 13
|
||||
k.KDC(0,t);
|
||||
k.KB(t);
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
store(&NAME) '029 - beep'
|
||||
store(&NAME) '0005 - beep'
|
||||
c Description: Tests beep
|
||||
c keys: [K_1]
|
||||
c expected: \b
|
||||
c context:
|
||||
c context:
|
||||
|
||||
store(&version) '10.0'
|
||||
|
||||
BIN
common/test/keyboards/baseline/k_0005___beep.kmx
Normal file
BIN
common/test/keyboards/baseline/k_0005___beep.kmx
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,52 @@
|
|||
|
||||
KeymanWeb.KR(new Keyboard_k_0100___basic_input_unicodei());
|
||||
|
||||
function Keyboard_k_0100___basic_input_unicodei()
|
||||
{
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0100___basic_input_unicodei";
|
||||
this.KN="0100 - basic input UnicodeI";
|
||||
this.KMINVER="6.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=0;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0x0010;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.g_Main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
if(k.KKM(e, 0x4010, 0x41)) {
|
||||
if(1){
|
||||
r=m=1; // Line 13
|
||||
k.KO(0,t,"a");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4010, 0x42)) {
|
||||
if(1){
|
||||
r=m=1; // Line 14
|
||||
k.KO(0,t,"b");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4010, 0x43)) {
|
||||
if(1){
|
||||
r=m=1; // Line 15
|
||||
k.KO(0,t,"c");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4010, 0x46)) {
|
||||
if(k.KCM(2,t,"DE",2)){
|
||||
r=m=1; // Line 17
|
||||
k.KO(2,t,"def");
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
store(&NAME) '001 - basic input UnicodeI'
|
||||
store(&NAME) '0100 - basic input UnicodeI'
|
||||
c Description: Tests basic input with simple context rules, ANSI characters used only
|
||||
c keys: [SHIFT K_A][SHIFT K_B][SHIFT K_C][SHIFT K_SPACE][SHIFT K_D][SHIFT K_E][SHIFT K_F]
|
||||
c expected: abc def
|
||||
c context:
|
||||
c context:
|
||||
|
||||
store(&version) '6.0'
|
||||
|
||||
BIN
common/test/keyboards/baseline/k_0100___basic_input_unicodei.kmx
Normal file
BIN
common/test/keyboards/baseline/k_0100___basic_input_unicodei.kmx
Normal file
Binary file not shown.
|
|
@ -0,0 +1,52 @@
|
|||
|
||||
KeymanWeb.KR(new Keyboard_k_0101___basic_input_unicode());
|
||||
|
||||
function Keyboard_k_0101___basic_input_unicode()
|
||||
{
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0101___basic_input_unicode";
|
||||
this.KN="0101 - basic input Unicode";
|
||||
this.KMINVER="6.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=0;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0x0010;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.g_Main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
if(k.KKM(e, 0x4010, 0x41)) {
|
||||
if(1){
|
||||
r=m=1; // Line 13
|
||||
k.KO(0,t,"ก");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4010, 0x42)) {
|
||||
if(1){
|
||||
r=m=1; // Line 14
|
||||
k.KO(0,t,"ข");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4010, 0x43)) {
|
||||
if(1){
|
||||
r=m=1; // Line 15
|
||||
k.KO(0,t,"ฃ");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4010, 0x46)) {
|
||||
if(k.KCM(2,t,"DE",2)){
|
||||
r=m=1; // Line 17
|
||||
k.KO(2,t,"คฅฆ");
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
store(&NAME) '002 - basic input Unicode'
|
||||
store(&NAME) '0101 - basic input Unicode'
|
||||
c Description: Tests basic input with simple context rules (Unicode)
|
||||
c keys: [SHIFT K_A][SHIFT K_B][SHIFT K_C][SHIFT K_SPACE][SHIFT K_D][SHIFT K_E][SHIFT K_F]
|
||||
c expected: \u0E01\u0E02\u0E03\u0020\u0E04\u0E05\u0E06
|
||||
BIN
common/test/keyboards/baseline/k_0101___basic_input_unicode.kmx
Normal file
BIN
common/test/keyboards/baseline/k_0101___basic_input_unicode.kmx
Normal file
Binary file not shown.
|
|
@ -0,0 +1,52 @@
|
|||
|
||||
KeymanWeb.KR(new Keyboard_k_0102___basic_input__shift_2_());
|
||||
|
||||
function Keyboard_k_0102___basic_input__shift_2_()
|
||||
{
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0102___basic_input__shift_2_";
|
||||
this.KN="0102 - basic input (shift 2)";
|
||||
this.KMINVER="6.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=0;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0x0010;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.g_Main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
if(k.KKM(e, 0x4010, 0x41)) {
|
||||
if(1){
|
||||
r=m=1; // Line 13
|
||||
k.KO(0,t,"ก");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4010, 0x42)) {
|
||||
if(1){
|
||||
r=m=1; // Line 14
|
||||
k.KO(0,t,"ข");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4010, 0x43)) {
|
||||
if(1){
|
||||
r=m=1; // Line 15
|
||||
k.KO(0,t,"ฃ");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4010, 0x46)) {
|
||||
if(k.KCM(2,t,"DE",2)){
|
||||
r=m=1; // Line 17
|
||||
k.KO(2,t,"คฅฆ");
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
store(&NAME) '004 - basic input (shift 2)'
|
||||
store(&NAME) '0102 - basic input (shift 2)'
|
||||
c Description: Tests basic vkey input with shift only (Unicode)
|
||||
c keys: [SHIFT K_A][SHIFT K_B][SHIFT K_C][SHIFT K_SPACE][SHIFT K_D][SHIFT K_E][SHIFT K_F]
|
||||
c expected: \u0E01\u0E02\u0E03\u0020\u0E04\u0E05\u0E06
|
||||
c context:
|
||||
c context:
|
||||
|
||||
store(&version) '6.0'
|
||||
|
||||
begin Unicode > use(Main)
|
||||
|
||||
|
||||
group(Main) using keys
|
||||
|
||||
+ [SHIFT K_A] > U+0E01
|
||||
Binary file not shown.
|
|
@ -0,0 +1,52 @@
|
|||
|
||||
KeymanWeb.KR(new Keyboard_k_0103___vkey_input__shift_ctrl_());
|
||||
|
||||
function Keyboard_k_0103___vkey_input__shift_ctrl_()
|
||||
{
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0103___vkey_input__shift_ctrl_";
|
||||
this.KN="0103 - vkey input (shift ctrl)";
|
||||
this.KMINVER="6.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=0;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0x0030;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.g_Main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
if(k.KKM(e, 0x4030, 0x41)) {
|
||||
if(1){
|
||||
r=m=1; // Line 13
|
||||
k.KO(0,t,"ก");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4010, 0x42)) {
|
||||
if(1){
|
||||
r=m=1; // Line 14
|
||||
k.KO(0,t,"ข");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4030, 0x43)) {
|
||||
if(1){
|
||||
r=m=1; // Line 15
|
||||
k.KO(0,t,"ฃ");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4010, 0x46)) {
|
||||
if(k.KCM(2,t,"DE",2)){
|
||||
r=m=1; // Line 17
|
||||
k.KO(2,t,"คฅฆ");
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
store(&NAME) '006 - vkey input (shift ctrl)'
|
||||
store(&NAME) '0103 - vkey input (shift ctrl)'
|
||||
c Description: Tests basic vkey input with shift and control (Unicode)
|
||||
c keys: [LCTRL SHIFT K_A][SHIFT K_B][RCTRL SHIFT K_C][K_SPACE][SHIFT K_D][SHIFT K_E][SHIFT K_F]
|
||||
c expected: \u0E01\u0E02\u0E03\u0020\u0E04\u0E05\u0E06
|
||||
c context:
|
||||
c context:
|
||||
|
||||
store(&version) '6.0'
|
||||
|
||||
begin Unicode > use(Main)
|
||||
|
||||
|
||||
group(Main) using keys
|
||||
|
||||
+ [SHIFT CTRL K_A] > U+0E01
|
||||
Binary file not shown.
|
|
@ -0,0 +1,52 @@
|
|||
|
||||
KeymanWeb.KR(new Keyboard_k_0104___vkey_input__ctrl_alt_());
|
||||
|
||||
function Keyboard_k_0104___vkey_input__ctrl_alt_()
|
||||
{
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0104___vkey_input__ctrl_alt_";
|
||||
this.KN="0104 - vkey input (ctrl alt)";
|
||||
this.KMINVER="6.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=0;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0x0060;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.g_Main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
if(k.KKM(e, 0x4060, 0x41)) {
|
||||
if(1){
|
||||
r=m=1; // Line 13
|
||||
k.KO(0,t,"ก");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x42)) {
|
||||
if(1){
|
||||
r=m=1; // Line 14
|
||||
k.KO(0,t,"ข");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4060, 0x43)) {
|
||||
if(1){
|
||||
r=m=1; // Line 15
|
||||
k.KO(0,t,"ฃ");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4060, 0x46)) {
|
||||
if(k.KCM(2,t,"de",2)){
|
||||
r=m=1; // Line 17
|
||||
k.KO(2,t,"คฅฆ");
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,15 +1,15 @@
|
|||
store(&NAME) '007 - vkey input (ctrl alt)'
|
||||
store(&NAME) '0104 - vkey input (ctrl alt)'
|
||||
c Description: Tests basic vkey input with control and alt (Unicode)
|
||||
c keys: [LCTRL LALT K_A][K_B][RCTRL RALT K_C][K_SPACE][K_D][K_E][LCTRL LALT K_F]
|
||||
c expected: \u0E01\u0E02\u0E03\u0020\u0E04\u0E05\u0E06
|
||||
c context:
|
||||
c context:
|
||||
|
||||
store(&version) '6.0'
|
||||
|
||||
begin Unicode > use(Main)
|
||||
|
||||
group(Main) using keys
|
||||
|
||||
|
||||
+ [CTRL ALT K_A] > U+0E01
|
||||
+ [K_B] > U+0E02
|
||||
+ [CTRL ALT K_C] > U+0E03
|
||||
Binary file not shown.
|
|
@ -0,0 +1,40 @@
|
|||
|
||||
KeymanWeb.KR(new Keyboard_k_0105___vkey_input__ctrl_alt_2_());
|
||||
|
||||
function Keyboard_k_0105___vkey_input__ctrl_alt_2_()
|
||||
{
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0105___vkey_input__ctrl_alt_2_";
|
||||
this.KN="0105 - vkey input (ctrl alt 2)";
|
||||
this.KMINVER="6.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=0;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0x0060;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.g_Main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
if(k.KKM(e, 0x4060, 0x41)) {
|
||||
if(1){
|
||||
r=m=1; // Line 14
|
||||
k.KO(0,t,"ก");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4060, 0x43)) {
|
||||
if(1){
|
||||
r=m=1; // Line 15
|
||||
k.KO(0,t,"ฃ");
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
store(&NAME) '008 - vkey input (ctrl alt 2)'
|
||||
store(&NAME) '0105 - vkey input (ctrl alt 2)'
|
||||
c Description: Tests basic vkey input with control and alt (Unicode)
|
||||
c keys: [LCTRL LALT K_A][LCTRL LALT K_B][LCTRL LALT K_C]
|
||||
c expected: \u0E01\u0E03
|
||||
Binary file not shown.
80
common/test/keyboards/baseline/k_0106___smp.js
Normal file
80
common/test/keyboards/baseline/k_0106___smp.js
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
if(typeof keyman === 'undefined') {
|
||||
console.log('Keyboard requires KeymanWeb 10.0 or later');
|
||||
if(typeof tavultesoft !== 'undefined') tavultesoft.keymanweb.util.alert("This keyboard requires KeymanWeb 10.0 or later");
|
||||
} else {
|
||||
KeymanWeb.KR(new Keyboard_k_0106___smp());
|
||||
}
|
||||
function Keyboard_k_0106___smp()
|
||||
{
|
||||
var modCodes = keyman.osk.modifierCodes;
|
||||
var keyCodes = keyman.osk.keyCodes;
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0106___smp";
|
||||
this.KN="0106 - smp";
|
||||
this.KMINVER="10.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=0;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0 /* 0x0000 */;
|
||||
this.KS=1;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.g_Main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
if(k.KKM(e, modCodes.VIRTUAL_KEY /* 0x4000 */, keyCodes.K_1 /* 0x31 */)) {
|
||||
if(1){
|
||||
r=m=1; // Line 15
|
||||
k.KDC(0,t);
|
||||
k.KO(-1,t,"🙂");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, modCodes.VIRTUAL_KEY /* 0x4000 */, keyCodes.K_2 /* 0x32 */)) {
|
||||
if(k.KFCM(1,t,['🙂'])){
|
||||
r=m=1; // Line 16
|
||||
k.KDC(1,t);
|
||||
k.KO(-1,t,"🙂hi😀");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, modCodes.VIRTUAL_KEY /* 0x4000 */, keyCodes.K_3 /* 0x33 */)) {
|
||||
if(k.KFCM(1,t,['😀'])){
|
||||
r=m=1; // Line 17
|
||||
k.KDC(1,t);
|
||||
k.KO(-1,t,"x");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, modCodes.VIRTUAL_KEY /* 0x4000 */, keyCodes.K_4 /* 0x34 */)) {
|
||||
if(k.KFCM(4,t,['🙂','h','i','x'])){
|
||||
r=m=1; // Line 18
|
||||
k.KDC(4,t);
|
||||
k.KO(-1,t,"😁y");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, modCodes.VIRTUAL_KEY /* 0x4000 */, keyCodes.K_5 /* 0x35 */)) {
|
||||
if(1){
|
||||
r=m=1; // Line 22
|
||||
k.KDC(0,t);
|
||||
k.KO(-1,t,"𐌳");
|
||||
r=this.g_second_1(t,e);
|
||||
m=2;
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
this.g_second_1=function(t,e) {
|
||||
var k=KeymanWeb,r=1,m=0;
|
||||
if(k.KFCM(1,t,['𐌳'])){
|
||||
m=1; // Line 26
|
||||
k.KDC(1,t);
|
||||
k.KO(-1,t,"x");
|
||||
}
|
||||
return r;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
store(&NAME) '028 - smp'
|
||||
store(&NAME) '0106 - smp'
|
||||
c Description: Tests SMP characters; see #4361 [1-4], #5561 [5]
|
||||
c keys: [K_1][K_2][K_3][K_4][K_5]
|
||||
c expected: \U0001F601yx
|
||||
BIN
common/test/keyboards/baseline/k_0106___smp.kmx
Normal file
BIN
common/test/keyboards/baseline/k_0106___smp.kmx
Normal file
Binary file not shown.
100
common/test/keyboards/baseline/k_0107___punctkeys.js
Normal file
100
common/test/keyboards/baseline/k_0107___punctkeys.js
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
|
||||
KeymanWeb.KR(new Keyboard_k_0107___punctkeys());
|
||||
|
||||
function Keyboard_k_0107___punctkeys()
|
||||
{
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0107___punctkeys";
|
||||
this.KN="0107 - punctkeys";
|
||||
this.KMINVER="6.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=0;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0x0000;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.g_Main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
if(k.KKM(e, 0x4000, 0xE2)) {
|
||||
if(k.KCM(1,t,"a",1)){
|
||||
r=m=1; // Line 24
|
||||
k.KO(1,t,"p");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0xDE)) {
|
||||
if(k.KCM(1,t,"a",1)){
|
||||
r=m=1; // Line 23
|
||||
k.KO(1,t,"o");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0xBC)) {
|
||||
if(k.KCM(1,t,"a",1)){
|
||||
r=m=1; // Line 15
|
||||
k.KO(1,t,"g");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0xBD)) {
|
||||
if(k.KCM(1,t,"a",1)){
|
||||
r=m=1; // Line 16
|
||||
k.KO(1,t,"h");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0xBE)) {
|
||||
if(k.KCM(1,t,"a",1)){
|
||||
r=m=1; // Line 17
|
||||
k.KO(1,t,"i");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0xBF)) {
|
||||
if(k.KCM(1,t,"a",1)){
|
||||
r=m=1; // Line 18
|
||||
k.KO(1,t,"j");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0xBA)) {
|
||||
if(k.KCM(1,t,"a",1)){
|
||||
r=m=1; // Line 13
|
||||
k.KO(1,t,"e");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0xBB)) {
|
||||
if(k.KCM(1,t,"a",1)){
|
||||
r=m=1; // Line 14
|
||||
k.KO(1,t,"f");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0xDB)) {
|
||||
if(k.KCM(1,t,"a",1)){
|
||||
r=m=1; // Line 20
|
||||
k.KO(1,t,"l");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0xDC)) {
|
||||
if(k.KCM(1,t,"a",1)){
|
||||
r=m=1; // Line 21
|
||||
k.KO(1,t,"m");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0xDD)) {
|
||||
if(k.KCM(1,t,"a",1)){
|
||||
r=m=1; // Line 22
|
||||
k.KO(1,t,"n");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0xC0)) {
|
||||
if(k.KCM(1,t,"a",1)){
|
||||
r=m=1; // Line 19
|
||||
k.KO(1,t,"k");
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
store(&NAME) '038 - punctkeys'
|
||||
store(&NAME) '0107 - punctkeys'
|
||||
c Description: Tests punctuation keys (Unicode)
|
||||
c keys: [K_A][K_COLON][K_A][K_EQUAL][K_A][K_COMMA][K_A][K_HYPHEN][K_A][K_PERIOD][K_A][K_SLASH][K_A][K_BKQUOTE][K_A][K_LBRKT][K_A][K_BKSLASH][K_A][K_RBRKT][K_A][K_QUOTE][K_A][K_oE2]
|
||||
c expected: efghijklmnop
|
||||
c context:
|
||||
c context:
|
||||
|
||||
store(&version) '6.0'
|
||||
|
||||
begin Unicode > use(Main)
|
||||
|
||||
|
||||
group(Main) using keys
|
||||
|
||||
'a' + [K_COLON] > 'e'
|
||||
BIN
common/test/keyboards/baseline/k_0107___punctkeys.kmx
Normal file
BIN
common/test/keyboards/baseline/k_0107___punctkeys.kmx
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,12 +0,0 @@
|
|||
store(&NAME) '015 - ralt 2'
|
||||
c Description: Tests Right Alt processing with non-US kbds.
|
||||
c keys: [K_A][K_B][K_C][RALT K_A]
|
||||
c expected: abcd
|
||||
|
||||
store(&VERSION) '9.0'
|
||||
|
||||
begin Unicode > use(main)
|
||||
|
||||
group(main) using keys
|
||||
|
||||
'c' + [RAlt K_A] > "cd"
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
52
common/test/keyboards/baseline/k_0200___ralt.js
Normal file
52
common/test/keyboards/baseline/k_0200___ralt.js
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
|
||||
KeymanWeb.KR(new Keyboard_k_0200___ralt());
|
||||
|
||||
function Keyboard_k_0200___ralt()
|
||||
{
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0200___ralt";
|
||||
this.KN="0200 - ralt";
|
||||
this.KMINVER="9.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=0;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0x0060;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_main_0(t,e);
|
||||
};
|
||||
this.g_main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
if(k.KKM(e, 0x4000, 0x41)) {
|
||||
if(1){
|
||||
r=m=1; // Line 14
|
||||
k.KO(0,t,"ז");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x4F)) {
|
||||
if(1){
|
||||
r=m=1; // Line 15
|
||||
k.KO(0,t,"ר");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4060, 0x41)) {
|
||||
if(1){
|
||||
r=m=1; // Line 16
|
||||
k.KO(0,t,"b");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4060, 0x4F)) {
|
||||
if(1){
|
||||
r=m=1; // Line 17
|
||||
k.KO(0,t,"c");
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
store(&NAME) '012 - ralt'
|
||||
store(&NAME) '0200 - ralt'
|
||||
c Description: Tests Right Alt processing: requires Ctrl+Alt simulation off.
|
||||
c env.simulate_altgr: 0
|
||||
c keys: [RALT K_A][RALT K_O][LCTRL LALT K_A][LCTRL LALT K_O]
|
||||
c expected: \u05d6\u05e8\u0062\u0063
|
||||
c context:
|
||||
c context:
|
||||
|
||||
store(&VERSION) '9.0'
|
||||
|
||||
|
|
@ -11,7 +11,7 @@ begin Unicode > use(main)
|
|||
|
||||
group(main) using keys
|
||||
|
||||
+ [RAlt K_A] > U+05D6
|
||||
+ [RAlt K_A] > U+05D6
|
||||
+ [RAlt K_O] > U+05E8
|
||||
+ [Ctrl Alt K_A] > "b"
|
||||
+ [Ctrl Alt K_A] > "b"
|
||||
+ [Ctrl Alt K_O] > "c"
|
||||
BIN
common/test/keyboards/baseline/k_0200___ralt.kmx
Normal file
BIN
common/test/keyboards/baseline/k_0200___ralt.kmx
Normal file
Binary file not shown.
34
common/test/keyboards/baseline/k_0201___ralt_2.js
Normal file
34
common/test/keyboards/baseline/k_0201___ralt_2.js
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
|
||||
KeymanWeb.KR(new Keyboard_k_0201___ralt_2());
|
||||
|
||||
function Keyboard_k_0201___ralt_2()
|
||||
{
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0201___ralt_2";
|
||||
this.KN="0201 - ralt 2";
|
||||
this.KMINVER="9.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=0;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0x0000;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_main_0(t,e);
|
||||
};
|
||||
this.g_main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
if(k.KKM(e, 0x4000, 0x41)) {
|
||||
if(k.KCM(1,t,"c",1)){
|
||||
r=m=1; // Line 13
|
||||
k.KO(1,t,"cd");
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
}
|
||||
13
common/test/keyboards/baseline/k_0201___ralt_2.kmn
Normal file
13
common/test/keyboards/baseline/k_0201___ralt_2.kmn
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
store(&VERSION) '9.0'
|
||||
store(&NAME) '0201 - ralt 2'
|
||||
c Description: Tests Right Alt processing with non-US kbds.
|
||||
c keys: [K_A][K_B][K_C][RALT K_A][K_A][K_B][K_C][K_A]
|
||||
c expected: abcdabca
|
||||
|
||||
store(&TARGETS) 'any'
|
||||
|
||||
begin Unicode > use(main)
|
||||
|
||||
group(main) using keys
|
||||
|
||||
'c' + [RAlt K_A] > "cd"
|
||||
BIN
common/test/keyboards/baseline/k_0201___ralt_2.kmx
Normal file
BIN
common/test/keyboards/baseline/k_0201___ralt_2.kmx
Normal file
Binary file not shown.
34
common/test/keyboards/baseline/k_0202___alt.js
Normal file
34
common/test/keyboards/baseline/k_0202___alt.js
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
|
||||
KeymanWeb.KR(new Keyboard_k_0202___alt());
|
||||
|
||||
function Keyboard_k_0202___alt()
|
||||
{
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0202___alt";
|
||||
this.KN="0202 - alt";
|
||||
this.KMINVER="9.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=0;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0x0040;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_main_0(t,e);
|
||||
};
|
||||
this.g_main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
if(k.KKM(e, 0x4040, 0x41)) {
|
||||
if(k.KCM(1,t,"c",1)){
|
||||
r=m=1; // Line 13
|
||||
k.KO(1,t,"cd");
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
}
|
||||
13
common/test/keyboards/baseline/k_0202___alt.kmn
Executable file
13
common/test/keyboards/baseline/k_0202___alt.kmn
Executable file
|
|
@ -0,0 +1,13 @@
|
|||
store(&VERSION) '9.0'
|
||||
store(&NAME) '0202 - alt'
|
||||
c Description: Tests Alt processing with non-US kbds.
|
||||
c keys: [K_A][K_B][K_C][RALT K_A][K_A][K_B][K_C][K_A]
|
||||
c expected: abcdabca
|
||||
|
||||
store(&TARGETS) 'any'
|
||||
|
||||
begin Unicode > use(main)
|
||||
|
||||
group(main) using keys
|
||||
|
||||
'c' + [Alt K_A] > "cd"
|
||||
BIN
common/test/keyboards/baseline/k_0202___alt.kmx
Normal file
BIN
common/test/keyboards/baseline/k_0202___alt.kmx
Normal file
Binary file not shown.
40
common/test/keyboards/baseline/k_0203___generic_ctrlalt.js
Normal file
40
common/test/keyboards/baseline/k_0203___generic_ctrlalt.js
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
|
||||
KeymanWeb.KR(new Keyboard_k_0203___generic_ctrlalt());
|
||||
|
||||
function Keyboard_k_0203___generic_ctrlalt()
|
||||
{
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0203___generic_ctrlalt";
|
||||
this.KN="0203 - generic ctrlalt";
|
||||
this.KMINVER="6.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=0;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0x0060;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_Main_0(t,e);
|
||||
};
|
||||
this.g_Main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
if(k.KKM(e, 0x4020, 0x42)) {
|
||||
if(k.KCM(1,t,"a",1)){
|
||||
r=m=1; // Line 13
|
||||
k.KO(1,t,"b");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4040, 0x43)) {
|
||||
if(k.KCM(1,t,"a",1)){
|
||||
r=m=1; // Line 14
|
||||
k.KO(1,t,"c");
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
store(&NAME) '039 - generic ctrlalt'
|
||||
store(&NAME) '0203 - generic ctrlalt'
|
||||
c Description: Tests generic alt and control (Unicode)
|
||||
c keys: [K_A][K_A][LCTRL K_B][K_A][LALT K_C][K_A][RCTRL K_B][K_A][RALT K_C]
|
||||
c expected: abcbc
|
||||
c context:
|
||||
c context:
|
||||
|
||||
store(&version) '6.0'
|
||||
|
||||
BIN
common/test/keyboards/baseline/k_0203___generic_ctrlalt.kmx
Normal file
BIN
common/test/keyboards/baseline/k_0203___generic_ctrlalt.kmx
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
40
common/test/keyboards/baseline/k_0300___deadkeys.js
Normal file
40
common/test/keyboards/baseline/k_0300___deadkeys.js
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
|
||||
KeymanWeb.KR(new Keyboard_k_0300___deadkeys());
|
||||
|
||||
function Keyboard_k_0300___deadkeys()
|
||||
{
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0300___deadkeys";
|
||||
this.KN="0300 - deadkeys";
|
||||
this.KMINVER="9.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=0;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0x0010;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_main_0(t,e);
|
||||
};
|
||||
this.g_main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
if(k.KKM(e, 0x4010, 0x36)) {
|
||||
if(1){
|
||||
r=m=1; // Line 13
|
||||
k.KDO(0,t,0);
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x41)) {
|
||||
if(k.KDM(0,t,0)){
|
||||
r=m=1; // Line 15
|
||||
k.KO(0,t,"â");
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
store(&NAME) '013 - deadkeys'
|
||||
store(&NAME) '0300 - deadkeys'
|
||||
c Description: Tests a simple deadkey rule in Unicode
|
||||
c keys: [SHIFT K_6][K_A]
|
||||
c expected: \u00E2
|
||||
BIN
common/test/keyboards/baseline/k_0300___deadkeys.kmx
Normal file
BIN
common/test/keyboards/baseline/k_0300___deadkeys.kmx
Normal file
Binary file not shown.
176
common/test/keyboards/baseline/k_0301___multiple_deadkeys.js
Normal file
176
common/test/keyboards/baseline/k_0301___multiple_deadkeys.js
Normal file
|
|
@ -0,0 +1,176 @@
|
|||
|
||||
KeymanWeb.KR(new Keyboard_k_0301___multiple_deadkeys());
|
||||
|
||||
function Keyboard_k_0301___multiple_deadkeys()
|
||||
{
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0301___multiple_deadkeys";
|
||||
this.KN="0301 - multiple deadkeys";
|
||||
this.KMINVER="9.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=0;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0x0000;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_main_0(t,e);
|
||||
};
|
||||
this.g_main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
if(k.KKM(e, 0x4000, 0x31)) {
|
||||
if(1){
|
||||
r=m=1; // Line 22
|
||||
k.KDO(0,t,0);
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x32)) {
|
||||
if(1){
|
||||
r=m=1; // Line 25
|
||||
k.KO(0,t,"a");
|
||||
k.KDO(-1,t,1);
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x33)) {
|
||||
if(1){
|
||||
r=m=1; // Line 28
|
||||
k.KDO(0,t,2);
|
||||
k.KO(-1,t,"a");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x34)) {
|
||||
if(1){
|
||||
r=m=1; // Line 31
|
||||
k.KDO(0,t,3);
|
||||
k.KDO(-1,t,4);
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x35)) {
|
||||
if(1){
|
||||
r=m=1; // Line 34
|
||||
k.KO(0,t,"a");
|
||||
k.KDO(-1,t,5);
|
||||
k.KDO(-1,t,6);
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x36)) {
|
||||
if(1){
|
||||
r=m=1; // Line 37
|
||||
k.KO(0,t,"a");
|
||||
k.KDO(-1,t,7);
|
||||
k.KDO(-1,t,8);
|
||||
k.KO(-1,t,"b");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x37)) {
|
||||
if(1){
|
||||
r=m=1; // Line 40
|
||||
k.KDO(0,t,9);
|
||||
k.KDO(-1,t,10);
|
||||
k.KO(-1,t,"a");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x38)) {
|
||||
if(1){
|
||||
r=m=1; // Line 45
|
||||
k.KDO(0,t,11);
|
||||
k.KDO(-1,t,12);
|
||||
k.KDO(-1,t,13);
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x39)) {
|
||||
if(1){
|
||||
r=m=1; // Line 56
|
||||
k.KO(0,t,"{");
|
||||
k.KDO(-1,t,14);
|
||||
k.KDO(-1,t,15);
|
||||
k.KO(-1,t,"}");
|
||||
k.KDO(-1,t,16);
|
||||
k.KDO(-1,t,17);
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x58)) {
|
||||
if(k.KCM(2,t,"{",1)&&k.KDM(1,t,14)&&k.KDM(1,t,18)&&k.KCM(1,t,"}",1)&&k.KDM(0,t,19)&&k.KDM(0,t,20)){
|
||||
r=m=1; // Line 59
|
||||
k.KO(2,t,"9=OK");
|
||||
}
|
||||
else if(k.KCM(2,t,"a",1)&&k.KDM(1,t,7)&&k.KDM(1,t,8)&&k.KCM(1,t,"b",1)){
|
||||
r=m=1; // Line 38
|
||||
k.KO(2,t,"6=OK ");
|
||||
}
|
||||
else if(k.KDM(1,t,15)&&k.KCM(1,t,"}",1)&&k.KDM(0,t,16)&&k.KDM(0,t,17)){
|
||||
r=m=1; // Line 58
|
||||
k.KDO(1,t,18);
|
||||
k.KO(-1,t,"}");
|
||||
k.KDO(-1,t,19);
|
||||
k.KDO(-1,t,20);
|
||||
}
|
||||
else if(k.KCM(1,t,"a",1)&&k.KDM(0,t,5)&&k.KDM(0,t,6)){
|
||||
r=m=1; // Line 35
|
||||
k.KO(1,t,"5=OK ");
|
||||
}
|
||||
else if(k.KDM(1,t,9)&&k.KDM(1,t,10)&&k.KCM(1,t,"a",1)){
|
||||
r=m=1; // Line 41
|
||||
k.KO(1,t,"7=OK ");
|
||||
}
|
||||
else if(k.KDM(0,t,11)&&k.KDM(0,t,12)&&k.KDM(0,t,13)){
|
||||
r=m=1; // Line 46
|
||||
k.KO(0,t,"8=OK ");
|
||||
}
|
||||
else if(k.KCM(1,t,"a",1)&&k.KDM(0,t,1)){
|
||||
r=m=1; // Line 26
|
||||
k.KO(1,t,"2=OK ");
|
||||
}
|
||||
else if(k.KDM(1,t,2)&&k.KCM(1,t,"a",1)){
|
||||
r=m=1; // Line 29
|
||||
k.KO(1,t,"3=OK ");
|
||||
}
|
||||
else if(k.KDM(0,t,3)&&k.KDM(0,t,4)){
|
||||
r=m=1; // Line 32
|
||||
k.KO(0,t,"4=OK ");
|
||||
}
|
||||
else if(k.KDM(1,t,9)&&k.KCM(1,t,"a",1)){
|
||||
r=m=1; // Line 42
|
||||
k.KO(1,t,"7=Fail1 ");
|
||||
}
|
||||
else if(k.KDM(1,t,10)&&k.KCM(1,t,"a",1)){
|
||||
r=m=1; // Line 43
|
||||
k.KO(1,t,"7=Fail2 ");
|
||||
}
|
||||
else if(k.KDM(0,t,11)&&k.KDM(0,t,12)){
|
||||
r=m=1; // Line 50
|
||||
k.KO(0,t,"8=Fail4 ");
|
||||
}
|
||||
else if(k.KDM(0,t,11)&&k.KDM(0,t,13)){
|
||||
r=m=1; // Line 51
|
||||
k.KO(0,t,"8=Fail5 ");
|
||||
}
|
||||
else if(k.KDM(0,t,12)&&k.KDM(0,t,13)){
|
||||
r=m=1; // Line 52
|
||||
k.KO(0,t,"8=Fail6 ");
|
||||
}
|
||||
else if(k.KDM(0,t,0)){
|
||||
r=m=1; // Line 23
|
||||
k.KO(0,t,"1=OK ");
|
||||
}
|
||||
else if(k.KDM(0,t,11)){
|
||||
r=m=1; // Line 47
|
||||
k.KO(0,t,"8=Fail1 ");
|
||||
}
|
||||
else if(k.KDM(0,t,12)){
|
||||
r=m=1; // Line 48
|
||||
k.KO(0,t,"8=Fail2 ");
|
||||
}
|
||||
else if(k.KDM(0,t,13)){
|
||||
r=m=1; // Line 49
|
||||
k.KO(0,t,"8=Fail3 ");
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
store(&NAME) '019 - multiple deadkeys'
|
||||
store(&NAME) '0301 - multiple deadkeys'
|
||||
c Description: Tests deadkey scenarios
|
||||
c 1. One deadkey in context dk(1) + '1'
|
||||
c 2. One char and one deadkey in context 'a' dk(2) + '2'
|
||||
BIN
common/test/keyboards/baseline/k_0301___multiple_deadkeys.kmx
Normal file
BIN
common/test/keyboards/baseline/k_0301___multiple_deadkeys.kmx
Normal file
Binary file not shown.
|
|
@ -0,0 +1,93 @@
|
|||
|
||||
KeymanWeb.KR(new Keyboard_k_0302___deadkeys_and_backspace());
|
||||
|
||||
function Keyboard_k_0302___deadkeys_and_backspace()
|
||||
{
|
||||
|
||||
this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;
|
||||
this.KI="Keyboard_k_0302___deadkeys_and_backspace";
|
||||
this.KN="0302- deadkeys and backspace";
|
||||
this.KMINVER="9.0";
|
||||
this.KV=null;
|
||||
this.KDU=0;
|
||||
this.KH='';
|
||||
this.KM=0;
|
||||
this.KBVER="1.0";
|
||||
this.KMBM=0x0000;
|
||||
this.KVS=[];
|
||||
this.gs=function(t,e) {
|
||||
return this.g_main_0(t,e);
|
||||
};
|
||||
this.gs=function(t,e) {
|
||||
return this.g_main_0(t,e);
|
||||
};
|
||||
this.g_main_0=function(t,e) {
|
||||
var k=KeymanWeb,r=0,m=0;
|
||||
if(k.KKM(e, 0x4000, 0x08)) {
|
||||
if(k.KCM(2,t,"c",1)&&k.KDM(1,t,11)&&k.KCM(1,t,"d",1)){
|
||||
r=m=1; // Line 32
|
||||
k.KO(2,t," ok");
|
||||
}
|
||||
else if(k.KCM(2,t,"cd",2)){
|
||||
r=m=1; // Line 31
|
||||
k.KO(2,t," fail");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x31)) {
|
||||
if(1){
|
||||
r=m=1; // Line 24
|
||||
k.KDO(0,t,0);
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x32)) {
|
||||
if(1){
|
||||
r=m=1; // Line 25
|
||||
k.KO(0,t,"a");
|
||||
k.KDO(-1,t,1);
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x33)) {
|
||||
if(1){
|
||||
r=m=1; // Line 26
|
||||
k.KDO(0,t,2);
|
||||
k.KO(-1,t,"a");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x34)) {
|
||||
if(1){
|
||||
r=m=1; // Line 27
|
||||
k.KDO(0,t,3);
|
||||
k.KDO(-1,t,4);
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x35)) {
|
||||
if(1){
|
||||
r=m=1; // Line 28
|
||||
k.KO(0,t,"a");
|
||||
k.KDO(-1,t,5);
|
||||
k.KDO(-1,t,6);
|
||||
k.KO(-1,t,"b");
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x36)) {
|
||||
if(1){
|
||||
r=m=1; // Line 29
|
||||
k.KO(0,t,"a");
|
||||
k.KDO(-1,t,7);
|
||||
k.KDO(-1,t,8);
|
||||
k.KO(-1,t,"b");
|
||||
k.KDO(-1,t,9);
|
||||
k.KDO(-1,t,10);
|
||||
}
|
||||
}
|
||||
else if(k.KKM(e, 0x4000, 0x37)) {
|
||||
if(1){
|
||||
r=m=1; // Line 30
|
||||
k.KO(0,t,"c");
|
||||
k.KDO(-1,t,11);
|
||||
k.KO(-1,t,"de");
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
store(&NAME) '020 - deadkeys and backspace'
|
||||
store(&NAME) '0302- deadkeys and backspace'
|
||||
c Description: Tests deadkey backspacing
|
||||
c 1. One deadkey in context dk(1) + BKSP = nul
|
||||
c 2. One char and one deadkey in context 'a' dk(2) + BKSP = nul
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue