一种键鼠脚本处理的方法和装置与流程

文档序号:11829405阅读:207来源:国知局
一种键鼠脚本处理的方法和装置与流程

本发明涉及互联网技术领域,尤其涉及一种键鼠脚本处理的方法和装置。



背景技术:

键盘和鼠标均为用户设备的输入设备,当用户玩游戏或者进行编辑文档等窗口操作时,往往需要对某个操作过程进行重复执行,例如,重复点击鼠标左键,或者以一定的顺序重复点击键盘中的不同方向键。为了简化用户的重复操作,现有技术提出了一种模拟用户操作键盘和鼠标的方式。在该方式中,用户设备可以在用户第一次执行键鼠操作时,对用户的键鼠操作进行录制,获得键鼠脚本,并在后续对键鼠脚本进行回放,实现同一操作的自动执行。

现有技术中,脚本是以事件为单位进行录制的,除了鼠标移动和鼠标滚轮的滚动以外,键盘或鼠标上任何一个按键的操作,均包含按下与放开两个动作。在进行脚本录制时,用户设备将一个动作作为一个事件进行记录,与此对应的,针对某个按键的一次操作就包含了按下和放开两个事件。因此,键盘所涉及的事件包括每一个按键的按下事件和放开事件;鼠标所涉及的事件包括鼠标左右键、鼠标滚轮的按下事件和放开事件、鼠标滚轮滚动事件以及鼠标移动事件。在进行键鼠脚本录制的过程中,用户常常会触发一些对游戏状态不产生影响的操作,例如,用户随意移动鼠标,却没有点击键盘或者鼠标上的任何按键。这种单纯的鼠标移动不会导致游戏状态的改变,因此通常没有意义。虽然上述操作对游戏状态没有影响,但是电脑也会将该操作以事件的形式记录到键鼠脚本中,从而使键鼠脚本的数据量增大,同时使键鼠脚本回放复杂。实际应用中,通常将此类事件称之为冗余事件。此外,由于Windows系统机制本身的缺陷,在键鼠脚本录制过程中,往往会出现事件丢失现象,例如,用户点击了一下鼠标左键,但是键鼠脚本中,只录制了鼠标左键按下事件,却丢失了鼠标左键放开事件。 因此,像这种丢失放开事件的情况,会使得键鼠脚本回放结束后,因缺少放开事件而使模拟操作持续处于按下的状态,由此导致目的窗口或者其他窗口发生卡死的现象,使得用户无法对目的窗口或其他窗口进行打开、关闭、拖动等操作,进而出现Windows异常。



技术实现要素:

有鉴于此,本发明提供的一种键鼠脚本处理的方法和装置,能够去除冗余事件、补充缺少的必要事件,从而使键鼠脚本得到进一步优化。

依据本发明一个方面,提出了一种键鼠脚本处理的方法,所述方法包括:

获取待执行的键鼠脚本;

检测所述键鼠脚本中是否存在冗余事件,所述冗余事件为对所述键鼠脚本的回放状态不产生影响的事件;

若所述键鼠脚本中存在所述冗余事件,则将所述冗余事件删除;

检测所述键鼠脚本中是否缺少必要事件,所述必要事件为应当记录在所述键鼠脚本中的事件;

若所述键鼠脚本中缺少所述必要事件,则添加所述必要事件;

保存处理后的键鼠脚本。

依据本发明另一个方面,还提出了一种键鼠脚本处理的装置,所述装置包括:

获取单元,用于获取待执行的键鼠脚本;

检测单元,用于检测所述获取单元获取的所述键鼠脚本中是否存在冗余事件,所述冗余事件为对所述键鼠脚本的回放状态不产生影响的事件;

删除单元,用于当所述检测单元检测到所述键鼠脚本中存在所述冗余事件时,将所述冗余事件删除;

所述检测单元,还用于检测所述键鼠脚本中是否缺少必要事件,所述必要事件为应当记录在所述键鼠脚本中的事件;

添加单元,用于当所述检测单元检测到所述键鼠脚本中缺少所述必要事件时,添加所述必要事件;

保存单元,用于保存处理后的键鼠脚本。

借由上述技术方案,本发明提供的键鼠脚本处理的方法和装置,能够在获取待执行的键鼠脚本后,检测键鼠脚本中有无冗余事件以及是否缺少必要事件,当有冗余事件时,将冗余事件删除,当缺少必要事件时,添加必要事件,从而得到处理后的键鼠脚本。与现有技术中直接执行录制的键鼠脚本相比,本发明不但可以使键鼠脚本的数据量减小,而且还能够避免因缺少必要事件而造成Windows异常现象的出现。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了一种键鼠脚本处理的方法的流程图;

图2示出了另一种键鼠脚本处理的方法的流程图;

图3示出了一种键鼠脚本处理的装置的组成框图;

图4示出了另一种键鼠脚本处理的装置的组成框图。

具体实施方式

下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。

本发明实施例提供了一种键鼠脚本处理的方法,如图1所示,该方法包括:

101、获取待执行的键鼠脚本。

其中,键鼠脚本以事件的形式顺序记录用户对键盘或鼠标的每一次操作,并且记录相邻事件之间的时间间隔,构成一个存储有事件与时间间隔 的集合体。

示例性的,键鼠脚本中依次记录按键A按下事件、100ms、按键A放开事件、5s、按键B按下事件、80ms、按键B放开事件、8s、鼠标移动事件、50ms、鼠标移动事件、50ms、鼠标移动事件、1s、鼠标左键按下事件、90ms、鼠标左键放开事件、8s、按键回车按下事件,说明用户在整个操作过程中,先对按键A进行了操作,5s后,又对按键B进行了操作,8s后,又移动了鼠标,1s后,又对鼠标左键进行了操作,8s后,又对按键回车进行了操作。上述时间数值表示相邻事件之间的时间间隔,本步骤及以下方案中涉及的数值仅为举例说明,不作为对实际应用的具体限定。

需要说明的是,键鼠脚本中记录的每个事件均以一串字节的形式存储于终端,即每个事件占用一个或者多个连续字节的存储空间。每串字节携带的信息包括:事件类型、操作焦点的坐标。其中,事件类型包括:键盘按键按下事件、键盘按键放开事件、鼠标移动事件、鼠标滚轮滚动事件、鼠标按键按下事件和鼠标按键放开事件。例如,一个事件为按键A按下事件,则该事件的事件类型为键盘按键的按键A按下事件,操作焦点的坐标为(400,500),可知用户在终端坐标为(400,500)处,按下了按键A。

