目录

@ohos.inputMethodEngine (Input Method Service)

The inputMethodEngine module is oriented to input method applications (including system and third-party input method applications). With the APIs of this module, input method applications are able to create soft keyboard windows, insert or delete characters, select text, and listen for physical keyboard events.

The initial APIs of this module are supported since API version 8. Newly added APIs will be marked with a superscript to indicate their earliest API version.

Modules to Import

import { inputMethodEngine } from '@kit.IMEKit';

Constants

Provides the constant values of function keys, edit boxes, and the cursor.

System capability: SystemCapability.MiscServices.InputMethodFramework

Name Type Value Description
ENTER_KEY_TYPE_UNSPECIFIED number 0 No function is specified for the key.
ENTER_KEY_TYPE_GO number 2 Key that executes a command or navigates to a specific location.
ENTER_KEY_TYPE_SEARCH number 3 Key that initiates a search operation.
ENTER_KEY_TYPE_SEND number 4 Key that sends the text to its target.
ENTER_KEY_TYPE_NEXT number 5 Key that moves the focus to the next item in a sequence.
ENTER_KEY_TYPE_DONE number 6 Key that indicates that a task or input is complete.
ENTER_KEY_TYPE_PREVIOUS number 7 Key that moves the focus to the previous item in a sequence.
ENTER_KEY_TYPE_NEWLINE12+ number 8 Key that inserts a new line.
PATTERN_NULL number -1 Any type of edit box.
PATTERN_TEXT number 0 Text edit box.
PATTERN_NUMBER number 2 Number edit box.
PATTERN_PHONE number 3 Phone number edit box.
PATTERN_DATETIME number 4 Date edit box.
PATTERN_EMAIL number 5 Email edit box.
PATTERN_URI number 6 URI edit box.
PATTERN_PASSWORD number 7 Password edit box.
PATTERN_PASSWORD_NUMBER11+ number 8 Numeric password edit box.
PATTERN_PASSWORD_SCREEN_LOCK11+ number 9 Screen lock password edit box.
OPTION_ASCII number 20 ASCII values are allowed.
OPTION_NONE number 0 No input attribute is specified.
OPTION_AUTO_CAP_CHARACTERS number 2 Characters are allowed.
OPTION_AUTO_CAP_SENTENCES number 8 Sentences are allowed.
OPTION_AUTO_WORDS number 4 Words are allowed.
OPTION_MULTI_LINE number 1 Multiple lines are allowed.
OPTION_NO_FULLSCREEN number 10 Half-screen style.
FLAG_SELECTING number 2 The edit box is being selected.
FLAG_SINGLE_LINE number 1 The edit box allows only single-line input.
DISPLAY_MODE_PART number 0 The edit box is displayed in half-screen mode.
DISPLAY_MODE_FULL number 1 The edit box is displayed in full screen.
CURSOR_UP9+ number 1 The caret moves upward.
CURSOR_DOWN9+ number 2 The caret moves downward.
CURSOR_LEFT9+ number 3 The caret moves leftward.
CURSOR_RIGHT9+ number 4 The caret moves rightward.
WINDOW_TYPE_INPUT_METHOD_FLOAT9+ number 2105 The input method is displayed in a floating window.

inputMethodEngine.getInputMethodAbility9+

getInputMethodAbility(): InputMethodAbility

Obtains an InputMethodAbility instance for the input method. This API can be called only by an input method.

The input method can use the obtained instance to subscribe to a soft keyboard display/hide request event, create/destroy an input method panel, and the like.

System capability: SystemCapability.MiscServices.InputMethodFramework

Return value

Type Description
InputMethodAbility InputMethodAbility instance.

Example

let InputMethodAbility = inputMethodEngine.getInputMethodAbility();

inputMethodEngine.getKeyboardDelegate9+

getKeyboardDelegate(): KeyboardDelegate

Obtains a KeyboardDelegate instance for the input method.

The input method can use the obtained instance to subscribe to a physical keyboard event, text selection change event, and more.

System capability: SystemCapability.MiscServices.InputMethodFramework

Return value

Type Description
KeyboardDelegate KeyboardDelegate instance.

Example

let KeyboardDelegate = inputMethodEngine.getKeyboardDelegate();

inputMethodEngine.getInputMethodEngine(deprecated)

getInputMethodEngine(): InputMethodEngine

Obtains an InputMethodEngine instance for the input method.

The input method can use the obtained instance to subscribe to a soft keyboard display/hide request event.

This API is supported since API version 8 and deprecated since API version 9. You are advised to use getInputMethodAbility() instead.

System capability: SystemCapability.MiscServices.InputMethodFramework

Return value

Type Description
InputMethodEngine InputMethodAbility instance.

Example

let InputMethodEngine = inputMethodEngine.getInputMethodEngine();

inputMethodEngine.createKeyboardDelegate(deprecated)

createKeyboardDelegate(): KeyboardDelegate

Obtains a KeyboardDelegate instance for the input method. The input method can use the obtained instance to subscribe to a physical keyboard event, text selection change event, and more.

This API is supported since API version 8 and deprecated since API version 9. You are advised to use getKeyboardDelegate() instead.

System capability: SystemCapability.MiscServices.InputMethodFramework

Return value

Type Description
KeyboardDelegate KeyboardDelegate instance.

Example

let keyboardDelegate = inputMethodEngine.createKeyboardDelegate();

CommandDataType12+

type CommandDataType = number | string | boolean;

Defines the private data type, which varies depending on its function.

System capability: SystemCapability.MiscServices.InputMethodFramework

Type Description
string String.
number Number.
boolean Boolean.

Example

import { inputMethodEngine } from '@kit.IMEKit';
import { BusinessError } from '@kit.BasicServicesKit';

try {
  let record: Record<string, inputMethodEngine.CommandDataType> = {
    "valueString1": "abcdefg",
    "valueString2": true,
    "valueString3": 500,
  }
  inputClient.sendPrivateCommand(record).then(() => {
  }).catch((err: BusinessError) => {
    console.error(`sendPrivateCommand catch error: ${JSON.stringify(err)}`);
  });
} catch (err) {
  let error = err as BusinessError;
  console.error(`sendPrivateCommand catch error: ${error.code} ${error.message}`);
}

InputMethodEngine

In the following API examples, you must first use getInputMethodEngine to obtain an InputMethodEngine instance, and then call the APIs using the obtained instance.

[h2]on('inputStart')

on(type: 'inputStart', callback: (kbController: KeyboardController, textInputClient: TextInputClient) => void): void

Enables listening for the input method binding event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'inputStart'.
callback (kbController: KeyboardController, textInputClient: TextInputClient) => void Yes Callback used to return the KeyboardController and TextInputClient instances.

Example

try {
  inputMethodEngine.getInputMethodEngine()
    .on('inputStart', (kbController: inputMethodEngine.KeyboardController, textClient: inputMethodEngine.TextInputClient) => {
      let keyboardController = kbController;
      let textInputClient = textClient;
  });
} catch(err) {
  console.error(`Failed to inputStart: ${JSON.stringify(err)}`);
}

[h2]off('inputStart')

off(type: 'inputStart', callback?: (kbController: KeyboardController, textInputClient: TextInputClient) => void): void

Disables listening for the input method binding event.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'inputStart'.
callback (kbController: KeyboardController, textInputClient: TextInputClient) => void No Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified type.

Example

try {
  inputMethodEngine.getInputMethodEngine()
    .off('inputStart', (kbController: inputMethodEngine.KeyboardController, textClient: inputMethodEngine.TextInputClient) => {
      console.log('delete inputStart notification.');
  });
} catch(err) {
  console.error(`Failed to inputStart: ${JSON.stringify(err)}`);
}

[h2]on('keyboardShow'|'keyboardHide')

on(type: 'keyboardShow'|'keyboardHide', callback: () => void): void

Enables listening for a keyboard visibility event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes

Event type.

- The value 'keyboardShow' indicates the keyboard display event.

- The value 'keyboardHide' indicates the keyboard hiding event.

callback () => void Yes Callback used to return the result.

Example

try {
  inputMethodEngine.getInputMethodEngine().on('keyboardShow', () => {
    console.log('inputMethodEngine keyboardShow.');
  });
  inputMethodEngine.getInputMethodEngine().on('keyboardHide', () => {
    console.log('inputMethodEngine keyboardHide.');
  });
} catch(err) {
  console.error(`Failed to InputMethodEngine: ${JSON.stringify(err)}`);
}

[h2]off('keyboardShow'|'keyboardHide')

off(type: 'keyboardShow'|'keyboardHide', callback?: () => void): void

Disables listening for a keyboard visibility event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes

Event type.

- The value 'keyboardShow' indicates the keyboard display event.

- The value 'keyboardHide' indicates the keyboard hiding event.

callback () => void No Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified type.

Example

inputMethodEngine.getInputMethodEngine().off('keyboardShow');
inputMethodEngine.getInputMethodEngine().off('keyboardHide');

InputMethodAbility

In the following API examples, you must first use getInputMethodAbility to obtain an InputMethodAbility instance, and then call the APIs using the obtained instance.

[h2]on('inputStart')9+

on(type: 'inputStart', callback: (kbController: KeyboardController, inputClient: InputClient) => void): void

Enables listening for the input method binding event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'inputStart'.
callback (kbController: KeyboardController, inputClient: InputClient) => void Yes Callback used to return instances related to input method operations.

Example

try {
  inputMethodEngine.getInputMethodAbility()
    .on('inputStart', (kbController: inputMethodEngine.KeyboardController, client: inputMethodEngine.InputClient) => {
      let keyboardController = kbController;
      let inputClient = client;
  });
} catch(err) {
    console.error(`Failed to InputMethodAbility: ${JSON.stringify(err)}`);
}

[h2]off('inputStart')9+

off(type: 'inputStart', callback?: (kbController: KeyboardController, inputClient: InputClient) => void): void

Disables listening for the input method binding event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'inputStart'.
callback (kbController: KeyboardController, inputClient: InputClient) => void No Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified type.

Example

inputMethodEngine.getInputMethodAbility().off('inputStart');

[h2]on('inputStop')9+

on(type: 'inputStop', callback: () => void): void

Enables listening for the input method unbinding event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'inputStop'.
callback () => void Yes Callback used to return the result.

Example

try {
  inputMethodEngine.getInputMethodAbility().on('inputStop', () => {
    console.log('inputMethodAbility inputStop');
  });
} catch(err) {
    console.error(`Failed to inputStop: ${JSON.stringify(err)}`);
}

[h2]off('inputStop')9+

off(type: 'inputStop', callback: () => void): void

Disables listening for the input method stop event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'inputStop'.
callback () => void Yes Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified type.

Example

try {
  inputMethodEngine.getInputMethodAbility().off('inputStop', () => {
    console.log('inputMethodAbility delete inputStop notification.');
  });
} catch(err) {
    console.error(`Failed to inputStop: ${JSON.stringify(err)}`);
}

[h2]on('setCallingWindow')9+

on(type: 'setCallingWindow', callback: (wid: number) => void): void

Enables listening for the window invocation setting event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'setCallingWindow'.
callback (wid: number) => void Yes Callback used to return the window ID of the caller.

Example

try {
  inputMethodEngine.getInputMethodAbility().on('setCallingWindow', (wid: number) => {
    console.log('inputMethodAbility setCallingWindow');
  });
} catch(err) {
    console.error(`Failed to setCallingWindow: ${JSON.stringify(err)}`);
}

[h2]off('setCallingWindow')9+

off(type: 'setCallingWindow', callback: (wid:number) => void): void

Disables listening for the window invocation setting event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'setCallingWindow'.
callback (wid:number) => void Yes Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified type.

Example

try {
  inputMethodEngine.getInputMethodAbility().off('setCallingWindow', (wid: number) => {
    console.log('inputMethodAbility delete setCallingWindow notification.');
  });
} catch(err) {
    console.error(`Failed to setCallingWindow: ${JSON.stringify(err)}`);
}

