oh_input_manager.h

概述

提供事件注入和关键状态查询等功能。

系统能力: SystemCapability.MultimodalInput.Input.Core

库: libohinput.so

起始版本: 12

相关模块:Input

汇总

结构体

名称 描述
struct  Input_InterceptorEventCallback 拦截回调事件结构体,拦截鼠标事件、触摸事件和轴事件。
struct  Input_DeviceListener 定义一个结构体用于监听设备热插拔。

类型定义

名称 描述
typedef enum Input_KeyStateAction Input_KeyStateAction 按键状态的枚举值。
typedef enum Input_KeyEventAction Input_KeyEventAction 按键事件类型的枚举值。
typedef enum Input_MouseEventAction Input_MouseEventAction 鼠标动作的枚举值。
typedef enum InputEvent_MouseAxis InputEvent_MouseAxis 鼠标轴事件类型。
typedef enum Input_MouseEventButton Input_MouseEventButton 鼠标按键的枚举值。
typedef enum Input_TouchEventAction Input_TouchEventAction 触摸动作的枚举值。
typedef enum InputEvent_SourceType InputEvent_SourceType 输入事件源类型。
typedef enum Input_KeyboardType Input_KeyboardType 输入设备的键盘类型。
typedef struct Input_KeyState Input_KeyState 定义按键信息,用于标识按键行为。例如,“Ctrl”按键信息包含键值和键类型。
typedef struct Input_KeyEvent Input_KeyEvent 要注入的按键事件。
typedef struct Input_MouseEvent Input_MouseEvent 要注入的鼠标事件。
typedef struct Input_TouchEvent Input_TouchEvent 要注入的触摸事件。
typedef struct Input_AxisEvent Input_AxisEvent 轴事件。
typedef enum Input_Result Input_Result 错误码枚举值。
typedef void(* Input_KeyEventCallback) (const Input_KeyEvent *keyEvent) 按键事件的回调函数,keyEvent的生命周期为回调函数内。
typedef void(* Input_MouseEventCallback) (const Input_MouseEvent *mouseEvent) 鼠标事件的回调函数,mouseEvent的生命周期为回调函数内。
typedef void(* Input_TouchEventCallback) (const Input_TouchEvent *touchEvent) 触摸事件的回调函数,touchEvent的生命周期为回调函数内。
typedef void(* Input_AxisEventCallback) (const Input_AxisEvent *axisEvent) 轴事件的回调函数,axisEvent的生命周期为回调函数内。
typedef void(* Input_HotkeyCallback) (Input_Hotkey *hotkey) 回调函数,用于回调快捷键事件。
typedef void(* Input_DeviceAddedCallback) (int32_t deviceId) 回调函数,用于回调输入设备的热插事件。
typedef void(* Input_DeviceRemovedCallback) (int32_t deviceId) 回调函数,用于回调输入设备的热拔事件。
typedef struct Input_InterceptorEventCallback Input_InterceptorEventCallback 拦截回调事件结构体,拦截鼠标事件、触摸事件和轴事件。
typedef struct Input_DeviceListener Input_DeviceListener 定义一个结构体用于监听设备热插拔。
typedef struct Input_InterceptorOptions Input_InterceptorOptions 事件拦截选项。
typedef struct Input_Hotkey Input_Hotkey 定义快捷键结构体。
typedef struct Input_DeviceInfo Input_DeviceInfo 输入设备信息。

枚举