102、检测键鼠脚本中是否存在冗余事件。

由于键鼠脚本中的各个事件是按照时间顺序进行记录的,所以在检测键鼠脚本时,需要按照顺序检测键鼠脚本中的各个事件,检测键鼠脚本中是否存在冗余事件。其中,冗余事件为对键鼠脚本的回放状态不产生影响的事件,而回放状态是指在键鼠脚本回放过程中游戏等的运行状态。例如,用户在录制游戏键鼠操作过程中,随意移动鼠标,却未点击鼠标或键盘,并没有改变游戏的运行状态。又如,游戏规定仅使用键盘上的方向键就可以进行上下左右的操作,完成游戏中的任务,而在游戏键鼠录制中,用户对其他按键进行了操作,如对按键A、按键B、按键Shift等进行了操作,而这些对其他按键的操作没有改变游戏的运行状态。虽然上述操作没有对回放状态产生影响,但是在键鼠脚本录制过程中,同样会将这些操作以事件的形式记录下来,在键鼠脚本回放时,也会将这些操作过程重复一遍,因此将这些对键鼠脚本的回放状态无影响的事件称为冗余事件。

103、若键鼠脚本中存在冗余事件,则将冗余事件删除。

由于冗余事件对游戏等的运行状态没有影响,所以当终端检测到键鼠脚本中存在冗余事件时,可以将冗余事件删除,以减小键鼠脚本的数据量,同时,由于删除的冗余事件不会对回放状态产生影响,因此删除冗余事件不会改变键鼠脚本的回放结果。

此外,由于终端顺序检测键鼠脚本中的各个事件,所以当终端删除当前所检测到的冗余事件后,会继续按照事件的顺序对冗余事件之后的事件进行一一检测。

104、检测键鼠脚本中是否缺少必要事件。

其中,必要事件为应当记录在键鼠脚本中的事件,包括对回放状态产生影响的按下事件、放开事件、鼠标移动事件等。本步骤中,当终端检测键鼠脚本中是否缺少必要事件时,终端可以检测键鼠脚本的每一个按下事件最终是否放开,即是否有对应的放开事件。其原因在于,当键鼠脚本中缺少放开事件时,会使得键鼠脚本回放结束后,因缺少放开事件而使模拟操作持续处于按下的状态,由此导致目的窗口或者其他窗口发生卡死的现象,从而出现Windows异常。

105、若键鼠脚本中缺少必要事件,则添加必要事件。

当键鼠脚本中缺少必要事件时,会影响键鼠脚本的回放,甚至影响Windows系统的正常运行,因此需要在键鼠脚本中添加缺少的必要事件。例如,键鼠脚本中记录有按键T按下事件,但是在该事件之后却未检测到按键T放开事件,说明键鼠脚本中缺少必要事件按键T放开事件。因此,需要在按键T按下事件之后添加按键T放开事件,以保证键鼠脚本的正常回放,以及Windows系统的正常运行。

需要说明的是,上述多个步骤中包含了终端对键鼠脚本中必要事件的缺失的检测和处理,以及对键鼠脚本中冗余事件的检测和处理。然而本发明实施例对这两种情况的操作顺序并不作限定。终端获取待执行的键鼠脚本以后,可以先对整个键鼠脚本检测有无冗余事件的存在,并将所有的冗余事件删除,对于删除冗余事件后的键鼠脚本,终端再进行有无必要事件的缺失的检测,当有缺失时,进行添加处理;也可以先对整个键鼠脚本检 测有无必要事件的缺失,并添加缺失的必要事件,对于添加完缺失的必要事件后的键鼠脚本,终端再进行有无冗余事件的检测,当有冗余事件时,进行删除处理。

106、保存处理后的键鼠脚本。

在上述步骤对获取的待执行的键鼠脚本进行冗余事件的检测和处理,以及进行必要事件的缺失的检测和处理后,终端将处理完后的键鼠脚本进行保存,以便后续进行回放时执行该键鼠脚本。

本发明实施例提供的键鼠脚本处理的方法,能够在获取待执行的键鼠脚本后,检测键鼠脚本中有无冗余事件以及是否缺少必要事件,当有冗余事件时,将冗余事件删除,当缺少必要事件时,添加必要事件,从而得到处理后的键鼠脚本。与现有技术中直接执行录制的键鼠脚本相比,本发明不但可以使键鼠脚本的数据量减小,而且还能够避免因缺少必要事件而造成Windows异常现象的出现。

进一步的,作为对上述实施例的扩展与细化,本发明实施例还提供了另一种键鼠脚本处理的方法,如图2所示,该方法包括:

201、获取待执行的键鼠脚本。

202、判断键鼠脚本中是否存在与预设优化条件匹配的事件集合。

其中,预设优化条件为终端预设的用于判断是否为冗余事件的策略。通过判断键鼠脚本中是否存在与预设优化条件匹配的事件集合,可以获得与预设优化条件匹配的事件集合,从而确定该事件集合中的事件为冗余事件,进而对冗余事件进行删除处理,使得键鼠脚本的数据量减小。

下面对不同情况的事件或者事件集合进行判断,从而对键鼠脚本中的冗余事件进行处理:

第一种情况:检测键鼠脚本中是否存在多个连续的鼠标移动事件。若键鼠脚本中存在多个连续的鼠标移动事件,则确定多个连续的鼠标移动事件与预设优化条件匹配。

在实际应用中,当用户在进行游戏的键鼠录制过程中,往往会出于非操作目的移动鼠标,而不进行附加操作(如按住鼠标左键移动鼠标,按住键盘上的按键移动鼠标等),例如不小心碰到鼠标,或者因个人习惯而单纯 移动鼠标。对于这种只进行鼠标移动的操作,只是改变了鼠标的操作焦点的坐标,而未对游戏的状态产生影响,因此可以将这些鼠标移动的事件归为冗余事件,所以预设优化条件中包含多个连续的鼠标移动事件的情况。由此可知,当终端检测到键鼠脚本中存在多个连续的鼠标移动事件时,会确定该多个连续的鼠标移动事件与预设优化条件相匹配。

需要说明的是,对于鼠标的移动操作,虽然在用户看来是一次连续的移动过程,但是对于终端而言,一次鼠标移动过程是由成百上千个离散点所组成的近似连续的移动操作。因此,在进行键鼠脚本录制时,终端会记录下成百上千个事件(每个事件都记录有鼠标移动的事件类型,以及对应离散点的坐标信息),所以鼠标的移动操作对键鼠脚本数据量的占用较大,如果判断出在进行鼠标移动的同时,没有附加其他操作(如按住鼠标左键移动鼠标,按住键盘上的按键移动鼠标等),而只是单独进行鼠标移动,那么终端就将这样的鼠标移动操作所对应的多个连续的鼠标移动事件删除,从而可以在不影响键鼠脚本的回放状态的前提下,降低键鼠脚本的数据量。

