# @ohos.multimodalInput.inputEventClient (输入事件注入)(系统接口)
输入事件注入模块,提供输入事件注入能力。
> **说明:**
>
> - 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
>
> - 本模块接口为系统接口。
## 导入模块
```js
import { inputEventClient } from '@kit.InputKit';
```
## inputEventClient.injectEvent
injectEvent({KeyEvent: KeyEvent}): void
按键(包括单个按键和组合键)注入。
**系统能力:** SystemCapability.MultimodalInput.Input.InputSimulator
**需要权限:** ohos.permission.INJECT_INPUT_EVENT
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | --------- |
| KeyEvent | [KeyEvent](#keyevent) | 是 | 按键注入描述信息。 |
**错误码**:
以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| ---- | --------------------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
**示例:**
```js
try {
let backKeyDown: inputEventClient.KeyEvent = {
isPressed: true,
keyCode: 2,
keyDownDuration: 0,
isIntercepted: false
}
class EventDown {
KeyEvent: inputEventClient.KeyEvent | null = null
}
let eventDown: EventDown = { KeyEvent: backKeyDown }
inputEventClient.injectEvent(eventDown);
let backKeyUp: inputEventClient.KeyEvent = {
isPressed: false,
keyCode: 2,
keyDownDuration: 0,
isIntercepted: false
};
class EventUp {
KeyEvent: inputEventClient.KeyEvent | null = null
}
let eventUp: EventUp = { KeyEvent: backKeyUp }
inputEventClient.injectEvent(eventUp);
} catch (error) {
console.log(`Failed to inject KeyEvent, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```
## inputEventClient.injectKeyEvent11+
injectKeyEvent(keyEvent: KeyEventData): void
按键(包括单个按键和组合键)事件注入。
**系统能力:** SystemCapability.MultimodalInput.Input.InputSimulator
**需要权限:** ohos.permission.INJECT_INPUT_EVENT
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | --------- |
| keyEvent | [KeyEventData](#keyeventdata11) | 是 | 按键事件注入描述信息。 |
**错误码**:
以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| ---- | --------------------- |
| 202 | SystemAPI permission error. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
**示例:**
```js
try {
let backKeyDown: inputEventClient.KeyEvent = {
isPressed: true,
keyCode: 2,
keyDownDuration: 0,
isIntercepted: false
}
class EventDown {
KeyEvent: inputEventClient.KeyEvent | null = null
}
let eventDown: EventDown = { KeyEvent: backKeyDown }
inputEventClient.injectKeyEvent(eventDown);
let backKeyUp: inputEventClient.KeyEvent = {
isPressed: false,
keyCode: 2,
keyDownDuration: 0,
isIntercepted: false
};
class EventUp {
KeyEvent: inputEventClient.KeyEvent | null = null
}
let eventUp: EventUp = { KeyEvent: backKeyUp }
inputEventClient.injectKeyEvent(eventUp);
} catch (error) {
console.log(`Failed to inject KeyEvent, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```
## inputEventClient.injectMouseEvent11+
injectMouseEvent(mouseEvent: MouseEventData): void;
鼠标/触摸板事件注入。
**系统能力:** SystemCapability.MultimodalInput.Input.InputSimulator
**需要权限:** ohos.permission.INJECT_INPUT_EVENT
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | --------- |
| mouseEvent | [MouseEventData](#mouseeventdata11) | 是 | 鼠标/触摸板事件注入描述信息。 |
**错误码**:
以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| ---- | --------------------- |
| 202 | SystemAPI permission error. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
**示例:**
```js
import { MouseEvent } from '@kit.InputKit';
try {
let mouseButtonUpData: mouseEvent.MouseEvent = {
id: 0,
deviceId: 1,
actionTime: 2,
screenId: 1,
windowId: 0,
action: 3,
screenX: 100,
screenY: 200,
windowX: 100,
windowY: 200,
rawDeltaX: 200,
rawDeltaY: 200,
button: 2,
pressedButtons: [2],
axes: [],
pressedKeys: [0],
ctrlKey: false,
altKey: false,
shiftKey: false,
logoKey: false,
fnKey: false,
capsLock: false,
numLock: false,
scrollLock: false,
toolType: 1,
}
let mouseButtonUp: inputEventClient.MouseEventData = {
mouseEvent: mouseButtonUpData
}
inputEventClient.injectMouseEvent(mouseButtonUp);
let mouseButtonDownData: mouseEvent.MouseEvent = {
id: 0,
deviceId: 1,
actionTime: 2,
screenId: 1,
windowId: 0,
action: 2,
screenX: 100,
screenY: 200,
windowX: 100,
windowY: 200,
rawDeltaX: 200,
rawDeltaY: 200,
button: 2,
pressedButtons: [2],
axes: [],
pressedKeys: [0],
ctrlKey: false,
altKey: false,
shiftKey: false,
logoKey: false,
fnKey: false,
capsLock: false,
numLock: false,
scrollLock: false,
toolType: 1,
}
let mouseButtonDown: inputEventClient.MouseEventData = {
mouseEvent: mouseButtonDownData
};
inputEventClient.injectMouseEvent(mouseButtonDown);
}
catch (error) {
console.log(`Failed to inject MouseEvent, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```
## inputEventClient.injectTouchEvent11+
injectTouchEvent(touchEvent: TouchEventData): void
触摸屏事件注入。
**系统能力:** SystemCapability.MultimodalInput.Input.InputSimulator
**需要权限:** ohos.permission.INJECT_INPUT_EVENT
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | --------- |
| touchEvent | [TouchEventData](#toucheventdata11) | 是 | 触摸屏事件注入描述信息。 |
**错误码**:
以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| ---- | --------------------- |
| 202 | SystemAPI permission error. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
**示例:**
```js
import { TouchEvent } from '@kit.InputKit';
try {
let touchEvent: touchEvent.Touch = {
id: 1,
pressedTime: 1,
screenX: 0,
screenY: 0,
windowX: 0,
windowY: 0,
pressure: 0,
width: 0,
height: 0,
tiltX: 0,
tiltY: 0,
toolX: 0,
toolY: 0,
toolWidth: 0,
toolHeight: 0,
rawX: 0,
rawY: 0,
toolType: 0,
}
let touchEventUpData: touchEvent.TouchEvent = {
action: 1,
sourceType: 0,
touch: touchEvent,
touches: [],
id: 0,
deviceId: 0,
actionTime: 0,
screenId: 0,
windowId: 0
}
;
let touchEventUp: inputEventClient.TouchEventData = {
touchEvent: touchEventUpData
}
inputEventClient.injectTouchEvent(touchEventUp);
let touchEventDownData: touchEvent.TouchEvent = {
action: 1,
sourceType: 0,
touch: touchEvent,
touches: [],
id: 0,
deviceId: 0,
actionTime: 0,
screenId: 0,
windowId: 0
}
;
let touchEventDown: inputEventClient.TouchEventData = {
touchEvent: touchEventDownData
}
inputEventClient.injectTouchEvent(touchEventDown);
} catch (error) {
console.log(`Failed to inject touchEvent, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```
## inputEventClient.permitInjection12+
permitInjection(result: boolean): void
允许事件注入权限。
**系统能力:** SystemCapability.MultimodalInput.Input.InputSimulator
**需要权限:** ohos.permission.INJECT_INPUT_EVENT
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------ | ---- | --------- |
| result | boolean | 是 | 授权结果(true表示:允许事件注入,false表示:不允许事件注入)。 |
**错误码**:
以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| ---- | --------------------- |
| 202 | SystemAPI permission error. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
```ts
import { inputEventClient } from '@kit.InputKit';
try {
let result = true;
inputEventClient.permitInjection(result);
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## KeyEvent
按键注入描述信息。
**系统能力:** SystemCapability.MultimodalInput.Input.InputSimulator
| 名称 | 类型 | 可读 | 可写 | 说明 |
| --------- | ------ | ---- | ---- | ------- |
| isPressed | boolean | 是 | 否 | 按键是否按下。
true表示按键按下,false表示按键抬起。 |
| keyCode | number | 是 | 否 | 按键键码值。当前仅支持返回键/KEYCODE_BACK键。 |
| keyDownDuration | number | 是 | 否 | 按键按下持续时间,单位为微秒(μs)。 |
| isIntercepted | boolean | 是 | 否 | 按键是否可以被拦截。
true表示可以被拦截,false表示不可被拦截。 |
## KeyEventData11+
按键注入描述信息。
**系统能力:** SystemCapability.MultimodalInput.Input.InputSimulator
| 名称 | 类型 | 必填 | 说明 |
| --------- | ------ | ---- | ------- |
| keyEvent | [KeyEvent](#keyevent) | 是 | 按键注入描述信息。 |
## MouseEventData11+
鼠标注入描述信息。
**系统能力:** SystemCapability.MultimodalInput.Input.InputSimulator
| 名称 | 类型 | 可读 | 可写 | 说明 |
| --------- | ------ | ---- | ---- | ------- |
| mouseEvent | [MouseEvent](js-apis-mouseevent.md#mouseevent) | 是 | 否 | 鼠标注入描述信息。 |
## TouchEventData11+
触摸屏注入描述信息。
**系统能力:** SystemCapability.MultimodalInput.Input.InputSimulator
| 名称 | 类型 | 可读 | 可写 | 说明 |
| --------- | ------ | ---- | ---- | ------- |
| touchEvent | [TouchEvent](js-apis-touchevent.md#touchevent) | 是 | 否 | 触摸屏注入描述信息。 |