名称 描述
Input_KeyStateAction {
KEY_DEFAULT = -1, KEY_PRESSED = 0, KEY_RELEASED = 1, KEY_SWITCH_ON = 2,
KEY_SWITCH_OFF = 3
}
按键状态的枚举值。
Input_KeyEventAction { KEY_ACTION_CANCEL = 0, KEY_ACTION_DOWN = 1, KEY_ACTION_UP = 2 } 按键事件类型的枚举值。
Input_MouseEventAction {
MOUSE_ACTION_CANCEL = 0, MOUSE_ACTION_MOVE = 1, MOUSE_ACTION_BUTTON_DOWN = 2, MOUSE_ACTION_BUTTON_UP = 3,
MOUSE_ACTION_AXIS_BEGIN = 4, MOUSE_ACTION_AXIS_UPDATE = 5, MOUSE_ACTION_AXIS_END = 6
}
鼠标动作的枚举值。
InputEvent_MouseAxis { MOUSE_AXIS_SCROLL_VERTICAL = 0, MOUSE_AXIS_SCROLL_HORIZONTAL = 1 } 鼠标轴事件类型。
Input_MouseEventButton {
MOUSE_BUTTON_NONE = -1, MOUSE_BUTTON_LEFT = 0, MOUSE_BUTTON_MIDDLE = 1, MOUSE_BUTTON_RIGHT = 2,
MOUSE_BUTTON_FORWARD = 3, MOUSE_BUTTON_BACK = 4
}
鼠标按键的枚举值。
Input_TouchEventAction { TOUCH_ACTION_CANCEL = 0, TOUCH_ACTION_DOWN = 1, TOUCH_ACTION_MOVE = 2, TOUCH_ACTION_UP = 3 } 触摸动作的枚举值。
InputEvent_SourceType { SOURCE_TYPE_MOUSE = 1, SOURCE_TYPE_TOUCHSCREEN = 2, SOURCE_TYPE_TOUCHPAD = 3 } 输入事件源类型。
Input_KeyboardType {
KEYBOARD_TYPE_NONE = 0, KEYBOARD_TYPE_UNKNOWN = 1, KEYBOARD_TYPE_ALPHABETIC = 2, KEYBOARD_TYPE_DIGITAL = 3,
KEYBOARD_TYPE_STYLUS = 4, KEYBOARD_TYPE_REMOTE_CONTROL = 5
}
输入设备的键盘类型。
Input_Result {
INPUT_SUCCESS = 0, INPUT_PERMISSION_DENIED = 201, INPUT_NOT_SYSTEM_APPLICATION = 202, INPUT_PARAMETER_ERROR = 401, INPUT_DEVICE_NOT_SUPPORTED = 801, INPUT_SERVICE_EXCEPTION = 3800001, INPUT_REPEAT_INTERCEPTOR = 4200001, INPUT_OCCUPIED_BY_SYSTEM = 4200002, INPUT_OCCUPIED_BY_OTHER = 4200003
}
错误码枚举值。

函数