示例性的,键鼠脚本中的事件依次为按键Q按下事件、按键Q放开事件、鼠标移动事件、鼠标移动事件、鼠标移动事件、按键回车按下事件、按键回车放开事件,则终端可以检测到该键鼠脚本中存在连续的3个鼠标移动事件。因此,终端可以确定该连续的3个鼠标移动事件与预设优化条件匹配,从而将这3个鼠标移动事件定为冗余事件,并将其做删除处理。

进一步的,当将键鼠脚本中所有的多个连续的鼠标移动事件删除之后,在键鼠脚本回放的过程中,会出现操作焦点瞬间从一个点转移到另一个相距较远的点,而没有用户在录制过程中的鼠标慢慢移动的焦点轨迹。然而用户进行鼠标移动,往往是为了改变操作焦点的坐标,从而进一步点击鼠标或者键盘上的键,进而改变游戏状态。因此,为了保留用户的正常鼠标移动操作,需要对第一种情况进行改进,以防止在“剔除”无用鼠标移动操作的同时,误将正常的鼠标移动操作删除,具体的,该改进方案如下:

检测多个连续的鼠标移动事件中最后一个事件之后的时间间隔是否大于第一预设时间阈值。若多个连续的鼠标移动事件中最后一个事件之后的时间间隔大于第一预设时间阈值,则确定多个连续的鼠标移动事件与预设 优化条件匹配。

其中,第一预设时间阈值可以为后台统计的应用操作的最长时间阈值。

实际应用中,当用户无意间移动了鼠标,或者随意移动鼠标后,往往并无进行下一步操作的目的和意愿,最后一个鼠标移动事件与下一个操作事件之间的时间间隔会远远大于正常操作事件之间的时间间隔,因此可以通过这一特点对无用的鼠标移动操作和正常的鼠标移动操作进行区分。例如,用户在触发鼠标移动操作后,未立即进行鼠标点击操作或者键盘上的按键操作,说明用户并不是为了进行下一步的点击而进行了鼠标移动的操作,所以这些由于用户无目的地移动鼠标而记录在键鼠脚本中的鼠标移动事件可以被归为冗余事件。因此,预设优化条件中包含在多个连续的鼠标移动事件后长时间未出现其他类型事件的情况。由此可知,当终端检测到多个连续的鼠标移动事件中最后一个事件之后的时间间隔大于第一预设时间阈值时,可以确定该多个连续的鼠标移动事件与预设优化条件匹配,并将该多个连续的鼠标移动事件归为冗余事件,从而将其删除,以减小键鼠脚本的数据量。

示例性的,键鼠脚本中的事件以及事件间隔依次为按键C按下事件、100ms、按键C放开事件、5s、鼠标移动事件、50ms、鼠标移动事件、50ms、鼠标移动事件、50ms、鼠标移动事件、5min、键盘按键向右键按下事件、40ms、键盘按键向右键按下事件、40ms、键盘按键向右键按下事件、90ms、键盘按键向右键放开事件。若第一预设时间阈值为4min,则终端可以检测到4个连续的鼠标移动事件中第四个鼠标移动事件之后的时间间隔大于4min,由此可以确定该4个连续的鼠标移动事件与预设优化条件匹配,并将其确定为冗余事件,从而对冗余事件做删除处理,使键鼠脚本得到进一步优化。

进一步的,在键鼠脚本录制的过程中,常常出现用户一不小心压在键盘上,使键盘上的按键持续处于按下状态,而这些键的按下并未导致改变回放状态等问题。虽然这些键被长时间按下,却未改变回放状态,但是这些按下与放开的操作也会记录在键鼠脚本中,键鼠脚本在回放过程中也会重复这些操作。因此,这些未对回放状态产生影响的长按操作所对应的事 件可以被归为冗余事件。由此可知,预设优化条件中包括未对回放状态产生影响的长按操作的情况。其具体检测方式如下述第二种情况:

第二种情况:检测多个连续的相同按下事件中相邻事件之间的时间间隔之和是否大于第二预设时间阈值。若时间间隔之和大于第二预设时间阈值,则确定多个连续的相同按下事件与预设优化条件匹配。

其中,第二预设时间阈值可以为应用开发商提供的应用操作的最长时间阈值,也可以为后台统计的应用操作的最长时间阈值。

需要说明的是,与鼠标移动类似,长按操作对于用户来说感觉是一个操作,但是实际上,长按操作在终端记录了多个连续的相同按下事件。因此,在计算长按操作的时长时,需要将该多个连续的相同按下事件中相邻事件间的时间间隔进行相加,以获得产生该多个连续的相同按下事件的总时长。

当长按按键的时间超过了应用开发商提供的应用操作的最长时间阈值,或者后台统计的应用操作的最长时间阈值时,可以确定该长按操作为非正常情况下进行的长按操作。因此,当终端检测到多个连续的相同按下事件中相邻事件之间的时间间隔之和大于第二预设时间阈值时,可以确定多个连续的相同按下事件与预设优化条件匹配,并将其归为冗余事件,从而将其删除,以减小键鼠脚本的数据量。

示例性的,键鼠脚本中有1001个连续按键A按下事件,相邻事件的时间间隔均为100ms。当第二预设时间阈值为60s时,由于1001个连续按键A按下事件的时间间隔之和为1000*100=100000ms=100s,大于60s,所以该1001个连续按键A按下事件为与预设优化条件匹配的事件集合。因此可以将该1001个连续按键A按下事件归为冗余事件,将其删除。

实际应用中,可以将游戏设计中涉及的按键的最大长按时长作为第二预设时间阈值使用,该最大长按时长可以由游戏开发商提供,也可以由游戏服务商后台统计得出,并写入到终端的配置文件(例如:***.dll文件)中。

需要说明的是,上述方案中的涉及的长按按键情况,是基于对回放状态无影响的基础之上的,因此,在将上述长按按键对应的多个连续相同的 按下事件进行删除前,需要先判断该按下事件是否为对回放状态无影响的按键所触发的事件。当该按下事件为对回放状态无影响的按键所触发的事件时,才可将其删除。对于判断是否为对回放状态无影响的按键所触发的事件的具体实现方式如下述第三种情况:

