Android WMS——服务端输入事件处理(十八)

一、事件读取

EventHub.cpp

源码位置:/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)

你可能感兴趣的:(Android,WMS,android,WMS)