CN105117223B - 输入事件的处理方法和*** - Google Patents
输入事件的处理方法和*** Download PDFInfo
- Publication number
- CN105117223B CN105117223B CN201510515880.0A CN201510515880A CN105117223B CN 105117223 B CN105117223 B CN 105117223B CN 201510515880 A CN201510515880 A CN 201510515880A CN 105117223 B CN105117223 B CN 105117223B
- Authority
- CN
- China
- Prior art keywords
- event
- input equipment
- incoming event
- serial number
- input
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Telephone Function (AREA)
Abstract
本发明涉及一种输入事件的处理方法和***,该方法包括以下步骤:读取驱动层的输入设备信息文件,获取与预设输入设备对应的事件序号;监听驱动层上报的输入事件;根据预设输入设备的事件序号以及处理输入事件的线程对输入事件进行处理。本发明通过读取驱动层的输入设备信息文件而获取预设输入设备的事件(event)序号,依据event序号可以在Recovery模式下过滤掉不必要的input事件,保证Recovery***只响应预设输入设备的input事件,因此既可以在Recovery模式下有效避免因不必要的input事件造成的设备不可控,又可以在Recovery模式下快速响应用户的操作,具有较强的应用价值。
Description
技术领域
本发明涉及操作***控制领域,特别是涉及一种输入事件的处理方法和***。
背景技术
Recovery模式指的是一种可以对Android(安卓)设备内部的数据或***进行修改的模式,在该模式下可以刷入新的Android***,或者对已有的***进行备份或升级,也可以在此模式恢复出厂设置。
在Recovery模式下,Recovery***会接收所有的input(输入)事件,而现在的手机除了触摸屏以外还会有其它如传感器、耳机之类的器件也会注册input(输入)设备,这些器件(比如加速度传感器)均会上报input事件,会导致在用户点击触摸屏时***所响应的并不是触摸屏的上报事件,从而引起手机界面按钮、菜单乱跳的现象,此时用户根本无法操控手机。
发明内容
基于此,本发明提供一种输入事件的处理方法,能在Recovery模式下有效过滤掉如传感器、耳机等设备的input事件,避免Recovery***受这些设备的input事件的干扰而导致用户无法进行操控。
为实现上述目的,本发明实施例中采用如下技术方案:
一种输入事件的处理方法,包括以下步骤:
读取驱动层的输入设备信息文件,获取与预设输入设备对应的事件序号;
监听驱动层上报的输入事件;
根据预设输入设备的事件序号以及处理输入事件的线程对输入事件进行处理。
相应的,本发明实施例还提供一种输入事件的处理***,包括:
序号获取模块,用于读取驱动层的输入设备信息文件,获取与预设输入设备对应的事件序号;
监听模块,用于监听驱动层上报的输入事件;
处理模块,用于根据预设输入设备的事件序号以及处理输入事件的线程对输入事件进行处理。
本发明通过读取驱动层的输入设备信息文件而获取预设输入设备的事件(event)序号,依据event序号可以在Recovery模式下过滤掉不必要的input事件,保证Recovery***只响应预设输入设备的input事件,因此既可以在Recovery模式下有效避免因不必要的input事件造成的设备不可控,又可以在Recovery模式下快速响应用户的操作,具有较强的应用价值。
附图说明
图1为本发明实施例中一种输入事件的处理方法的流程示意图;
图2为本发明实施例中根据预设输入设备的事件序号以及处理输入事件的线程对输入事件进行处理的流程示意图;
图3为本发明实施例中一种输入事件的处理***的结构示意图。
具体实施方式
下面结合附图及较佳实施例对本发明的内容作进一步详细描述。
如图1所示,本实施例提供一种输入事件的处理方法,包括以下步骤:
S10读取驱动层的输入设备信息文件,获取与预设输入设备对应的事件序号;
在进入Recovery模式时,从驱动层读取输入设备信息文件,例如,在节点/proc/bus/input/devices读取输入设备信息文件,获取与预设输入设备对应的事件序号。
具体的,由于在Recovery模式下,用户主要对安卓设备内部的数据或***进行修改,Recovery***更多关注于用户在触摸屏的触摸操作或按键操作,因此,可以根据安卓设备的实际情况对上述的预设输入设备进行设定。例如,在Recovery模式下若仅提供触摸操作,则可将上述预设输入设备设定为触摸屏;若仅提供按键操作,则可将上述预设输入设备设定为按键;若在Recovery模式下同时提供触摸操作或按键操作,则可将上述预设输入设备设定为触摸屏和按键。当然,若在Recovery模式下需要响应其他input设备(例如加速度传感器、耳机等器件)的input事件,也可以作相应设置,此处不再一一举例说明。下文仅以预设输入设备为触摸屏和按键为例进行详细说明,但不能以此来限制本发明的保护范围。
在Recovery模式下,从驱动层读取输入设备信息文件,记录与按键对应的事件序号(event序号),同时记录与触摸屏对应的event序号。其中,驱动层的输入设备信息文件与input设备相对应,其包含了input设备相应的设备信息。
在一种具体实施方式中,通过以下过程生成上述的输入设备信息文件:
在驱动层通过注册接口对各个输入设备进行注册,生成输入设备信息文件。
具体而言,任何input设备的驱动程序都可以通过input输入子***提供的注册接口注册到内核,利用input子***提供的功能来与用户空间交互。
Input子***是分层结构的,总共分为三层:驱动层,子***核心层,事件处理层。各层之间通信的基本单位就是事件,任何一个input设备的动作都可以抽象成一种input事件,如按键的按下,触摸屏的按下等。其中,驱动层负责操作具体的硬件设备,在本实施例中,驱动层通过注册接口input_register_device()注册input设备,在节点/proc/bus/input/devices下产生相应的输入设备信息文件,每个input设备对应的输入设备信息文件如下:
I:Bus=0019 Vendor=0001 Product=0001 Version=0100
N:Name="gpio-keys"
P:Phys=gpio-keys/input0
S:Sysfs=/devices/soc.0/gpio_keys.65/input/input7
U:Uniq=
H:Handlers=kbd event7
B:PROP=0
B:EV=23
B:KEY=10000 0 0 0 0 0 0 0 0 0 0 0 0 80000 0 0 0
B:SW=1
考虑到在不同项目下同一个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序号记录下来,
S20监听驱动层上报的输入事件;
实时监听驱动层上报的input事件,在一种具体实施方式中,驱动层通过中断函数上报输入事件。
例如,触摸屏的设备驱动中,一次点击的整个报告过程如下:
input_reprot_abs(input_dev,ABS_X,x);//x坐标
input_reprot_abs(input_dev,ABS_Y,y);//y坐标
input_reprot_abs(input_dev,ABS_PRESSURE,1);
input_sync(input_dev);//同步结束
在按键中断中报告input事件:
S30根据预设输入设备的事件序号以及处理输入事件的线程对输入事件进行处理。
获取预设输入设备的event序号后,即可根据event序号和处理input事件的线程来处理input事件。如上文描述的实施例中获取了触摸屏和按键的event序号,则在Recovery模式下利用处理input事件的线程仅对触摸屏和按键的input事件进行处理。通过这种方式,一方面为用户在Recovery模式下提供相应的操作空间,另一方面可以有效防止因处理不必要的input事件而造成触摸屏按钮、菜单乱跳、用户无法操控等问题。
在一种具体实施方式中,根据预设输入设备的事件序号以及处理输入事件的线程对输入事件进行处理的过程包括以下步骤:
S301根据预设输入设备的事件序号进行初始化;
S302运行处理输入事件的线程,并根据输入事件处理函数对输入事件进行处理;所述处理输入事件的线程中包括所述输入事件处理函数。
具体的,先根据触摸屏和按键的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事件的干扰。
综上所述,本发明提供的输入事件的处理方法,通过获取预设输入设备的event序号,可以在Recovery模式下过滤掉不必要的input事件,避免因不必要的input事件造成设备不可控。另外,本发明通过循环读取输入设备信息文件,即便在项目不同导致input设备的event序号发生变化时,也可以获得更新后的event序号,保证input事件处理的准确性。
本发明还提供一种输入事件的处理***,下面给出该处理***的一个较佳实施例。
如图3所示,本实施例中的输入事件的处理***包括:
序号获取模块1,用于读取驱动层的输入设备信息文件,获取与预设输入设备对应的事件序号;
监听模块2,用于监听驱动层上报的输入事件;
处理模块3,用于根据预设输入设备的事件序号以及处理输入事件的线程对输入事件进行处理。
在进入Recovery模式时,序号获取模块1从驱动层读取输入设备信息文件,例如,在节点/proc/bus/input/devices读取输入设备信息文件,获取与预设输入设备对应的事件序号。具体的,由于在Recovery模式下,用户主要对安卓设备内部的数据或***进行修改,Recovery***更多关注于用户在触摸屏的触摸操作或按键操作,因此,可以根据安卓设备的实际情况对上述的预设输入设备进行设定。例如,在Recovery模式下若仅提供触摸操作,则可将上述预设输入设备设定为触摸屏;若仅提供按键操作,则可将上述预设输入设备设定为按键;若在Recovery模式下同时提供触摸操作或按键操作,则将上述预设输入设备设定为触摸屏和按键。当然,若在Recovery模式下需要响应其他input设备(例如加速度传感器、耳机等器件)的input事件,也可以作相应设置,此处不再举例说明。下文仅以预设输入设备为触摸屏和按键为例进行详细说明,但不能以此来限制本发明的保护范围。
在Recovery模式下,序号获取模块1从驱动层读取输入设备信息文件,记录与按键对应的事件序号(event序号),同时记录与触摸屏对应的event序号。其中,驱动层的输入设备信息文件与input设备相对应,其包含了input设备相应的设备信息。
在一种具体实施方式中,本实施例的输入事件的处理***还可包括注册模块,用于在驱动层通过注册接口对各个输入设备进行注册,生成输入设备信息文件。
任何input设备的驱动程序都可以通过input输入子***提供的注册接口注册到内核,利用input子***提供的功能来与用户空间交互。Input子***总共分为三层:驱动层,子***核心层,事件处理层。其中驱动层负责操作具体的硬件设备,在本实施例中,驱动层通过注册接口input_register_device()注册input设备,在节点/proc/bus/input/devices下生成输入设备信息文件。
考虑到在不同项目下同一个input设备的event序号也有可能不同,这是因为input设备的注册顺序及注册设备的数量都会使event序号产生差异,例如某个项目过滤耳机dev/input/event3,而另一个项目过滤耳机dev/input/event6,在两个项目中,耳机对应的event序号不同,因此,在一种具体实施方式中,本实施中的序号获取模块1循环读取所述输入设备信息文件,更新与预设输入设备对应的事件序号。例如,循环读取输入设备信息文件,直到输入设备信息文件结束,将按键对应的Name="gpio-keys"Handlers中的event序号记录下来,同理记录触摸屏对应的event序号。
在一种具体实施方式中,驱动层通过中断函数上报输入事件,监听模块2实时监听驱动层上报的input事件,处理模块3可根据预设输入设备的event序号和处理input事件的线程来处理input事件。如上文描述的实施例中序号获取模块1获取了触摸屏和按键的event序号,则在Recovery模式下处理模块3仅处理触摸屏和按键的input事件,通过这种方式,一方面为用户提供在Recovery模式下相应的操作空间,另一方面可以有效防止因处理不必要的input事件而造成触摸屏按钮、菜单乱跳、用户无法操控等问题。
在一种具体实施方式中,如图3所示,处理模块3包括:
初始化模块31,用于根据预设输入设备的事件序号进行初始化;
运行模块32,用于运行处理输入事件的线程,并根据输入事件处理函数对输入事件进行处理;所述处理输入事件的线程中包括输入事件处理函数。
具体的,初始化模块31根据触摸屏和按键的event序号完成一系列处理input事件的初始化操作,例如dev/input/event4、dev/input/event6,运行模块32运行处理input事件的线程,其中,线程是程序执行流的最小单元,是进程中的一个实体,是被***独立调度和分派的基本单位。例如,本实施例运行模块32运行处理input事件的线程pthread_create(&input_thread_t,NULL,ev_input_thread,NULL);其中,ev_input_thread为input事件处理函数,该处理函数可以对触摸屏和按键的input事件(例如按键按下、触屏坐标等)进行处理,根据ev_input_thread的处理结果,可以实现用户在Recovery模式下的操作,例如用户按下音量减小键、点击触摸屏上虚拟返回键,设备均予以响应。
综上所述,本发明提供的输入事件的处理***依据event序号可以在Recovery模式下过滤掉不必要的input事件,保证只响应预设输入设备的input事件,因此既可以在Recovery模式下有效避免因不必要的input事件造成的设备不可控,又可以在Recovery模式下快速响应用户的操作,具有较强的应用价值。另外,本发明提供的输入事件的处理***通过序号获取模块1循环读取输入设备信息文件,即便在项目不同导致input设备的event序号发生变化时,也可以获得更新后的event序号,因而保证input事件处理的准确性。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (8)
1.一种输入事件的处理方法,其特征在于,包括以下步骤:
在Recovery模式下,读取驱动层的输入设备信息文件,获取与预设输入设备对应的事件序号;
监听驱动层上报的输入事件;
根据预设输入设备的事件序号以及处理输入事件的线程对输入事件进行处理;
根据预设输入设备的事件序号以及处理输入事件的线程对输入事件进行处理的过程包括以下步骤:
根据预设输入设备的事件序号进行初始化;
运行处理输入事件的线程,并根据输入事件处理函数对输入事件进行处理;所述处理输入事件的线程中包括所述输入事件处理函数。
2.根据权利要求1所述的输入事件的处理方法,其特征在于,还包括以下步骤:
在驱动层通过注册接口对各个输入设备进行注册,生成输入设备信息文件。
3.根据权利要求1所述的输入事件的处理方法,其特征在于,还包括以下步骤:
驱动层通过中断函数上报输入事件。
4.根据权利要求1所述的输入事件的处理方法,其特征在于,还包括以下步骤:
循环读取所述输入设备信息文件,更新与所述预设输入设备对应的事件序号。
5.根据权利要求1所述的输入事件的处理方法,其特征在于,所述预设输入设备包括终端的触摸屏和/或按键。
6.一种输入事件的处理***,其特征在于,包括:
序号获取模块,用于在Recovery模式下,读取驱动层的输入设备信息文件,获取与预设输入设备对应的事件序号;
监听模块,用于监听驱动层上报的输入事件;
处理模块,用于根据预设输入设备的事件序号以及处理输入事件的线程对输入事件进行处理;
所述处理模块包括:
初始化模块,用于根据预设输入设备的事件序号进行初始化;
运行模块,用于运行处理输入事件的线程,并根据输入事件处理函数对输入事件进行处理;所述处理输入事件的线程中包括输入事件处理函数。
7.根据权利要求6所述的输入事件的处理***,其特征在于,还包括注册模块,用于在驱动层通过注册接口对各个输入设备进行注册,生成输入设备信息文件。
8.根据权利要求6所述的输入事件的处理***,其特征在于,所述序号获取模块循环读取所述输入设备信息文件,更新与所述预设输入设备对应的事件序号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510515880.0A CN105117223B (zh) | 2015-08-20 | 2015-08-20 | 输入事件的处理方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510515880.0A CN105117223B (zh) | 2015-08-20 | 2015-08-20 | 输入事件的处理方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105117223A CN105117223A (zh) | 2015-12-02 |
CN105117223B true CN105117223B (zh) | 2018-11-27 |
Family
ID=54665225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510515880.0A Expired - Fee Related CN105117223B (zh) | 2015-08-20 | 2015-08-20 | 输入事件的处理方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105117223B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293726B (zh) * | 2016-08-01 | 2020-03-06 | Oppo广东移动通信有限公司 | 数据获取方法、装置和移动设备 |
CN108108636A (zh) * | 2016-11-25 | 2018-06-01 | 中兴通讯股份有限公司 | 一种输入事件的管理方法、装置及移动终端 |
CN108063823A (zh) * | 2017-12-21 | 2018-05-22 | 五八有限公司 | 数据处理方法、装置、设备和存储介质 |
CN108989554B (zh) * | 2018-06-29 | 2021-01-15 | 维沃移动通信有限公司 | 一种信息处理方法及终端 |
CN114706602B (zh) * | 2022-04-01 | 2023-03-24 | 珠海读书郎软件科技有限公司 | 一种基于Android的通过app更新触摸屏参数的方法 |
CN115113775B (zh) * | 2022-06-28 | 2023-09-12 | 展讯通信(天津)有限公司 | 一种输入设备的选择方法、装置、存储介质和终端设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541271A (zh) * | 2011-12-12 | 2012-07-04 | 惠州Tcl移动通信有限公司 | 一种键盘的扩展方法及带可扩展键盘的设备 |
CN102662665A (zh) * | 2012-03-29 | 2012-09-12 | 福州瑞芯微电子有限公司 | 在安卓***上实现支持各种传感器的输入子*** |
CN102681845A (zh) * | 2012-04-24 | 2012-09-19 | 深圳创维数字技术股份有限公司 | 一种输入事件管理方法及装置 |
CN102830785A (zh) * | 2011-06-17 | 2012-12-19 | 上海果壳电子有限公司 | 设备端输入交互的快速响应***及实现方法 |
CN104317417A (zh) * | 2014-10-14 | 2015-01-28 | 渤海大学 | 一种键鼠平滑切换的方法、装置及*** |
CN104571011A (zh) * | 2014-11-27 | 2015-04-29 | 魏晓慧 | 嵌入式多媒体控制*** |
-
2015
- 2015-08-20 CN CN201510515880.0A patent/CN105117223B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102830785A (zh) * | 2011-06-17 | 2012-12-19 | 上海果壳电子有限公司 | 设备端输入交互的快速响应***及实现方法 |
CN102541271A (zh) * | 2011-12-12 | 2012-07-04 | 惠州Tcl移动通信有限公司 | 一种键盘的扩展方法及带可扩展键盘的设备 |
CN102662665A (zh) * | 2012-03-29 | 2012-09-12 | 福州瑞芯微电子有限公司 | 在安卓***上实现支持各种传感器的输入子*** |
CN102681845A (zh) * | 2012-04-24 | 2012-09-19 | 深圳创维数字技术股份有限公司 | 一种输入事件管理方法及装置 |
CN104317417A (zh) * | 2014-10-14 | 2015-01-28 | 渤海大学 | 一种键鼠平滑切换的方法、装置及*** |
CN104571011A (zh) * | 2014-11-27 | 2015-04-29 | 魏晓慧 | 嵌入式多媒体控制*** |
Also Published As
Publication number | Publication date |
---|---|
CN105117223A (zh) | 2015-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105117223B (zh) | 输入事件的处理方法和*** | |
US20200275896A1 (en) | Medical device interface system | |
WO2014019124A1 (zh) | 触摸事件上报方法、装置及移动终端 | |
EP3425491A1 (en) | Data processing method and apparatus | |
CN104657053B (zh) | 一种在触摸屏终端利用多点手势实现特定功能的方法 | |
CN106815546A (zh) | 指纹识别方法及装置 | |
CN108717343A (zh) | 应用程序图标处理方法、装置以及移动终端 | |
TWI581122B (zh) | 電子設備及其密碼輸入方法 | |
CN107729131A (zh) | 一种事件处理方法、终端及计算机可读存储介质 | |
CN108008992A (zh) | 一种输入操作处理方法、处理装置及计算机可读存储介质 | |
CN107895575A (zh) | 屏幕录制方法、屏幕录制装置及电子终端 | |
CN110308824A (zh) | 一种红外触摸数据的处理方法、***及相关组件 | |
CN107025421A (zh) | 指纹识别方法和装置 | |
CN107168566A (zh) | 操作模式控制方法、装置及终端电子设备 | |
CN103902861A (zh) | 一种状态切换方法及一种电子设备 | |
CN113038273B (zh) | 视频帧处理方法、装置、存储介质及电子设备 | |
CN104331244A (zh) | 应用程序的执行方法 | |
CN108830674A (zh) | 出行订单产生方法、装置及终端设备 | |
CN105677187B (zh) | 图像的显示控制方法及装置 | |
CN104932744B (zh) | 一种触摸屏终端及其应用的操作方法 | |
CN112188107A (zh) | 摄像头的控制方法、装置、电子设备和存储介质 | |
CN110705723A (zh) | 缝制设备的保养提示方法/***、管理***、介质及终端 | |
CN105159555A (zh) | 一种用户设备控制方法及用户设备 | |
CN105930224B (zh) | 转储操作控制方法、装置及终端 | |
CN108762637A (zh) | 控制方法、装置及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18 Patentee after: GUANGDONG OPPO MOBILE TELECOMMUNICATIONS Corp.,Ltd. Address before: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18 Patentee before: GUANGDONG OPPO MOBILE TELECOMMUNICATIONS Corp.,Ltd. |
|
CP01 | Change in the name or title of a patent holder | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181127 |
|
CF01 | Termination of patent right due to non-payment of annual fee |