From c1113ac21d5d876b69504e557c0c9aa97459fdbb Mon Sep 17 00:00:00 2001 From: Eberhard Beilharz Date: Mon, 8 Jun 2026 19:27:12 +0200 Subject: [PATCH] chore(web): address code review comments Also change a few places that I missed. --- .../keyboards/test_8568_deadkeys.html | 28 ++++++++--------- .../help/reference/kmc/cli/get-started.md | 2 +- developer/src/kmc/README.md | 2 +- web/docs/engine/guide/adding-keyboards.md | 18 +++++------ .../engine/guide/examples/__auto-control.html | 4 +-- .../guide/examples/__control-by-control.html | 7 ++--- .../guide/examples/__first-example.html | 6 ++-- .../guide/examples/automatic-control.md | 4 +-- web/docs/engine/guide/get-started.md | 10 +++---- .../engine/reference/core/addKeyboards.md | 12 +++++++- .../reference/core/addKeyboardsForLanguage.md | 2 +- web/docs/engine/reference/core/getKeyboard.md | 4 +-- .../engine/reference/core/getKeyboards.md | 4 +-- .../reference/interface/registerStub.md | 4 +-- web/src/app/ui/kmwuitoolbar.ts | 4 +-- web/src/samples/complex/root/pages/index.html | 10 +++---- web/src/samples/samplehdr.js | 30 ++++++++++--------- web/src/samples/subfolder_toolbar/index.html | 11 ++++--- .../web/build-visual-keyboard/index.html | 5 ++-- web/src/test/manual/web/ckeditor/index.html | 4 +-- web/src/test/manual/web/ckeditor/inline.html | 4 +-- .../test/manual/web/default-subkey/index.html | 4 +-- .../test/manual/web/desktop-ui/toolbar.html | 4 +-- web/src/test/manual/web/issue103/index.html | 4 +-- web/src/test/manual/web/issue103/samplehdr.js | 28 +++++++++-------- 25 files changed, 110 insertions(+), 105 deletions(-) diff --git a/common/test/resources/keyboards/test_8568_deadkeys.html b/common/test/resources/keyboards/test_8568_deadkeys.html index 1b4cf31424..054f19b4f8 100644 --- a/common/test/resources/keyboards/test_8568_deadkeys.html +++ b/common/test/resources/keyboards/test_8568_deadkeys.html @@ -36,22 +36,20 @@ + }); + diff --git a/developer/docs/help/reference/kmc/cli/get-started.md b/developer/docs/help/reference/kmc/cli/get-started.md index 348bf4c4b9..2316abef38 100644 --- a/developer/docs/help/reference/kmc/cli/get-started.md +++ b/developer/docs/help/reference/kmc/cli/get-started.md @@ -110,7 +110,7 @@ hamburger menu in the Keyman app. **Web**: copy khmer_angkor.js to your website, then [load it with KeymanWeb][load-keymanweb-keyboard]: ```js -keyman.addKeyboards({ +await keyman.addKeyboards({ id:'khmer_angkor', // The keyboard's unique identification code. name:'Khmer Angkor', // The keyboard's user-readable name. language:{ diff --git a/developer/src/kmc/README.md b/developer/src/kmc/README.md index 0490998e4d..05fd265a50 100644 --- a/developer/src/kmc/README.md +++ b/developer/src/kmc/README.md @@ -109,7 +109,7 @@ hamburger menu in the Keyman app. **Web**: copy khmer_angkor.js to your website, then [load it with KeymanWeb][load-keymanweb-keyboard]: ```js -keyman.addKeyboards({ +await keyman.addKeyboards({ id:'khmer_angkor', // The keyboard's unique identification code. name:'Khmer Angkor', // The keyboard's user-readable name. language:{ diff --git a/web/docs/engine/guide/adding-keyboards.md b/web/docs/engine/guide/adding-keyboards.md index 221f495de1..2874d449bc 100644 --- a/web/docs/engine/guide/adding-keyboards.md +++ b/web/docs/engine/guide/adding-keyboards.md @@ -8,8 +8,8 @@ There are multiple ways to add and install keyboards into your KeymanWeb install The most efficient way to utilize a keyboard is to obtain a local copy of it and place this copy in a static location on your website. Once this is done, it can be directly linked into KeymanWeb as follows. -```c -keyman.addKeyboards({ +```typescript +await keyman.addKeyboards({ id:'us', // The keyboard's unique identification code. name:'English', // The keyboard's user-readable name. language:{ @@ -22,7 +22,7 @@ keyman.addKeyboards({ Custom fonts may also be utilized via the `language.font` property. For example: -```c +```typescript font:{ family:'LaoWeb', source:['../font/saysettha_web.ttf','../font/saysettha_web.woff','../font/saysettha_web.eot'] @@ -33,16 +33,16 @@ font:{ To obtain the default Keyman keyboard for a given language, call the following function. -```c -keyman.addKeyboardsForLanguage('Dzongkha'); +```typescript +await keyman.addKeyboardsForLanguage('Dzongkha'); ``` This example would find the default keyboard for the Dzongkha language. This method will fail if the name doesn't perfectly match any language found in the CDN's repository. Alternatively, languages may be looked up via their BCP 47 language code as follows: -```c -keyman.addKeyboards('@he') +```typescript +await keyman.addKeyboards('@he') ``` The `@` prefix indicates the use of the BCP 47 language code, which in this case corresponds with Hebrew. @@ -51,8 +51,8 @@ The `@` prefix indicates the use of the BCP 47 language code, which in this case To obtain a specific keyboard by name or by keyboard name and language code as a pair, see the following: -```c -keyman.addKeyboards('french','sil_euro_latin@sv','sil_euro_latin@no') +```typescript +await keyman.addKeyboards('french','sil_euro_latin@sv','sil_euro_latin@no') ``` This will install three keyboards - one for French (named, quite simply, "French") and two copies of the EuroLatin keyboard - one for Swedish and one for Norwegian. diff --git a/web/docs/engine/guide/examples/__auto-control.html b/web/docs/engine/guide/examples/__auto-control.html index efe5467bfd..c2a8b472b0 100644 --- a/web/docs/engine/guide/examples/__auto-control.html +++ b/web/docs/engine/guide/examples/__auto-control.html @@ -3,8 +3,8 @@ - @@ -20,8 +19,8 @@ // Disable KeymanWeb interaction on the 'Email to' TEXT control keyman.disableControl(document.f.address); - // Set the default keyboard for the 'Subject' TEXT control to 'off' (i.e. default - // browser keyboard) + // Set the default keyboard for the 'Subject' TEXT control to the first language + // added to KeymanWeb after initialization. keyman.setKeyboardForControl(document.f.subject, '', ''); // Set the default keyboard for the 'Message body' TEXTAREA to the LaoKeys keyboard keyman.setKeyboardForControl(document.f.text, 'Keyboard_laokeys', 'lo'); @@ -42,4 +41,4 @@ Back to Document - \ No newline at end of file + diff --git a/web/docs/engine/guide/examples/__first-example.html b/web/docs/engine/guide/examples/__first-example.html index ece6a9b9ea..24a58c4891 100644 --- a/web/docs/engine/guide/examples/__first-example.html +++ b/web/docs/engine/guide/examples/__first-example.html @@ -10,9 +10,9 @@ diff --git a/web/docs/engine/guide/examples/automatic-control.md b/web/docs/engine/guide/examples/automatic-control.md index 14b703d35a..d185e4efe3 100644 --- a/web/docs/engine/guide/examples/automatic-control.md +++ b/web/docs/engine/guide/examples/automatic-control.md @@ -13,8 +13,8 @@ In this example, we use only the LaoKey keyboard. Please click [this link](./__a diff --git a/web/docs/engine/reference/core/addKeyboards.md b/web/docs/engine/reference/core/addKeyboards.md index fc5e3ce07b..fd4049f221 100644 --- a/web/docs/engine/reference/core/addKeyboards.md +++ b/web/docs/engine/reference/core/addKeyboards.md @@ -9,7 +9,7 @@ Adds keyboards to KeymanWeb. ## Syntax ```js -keyman.addKeyboards(spec[, spec...]) +await keyman.addKeyboards([spec...]) ``` ### Parameters @@ -179,3 +179,13 @@ The `spec.languages.font` object contains the following members: : `string` optional Font size (in CSS dimensions). If not specified, then `1em` is used. + +### Not passing any parameter + +Not passing any parameter will obtain the Keyman keyboards for English +from the CDN, i.e. these two functions calls are identical: + +```js +await keyman.addKeyboards(); +await keyman.addKeyboards('@en'); +``` diff --git a/web/docs/engine/reference/core/addKeyboardsForLanguage.md b/web/docs/engine/reference/core/addKeyboardsForLanguage.md index bf97a06b8d..e3a1e553c7 100644 --- a/web/docs/engine/reference/core/addKeyboardsForLanguage.md +++ b/web/docs/engine/reference/core/addKeyboardsForLanguage.md @@ -9,7 +9,7 @@ Add default or all keyboards for a given language to KeymanWeb. ## Syntax ```js -keyman.addKeyboardsForLanguage(spec[, spec...]) +await keyman.addKeyboardsForLanguage(spec[, spec...]) ``` ### Parameters diff --git a/web/docs/engine/reference/core/getKeyboard.md b/web/docs/engine/reference/core/getKeyboard.md index 0d6f8eb52e..9b728995d0 100644 --- a/web/docs/engine/reference/core/getKeyboard.md +++ b/web/docs/engine/reference/core/getKeyboard.md @@ -8,7 +8,7 @@ Get keyboard meta data for the selected keyboard and language. ## Syntax -```c +```js keyman.getKeyboard(keyboardName, languageCode) ``` @@ -75,5 +75,5 @@ The `keyboard` object contains the following members: : `string` *optional* : The font packaged with the keyboard to properly display specialized OSK characters. -## See also +## See also - [keyman.addKeyboards()](addKeyboards) and its documentation about keyboard specification objects. diff --git a/web/docs/engine/reference/core/getKeyboards.md b/web/docs/engine/reference/core/getKeyboards.md index 8d84521b31..cd8b0f2d9c 100644 --- a/web/docs/engine/reference/core/getKeyboards.md +++ b/web/docs/engine/reference/core/getKeyboards.md @@ -8,7 +8,7 @@ Get details of currently installed keyboards. ## Syntax -```c +```js keyman.getKeyboards() ``` @@ -25,5 +25,5 @@ None. See [keyman.getKeyboard()](getKeyboard) for detail on the returned keyboard specification objects. -## See also +## See also - [keyman.addKeyboards()](addKeyboards) diff --git a/web/docs/engine/reference/interface/registerStub.md b/web/docs/engine/reference/interface/registerStub.md index 2d9c8ef5a8..9dc8e10c34 100644 --- a/web/docs/engine/reference/interface/registerStub.md +++ b/web/docs/engine/reference/interface/registerStub.md @@ -8,13 +8,13 @@ Registers the keyboard stub or returns true if already registered. ## Syntax -```c +```js keyman.interface.registerStub(Pstub); ``` or -```c +```js KeymanWeb.KRS(Pstub); // Shorthand ``` diff --git a/web/src/app/ui/kmwuitoolbar.ts b/web/src/app/ui/kmwuitoolbar.ts index cf736777f9..6ed8d82e23 100644 --- a/web/src/app/ui/kmwuitoolbar.ts +++ b/web/src/app/ui/kmwuitoolbar.ts @@ -1150,8 +1150,8 @@ if(!keymanweb) { internalName: string, languageCode: string }) => { // Uses a different format than .getKeyboards(), b/c why not? - // https://help.keyman.com/developer/engine/web/16.0/reference/core/getKeyboards vs - // https://help.keyman.com/developer/engine/web/16.0/reference/events/kmw.keyboardchange + // https://help.keyman.com/developer/engine/web/current-version/reference/core/getKeyboards vs + // https://help.keyman.com/developer/engine/web/current-version/reference/events/kmw.keyboardchange this.lastSelectedKeyboard = null; const kbName=p.internalName, lgName=keymanweb.util.getLanguageCodes(p.languageCode)[0]; diff --git a/web/src/samples/complex/root/pages/index.html b/web/src/samples/complex/root/pages/index.html index 8da72fcccb..2e8122b1da 100644 --- a/web/src/samples/complex/root/pages/index.html +++ b/web/src/samples/complex/root/pages/index.html @@ -44,9 +44,9 @@ // KMW will look for them here - two folders up from root, which is the base sample directory. keyboards: '/../../', attachType:'auto' - }).then(function() { + }).then(async function() { // Loads keyboards from the base sample folder - keyman.addKeyboards({ + await keyman.addKeyboards({ id:'us', name:'English', languages: { @@ -57,7 +57,7 @@ filename: 'us-1.0.js' }); // For contrast: - keyman.addKeyboards({ + await keyman.addKeyboards({ id:'lao_2008_basic', name:'Lao Basic', languages: { @@ -73,12 +73,12 @@ // 1. keyboard name ('french'), // 2. keyboard name and language code ('sil_euro_latin@no,sv'), // 3. or just the BCP-47 language code ('@he'). - keyman.addKeyboards('french', 'sil_euro_latin@no,sv', '@he'); + await keyman.addKeyboards('french', 'sil_euro_latin@no,sv', '@he'); // Add a keyboard by language name. Note that the name must be spelled // correctly, or the keyboard will not be found. (Using BCP-47 codes is // usually easier.) - doAddKeyboardsForLanguage('Dzongkha'); + await doAddKeyboardsForLanguage('Dzongkha'); }); diff --git a/web/src/samples/samplehdr.js b/web/src/samples/samplehdr.js index ad9dd762a3..d3f89e5c4a 100644 --- a/web/src/samples/samplehdr.js +++ b/web/src/samples/samplehdr.js @@ -43,9 +43,9 @@ function errToString(err) { // Painful? Kinda. But needed on un-updated Android API 21! if(Array.isArray(err)) { - var result = ''; - for(var i = 0; i < err.length; i++) { - var e = err[i]; + let result = ''; + for(let i = 0; i < err.length; i++) { + const e = err[i]; if(e.error instanceof Error) { result += e.error.message + '\n'; } else { @@ -73,13 +73,13 @@ } async function loadKeyboards(nestLevel) { - var base_prefix = '../'; - var prefix = './'; // The default - when prefix == 0. + const base_prefix = '../'; + let prefix = './'; // The default - when prefix == 0. if(nestLevel !== undefined && nestLevel > 0) { prefix = ''; - for(var i=0; i < nestLevel; i++) { - prefix = prefix + base_prefix; + for(let i=0; i < nestLevel; i++) { + prefix += base_prefix; } } @@ -116,29 +116,31 @@ } // Script to allow a user to add any keyboard to the keyboard menu - function addKeyboard(n) { - var sKbd; + async function addKeyboard(n) { + let sKbd; switch(n) { case 1: sKbd=document.getElementById('kbd_id1').value; - doAddKeyboards(sKbd); + await doAddKeyboards(sKbd); break; case 2: sKbd=document.getElementById('kbd_id2').value.toLowerCase(); - doAddKeyboards('@'+sKbd); + await doAddKeyboards('@'+sKbd); break; case 3: // Add keyboard for comma-separated language name(s) sKbd=document.getElementById('kbd_id3').value; - doAddKeyboardsForLanguage(sKbd); + await doAddKeyboardsForLanguage(sKbd); break; } } // Add keyboard on Enter (as well as pressing button) - function clickOnEnter(e,id) + async function clickOnEnter(e,id) { e = e || window.event; - if(e.keyCode == 13) addKeyboard(id); + if (e.keyCode == 13) { + await addKeyboard(id); + } } diff --git a/web/src/samples/subfolder_toolbar/index.html b/web/src/samples/subfolder_toolbar/index.html index e3813e4b52..8a4c8d6b03 100644 --- a/web/src/samples/subfolder_toolbar/index.html +++ b/web/src/samples/subfolder_toolbar/index.html @@ -30,8 +30,8 @@ diff --git a/web/src/test/manual/web/build-visual-keyboard/index.html b/web/src/test/manual/web/build-visual-keyboard/index.html index 54a47172d0..77ccc07fbc 100644 --- a/web/src/test/manual/web/build-visual-keyboard/index.html +++ b/web/src/test/manual/web/build-visual-keyboard/index.html @@ -75,8 +75,8 @@ const container = document.createElement('div'); - await kmw.addKeyboards(`${kbdid}@${langid}`); - await kmw.setActiveKeyboard(kbdid, langid); + await keyman.addKeyboards(`${kbdid}@${langid}`); + await keyman.setActiveKeyboard(kbdid, langid); docBase = keyman.BuildVisualKeyboard(kbdid, 1, formFactor, layer); label.textContent = `${keyman.getKeyboard(kbdid).Name} - ${formFactor} - ${layer} layer`; @@ -94,6 +94,7 @@ } keyman.init().then(async function() { + await loadKeyboards(1); await documentKeyboard("gff_amharic", "am", "phone", "default"); await documentKeyboard("sil_euro_latin", "no", "phone", "shift"); await documentKeyboard("lao_2008_basic", "lo", "tablet", "default"); diff --git a/web/src/test/manual/web/ckeditor/index.html b/web/src/test/manual/web/ckeditor/index.html index 25dfc7e9e8..16de19ba02 100644 --- a/web/src/test/manual/web/ckeditor/index.html +++ b/web/src/test/manual/web/ckeditor/index.html @@ -32,9 +32,7 @@ diff --git a/web/src/test/manual/web/ckeditor/inline.html b/web/src/test/manual/web/ckeditor/inline.html index f54d98e0ff..06ec8ca0e5 100644 --- a/web/src/test/manual/web/ckeditor/inline.html +++ b/web/src/test/manual/web/ckeditor/inline.html @@ -32,9 +32,7 @@ diff --git a/web/src/test/manual/web/default-subkey/index.html b/web/src/test/manual/web/default-subkey/index.html index 6ce3bee562..22f00ef3fe 100644 --- a/web/src/test/manual/web/default-subkey/index.html +++ b/web/src/test/manual/web/default-subkey/index.html @@ -38,8 +38,8 @@ diff --git a/web/src/test/manual/web/issue103/index.html b/web/src/test/manual/web/issue103/index.html index e242071511..53c0447cbd 100644 --- a/web/src/test/manual/web/issue103/index.html +++ b/web/src/test/manual/web/issue103/index.html @@ -38,8 +38,8 @@ diff --git a/web/src/test/manual/web/issue103/samplehdr.js b/web/src/test/manual/web/issue103/samplehdr.js index 51a38e4eff..bf8cabae0c 100644 --- a/web/src/test/manual/web/issue103/samplehdr.js +++ b/web/src/test/manual/web/issue103/samplehdr.js @@ -1,25 +1,25 @@ // Modified version of commonHeader - contains repeated requests for the same language. - function loadKeyboards() { + async function loadKeyboards() { // The first keyboard added will be the default keyboard for touch devices. // For faster loading, it may be best for the default keyboard to be // locally sourced. - keyman.addKeyboards({id:'us',name:'English',languages:{id:'en',name:'English'}, + await keyman.addKeyboards({id:'us',name:'English',languages:{id:'en',name:'English'}, filename:'../us-1.0.js'}); // Add more keyboards to the language menu, by keyboard name, // keyboard name and language code, or just the BCP-47 language code. - keyman.addKeyboards('french','european2@sv','european2@sv','european2@sv','european2@sv','european2@sv','european2@sv','european2@no','@he'); - keyman.addKeyboards('@he'); - keyman.addKeyboards('@he'); + await keyman.addKeyboards('french','european2@sv','european2@sv','european2@sv','european2@sv','european2@sv','european2@sv','european2@no','@he'); + await keyman.addKeyboards('@he'); + await keyman.addKeyboards('@he'); // Add a keyboard by language name. Note that the name must be spelled // correctly, or the keyboard will not be found. (Using BCP-47 codes is // usually easier.) - keyman.addKeyboardsForLanguage('Dzongkha'); + await keyman.addKeyboardsForLanguage('Dzongkha'); // Add a fully-specified, locally-sourced, keyboard with custom font - keyman.addKeyboards({id:'lao_2008_basic',name:'Lao Basic', + await keyman.addKeyboards({id:'lao_2008_basic',name:'Lao Basic', languages:{ id:'lo',name:'Lao',region:'Asia' }, @@ -38,29 +38,31 @@ } // Script to allow a user to add any keyboard to the keyboard menu - function addKeyboard(n) + async function addKeyboard(n) { let sKbd; switch(n) { case 1: sKbd=document.getElementById('kbd_id1').value; - keyman.addKeyboards(sKbd); + await keyman.addKeyboards(sKbd); break; case 2: sKbd=document.getElementById('kbd_id2').value.toLowerCase(); - keyman.addKeyboards('@'+sKbd); + await keyman.addKeyboards('@'+sKbd); break; case 3: sKbd=document.getElementById('kbd_id3').value; - keyman.addKeyboardsForLanguage(sKbd); + await keyman.addKeyboardsForLanguage(sKbd); break; } } // Add keyboard on Enter (as well as pressing button) - function clickOnEnter(e,id) { + async function clickOnEnter(e,id) { e = e || window.event; - if(e.keyCode == 13) addKeyboard(id); + if (e.keyCode == 13) { + await addKeyboard(id); + } }