本文共 1097 字,大约阅读时间需要 3 分钟。
InputManager.cpp initialize()--> InputReader.cpp 启动线程一直循环 threadLoop-->loopOnce EventHub.cpp -->mEventHub->getEvents()-->getEvents()-->scanDevicesLocked() //打开设备节点与load touch/key等参数 -->scanDirLocked-->openDeviceLocked-->open() 调用驱动中的open打开设备 -->loadConfigurationLocked() //Load the configuration file for the device -->PropertyMap::load() --> PropertyMap.cpp/load() //load *.idc文件 -->loadVirtualKeyMapLocked() //Configure virtual keys -->loadKeyMapLocked() //Load the keymap for the device -->Keyboard.cpp/load()-->probeKeyMap()-->loadKeyLayout()-->KeyLayoutMap.cpp/load() //read event input -->read() 如果getEvents()返回的值大于0则配置输入设备 processEventsLocked()-->addDeviceLocked()-->device->configure()-->TouchInputMapper::configure() -->configureParameters() //Configure basic parameters -->configureRawPointerAxes()//Configure absolute axis information -->parseCalibration()//Prepare input device calibration -->resolveCalibration() -->configureSurface() 对输入设备进行校准 -->processEventsForDeviceLocked() -->InputDevice::process() -->TouchInputMapper::process() -->TouchInputMapper::sync() -->cookPointerData()转载地址:http://fbjqi.baihongyu.com/