![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android按键
kc专栏
深入探索android Framework层代码,博客持续更新中!!!
展开
-
android6.0 otg连接设备 点亮屏幕(案例)
现在我们otg连接设备的时候有点亮屏幕的需求。解决方法我们可以在识别设备的时候,去调用PowerManager的wakeup唤醒(点亮)设备。void InputReader::processEventsLocked(const RawEvent* rawEvents, size_t count) { for (const RawEvent* rawEvent = rawE原创 2016-02-18 11:10:44 · 3711 阅读 · 1 评论 -
按键是如何知道分发给哪个应用进程
之前分析按键的博客,我们分析了按键的流程,但是对按键具体在InputFlinger中分发给哪个进程这块没有分析。WMS设置焦点我们先来看WMS的updateFocusedWindowLocked函数,当Window窗口或者焦点有变化都会调用这个函数,这个函数先调用findFocusedWindowLocked来获取当前有焦点的窗口,然后会调用InputMonitor的setInputFoc...原创 2019-01-22 15:09:52 · 2093 阅读 · 0 评论 -
c层做power按键长按识别
按键一般的处理流程都在java中。这里有一个需要,因为没有java层代码,需要在c层做一个进程,来检测power按键长按 。利用定时器做的长按,在android的framework层是用延迟消息做的。代码如下:#include #include #include #include #include #include #include #include #include原创 2017-09-11 21:41:52 · 1117 阅读 · 0 评论 -
Android6.0 按键流程(一)读取设备事件
之前我们整理过一篇按键流程,但是不是太详细有的细节的地方有遗漏,今天在Android6.0上重新总结下,先从读取按键值作为第一篇。 一、初始化InputManagerService在SystemServer中新建,然后调用了start函数,这里我们就不讲了,从InputManagerService的构造函数讲起。 public InputManagerService(...原创 2019-01-22 15:07:36 · 8038 阅读 · 5 评论 -
Android6.0 按键流程(二)KeyboardInputMapper扫描码转成键盘码
在上一篇博客中,我们详细分析了InputReader中读取设备事件,到processEventsLocked函数处理事件(包括设备事件,设备添加、删除等),再到ProcessEventsForDeviceLocked处理设备事件,最后到InputDevice的process函数,去遍历各个InputMapper执行process函数。今天我们继续从这里开始分析,Input设备有很多种类,其消息...原创 2019-01-22 15:07:46 · 5358 阅读 · 0 评论 -
Android6.0 按键流程(三)InputDispatcher分发输入消息
上一篇博客分析了InputReader中扫描码与键盘码的转化,今天我们再来分析下InputDispatcher 一、InputDispatcher的notifyKey函数接上一篇我们我们分析到InputDispatcher的notifyKey函数:void InputDispatcher::notifyKey(const NotifyKeyArgs* args) { if...原创 2019-01-22 15:07:55 · 4562 阅读 · 1 评论 -
Android6.0 按键流程(四)registerInputChannel函数
这篇博客我们接上面一篇博客,回答上篇博客中,最后的connection对象是如何来的。 一、InputManagerService的registerInputChannel方法我们先从InputManagerService的registerInputChannel方法分析: public void registerInputChannel(InputChannel inpu...原创 2019-01-22 15:08:00 · 9413 阅读 · 0 评论 -
Android6.0 按键流程(五)无线鼠标右键无效 -- hal层
最近在我们的手机上碰到这样一个问题,用otg连接无线鼠标,发现右键没反应。 于是先用getEvent命令:查看其扫描码,然后再去kl文件中,结果没找到这个扫描码对应的键盘码。于是结合之前分析的按键流程,怀疑按键流程最后没走KeyboardInputMapper,就在InputReader中打印log。最后在InputDevice::process函数中遍历InputMapper调用...原创 2019-01-22 15:08:06 · 4295 阅读 · 0 评论 -
Android6.0 按键流程(六)应用进程处理按键消息
在之前的一篇按键流程处理中我们已经分析过了应用进程处理按键消息:http://blog.csdn.net/kc58236582/article/details/49928627我们也可以看下:这边我们再单独整理下应用进程处理按键消息: 一、InputStage的各个流程我们先来看setView下面一段代码: CharSequence counte...原创 2019-01-22 15:08:23 · 5757 阅读 · 0 评论 -
Android6.0 按键流程(七)无线鼠标右键无效 -- Framework层
之前我们分析了无线鼠标右键无效,hal层的分析,我们可以把修改成返回键。uint32_t CursorButtonAccumulator::getButtonState() const { uint32_t result = 0; if (mBtnLeft) { result |= AMOTION_EVENT_BUTTON_PRIMARY; ...原创 2019-01-22 15:08:28 · 2825 阅读 · 0 评论 -
android input进程(模拟按键)
我们可以在手机adb shell中,使用input来模拟按键,和之前的sm类似,input也是一个进程,在framework/base/cmds目录下。一、Input源码下面我们先看下input的源码: private void run(String[] args) { if (args.length < 1) { showUsage();原创 2016-05-25 15:14:06 · 12051 阅读 · 0 评论 -
Android6.0 按键kl文件加载过程分析
在之前按键过程分析的几篇博客中,我分析过关于按键kl文件的加载,但是讲的不是非常详细,这篇博客主要把kl文件加载过程单独拉出来分析下。 1. 获取InputDeviceIdentifier的name 以及 Device的创建InputDeviceIdentifier的name 非常重要,后面寻找idc kl kcm文件都需要这个name。我们看下面的调用流程EventHub::ge...原创 2019-01-22 15:08:50 · 10894 阅读 · 2 评论 -
android添加按键(二) 添加按键流程、出现问题
Android 系统对加载键盘布局文件(Generic.kl ).在 开发板的文件目录 /system/usr/idc 中有一系列的 *.idc 框架层会根据驱动中的配置,自动生成设备的idc 文件。例如在 EventHub.cpp 中的 loadConfigurationLocked 方法中,会获取设备的idc 文件。如果没有获取到idc 文件,那么会采用默认的Generic.原创 2015-11-19 11:47:51 · 2689 阅读 · 2 评论 -
android 添加按键(一) kl文件 kcm文件
在Android 系统中定义了大量的物理和虚拟按键,比如返回键,home键,数字键等。 在添加按键之前,需要了解Andorid 系统的按键软件架构,以物理按键为例。 1. 驱动层 将物理按键的键值上报给按键框架层。在手机的文件系统中,有这样的一个目录 /dev/input,按键框架层,就是通过检测这个目录,看是否有按键值上报。 2. 按键框架层原创 2015-11-19 11:41:40 · 7635 阅读 · 0 评论 -
Android 按键流程(InputManagerService 以及 JNI phoneWindowManger 应用)(and5.1)
一、 初识Android输入系统第4章通过分析WMS详细讨论了Android的窗口管理、布局及动画的工作机制。窗口不仅是内容绘制的载体,同时也是用户输入事件的目标。本章将详细讨论Android输入系统的工作原理,包括输入设备的管理、输入事件的加工方式以及派发流程。因此本章的探讨对象有两个:输入设备、输入事件。触摸屏与键盘是Android最普遍也是最标准的输入设备。其实Android所支持的原创 2015-11-20 11:40:45 · 6264 阅读 · 3 评论 -
深入理解控件(ViewRoot)系统(节选)
深入理解控件(ViewRoot)系统(节选)本章主要内容:· 介绍创建窗口的新的方法以及WindowManager的实现原理· 探讨ViewRootImpl的工作方式· 讨论控件树的测量、布局与绘制· 讨论输入事件在控件树中的派发· 介绍PhoneWindow的工作原理以及Activity窗口的创建方式本章涉及的源代码文件名及位置:· Conte转载 2015-11-30 16:00:35 · 1476 阅读 · 0 评论 -
android4.4 车载灭屏 按任意键及触摸屏幕恢复亮屏
车载上的android4.4系统,基本上常亮。但最近需要一个新功能可以在launcher新增一个按钮,点击的时候。屏幕亮度为0,但实际上不等于按power键,不会睡眠。然后可以按任意键恢复亮度,包括触屏事件。一、PowerManagerService原先屏幕亮度流程PowerManagerService是通过updateDisplayPowerStateLocked函数,把亮度原创 2016-02-22 14:16:06 · 4949 阅读 · 0 评论 -
功能机用上下键实现MoveEvent
这个功能的用处功能手机(这里说的功能机只是没有触屏,单还是Android系统)能在浏览器中使用上下键实现移动光标的目的,这里我们大致分析流程。我们知道普通按键,会在KeyboardInputMapper的process执行,比如这里我们要关注的上下左右按键。void KeyboardInputMapper::process(const RawEvent* rawEvent) {#if ...原创 2019-01-22 15:11:34 · 1236 阅读 · 0 评论