第三种情况:检测键鼠脚本中是否存在预设按键以外的按键所触发的事件。若键鼠脚本中存在预设按键以外的按键所触发的事件,则确定预设按键以外的按键所触发的事件与预设优化条件匹配。

其中,预设按键可以为应用开发商提供的用于触发应用操作的按键,也可以为后台统计的用于触发应用操作的按键。实际应用中,预设按键信息可以被预先写入到终端的配置文件中。

由于游戏开发商在开发游戏时,往往会设置固定的若干按键(包括键盘或鼠标上的按键),进行游戏的编辑操作,而其他按键并不起作用。在游戏键鼠脚本录制过程中,用户往往会有意或无意按一些预设按键以外的按键,虽然针对这些按键的操作并不会对游戏状态产生改变,但仍然被记录在键鼠脚本当中,因此,这些预设按键以外的按键所触发的事件可以被归为冗余事件。由此可知,预设优化条件中包括预设按键以外的按键触发事件的情况。

具体的,终端可以对每一个预设按键触发的事件做预设按键的标记。当终端检测到当前事件未携带预设按键标记时,可以确定该当前事件为预设按键以外的按键所触发的事件,并且可以确定该事件与预设优化条件匹配;当终端检测到当前事件携带预设按键标记时,可以确定当前事件是预设按键所触发的事件,则继续对下一事件进行检测。

需要说明的是,上述第三种情况的方案,不仅可以实现对第二种情况中的多个相同按下事件的判断,还可以实现对键鼠脚本中的其他任何事件的判断,从而将键鼠脚本中的所有预设按键以外的按键所触发的事件都检测出来,并做进一步处理。

进一步的,当用户对游戏窗口进行键鼠脚本录制时,可能还会对其他窗口进行操作,然而由于在键鼠录制过程中,终端仅针对键盘或者鼠标触发的操作进行录制,而不区分窗口,所以也会将用户对其他窗口的操作录 制进去,并且也会在键鼠脚本回放中回放这些操作。

例如,用户在进行游戏的键鼠脚本录制过程中,在某一时刻,用户点击了聊天软件的图标,并且找到一个叫张三的好友,向他发送了一个消息“周末一起出去玩吧!”。因此,在该聊天软件的图标位置不变的情况下,在键鼠脚本中的同一时刻,鼠标会如录制过程一样,点击聊天软件的图标,并向张三发送相同的消息。而这种情况往往会对用户造成影响,因此,这些对其他窗口的操作所对应的事件可以被归为冗余事件。由此可知,预设优化条件中包括对其他窗口进行操作的情况。判断是否有对应其他窗口的事件的具体实现方式如下述第四种情况:

第四种情况:从事件中读取操作焦点的坐标,并判断坐标是否位于目标窗口中。若坐标不位于目标窗口中,则确定不位于目标窗口的坐标对应的事件与预设优化条件匹配。

如上述步骤101中所述,键鼠脚本中的每个事件均携带关于操作焦点的坐标的信息,所以可以先获取目标窗口的坐标范围,然后从键鼠脚本的各个事件中读取操作焦点的坐标。通过将读取事件的操作焦点的坐标与目标窗口的坐标范围相匹配,来判断读取的事件的操作焦点的坐标是否位于目标窗口。当读取的事件的操作焦点的坐标不位于目标窗口的坐标范围内时,终端确定不位于目标窗口的坐标对应的事件与预设优化条件匹配。

203、若键鼠脚本中存在与预设优化条件匹配的事件集合,则确定与预设优化条件匹配的事件集合中的事件为冗余事件,并将冗余事件删除。

由于在步骤202中提到预设优化条件为终端预设的用于判断是否为冗余事件的策略,所以与预设优化条件相匹配的事件为冗余事件。当检测到键鼠脚本中存在与预设优化条件匹配的事件集合时,将这些与预设优化条件相匹配的事件集合中的事件确定为冗余事件,并将所有冗余事件进行删除处理,以减小键鼠脚本的数据量。

进一步的,由于键鼠脚本中除了记录各个事件外,还记录了相邻事件之间的时间间隔,所以当对所有的冗余事件进行删除处理后,会出现多个连续时间间隔的情况。又由于终端在执行键鼠脚本时,只是根据键鼠脚本中记录的时间间隔的时长进行暂停,而依次执行多个连续的时间间隔,与 直接执行一个时长与所有时间间隔的时长之和相等的时间间隔效果相同,即所暂停的时间长短是一样的。然而,每个时间间隔会分别占用一定的存储空间,所以为了减小键鼠脚本的数据量,可以将多个连续的时间间隔合并为一个时间间隔。

示例性的,将冗余事件删除后,键鼠脚本中有10个连续的时间间隔,其数值分别为100ms、1s、100ms、100ms、10s、50ms、50ms、2s、40ms、60ms,所以将这10个数值整个为1个数值后的值为13.5s。若这10个时间间隔分别占用一个字节的存储空间,则总共占用10个字节的存储空间,然而将这10个时间间隔整合为1个时间间隔后,所占用的存储空间仅为一个字节,从而减小了键鼠脚本的数据量,节省了键鼠脚本在终端中的存储空间。

204、检测当前事件之后是否缺少与当前事件对应的放开事件。

在上述实施例中提到,缺少放开事件会影响键鼠脚本的回放状态,甚至影响系统的正常运行,因此保证每个按下事件之后均有对应的放开事件是必要的,从而需要检测当前事件之后是否缺少与当前事件对应的放开事件。

需要说明的是,实际应用中,当前事件可能是按下事件,也可能是放开事件,也可能是鼠标移动事件和鼠标滚轮滚动事件。当当前事件为鼠标移动事件或者鼠标滚轮滚动事件时,直接继续检测下一事件。当当前事件为按下事件时,对应该当前事件的放开事件为与当前事件操作相反的事件;而当当前事件为放开事件时,对应该当前事件的放开事件为该当前事件本身。例如,若当前事件为按键M按下事件,则对应该当前事件的放开事件为按键M放开事件;若当前事件为按键M放开事件,则对应该当前事件的放开事件为按键M放开事件。

实际应用中,终端每执行一个按下事件和与其对应的放开事件,就可以完成一次按键的模拟操作,而当在放开事件之后重复添加相同的放开事件时,对按键的模拟操作并无影响,因为本方案中,只要保证一个按键在按下之后一定可以放开,即按下事件之后一定存在放开事件,而无需限制放开事件的数量。因此在添加放开事件时,无需对当前事件的事件类型进 行判断。

