您的位置:首页 > 其它

input reader对virtual key的处理

2015-10-12 11:12 543 查看
inputreader中对virtualkey的处理

在void TouchInputMapper::sync(nsecs_t when) 中有个

if (consumeRawTouches(when, policyFlags)) {

mCurrentRawPointerData.clear();

}

继续看bool TouchInputMapper::consumeRawTouches(nsecs_t when, uint32_t policyFlags)

里面有

1.dispatchVirtualKey(when, policyFlags,

AKEY_EVENT_ACTION_UP,

AKEY_EVENT_FLAG_FROM_SYSTEM | AKEY_EVENT_FLAG_VIRTUAL_HARD_KEY

| AKEY_EVENT_FLAG_CANCELED);

}

2.dispatchVirtualKey(when, policyFlags,

AKEY_EVENT_ACTION_UP,

AKEY_EVENT_FLAG_FROM_SYSTEM | AKEY_EVENT_FLAG_VIRTUAL_HARD_KEY

| AKEY_EVENT_FLAG_CANCELED);

}

3. dispatchVirtualKey(when, policyFlags,

AKEY_EVENT_ACTION_DOWN,

AKEY_EVENT_FLAG_FROM_SYSTEM | AKEY_EVENT_FLAG_VIRTUAL_HARD_KEY);

看看void TouchInputMapper::dispatchVirtualKey(nsecs_t when, uint32_t policyFlags,

int32_t keyEventAction, int32_t keyEventFlags) {

int32_t keyCode = mCurrentVirtualKey.keyCode;

int32_t scanCode = mCurrentVirtualKey.scanCode;

nsecs_t downTime = mCurrentVirtualKey.downTime;

int32_t metaState = mContext->getGlobalMetaState();

policyFlags |= POLICY_FLAG_VIRTUAL;

NotifyKeyArgs args(when, getDeviceId(), AINPUT_SOURCE_KEYBOARD, policyFlags,

keyEventAction, keyEventFlags, keyCode, scanCode, metaState, downTime);

getListener()->notifyKey(&args);

}

最后还是用了 getListener()->notifyKey(&args)发送出去了,和void QueuedInputListener::flush()做的一样
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: