From d82fa81ef6e782f9e8919f7cfdc9b0ff5f3a936f Mon Sep 17 00:00:00 2001 From: Eberhard Beilharz Date: Thu, 5 Dec 2024 18:05:58 +0100 Subject: [PATCH] refactor(web): rename JS `Keyboard` class to `JSKeyboard` --- web/src/app/browser/src/contextManager.ts | 10 ++-- .../app/browser/src/hardwareEventKeyboard.ts | 4 +- web/src/app/browser/src/keymanEngine.ts | 16 +++--- web/src/app/webview/src/contextManager.ts | 8 +-- .../app/webview/src/passthroughKeyboard.ts | 4 +- .../engine/js-processor/src/kbdInterface.ts | 8 +-- .../js-processor/src/keyboardProcessor.ts | 6 +- .../src/stubAndKeyboardCache.ts | 32 +++++------ web/src/engine/keyboard/src/index.ts | 2 +- web/src/engine/keyboard/src/keyEvent.ts | 6 +- .../keyboard/src/keyboards/activeLayout.ts | 6 +- .../keyboard/src/keyboards/defaultLayouts.ts | 6 +- .../engine/keyboard/src/keyboards/keyboard.ts | 6 +- .../keyboard/src/keyboards/keyboardHarness.ts | 6 +- .../src/keyboards/keyboardLoaderBase.ts | 10 ++-- .../keyboards/loaders/domKeyboardLoader.ts | 4 +- .../keyboards/loaders/nodeKeyboardLoader.ts | 4 +- web/src/engine/main/src/contextManagerBase.ts | 20 +++---- web/src/engine/main/src/hardKeyboard.ts | 4 +- .../main/src/headless/inputProcessor.ts | 6 +- web/src/engine/main/src/keymanEngine.ts | 6 +- web/src/engine/osk/src/banner/banner.ts | 4 +- .../engine/osk/src/banner/bannerController.ts | 6 +- .../engine/osk/src/banner/suggestionBanner.ts | 4 +- .../engine/osk/src/components/helpPageView.ts | 6 +- web/src/engine/osk/src/components/titleBar.ts | 4 +- web/src/engine/osk/src/index.ts | 2 +- .../osk/src/keyboard-layout/oskLayerGroup.ts | 4 +- web/src/engine/osk/src/views/oskView.ts | 12 ++-- web/src/engine/osk/src/visualKeyboard.ts | 12 ++-- .../cases/keyboard/domKeyboardLoader.tests.ts | 8 +-- web/src/test/auto/dom/kbdLoader.ts | 6 +- .../hardware-event-processing.tests.ts | 56 +++++++++---------- .../js-processor/bundled-module.tests.js | 2 +- .../js-processor/engine/stores.tests.js | 4 +- .../stubAndKeyboardCache.tests.js | 2 +- 36 files changed, 153 insertions(+), 153 deletions(-) diff --git a/web/src/app/browser/src/contextManager.ts b/web/src/app/browser/src/contextManager.ts index c2254c1fdd..875b2a1c1e 100644 --- a/web/src/app/browser/src/contextManager.ts +++ b/web/src/app/browser/src/contextManager.ts @@ -1,4 +1,4 @@ -import { type Keyboard, KeyboardScriptError } from 'keyman/engine/keyboard'; +import { type JSKeyboard, KeyboardScriptError } from 'keyman/engine/keyboard'; import { type KeyboardStub } from 'keyman/engine/keyboard-storage'; import { CookieSerializer } from 'keyman/engine/dom-utils'; import { eventOutputTarget, outputTargetForElement, PageContextAttachment } from 'keyman/engine/attachment'; @@ -25,7 +25,7 @@ export interface KeyboardCookie { * * @param {Object} Ptarg Target element */ -function _SetTargDir(Ptarg: HTMLElement, activeKeyboard: Keyboard) { +function _SetTargDir(Ptarg: HTMLElement, activeKeyboard: JSKeyboard) { const elDir = activeKeyboard?.isRTL ? 'rtl' : 'ltr'; if(Ptarg) { @@ -41,14 +41,14 @@ function _SetTargDir(Ptarg: HTMLElement, activeKeyboard: Keyboard) { } export default class ContextManager extends ContextManagerBase { - private _activeKeyboard: {keyboard: Keyboard, metadata: KeyboardStub}; + private _activeKeyboard: {keyboard: JSKeyboard, metadata: KeyboardStub}; private cookieManager = new CookieSerializer('KeymanWeb_Keyboard'); readonly focusAssistant = new FocusAssistant(() => this.activeTarget?.isForcingScroll()); readonly page: PageContextAttachment; private mostRecentTarget: OutputTarget; private currentTarget: OutputTarget; - private globalKeyboard: {keyboard: Keyboard, metadata: KeyboardStub}; + private globalKeyboard: {keyboard: JSKeyboard, metadata: KeyboardStub}; private _eventsObj: () => LegacyEventEmitter; private domEventTracker = new DomEventTracker(); @@ -385,7 +385,7 @@ export default class ContextManager extends ContextManagerBase) { + activateKeyboardForTarget(kbd: {keyboard: JSKeyboard, metadata: KeyboardStub}, target: OutputTarget) { let attachment = target?.getElement()._kmwAttachment; if(!attachment) { diff --git a/web/src/app/browser/src/hardwareEventKeyboard.ts b/web/src/app/browser/src/hardwareEventKeyboard.ts index 0bb594e897..b323cdefbd 100644 --- a/web/src/app/browser/src/hardwareEventKeyboard.ts +++ b/web/src/app/browser/src/hardwareEventKeyboard.ts @@ -1,4 +1,4 @@ -import { Codes, DeviceSpec, KeyEvent, KeyMapping, Keyboard } from 'keyman/engine/keyboard'; +import { Codes, DeviceSpec, KeyEvent, KeyMapping, JSKeyboard } from 'keyman/engine/keyboard'; import { KeyboardProcessor } from 'keyman/engine/js-processor'; import { ModifierKeyConstants } from '@keymanapp/common-types'; @@ -10,7 +10,7 @@ import { eventOutputTarget, outputTargetForElement } from 'keyman/engine/attachm import ContextManager from './contextManager.js'; type KeyboardState = { - activeKeyboard: Keyboard, + activeKeyboard: JSKeyboard, modStateFlags: number, baseLayout: string } diff --git a/web/src/app/browser/src/keymanEngine.ts b/web/src/app/browser/src/keymanEngine.ts index e2b7d5be63..559f3d8fd6 100644 --- a/web/src/app/browser/src/keymanEngine.ts +++ b/web/src/app/browser/src/keymanEngine.ts @@ -7,7 +7,7 @@ import { VisualKeyboard } from 'keyman/engine/osk'; import { ErrorStub, KeyboardStub, CloudQueryResult, toPrefixedKeyboardId as prefixed } from 'keyman/engine/keyboard-storage'; -import { DeviceSpec, Keyboard } from "keyman/engine/keyboard"; +import { DeviceSpec, JSKeyboard } from "keyman/engine/keyboard"; import KeyboardObject = KeymanWebKeyboard.KeyboardObject; import * as views from './viewsAnchorpoint.js'; @@ -271,7 +271,7 @@ export default class KeymanEngine extends KeymanEngineBase /* [b/c Toolbar UI]*/) { - let kbd: Keyboard; + let kbd: JSKeyboard; if(k0) { let kbdDetail = k0 as ReturnType; if(kbdDetail.KeyboardID){ kbd = this.keyboardRequisitioner.cache.getKeyboard(kbdDetail.KeyboardID); } else { - kbd = new Keyboard(k0); + kbd = new JSKeyboard(k0); } } else { kbd = this.core.activeKeyboard; @@ -669,7 +669,7 @@ export default class KeymanEngine extends KeymanEngineBase, metadata: KeyboardStub} { + ): {keyboard: Promise, metadata: KeyboardStub} { const originalKeyboard = this.activeKeyboard; const activatingKeyboard = super.prepareKeyboardForActivation(keyboardId, languageCode); diff --git a/web/src/app/webview/src/passthroughKeyboard.ts b/web/src/app/webview/src/passthroughKeyboard.ts index 25dec7a8e6..8ce8864293 100644 --- a/web/src/app/webview/src/passthroughKeyboard.ts +++ b/web/src/app/webview/src/passthroughKeyboard.ts @@ -1,10 +1,10 @@ -import { DeviceSpec, Keyboard, KeyEvent, ManagedPromise } from 'keyman/engine/keyboard'; +import { DeviceSpec, JSKeyboard, KeyEvent, ManagedPromise } from 'keyman/engine/keyboard'; import { HardKeyboard, processForMnemonicsAndLegacy } from 'keyman/engine/main'; export default class PassthroughKeyboard extends HardKeyboard { readonly baseDevice: DeviceSpec; - public activeKeyboard: Keyboard; + public activeKeyboard: JSKeyboard; constructor(baseDevice: DeviceSpec) { super(); diff --git a/web/src/engine/js-processor/src/kbdInterface.ts b/web/src/engine/js-processor/src/kbdInterface.ts index b39b2baea2..9a2ee4c190 100644 --- a/web/src/engine/js-processor/src/kbdInterface.ts +++ b/web/src/engine/js-processor/src/kbdInterface.ts @@ -7,7 +7,7 @@ import { type DeviceSpec } from "@keymanapp/web-utils"; import { ModifierKeyConstants } from '@keymanapp/common-types'; -import { Codes, type KeyEvent, KeyMapping, Keyboard, KeyboardHarness, KeyboardKeymanGlobal, VariableStoreDictionary } from "keyman/engine/keyboard"; +import { Codes, type KeyEvent, KeyMapping, JSKeyboard, KeyboardHarness, KeyboardKeymanGlobal, VariableStoreDictionary } from "keyman/engine/keyboard"; import type OutputTarget from './outputTarget.js'; import { type Deadkey } from './deadkeys.js'; import { Mock } from "./mock.js"; @@ -180,7 +180,7 @@ export default class KeyboardInterface extends KeyboardHarness { _AnyIndices: number[] = []; // AnyIndex - array of any/index match indices // Must be accessible to some of the keyboard API methods. - activeKeyboard: Keyboard; + activeKeyboard: JSKeyboard; activeDevice: DeviceSpec; variableStoreSerializer?: VariableStoreSerializer; @@ -222,7 +222,7 @@ export default class KeyboardInterface extends KeyboardHarness { /** * Function registerKeyboard KR * Scope Public - * @param {Object} Pk Keyboard object + * @param {Object} Pk JSKeyboard object * Description Registers a keyboard with KeymanWeb once its script has fully loaded. * * In web-core, this also activates the keyboard; in other modules, this method @@ -231,7 +231,7 @@ export default class KeyboardInterface extends KeyboardHarness { registerKeyboard(Pk: any): void { // NOTE: This implementation is web-core specific and is intentionally replaced, whole-sale, // by DOM-aware code. - let keyboard = new Keyboard(Pk); + let keyboard = new JSKeyboard(Pk); this.loadedKeyboard = keyboard; } diff --git a/web/src/engine/js-processor/src/keyboardProcessor.ts b/web/src/engine/js-processor/src/keyboardProcessor.ts index dea537dfdf..93ec35bfe1 100644 --- a/web/src/engine/js-processor/src/keyboardProcessor.ts +++ b/web/src/engine/js-processor/src/keyboardProcessor.ts @@ -9,7 +9,7 @@ import { EventEmitter } from 'eventemitter3'; import { ModifierKeyConstants } from '@keymanapp/common-types'; import { - Codes, type Keyboard, MinimalKeymanGlobal, KeyEvent, Layouts, + Codes, type JSKeyboard, MinimalKeymanGlobal, KeyEvent, Layouts, DefaultRules, EmulationKeystrokes } from "keyman/engine/keyboard"; import { Mock } from "./mock.js"; @@ -87,11 +87,11 @@ export default class KeyboardProcessor extends EventEmitter { this.defaultRules = options.defaultOutputRules || KeyboardProcessor.DEFAULT_OPTIONS.defaultOutputRules; } - public get activeKeyboard(): Keyboard { + public get activeKeyboard(): JSKeyboard { return this.keyboardInterface.activeKeyboard; } - public set activeKeyboard(keyboard: Keyboard) { + public set activeKeyboard(keyboard: JSKeyboard) { this.keyboardInterface.activeKeyboard = keyboard; // All old deadkeys and keyboard-specific cache should immediately be invalidated diff --git a/web/src/engine/keyboard-storage/src/stubAndKeyboardCache.ts b/web/src/engine/keyboard-storage/src/stubAndKeyboardCache.ts index 67d62446be..523da41fbf 100644 --- a/web/src/engine/keyboard-storage/src/stubAndKeyboardCache.ts +++ b/web/src/engine/keyboard-storage/src/stubAndKeyboardCache.ts @@ -1,4 +1,4 @@ -import { Keyboard, KeyboardLoaderBase as KeyboardLoader } from "keyman/engine/keyboard"; +import { JSKeyboard, KeyboardLoaderBase as KeyboardLoader } from "keyman/engine/keyboard"; import { EventEmitter } from "eventemitter3"; import KeyboardStub from "./keyboardStub.js"; @@ -38,12 +38,12 @@ interface EventMap { /** * Indicates that the specified Keyboard has just been added to the cache. */ - keyboardadded: (keyboard: Keyboard) => void; + keyboardadded: (keyboard: JSKeyboard) => void; } export default class StubAndKeyboardCache extends EventEmitter { private stubSetTable: Record> = {}; - private keyboardTable: Record> = {}; + private keyboardTable: Record> = {}; private readonly keyboardLoader: KeyboardLoader; @@ -52,11 +52,11 @@ export default class StubAndKeyboardCache extends EventEmitter { this.keyboardLoader = keyboardLoader; } - getKeyboardForStub(stub: KeyboardStub): Keyboard { + getKeyboardForStub(stub: KeyboardStub): JSKeyboard { return stub ? this.getKeyboard(stub.KI) : null; } - getKeyboard(keyboardID: string): Keyboard { + getKeyboard(keyboardID: string): JSKeyboard { if(!keyboardID) { return null; } @@ -112,14 +112,14 @@ export default class StubAndKeyboardCache extends EventEmitter { } } - addKeyboard(keyboard: Keyboard) { + addKeyboard(keyboard: JSKeyboard) { const keyboardID = prefixed(keyboard.id); this.keyboardTable[keyboardID] = keyboard; this.emit('keyboardadded', keyboard); } - fetchKeyboardForStub(stub: KeyboardStub) : Promise { + fetchKeyboardForStub(stub: KeyboardStub) : Promise { return this.fetchKeyboard(stub.KI); } @@ -134,7 +134,7 @@ export default class StubAndKeyboardCache extends EventEmitter { return cachedEntry instanceof Promise; } - fetchKeyboard(keyboardID: string): Promise { + fetchKeyboard(keyboardID: string): Promise { if(!keyboardID) { throw new Error("Keyboard ID must be specified"); } @@ -146,7 +146,7 @@ export default class StubAndKeyboardCache extends EventEmitter { keyboardID = prefixed(keyboardID); const cachedEntry = this.keyboardTable[keyboardID]; - if(cachedEntry instanceof Keyboard) { + if(cachedEntry instanceof JSKeyboard) { return Promise.resolve(cachedEntry); } else if(cachedEntry instanceof Promise) { return cachedEntry; @@ -189,12 +189,12 @@ export default class StubAndKeyboardCache extends EventEmitter { } getStub(keyboardID: string, languageID: string): KeyboardStub; - getStub(keyboard: Keyboard, languageID?: string): KeyboardStub; - getStub(arg0: string | Keyboard, arg1?: string): KeyboardStub { + getStub(keyboard: JSKeyboard, languageID?: string): KeyboardStub; + getStub(arg0: string | JSKeyboard, arg1?: string): KeyboardStub { let keyboardID: string; let languageID = arg1 || '---'; - if(arg0 instanceof Keyboard) { + if(arg0 instanceof JSKeyboard) { keyboardID = arg0.id; } else { keyboardID = arg0; @@ -221,12 +221,12 @@ export default class StubAndKeyboardCache extends EventEmitter { /** * Removes all metadata (stubs) associated with a specific keyboard from the cache, optionally * removing the cached keyboard as well. - * @param keyboard Either the keyboard ID or `Keyboard` instance - * @param purge If `true`, will also purge the `Keyboard` instance itself from the cache. + * @param keyboard Either the keyboard ID or `JSKeyboard` instance + * @param purge If `true`, will also purge the `JSKeyboard` instance itself from the cache. * If `false`, only forgets the metadata (stubs). */ - forgetKeyboard(keyboard: string | Keyboard, purge: boolean = false) { - let id: string = (keyboard instanceof Keyboard) ? keyboard.id : prefixed(keyboard); + forgetKeyboard(keyboard: string | JSKeyboard, purge: boolean = false) { + let id: string = (keyboard instanceof JSKeyboard) ? keyboard.id : prefixed(keyboard); if(this.stubSetTable[id]) { delete this.stubSetTable[id]; diff --git a/web/src/engine/keyboard/src/index.ts b/web/src/engine/keyboard/src/index.ts index 6047426af9..9106201c12 100644 --- a/web/src/engine/keyboard/src/index.ts +++ b/web/src/engine/keyboard/src/index.ts @@ -1,6 +1,6 @@ export * from "./keyboards/activeLayout.js"; export * from "./keyboards/defaultLayouts.js"; -export { default as Keyboard } from "./keyboards/keyboard.js"; +export { default as JSKeyboard } from "./keyboards/keyboard.js"; export * from "./keyboards/keyboard.js"; export { KeyboardHarness, KeyboardKeymanGlobal, MinimalCodesInterface, MinimalKeymanGlobal } from "./keyboards/keyboardHarness.js"; export { KeyboardLoaderBase } from "./keyboards/keyboardLoaderBase.js"; diff --git a/web/src/engine/keyboard/src/keyEvent.ts b/web/src/engine/keyboard/src/keyEvent.ts index c359558b1f..eb8b153354 100644 --- a/web/src/engine/keyboard/src/keyEvent.ts +++ b/web/src/engine/keyboard/src/keyEvent.ts @@ -6,7 +6,7 @@ // a key event. The most straightforward way to integrate Web OSK events on other platforms is to have // other platforms recognize and utilize this type. -import type Keyboard from "./keyboards/keyboard.js"; +import type JSKeyboard from "./keyboards/keyboard.js"; import { type DeviceSpec } from "@keymanapp/web-utils"; import Codes from './codes.js'; @@ -44,7 +44,7 @@ export interface KeyEventSpec { * guarantee that the keyboard instance known to the handler has not changed during JS execution * since the user's interaction that raised the event. */ - srcKeyboard?: Keyboard; + srcKeyboard?: JSKeyboard; // Holds a generated fat-finger distribution (when appropriate) keyDistribution?: KeyDistribution; @@ -85,7 +85,7 @@ export default class KeyEvent implements KeyEventSpec { * guarantee that the keyboard instance known to the handler has not changed during JS execution * since the user's interaction that raised the event. */ - srcKeyboard?: Keyboard; + srcKeyboard?: JSKeyboard; // Holds relevant event properties leading to construction of this KeyEvent. source?: any; // Technically, KeyEvent|MouseEvent|Touch - but those are DOM types that must be kept out of headless mode. diff --git a/web/src/engine/keyboard/src/keyboards/activeLayout.ts b/web/src/engine/keyboard/src/keyboards/activeLayout.ts index c440511f17..692ef65c01 100644 --- a/web/src/engine/keyboard/src/keyboards/activeLayout.ts +++ b/web/src/engine/keyboard/src/keyboards/activeLayout.ts @@ -3,7 +3,7 @@ import KeyEvent, { KeyEventSpec } from "../keyEvent.js"; import KeyMapping from "../keyMapping.js"; import { ButtonClasses, Layouts } from "./defaultLayouts.js"; import type { LayoutKey, LayoutSubKey, LayoutRow, LayoutLayer, LayoutFormFactor, ButtonClass } from "./defaultLayouts.js"; -import type Keyboard from "./keyboard.js"; +import type JSKeyboard from "./keyboard.js"; import { TouchLayout } from "@keymanapp/common-types"; import TouchLayoutDefaultHint = TouchLayout.TouchLayoutDefaultHint; @@ -776,7 +776,7 @@ export class ActiveLayout implements LayoutFormFactor{ font: string; keyLabels: boolean; isDefault?: boolean; - keyboard: Keyboard; + keyboard: JSKeyboard; formFactor: DeviceSpec.FormFactor; defaultHint: TouchLayoutDefaultHint; displayUnderlying?: boolean; @@ -851,7 +851,7 @@ export class ActiveLayout implements LayoutFormFactor{ * @param layout * @param formFactor */ - static polyfill(layout: TouchLayoutSpec, keyboard: Keyboard, formFactor: DeviceSpec.FormFactor): ActiveLayout { + static polyfill(layout: TouchLayoutSpec, keyboard: JSKeyboard, formFactor: DeviceSpec.FormFactor): ActiveLayout { /* c8 ignore start */ if(layout == null) { throw new Error("Cannot build an ActiveLayout for a null specification."); diff --git a/web/src/engine/keyboard/src/keyboards/defaultLayouts.ts b/web/src/engine/keyboard/src/keyboards/defaultLayouts.ts index 4b08f4bef3..9106ff30e6 100644 --- a/web/src/engine/keyboard/src/keyboards/defaultLayouts.ts +++ b/web/src/engine/keyboard/src/keyboards/defaultLayouts.ts @@ -20,7 +20,7 @@ import ButtonClasses = TouchLayout.TouchLayoutKeySp; export { ButtonClasses }; import Codes from "../codes.js"; -import type Keyboard from "./keyboard.js"; +import type JSKeyboard from "./keyboard.js"; // The following types provide type definitions for the full JSON format we use for visual keyboard definitions. export type ButtonClass = 0 | 1 | 2 | 3 | 4 | /*5 | 6 | 7 |*/ 8 | 9 | 10; @@ -87,11 +87,11 @@ export class Layouts { * Build a default layout for keyboards with no explicit layout * * @param {Object} PVK raw specifications - * @param {Keyboard} keyboard keyboard object (as loaded) + * @param {JSKeyboard} keyboard keyboard object (as loaded) * @param {string} formFactor (really utils.FormFactor) * @return {LayoutFormFactor} */ - static buildDefaultLayout(PVK: EncodedVisualKeyboard, keyboard: Keyboard, formFactor: string): LayoutFormFactor { + static buildDefaultLayout(PVK: EncodedVisualKeyboard, keyboard: JSKeyboard, formFactor: string): LayoutFormFactor { // Build a layout using the default for the device let layoutType = formFactor as keyof TouchLayout.TouchLayoutFile; diff --git a/web/src/engine/keyboard/src/keyboards/keyboard.ts b/web/src/engine/keyboard/src/keyboards/keyboard.ts index 753ae3bd55..b49f025810 100644 --- a/web/src/engine/keyboard/src/keyboards/keyboard.ts +++ b/web/src/engine/keyboard/src/keyboards/keyboard.ts @@ -52,7 +52,7 @@ type KmwKeyboardObject = KeyboardObject & { * and keyboard-centered functionality in an object-oriented way without modifying the * wrapped keyboard itself. */ -export default class Keyboard { +export default class JSKeyboard { public static DEFAULT_SCRIPT_OBJECT: KmwKeyboardObject = { 'gs': function(outputTarget: OutputTarget, keystroke: KeyEvent) { return false; }, // no matching rules; rely on defaultRuleOutput entirely 'KI': '', // The currently-existing default keyboard ID; we already have checks that focus against this. @@ -74,7 +74,7 @@ export default class Keyboard { if(keyboardScript) { this.scriptObject = keyboardScript; } else { - this.scriptObject = Keyboard.DEFAULT_SCRIPT_OBJECT; + this.scriptObject = JSKeyboard.DEFAULT_SCRIPT_OBJECT; } this.layoutStates = {}; } @@ -101,7 +101,7 @@ export default class Keyboard { } get isHollow(): boolean { - return this.scriptObject == Keyboard.DEFAULT_SCRIPT_OBJECT; + return this.scriptObject == JSKeyboard.DEFAULT_SCRIPT_OBJECT; } get id(): string { diff --git a/web/src/engine/keyboard/src/keyboards/keyboardHarness.ts b/web/src/engine/keyboard/src/keyboards/keyboardHarness.ts index bb2e2d5ccb..8e83f31c77 100644 --- a/web/src/engine/keyboard/src/keyboards/keyboardHarness.ts +++ b/web/src/engine/keyboard/src/keyboards/keyboardHarness.ts @@ -1,4 +1,4 @@ -import Keyboard from "./keyboard.js"; +import JSKeyboard from "./keyboard.js"; import Codes from "../codes.js"; import { DeviceSpec } from '@keymanapp/web-utils'; @@ -64,7 +64,7 @@ export class KeyboardHarness { /** * This field serves as the receptacle for a successfully-loaded Keyboard. */ - public loadedKeyboard: Keyboard = null; + public loadedKeyboard: JSKeyboard = null; /** * Keyman keyboards register themselves into the Keyman Engine for Web by directly @@ -84,7 +84,7 @@ export class KeyboardHarness { if(this.loadedKeyboard) { throw new Error("Unexpected state: the most-recently loaded keyboard field was not properly reset."); } - this.loadedKeyboard = new Keyboard(scriptObject); + this.loadedKeyboard = new JSKeyboard(scriptObject); } // Is evaluated on script-load for some keyboards using variable stores. diff --git a/web/src/engine/keyboard/src/keyboards/keyboardLoaderBase.ts b/web/src/engine/keyboard/src/keyboards/keyboardLoaderBase.ts index 5ca3d4c8ce..6a203f6ce1 100644 --- a/web/src/engine/keyboard/src/keyboards/keyboardLoaderBase.ts +++ b/web/src/engine/keyboard/src/keyboards/keyboardLoaderBase.ts @@ -1,4 +1,4 @@ -import Keyboard from "./keyboard.js"; +import JSKeyboard from "./keyboard.js"; import { KeyboardHarness } from "./keyboardHarness.js"; import KeyboardProperties from "./keyboardProperties.js"; import { KeyboardLoadErrorBuilder, StubBasedErrorBuilder, UriBasedErrorBuilder } from './keyboardLoadError.js'; @@ -22,7 +22,7 @@ export abstract class KeyboardLoaderBase { * @param uri The URI of the keyboard to load. * @returns A Promise that resolves to the loaded keyboard. */ - public loadKeyboardFromPath(uri: string): Promise { + public loadKeyboardFromPath(uri: string): Promise { this.harness.install(); return this.loadKeyboardInternal(uri, new UriBasedErrorBuilder(uri)); } @@ -33,12 +33,12 @@ export abstract class KeyboardLoaderBase { * @param stub The stub of the keyboard to load. * @returns A Promise that resolves to the loaded keyboard. */ - public async loadKeyboardFromStub(stub: KeyboardStub): Promise { + public async loadKeyboardFromStub(stub: KeyboardStub): Promise { this.harness.install(); return this.loadKeyboardInternal(stub.filename, new StubBasedErrorBuilder(stub)); } - private async loadKeyboardInternal(uri: string, errorBuilder: KeyboardLoadErrorBuilder): Promise { + private async loadKeyboardInternal(uri: string, errorBuilder: KeyboardLoadErrorBuilder): Promise { const byteArray = await this.loadKeyboardBlob(uri, errorBuilder); if (byteArray.slice(0, 4) == Uint8Array.from([0x4b, 0x58, 0x54, 0x53])) { // 'KXTS' @@ -60,5 +60,5 @@ export abstract class KeyboardLoaderBase { protected abstract loadKeyboardBlob(uri: string, errorBuilder: KeyboardLoadErrorBuilder): Promise; - protected abstract loadKeyboardFromScript(scriptSrc: string, errorBuilder: KeyboardLoadErrorBuilder): Promise; + protected abstract loadKeyboardFromScript(scriptSrc: string, errorBuilder: KeyboardLoadErrorBuilder): Promise; } \ No newline at end of file diff --git a/web/src/engine/keyboard/src/keyboards/loaders/domKeyboardLoader.ts b/web/src/engine/keyboard/src/keyboards/loaders/domKeyboardLoader.ts index a6df76aff1..0a273be449 100644 --- a/web/src/engine/keyboard/src/keyboards/loaders/domKeyboardLoader.ts +++ b/web/src/engine/keyboard/src/keyboards/loaders/domKeyboardLoader.ts @@ -2,7 +2,7 @@ /// -import { default as Keyboard } from '../keyboard.js'; +import { default as JSKeyboard } from '../keyboard.js'; import { KeyboardHarness, MinimalKeymanGlobal } from '../keyboardHarness.js'; import { KeyboardLoaderBase } from '../keyboardLoaderBase.js'; import { KeyboardLoadErrorBuilder } from '../keyboardLoadError.js'; @@ -54,7 +54,7 @@ export class DOMKeyboardLoader extends KeyboardLoaderBase { return new Uint8Array(buffer); } - protected async loadKeyboardFromScript(script: string, errorBuilder: KeyboardLoadErrorBuilder): Promise { + protected async loadKeyboardFromScript(script: string, errorBuilder: KeyboardLoadErrorBuilder): Promise { try { this.evalScriptInContext(script, this.harness._jsGlobal); } catch (e) { diff --git a/web/src/engine/keyboard/src/keyboards/loaders/nodeKeyboardLoader.ts b/web/src/engine/keyboard/src/keyboards/loaders/nodeKeyboardLoader.ts index 6ec27364fc..437028e4f3 100644 --- a/web/src/engine/keyboard/src/keyboards/loaders/nodeKeyboardLoader.ts +++ b/web/src/engine/keyboard/src/keyboards/loaders/nodeKeyboardLoader.ts @@ -3,7 +3,7 @@ import { readFile } from 'node:fs/promises'; import { globalObject } from '@keymanapp/web-utils'; -import { default as Keyboard } from '../keyboard.js'; +import { default as JSKeyboard } from '../keyboard.js'; import { KeyboardHarness, MinimalKeymanGlobal } from '../keyboardHarness.js'; import { KeyboardLoaderBase } from '../keyboardLoaderBase.js'; import { KeyboardLoadErrorBuilder } from '../keyboardLoadError.js'; @@ -41,7 +41,7 @@ export class NodeKeyboardLoader extends KeyboardLoaderBase { return Uint8Array.from(buffer); } - protected async loadKeyboardFromScript(scriptSrc: string, errorBuilder: KeyboardLoadErrorBuilder): Promise { + protected async loadKeyboardFromScript(scriptSrc: string, errorBuilder: KeyboardLoadErrorBuilder): Promise { let script; try { script = new vm.Script(scriptSrc); diff --git a/web/src/engine/main/src/contextManagerBase.ts b/web/src/engine/main/src/contextManagerBase.ts index 17fed71bd2..fa187ce2e6 100644 --- a/web/src/engine/main/src/contextManagerBase.ts +++ b/web/src/engine/main/src/contextManagerBase.ts @@ -1,5 +1,5 @@ import { EventEmitter } from 'eventemitter3'; -import { ManagedPromise, type Keyboard } from 'keyman/engine/keyboard'; +import { ManagedPromise, type JSKeyboard } from 'keyman/engine/keyboard'; import { type KeyboardInterface, type OutputTarget } from 'keyman/engine/js-processor'; import { StubAndKeyboardCache, type KeyboardStub } from 'keyman/engine/keyboard-storage'; import { PredictionContext } from 'keyman/engine/interfaces'; @@ -37,7 +37,7 @@ interface EventMap { * @param kbd * @returns */ - 'keyboardchange': (kbd: {keyboard: Keyboard, metadata: KeyboardStub}) => void; + 'keyboardchange': (kbd: {keyboard: JSKeyboard, metadata: KeyboardStub}) => void; } export interface ContextManagerConfiguration { @@ -65,7 +65,7 @@ export interface ContextManagerConfiguration { interface PendingActivation { target: OutputTarget, - keyboard: Promise, + keyboard: Promise, stub: KeyboardStub; } @@ -124,7 +124,7 @@ export abstract class ContextManagerBase this.predictionContext.resetContext(); } - abstract get activeKeyboard(): {keyboard: Keyboard, metadata: KeyboardStub}; + abstract get activeKeyboard(): {keyboard: JSKeyboard, metadata: KeyboardStub}; /** * Determines the 'target' currently used to determine which keyboard should be active. @@ -143,7 +143,7 @@ export abstract class ContextManagerBase * @param kbd * @param target */ - protected abstract activateKeyboardForTarget(kbd: {keyboard: Keyboard, metadata: KeyboardStub}, target: OutputTarget): void; + protected abstract activateKeyboardForTarget(kbd: {keyboard: JSKeyboard, metadata: KeyboardStub}, target: OutputTarget): void; /** * Checks the pending keyboard-activation array for an entry corresponding to the specified @@ -178,7 +178,7 @@ export abstract class ContextManagerBase * @returns */ protected async deferredKeyboardActivation( - kbdPromise: Promise, + kbdPromise: Promise, metadata: KeyboardStub, target: OutputTarget ): Promise { @@ -263,7 +263,7 @@ export abstract class ContextManagerBase this.emit('beforekeyboardchange', activatingKeyboard.metadata); } - let kbdStubPair: { keyboard: Keyboard, metadata: KeyboardStub } = null; + let kbdStubPair: { keyboard: JSKeyboard, metadata: KeyboardStub } = null; if(keyboard) { kbdStubPair = { keyboard: keyboard, @@ -298,7 +298,7 @@ export abstract class ContextManagerBase protected prepareKeyboardForActivation( keyboardId: string, languageCode?: string - ): {keyboard: Promise, metadata: KeyboardStub} { + ): {keyboard: Promise, metadata: KeyboardStub} { // Set default language code languageCode ||= ''; @@ -333,7 +333,7 @@ export abstract class ContextManagerBase } // Determine if the keyboard was previously loaded but is not active; use the cached, pre-loaded version if so. - let keyboard: Keyboard; + let keyboard: JSKeyboard; if(keyboard = this.keyboardCache.getKeyboardForStub(requestedStub)) { return { keyboard: Promise.resolve(keyboard), @@ -351,7 +351,7 @@ export abstract class ContextManagerBase this.emit('keyboardasyncload', requestedStub, completionPromise.corePromise); let keyboardPromise = this.keyboardCache.fetchKeyboardForStub(requestedStub); - let timeoutPromise = new Promise((resolve, reject) => { + let timeoutPromise = new Promise((resolve, reject) => { const timeoutMsg = `Sorry, the ${requestedStub.name} keyboard for ${requestedStub.langName} is not currently available.`; window.setTimeout(() => reject(new Error(timeoutMsg)), ContextManagerBase.TIMEOUT_THRESHOLD); }); diff --git a/web/src/engine/main/src/hardKeyboard.ts b/web/src/engine/main/src/hardKeyboard.ts index 60f2b36200..62cc91e63b 100644 --- a/web/src/engine/main/src/hardKeyboard.ts +++ b/web/src/engine/main/src/hardKeyboard.ts @@ -1,5 +1,5 @@ import { EventEmitter } from "eventemitter3"; -import { Keyboard, KeyMapping, KeyEvent, Codes } from "keyman/engine/keyboard"; +import { JSKeyboard, KeyMapping, KeyEvent, Codes } from "keyman/engine/keyboard"; import { type RuleBehavior } from 'keyman/engine/js-processor'; import { KeyEventSourceInterface } from 'keyman/engine/osk'; import { ModifierKeyConstants } from '@keymanapp/common-types'; @@ -13,7 +13,7 @@ interface EventMap { export default class HardKeyboard extends EventEmitter implements KeyEventSourceInterface { } -export function processForMnemonicsAndLegacy(s: KeyEvent, activeKeyboard: Keyboard, baseLayout: string): KeyEvent { +export function processForMnemonicsAndLegacy(s: KeyEvent, activeKeyboard: JSKeyboard, baseLayout: string): KeyEvent { // Mnemonic handling. if(activeKeyboard && activeKeyboard.isMnemonic) { // The following will never set a code corresponding to a modifier key, so it's fine to do this, diff --git a/web/src/engine/main/src/headless/inputProcessor.ts b/web/src/engine/main/src/headless/inputProcessor.ts index 17bb667be7..055800238e 100644 --- a/web/src/engine/main/src/headless/inputProcessor.ts +++ b/web/src/engine/main/src/headless/inputProcessor.ts @@ -7,7 +7,7 @@ import { globalObject, DeviceSpec } from "@keymanapp/web-utils"; import { CoreFactory, MainModule as KmCoreModule } from 'keyman/engine/core-processor'; -import { Codes, type Keyboard, type KeyEvent } from "keyman/engine/keyboard"; +import { Codes, type JSKeyboard, type KeyEvent } from "keyman/engine/keyboard"; import { type Alternate, isEmptyTransform, @@ -74,11 +74,11 @@ export class InputProcessor { return this.km_core; } - public get activeKeyboard(): Keyboard { + public get activeKeyboard(): JSKeyboard { return this.keyboardInterface.activeKeyboard; } - public set activeKeyboard(keyboard: Keyboard) { + public set activeKeyboard(keyboard: JSKeyboard) { this.keyboardInterface.activeKeyboard = keyboard; // All old deadkeys and keyboard-specific cache should immediately be invalidated diff --git a/web/src/engine/main/src/keymanEngine.ts b/web/src/engine/main/src/keymanEngine.ts index 996ee48aa9..d603dcd9f9 100644 --- a/web/src/engine/main/src/keymanEngine.ts +++ b/web/src/engine/main/src/keymanEngine.ts @@ -1,4 +1,4 @@ -import { type KeyEvent, type Keyboard, KeyboardKeymanGlobal } from "keyman/engine/keyboard"; +import { type KeyEvent, type JSKeyboard, KeyboardKeymanGlobal } from "keyman/engine/keyboard"; import { OutputTarget, ProcessorInitOptions, RuleBehavior } from 'keyman/engine/js-processor'; import { DOMKeyboardLoader as KeyboardLoader } from "keyman/engine/keyboard/dom-keyboard-loader"; import { InputProcessor } from './headless/inputProcessor.js'; @@ -554,8 +554,8 @@ export default class KeymanEngine< * * See https://help.keyman.com/developer/engine/web/current-version/reference/core/isChiral */ - public isChiral(k0?: string | Keyboard) { - let kbd: Keyboard; + public isChiral(k0?: string | JSKeyboard) { + let kbd: JSKeyboard; if(k0) { if(typeof k0 == 'string') { const kbdObj = this.keyboardRequisitioner.cache.getKeyboard(k0); diff --git a/web/src/engine/osk/src/banner/banner.ts b/web/src/engine/osk/src/banner/banner.ts index e38b6b6625..6bbadccfba 100644 --- a/web/src/engine/osk/src/banner/banner.ts +++ b/web/src/engine/osk/src/banner/banner.ts @@ -1,4 +1,4 @@ -import { Keyboard, KeyboardProperties } from 'keyman/engine/keyboard'; +import { JSKeyboard, KeyboardProperties } from 'keyman/engine/keyboard'; import { createUnselectableElement } from 'keyman/engine/dom-utils'; // Base class for a banner above the keyboard in the OSK @@ -98,7 +98,7 @@ export abstract class Banner { * @param keyboard * @param keyboardProperties */ - public configureForKeyboard(keyboard: Keyboard, keyboardProperties: KeyboardProperties) { } + public configureForKeyboard(keyboard: JSKeyboard, keyboardProperties: KeyboardProperties) { } public readonly refreshLayout?: () => void; diff --git a/web/src/engine/osk/src/banner/bannerController.ts b/web/src/engine/osk/src/banner/bannerController.ts index 7fbc8ceb9b..f9bd68466f 100644 --- a/web/src/engine/osk/src/banner/bannerController.ts +++ b/web/src/engine/osk/src/banner/bannerController.ts @@ -6,7 +6,7 @@ import { BannerView } from './bannerView.js'; import { Banner } from './banner.js'; import { BlankBanner } from './blankBanner.js'; import { HTMLBanner } from './htmlBanner.js'; -import { Keyboard, KeyboardProperties } from 'keyman/engine/keyboard'; +import { JSKeyboard, KeyboardProperties } from 'keyman/engine/keyboard'; export class BannerController { private container: BannerView; @@ -17,7 +17,7 @@ export class BannerController { private _inactiveBanner: Banner; - private keyboard: Keyboard; + private keyboard: JSKeyboard; private keyboardStub: KeyboardProperties; /** @@ -105,7 +105,7 @@ export class BannerController { * @param keyboard * @param keyboardProperties */ - public configureForKeyboard(keyboard: Keyboard, keyboardProperties: KeyboardProperties) { + public configureForKeyboard(keyboard: JSKeyboard, keyboardProperties: KeyboardProperties) { this.keyboard = keyboard; this.keyboardStub = keyboardProperties; diff --git a/web/src/engine/osk/src/banner/suggestionBanner.ts b/web/src/engine/osk/src/banner/suggestionBanner.ts index 0c4ccb420a..108087fe32 100644 --- a/web/src/engine/osk/src/banner/suggestionBanner.ts +++ b/web/src/engine/osk/src/banner/suggestionBanner.ts @@ -13,7 +13,7 @@ import { import { BANNER_GESTURE_SET } from './bannerGestureSet.js'; -import { DeviceSpec, Keyboard, KeyboardProperties, timedPromise } from 'keyman/engine/keyboard'; +import { DeviceSpec, JSKeyboard, KeyboardProperties, timedPromise } from 'keyman/engine/keyboard'; import { Banner } from './banner.js'; import { ParsedLengthStyle } from '../lengthStyle.js'; import { getFontSizeStyle } from '../fontSizeUtils.js'; @@ -675,7 +675,7 @@ export class SuggestionBanner extends Banner { return result; } - public configureForKeyboard(keyboard: Keyboard, keyboardProperties: KeyboardProperties) { + public configureForKeyboard(keyboard: JSKeyboard, keyboardProperties: KeyboardProperties) { const rtl = keyboard.isRTL; // Removes all previous children. (.replaceChildren requires Chrome for Android 86.) diff --git a/web/src/engine/osk/src/components/helpPageView.ts b/web/src/engine/osk/src/components/helpPageView.ts index af489a2686..85d7ff241b 100644 --- a/web/src/engine/osk/src/components/helpPageView.ts +++ b/web/src/engine/osk/src/components/helpPageView.ts @@ -1,15 +1,15 @@ -import { Keyboard } from 'keyman/engine/keyboard'; +import { JSKeyboard } from 'keyman/engine/keyboard'; import KeyboardView from './keyboardView.interface.js'; import { ParsedLengthStyle } from "../lengthStyle.js"; export default class HelpPageView implements KeyboardView { - private readonly kbd: Keyboard; + private readonly kbd: JSKeyboard; public readonly element: HTMLDivElement; private static readonly ID = 'kmw-osk-help-page'; - constructor(keyboard: Keyboard) { + constructor(keyboard: JSKeyboard) { this.kbd = keyboard; var Ldiv = this.element = document.createElement('div'); diff --git a/web/src/engine/osk/src/components/titleBar.ts b/web/src/engine/osk/src/components/titleBar.ts index dd4eba3df7..dcde10f9c9 100644 --- a/web/src/engine/osk/src/components/titleBar.ts +++ b/web/src/engine/osk/src/components/titleBar.ts @@ -1,6 +1,6 @@ import { EventEmitter } from 'eventemitter3'; -import { Keyboard } from 'keyman/engine/keyboard'; +import { JSKeyboard } from 'keyman/engine/keyboard'; import OSKViewComponent from './oskViewComponent.interface.js'; import { ParsedLengthStyle } from '../lengthStyle.js'; @@ -102,7 +102,7 @@ export default class TitleBar extends EventEmitter implement this._caption.innerHTML = str; } - public setTitleFromKeyboard(keyboard: Keyboard) { + public setTitleFromKeyboard(keyboard: JSKeyboard) { let title = "" + keyboard?.name + ''; // I1972 // I2186 this._caption.innerHTML = title; } diff --git a/web/src/engine/osk/src/index.ts b/web/src/engine/osk/src/index.ts index f010697d96..121b8f4337 100644 --- a/web/src/engine/osk/src/index.ts +++ b/web/src/engine/osk/src/index.ts @@ -1,4 +1,4 @@ -export { Codes, DeviceSpec, Keyboard, KeyboardProperties, SpacebarText } from 'keyman/engine/keyboard'; +export { Codes, DeviceSpec, JSKeyboard, KeyboardProperties, SpacebarText } from 'keyman/engine/keyboard'; export { default as OSKView } from './views/oskView.js'; export { default as FloatingOSKView, FloatingOSKViewConfiguration } from './views/floatingOskView.js'; diff --git a/web/src/engine/osk/src/keyboard-layout/oskLayerGroup.ts b/web/src/engine/osk/src/keyboard-layout/oskLayerGroup.ts index 4bf4bc01b4..44bc01a6f9 100644 --- a/web/src/engine/osk/src/keyboard-layout/oskLayerGroup.ts +++ b/web/src/engine/osk/src/keyboard-layout/oskLayerGroup.ts @@ -1,4 +1,4 @@ -import { type DeviceSpec, Keyboard, ActiveLayout, ButtonClasses } from 'keyman/engine/keyboard'; +import { type DeviceSpec, JSKeyboard, ActiveLayout, ButtonClasses } from 'keyman/engine/keyboard'; import { InputSample } from '@keymanapp/gesture-recognizer'; @@ -24,7 +24,7 @@ export default class OSKLayerGroup { private _activeLayerId: string = 'default'; private _heightPadding: number; - public constructor(vkbd: VisualKeyboard, keyboard: Keyboard, formFactor: DeviceSpec.FormFactor) { + public constructor(vkbd: VisualKeyboard, keyboard: JSKeyboard, formFactor: DeviceSpec.FormFactor) { const layout = keyboard.layout(formFactor); this.spec = layout; this.vkbd = vkbd; diff --git a/web/src/engine/osk/src/views/oskView.ts b/web/src/engine/osk/src/views/oskView.ts index 53a9bbe253..480ed5f99c 100644 --- a/web/src/engine/osk/src/views/oskView.ts +++ b/web/src/engine/osk/src/views/oskView.ts @@ -13,7 +13,7 @@ import { type KeyElement } from '../keyElement.js'; import { Codes, DeviceSpec, - Keyboard, + JSKeyboard, KeyboardProperties, ManagedPromise, type MinimalCodesInterface @@ -169,7 +169,7 @@ export default abstract class OSKView private _boxBaseTouchEventCancel: (e: TouchEvent) => boolean; private keyboardData: { - keyboard: Keyboard, + keyboard: JSKeyboard, metadata: KeyboardProperties }; @@ -533,14 +533,14 @@ export default abstract class OSKView } public get activeKeyboard(): { - keyboard: Keyboard, + keyboard: JSKeyboard, metadata: KeyboardProperties } { return this.keyboardData; } public set activeKeyboard(keyboardData: { - keyboard: Keyboard, + keyboard: JSKeyboard, metadata: KeyboardProperties }) { this.keyboardData = keyboardData; @@ -782,7 +782,7 @@ export default abstract class OSKView this.postKeyboardLoad(); } - private _GenerateKeyboardView(keyboard: Keyboard, keyboardMetadata: KeyboardProperties): KeyboardView { + private _GenerateKeyboardView(keyboard: JSKeyboard, keyboardMetadata: KeyboardProperties): KeyboardView { let device = this.targetDevice; this._Box.className = ""; @@ -815,7 +815,7 @@ export default abstract class OSKView * @param {Object} keyboard The keyboard to visualize * Description Generates the visual keyboard element and attaches it to KMW */ - private _GenerateVisualKeyboard(keyboard: Keyboard, keyboardMetadata: KeyboardProperties): VisualKeyboard { + private _GenerateVisualKeyboard(keyboard: JSKeyboard, keyboardMetadata: KeyboardProperties): VisualKeyboard { let device = this.targetDevice; const resourcePath = getResourcePath(this.config); diff --git a/web/src/engine/osk/src/visualKeyboard.ts b/web/src/engine/osk/src/visualKeyboard.ts index 570a82a209..9828604abd 100644 --- a/web/src/engine/osk/src/visualKeyboard.ts +++ b/web/src/engine/osk/src/visualKeyboard.ts @@ -5,7 +5,7 @@ import { ActiveLayout, DeviceSpec, type InternalKeyboardFont, - Keyboard, + JSKeyboard, KeyboardProperties, KeyDistribution, KeyEvent, @@ -87,7 +87,7 @@ export interface VisualKeyboardConfiguration extends CommonConfiguration { /** * The Keyman keyboard on which to base the on-screen keyboard being represented. */ - keyboard: Keyboard, + keyboard: JSKeyboard, /** * Metadata about the keyboard, such as relevant fonts, display name, and language code. @@ -242,7 +242,7 @@ export default class VisualKeyboard extends EventEmitter implements Ke public deferLayout: boolean; // The keyboard object corresponding to this VisualKeyboard. - public readonly layoutKeyboard: Keyboard; + public readonly layoutKeyboard: JSKeyboard; public readonly layoutKeyboardProperties: KeyboardProperties; get layerId(): string { @@ -349,7 +349,7 @@ export default class VisualKeyboard extends EventEmitter implements Ke if (!this.layoutKeyboard) { // May occasionally be null in embedded contexts; have seen this when iOS engine sets // keyboard height during change of keyboards. - this.layoutKeyboard = new Keyboard(null); + this.layoutKeyboard = new JSKeyboard(null); } this.layerGroup = new OSKLayerGroup(this, this.layoutKeyboard, formFactor); @@ -1424,7 +1424,7 @@ export default class VisualKeyboard extends EventEmitter implements Ke * Create copy of the OSK that can be used for embedding in documentation or help * The currently active keyboard will be returned if PInternalName is null * - * @param {Keyboard} PKbd the keyboard object to be displayed + * @param {JSKeyboard} PKbd the keyboard object to be displayed * @param {KeyboardProperties} kbdProperties the metadata stub for the keyboard * @param {Object} pathConfig an OSK path-configuration instance * @param {string=} argFormFactor layout form factor, defaulting to 'desktop' @@ -1434,7 +1434,7 @@ export default class VisualKeyboard extends EventEmitter implements Ke * @return {Object} DIV object with filled keyboard layer content */ static buildDocumentationKeyboard( - PKbd: Keyboard, + PKbd: JSKeyboard, kbdProperties: KeyboardProperties, pathConfig: OSKResourcePathConfiguration, argFormFactor: DeviceSpec.FormFactor, diff --git a/web/src/test/auto/dom/cases/keyboard/domKeyboardLoader.tests.ts b/web/src/test/auto/dom/cases/keyboard/domKeyboardLoader.tests.ts index 7f2f48e2c1..46d6399c2a 100644 --- a/web/src/test/auto/dom/cases/keyboard/domKeyboardLoader.tests.ts +++ b/web/src/test/auto/dom/cases/keyboard/domKeyboardLoader.tests.ts @@ -1,7 +1,7 @@ import { assert } from 'chai'; import { DOMKeyboardLoader } from 'keyman/engine/keyboard/dom-keyboard-loader'; -import { extendString, KeyboardHarness, Keyboard, MinimalKeymanGlobal, DeviceSpec, KeyboardKeymanGlobal, KeyboardDownloadError, KeyboardScriptError } from 'keyman/engine/keyboard'; +import { extendString, KeyboardHarness, JSKeyboard, MinimalKeymanGlobal, DeviceSpec, KeyboardKeymanGlobal, KeyboardDownloadError, KeyboardScriptError } from 'keyman/engine/keyboard'; import { KeyboardInterface, Mock } from 'keyman/engine/js-processor'; import { assertThrowsAsync } from 'keyman/tools/testing/test-utils'; @@ -49,7 +49,7 @@ describe('Keyboard loading in DOM', function() { it('`window`, disabled rule processing', async () => { const harness = new KeyboardHarness(window, MinimalKeymanGlobal); let keyboardLoader = new DOMKeyboardLoader(harness); - let keyboard: Keyboard = await keyboardLoader.loadKeyboardFromPath('/common/test/resources/keyboards/khmer_angkor.js'); + let keyboard: JSKeyboard = await keyboardLoader.loadKeyboardFromPath('/common/test/resources/keyboards/khmer_angkor.js'); assert.isOk(keyboard); assert.equal(keyboard.id, 'Keyboard_khmer_angkor'); @@ -67,7 +67,7 @@ describe('Keyboard loading in DOM', function() { it('`window`, enabled rule processing', async () => { const harness = new KeyboardInterface(window, MinimalKeymanGlobal); const keyboardLoader = new DOMKeyboardLoader(harness); - const keyboard: Keyboard = await keyboardLoader.loadKeyboardFromPath('/common/test/resources/keyboards/khmer_angkor.js'); + const keyboard: JSKeyboard = await keyboardLoader.loadKeyboardFromPath('/common/test/resources/keyboards/khmer_angkor.js'); harness.activeKeyboard = keyboard; assert.isOk(keyboard); @@ -99,7 +99,7 @@ describe('Keyboard loading in DOM', function() { let keyboardLoader = new DOMKeyboardLoader(harness); // Preload a keyboard and make it active. - const test_kbd: Keyboard = await keyboardLoader.loadKeyboardFromPath('/common/test/resources/keyboards/test_917.js'); + const test_kbd: JSKeyboard = await keyboardLoader.loadKeyboardFromPath('/common/test/resources/keyboards/test_917.js'); harness.activeKeyboard = test_kbd; assert.isNotOk(harness.loadedKeyboard); diff --git a/web/src/test/auto/dom/kbdLoader.ts b/web/src/test/auto/dom/kbdLoader.ts index b0d092c12d..4509ab4cf8 100644 --- a/web/src/test/auto/dom/kbdLoader.ts +++ b/web/src/test/auto/dom/kbdLoader.ts @@ -3,7 +3,7 @@ import { } from 'keyman/engine/keyboard/dom-keyboard-loader'; import { - Keyboard, + JSKeyboard, KeyboardProperties, MinimalKeymanGlobal } from 'keyman/engine/keyboard'; @@ -21,11 +21,11 @@ export function loadKeyboardsFromStubs(apiStubs: any, baseDir: string) { baseDir = baseDir || './'; const keyboards: { [key: string]: { - keyboard: Keyboard, + keyboard: JSKeyboard, metadata: KeyboardStub } } = {}; - let priorPromise: Promise = Promise.resolve(); + let priorPromise: Promise = Promise.resolve(); for(const stub of apiStubs) { // We are keeping this strictly sequential because we don't have sandboxed // loading yet; lack of sandboxing means that all loading keyboards compete diff --git a/web/src/test/auto/headless/app/browser/hardware-event-processing.tests.ts b/web/src/test/auto/headless/app/browser/hardware-event-processing.tests.ts index d00425362d..0643c88a86 100644 --- a/web/src/test/auto/headless/app/browser/hardware-event-processing.tests.ts +++ b/web/src/test/auto/headless/app/browser/hardware-event-processing.tests.ts @@ -4,7 +4,7 @@ import { preprocessKeyboardEvent } from 'keyman/app/browser'; import { processForMnemonicsAndLegacy } from 'keyman/engine/main'; import { PhysicalInputEventSpec } from '@keymanapp/recorder-core'; import { DeviceSpec } from '@keymanapp/web-utils'; -import { Codes, Keyboard, KeyEvent } from 'keyman/engine/keyboard'; +import { Codes, JSKeyboard, KeyEvent } from 'keyman/engine/keyboard'; const ModifierCodes = Codes.modifierCodes; const KeyCodes = Codes.keyCodes; @@ -24,7 +24,7 @@ describe("app/browser: hardware event processing", () => { modifierSet: PhysicalInputEventSpec.modifierCodes.Shift, location: 1 }) as any as KeyboardEvent, { - activeKeyboard: new Keyboard({ KM: 0 }), + activeKeyboard: new JSKeyboard({ KM: 0 }), modStateFlags: 0, baseLayout: 'us' }, @@ -46,7 +46,7 @@ describe("app/browser: hardware event processing", () => { keyCode: KeyCodes.K_A, modifierSet: 0 }) as any as KeyboardEvent, { - activeKeyboard: new Keyboard({ KM: 0 }), + activeKeyboard: new JSKeyboard({ KM: 0 }), modStateFlags: 0, baseLayout: 'us' }, @@ -66,7 +66,7 @@ describe("app/browser: hardware event processing", () => { location: 1 }) as any as KeyboardEvent, { // KMBM: Keyman Modifier BitMask - activeKeyboard: new Keyboard({KM: 0}), + activeKeyboard: new JSKeyboard({KM: 0}), modStateFlags: 0, baseLayout: 'us' }, @@ -86,7 +86,7 @@ describe("app/browser: hardware event processing", () => { location: 1 }) as any as KeyboardEvent, { // KMBM: Keyman Modifier BitMask - activeKeyboard: new Keyboard({KM: 0}), + activeKeyboard: new JSKeyboard({KM: 0}), modStateFlags: ModifierCodes.ALT, baseLayout: 'us' }, @@ -108,7 +108,7 @@ describe("app/browser: hardware event processing", () => { location: 1 }) as any as KeyboardEvent, { // KMBM: Keyman Modifier BitMask - activeKeyboard: new Keyboard({KM:0, KMBM: Codes.modifierBitmasks.CHIRAL}), + activeKeyboard: new JSKeyboard({KM:0, KMBM: Codes.modifierBitmasks.CHIRAL}), modStateFlags: 0, baseLayout: 'us' }, @@ -127,7 +127,7 @@ describe("app/browser: hardware event processing", () => { modifierSet: 0 }) as any as KeyboardEvent, { // KMBM: Keyman Modifier BitMask - activeKeyboard: new Keyboard({KM: 0, KMBM: Codes.modifierBitmasks.CHIRAL}), + activeKeyboard: new JSKeyboard({KM: 0, KMBM: Codes.modifierBitmasks.CHIRAL}), modStateFlags: 0, baseLayout: 'us' }, @@ -147,7 +147,7 @@ describe("app/browser: hardware event processing", () => { location: 1 }) as any as KeyboardEvent, { // KMBM: Keyman Modifier BitMask - activeKeyboard: new Keyboard({KM: 0, KMBM: Codes.modifierBitmasks.CHIRAL}), + activeKeyboard: new JSKeyboard({KM: 0, KMBM: Codes.modifierBitmasks.CHIRAL}), modStateFlags: 0, baseLayout: 'us' }, @@ -167,7 +167,7 @@ describe("app/browser: hardware event processing", () => { location: 1 }) as any as KeyboardEvent, { // KMBM: Keyman Modifier BitMask - activeKeyboard: new Keyboard({KM: 0, KMBM: Codes.modifierBitmasks.CHIRAL}), + activeKeyboard: new JSKeyboard({KM: 0, KMBM: Codes.modifierBitmasks.CHIRAL}), modStateFlags: ModifierCodes.LALT, baseLayout: 'us' }, @@ -188,7 +188,7 @@ describe("app/browser: hardware event processing", () => { modifierSet: PhysicalInputEventSpec.modifierCodes.Shift, location: 1 }) as any as KeyboardEvent, { - activeKeyboard: new Keyboard({ KM: 1 }), + activeKeyboard: new JSKeyboard({ KM: 1 }), modStateFlags: 0, baseLayout: 'us' }, @@ -206,7 +206,7 @@ describe("app/browser: hardware event processing", () => { keyCode: KeyCodes.K_A, modifierSet: 0 }) as any as KeyboardEvent, { - activeKeyboard: new Keyboard({ KM: 1 }), + activeKeyboard: new JSKeyboard({ KM: 1 }), modStateFlags: 0, baseLayout: 'us' }, @@ -227,7 +227,7 @@ describe("app/browser: hardware event processing", () => { modifierSet: PhysicalInputEventSpec.modifierCodes.Shift, location: 1 }) as any as KeyboardEvent, { - activeKeyboard: new Keyboard({ KM: undefined }), + activeKeyboard: new JSKeyboard({ KM: undefined }), modStateFlags: 0, baseLayout: 'us' }, @@ -245,7 +245,7 @@ describe("app/browser: hardware event processing", () => { keyCode: KeyCodes.K_A, modifierSet: 0 }) as any as KeyboardEvent, { - activeKeyboard: new Keyboard({ KM: undefined }), + activeKeyboard: new JSKeyboard({ KM: undefined }), modStateFlags: 0, baseLayout: 'us' }, @@ -264,7 +264,7 @@ describe("app/browser: hardware event processing", () => { modifierSet: PhysicalInputEventSpec.modifierCodes.Alt, location: 0 }) as any as KeyboardEvent, { - activeKeyboard: new Keyboard({ KM: undefined }), + activeKeyboard: new JSKeyboard({ KM: undefined }), // Internally assumes that the ALT-press event was previously handled, with this as // the resulting modifier state at the time of key-press. modStateFlags: ModifierCodes.LALT, @@ -298,7 +298,7 @@ describe("app/browser: hardware event processing", () => { const finalKeyEvent = processForMnemonicsAndLegacy( baseKeyEvent, - new Keyboard({KM: 0}), + new JSKeyboard({KM: 0}), 'us' ); @@ -317,7 +317,7 @@ describe("app/browser: hardware event processing", () => { const finalKeyEvent = processForMnemonicsAndLegacy( baseKeyEvent, - new Keyboard({KM: 0}), + new JSKeyboard({KM: 0}), 'us' ); @@ -336,7 +336,7 @@ describe("app/browser: hardware event processing", () => { const finalKeyEvent = processForMnemonicsAndLegacy( baseKeyEvent, - new Keyboard({KM: 0}), + new JSKeyboard({KM: 0}), 'us' ); @@ -355,7 +355,7 @@ describe("app/browser: hardware event processing", () => { const finalKeyEvent = processForMnemonicsAndLegacy( baseKeyEvent, - new Keyboard({KM: 0}), + new JSKeyboard({KM: 0}), 'us' ); @@ -376,7 +376,7 @@ describe("app/browser: hardware event processing", () => { const finalKeyEvent = processForMnemonicsAndLegacy( baseKeyEvent, - new Keyboard({KM:0, KMBM: Codes.modifierBitmasks.CHIRAL}), + new JSKeyboard({KM:0, KMBM: Codes.modifierBitmasks.CHIRAL}), 'us' ); @@ -395,7 +395,7 @@ describe("app/browser: hardware event processing", () => { const finalKeyEvent = processForMnemonicsAndLegacy( baseKeyEvent, - new Keyboard({KM:0, KMBM: Codes.modifierBitmasks.CHIRAL}), + new JSKeyboard({KM:0, KMBM: Codes.modifierBitmasks.CHIRAL}), 'us' ); @@ -414,7 +414,7 @@ describe("app/browser: hardware event processing", () => { const finalKeyEvent = processForMnemonicsAndLegacy( baseKeyEvent, - new Keyboard({KM:0, KMBM: Codes.modifierBitmasks.CHIRAL}), + new JSKeyboard({KM:0, KMBM: Codes.modifierBitmasks.CHIRAL}), 'us' ); @@ -433,7 +433,7 @@ describe("app/browser: hardware event processing", () => { const finalKeyEvent = processForMnemonicsAndLegacy( baseKeyEvent, - new Keyboard({KM:0, KMBM: Codes.modifierBitmasks.CHIRAL}), + new JSKeyboard({KM:0, KMBM: Codes.modifierBitmasks.CHIRAL}), 'us' ); @@ -454,7 +454,7 @@ describe("app/browser: hardware event processing", () => { const finalKeyEvent = processForMnemonicsAndLegacy( baseKeyEvent, - new Keyboard({KM:1}), + new JSKeyboard({KM:1}), 'us' ); @@ -477,7 +477,7 @@ describe("app/browser: hardware event processing", () => { const finalKeyEvent = processForMnemonicsAndLegacy( baseKeyEvent, - new Keyboard({KM:1}), + new JSKeyboard({KM:1}), 'us' ); @@ -503,7 +503,7 @@ describe("app/browser: hardware event processing", () => { const finalKeyEvent = processForMnemonicsAndLegacy( baseKeyEvent, - new Keyboard({KM:undefined}), + new JSKeyboard({KM:undefined}), 'us' ); @@ -527,7 +527,7 @@ describe("app/browser: hardware event processing", () => { const finalKeyEvent = processForMnemonicsAndLegacy( baseKeyEvent, - new Keyboard({KM:undefined}), + new JSKeyboard({KM:undefined}), 'us' ); @@ -551,7 +551,7 @@ describe("app/browser: hardware event processing", () => { const finalKeyEvent = processForMnemonicsAndLegacy( baseKeyEvent, - new Keyboard({KM:undefined}), + new JSKeyboard({KM:undefined}), 'us' ); @@ -578,7 +578,7 @@ describe("app/browser: hardware event processing", () => { const finalKeyEvent = processForMnemonicsAndLegacy( baseKeyEvent, - new Keyboard({KM:undefined}), + new JSKeyboard({KM:undefined}), 'us' ); diff --git a/web/src/test/auto/headless/engine/js-processor/bundled-module.tests.js b/web/src/test/auto/headless/engine/js-processor/bundled-module.tests.js index a6b80d5004..05829985ae 100644 --- a/web/src/test/auto/headless/engine/js-processor/bundled-module.tests.js +++ b/web/src/test/auto/headless/engine/js-processor/bundled-module.tests.js @@ -46,7 +46,7 @@ describe('Bundled ES Module for js-processor', function() { describe('Bundled ES Module for keyboard', function () { describe('Keyboard', function () { it('should initialize without errors', function () { - let kp = new Package2.Keyboard(); + let kp = new Package2.JSKeyboard(); assert.isNotNull(kp); }); }); diff --git a/web/src/test/auto/headless/engine/js-processor/engine/stores.tests.js b/web/src/test/auto/headless/engine/js-processor/engine/stores.tests.js index 8174cbe077..31eb5a2af5 100644 --- a/web/src/test/auto/headless/engine/js-processor/engine/stores.tests.js +++ b/web/src/test/auto/headless/engine/js-processor/engine/stores.tests.js @@ -1,6 +1,6 @@ import { assert } from 'chai'; -import { Keyboard } from 'keyman/engine/keyboard'; +import { JSKeyboard } from 'keyman/engine/keyboard'; import { KeyboardProcessor } from 'keyman/engine/js-processor'; import { extendString } from '@keymanapp/web-utils'; @@ -24,7 +24,7 @@ describe('Engine - Stores', function() { let processor = new KeyboardProcessor(device); // A 'hollow' Keyboard that only follows default rules. That said, we need a Keyboard // instance to host cache data for our exploded store tests. - processor.activeKeyboard = new Keyboard(); + processor.activeKeyboard = new JSKeyboard(); // Function defined at top of file; creates supplementary pairs for extended Unicode codepoints. var u = toSupplementaryPairString; diff --git a/web/src/test/auto/headless/engine/keyboard-storage/stubAndKeyboardCache.tests.js b/web/src/test/auto/headless/engine/keyboard-storage/stubAndKeyboardCache.tests.js index 7260b9982e..d8b52dea37 100644 --- a/web/src/test/auto/headless/engine/keyboard-storage/stubAndKeyboardCache.tests.js +++ b/web/src/test/auto/headless/engine/keyboard-storage/stubAndKeyboardCache.tests.js @@ -62,7 +62,7 @@ describe('StubAndKeyboardCache', function () { assert.strictEqual(cache.defaultStub, galaxie_stub); }); - it('loads & caches `Keyboard`s, `Keyboard` promise pending resolution', async () => { + it('loads & caches `JSKeyboard`s, `JSKeyboard` promise pending resolution', async () => { let keyboardLoader = new NodeKeyboardLoader(new KeyboardHarness({}, MinimalKeymanGlobal)); const cache = new StubAndKeyboardCache(keyboardLoader);