1e41f4b71Sopenharmony_ci# Input 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci 4e41f4b71Sopenharmony_ci## 概述 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ciInput模块驱动接口声明。 7e41f4b71Sopenharmony_ci 8e41f4b71Sopenharmony_ci本模块为Input服务提供相关驱动接口,包括Input设备的打开和关闭、Input事件获取、设备信息查询、回调函数注册、特性状态控制等接口。 9e41f4b71Sopenharmony_ci 10e41f4b71Sopenharmony_ci**起始版本:** 1.0 11e41f4b71Sopenharmony_ci 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ci## 汇总 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci 16e41f4b71Sopenharmony_ci### 文件 17e41f4b71Sopenharmony_ci 18e41f4b71Sopenharmony_ci| 名称 | 描述 | 19e41f4b71Sopenharmony_ci| -------- | -------- | 20e41f4b71Sopenharmony_ci| [input_controller.h](input__controller_8h.md) | 描述Input设备业务控制相关的接口声明。 | 21e41f4b71Sopenharmony_ci| [input_manager.h](input__manager_8h.md) | 描述Input设备管理相关的接口声明。 | 22e41f4b71Sopenharmony_ci| [input_reporter.h](input__reporter_8h.md) | 描述Input设备数据上报相关的接口声明。 | 23e41f4b71Sopenharmony_ci| [input_type.h](input__type_8h.md) | Input设备相关的类型定义,定义了Input设备驱动接口所使用的结构体及枚举类型。 | 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci 26e41f4b71Sopenharmony_ci### 类 27e41f4b71Sopenharmony_ci 28e41f4b71Sopenharmony_ci| 名称 | 描述 | 29e41f4b71Sopenharmony_ci| -------- | -------- | 30e41f4b71Sopenharmony_ci| struct [InputController](_input_controller.md) | 提供Input设备业务控制相关的接口。 | 31e41f4b71Sopenharmony_ci| struct [InputManager](_input_manager.md) | 提供Input设备管理相关的接口。 | 32e41f4b71Sopenharmony_ci| struct [IInputInterface](_i_input_interface.md) | 定义用于提供Input设备驱动程序功能的接口。 | 33e41f4b71Sopenharmony_ci| struct [InputReporter](_input_reporter.md) | 提供Input设备数据上报相关的接口。 | 34e41f4b71Sopenharmony_ci| struct [InputEventPackage](_input_event_package.md) | Input事件数据包结构。 | 35e41f4b71Sopenharmony_ci| struct [InputHotPlugEvent](_input_hot_plug_event.md) | 热插拔事件数据包结构。 | 36e41f4b71Sopenharmony_ci| struct [InputDevDesc](_input_dev_desc.md) | Input设备描述信息。 | 37e41f4b71Sopenharmony_ci| struct [InputEventCb](_input_event_cb.md) | 此结构体定义了输入事件回调函数并提供给Input服务使用。 | 38e41f4b71Sopenharmony_ci| struct [InputHostCb](_input_host_cb.md) | 此结构体定义了热插拔事件上报回调函数并提供给Input服务使用。 | 39e41f4b71Sopenharmony_ci| struct [InputDevAbility](_input_dev_ability.md) | Input设备的能力属性,存储支持事件的位图。 | 40e41f4b71Sopenharmony_ci| struct [InputDimensionInfo](_input_dimension_info.md) | Input设备的维度信息。 | 41e41f4b71Sopenharmony_ci| struct [InputDevIdentify](_input_dev_identify.md) | Input设备的识别信息。 | 42e41f4b71Sopenharmony_ci| struct [InputDevAttr](_input_dev_attr.md) | Input设备属性。 | 43e41f4b71Sopenharmony_ci| struct [InputDeviceInfo](_input_device_info.md) | Input设备基础设备信息。 | 44e41f4b71Sopenharmony_ci| struct [InputExtraCmd](_input_extra_cmd.md) | 扩展指令的数据结构。 | 45e41f4b71Sopenharmony_ci 46e41f4b71Sopenharmony_ci 47e41f4b71Sopenharmony_ci### 宏定义 48e41f4b71Sopenharmony_ci 49e41f4b71Sopenharmony_ci| 名称 | 描述 | 50e41f4b71Sopenharmony_ci| -------- | -------- | 51e41f4b71Sopenharmony_ci| [MAX_INPUT_DEV_NUM](#max_input_dev_num) 32 | Input设备数量的最大值。 | 52e41f4b71Sopenharmony_ci| [CHIP_INFO_LEN](#chip_info_len) 10 | 芯片信息长度。 | 53e41f4b71Sopenharmony_ci| [CHIP_NAME_LEN](#chip_name_len) 10 | 芯片名称长度。 | 54e41f4b71Sopenharmony_ci| [VENDOR_NAME_LEN](#vendor_name_len) 10 | 厂商名称长度。 | 55e41f4b71Sopenharmony_ci| [DEV_NAME_LEN](#dev_name_len) 64 | Input设备名称长度。 | 56e41f4b71Sopenharmony_ci| [SELF_TEST_RESULT_LEN](#self_test_result_len) 20 | 自测结果长度。 | 57e41f4b71Sopenharmony_ci| [DEV_MANAGER_SERVICE_NAME](#dev_manager_service_name) "hdf_input_host" | Input设备节点服务名称。 | 58e41f4b71Sopenharmony_ci| [DIV_ROUND_UP](#div_round_up)(nr, d) (((nr) + (d) - 1) / (d)) | 向上取整计算公式。 | 59e41f4b71Sopenharmony_ci| [BYTE_HAS_BITS](#byte_has_bits) 8 | 一个字节所包含的比特数。 | 60e41f4b71Sopenharmony_ci| [BITS_TO_UINT64](#bits_to_uint64)(count) [DIV_ROUND_UP](#div_round_up)(count, [BYTE_HAS_BITS](#byte_has_bits) \* sizeof(uint64_t)) | 比特与64位无符号整数的转换公式。 | 61e41f4b71Sopenharmony_ci| [HDF_FF_CNT](#hdf_ff_cnt) (0x7f + 1) | Input设备发送力反馈命令的数量最大值。 | 62e41f4b71Sopenharmony_ci 63e41f4b71Sopenharmony_ci 64e41f4b71Sopenharmony_ci### 枚举 65e41f4b71Sopenharmony_ci 66e41f4b71Sopenharmony_ci| 名称 | 描述 | 67e41f4b71Sopenharmony_ci| -------- | -------- | 68e41f4b71Sopenharmony_ci| [RetStatus](#retstatus) { INPUT_SUCCESS = 0, INPUT_FAILURE = -1, INPUT_INVALID_PARAM = -2, INPUT_NOMEM = -3, INPUT_NULL_PTR = -4, INPUT_TIMEOUT = -5, INPUT_UNSUPPORTED = -6 } | 定义返回值类型。 | 69e41f4b71Sopenharmony_ci| [InputDevType](#inputdevtype) { INDEV_TYPE_TOUCH, INDEV_TYPE_KEY, INDEV_TYPE_KEYBOARD, INDEV_TYPE_MOUSE, INDEV_TYPE_BUTTON, INDEV_TYPE_CROWN, INDEV_TYPE_ENCODER, INDEV_TYPE_UNKNOWN } | 定义Input设备类型。 | 70e41f4b71Sopenharmony_ci| [PowerStatus](#powerstatus) { INPUT_RESUME, INPUT_SUSPEND, INPUT_LOW_POWER, INPUT_POWER_STATUS_UNKNOWN } | 定义电源状态。 | 71e41f4b71Sopenharmony_ci| [CapacitanceTest](#capacitancetest) { BASE_TEST, FULL_TEST, MMI_TEST, RUNNING_TEST, TEST_TYPE_UNKNOWN } | 定义容值测试类型。 | 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_ci 74e41f4b71Sopenharmony_ci### 函数 75e41f4b71Sopenharmony_ci 76e41f4b71Sopenharmony_ci| 名称 | 描述 | 77e41f4b71Sopenharmony_ci| -------- | -------- | 78e41f4b71Sopenharmony_ci| int32_t [GetInputInterface](#getinputinterface) ([IInputInterface](_i_input_interface.md) \*\*interface) | Input服务通过调用此接口获取操作Input设备的所有接口。 | 79e41f4b71Sopenharmony_ci 80e41f4b71Sopenharmony_ci 81e41f4b71Sopenharmony_ci## 宏定义说明 82e41f4b71Sopenharmony_ci 83e41f4b71Sopenharmony_ci 84e41f4b71Sopenharmony_ci### BITS_TO_UINT64 85e41f4b71Sopenharmony_ci 86e41f4b71Sopenharmony_ci``` 87e41f4b71Sopenharmony_ci#define BITS_TO_UINT64( count) DIV_ROUND_UP(count, BYTE_HAS_BITS * sizeof(uint64_t)) 88e41f4b71Sopenharmony_ci``` 89e41f4b71Sopenharmony_ci 90e41f4b71Sopenharmony_ci**描述** 91e41f4b71Sopenharmony_ci 92e41f4b71Sopenharmony_ci 93e41f4b71Sopenharmony_ci比特与64位无符号整数的转换公式 94e41f4b71Sopenharmony_ci 95e41f4b71Sopenharmony_ci 96e41f4b71Sopenharmony_ci### BYTE_HAS_BITS 97e41f4b71Sopenharmony_ci 98e41f4b71Sopenharmony_ci``` 99e41f4b71Sopenharmony_ci#define BYTE_HAS_BITS 8 100e41f4b71Sopenharmony_ci``` 101e41f4b71Sopenharmony_ci 102e41f4b71Sopenharmony_ci**描述** 103e41f4b71Sopenharmony_ci 104e41f4b71Sopenharmony_ci 105e41f4b71Sopenharmony_ci一个字节所包含的比特数 106e41f4b71Sopenharmony_ci 107e41f4b71Sopenharmony_ci 108e41f4b71Sopenharmony_ci### CHIP_INFO_LEN 109e41f4b71Sopenharmony_ci 110e41f4b71Sopenharmony_ci``` 111e41f4b71Sopenharmony_ci#define CHIP_INFO_LEN 10 112e41f4b71Sopenharmony_ci``` 113e41f4b71Sopenharmony_ci 114e41f4b71Sopenharmony_ci**描述** 115e41f4b71Sopenharmony_ci 116e41f4b71Sopenharmony_ci 117e41f4b71Sopenharmony_ci芯片信息长度 118e41f4b71Sopenharmony_ci 119e41f4b71Sopenharmony_ci 120e41f4b71Sopenharmony_ci### CHIP_NAME_LEN 121e41f4b71Sopenharmony_ci 122e41f4b71Sopenharmony_ci``` 123e41f4b71Sopenharmony_ci#define CHIP_NAME_LEN 10 124e41f4b71Sopenharmony_ci``` 125e41f4b71Sopenharmony_ci 126e41f4b71Sopenharmony_ci**描述** 127e41f4b71Sopenharmony_ci 128e41f4b71Sopenharmony_ci 129e41f4b71Sopenharmony_ci芯片名称长度 130e41f4b71Sopenharmony_ci 131e41f4b71Sopenharmony_ci 132e41f4b71Sopenharmony_ci### DEV_MANAGER_SERVICE_NAME 133e41f4b71Sopenharmony_ci 134e41f4b71Sopenharmony_ci``` 135e41f4b71Sopenharmony_ci#define DEV_MANAGER_SERVICE_NAME "hdf_input_host" 136e41f4b71Sopenharmony_ci``` 137e41f4b71Sopenharmony_ci 138e41f4b71Sopenharmony_ci**描述** 139e41f4b71Sopenharmony_ci 140e41f4b71Sopenharmony_ci 141e41f4b71Sopenharmony_ciInput设备节点服务名称 142e41f4b71Sopenharmony_ci 143e41f4b71Sopenharmony_ci 144e41f4b71Sopenharmony_ci### DEV_NAME_LEN 145e41f4b71Sopenharmony_ci 146e41f4b71Sopenharmony_ci``` 147e41f4b71Sopenharmony_ci#define DEV_NAME_LEN 64 148e41f4b71Sopenharmony_ci``` 149e41f4b71Sopenharmony_ci 150e41f4b71Sopenharmony_ci**描述** 151e41f4b71Sopenharmony_ci 152e41f4b71Sopenharmony_ci 153e41f4b71Sopenharmony_ciInput设备名称长度 154e41f4b71Sopenharmony_ci 155e41f4b71Sopenharmony_ci 156e41f4b71Sopenharmony_ci### DIV_ROUND_UP 157e41f4b71Sopenharmony_ci 158e41f4b71Sopenharmony_ci``` 159e41f4b71Sopenharmony_ci#define DIV_ROUND_UP( nr, d ) (((nr) + (d) - 1) / (d)) 160e41f4b71Sopenharmony_ci``` 161e41f4b71Sopenharmony_ci 162e41f4b71Sopenharmony_ci**描述** 163e41f4b71Sopenharmony_ci 164e41f4b71Sopenharmony_ci 165e41f4b71Sopenharmony_ci向上取整计算公式 166e41f4b71Sopenharmony_ci 167e41f4b71Sopenharmony_ci 168e41f4b71Sopenharmony_ci### HDF_FF_CNT 169e41f4b71Sopenharmony_ci 170e41f4b71Sopenharmony_ci``` 171e41f4b71Sopenharmony_ci#define HDF_FF_CNT (0x7f + 1) 172e41f4b71Sopenharmony_ci``` 173e41f4b71Sopenharmony_ci 174e41f4b71Sopenharmony_ci**描述** 175e41f4b71Sopenharmony_ci 176e41f4b71Sopenharmony_ci 177e41f4b71Sopenharmony_ciInput设备发送力反馈命令的数量最大值 178e41f4b71Sopenharmony_ci 179e41f4b71Sopenharmony_ci 180e41f4b71Sopenharmony_ci### MAX_INPUT_DEV_NUM 181e41f4b71Sopenharmony_ci 182e41f4b71Sopenharmony_ci``` 183e41f4b71Sopenharmony_ci#define MAX_INPUT_DEV_NUM 32 184e41f4b71Sopenharmony_ci``` 185e41f4b71Sopenharmony_ci 186e41f4b71Sopenharmony_ci**描述** 187e41f4b71Sopenharmony_ci 188e41f4b71Sopenharmony_ci 189e41f4b71Sopenharmony_ciInput设备数量的最大值 190e41f4b71Sopenharmony_ci 191e41f4b71Sopenharmony_ci 192e41f4b71Sopenharmony_ci### SELF_TEST_RESULT_LEN 193e41f4b71Sopenharmony_ci 194e41f4b71Sopenharmony_ci``` 195e41f4b71Sopenharmony_ci#define SELF_TEST_RESULT_LEN 20 196e41f4b71Sopenharmony_ci``` 197e41f4b71Sopenharmony_ci 198e41f4b71Sopenharmony_ci**描述** 199e41f4b71Sopenharmony_ci 200e41f4b71Sopenharmony_ci 201e41f4b71Sopenharmony_ci自测试结果长度 202e41f4b71Sopenharmony_ci 203e41f4b71Sopenharmony_ci 204e41f4b71Sopenharmony_ci### VENDOR_NAME_LEN 205e41f4b71Sopenharmony_ci 206e41f4b71Sopenharmony_ci``` 207e41f4b71Sopenharmony_ci#define VENDOR_NAME_LEN 10 208e41f4b71Sopenharmony_ci``` 209e41f4b71Sopenharmony_ci 210e41f4b71Sopenharmony_ci**描述** 211e41f4b71Sopenharmony_ci 212e41f4b71Sopenharmony_ci 213e41f4b71Sopenharmony_ci厂商名称长度 214e41f4b71Sopenharmony_ci 215e41f4b71Sopenharmony_ci 216e41f4b71Sopenharmony_ci## 枚举类型说明 217e41f4b71Sopenharmony_ci 218e41f4b71Sopenharmony_ci 219e41f4b71Sopenharmony_ci### CapacitanceTest 220e41f4b71Sopenharmony_ci 221e41f4b71Sopenharmony_ci``` 222e41f4b71Sopenharmony_cienum CapacitanceTest 223e41f4b71Sopenharmony_ci``` 224e41f4b71Sopenharmony_ci 225e41f4b71Sopenharmony_ci**描述** 226e41f4b71Sopenharmony_ci 227e41f4b71Sopenharmony_ci 228e41f4b71Sopenharmony_ci定义容值测试类型。 229e41f4b71Sopenharmony_ci 230e41f4b71Sopenharmony_ci**起始版本:** 1.0 231e41f4b71Sopenharmony_ci 232e41f4b71Sopenharmony_ci| 枚举值 | 描述 | 233e41f4b71Sopenharmony_ci| -------- | -------- | 234e41f4b71Sopenharmony_ci| BASE_TEST | 基础容值测试 | 235e41f4b71Sopenharmony_ci| FULL_TEST | 全量容值自检测试 | 236e41f4b71Sopenharmony_ci| MMI_TEST | MMI容值测试 | 237e41f4b71Sopenharmony_ci| RUNNING_TEST | 老化容值测试 | 238e41f4b71Sopenharmony_ci| TEST_TYPE_UNKNOWN | 未知的测试类型 | 239e41f4b71Sopenharmony_ci 240e41f4b71Sopenharmony_ci 241e41f4b71Sopenharmony_ci### InputDevType 242e41f4b71Sopenharmony_ci 243e41f4b71Sopenharmony_ci``` 244e41f4b71Sopenharmony_cienum InputDevType 245e41f4b71Sopenharmony_ci``` 246e41f4b71Sopenharmony_ci 247e41f4b71Sopenharmony_ci**描述** 248e41f4b71Sopenharmony_ci 249e41f4b71Sopenharmony_ci 250e41f4b71Sopenharmony_ci定义Input设备类型。 251e41f4b71Sopenharmony_ci 252e41f4b71Sopenharmony_ci**起始版本:** 1.0 253e41f4b71Sopenharmony_ci 254e41f4b71Sopenharmony_ci| 枚举值 | 描述 | 255e41f4b71Sopenharmony_ci| -------- | -------- | 256e41f4b71Sopenharmony_ci| INDEV_TYPE_TOUCH | 触摸屏 | 257e41f4b71Sopenharmony_ci| INDEV_TYPE_KEY | 物理按键 | 258e41f4b71Sopenharmony_ci| INDEV_TYPE_KEYBOARD | 键盘 | 259e41f4b71Sopenharmony_ci| INDEV_TYPE_MOUSE | 鼠标 | 260e41f4b71Sopenharmony_ci| INDEV_TYPE_BUTTON | 虚拟按键 | 261e41f4b71Sopenharmony_ci| INDEV_TYPE_CROWN | 表冠 | 262e41f4b71Sopenharmony_ci| INDEV_TYPE_ENCODER | 自定义编码的特定功能或者事件 | 263e41f4b71Sopenharmony_ci| INDEV_TYPE_UNKNOWN | 未知输入设备类型 | 264e41f4b71Sopenharmony_ci 265e41f4b71Sopenharmony_ci 266e41f4b71Sopenharmony_ci### PowerStatus 267e41f4b71Sopenharmony_ci 268e41f4b71Sopenharmony_ci``` 269e41f4b71Sopenharmony_cienum PowerStatus 270e41f4b71Sopenharmony_ci``` 271e41f4b71Sopenharmony_ci 272e41f4b71Sopenharmony_ci**描述** 273e41f4b71Sopenharmony_ci 274e41f4b71Sopenharmony_ci 275e41f4b71Sopenharmony_ci定义电源状态。 276e41f4b71Sopenharmony_ci 277e41f4b71Sopenharmony_ci**起始版本:** 1.0 278e41f4b71Sopenharmony_ci 279e41f4b71Sopenharmony_ci| 枚举值 | 描述 | 280e41f4b71Sopenharmony_ci| -------- | -------- | 281e41f4b71Sopenharmony_ci| INPUT_RESUME | 正常唤醒 | 282e41f4b71Sopenharmony_ci| INPUT_SUSPEND | 休眠下电模式 | 283e41f4b71Sopenharmony_ci| INPUT_LOW_POWER | 休眠低功耗模式 | 284e41f4b71Sopenharmony_ci| INPUT_POWER_STATUS_UNKNOWN | 未知电源状态 | 285e41f4b71Sopenharmony_ci 286e41f4b71Sopenharmony_ci 287e41f4b71Sopenharmony_ci### RetStatus 288e41f4b71Sopenharmony_ci 289e41f4b71Sopenharmony_ci``` 290e41f4b71Sopenharmony_cienum RetStatus 291e41f4b71Sopenharmony_ci``` 292e41f4b71Sopenharmony_ci 293e41f4b71Sopenharmony_ci**描述** 294e41f4b71Sopenharmony_ci 295e41f4b71Sopenharmony_ci 296e41f4b71Sopenharmony_ci定义返回值类型。 297e41f4b71Sopenharmony_ci 298e41f4b71Sopenharmony_ci**起始版本:** 1.0 299e41f4b71Sopenharmony_ci 300e41f4b71Sopenharmony_ci| 枚举值 | 描述 | 301e41f4b71Sopenharmony_ci| -------- | -------- | 302e41f4b71Sopenharmony_ci| INPUT_SUCCESS | 成功 | 303e41f4b71Sopenharmony_ci| INPUT_FAILURE | 失败 | 304e41f4b71Sopenharmony_ci| INPUT_INVALID_PARAM | 无效参数 | 305e41f4b71Sopenharmony_ci| INPUT_NOMEM | 内存不足 | 306e41f4b71Sopenharmony_ci| INPUT_NULL_PTR | 空指针 | 307e41f4b71Sopenharmony_ci| INPUT_TIMEOUT | 执行超时 | 308e41f4b71Sopenharmony_ci| INPUT_UNSUPPORTED | 特性不支持 | 309e41f4b71Sopenharmony_ci 310e41f4b71Sopenharmony_ci 311e41f4b71Sopenharmony_ci## 函数说明 312e41f4b71Sopenharmony_ci 313e41f4b71Sopenharmony_ci 314e41f4b71Sopenharmony_ci### GetInputInterface() 315e41f4b71Sopenharmony_ci 316e41f4b71Sopenharmony_ci``` 317e41f4b71Sopenharmony_ciint32_t GetInputInterface (IInputInterface ** interface) 318e41f4b71Sopenharmony_ci``` 319e41f4b71Sopenharmony_ci 320e41f4b71Sopenharmony_ci**描述** 321e41f4b71Sopenharmony_ci 322e41f4b71Sopenharmony_ci 323e41f4b71Sopenharmony_ciInput服务通过调用此接口获取操作Input设备的所有接口。 324e41f4b71Sopenharmony_ci 325e41f4b71Sopenharmony_ci**起始版本:** 1.0 326e41f4b71Sopenharmony_ci 327e41f4b71Sopenharmony_ci**参数:** 328e41f4b71Sopenharmony_ci 329e41f4b71Sopenharmony_ci| 名称 | 描述 | 330e41f4b71Sopenharmony_ci| -------- | -------- | 331e41f4b71Sopenharmony_ci| interface | 对Input设备进行接口操作的指针,通常在Input服务启动后,通过调用此函数获取Input设备操作接口。 | 332e41f4b71Sopenharmony_ci 333e41f4b71Sopenharmony_ci**返回:** 334e41f4b71Sopenharmony_ci 335e41f4b71Sopenharmony_ciINPUT_SUCCESS 表示执行成功。 336e41f4b71Sopenharmony_ci 337e41f4b71Sopenharmony_ci其他值表示执行失败,具体错误码查看[RetStatus](#retstatus)。 338