[h2]on('keyboardShow'|'keyboardHide')9+

on(type: 'keyboardShow'|'keyboardHide', callback: () => void): void

Enables listening for a keyboard visibility event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes

Event type.

- The value 'keyboardShow' indicates the keyboard display event.

- The value 'keyboardHide' indicates the keyboard hiding event.

callback () => void Yes Callback used to return the result.

Example

try {
  inputMethodEngine.getInputMethodAbility().on('keyboardShow', () => {
    console.log('InputMethodAbility keyboardShow.');
  });
  inputMethodEngine.getInputMethodAbility().on('keyboardHide', () => {
    console.log('InputMethodAbility keyboardHide.');
  });
} catch(err) {
    console.error(`Failed to keyboard: ${JSON.stringify(err)}`);
}

[h2]off('keyboardShow'|'keyboardHide')9+

off(type: 'keyboardShow'|'keyboardHide', callback?: () => void): void

Disables listening for a keyboard visibility event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes

Event type.

- The value 'keyboardShow' indicates the keyboard display event.

- The value 'keyboardHide' indicates the keyboard hiding event.

callback () => void No Callback to unregister.

Example

try {
  inputMethodEngine.getInputMethodAbility().off('keyboardShow', () => {
    console.log('InputMethodAbility delete keyboardShow notification.');
  });
  inputMethodEngine.getInputMethodAbility().off('keyboardHide', () => {
    console.log('InputMethodAbility delete keyboardHide notification.');
  });
} catch(err) {
    console.error(`Failed to keyboard: ${JSON.stringify(err)}`);
}

[h2]on('setSubtype')9+

on(type: 'setSubtype', callback: (inputMethodSubtype: InputMethodSubtype) => void): void

Enables listening for the input method subtype setting event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'setSubtype'.
callback (inputMethodSubtype: InputMethodSubtype) => void Yes Callback used to return the input method subtype.

Example

import { InputMethodSubtype } from '@kit.IMEKit';

try {
  inputMethodEngine.getInputMethodAbility().on('setSubtype', (inputMethodSubtype: InputMethodSubtype) => {
    console.log('InputMethodAbility setSubtype.');
  });
} catch(err) {
    console.error(`Failed to setSubtype: ${JSON.stringify(err)}`);
}

[h2]off('setSubtype')9+

off(type: 'setSubtype', callback?: (inputMethodSubtype: InputMethodSubtype) => void): void

Disables listening for a keyboard visibility event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'setSubtype'.
callback (inputMethodSubtype: InputMethodSubtype) => void No Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified type.

Example

try {
  inputMethodEngine.getInputMethodAbility().off('setSubtype', () => {
    console.log('InputMethodAbility delete setSubtype notification.');
  });
} catch(err) {
    console.error(`Failed to setSubtype: ${JSON.stringify(err)}`);
}

[h2]on('securityModeChange')11+

on(type: 'securityModeChange', callback: Callback< SecurityMode>): void

Enables listening for security mode changes of the input method. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'securityModeChange'.
callback Callback<SecurityMode)> Yes Callback used to return the current security mode.

Example

try {
  inputMethodEngine.getInputMethodAbility().on('securityModeChange', (securityMode: inputMethodEngine.SecurityMode) => {
    console.log(`InputMethodAbility securityModeChange, security is ${securityMode}`);
  });
} catch(err) {
    console.error(`Failed to on securityModeChange: ${JSON.stringify(err)}`);
}

[h2]off('securityModeChange')11+

off(type: 'securityModeChange', callback?: Callback< SecurityMode>): void

Disables listening for security mode changes of the input method. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'securityModeChange'.
callback Callback<SecurityMode)> No Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified type.

Example

let securityChangeCallback = (securityMode: inputMethodEngine.SecurityMode) => {
  console.log(`InputMethodAbility securityModeChange, security is ${securityMode}`);
};
let inputMethodAbility = inputMethodEngine.getInputMethodAbility();
inputMethodAbility.on('securityModeChange', securityChangeCallback);
try {
  inputMethodAbility.off('securityModeChange', securityChangeCallback);
} catch(err) {
  console.error(`Failed to off securityModeChange: ${JSON.stringify(err)}`);
}

[h2]on('privateCommand')12+

on(type: 'privateCommand', callback: Callback<Record<string, CommandDataType>>): void;

Enables listening for the private data event of the input method. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'privateCommand'.
callback Callback<Record<string, CommandDataType>> Yes Callback used to return the private data sent to the input method application.

Error codes

For details about the error codes, see Input Method Framework Error Codes.

ID Error Message
12800010 not default input method configured by system.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { inputMethodEngine } from '@kit.IMEKit';

let privateCommandCallback = (record: Record<string, inputMethodEngine.CommandDataType>) => {
  for (let i = 0; i < record.length; i++) {
    console.log(`private command key: ${i}, value: ${record[i]}`);
  }
}
try {
  console.log(`regist private command `);
  inputMethodEngine.getInputMethodAbility().on('privateCommand', privateCommandCallback);
} catch (err) {
  let error = err as BusinessError;
  console.error(`regist private command error: ${error.code} ${error.message}`);
}

[h2]off('privateCommand')12+

off(type: 'privateCommand', callback?: Callback<Record<string, CommandDataType>>): void

Disables listening for the private data event of the input method. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'privateCommand'.
callback Callback<Record<string, CommandDataType>> No Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified type.

Error codes

For details about the error codes, see Input Method Framework Error Codes.

ID Error Message
12800010 not default input method configured by system.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { inputMethodEngine } from '@kit.IMEKit';

let privateCommandCallback = (record: Record<string, inputMethodEngine.CommandDataType>) => {
  for (let i = 0; i < record.length; i++) {
    console.log(`private command key: ${i}, value: ${record[i]}`);
  }
}
try {
  console.log(`regist private command `);
  inputMethodEngine.getInputMethodAbility().off('privateCommand', privateCommandCallback);
} catch (err) {
  let error = err as BusinessError;
  console.error(`regist private command error: ${error.code} ${error.message}`);
}

[h2]getSecurityMode11+

getSecurityMode(): SecurityMode

Obtains the current security mode of the input method.

System capability: SystemCapability.MiscServices.InputMethodFramework

Return value

Type Description
SecurityMode Security mode.

Error codes

ID Error Message
12800004 not an input method extension.

Example

try {
  let security = inputMethodEngine.getInputMethodAbility().getSecurityMode();
  console.error(`getSecurityMode, securityMode is : ${security}`);
} catch (err) {
  console.error(`Failed to getSecurityMode: ${JSON.stringify(err)}`);
}

[h2]createPanel10+

createPanel(ctx: BaseContext, info: PanelInfo, callback: AsyncCallback<Panel>): void

Creates an input method panel, which can be called only by input method applications. This API uses an asynchronous callback to return the result.

Only one SOFT_KEYBOARD panel and one STATUS_BAR panel can be created for a single input method.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
ctx BaseContext Yes Current context of the input method.
info PanelInfo Yes Information about the input method application.
callback AsyncCallback<Panel> Yes Callback used to return the result. If the operation is successful, the created input method panel is returned.

Error codes

ID Error Message
401 parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types.
12800004 not an input method extension.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let panelInfo: inputMethodEngine.PanelInfo = {
  type: inputMethodEngine.PanelType.SOFT_KEYBOARD,
  flag: inputMethodEngine.PanelFlag.FLG_FIXED
}
try {
  inputMethodEngine.getInputMethodAbility()
    .createPanel(this.context, panelInfo, (err: BusinessError, panel: inputMethodEngine.Panel) => {
      if (err) {
        console.error(`Failed to createPanel: ${JSON.stringify(err)}`);
        return;
      }
      console.log('Succeed in creating panel.');
    })
} catch (err) {
  console.error(`Failed to createPanel: ${JSON.stringify(err)}`);
}

[h2]createPanel10+

createPanel(ctx: BaseContext, info: PanelInfo): Promise<Panel>

Creates an input method panel, which can be called only by input method applications. This API uses a promise to return the result.

Only one SOFT_KEYBOARD panel and one STATUS_BAR panel can be created for a single input method.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
ctx BaseContext Yes Current context of the input method.
info PanelInfo Yes Information about the input method panel.

Return value

Type Description
Promise<Panel> Callback used to return the result. If the operation is successful, the created input method panel is returned.

Error codes

