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()做的一样
在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()做的一样
相关文章推荐
- 编写一个以C 语言为基础的DSP程序
- Qualcomm MSM Camera Dtsi documentation
- new,malloc,GlobalAlloc用法
- opencv 网址
- Android应用开发SharedPreferences存储数据的使用方法
- FastJson只序列化java对象的部分属性
- 转一个PDevMode格式属性说明...
- How to: Convert Between Various String Types
- ViewPager导航
- String类到底可不可变
- java修改JPG图片DPI 不改变分辨率
- Oracle shutdown immediate无法关闭数据库解决方法
- HTML事件属性
- glusterfs 3.6.3之后修复的bug
- Volley框架的使用(加载网络图片,加载json数据)
- model赋值过滤
- fiddler如何抓到java程序内部的Http请求包
- JavaScript中的valueOf与toString方法
- 强文:互联网思维:3个段子,9大分类,19条法则
- SpringMVC的forward和redirect