源码位置:/frameworks/native/services/inputflinger/reader/EventHub.cpp
- static const char* DEVICE_PATH = "/dev/input";
-
- EventHub::EventHub(void) : mBuiltInKeyboardId(NO_BUILT_IN_KEYBOARD),
- mNextDeviceId(1),
- mControllerNumbers(),
- mNeedToSendFinishedDeviceScan(false),
- mNeedToReopenDevices(false),
- mNeedToScanDevices(true),
- mPendingEventCount(0),
- mPendingEventIndex(0),
- mPendingINotify(false) {
- ensureProcessCanBlockSuspend();
-
- // 使用epoll_create()函数创建一个epoll对象,用来监听设备节点是否有数据可读(有无事件)
- mEpollFd = epoll_create1(EPOLL_CLOEXEC);
- //创建一个 inotify 对象 。这个对象将被用来 监听设备节点的增删事件
- mINotifyFd = inotify_init();
- // 将存储设备节点的路径 /dev/input 作为监听对象添加到inotify对象中
- // 当此文件夹下的设备节点发生创建与删除事件时,都可以通过mINotifyFd读取事件的详细信息
- mInputWd = inotify_add_watch(mINotifyFd, DEVICE_PATH, IN_DELETE | IN_CREATE)