进一步的,为了避免当前事件为放开事件时,也对其后的事件进行检测,而降低对键鼠脚本的检测速度,对上述方案进行如下改进:

在检测当前事件之后是否缺少与当前事件对应的放开事件前,先检测当前事件是否为按下事件。若当前事件为按下事件,则再继续检测当前事件之后是否缺少放开事件;若当前事件为放开事件,则不再对当前事件之后的事件进行检测,而直接对与当前事件相邻的下一事件进行按下事件的检测,并判断后续是否需要进行有无放开事件的检测,进而进行相应的后续操作。

需要说明的是,无论是否需要进行按下事件的判断,当对当前事件之后的事件进行检测时,该检测范围都可以为仅针对与当前事件相邻的下一事件进行检测,也可以在与当前事件相邻的若干事件中进行检测,也可以在当前事件之后的所有事件内进行检测。下面针对以下两种检测方式进行介绍:

方式一:检测当前事件之后的所有事件中是否缺少放开事件。

终端遍历当前事件之后的所有事件,检测是否缺少对应当前事件的放开事件。这种对于当前事件之后的所有事件进行遍历检测的方式,可以防止事件检测遗漏现象的产生。

在实际应用中,除了长按某一按键外,用户对键盘或者鼠标的点击往往是瞬间按下、瞬间放开,因此键鼠脚本中录制的用户对键盘或鼠标的点击操作,往往是将一个按键按下事件与该按键的放开事件进行相邻记录,所以为了减少检测时间,可以采用以下方式二进行检测。

方式二:检测与当前事件相邻的下一事件是否为放开事件。

若与当前事件相邻的下一事件是对应当前事件的放开事件,则终端继续检测与当前事件相邻的下一事件的下一事件是否有对应的放开事件;若与当前事件相邻的下一事件不是对应当前事件的放开事件,则在当前事件之后添加放开事件。

205、若当前事件之后缺少与当前事件对应的放开事件,则在当前事件之后添加放开事件。

若当前事件之后缺少与当前事件对应的放开事件,则有可能对键鼠脚本的回放产生影响,甚至导致Windows出现异常,因此应该在当前事件之后添加对应的放开事件以保证终端的正常运行。

由于无论对应当前事件的放开事件位于哪个位置,只要位于当前事件之后,都不会对回放结果或系统产生影响,所以在当前事件之后添加放开事件的具体实现方式可以为在当前事件与下一事件之间添加放开事件,可以为在当前事件之后的所有事件中,任意两个事件之间添加放开事件,还可以为在当前事件之后的所有事件之后添加放开事件,本实施例不对放开事件的具体添加位置进行限定。下面对不同的添加方式进行介绍:

第一种方式:在当前事件之后、与当前事件相邻的下一事件之前,添加放开事件。

一般性的,由于每个事件和与其对应的放开事件往往是相邻记录的,所以为了与键鼠脚本录制过程中的事件的顺序相一致,可以在当前事件之后、与当前事件相邻的下一事件之前,添加放开事件。

在实际应用中,用户常常会长按键盘或鼠标上的按键,而对于长按按键的情况,终端会在键鼠脚本中记录多个连续相同的按下事件,例如,当用户长按按键空格x秒时,计算机会记录y个连续相同的按键空格按下事件。因此为了避免终端对多个连续相同的事件一一进行检测,并多次添加相同的放开事件,而造成键鼠脚本回放缓慢,可以采用如下方式进行放开事件的添加:

第二种方式:检测与当前事件相邻的连续至少一个事件是否均与当前事件相同。若与当前事件相邻的连续至少一个事件均与当前事件相同,则在连续至少一个事件中的最后一个事件之后,添加放开事件;若与当前事件相邻的下一事件与当前事件不同,则在当前事件之后添加放开事件。

示例性的,键鼠脚本中记录的事件依次为按键W按下事件、按键W放开事件、按键Y按下事件、按键Y按下事件、按键Y按下事件、鼠标移动事件、鼠标移动事件、鼠标移动事件、按键U按下事件、按键U放开事件。若当前事件为第一个按键Y按下事件,则在检测到当前事件之后缺少对应的放开事件后,终端继续检测与当前事件相邻的连续至少一个事件是否均 与当前事件相同。检测结果为与当前事件相邻的连续两个事件与当前事件相同,因此终端在与当前事件相邻的连续两个事件中的第二个事件之后添加按键Y放开事件。

第三种方式:在所有事件之后添加放开事件。

由于只要每一个按下事件之后存在对应的放开事件,就不影响键鼠脚本的回放结果,所以为了将键鼠脚本中已有的事件与添加的放开事件区分开,可以在键鼠脚本中的所有事件之后添加放开事件,使得键鼠脚本中的最后一个事件之前均为已有的、未做添加的事件,使得键鼠脚本中的最后一个事件之后均为添加的事件。

在这种添加的事件均位于键鼠脚本中的已有事件之后的方式下,对于相邻或者不相邻的若干相同的事件均不存在对应的放开事件时,只要对该若干相同的事件中的第一个事件添加了对应的放开事件,那么其他事件之后便均有对应的放开事件,因此,避免了重复添加放开事件的情况。

进一步的,在实际应用中,用户常常需要使用一些组合键来完成必要的操作,如用户按下按键Ctrl后不放开,再按按键X,完成剪切的操作,而这个剪切操作在计算机中依次记录了按键Ctrl按下事件、按键X按下事件,在按键X按下事件之后才记录按键Ctrl放开事件和按键X放开事件,因此,当检测到按键Ctrl按下事件之后不存在按键Ctrl放开事件时,在按键Ctrl按下事件与按键X按下事件之间添加按键Ctrl放开事件,则会使得剪切的功能失效,因此为了进一步优化键鼠脚本,使其在避免产生Windows异常的基础上,保证键鼠脚本回放结果不变,可以采用如下第四种方式进行操作:

第四种方式:检测当前事件是否为事件组合中的事件。若当前事件为事件组合中的事件,则在事件组合中的最后一个事件之后,添加对应当前事件的放开事件;若当前事件不是事件组合中的事件,则在当前事件之后添加对应当前事件的放开事件。

其中,事件组合由触发组合键所产生的多个事件组成,事件组合包括按键Ctrl事件、按键Alt事件、按键Shift事件、按键Fn事件。由于组合键是由按键Ctrl、按键Alt、按键Shift、按键Fn等特殊按键与键盘上的其他 字母等普通按键组成的,所以事件组合中还包括字母按键等其他按键的对应事件。