名称 描述
Input_Result OH_Input_GetKeyState (struct Input_KeyState *keyState) 查询按键状态的枚举对象。
struct Input_KeyState * OH_Input_CreateKeyState () 创建按键状态的枚举对象。
void OH_Input_DestroyKeyState (struct Input_KeyState **keyState) 销毁按键状态的枚举对象。
void OH_Input_SetKeyCode (struct Input_KeyState *keyState, int32_t keyCode) 设置按键状态对象的键值。
int32_t OH_Input_GetKeyCode (const struct Input_KeyState *keyState) 获取按键状态对象的键值。
void OH_Input_SetKeyPressed (struct Input_KeyState *keyState, int32_t keyAction) 设置按键状态对象的按键是否按下。
int32_t OH_Input_GetKeyPressed (const struct Input_KeyState *keyState) 获取按键状态对象的按键是否按下。
void OH_Input_SetKeySwitch (struct Input_KeyState *keyState, int32_t keySwitch) 设置按键状态对象的按键开关。
int32_t OH_Input_GetKeySwitch (const struct Input_KeyState *keyState) 获取按键状态对象的按键开关。
int32_t OH_Input_InjectKeyEvent (const struct Input_KeyEvent *keyEvent) 注入按键事件。
struct Input_KeyEvent * OH_Input_CreateKeyEvent () 创建按键事件对象。
void OH_Input_DestroyKeyEvent (struct Input_KeyEvent **keyEvent) 销毁按键事件对象。
void OH_Input_SetKeyEventAction (struct Input_KeyEvent *keyEvent, int32_t action) 设置按键事件类型。
int32_t OH_Input_GetKeyEventAction (const struct Input_KeyEvent *keyEvent) 获取按键事件类型。
void OH_Input_SetKeyEventKeyCode (struct Input_KeyEvent *keyEvent, int32_t keyCode) 设置按键事件的键值。
int32_t OH_Input_GetKeyEventKeyCode (const struct Input_KeyEvent *keyEvent) 获取按键事件的键值。
void OH_Input_SetKeyEventActionTime (struct Input_KeyEvent *keyEvent, int64_t actionTime) 设置按键事件发生的时间。
int64_t OH_Input_GetKeyEventActionTime (const struct Input_KeyEvent *keyEvent) 获取按键事件发生的时间。
void OH_Input_SetKeyEventWindowId (struct Input_KeyEvent *keyEvent, int32_t windowId) 设置按键事件的窗口Id。
int32_t OH_Input_GetKeyEventWindowId (const struct Input_KeyEvent *keyEvent) 获取按键事件的窗口Id。
void OH_Input_SetKeyEventDisplayId (struct Input_KeyEvent *keyEvent, int32_t displayId) 设置按键事件的屏幕Id。
int32_t OH_Input_GetKeyEventDisplayId (const struct Input_KeyEvent *keyEvent) 获取按键事件的屏幕Id。
int32_t OH_Input_InjectMouseEvent (const struct Input_MouseEvent *mouseEvent) 注入鼠标事件。
struct Input_MouseEvent * OH_Input_CreateMouseEvent () 创建鼠标事件对象。
void OH_Input_DestroyMouseEvent (struct Input_MouseEvent **mouseEvent) 销毁鼠标事件对象。
void OH_Input_SetMouseEventAction (struct Input_MouseEvent *mouseEvent, int32_t action) 设置鼠标事件的动作。
int32_t OH_Input_GetMouseEventAction (const struct Input_MouseEvent *mouseEvent) 获取鼠标事件的动作。
void OH_Input_SetMouseEventDisplayX (struct Input_MouseEvent *mouseEvent, int32_t displayX) 设置鼠标事件的屏幕X坐标。
int32_t OH_Input_GetMouseEventDisplayX (const struct Input_MouseEvent *mouseEvent) 获取鼠标事件的屏幕X坐标。
void OH_Input_SetMouseEventDisplayY (struct Input_MouseEvent *mouseEvent, int32_t displayY) 设置鼠标事件的屏幕Y坐标。
int32_t OH_Input_GetMouseEventDisplayY (const struct Input_MouseEvent *mouseEvent) 获取鼠标事件的屏幕Y坐标。
void OH_Input_SetMouseEventButton (struct Input_MouseEvent *mouseEvent, int32_t button) 设置鼠标事件的按键。
int32_t OH_Input_GetMouseEventButton (const struct Input_MouseEvent *mouseEvent) 获取鼠标事件的按键。
void OH_Input_SetMouseEventAxisType (struct Input_MouseEvent *mouseEvent, int32_t axisType) 设置鼠标轴事件的类型。
int32_t OH_Input_GetMouseEventAxisType (const struct Input_MouseEvent *mouseEvent) 获取鼠标轴事件的类型。
void OH_Input_SetMouseEventAxisValue (struct Input_MouseEvent *mouseEvent, float axisValue) 设置鼠标轴事件的值。
float OH_Input_GetMouseEventAxisValue (const struct Input_MouseEvent *mouseEvent) 获取鼠标轴事件的值。
void OH_Input_SetMouseEventActionTime (struct Input_MouseEvent *mouseEvent, int64_t actionTime) 设置鼠标事件发生的时间。
int64_t OH_Input_GetMouseEventActionTime (const struct Input_MouseEvent *mouseEvent) 获取鼠标事件发生的时间。
void OH_Input_SetMouseEventWindowId (struct Input_MouseEvent *mouseEvent, int32_t windowId) 设置鼠标事件的窗口Id。
int32_t OH_Input_GetMouseEventWindowId (const struct Input_MouseEvent *mouseEvent) 获取鼠标事件的窗口Id。
void OH_Input_SetMouseEventDisplayId (struct Input_MouseEvent *mouseEvent, int32_t displayId) 设置鼠标事件的屏幕Id。
int32_t OH_Input_GetMouseEventDisplayId (const struct Input_MouseEvent *mouseEvent) 获取鼠标事件的屏幕Id。
int32_t OH_Input_InjectTouchEvent (const struct Input_TouchEvent *touchEvent) 注入触摸事件。
struct Input_TouchEvent * OH_Input_CreateTouchEvent () 创建触屏事件对象。
void OH_Input_DestroyTouchEvent (struct Input_TouchEvent **touchEvent) 销毁触屏事件对象。
void OH_Input_SetTouchEventAction (struct Input_TouchEvent *touchEvent, int32_t action) 设置触屏事件的动作。
int32_t OH_Input_GetTouchEventAction (const struct Input_TouchEvent *touchEvent) 获取触屏事件的动作。
void OH_Input_SetTouchEventFingerId (struct Input_TouchEvent *touchEvent, int32_t id) 设置触屏事件的手指ID。
int32_t OH_Input_GetTouchEventFingerId (const struct Input_TouchEvent *touchEvent) 获取触屏事件的手指ID。
void OH_Input_SetTouchEventDisplayX (struct Input_TouchEvent *touchEvent, int32_t displayX) 设置触屏事件的屏幕X坐标。
int32_t OH_Input_GetTouchEventDisplayX (const struct Input_TouchEvent *touchEvent) 获取触屏事件的屏幕X坐标。
void OH_Input_SetTouchEventDisplayY (struct Input_TouchEvent *touchEvent, int32_t displayY) 设置触屏事件的屏幕Y坐标。
int32_t OH_Input_GetTouchEventDisplayY (const struct Input_TouchEvent *touchEvent) 获取触屏事件的屏幕Y坐标。
void OH_Input_SetTouchEventActionTime (struct Input_TouchEvent *touchEvent, int64_t actionTime) 设置触摸事件发生的时间。
int64_t OH_Input_GetTouchEventActionTime (const struct Input_TouchEvent *touchEvent) 获取触摸事件发生的时间。
void OH_Input_SetTouchEventWindowId (struct Input_TouchEvent *touchEvent, int32_t windowId) 设置触屏事件的窗口Id。
int32_t OH_Input_GetTouchEventWindowId (const struct Input_TouchEvent *touchEvent) 获取触屏事件的窗口Id。
void OH_Input_SetTouchEventDisplayId (struct Input_TouchEvent *touchEvent, int32_t displayId) 设置触屏事件的屏幕Id。
int32_t OH_Input_GetTouchEventDisplayId (const struct Input_TouchEvent *touchEvent) 获取触屏事件的屏幕Id。
void OH_Input_CancelInjection () 取消事件注入并撤销授权。
Input_AxisEvent * OH_Input_CreateAxisEvent (void) 创建轴事件对象实例。
Input_Result OH_Input_DestroyAxisEvent (Input_AxisEvent **axisEvent) 销毁轴事件对象实例。
Input_Result OH_Input_SetAxisEventAction (Input_AxisEvent *axisEvent, InputEvent_AxisAction action) 设置轴事件的动作。
Input_Result OH_Input_GetAxisEventAction (const Input_AxisEvent *axisEvent, InputEvent_AxisAction *action) 获取轴事件的动作。
Input_Result OH_Input_SetAxisEventDisplayX (Input_AxisEvent *axisEvent, float displayX) 设置轴事件的X坐标。
Input_Result OH_Input_GetAxisEventDisplayX (const Input_AxisEvent *axisEvent, float *displayX) 获取轴事件的X坐标。
Input_Result OH_Input_SetAxisEventDisplayY (Input_AxisEvent *axisEvent, float displayY) 设置轴事件的Y坐标。
Input_Result OH_Input_GetAxisEventDisplayY (const Input_AxisEvent *axisEvent, float *displayY) 获取轴事件的Y坐标。
Input_Result OH_Input_SetAxisEventAxisValue (Input_AxisEvent *axisEvent, InputEvent_AxisType axisType, double axisValue) 设置轴事件指定轴类型的轴值。
Input_Result OH_Input_GetAxisEventAxisValue (const Input_AxisEvent *axisEvent, InputEvent_AxisType axisType, double *axisValue) 获取轴事件指定轴类型的轴值。
Input_Result OH_Input_SetAxisEventActionTime (Input_AxisEvent *axisEvent, int64_t actionTime) 设置轴事件发生的时间。
Input_Result OH_Input_GetAxisEventActionTime (const Input_AxisEvent *axisEvent, int64_t *actionTime) 获取轴事件发生的时间。
Input_Result OH_Input_SetAxisEventType (Input_AxisEvent *axisEvent, InputEvent_AxisEventType axisEventType) 设置轴事件类型。
Input_Result OH_Input_GetAxisEventType (const Input_AxisEvent *axisEvent, InputEvent_AxisEventType *axisEventType) 获取轴事件类型。
Input_Result OH_Input_SetAxisEventSourceType (Input_AxisEvent *axisEvent, InputEvent_SourceType sourceType) 设置轴事件源类型。
Input_Result OH_Input_GetAxisEventSourceType (const Input_AxisEvent *axisEvent, InputEvent_SourceType *sourceType) 获取轴事件源类型。
Input_Result OH_Input_SetAxisEventWindowId (Input_AxisEvent *axisEvent, int32_t windowId) 设置轴事件的窗口Id。
Input_Result OH_Input_GetAxisEventWindowId (const Input_AxisEvent *axisEvent, int32_t *windowId) 获取轴事件的窗口Id。
Input_Result OH_Input_SetAxisEventDisplayId (Input_AxisEvent *axisEvent, int32_t displayId) 设置轴事件的屏幕Id。
Input_Result OH_Input_GetAxisEventDisplayId (const Input_AxisEvent *axisEvent, int32_t *displayId) 获取轴事件的屏幕Id。
Input_Result OH_Input_AddKeyEventMonitor (Input_KeyEventCallback callback) 添加按键事件监听。
Input_Result OH_Input_AddMouseEventMonitor (Input_MouseEventCallback callback) 添加鼠标事件监听,包含鼠标点击,移动,不包含滚轮事件,滚轮事件归属于轴事件。
Input_Result OH_Input_AddTouchEventMonitor (Input_TouchEventCallback callback) 添加触摸事件监听。
Input_Result OH_Input_AddAxisEventMonitorForAll (Input_AxisEventCallback callback) 添加所有类型轴事件监听,轴事件类型定义在InputEvent_AxisEventType中。
Input_Result OH_Input_AddAxisEventMonitor (InputEvent_AxisEventType axisEventType, Input_AxisEventCallback callback) 添加指定类型的轴事件监听,轴事件类型定义在InputEvent_AxisEventType中。
Input_Result OH_Input_RemoveKeyEventMonitor (Input_KeyEventCallback callback) 移除按键事件监听。
Input_Result OH_Input_RemoveMouseEventMonitor (Input_MouseEventCallback callback) 移除鼠标事件监听。
Input_Result OH_Input_RemoveTouchEventMonitor (Input_TouchEventCallback callback) 移除触摸事件监听。
Input_Result OH_Input_RemoveAxisEventMonitorForAll (Input_AxisEventCallback callback) 移除所有类型轴事件监听。
Input_Result OH_Input_RemoveAxisEventMonitor (InputEvent_AxisEventType axisEventType, Input_AxisEventCallback callback) 移除指定类型轴事件监听,轴事件类型定义在InputEvent_AxisEventType中。
Input_Result OH_Input_AddKeyEventInterceptor (Input_KeyEventCallback callback, Input_InterceptorOptions *option) 添加按键事件的拦截,重复添加只有第一次生效。
Input_Result OH_Input_AddInputEventInterceptor (Input_InterceptorEventCallback *callback Input_InterceptorOptions *option) 添加输入事件拦截,包括鼠标、触摸和轴事件,重复添加只有第一次生效。
Input_Result OH_Input_RemoveKeyEventInterceptor () 移除按键事件拦截。
Input_Result OH_Input_RemoveInputEventInterceptor () 移除输入事件拦截,包括鼠标、触摸和轴事件。
int32_t OH_Input_GetIntervalSinceLastInput (int64_t *timeInterval) 获取距离上次系统输入事件的时间间隔。
Input_Hotkey * OH_Input_CreateHotkey () 创建快捷键对象的实例。
void OH_Input_DestroyHotkey (Input_Hotkey **hotkey) 销毁快捷键对象的实例。
void OH_Input_SetPreKeys (Input_Hotkey *hotkey, int32_t *preKeys, int32_t size) 设置修饰键。
Input_Result OH_Input_GetPreKeys (const Input_Hotkey *hotkey, int32_t **preKeys, int32_t *preKeyCount) 获取修饰键。
void OH_Input_SetFinalKey (Input_Hotkey *hotkey, int32_t finalKey) 设置被修饰键。
Input_Result OH_Input_GetFinalKey (const Input_Hotkey *hotkey, int32_t *finalKeyCode) 获取被修饰键。
Input_Hotkey ** OH_Input_CreateAllSystemHotkeys (int32_t count) 创建Input_Hotkey类型实例的数组。
void OH_Input_DestroyAllSystemHotkeys (Input_Hotkey **hotkeys, int32_t count) 销毁Input_Hotkey实例数组并回收内存。
Input_Result OH_Input_GetAllSystemHotkeys (Input_Hotkey **hotkey, int32_t *count) 获取设置的所有快捷键。
void OH_Input_SetRepeat (Input_Hotkey *hotkey, bool isRepeat) 设置是否上报重复key事件。
Input_Result OH_Input_GetRepeat (const Input_Hotkey *hotkey, bool *isRepeat) 获取是否上报重复key事件。
Input_Result OH_Input_AddHotkeyMonitor (const Input_Hotkey *hotkey, Input_HotkeyCallback callback) 订阅快捷键事件。此接口在智能穿戴、轻量级智能穿戴设备不生效。
Input_Result OH_Input_RemoveHotkeyMonitor (const Input_Hotkey *hotkey, Input_HotkeyCallback callback) 取消订阅快捷键。
Input_Result OH_Input_GetDeviceIds (int32_t *deviceIds, int32_t inSize, int32_t *outSize) 获取所有输入设备的ID列表。
Input_Result OH_Input_GetDevice (int32_t deviceId, Input_DeviceInfo **deviceInfo) 获取输入设备信息。
Input_DeviceInfo * OH_Input_CreateDeviceInfo (void) 创建输入设备信息的对象。
void OH_Input_DestroyDeviceInfo (Input_DeviceInfo **deviceInfo) 销毁输入设备信息的对象。
Input_Result OH_Input_GetKeyboardType (int32_t deviceId, int32_t *keyboardType) 获取输入设备的键盘类型。
Input_Result OH_Input_GetDeviceId (Input_DeviceInfo *deviceInfo, int32_t *id) 获取输入设备的id。
Input_Result OH_Input_GetDeviceName (Input_DeviceInfo *deviceInfo, char **name) 获取输入设备的名称。
Input_Result OH_Input_GetCapabilities (Input_DeviceInfo *deviceInfo, int32_t *capabilities) 获取有关输入设备能力信息,比如设备是触摸屏、触控板、键盘等。
Input_Result OH_Input_GetDeviceVersion (Input_DeviceInfo *deviceInfo, int32_t *version) 获取输入设备的版本信息。
Input_Result OH_Input_GetDeviceProduct (Input_DeviceInfo *deviceInfo, int32_t *product) 获取输入设备的产品信息。
Input_Result OH_Input_GetDeviceVendor (Input_DeviceInfo *deviceInfo, int32_t *vendor) 获取输入设备的厂商信息。
Input_Result OH_Input_GetDeviceAddress (Input_DeviceInfo *deviceInfo, char **address) 获取输入设备的物理地址。
Input_Result OH_Input_RegisterDeviceListener (Input_DeviceListener *listener) 注册设备热插拔的监听器。
Input_Result OH_Input_UnregisterDeviceListener (Input_DeviceListener *listener) 取消注册设备热插拔的监听。
Input_Result OH_Input_UnregisterDeviceListeners () 取消注册所有的设备热插拔的监听。
Input_Result OH_Input_GetFunctionKeyState (int32_t keyCode, int32_t *state) 获取功能键状态。