ID Error Message
401 parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types.
12800004 not an input method extension.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let panelInfo: inputMethodEngine.PanelInfo = {
  type: inputMethodEngine.PanelType.SOFT_KEYBOARD,
  flag: inputMethodEngine.PanelFlag.FLG_FIXED
}
inputMethodEngine.getInputMethodAbility().createPanel(this.context, panelInfo)
  .then((panel: inputMethodEngine.Panel) => {
    console.log('Succeed in creating panel.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to create panel: ${JSON.stringify(err)}`);
  })

[h2]destroyPanel10+

destroyPanel(panel: Panel, callback: AsyncCallback<void>): void

Destroys the specified input method panel. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
panel Panel Yes Input method panel to destroy.
callback AsyncCallback<void> Yes Callback used to return the result. If the operation is successful, err is undefined. Otherwise, err is an error object.

Error codes

For details about the error codes, see Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let panelInfo: inputMethodEngine.PanelInfo = {
  type: inputMethodEngine.PanelType.SOFT_KEYBOARD,
  flag: inputMethodEngine.PanelFlag.FLG_FIXED
}
let inputPanel: inputMethodEngine.Panel | undefined = undefined;
try {
  inputMethodEngine.getInputMethodAbility()
    .createPanel(this.context, panelInfo, (err: BusinessError, panel: inputMethodEngine.Panel) => {
      if (err) {
        console.error(`Failed to create panel: ${JSON.stringify(err)}`);
        return;
      }
      inputPanel = panel;
      console.log('Succeed in creating panel.');
    })
} catch (err) {
  console.error(`Failed to create panel: ${JSON.stringify(err)}`);
}
try {
  if (inputPanel) {
    inputMethodEngine.getInputMethodAbility().destroyPanel(inputPanel, (err: BusinessError) => {
      if (err !== undefined) {
        console.error(`Failed to destroy panel: ${JSON.stringify(err)}`);
        return;
      }
      console.log('Succeed in destroying panel.');
    })
  }
} catch (err) {
  console.error(`Failed to destroy panel: ${JSON.stringify(err)}`);
}

[h2]destroyPanel10+

destroyPanel(panel: Panel): Promise<void>

Destroys the specified input method panel. This API uses a promise to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
panel Panel Yes Input method panel to destroy.

Return value

Type Description
Promise<void> Promise that returns no value.

Error codes

For details about the error codes, see Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let panelInfo: inputMethodEngine.PanelInfo = {
  type: inputMethodEngine.PanelType.SOFT_KEYBOARD,
  flag: inputMethodEngine.PanelFlag.FLG_FIXED
}
let inputPanel: inputMethodEngine.Panel | undefined = undefined;
try {
  inputMethodEngine.getInputMethodAbility()
    .createPanel(this.context, panelInfo, (err: BusinessError, panel: inputMethodEngine.Panel) => {
      if (err) {
        console.error(`Failed to create panel: ${JSON.stringify(err)}`);
        return;
      }
      inputPanel = panel;
      console.log('Succeed in creating panel.');
    })
} catch (err) {
  console.error(`Failed to create panel: ${JSON.stringify(err)}`);
}

try {
  if (inputPanel) {
    inputMethodEngine.getInputMethodAbility().destroyPanel(inputPanel).then(() => {
      console.log('Succeed in destroying panel.');
    }).catch((err: BusinessError) => {
      console.error(`Failed to destroy panel: ${JSON.stringify(err)}`);
    });
  }
} catch (err) {
  console.error(`Failed to destroy panel: ${JSON.stringify(err)}`);
}

KeyboardDelegate

In the following API examples, you must first use getKeyboardDelegate to obtain a KeyboardDelegate instance, and then call the APIs using the obtained instance.

[h2]on('keyDown'|'keyUp')

on(type: 'keyDown'|'keyUp', callback: (event: KeyEvent) => boolean): void

Enables listening for a physical keyboard event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes

Event type.

- The value 'keyDown' indicates the keydown event.

- The value 'keyUp' indicates the keyup event.

callback (event: KeyEvent) => boolean Yes Callback used to return the key information. If the event is consumed by the event subscriber, true is returned. Otherwise, false is returned.

Example

try {
  inputMethodEngine.getKeyboardDelegate().on('keyUp', (keyEvent: inputMethodEngine.KeyEvent) => {
    console.log(`inputMethodEngine keyCode.(keyDown): ${keyEvent.keyCode}`);
    console.log(`inputMethodEngine keyAction.(keyDown): ${keyEvent.keyAction}`);
    return true;
  });
  inputMethodEngine.getKeyboardDelegate().on('keyDown', (keyEvent: inputMethodEngine.KeyEvent) => {
    console.log(`inputMethodEngine keyCode.(keyDown): ${keyEvent.keyCode}`);
    console.log(`inputMethodEngine keyAction.(keyDown): ${keyEvent.keyAction}`);
    return true;
  });
} catch(err) {
    console.error(`Failed to KeyboardDelegate: ${JSON.stringify(err)}`);
}

[h2]off('keyDown'|'keyUp')

off(type: 'keyDown'|'keyUp', callback?: (event: KeyEvent) => boolean): void

Disables listening for a physical keyboard event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes

Event type.

- The value 'keyDown' indicates the keydown event.

- The value 'keyUp' indicates the keyup event.

callback (event: KeyEvent) => boolean No Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified type.

Example

try {
  inputMethodEngine.getKeyboardDelegate().off('keyUp', (keyEvent: inputMethodEngine.KeyEvent) => {
    console.log('delete keyUp notification.');
    return true;
  });
  inputMethodEngine.getKeyboardDelegate().off('keyDown', (keyEvent: inputMethodEngine.KeyEvent) => {
    console.log('delete keyDown notification.');
    return true;
  });
} catch(err) {
    console.error(`Failed to keyevent: ${JSON.stringify(err)}`);
}

[h2]on('keyEvent')10+

on(type: 'keyEvent', callback: (event: InputKeyEvent) => boolean): void

Enables listening for a keyboard event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'keyEvent'.
callback (event: InputKeyEvent) => boolean Yes

Callback used to return the result. The input parameter is the key event information and the return value is of the Boolean type.

- Input parameter: InputKeyEvent.

- If the event is consumed by the event subscriber, true is returned. Otherwise, false is returned.

Example

import type { KeyEvent } from '@kit.InputKit';

try {
  inputMethodEngine.getKeyboardDelegate().on('keyEvent', (keyEvent: KeyEvent) => {
    console.log('inputMethodEngine keyEvent.action:' + JSON.stringify(keyEvent.action));
    console.log('inputMethodEngine keyEvent.key.code:' + JSON.stringify(keyEvent.key.code));
    console.log(`inputMethodEngine keyEvent.ctrlKey: ${keyEvent.ctrlKey}`);
    console.log(`inputMethodEngine keyEvent.unicodeChar: ${keyEvent.unicodeChar}`);
    return true;
  });
} catch(err) {
    console.error(`Failed to inputMethodEngine: ${JSON.stringify(err)}`);
}

[h2]off('keyEvent')10+

off(type: 'keyEvent', callback?: (event: InputKeyEvent) => boolean): void

Disables listening for a keyboard event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'keyEvent'.
callback function No Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified type.

Example

import type { KeyEvent } from '@kit.InputKit';

try {
  inputMethodEngine.getKeyboardDelegate().off('keyEvent', (keyEvent: KeyEvent) => {
    console.log('This is a callback function which will be deregistered.');
    return true;
  });
  inputMethodEngine.getKeyboardDelegate().off('keyEvent');
} catch(err) {
    console.error(`Failed to keyEvent: ${JSON.stringify(err)}`);
}

[h2]on('cursorContextChange')

on(type: 'cursorContextChange', callback: (x: number, y:number, height:number) => void): void

Enables listening for the cursor change event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'cursorContextChange'.
callback (x: number, y: number, height: number) => void Yes

Callback used to return the cursor information.

- x: x coordinate of the top of the cursor.

- y: y coordinate of the bottom of the cursor.

- height: height of the cursor.

Example

try {
  inputMethodEngine.getKeyboardDelegate().on('cursorContextChange', (x: number, y: number, height: number) => {
    console.log('inputMethodEngine cursorContextChange x:' + x);
    console.log('inputMethodEngine cursorContextChange y:' + y);
    console.log('inputMethodEngine cursorContextChange height:' + height);
  });
} catch(err) {
    console.error(`Failed to cursorContextChange: ${JSON.stringify(err)}`);
}

[h2]off('cursorContextChange')

off(type: 'cursorContextChange', callback?: (x: number, y: number, height: number) => void): void

Disables listening for cursor context changes. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'cursorContextChange'.
callback (x: number, y:number, height:number) => void No Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified type.

Example

try {
  inputMethodEngine.getKeyboardDelegate().off('cursorContextChange', (x: number, y: number, height: number) => {
    console.log('delete cursorContextChange notification.');
  });
} catch(err) {
    console.error(`Failed to cursorContextChange: ${JSON.stringify(err)}`);
}

[h2]on('selectionChange')

on(type: 'selectionChange', callback: (oldBegin: number, oldEnd: number, newBegin: number, newEnd: number) => void): void

Enables listening for the text selection change event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'selectionChange'.
callback (oldBegin: number, oldEnd: number, newBegin: number, newEnd: number) => void Yes

Callback used to return the text selection information.

- oldBegin: start of the selected text before the change.

- oldEnd: end of the selected text before the change.

- newBegin: start of the selected text after the change.

- newEnd: end of the selected text after the change.

Example

try {
  inputMethodEngine.getKeyboardDelegate()
    .on('selectionChange', (oldBegin: number, oldEnd: number, newBegin: number, newEnd: number) => {
      console.log('inputMethodEngine beforeEach selectionChange oldBegin:' + oldBegin);
      console.log('inputMethodEngine beforeEach selectionChange oldEnd:' + oldEnd);
      console.log('inputMethodEngine beforeEach selectionChange newBegin:' + newBegin);
      console.log('inputMethodEngine beforeEach selectionChange newEnd:' + newEnd);
    });
} catch(err) {
    console.error(`Failed to selectionChange: ${JSON.stringify(err)}`);
}

[h2]off('selectionChange')

off(type: 'selectionChange', callback?: (oldBegin: number, oldEnd: number, newBegin: number, newEnd: number) => void): void

Disables listening for the text selection change event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'selectionChange'.
callback (oldBegin: number, oldEnd: number, newBegin: number, newEnd: number) => void No Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified type.

Example

try {
  inputMethodEngine.getKeyboardDelegate()
    .off('selectionChange', (oldBegin: number, oldEnd: number, newBegin: number, newEnd: number)  => {
      console.log('delete selectionChange notification.');
    });
} catch(err) {
    console.error(`Failed to selectionChange: ${JSON.stringify(err)}`);
}

[h2]on('textChange')

on(type: 'textChange', callback: (text: string) => void): void

Enables listening for the text change event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'textChange'.
callback (text: string) => void Yes Callback used to return the text content.

Example

try {
  inputMethodEngine.getKeyboardDelegate().on('textChange', (text: string) => {
    console.log('inputMethodEngine textChange. text:' + text);
  });
} catch(err) {
    console.error(`Failed to textChange: ${JSON.stringify(err)}`);
}

[h2]off('textChange')

off(type: 'textChange', callback?: (text: string) => void): void

Disables listening for the text change event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'textChange'.
callback (text: string) => void No Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified type.

Example

try {
  inputMethodEngine.getKeyboardDelegate().off('textChange', (text: string) => {
    console.log('delete textChange notification. text:' + text);
  });
} catch(err) {
    console.error(`Failed to textChange: ${JSON.stringify(err)}`);
}

[h2]on('editorAttributeChanged')10+

on(type: 'editorAttributeChanged', callback: (attr: EditorAttribute) => void): void

Enables listening for the edit box attribute change event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'editorAttributeChanged'.
callback (attr: EditorAttribute) => void Yes Callback used to return the changed edit box attribute.

Example

try {
  inputMethodEngine.getKeyboardDelegate().on('editorAttributeChanged', (attr: inputMethodEngine.EditorAttribute) => {
    console.log(`Succeeded in receiving attribute of editor, inputPattern = ${attr.inputPattern}, enterKeyType = ${attr.enterKeyType}`);
  });
} catch(err) {
    console.error(`Failed to textChange: ${JSON.stringify(err)}`);
}

[h2]off('editorAttributeChanged')10+

off(type: 'editorAttributeChanged', callback?: (attr: EditorAttribute) => void): void

Disables listening for the edit box attribute change event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'editorAttributeChanged'.
callback (attr: EditorAttribute) => void No Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified type.

Example

inputMethodEngine.getKeyboardDelegate().off('editorAttributeChanged');

Panel10+

In the following API examples, you must first use createPanel to obtain a Panel instance, and then call the APIs using the obtained instance.

[h2]setUiContent10+

setUiContent(path: string, callback: AsyncCallback<void>): void

Loads content from a page to this input method panel. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
path string Yes Path of the page from which the content will be loaded.
callback AsyncCallback<void> Yes Callback used to return the result. If the operation is successful, err is undefined. Otherwise, err is an error object.

Error codes

For details about the error codes, see Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.

Example

import { BusinessError } from '@kit.BasicServicesKit';

try {
  panel.setUiContent('pages/page2/page2', (err: BusinessError) => {
    if (err) {
      console.error(`Failed to setUiContent: ${JSON.stringify(err)}`);
      return;
    }
    console.log('Succeeded in setting the content.');
  });
} catch (err) {
  console.error(`Failed to setUiContent: ${JSON.stringify(err)}`);
}

[h2]setUiContent10+

setUiContent(path: string): Promise<void>

Loads content from a page to this input method panel. This API uses a promise to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
path string Yes Path of the page from which the content will be loaded.

Return value

Type Description
Promise<void> Promise that returns no value.

Error codes

For details about the error codes, see Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.

Example

import { BusinessError } from '@kit.BasicServicesKit';

try {
  panel.setUiContent('pages/page2/page2').then(() => {
    console.log('Succeeded in setting the content.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to setUiContent: ${JSON.stringify(err)}`);
  });
} catch (err) {
  console.error(`Failed to setUiContent: ${JSON.stringify(err)}`);
}

[h2]setUiContent10+

setUiContent(path: string, storage: LocalStorage, callback: AsyncCallback<void>): void

Loads content from a page linked to LocalStorage to this input method panel. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
path string Yes Path of the page linked to LocalStorage.
storage LocalStorage Yes Storage unit that provides storage for mutable and immutable state variables in the application.
callback AsyncCallback<void> Yes Callback used to return the result. If the operation is successful, err is undefined. Otherwise, err is an error object.

Error codes

For details about the error codes, see Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let storage = new LocalStorage();
storage.setOrCreate('storageSimpleProp',121);
try {
  panel.setUiContent('pages/page2/page2', storage, (err: BusinessError) => {
    if (err) {
      console.error(`Failed to setUiContent: ${JSON.stringify(err)}`);
      return;
    }
    console.log('Succeeded in setting the content.');
  });
} catch (err) {
  console.error(`Failed to setUiContent: ${JSON.stringify(err)}`);
}

[h2]setUiContent10+

setUiContent(path: string, storage: LocalStorage): Promise<void>

Loads content from a page linked to LocalStorage to this panel. This API uses a promise to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
path string Yes Path of the page from which the content will be loaded.
storage LocalStorage Yes Storage unit that provides storage for mutable and immutable state variables in the application.

Return value

Type Description
Promise<void> Promise that returns no value.

Error codes

For details about the error codes, see Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let storage = new LocalStorage();
storage.setOrCreate('storageSimpleProp',121);
try {
  panel.setUiContent('pages/page2/page2', storage).then(() => {
    console.log('Succeeded in setting the content.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to setUiContent: ${JSON.stringify(err)}`);
  });
} catch (err) {
  console.error(`Failed to setUiContent: ${JSON.stringify(err)}`);
}

[h2]resize10+

resize(width: number, height: number, callback: AsyncCallback<void>): void

Resizes this input method panel. This API uses an asynchronous callback to return the result.

The panel width cannot exceed the screen width, and the panel height cannot be 0.6 times higher than the screen height.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
width number Yes Target width of the panel, in px.
height number Yes Target height of the panel, in px.
callback AsyncCallback<void> Yes Callback used to return the result. If the operation is successful, err is undefined. Otherwise, err is an error object.

Error codes

For details about the error codes, see Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.

Example

import { BusinessError } from '@kit.BasicServicesKit';

try {
  panel.resize(500, 1000, (err: BusinessError) => {
    if (err) {
      console.error(`Failed to resize panel: ${JSON.stringify(err)}`);
      return;
    }
    console.log('Succeeded in changing the panel size.');
  });
} catch (err) {
  console.error(`Failed to resize panel: ${JSON.stringify(err)}`);
}

[h2]resize10+

resize(width: number, height: number): Promise<void>

Resizes this input method panel. This API uses a promise to return the result.

The panel width cannot exceed the screen width, and the panel height cannot be 0.6 times higher than the screen height.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
width number Yes Target width of the panel, in px.
height number Yes Target height of the panel, in px.

Return value

Type Description
Promise<void> Promise that returns no value.

Error codes

For details about the error codes, see Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.

Example

import { BusinessError } from '@kit.BasicServicesKit';

try {
  panel.resize(500, 1000).then(() => {
    console.log('Succeeded in changing the panel size.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to resize panel: ${JSON.stringify(err)}`);
  });
} catch (err) {
  console.error(`Failed to resize panel: ${JSON.stringify(err)}`);
}

[h2]moveTo10+

moveTo(x: number, y: number, callback: AsyncCallback<void>): void

Moves this input method panel to the specified position. This API uses an asynchronous callback to return the result. This API does not work on panels in the FLG_FIXED state.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
x number Yes Distance to move along the x-axis, in px. A positive value indicates moving rightwards.
y number Yes Distance to move along the y-axis, in px. A positive value indicates moving downwards.
callback AsyncCallback<void> Yes Callback used to return the result. If the operation is successful, err is undefined. Otherwise, err is an error object.

Error codes

For details about the error codes, see Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.

Example

import { BusinessError } from '@kit.BasicServicesKit';

try {
  panel.moveTo(300, 300, (err: BusinessError) =>{
    if (err) {
      console.error(`Failed to move panel: ${JSON.stringify(err)}`);
      return;
    }
    console.log('Succeeded in moving the panel.');
  });
} catch (err) {
    console.error(`Failed to move panel: ${JSON.stringify(err)}`);
}

[h2]moveTo10+

moveTo(x: number, y: number): Promise<void>

Moves this input method panel to the specified position. This API uses a promise to return the result. This API does not work on panels in the FLG_FIXED state.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
x number Yes Distance to move along the x-axis, in px. A positive value indicates moving rightwards.
y number Yes Distance to move along the y-axis, in px. A positive value indicates moving downwards.

Return value

Type Description
Promise<void> Promise that returns no value.

Error codes

For details about the error codes, see Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.

Example

import { BusinessError } from '@kit.BasicServicesKit';

try {
  panel.moveTo(300, 300).then(() => {
    console.log('Succeeded in moving the panel.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to move panel: ${JSON.stringify(err)}`);
  });
} catch (err) {
  console.error(`Failed to move panel: ${JSON.stringify(err)}`);
}

[h2]show10+

show(callback: AsyncCallback<void>): void

Shows this input method panel. This API uses an asynchronous callback to return the result. It can be called when the input method is bound to the edit box.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback used to return the result. If the operation is successful, err is undefined. Otherwise, err is an error object.

Example

import { BusinessError } from '@kit.BasicServicesKit';

panel.show((err: BusinessError) => {
  if (err) {
    console.error(`Failed to show panel: ${JSON.stringify(err)}`);
    return;
  }
  console.log('Succeeded in showing the panel.');
});

[h2]show10+

show(): Promise<void>

Shows this input method panel. This API uses a promise to return the result. It can be called when the input method is bound to the edit box.

System capability: SystemCapability.MiscServices.InputMethodFramework

Return value

Type Description
Promise<void> Promise that returns no value.

Example

import { BusinessError } from '@kit.BasicServicesKit';

panel.show().then(() => {
  console.log('Succeeded in showing the panel.');
}).catch((err: BusinessError) => {
  console.error(`Failed to show panel: ${JSON.stringify(err)}`);
});

[h2]hide10+

hide(callback: AsyncCallback<void>): void

Hides this panel. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback used to return the result. If the operation is successful, err is undefined. Otherwise, err is an error object.

Example

import { BusinessError } from '@kit.BasicServicesKit';

panel.hide((err: BusinessError) => {
  if (err) {
    console.error(`Failed to hide panel: ${JSON.stringify(err)}`);
    return;
  }
  console.log('Succeeded in hiding the panel.');
});

[h2]hide10+

hide(): Promise<void>

Hides this panel. This API uses a promise to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Return value

Type Description
Promise<void> Promise that returns no value.

Example

import { BusinessError } from '@kit.BasicServicesKit';

panel.hide().then(() => {
  console.log('Succeeded in hiding the panel.');
}).catch((err: BusinessError) => {
  console.error(`Failed to hide panel: ${JSON.stringify(err)}`);
});

[h2]adjustPanelRect12+

adjustPanelRect(flag: PanelFlag, rect: PanelRect): void

Adjusts the panel rectangle.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
flag PanelFlag Yes Type of the state of the target panel. It can be FLG_FIXED or FLG_FLOATING.
rect PanelRect Yes Landscape rectangle and portrait rectangle of the target panel. For the panel of the fixed state, the height cannot exceed 70% of the screen height, and the width cannot exceed the screen width. For the panel of the floating state, the height cannot exceed the screen height, and the width cannot exceed the screen width.

Error codes

For details about the error codes, see Input Method Framework Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
12800013 window manager service error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

try {
  let panelFlag = inputMethodEngine.PanelFlag.FLG_FIXED;
  let panelRect:inputMethodEngine.PanelRect = {
    landscapeRect:{left:100, top:100, width:400, height:400},
    portraitRect:{left:200, top:200, width:300, height:300}
  };
  panel.adjustPanelRect(panelFlag, panelRect);
} catch(err) {
  console.error(`Failed to adjustPanelRect: ${JSON.stringify(err)}`);
}

[h2]on('show')10+

on(type: 'show', callback: () => void): void

Enables listening for the show event of this panel. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'show'.
callback () => void Yes Callback used to return the result.

Example

try {
  panel.on('show', () => {
    console.log('Panel is showing.');
  });
} catch(err) {
    console.error(`Failed to show: ${JSON.stringify(err)}`);
}

[h2]on('hide')10+

on(type: 'hide', callback: () => void): void

Enables listening for the hide event of this panel. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'hide'.
callback () => void Yes Callback used to return the result.

Example

try {
  panel.on('hide', () => {
    console.log('Panel is hiding.');
  });
} catch(err) {
    console.error(`Failed to hide: ${JSON.stringify(err)}`);
}

[h2]on('sizeChange')12+

on(type: 'sizeChange', callback: Callback<window.Size>): void;

Enables listening for the panel size change. This API uses an asynchronous callback to return the result.

This API applies only to the panels of the SOFT_KEYBOARD type in the FLG_FIXED or FLG_FLOATING state. When adjustPanelRect is called to adjust the panel size, the system needs to calculate the final value based on certain rules (for example, whether the panel size exceeds the screen). This callback can be used for the input method application to refresh the panel layout.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'sizeChange'.
callback Callback<window.Size> Yes Callback used to return the size of the soft keyboard panel, including the width and height.

Example

import { window } from '@kit.ArkUI';
try {
  panel.on('sizeChange', (windowSize: window.Size) => {
    console.info(`panel is size changes, width: ${windowSize.width}, height: ${windowSize.height}`);
  });
} catch(err) {
  console.error(`Failed to sizeChange: ${JSON.stringify(err)}`);
}

[h2]off('show')10+

off(type: 'show', callback?: () => void): void

Disables listening for the show event of this panel. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'show'.
callback () => void No Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified type.

Error codes

For details about the error codes, see Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.

Example

try {
  panel.off('show');
} catch(err) {
    console.error(`Failed to show: ${JSON.stringify(err)}`);
}

[h2]off('hide')10+

off(type: 'hide', callback?: () => void): void

Disables listening for the hide event of this panel. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'hide'.
callback () => void No Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified type.

Error codes

For details about the error codes, see Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.

Example

try {
  panel.off('hide');
} catch(err) {
    console.error(`Failed to hide: ${JSON.stringify(err)}`);
}

[h2]off('sizeChange')12+

off(type: 'sizeChange', callback?: Callback<window.Size>): void;

Disables listening for the panel size change. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
type string Yes Event type, which is 'sizeChange'.
callback Callback<window.Size> No Callback used to return the size of the soft keyboard panel, including the width and height.

Example

import { window } from '@kit.ArkUI';
try {
  panel.off('sizeChange', (windowSize: window.Size) => {
    console.info(`panel is size changes, width: ${windowSize.width}, height: ${windowSize.height}`);
  });
} catch(err) {
    console.error(`Failed to sizeChange: ${JSON.stringify(err)}`);
}

[h2]changeFlag10+

changeFlag(flag: PanelFlag): void

Changes the state type of this input method panel. This API only works for SOFT_KEYBOARD panels.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
flag PanelFlag Yes Type of the state of the target panel.

Error codes

For details about the error codes, see Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.

Example

try {
  let panelFlag = inputMethodEngine.PanelFlag.FLG_FIXED;
  panel.changeFlag(panelFlag);
} catch(err) {
    console.error(`Failed to panelFlag: ${JSON.stringify(err)}`);
}

[h2]setPrivacyMode11+

setPrivacyMode(isPrivacyMode: boolean): void

Sets the input method panel to privacy mode. In privacy mode, screenshot and screen recording are blocked.

Required permissions: ohos.permission.PRIVACY_WINDOW

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
isPrivacyMode boolean Yes Whether to set the input method panel to privacy mode.

Error codes

For details about the error codes, see Universal Error Codes.

ID Error Message
201 permissions check fails.
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.

Example

try {
    let isPrivacyMode = true;
    panel.setPrivacyMode(isPrivacyMode);
} catch(err) {
    console.error(`Failed to set privacy mode: ${JSON.stringify(err)}`);
}

KeyboardController

In the following API examples, you must first use on('inputStart') to obtain a KeyboardController instance, and then call the APIs using the obtained instance.

[h2]hide9+

hide(callback: AsyncCallback<void>): void

Hides the keyboard. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback used to return the result. If the operation is successful, err is undefined. Otherwise, err is an error object.

Error codes

For details about the error codes, see Input Method Framework Error Codes.

ID Error Message
12800003 input method client error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

keyboardController.hide((err: BusinessError) => {
  if (err) {
    console.error(`Failed to hide: ${JSON.stringify(err)}`);
    return;
  }
  console.log('Succeeded in hiding keyboard.');
});

[h2]hide9+

hide(): Promise<void>

Hides the keyboard. This API uses a promise to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Return value

Type Description
Promise<void> Promise that returns no value.

Error codes

For details about the error codes, see Input Method Framework Error Codes.

ID Error Message
12800003 input method client error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

keyboardController.hide().then(() => {
  console.log('Succeeded in hiding keyboard.');
}).catch((err: BusinessError) => {
  console.log(`Failed to hide: ${JSON.stringify(err)}`);
});

[h2]hideKeyboard(deprecated)

hideKeyboard(callback: AsyncCallback<void>): void

Hides the keyboard. This API uses an asynchronous callback to return the result.

This API is supported since API version 8 and deprecated since API version 9. You are advised to use hide instead.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback used to return the result. If the operation is successful, err is undefined. Otherwise, err is an error object.

Example

import { BusinessError } from '@kit.BasicServicesKit';

keyboardController.hideKeyboard((err: BusinessError) => {
  if (err) {
    console.error(`Failed to hideKeyboard: ${JSON.stringify(err)}`);
    return;
  }
  console.log('Succeeded in hiding keyboard.');
});

[h2]hideKeyboard(deprecated)

hideKeyboard(): Promise<void>

Hides the keyboard. This API uses a promise to return the result.

This API is supported since API version 8 and deprecated since API version 9. You are advised to use hide instead.

System capability: SystemCapability.MiscServices.InputMethodFramework

Return value

Type Description
Promise<void> Promise that returns no value.

Example

import { BusinessError } from '@kit.BasicServicesKit';

keyboardController.hideKeyboard().then(() => {
  console.log('Succeeded in hiding keyboard.');
}).catch((err: BusinessError) => {
  console.log(`Failed to hideKeyboard: ${JSON.stringify(err)}`);
});

[h2]exitCurrentInputType11+

exitCurrentInputType(callback: AsyncCallback<void>): void

Exits this input type. This API can be called only by the preconfigured default input method. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback used to return the result. If the operation is successful, err is undefined. Otherwise, err is an error object.

Error codes

For details about the error codes, see Input Method Framework Error Codes.

ID Error Message
12800008 input method manager service error.
12800010 not default input method configured by system.

Example

import { BusinessError } from '@kit.BasicServicesKit';

keyboardController.exitCurrentInputType((err: BusinessError) => {
  if (err) {
    console.error(`Failed to exitCurrentInputType: ${JSON.stringify(err)}`);
    return;
  }
  console.log('Succeeded in exiting current input type.');
});

[h2]exitCurrentInputType11+

exitCurrentInputType(): Promise<void>

Exits this input type. This API can be called only by the preconfigured default input method. This API uses a promise to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Return value

Type Description
Promise<void> Promise that returns no value.

Error codes

For details about the error codes, see Input Method Framework Error Codes.

ID Error Message
12800008 input method manager service error.
12800010 not default input method configured by system.

Example

import { BusinessError } from '@kit.BasicServicesKit';

keyboardController.exitCurrentInputType().then(() => {
  console.log('Succeeded in exiting current input type.');
}).catch((err: BusinessError) => {
  console.log(`Failed to exit current input type: ${JSON.stringify(err)}`);
});

SecurityMode11+

Describes the security mode.

System capability: SystemCapability.MiscServices.InputMethodFramework

Name Value Description
BASIC 0 Basic access mode, where network access is restricted.
FULL 1 Full access mode, where network access is not restricted.

ExtendAction10+

Describes the type of the extended edit action on the text box.

System capability: SystemCapability.MiscServices.InputMethodFramework

Name Value Description
SELECT_ALL 0 Select all.
CUT 3 Cut.
COPY 4 Copy.
PASTE 5 Paste.

Direction10+

Enumerates the directions of cursor movement of the input method.

System capability: SystemCapability.MiscServices.InputMethodFramework

Name Value Description
CURSOR_UP 1 Upward.
CURSOR_DOWN 2 Downward.
CURSOR_LEFT 3 Leftward.
CURSOR_RIGHT 4 Rightward.

Range10+

Describes the range of the selected text.

System capability: SystemCapability.MiscServices.InputMethodFramework

Name Type Read-Only Optional Description
start number No No Index of the first selected character in the text box.
end number No No Index of the last selected character in the text box.

Movement10+

Describes the direction in which the cursor moves when the text is selected.

System capability: SystemCapability.MiscServices.InputMethodFramework

Name Type Read-Only Optional Description
direction Direction No No Direction in which the cursor moves when the text is selected.

InputClient9+

In the following API examples, you must first use on('inputStart') to obtain an InputClient instance, and then call the APIs using the obtained instance.

[h2]sendKeyFunction9+

sendKeyFunction(action:number, callback: AsyncCallback<boolean>): void

Sends the function key. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
action number Yes

Action of the function key.

- 0: invalid key.

- 1: confirm key (Enter key).

callback AsyncCallback<boolean> Yes Callback used to return the result. If the operation is successful, err is undefined and data is true. Otherwise, err is an error object.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
12800003 input method client error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let action = 1;
try {
  inputClient.sendKeyFunction(action, (err: BusinessError, result: boolean) => {
    if (err) {
      console.error(`Failed to sendKeyFunction: ${JSON.stringify(err)}`);
      return;
    }
    if (result) {
      console.log('Succeeded in sending key function.');
    } else {
      console.error('Failed to sendKeyFunction.');
    }
  });
} catch (err) {
  console.error(`Failed to sendKeyFunction: ${JSON.stringify(err)}`);
}

[h2]sendKeyFunction9+

sendKeyFunction(action: number): Promise<boolean>

Sends the function key. This API uses a promise to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
action number Yes

Action of the function key.

0: invalid key.

1: confirm key (Enter key).

Return value

Type Description
Promise<boolean> Promise used to return the result. The value true means that the operation is successful, and false means the opposite.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
12800003 input method client error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let action = 1;
try {
  inputClient.sendKeyFunction(action).then((result: boolean) => {
    if (result) {
      console.log('Succeeded in sending key function.');
    } else {
      console.error('Failed to sendKeyFunction.');
    }
  }).catch((err: BusinessError) => {
    console.error(`Failed to sendKeyFunction: ${JSON.stringify(err)}`);
  });
} catch (err) {
  console.error(`Failed to sendKeyFunction: ${JSON.stringify(err)}`);
}

[h2]getForward9+

getForward(length:number, callback: AsyncCallback<string>): void

Obtains the specific-length text before the cursor. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
length number Yes Text length, which cannot be less than 0.
callback AsyncCallback<string> Yes Callback used to return the result. If the operation is successful, err is undefined and data is the obtained text. Otherwise, err is an error object.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
12800003 input method client error.
12800006 Input method controller error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let length = 1;
try {
  inputClient.getForward(length, (err: BusinessError, text: string) => {
    if (err) {
      console.error(`Failed to getForward: ${JSON.stringify(err)}`);
      return;
    }
    console.log('Succeeded in getting forward, text: ' + text);
  });
} catch (err) {
  console.error(`Failed to getForward: ${JSON.stringify(err)}`);
}

[h2]getForward9+

getForward(length:number): Promise<string>

Obtains the specific-length text before the cursor. This API uses a promise to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
length number Yes Text length, which cannot be less than 0.

Return value

Type Description
Promise<string> Promise used to return the specific-length text before the cursor.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
12800003 input method client error.
12800006 Input method controller error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let length = 1;
try {
  inputClient.getForward(length).then((text: string) => {
    console.log('Succeeded in getting forward, text: ' + text);
  }).catch((err: BusinessError) => {
    console.error(`Failed to getForward: ${JSON.stringify(err)}`);
  });
} catch (err) {
  console.error(`Failed to getForward: ${JSON.stringify(err)}`);
}

[h2]getForwardSync10+

getForwardSync(length:number): string

Obtains the specific-length text before the cursor.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
length number Yes Text length, which cannot be less than 0.

Return value

Type Description
string Specific-length text before the cursor.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
12800003 input method client error.
12800006 input method controller error.

Example

let length = 1;
try {
  let text: string = inputClient.getForwardSync(length);
  console.log(`Succeeded in getting forward, text: ${text}`);
} catch (err) {
  console.error(`Failed to getForwardSync: ${JSON.stringify(err)}`);
}

[h2]getBackward9+

getBackward(length:number, callback: AsyncCallback<string>): void

Obtains the specific-length text after the cursor. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
length number Yes Text length, which cannot be less than 0.
callback AsyncCallback<string> Yes Callback used to return the result. If the operation is successful, err is undefined and data is the obtained text. Otherwise, err is an error object.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
12800003 input method client error.
12800006 Input method controller error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let length = 1;
try {
  inputClient.getBackward(length, (err: BusinessError, text: string) => {
    if (err) {
      console.error(`Failed to getBackward: ${JSON.stringify(err)}`);
      return;
    }
    console.log('Succeeded in getting backward, text: ' + text);
  });
} catch (err) {
  console.error(`Failed to getBackward: ${JSON.stringify(err)}`);
}

[h2]getBackward9+

getBackward(length:number): Promise<string>

Obtains the specific-length text after the cursor. This API uses a promise to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
length number Yes Text length, which cannot be less than 0.

Return value

Type Description
Promise<string> Promise used to return the specific-length text after the cursor.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
12800003 input method client error.
12800006 Input method controller error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let length = 1;
try {
  inputClient.getBackward(length).then((text: string) => {
    console.log('Succeeded in getting backward, text: ' + text);
  }).catch((err: BusinessError) => {
    console.error(`Failed to getBackward: ${JSON.stringify(err)}`);
  });
} catch (err) {
  console.error(`Failed to getBackward: ${JSON.stringify(err)}`);
}

[h2]getBackwardSync10+

getBackwardSync(length:number): string

Obtains the specific-length text after the cursor.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
length number Yes Text length, which cannot be less than 0.

Return value

Type Description
string Specific-length text after the cursor.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
12800003 input method client error.
12800006 input method controller error.

Example

let length = 1;
try {
  let text: string = inputClient.getBackwardSync(length);
  console.log(`Succeeded in getting backward, text: ${text}`);
} catch (err) {
  console.error(`Failed to getBackwardSync: ${JSON.stringify(err)}`);
}

[h2]deleteForward9+

deleteForward(length:number, callback: AsyncCallback<boolean>): void

Deletes the fixed-length text before the cursor. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
length number Yes Text length, which cannot be less than 0.
callback AsyncCallback<boolean> Yes Callback used to return the result. If the operation is successful, err is undefined and data is true. Otherwise, err is an error object.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
12800002 Input method engine error.
12800003 input method client error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let length = 1;
try {
  inputClient.deleteForward(length, (err: BusinessError, result: boolean) => {
    if (err) {
      console.error(`Failed to deleteForward: ${JSON.stringify(err)}`);
      return;
    }
    if (result) {
      console.log('Succeeded in deleting forward.');
    } else {
      console.error(`Failed to deleteForward.`);
    }
  });
} catch (err) {
  console.error(`Failed to deleteForward: ${JSON.stringify(err)}`);
}

[h2]deleteForward9+

deleteForward(length:number): Promise<boolean>

Deletes the fixed-length text before the cursor. This API uses a promise to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
length number Yes Text length, which cannot be less than 0.

Return value

Type Description
Promise<boolean> Promise used to return the result. The value true means that the deletion is successful, and false means the opposite.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
12800002 Input method engine error.
12800003 input method client error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let length = 1;
try {
  inputClient.deleteForward(length).then((result: boolean) => {
    if (result) {
      console.log('Succeeded in deleting forward.');
    } else {
      console.error('Failed to delete Forward.');
    }
  }).catch((err: BusinessError) => {
    console.error(`Failed to deleteForward: ${JSON.stringify(err)}`);
  });
} catch (err) {
  console.error(`Failed to deleteForward: ${JSON.stringify(err)}`);
}

[h2]deleteForwardSync10+

deleteForwardSync(length:number): void

Deletes the fixed-length text before the cursor.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
length number Yes Text length, which cannot be less than 0.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
12800002 input method engine error.
12800003 input method client error.

Example

let length = 1;
try {
  inputClient.deleteForwardSync(length);
  console.log('Succeeded in deleting forward.');
} catch (err) {
  console.error('deleteForwardSync err: ' + JSON.stringify(err));
}

[h2]deleteBackward9+

deleteBackward(length:number, callback: AsyncCallback<boolean>): void

Deletes the fixed-length text after the cursor. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
length number Yes Text length, which cannot be less than 0.
callback AsyncCallback<boolean> Yes Callback used to return the result. If the operation is successful, err is undefined and data is true. Otherwise, err is an error object.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
12800002 Input method engine error.
12800003 input method client error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let length = 1;
try {
  inputClient.deleteBackward(length, (err: BusinessError, result: boolean) => {
    if (err) {
      console.error(`Failed to deleteBackward: ${JSON.stringify(err)}`);
      return;
    }
    if (result) {
      console.log('Succeeded in deleting backward.');
    } else {
      console.error(`Failed to deleteBackward.`);
    }
  });
} catch (err) {
  console.error('deleteBackward err: ' + JSON.stringify(err));
}

[h2]deleteBackward9+

deleteBackward(length:number): Promise<boolean>

Deletes the fixed-length text after the cursor. This API uses a promise to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
length number Yes Text length, which cannot be less than 0.

Return value

Type Description
Promise<boolean> Promise used to return the result. The value true means that the deletion is successful, and false means the opposite.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
12800002 Input method engine error.
12800003 input method client error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let length = 1;
inputClient.deleteBackward(length).then((result: boolean) => {
  if (result) {
    console.log('Succeeded in deleting backward.');
  } else {
    console.error('Failed to deleteBackward.');
  }
}).catch((err: BusinessError) => {
  console.error(`Failed to deleteBackward: ${JSON.stringify(err)}`);
});

[h2]deleteBackwardSync10+

deleteBackwardSync(length:number): void

Deletes the fixed-length text after the cursor.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
length number Yes Text length, which cannot be less than 0.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
12800002 input method engine error.
12800003 input method client error.

Example

let length = 1;
try {
  inputClient.deleteBackwardSync(length);
  console.log('Succeeded in deleting backward.');
} catch (err) {
  console.error('deleteBackwardSync err: ' + JSON.stringify(err));
}

[h2]insertText9+

insertText(text:string, callback: AsyncCallback<boolean>): void

Inserts text. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
text string Yes Text to insert.
callback AsyncCallback<boolean> Yes Callback used to return the result. If the operation is successful, err is undefined and data is true. Otherwise, err is an error object.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
12800002 Input method engine error.
12800003 input method client error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

inputClient.insertText('test', (err: BusinessError, result: boolean) => {
  if (err) {
    console.error(`Failed to insertText: ${JSON.stringify(err)}`);
    return;
  }
  if (result) {
    console.log('Succeeded in inserting text.');
  } else {
    console.error('Failed to insertText.');
  }
});

[h2]insertText9+

insertText(text:string): Promise<boolean>

Inserts text. This API uses a promise to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
text string Yes Text to insert.

Return value

Type Description
Promise<boolean> Promise used to return the result. The value true means that the insertion is successful, and false means the opposite.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
12800002 Input method engine error.
12800003 input method client error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

try {
  inputClient.insertText('test').then((result: boolean) => {
    if (result) {
      console.log('Succeeded in inserting text.');
    } else {
      console.error('Failed to insertText.');
    }
  }).catch((err: BusinessError) => {
    console.error(`Failed to insertText: ${JSON.stringify(err)}`);
  });
} catch (err) {
  console.error(`Failed to insertText: ${JSON.stringify(err)}`);
}

[h2]insertTextSync10+

insertTextSync(text: string): void

Inserts text.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
text string Yes Text to insert.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
12800002 input method engine error.
12800003 input method client error.

Example

try {
  inputClient.insertTextSync('test');
  console.log('Succeeded in inserting text.');
} catch (err) {
  console.error(`Failed to insertTextSync: ${JSON.stringify(err)}`);
}

[h2]getEditorAttribute9+

getEditorAttribute(callback: AsyncCallback<EditorAttribute>): void

Obtains the attribute of the edit box. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
callback AsyncCallback<EditorAttribute> Yes Callback used to return the result. If the operation is successful, err is undefined and data is the attribute of the edit box. Otherwise, err is an error object.

Error codes

For details about the error codes, see Input Method Framework Error Codes.

ID Error Message
12800003 input method client error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

inputClient.getEditorAttribute((err: BusinessError, editorAttribute: inputMethodEngine.EditorAttribute) => {
  if (err) {
    console.error(`Failed to getEditorAttribute: ${JSON.stringify(err)}`);
    return;
  }
  console.log(`editorAttribute.inputPattern:  ${editorAttribute.inputPattern}`);
  console.log(`editorAttribute.enterKeyType:  ${editorAttribute.enterKeyType}`);
});

[h2]getEditorAttribute9+

getEditorAttribute(): Promise<EditorAttribute>

Obtains the attribute of the edit box. This API uses a promise to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Return value

Type Description
Promise<EditorAttribute> Promise used to return the attribute of the edit box.

Error codes

For details about the error codes, see Input Method Framework Error Codes.

ID Error Message
12800003 input method client error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

try {
  inputClient.getEditorAttribute().then((editorAttribute: inputMethodEngine.EditorAttribute) => {
    console.log(`editorAttribute.inputPattern:  ${editorAttribute.inputPattern}`);
    console.log(`editorAttribute.enterKeyType:  ${editorAttribute.enterKeyType}`);
  }).catch((err: BusinessError) => {
    console.error(`Failed to getEditorAttribute: ${JSON.stringify(err)}`);
  });
} catch(err) {
    console.error(`Failed to getEditorAttribute: ${JSON.stringify(err)}`);
}

[h2]getEditorAttributeSync10+

getEditorAttributeSync(): EditorAttribute

Obtains the attribute of the edit box.

System capability: SystemCapability.MiscServices.InputMethodFramework

Return value

Type Description
EditorAttribute Attribute object of the edit box.

Error codes

For details about the error codes, see Input Method Framework Error Codes.

ID Error Message
12800003 input method client error.

Example

try {
  let editorAttribute: inputMethodEngine.EditorAttribute = inputClient.getEditorAttributeSync();
    console.log(`editorAttribute.inputPattern:  ${editorAttribute.inputPattern}`);
    console.log(`editorAttribute.enterKeyType:  ${editorAttribute.enterKeyType}`);
} catch (err) {
  console.error(`Failed to getEditorAttributeSync: ${JSON.stringify(err)}`);
}

[h2]moveCursor9+

moveCursor(direction: number, callback: AsyncCallback<void>): void

Moves the cursor. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
direction number Yes

Direction in which the cursor moves.

- 1: upward.

- 2: downward.

- 3: leftward.

- 4: rightward. which cannot be less than 0.

callback AsyncCallback<void> Yes Callback used to return the result. If the operation is successful, err is undefined. Otherwise, err is an error object.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
12800003 input method client error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

try {
  inputClient.moveCursor(inputMethodEngine.Direction.CURSOR_UP, (err: BusinessError) => {
    if (err) {
      console.error(`Failed to moveCursor: ${JSON.stringify(err)}`);
      return;
    }
    console.log('Succeeded in moving cursor.');
  });
} catch (err) {
  console.error(`Failed to moveCursor: ${JSON.stringify(err)}`);
}

[h2]moveCursor9+

moveCursor(direction: number): Promise<void>

Moves the cursor. This API uses a promise to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
direction number Yes

Direction in which the cursor moves.

- 1: upward.

- 2: downward.

- 3: leftward.

- 4: rightward. which cannot be less than 0.

Return value

Type Description
Promise<void> Promise that returns no value.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
12800003 input method client error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

try {
  inputClient.moveCursor(inputMethodEngine.Direction.CURSOR_UP).then(() => {
    console.log('Succeeded in moving cursor.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to moveCursor: ${JSON.stringify(err)}`);
  });
} catch (err) {
  console.error(`Failed to moveCursor: ${JSON.stringify(err)}`);
}

[h2]moveCursorSync10+

moveCursorSync(direction: number): void

Moves the cursor.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
direction number Yes

Direction in which the cursor moves.

- 1: upward.

- 2: downward.

- 3: leftward.

- 4: rightward. which cannot be less than 0.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
12800003 input method client error.

Example

try {
  inputClient.moveCursorSync(inputMethodEngine.Direction.CURSOR_UP);
  console.log('Succeeded in moving cursor.');
} catch (err) {
  console.error(`Failed to moveCursorSync: ${JSON.stringify(err)}`);
}

[h2]selectByRange10+

selectByRange(range: Range, callback: AsyncCallback<void>): void

Selects text based on the specified range. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
range Range Yes Range of the selected text.
callback AsyncCallback<void> Yes Callback used to return the result. If the selection event is sent, err is undefined; otherwise, err is an error object.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
12800003 input method client error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

try {
  let range: inputMethodEngine.Range = { start: 0, end: 1 };
  inputClient.selectByRange(range, (err: BusinessError) => {
    if (err) {
      console.error(`Failed to selectByRange: ${JSON.stringify(err)}`);
      return;
    }
    console.log('Succeeded in selecting by range.');
  });
} catch (err) {
  console.error(`Failed to selectByRange: ${JSON.stringify(err)}`);
}

[h2]selectByRange10+

selectByRange(range: Range): Promise<void>

Selects text based on the specified range. This API uses a promise to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
range Range Yes Range of the selected text.

Return value

Type Description
Promise<void> Promise that returns no value.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
12800003 input method client error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

try {
  let range: inputMethodEngine.Range = { start: 0, end: 1 };
  inputClient.selectByRange(range).then(() => {
    console.log('Succeeded in selecting by range.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to selectByRange: ${JSON.stringify(err)}`);
  });
} catch (err) {
  console.error(`Failed to selectByRange: ${JSON.stringify(err)}`);
}

[h2]selectByRangeSync10+

selectByRangeSync(range: Range): void

Selects text based on the specified range.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
range Range Yes Range of the selected text.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
12800003 input method client error.

Example

try {
  let range: inputMethodEngine.Range = { start: 0, end: 1 };
  inputClient.selectByRangeSync(range);
  console.log('Succeeded in selecting by range.');
} catch (err) {
  console.error(`Failed to selectByRangeSync: ${JSON.stringify(err)}`);
}

[h2]selectByMovement10+

selectByMovement(movement: Movement, callback: AsyncCallback<void>): void

Selects text based on the cursor movement direction. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
movement Movement Yes Direction in which the cursor moves when the text is selected.
callback AsyncCallback<void> Yes Callback used to return the result. If the selection event is sent, err is undefined; otherwise, err is an error object.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
12800003 input method client error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

try {
  let movement: inputMethodEngine.Movement = { direction: 1 };
  inputClient.selectByMovement(movement, (err: BusinessError) => {
    if (err) {
      console.error(`Failed to selectByMovement: ${JSON.stringify(err)}`);
      return;
    }
    console.log('Succeeded in selecting by movement.');
  });
} catch (err) {
  console.error(`Failed to selectByMovement: ${JSON.stringify(err)}`);
}

[h2]selectByMovement10+

selectByMovement(movement: Movement): Promise<void>

Selects text based on the specified range. This API uses a promise to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
movement Movement Yes Direction in which the cursor moves when the text is selected.

Return value

Type Description
Promise<void> Promise that returns no value.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
12800003 input method client error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

try {
  let movement: inputMethodEngine.Movement = { direction: 1 };
  inputClient.selectByMovement(movement).then(() => {
    console.log('Succeeded in selecting by movement.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to selectByMovement: ${JSON.stringify(err)}`);
  });
} catch (err) {
  console.error(`Failed to selectByMovement: ${JSON.stringify(err)}`);
}

[h2]selectByMovementSync10+

selectByMovementSync(movement: Movement): void

Selects text based on the cursor movement direction.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
movement Movement Yes Direction in which the cursor moves when the text is selected.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
12800003 input method client error.

Example

try {
  let movement: inputMethodEngine.Movement = { direction: 1 };  
  inputClient.selectByMovementSync(movement);
  console.log('Succeeded in selecting by movement.');
} catch (err) {
  console.error(`Failed to selectByMovement: ${JSON.stringify(err)}`);
}

[h2]getTextIndexAtCursor10+

getTextIndexAtCursor(callback: AsyncCallback<number>): void

Obtains the index of the text where the cursor is located. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
callback AsyncCallback<number> Yes Callback used to return the result. If the text index is obtained, err is undefined; otherwise, err is an error object.

Error codes

For details about the error codes, see Input Method Framework Error Codes.

ID Error Message
12800003 input method client error.
12800006 Input method controller error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

inputClient.getTextIndexAtCursor((err: BusinessError, index: number) => {
  if (err) {
    console.error(`Failed to getTextIndexAtCursor: ${JSON.stringify(err)}`);
    return;
  }
  console.log('Succeeded in getTextIndexAtCursor: ' + index);
});

[h2]getTextIndexAtCursor10+

getTextIndexAtCursor(): Promise<number>

Obtains the index of the text where the cursor is located. This API uses a promise to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Return value

Type Description
Promise<number> Promise used to return the result.

Error codes

For details about the error codes, see Input Method Framework Error Codes.

ID Error Message
12800003 input method client error.
12800006 Input method controller error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

inputClient.getTextIndexAtCursor().then((index: number) => {
  console.log('Succeeded in getTextIndexAtCursor: ' + index);
}).catch((err: BusinessError) => {
  console.error(`Failed to getTextIndexAtCursor: ${JSON.stringify(err)}`);
});

[h2]getTextIndexAtCursorSync10+

getTextIndexAtCursorSync(): number

Obtains the index of the text where the cursor is located.

System capability: SystemCapability.MiscServices.InputMethodFramework

Return value

Type Description
number Index of the text where the cursor is located.

Error codes

For details about the error codes, see Input Method Framework Error Codes.

ID Error Message
12800003 input method client error.
12800006 Input method controller error.

Example

try{
  let index: number = inputClient.getTextIndexAtCursorSync();
  console.log(`Succeeded in getTextIndexAtCursorSync, index: ${index}`);
} catch (err) {
  console.error(`Failed to getTextIndexAtCursorSync: ${JSON.stringify(err)}`);
}

[h2]sendExtendAction10+

sendExtendAction(action: ExtendAction, callback: AsyncCallback<void>): void

Sends an extended edit action. This API uses an asynchronous callback to return the result.

The input method calls this API to send an extended edit action to an edit box, which in turn listens for the corresponding event on('handleExtendAction') for further processing.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
action ExtendAction Yes Extended edit action to send.
callback AsyncCallback<void> Yes Callback used to return the result. If the operation is successful, err is undefined. Otherwise, err is an error object.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
12800003 input method client error.
12800006 Input method controller error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

try {
  inputClient.sendExtendAction(inputMethodEngine.ExtendAction.COPY, (err: BusinessError) => {
    if (err) {
      console.error(`Failed to sendExtendAction: ${JSON.stringify(err)}`);
      return;
    }
    console.log('Succeeded in sending extend action.');
  });
} catch(err) {
  console.error(`Failed to sendExtendAction: ${JSON.stringify(err)}`);
}

[h2]sendExtendAction10+

sendExtendAction(action: ExtendAction): Promise<void>

Sends an extended edit action. This API uses a promise to return the result.

The input method calls this API to send an extended edit action to an edit box, which in turn listens for the corresponding event on('handleExtendAction') for further processing.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
action ExtendAction Yes Extended edit action to send.

Return value

Type Description
Promise<void> Promise that returns no value.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
12800003 input method client error.
12800006 Input method controller error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

try {
  inputClient.sendExtendAction(inputMethodEngine.ExtendAction.COPY).then(() => {
    console.log('Succeeded in sending extend action.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to sendExtendAction: ${JSON.stringify(err)}`);
  });
} catch(err) {
  console.error(`Failed to sendExtendAction: ${JSON.stringify(err)}`);
}

[h2]sendPrivateCommand12+

sendPrivateCommand(commandData: Record<string, CommandDataType>): Promise<void>

Sends private data to the system component that needs to communicate with the input method application.

  • The private data channel allows communication between the system preset input method application and specific system components (such as a text box or a home screen application). It is usually used to implement custom input on a specific device.
  • The total size of the private data is 32 KB, and the maximum number of private data records is 5.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
commandData Record<string, CommandDataType> Yes Private data to send.

Return value

Type Description
Promise<void> Promise that returns no value.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
12800003 input method client error.
12800010 not default input method configured by system.

Example

import { inputMethodEngine } from '@kit.IMEKit';
import { BusinessError } from '@kit.BasicServicesKit';

inputMethodEngine.getInputMethodAbility().on('inputStart', (kbController, textInputClient) => {
  try {
    let record: Record<string, inputMethodEngine.CommandDataType> = {
      "valueString1": "abcdefg",
      "valueString2": true,
      "valueString3": 500,
    }
    textInputClient.sendPrivateCommand(record).then(() => {
    }).catch((err: BusinessError) => {
      if (err !== undefined) {
        let error = err as BusinessError;
        console.error(`sendPrivateCommand catch error: ${error.code} ${error.message}`);
      }
    });
  } catch (err) {
    let error = err as BusinessError;
    console.error(`sendPrivateCommand catch error: ${error.code} ${error.message}`);
  }
})

[h2]getCallingWindowInfo12+

getCallingWindowInfo(): Promise<WindowInfo>

Obtains information about the application window, in which the input box that starts an input method is located. This API uses a promise to return the result.

This API applies only to the input method applications that use Panel as the soft keyboard window.

System capability: SystemCapability.MiscServices.InputMethodFramework

Return value

Type Description
Promise<WindowInfo> Promise used to return the information obtained.

Error codes

For details about the error codes, see Input Method Framework Error Codes.

ID Error Message
12800003 input method client error.
12800012 input method panel doesn't exist.
12800013 window manager service error.

Example

import { BusinessError } from '@kit.BasicServicesKit';

try {
  inputClient.getCallingWindowInfo().then((windowInfo: inputMethodEngine.WindowInfo) => {
    console.log(`windowInfo.rect: ${JSON.stringify(windowInfo.rect)}`);
    console.log('windowInfo.status: ' + JSON.stringify(windowInfo.status));
  }).catch((err: BusinessError) => {
    console.error(`Failed to getCallingWindowInfo: ${JSON.stringify(err)}`);
  });
} catch(err) {
    console.error(`Failed to getCallingWindowInfo: ${JSON.stringify(err)}`);
}

[h2]setPreviewText12+

setPreviewText(text: string, range: Range): Promise<void>

Sets the preview text. This API uses a promise to return the result.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
text string Yes Preview text to set.
range Range Yes

Range of the preview text.

- If the value is { start: -1, end: -1 }, text replaces the entire text in the current preview area by default.

- If start is equal to end, text is inserted into the cursor position specified by start.

- If start is not equal to end, text replaces the text of the specified range.

- If the values of start and end are negative values, a parameter error is returned.

- If there is preview text in the text box, the value of range cannot exceed the range of the preview text. Otherwise, a parameter error is returned.

- If there is no preview text in the text box, the value of range cannot exceed the text range of the text box. Otherwise, a parameter error is returned.

Return value

Type Description
Promise<void> Promise that returns no value.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
12800003 input method client error.
12800011 text preview is not supported.

Example

import { BusinessError } from '@kit.BasicServicesKit';

try {
  let range: inputMethodEngine.Range = { start: 0, end: 1 };
  inputClient.setPreviewText('test', range).then(() => {
    console.log('Succeeded in setting preview text.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to setPreviewText: ${JSON.stringify(err)}`);
  });
} catch(err) {
    console.error(`Failed to setPreviewText: ${JSON.stringify(err)}`);
}

[h2]setPreviewTextSync12+

setPreviewTextSync(text: string, range: Range): void

Sets the preview text.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
text string Yes Preview text to set.
range Range Yes

Range of the preview text.

- If the value is { start: -1, end: -1 }, text replaces the entire text in the current preview area by default.

- If start is equal to end, text is inserted into the cursor position specified by start.

- If start is not equal to end, text replaces the text of the specified range.

- If the values of start and end are negative values, a parameter error is returned.

- If there is preview text in the text box, the value of range cannot exceed the range of the preview text. Otherwise, a parameter error is returned.

- If there is no preview text in the text box, the value of range cannot exceed the text range of the text box. Otherwise, a parameter error is returned.

Error codes

For details about the error codes, see Input Method Framework Error Codes and Universal Error Codes.

ID Error Message
401 parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
12800003 input method client error.
12800011 text preview is not supported.

Example

try {
  let range: inputMethodEngine.Range = { start: 0, end: 1 };
  inputClient.setPreviewTextSync('test', range);
  console.log('Succeeded in setting preview text with synchronized method.');
} catch (err) {
  console.error(`Failed to setPreviewTextSync: ${JSON.stringify(err)}`);
}

[h2]finishTextPreview12+

finishTextPreview(): Promise<void>

Finishes the text preview. This API uses a promise to return the result.

If there is preview text in the current text box, calling this API will display the preview text on the screen.

System capability: SystemCapability.MiscServices.InputMethodFramework

Return value

Type Description
Promise<void> Promise that returns no value.

Error codes

For details about the error codes, see Input Method Framework Error Codes.

ID Error Message
12800003 input method client error.
12800011 text preview is not supported.

Example

import { BusinessError } from '@kit.BasicServicesKit';

try {
  inputClient.finishTextPreview().then(() => {
    console.log('Succeeded in finishing text preview.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to finishTextPreview: ${JSON.stringify(err)}`);
  });
} catch(err) {
    console.error(`Failed to finishTextPreview: ${JSON.stringify(err)}`);
}

[h2]finishTextPreviewSync12+

finishTextPreviewSync(): void

Finishes the text preview.

If there is preview text in the current text box, calling this API will display the preview text on the screen.

System capability: SystemCapability.MiscServices.InputMethodFramework

Error codes

For details about the error codes, see Input Method Framework Error Codes.

ID Error Message
12800003 input method client error.
12800011 text preview is not supported.

Example

try {
  inputClient.finishTextPreviewSync();
  console.log('Succeeded in finishing text preview with synchronized method.');
} catch (err) {
  console.error(`Failed to finishTextPreviewSync: ${JSON.stringify(err)}`);
}

EditorAttribute

Represents the attributes of the edit box.

System capability: SystemCapability.MiscServices.InputMethodFramework

Name Type Read-Only Optional Description
enterKeyType number Yes No Function of the edit box.
inputPattern number Yes No Text of the edit box.
isTextPreviewSupported12+ boolean No No Whether text preview is supported.

KeyEvent

Represents the attributes of a key.

System capability: SystemCapability.MiscServices.InputMethodFramework

Name Type Read-Only Optional Description
keyCode number Yes No Key value. For details, see KeyCode.
keyAction number Yes No

Key event type.

- 2: keydown event.

- 3: keyup event.

PanelFlag10+

Enumerates the state types of the input method panel.

System capability: SystemCapability.MiscServices.InputMethodFramework

Name Value Description
FLG_FIXED 0 Fixed state type.
FLG_FLOATING 1 Floating state type.

PanelType10+

Enumerates the types of the input method panel.

System capability: SystemCapability.MiscServices.InputMethodFramework

Name Value Description
SOFT_KEYBOARD 0 Soft keyboard type.
STATUS_BAR 1 Status bar type.

PanelInfo10+

Describes the attributes of the input method panel.

System capability: SystemCapability.MiscServices.InputMethodFramework

Name Type Read-Only Optional Description
type PanelType No No Type of the panel.
flag PanelFlag No Yes State type of the panel.

PanelRect12+

Represents the size of the input method panel.

System capability: SystemCapability.MiscServices.InputMethodFramework

Name Type Read-Only Optional Description
landscapeRect window.Rect No No Size of the input method panel window in landscape mode.
portraitRect window.Rect No No Size of the input method panel window in portrait mode.

WindowInfo12+

Represents window information.

System capability: SystemCapability.MiscServices.InputMethodFramework

Name Type Read-Only Optional Description
rect window.Rect No No Rectangular area of the window.
status window.WindowStatusType No No Window status type.

TextInputClient(deprecated)

This API is supported since API version 8 and deprecated since API version 9. You are advised to use InputClient instead.

In the following API examples, you must first use on('inputStart') to obtain a TextInputClient instance, and then call the APIs using the obtained instance.

[h2]getForward(deprecated)

getForward(length:number, callback: AsyncCallback<string>): void

Obtains the specific-length text before the cursor. This API uses an asynchronous callback to return the result.

This API is supported since API version 8 and deprecated since API version 9. You are advised to use getForward instead.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
length number Yes Text length, which cannot be less than 0.
callback AsyncCallback<string> Yes Callback used to return the result. If the operation is successful, err is undefined and data is the obtained text. Otherwise, err is an error object.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let length = 1;
textInputClient.getForward(length, (err: BusinessError, text: string) => {
  if (err) {
    console.error(`Failed to getForward: ${JSON.stringify(err)}`);
    return;
  }
  console.log('Succeeded in getting forward, text: ' + text);
});

[h2]getForward(deprecated)

getForward(length:number): Promise<string>

Obtains the specific-length text before the cursor. This API uses a promise to return the result.

This API is supported since API version 8 and deprecated since API version 9. You are advised to use getForward instead.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
length number Yes Text length, which cannot be less than 0.

Return value

Type Description
Promise<string> Promise used to return the specific-length text before the cursor.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let length = 1;
textInputClient.getForward(length).then((text: string) => {
  console.log('Succeeded in getting forward, text: ' + text);
}).catch((err: BusinessError) => {
  console.error(`Failed to getForward: ${JSON.stringify(err)}`);
});

[h2]getBackward(deprecated)

getBackward(length:number, callback: AsyncCallback<string>): void

Obtains the specific-length text after the cursor. This API uses an asynchronous callback to return the result.

This API is supported since API version 8 and deprecated since API version 9. You are advised to use getBackward instead.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
length number Yes Text length, which cannot be less than 0.
callback AsyncCallback<string> Yes Callback used to return the result. If the operation is successful, err is undefined and data is the obtained text. Otherwise, err is an error object.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let length = 1;
textInputClient.getBackward(length, (err: BusinessError, text: string) => {
  if (err) {
    console.error(`Failed to getBackward: ${JSON.stringify(err)}`);
    return;
  }
  console.log('Succeeded in getting borward, text: ' + text);
});

[h2]getBackward(deprecated)

getBackward(length:number): Promise<string>

Obtains the specific-length text after the cursor. This API uses a promise to return the result.

This API is supported since API version 8 and deprecated since API version 9. You are advised to use getBackward instead.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
length number Yes Text length, which cannot be less than 0.

Return value

Type Description
Promise<string> Promise used to return the specific-length text after the cursor.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let length = 1;
textInputClient.getBackward(length).then((text: string) => {
  console.log('Succeeded in getting backward: ' + JSON.stringify(text));
}).catch((err: BusinessError) => {
  console.error(`Failed to getBackward: ${JSON.stringify(err)}`);
});

[h2]deleteForward(deprecated)

deleteForward(length:number, callback: AsyncCallback<boolean>): void

Deletes the fixed-length text before the cursor. This API uses an asynchronous callback to return the result.

This API is supported since API version 8 and deprecated since API version 9. You are advised to use deleteForward instead.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
length number Yes Text length, which cannot be less than 0.
callback AsyncCallback<boolean> Yes Callback used to return the result. If the operation is successful, err is undefined and data is true. Otherwise, err is an error object.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let length = 1;
textInputClient.deleteForward(length, (err: BusinessError, result: boolean) => {
  if (err) {
    console.error(`Failed to deleteForward: ${JSON.stringify(err)}`);
    return;
  }
  if (result) {
    console.log('Succeeded in deleting forward.');
  } else {
    console.error('Failed to deleteForward.');
  }
});

[h2]deleteForward(deprecated)

deleteForward(length:number): Promise<boolean>

Deletes the fixed-length text before the cursor. This API uses a promise to return the result.

This API is supported since API version 8 and deprecated since API version 9. You are advised to use deleteForward instead.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
length number Yes Text length, which cannot be less than 0.

Return value

Type Description
Promise<boolean> Promise used to return the result. The value true means that the deletion is successful, and false means the opposite.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let length = 1;
textInputClient.deleteForward(length).then((result: boolean) => {
  if (result) {
    console.log('Succeeded in deleting forward.');
  } else {
    console.error('Failed to delete forward.');
  }
}).catch((err: BusinessError) => {
  console.error(`Failed to deleteForward: ${JSON.stringify(err)}`);
});

[h2]deleteBackward(deprecated)

deleteBackward(length:number, callback: AsyncCallback<boolean>): void

Deletes the fixed-length text after the cursor. This API uses an asynchronous callback to return the result.

This API is supported since API version 8 and deprecated since API version 9. You are advised to use deleteBackward instead.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
length number Yes Text length, which cannot be less than 0.
callback AsyncCallback<boolean> Yes Callback used to return the result. If the operation is successful, err is undefined and data is true. Otherwise, err is an error object.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let length = 1;
textInputClient.deleteBackward(length, (err: BusinessError, result: boolean) => {
  if (err) {
    console.error(`Failed to deleteBackward: ${JSON.stringify(err)}`);
    return;
  }
  if (result) {
    console.log('Succeeded in deleting backward.');
  } else {
    console.error('Failed to deleteBackward.');
  }
});

[h2]deleteBackward(deprecated)

deleteBackward(length:number): Promise<boolean>

Deletes the fixed-length text after the cursor. This API uses a promise to return the result.

This API is supported since API version 8 and deprecated since API version 9. You are advised to use deleteBackward instead.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
length number Yes Text length, which cannot be less than 0.

Return value

Type Description
Promise<boolean> Promise used to return the result. The value true means that the deletion is successful, and false means the opposite.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let length = 1;
textInputClient.deleteBackward(length).then((result: boolean) => {
  if (result) {
    console.log('Succeeded in deleting backward.');
  } else {
    console.error('Failed to deleteBackward.');
  }
}).catch((err: BusinessError) => {
  console.error(`Failed to deleteBackward: ${JSON.stringify(err)}`);
});

[h2]sendKeyFunction(deprecated)

sendKeyFunction(action: number, callback: AsyncCallback<boolean>): void

Sends the function key. This API uses an asynchronous callback to return the result.

This API is supported since API version 8 and deprecated since API version 9. You are advised to use sendKeyFunction instead.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
action number Yes

Action of the function key.

- 0: invalid key.

- 1: confirm key (Enter key).

callback AsyncCallback<boolean> Yes Callback used to return the result. If the operation is successful, err is undefined and data is true. Otherwise, err is an error object.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let action = 1;
textInputClient.sendKeyFunction(action, (err: BusinessError, result: boolean) => {
  if (err) {
    console.error(`Failed to sendKeyFunction: ${JSON.stringify(err)}`);
    return;
  }
  if (result) {
    console.log('Succeeded in sending key function.');
  } else {
    console.error('Failed to sendKeyFunction.');
  }
});

[h2]sendKeyFunction(deprecated)

sendKeyFunction(action: number): Promise<boolean>

Sends the function key. This API uses a promise to return the result.

This API is supported since API version 8 and deprecated since API version 9. You are advised to use sendKeyFunction instead.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
action number Yes

Action of the function key.

0: invalid key.

1: confirm key (Enter key).

Return value

Type Description
Promise<boolean> Promise used to return the result. The value true means that the setting is successful, and false means the opposite.

Example

import { BusinessError } from '@kit.BasicServicesKit';

let action = 1;
textInputClient.sendKeyFunction(action).then((result: boolean) => {
  if (result) {
    console.log('Succeeded in sending key function.');
  } else {
    console.error('Failed to sendKeyFunction.');
  }
}).catch((err: BusinessError) => {
  console.error(`Failed to sendKeyFunction: ${JSON.stringify(err)}`);
});

[h2]insertText(deprecated)

insertText(text:string, callback: AsyncCallback<boolean>): void

Inserts text. This API uses an asynchronous callback to return the result.

This API is supported since API version 8 and deprecated since API version 9. You are advised to use insertText instead.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
text string Yes Text to insert.
callback AsyncCallback<boolean> Yes Callback used to return the result. If the operation is successful, err is undefined and data is true. Otherwise, err is an error object.

Example

import { BusinessError } from '@kit.BasicServicesKit';

textInputClient.insertText('test', (err: BusinessError, result: boolean) => {
  if (err) {
    console.error(`Failed to insertText: ${JSON.stringify(err)}`);
    return;
  }
  if (result) {
    console.log('Succeeded in inserting text.');
  } else {
    console.error('Failed to insertText.');
  }
});

[h2]insertText(deprecated)

insertText(text:string): Promise<boolean>

Inserts text. This API uses a promise to return the result.

This API is supported since API version 8 and deprecated since API version 9. You are advised to use insertText instead.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
text string Yes Text to insert.

Return value

Type Description
Promise<boolean> Promise used to return the result. The value true means that the insertion is successful, and false means the opposite.

Example

import { BusinessError } from '@kit.BasicServicesKit';

textInputClient.insertText('test').then((result: boolean) => {
  if (result) {
    console.log('Succeeded in inserting text.');
  } else {
    console.error('Failed to insertText.');
  }
}).catch((err: BusinessError) => {
  console.error(`Failed to insertText: ${JSON.stringify(err)}`);
});

[h2]getEditorAttribute(deprecated)

getEditorAttribute(callback: AsyncCallback<EditorAttribute>): void

Obtains the attribute of the edit box. This API uses an asynchronous callback to return the result.

This API is supported since API version 8 and deprecated since API version 9. You are advised to use getEditorAttribute instead.

System capability: SystemCapability.MiscServices.InputMethodFramework

Parameters

Name Type Mandatory Description
callback AsyncCallback<EditorAttribute> Yes Callback used to return the result. If the operation is successful, err is undefined and data is the attribute of the edit box. Otherwise, err is an error object.

Example

import { BusinessError } from '@kit.BasicServicesKit';

textInputClient.getEditorAttribute((err: BusinessError, editorAttribute: inputMethodEngine.EditorAttribute) => {
  if (err) {
    console.error(`Failed to getEditorAttribute: ${JSON.stringify(err)}`);
    return;
  }
  console.log(`editorAttribute.inputPattern: ${editorAttribute.inputPattern}`;
  console.log(`editorAttribute.enterKeyType: ${editorAttribute.enterKeyType}`);
});

[h2]getEditorAttribute(deprecated)

getEditorAttribute(): Promise<EditorAttribute>

Obtains the attribute of the edit box. This API uses a promise to return the result.

This API is supported since API version 8 and deprecated since API version 9. You are advised to use getEditorAttribute instead.

System capability: SystemCapability.MiscServices.InputMethodFramework

Return value

Type Description
Promise<EditorAttribute> Promise used to return the attribute of the edit box.

Example

import { BusinessError } from '@kit.BasicServicesKit';

textInputClient.getEditorAttribute().then((editorAttribute: inputMethodEngine.EditorAttribute) => {
  console.log('editorAttribute.inputPattern: ' + JSON.stringify(editorAttribute.inputPattern));
  console.log('editorAttribute.enterKeyType: ' + JSON.stringify(editorAttribute.enterKeyType));
}).catch((err: BusinessError) => {
  console.error(`Failed to getEditorAttribute: ${JSON.stringify(err)}`);
});