当检测到当前事件为事件组合中的事件时,在事件组合中的最后一个事件之后,添加对应当前事件的放开事件,可以保证该事件组合触发的组合键的特殊功能不被破坏。

示例性的,键鼠脚本中记录的事件依次为按键O按下事件、按键O放开事件、按键Ctrl按下事件、按键C按下事件、按键C放开事件、按键M按下事件、鼠标移动事件、鼠标移动事件、按键回车按下事件、按键回车放开事件。若当前事件为按键Ctrl按下事件,则可以检测到在按键Ctrl按下事件之后缺少按键Ctrl放开事件,而按键Ctrl与按键C又为组合键,事件组合中的事件有按键Ctrl按下事件、按键C按下事件、按键C放开事件,因此为避免破坏组合键按键Ctrl与按键C组合产生的复制功能,终端在事件组合中的最后一个事件(即按键C放开事件)之后添加按键Ctrl放开事件;若当前事件为按键M按下事件,则可以检测到按键M按下事件之后缺少按键M放开事件,且按键M按下事件不是事件组合中的事件,所以在按键M按下事件之后添加按键M放开事件。

可选的,在实际应用中,用户在使用组合键时,往往对后按下的按键先放开,对先按下的按键后放开,例如,用户使用按键Ctrl、按键C实现复制功能时,往往是先按下按键Ctrl,在按住按键Ctrl的过程中,再按下按键C;而在放开按键时,往往是先放开按键C,再放开按键Ctrl。因此为了与用户使用按键的顺序一致,对上述第四种方式做如下改进:

若当前事件为事件组合中的事件,则在检测到当前事件之后缺少放开事件后,继续检测当前事件之后的事件组合中的事件之后是否缺少对应的放开事件。若缺少对应的放开事件,则在事件组合中的最后一个事件之后,按照事件组合中事件的顺序反向添加放开事件;若不缺少对应的放开事件,则在事件组合中的最后一个事件之后,添加对应当前事件的放开事件。

示例性的,键鼠脚本中记录的事件依次为按键J按下事件、按键J放开事件、按键Ctrl按下事件、按键C按下事件、按键X按下事件、按键X放 开事件、鼠标移动事件、鼠标移动事件、鼠标左键按下事件、鼠标左键放开事件。若当前事件为按键Ctrl按下事件,则在检测到按键Ctrl按下事件之后缺少按键Ctrl放开事件后,继续检测到按键C按下事件之后缺少按键C放开事件。因此,在按键C按下事件之后按事件顺序反向添加放开事件,即依次添加按键C放开事件、按键Ctrl放开事件,以使得事件在键鼠脚本中的顺序与用户的操作顺序保持一致。

需要说明的是,对于上述不同的添加放开事件的方式,在添加对应当前事件的放开事件之后,终端会对该添加的放开事件做添加标记,以区分已有的键鼠脚本中的事件和添加的事件。该标记与上述事件类型、操作焦点的坐标等信息的存储形式相同,均可能占用一位、一个字节,或者多个字节的存储空间。当检测到当前事件具有添加标记时,终端直接对下一事件以及下一事件之后的事件进行检测,而不再对当前事件之后的事件进行检测。

206、保存处理后的键鼠脚本。

本步骤与上述步骤106所述的保存处理后的键鼠脚本的内容一致,在此不再赘述。

进一步的,作为对上述各实施例的实现,本发明实施例还提供了一种键鼠脚本处理的装置,如图3所示,该装置包括:获取单元31、检测单元32、删除单元33、添加单元34和保存单元35。其中,

获取单元31,用于获取待执行的键鼠脚本;

检测单元32,用于检测获取单元31获取的键鼠脚本中是否存在冗余事件,冗余事件为对键鼠脚本的回放状态不产生影响的事件;

删除单元33,用于当检测单元32检测到键鼠脚本中存在冗余事件时,将冗余事件删除;

检测单元32,还用于检测键鼠脚本中是否缺少必要事件,必要事件为应当记录在键鼠脚本中的事件;

添加单元34,用于当检测单元32检测到键鼠脚本中缺少必要事件时,添加必要事件;

保存单元35,用于保存处理后的键鼠脚本。

进一步的,检测单元32,用于判断获取单元31获取的键鼠脚本中是否存在与预设优化条件匹配的事件集合;

删除单元33,用于当检测单元32检测到键鼠脚本中存在与预设优化条件匹配的事件集合时,确定与预设优化条件匹配的事件集合中的事件为冗余事件,并将冗余事件删除。

进一步的,如图4所示,检测单元32,包括:

第一检测模块321,用于检测键鼠脚本中是否存在多个连续的鼠标移动事件;

第一确定模块322,用于当第一检测模块321检测到键鼠脚本中存在多个连续的鼠标移动事件时,确定多个连续的鼠标移动事件与预设优化条件匹配。

第一检测模块321,还用于在确定多个连续的鼠标移动事件与预设优化条件匹配之前,检测多个连续的鼠标移动事件中最后一个事件之后的时间间隔是否大于第一预设时间阈值;

第一确定模块322,还用于当第一检测模块321检测到多个连续的鼠标移动事件中最后一个事件之后的时间间隔大于第一预设时间阈值时,确定多个连续的鼠标移动事件与预设优化条件匹配。

第二检测模块323,用于检测多个连续的相同按下事件中相邻事件之间的时间间隔之和是否大于第二预设时间阈值;

第二确定模块324,用于当第二检测模块323检测到时间间隔之和大于第二预设时间阈值时,确定多个连续的相同按下事件与预设优化条件匹配。

第二检测模块323使用的第二预设时间阈值为应用开发商提供的应用操作的最长时间阈值,或者为后台统计的应用操作的最长时间阈值。

第三检测模块325,用于检测键鼠脚本中是否存在预设按键以外的按键所触发的事件;

第三确定模块326,用于当第三检测模块325检测到键鼠脚本中存在预设按键以外的按键所触发的事件时,确定预设按键以外的按键所触发的事件与预设优化条件匹配。

第三检测模块325使用的预设按键为应用开发商提供的用于触发应用 操作的按键,或者为后台统计的用于触发应用操作的按键。

读取模块327,用于从事件中读取操作焦点的坐标;

判断模块328,用于判断读取模块327读取的坐标是否位于目标窗口;

第四确定模块329,用于当判断模块328判断结果为坐标不位于目标窗口时,确定不位于目标窗口的坐标对应的事件与预设优化条件匹配。

删除单元33,还用于在将冗余事件删除之后,将多个连续的时间间隔合并为一个时间间隔。

进一步的,检测单元32,用于检测当前事件之后是否缺少与当前事件对应的放开事件;

