美文网首页Android开发
Android物理按键输入事件(一)

Android物理按键输入事件(一)

作者: 天空汁橙 | 来源:发表于2017-02-21 13:40 被阅读2823次

这两天因为项目需求,需要在android系统增加两个物理按键(WIFI/RESET (Pin Hole)).下面以WIFI键为例,我们开始分析Android系统增加按键流程:

说明:本篇文章主要分析Android 内核部分


在介绍Android系统添加键值以前,先介绍INPUT子系统的流程.精简流程图如下

1.linux键值上报

1>linux-3.4/drivers/input/keyboard/sunxi-keyboard.c                                                                         

  ->static irqreturn_t sunxi_isr_key(int irq, void *dummy)

从方法 input_report_key(sunxikbd_dev, sunxi_scankeycodes[scancode], 0) ,我们可以看到上报的值 sunxi_scankeycodes[scancode]

2>linux-3.4/drivers/input/keyboard/sunxi-keyboard.c

查看sunxi-keyboard.c源码,我们可以看到scancode的值为 数组keypad_mapindex[64]中的值,对于该数组中0-7的理解:硬件上物理按键按下,电压变换通过模数转换,变成数字电压,我们将这里的电压变换范围分成64份,每一份对应一个电压值,假设每一份电压值为0.2,那么可以认为0-1.4之间电压变化时,我们就认为 key1 按下.

3>linux-3.4/drivers/input/keyboard/sun8i-keyboard.h

sunxi_scankeycodes[KEY_MAX_CNT] 数组中定义了内核需要上报给系统的值,但是这些可以上报的值(比如:KEY_VOLUMEUP )定义在哪里呢?我们继续查看 sun8i-keyboard.h 源码

3>linux-3.4/include/linux/input.h

为了不让篇幅过长,这里只截取了部分


至此, linux层按键上报流程就分析了.                                                                                                    

总结一下:

1.linux内核通过扫码,将硬件上按键按下电压变换转为数字电压并且映射到数组下标             

2.通过 keypad_mapindex[64], sunxi_scankeycodes[KEY_MAX_CNT] 两个数组关系转化将按键映射到内核中预定义的键值                                                                                                       

3.最终linux内核上报给上层的就是一个 整形值

Android物理按键输入事件(二)

相关文章

  • Android物理输入事件(二)

    Android物理按键输入事件(一) 本篇文章主要分析Android系统新增物理按键在framework层的修改 ...

  • Android物理按键输入事件(一)

    这两天因为项目需求,需要在android系统增加两个物理按键(WIFI/RESET (Pin Hole)).下面以...

  • android命令行模拟输入事件

    通过adb shell input可以模拟android各种输入事件,比如文字、按键、触摸等等。 基本用法 输入文...

  • Android input events 输入系统

    前言 本文代码基于 Android 12 。 概述 Android 的事件输入可以简化为三部分: 物理输入设备 -...

  • Android按键事件

    一、按键事件App开发对按键事件的检测与处理,主要包括如何检测控件对象的按键事件、如何检测活动页面的物理按键、以返...

  • Android8.0 焦点处理流程(二)

    该篇就看看按键焦点导航,从输入事件流入到ViewRootImpl说起 按键事件流入 按键触摸事件都会封装为Inpu...

  • QT for Android 物理按键监听

    在QT for Android上实现对物理按键的监听 运行的目标平台比较特殊,有几个比较特殊的物理按键,其实现机制...

  • Android的事件分发

    Android中的事件分为按键事件,触摸事件,轨迹球事件等,其中按键事件是基于焦点分发的,触摸事件是基于位置分发的...

  • 事件分发机制

    事件分发(传递)机制 分类: View ViewGroup 物理key按键 Activity页面 View的事件分...

  • AndroidTV开发 输入键位总结

    输入设备的按键事件,在Android设备中会被转换为KeyEvent对象。而游戏手柄中的摇杆则会产生对应的Moti...

网友评论

    本文标题:Android物理按键输入事件(一)

    本文链接:https://www.haomeiwen.com/subject/bfiywttx.html