# input - [Introduction](#section11660541593) - [Directory Structure](#section161941989596) - [Available APIs](#section1551164914237) - [Usage Guidelines](#section129654513264) - [Repositories Involved](#section1371113476307) ## Introduction This repository mainly defines and implements the following types of Hardware Driver Interfaces \(HDIs\) of the input module, allowing upper-layer input services to perform operations for the input devices: - **Input Manager**: manages input devices, including enabling and disabling input devices and obtaining the device list. - **Input Reporter**: reports input events, including registering and unregistering data reporting callbacks. - **Input Controller**: controls input devices, including obtaining the device information and device type, and setting power supply status. **Figure 1** HDI architecture of the input module  ## Directory Structure The source code directory structure is as follows: ``` /drivers/peripheral/input ├── hal # HAL code │ └── include # HAL header files │ └── src # HAL code implementation ├── interfaces # Driver capability APIs provided for upper-layer services │ └── include # APIs exposed externally ├── test # Test code │ └── unittest # Unit test code ``` ### Available APIs The input driver provides input services with driver capability APIs that can be directly called. The APIs involve the Input Manager module, Input Reporter module, and Input Controller module. For example, you can call the APIs to enable or disable an input device, register a listener callback, query the device information, and control the power status. [Table 1](#table1513255710559) describes major HDI APIs provided by the input module. **Table 1** Major HDI APIs of the input module