添加单元34,用于当检测单元32检测到当前事件之后缺少与当前事件对应的放开事件时,在当前事件之后添加放开事件。

进一步的,如图4所示,检测单元32,包括:

第四检测模块3210,用于检测当前事件是否为按下事件,若当前事件为按下事件,则检测当前事件之后是否缺少放开事件。

第五检测模块3211,用于检测当前事件之后的所有事件中是否缺少放开事件。

第六检测模块3212,用于检测与当前事件相邻的下一事件是否为放开事件。

进一步的,如图4所示,添加单元34,包括:

第一添加模块341,用于在当前事件之后、与当前事件相邻的下一事件之前,添加放开事件。

第一检测模块342,用于检测与当前事件相邻的连续至少一个事件是否均与当前事件相同;

第二添加模块343,用于当第一检测模块342检测到与当前事件相邻的连续至少一个事件均与当前事件相同时,在连续至少一个事件中的最后一个事件之后,添加放开事件。

第三添加模块344,用于在所有事件之后添加放开事件。

第二检测模块345,用于检测当前事件是否为事件组合中的事件,事件 组合由触发组合键所产生的多个事件组成;

第四添加模块346,用于当第二检测模块345检测到当前事件为事件组合中的事件时,在事件组合中的最后一个事件之后,添加对应当前事件的放开事件。

本发明实施例提供的键鼠脚本处理的装置,能够在获取待执行的键鼠脚本后,检测键鼠脚本中有无冗余事件以及是否缺少必要事件,当有冗余事件时,将冗余事件删除,当缺少必要事件时,添加必要事件,从而得到处理后的键鼠脚本。与现有技术中直接执行录制的键鼠脚本相比,本发明不但可以使键鼠脚本的数据量减小,而且还能够避免因缺少必要事件而造成Windows异常现象的出现。

本发明实施例公开了:

A1、一种键鼠脚本处理的方法,所述方法包括:

获取待执行的键鼠脚本;

检测所述键鼠脚本中是否存在冗余事件,所述冗余事件为对所述键鼠脚本的回放状态不产生影响的事件;

若所述键鼠脚本中存在所述冗余事件,则将所述冗余事件删除;

检测所述键鼠脚本中是否缺少必要事件,所述必要事件为应当记录在所述键鼠脚本中的事件;

若所述键鼠脚本中缺少所述必要事件,则添加所述必要事件;

保存处理后的键鼠脚本。

A2、根据A1所述的方法,所述检测所述键鼠脚本中是否存在冗余事件,包括:

判断所述键鼠脚本中是否存在与预设优化条件匹配的事件集合;

所述若所述键鼠脚本中存在所述冗余事件,则将所述冗余事件删除,包括:

若所述键鼠脚本中存在与预设优化条件匹配的事件集合,则确定所述与预设优化条件匹配的事件集合中的事件为冗余事件,并将所述冗余事件删除。

A3、根据A2所述的方法,所述判断所述键鼠脚本中是否存在与预设 优化条件匹配的事件集合,包括:

检测所述键鼠脚本中是否存在多个连续的鼠标移动事件;

若所述键鼠脚本中存在多个连续的鼠标移动事件,则确定所述多个连续的鼠标移动事件与所述预设优化条件匹配。

A4、根据A3所述的方法,在所述确定所述多个连续的鼠标移动事件与所述预设优化条件匹配之前,所述方法进一步包括:

检测所述多个连续的鼠标移动事件中最后一个事件之后的时间间隔是否大于第一预设时间阈值;

所述确定所述多个连续的鼠标移动事件与所述预设优化条件匹配,包括:

若所述多个连续的鼠标移动事件中最后一个事件之后的时间间隔大于所述第一预设时间阈值,则确定所述多个连续的鼠标移动事件与所述预设优化条件匹配。

A5、根据A2所述的方法,所述判断所述键鼠脚本中是否存在与预设优化条件匹配的事件集合,包括:

检测多个连续的相同按下事件中相邻事件之间的时间间隔之和是否大于第二预设时间阈值;

若所述时间间隔之和大于所述第二预设时间阈值,则确定所述多个连续的相同按下事件与所述预设优化条件匹配。

A6、根据A5所述的方法,所述第二预设时间阈值为应用开发商提供的应用操作的最长时间阈值;

或者,所述第二预设时间阈值为后台统计的应用操作的最长时间阈值。

A7、根据A2所述的方法,所述判断所述键鼠脚本中是否存在与预设优化条件匹配的事件集合,包括:

检测所述键鼠脚本中是否存在预设按键以外的按键所触发的事件;

若所述键鼠脚本中存在预设按键以外的按键所触发的事件,则确定所述预设按键以外的按键所触发的事件与所述预设优化条件匹配。

A8、根据A7所述的方法,所述预设按键为应用开发商提供的用于触发应用操作的按键;

或者,所述预设按键为后台统计的用于触发应用操作的按键。

A9、根据A2所述的方法,所述判断所述键鼠脚本中是否存在与预设优化条件匹配的事件集合,包括:

从事件中读取操作焦点的坐标;

判断所述坐标是否位于目标窗口;

若所述坐标不位于所述目标窗口,则确定不位于所述目标窗口的所述坐标对应的事件与所述预设优化条件匹配。

A10、根据A1至A9中任意一项所述的方法,在所述将所述冗余事件删除之后,所述方法进一步包括:

将多个连续的时间间隔合并为一个时间间隔。

A11、根据A1所述的方法,所述检测所述键鼠脚本中是否缺少必要事件,包括:

检测当前事件之后是否缺少与所述当前事件对应的放开事件;

所述若所述键鼠脚本中缺少所述必要事件,则添加所述必要事件,包括:

若所述当前事件之后缺少与所述当前事件对应的放开事件,则在所述当前事件之后添加所述放开事件。

A12、根据A11所述的方法,所述检测当前事件之后是否缺少与所述当前事件对应的放开事件,包括:

检测所述当前事件是否为按下事件;

若所述当前事件为按下事件,则检测所述当前事件之后是否缺少所述放开事件。

A13、根据A11所述的方法,所述检测当前事件之后是否缺少与所述当前事件对应的放开事件,包括:

检测所述当前事件之后的所有事件中是否缺少所述放开事件。

A14、根据A11所述的方法,所述检测当前事件之后是否缺少与所述当前事件对应的放开事件,包括:

检测与所述当前事件相邻的下一事件是否为所述放开事件。

A15、根据A11所述的方法,所述在所述当前事件之后添加所述放开 事件,包括:

