输入事件的处理方法和系统的制作方法

文档序号:9396689阅读:227来源:国知局
输入事件的处理方法和系统的制作方法
【技术领域】
[0001] 本发明涉及操作系统控制领域,特别是涉及一种输入事件的处理方法和系统。
【背景技术】
[0002] Recovery模式指的是一种可以对Android(安卓)设备内部的数据或系统进行修 改的模式,在该模式下可以刷入新的Android系统,或者对已有的系统进行备份或升级,也 可以在此模式恢复出厂设置。
[0003] 在Recovery模式下,Recovery系统会接收所有的input (输入)事件,而现在的 手机除了触摸屏以外还会有其它如传感器、耳机之类的器件也会注册input (输入)设备, 这些器件(比如加速度传感器)均会上报input事件,会导致在用户点击触摸屏时系统所 响应的并不是触摸屏的上报事件,从而引起手机界面按钮、菜单乱跳的现象,此时用户根本 无法操控手机。

【发明内容】

[0004] 基于此,本发明提供一种输入事件的处理方法,能在Recovery模式下有效过滤掉 如传感器、耳机等设备的input事件,避免Recovery系统受这些设备的input事件的干扰 而导致用户无法进行操控。
[0005] 为实现上述目的,本发明实施例中采用如下技术方案:
[0006] 一种输入事件的处理方法,包括以下步骤:
[0007] 读取驱动层的输入设备信息文件,获取与预设输入设备对应的事件序号;
[0008] 监听驱动层上报的输入事件;
[0009] 根据预设输入设备的事件序号以及处理输入事件的线程对输入事件进行处理。
[0010] 相应的,本发明实施例还提供一种输入事件的处理系统,包括:
[0011] 序号获取模块,用于读取驱动层的输入设备信息文件,获取与预设输入设备对应 的事件序号;
[0012] 监听模块,用于监听驱动层上报的输入事件;
[0013] 处理模块,用于根据预设输入设备的事件序号以及处理输入事件的线程对输入事 件进行处理。
[0014] 本发明通过读取驱动层的输入设备信息文件而获取预设输入设备的事件(event) 序号,依据event序号可以在Recovery模式下过滤掉不必要的input事件,保证Recovery 系统只响应预设输入设备的input事件,因此既可以在Recovery模式下有效避免因不必要 的input事件造成的设备不可控,又可以在Recovery模式下快速响应用户的操作,具有较 强的应用价值。
【附图说明】
[0015] 图1为本发明实施例中一种输入事件的处理方法的流程示意图;
[0016] 图2为本发明实施例中根据预设输入设备的事件序号以及处理输入事件的线程 对输入事件进行处理的流程示意图;
[0017] 图3为本发明实施例中一种输入事件的处理系统的结构示意图。
【具体实施方式】
[0018] 下面结合附图及较佳实施例对本发明的内容作进一步详细描述。
[0019] 如图1所示,本实施例提供一种输入事件的处理方法,包括以下步骤:
[0020] SlO读取驱动层的输入设备信息文件,获取与预设输入设备对应的事件序号;
[0021] 在进入Recovery模式时,从驱动层读取输入设备信息文件,例如,在节点/proc/ bus/input/devices读取输入设备信息文件,获取与预设输入设备对应的事件序号。
[0022] 具体的,由于在Recovery模式下,用户主要对安卓设备内部的数据或系统进行修 改,Recovery系统更多关注于用户在触摸屏的触摸操作或按键操作,因此,可以根据安卓设 备的实际情况对上述的预设输入设备进行设定。例如,在Recovery模式下若仅提供触摸操 作,则可将上述预设输入设备设定为触摸屏;若仅提供按键操作,则可将上述预设输入设备 设定为按键;若在Recovery模式下同时提供触摸操作或按键操作,则可将上述预设输入设 备设定为触摸屏和按键。当然,若在Recovery模式下需要响应其他input设备(例如加速 度传感器、耳机等器件)的input事件,也可以作相应设置,此处不再一一举例说明。下文 仅以预设输入设备为触摸屏和按键为例进行详细说明,但不能以此来限制本发明的保护范 围。
[0023] 在Recovery模式下,从驱动层读取输入设备信息文件,记录与按键对应的事件序 号(event序号),同时记录与触摸屏对应的event序号。其中,驱动层的输入设备信息文件 与input设备相对应,其包含了 input设备相应的设备信息。
[0024] 在一种【具体实施方式】中,通过以下过程生成上述的输入设备信息文件:
[0025] 在驱动层通过注册接口对各个输入设备进行注册,生成输入设备信息文件。
[0026] 具体而言,任何input设备的驱动程序都可以通过input输入子系统提供的注册 接口注册到内核,利用input子系统提供的功能来与用户空间交互。
[0027] Input子系统是分层结构的,总共分为三层:驱动层,子系统核心层,事件处理层。 各层之间通信的基本单位就是事件,任何一个input设备的动作都可以抽象成一种input 事件,如按键的按下,触摸屏的按下等。其中,驱动层负责操作具体的硬件设备,在本实施例 中,驱动层通过注册接口 input_register_device()注册input设备,在节点/proc/bus/ input/devices下产生相应的输入设备信息文件,每个input设备对应的输入设备信息文 件如下:
[0035] B:EV = 23
[0036] B:KEY = 10000 000000000000 80000 000
[0037] B: Sff = I
[0038] 考虑到在不同项目下同一个input设备的event序号也有可能不同(这是因 为input设备的注册顺序及注册设备的数量都会使event序号产生差异),例如某个项 目过滤耳机dev/input/event3,而另一个项目过滤耳机dev/input/event6,在两个项目 中,耳机对应的event序号不同,因此,在一种【具体实施方式】中,为保证input事件处理的 准确性,本实施中在Recovery模式下还需要对预设输入设备的event序号进行更新。例 如,当循环读取输入设备信息文件时,可以分别更新与触摸屏和按键对应的event序号,直 到输入设备信息文件结束,将按键对应的Name = 〃gpio_keys〃Handlers中的event序号 记录下来(event 7),同时记录触摸屏对应的event序号,例如,将触摸屏对应的Name = "synaptics-rmi"Handlers 中的 event 序号记录下来,
[0039] S20监听驱动层上报的输入事件;
[0040] 实时监听驱动层上报的input事件,在一种【具体实施方式】中,驱动层通过中断函 数上报输入事件。
[0041] 例如,触摸屏的设备驱动中,一次点击的整个报告过程如下:
[0046] 在按键中断中报告input事件:
[0049] S30根据预设输入设备的事件序号以及处理输入事件的线程对输入事件进行处 理。
[0050] 获取预设输入设备的event序号后,即可根据event序号和处理input事件的线 程来处理input事件。如上文描述的实施例中获取了触摸屏和按键的event序号,则在 Recovery模式下利用处理input事件的线程仅对触摸屏和按键的input事件进行处理。通 过这种方式,一方面为用户在Recovery模式下提供相应的操作空间,另一方面可以有效防 止因处理不必要的input事件而造成触摸屏按钮、菜单乱跳、用户无法操控等问题。
[0051] 在一种【具体实施方式】中,根据预设输入设备的事件序号以及处理输入事件的线程 对输入事件进行处理的过程包括以下步骤:
[0052] S301根据预设输入设备的事件序号进行初始化;
[0053] S302运行处理输入事件的线程,并根据输入事件处理函数对输入事件进行处理; 所述处理输入事件的线程中包括所述输入事件处理函数。
[0054] 具体的,先根据触摸屏和按键的event序号完成一系列处理input事件的初始 化操作,例如dev/input/event4、dev/input/event6,然后运行处理input事件的线程处 理相应的input事件,其中,线程是程序执行流的最小单元,是进程中的一个实体,是被系 统独立调度和分派的基本单位。例如本实施例中运行处理input事件的线程pthread_ create(&input_thread_t, NULL, ev_input_thread, NULL);其中,ev_input_thread 为 input事件处理函数,该处理函数可以对触摸屏和按键的input事件(例如按键按下、触屏 坐标等)进行处理,根据ev_input_thread的处理结果,可以实现用户在Recovery模式下 的操作,例如当用户按下音量减小键、点击触摸屏上虚拟返回键后,设备均予以响应,此时 不会收到其他input事件的干扰。
[0055] 综上所述,本发明提供的输入事件的处理方法,通过获取预设输入设备的event 序号,可以在Recovery模式下过滤掉不必要的input事件,避免因不必要的input事件造 成设备不可控。另外,本发明通过循环读取输入设备信息文件,即便在项目不同导致input 设备的event序号发生变化时,也可以获得更新后的event序号,保证input事件处理的准 确性。
[0056] 本发明还提供一种输入事件的处理系统,下面给出该处理
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1