diff --git a/packages/dev/gui/src/2D/controls/virtualKeyboard.ts b/packages/dev/gui/src/2D/controls/virtualKeyboard.ts index aeb6d1e6b14..00aac7b3146 100644 --- a/packages/dev/gui/src/2D/controls/virtualKeyboard.ts +++ b/packages/dev/gui/src/2D/controls/virtualKeyboard.ts @@ -9,6 +9,7 @@ import type { TextBlock } from "./textBlock"; import type { InputText } from "./inputText"; import { RegisterClass } from "core/Misc/typeStore"; import type { AdvancedDynamicTexture } from "../advancedDynamicTexture"; +import { InputTextArea } from "./inputTextArea"; /** * Class used to store key control properties @@ -169,12 +170,12 @@ export class VirtualKeyboard extends StackPanel { } } - private _currentlyConnectedInputText: Nullable = null; + private _currentlyConnectedInputText: Nullable = null; private _connectedInputTexts: ConnectedInputText[] = []; private _onKeyPressObserver: Nullable> = null; /** Gets the input text control currently attached to the keyboard */ - public get connectedInputText(): Nullable { + public get connectedInputText(): Nullable { return this._currentlyConnectedInputText; } @@ -206,13 +207,25 @@ export class VirtualKeyboard extends StackPanel { this.applyShiftState(this.shiftState); return; case "\u2190": - this._currentlyConnectedInputText.processKey(8); + if (this._currentlyConnectedInputText instanceof InputTextArea) { + this._currentlyConnectedInputText.alternativeProcessKey("Backspace"); + } else { + this._currentlyConnectedInputText.processKey(8); + } return; case "\u21B5": - this._currentlyConnectedInputText.processKey(13); + if (this._currentlyConnectedInputText instanceof InputTextArea) { + this._currentlyConnectedInputText.alternativeProcessKey("Enter"); + } else { + this._currentlyConnectedInputText.processKey(13); + } return; } - this._currentlyConnectedInputText.processKey(-1, this.shiftState ? key.toUpperCase() : key); + if (this._currentlyConnectedInputText instanceof InputTextArea) { + this._currentlyConnectedInputText.alternativeProcessKey("", this.shiftState ? key.toUpperCase() : key); + } else { + this._currentlyConnectedInputText.processKey(-1, this.shiftState ? key.toUpperCase() : key); + } if (this.shiftState === 1) { this.shiftState = 0;