在所述当前事件之后、与所述当前事件相邻的下一事件之前,添加所述放开事件。

A16、根据A11所述的方法,所述在所述当前事件之后添加所述放开事件,包括:

检测与所述当前事件相邻的连续至少一个事件是否均与所述当前事件相同;

若与所述当前事件相邻的连续至少一个事件均与所述当前事件相同,则在所述连续至少一个事件中的最后一个事件之后,添加所述放开事件。

A17、根据A11所述的方法,所述在所述当前事件之后添加所述放开事件,包括:

在所有事件之后添加所述放开事件。

A18、根据A11所述的方法,所述在所述当前事件之后添加所述放开事件,包括:

检测所述当前事件是否为事件组合中的事件,所述事件组合由触发组合键所产生的多个事件组成;

若所述当前事件为事件组合中的事件,则在所述事件组合中的最后一个事件之后,添加对应所述当前事件的放开事件。

B19、一种键鼠脚本处理的装置,所述装置包括:

获取单元,用于获取待执行的键鼠脚本;

检测单元,用于检测所述获取单元获取的所述键鼠脚本中是否存在冗余事件,所述冗余事件为对所述键鼠脚本的回放状态不产生影响的事件;

删除单元,用于当所述检测单元检测到所述键鼠脚本中存在所述冗余事件时,将所述冗余事件删除;

所述检测单元,还用于检测所述键鼠脚本中是否缺少必要事件,所述必要事件为应当记录在所述键鼠脚本中的事件;

添加单元,用于当所述检测单元检测到所述键鼠脚本中缺少所述必要事件时,添加所述必要事件;

保存单元,用于保存处理后的键鼠脚本。

B20、根据B19所述的装置,所述检测单元,用于判断所述获取单元获取的所述键鼠脚本中是否存在与预设优化条件匹配的事件集合;

所述删除单元,用于当所述检测单元检测到所述键鼠脚本中存在与预设优化条件匹配的事件集合时,确定所述与预设优化条件匹配的事件集合中的事件为冗余事件,并将所述冗余事件删除。

B21、根据B20所述的装置,所述检测单元,包括:

第一检测模块,用于检测所述键鼠脚本中是否存在多个连续的鼠标移动事件;

第一确定模块,用于当所述第一检测模块检测到所述键鼠脚本中存在多个连续的鼠标移动事件时,确定所述多个连续的鼠标移动事件与所述预设优化条件匹配。

B22、根据B21所述的装置,所述第一检测模块,还用于在所述确定所述多个连续的鼠标移动事件与所述预设优化条件匹配之前,检测所述多个连续的鼠标移动事件中最后一个事件之后的时间间隔是否大于第一预设时间阈值;

所述第一确定模块,还用于当所述第一检测模块检测到所述多个连续的鼠标移动事件中最后一个事件之后的时间间隔大于所述第一预设时间阈值时,确定所述多个连续的鼠标移动事件与所述预设优化条件匹配。

B23、根据B20所述的装置,所述检测单元,包括:

第二检测模块,用于检测多个连续的相同按下事件中相邻事件之间的时间间隔之和是否大于第二预设时间阈值;

第二确定模块,用于当所述第二检测模块检测到所述时间间隔之和大于所述第二预设时间阈值时,确定所述多个连续的相同按下事件与所述预设优化条件匹配。

B24、根据B23所述的装置,所述第二检测模块使用的所述第二预设时间阈值为应用开发商提供的应用操作的最长时间阈值,或者为后台统计的应用操作的最长时间阈值。

B25、根据B20所述的装置,所述检测单元,包括:

第三检测模块,用于检测所述键鼠脚本中是否存在预设按键以外的按键所触发的事件;

第三确定模块,用于当所述第三检测模块检测到所述键鼠脚本中存在预设按键以外的按键所触发的事件时,确定所述预设按键以外的按键所触发的事件与所述预设优化条件匹配。

B26、根据B25所述的装置,所述第三检测模块使用的所述预设按键为应用开发商提供的用于触发应用操作的按键,或者为后台统计的用于触发应用操作的按键。

B27、根据B20所述的装置,所述检测单元,包括:

读取模块,用于从事件中读取操作焦点的坐标;

判断模块,用于判断所述读取模块读取的所述坐标是否位于目标窗口;

第四确定模块,用于当所述判断模块判断结果为所述坐标不位于所述目标窗口时,确定不位于所述目标窗口的所述坐标对应的事件与所述预设优化条件匹配。

B28、根据B19至B27中任意一项所述的装置,所述删除单元,还用于在所述将所述冗余事件删除之后,将多个连续的时间间隔合并为一个时间间隔。

B29、根据B19所述的装置,所述检测单元,用于检测当前事件之后是否缺少与所述当前事件对应的放开事件;

所述添加单元,用于当所述检测单元检测到所述当前事件之后缺少与所述当前事件对应的放开事件时,在所述当前事件之后添加所述放开事件。

B30、根据B29所述的装置,所述检测单元,包括:

第四检测模块,用于检测所述当前事件是否为按下事件,若所述当前事件为按下事件,则检测所述当前事件之后是否缺少所述放开事件。

B31、根据B29所述的装置,所述检测单元,包括:

第五检测模块,用于检测所述当前事件之后的所有事件中是否缺少所述放开事件。

B32、根据B29所述的装置,所述检测单元,包括:

第六检测模块,用于检测与所述当前事件相邻的下一事件是否为所述 放开事件。

B33、根据B29所述的装置,所述添加单元,包括:

第一添加模块,用于在所述当前事件之后、与所述当前事件相邻的下一事件之前,添加所述放开事件。

B34、根据B29所述的装置,所述添加单元,包括:

第一检测模块,用于检测与所述当前事件相邻的连续至少一个事件是否均与所述当前事件相同;

第二添加模块,用于当所述第一检测模块检测到与所述当前事件相邻的连续至少一个事件均与所述当前事件相同时,在所述连续至少一个事件中的最后一个事件之后,添加所述放开事件。

B35、根据B29所述的装置,所述添加单元,包括:

第三添加模块,用于在所有事件之后添加所述放开事件。

B36、根据B29所述的装置,所述添加单元,包括:

第二检测模块,用于检测所述当前事件是否为事件组合中的事件,所述事件组合由触发组合键所产生的多个事件组成;

第四添加模块,用于当所述第二检测模块检测到所述当前事件为事件组合中的事件时,在所述事件组合中的最后一个事件之后,添加对应所述当前事件的放开事件。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的 描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一种网络通讯的方法、装置及系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1