CN114116095A - 一种输入方法、装置、电子设备、介质及产品 - Google Patents

一种输入方法、装置、电子设备、介质及产品 Download PDF

Info

Publication number
CN114116095A
CN114116095A CN202111328986.1A CN202111328986A CN114116095A CN 114116095 A CN114116095 A CN 114116095A CN 202111328986 A CN202111328986 A CN 202111328986A CN 114116095 A CN114116095 A CN 114116095A
Authority
CN
China
Prior art keywords
key
event
key event
queue
category
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.)
Granted
Application number
CN202111328986.1A
Other languages
English (en)
Other versions
CN114116095B (zh
Inventor
张圯祺
程波
胡思健
唐先明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Baidu Online Network Technology Beijing Co Ltd
Original Assignee
Baidu Online Network Technology Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Baidu Online Network Technology Beijing Co Ltd filed Critical Baidu Online Network Technology Beijing Co Ltd
Priority to CN202111328986.1A priority Critical patent/CN114116095B/zh
Publication of CN114116095A publication Critical patent/CN114116095A/zh
Application granted granted Critical
Publication of CN114116095B publication Critical patent/CN114116095B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0354Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of 2D relative movements between the device, or an operating part thereof, and a plane or surface, e.g. 2D mice, trackballs, pens or pucks
    • G06F3/03543Mice or pucks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Input From Keyboards Or The Like (AREA)

Abstract

本公开提供了一种输入方法、装置、电子设备、介质及产品,涉及计算机技术领域,尤其涉及云计算技术领域,可以优化模拟按键事件的时机。具体实现方案为:接收终端发送的第一按键事件,然后判断队列中是否存在第二按键事件。其中,第二按键事件未被模拟且所属的类别为按下事件。若队列中存在第二按键事件,则在第一按键事件所属的类别为抬起事件时,从队列中取出第二按键事件,先模拟第二按键事件,再模拟第一按键事件。

Description

一种输入方法、装置、电子设备、介质及产品
技术领域
本公开涉及计算机技术领域,尤其涉及云计算技术领域。
背景技术
云桌面、云手机等是利用虚拟技术,对各种物理设备进行虚拟化处理,从而使资源的利用率得到有效提升,以此节约成本、提高应用质量。为了让云桌面的操作体验更像原生设备,外设设备键盘和鼠标的响应及时和准确性就显得非常重要,键盘和鼠标的输入事件本质上是网络传输。
发明内容
本公开提供了一种输入方法、装置、电子设备、介质及产品。
本公开实施例的第一方面,提供了一种输入方法,包括:
接收终端发送的第一按键事件;
判断队列中是否存在第二按键事件;其中,所述第二按键事件未被模拟且所属的类别为按下事件;
若所述队列中存在所述第二按键事件,则在所述第一按键事件所属的类别为抬起事件时,从所述队列中取出所述第二按键事件,先模拟所述第二按键事件,再模拟所述第一按键事件。
本公开实施例的第二方面,提供了一种输入装置,包括:
接收模块,用于接收终端发送的第一按键事件;
判断模块,用于判断队列中是否存在第二按键事件;其中,所述第二按键事件未被模拟且所属的类别为按下事件;
模拟模块,用于若所述队列中存在所述第二按键事件,则在所述第一按键事件所属的类别为抬起事件时,从所述队列中取出所述第二按键事件,先模拟所述第二按键事件,再模拟所述第一按键事件。
本公开实施例的第三方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述任一项所述的输入方法。
本公开实施例的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据上述任一项所述的输入方法。
本公开实施例的第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据上述任一项所述的输入方法。
本公开实施例提供的输入方法、装置、电子设备、介质及产品,由于第二按键事件的类别为按下事件,且云设备接收到第二按键事件后未模拟第二按键事件,而是将第二按键事件存储在队列中,直到接收到类别为抬起事件的第一按键事件后,模拟第二按键事件,然后模拟第一按键事件。可见本公开实施例中,接收到按下事件时,并不立即模拟,而是存储到队列中,等到接收到抬起事件后,再模拟按下事件,接着模拟抬起事件,从而优化了模拟按键事件的时机。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是本公开实施例提供的一种输入方法流程图;
图2是本公开实施例提供的另一种输入方法流程图;
图3是本公开实施例提供的另一种输入方法流程图;
图4本公开实施例提供的一种输入装置的结构示意图;
图5是用来实现本公开实施例的输入方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
云桌面、云手机等就是利用虚拟技术,对各种物理设备进行虚拟化处理,从而使资源的利用率得到有效提升,以此节约成本、提高应用质量。在虚拟化技术的支持下,网络软件和硬件设备之间的联系更加灵活,可拓展性也大大提升。
以云桌面为例,云桌面利用虚拟化技术可以对各项用户信息进行统一储存和管理,终端通过网络接入设备可以进入云桌面,实现对各项用户信息的集中管理,并且实现高效率的资源共享。为了让云桌面的操作体验更接近原生设备,外设设备键盘和鼠标的响应的及时性和准确性就显得非常重要,但是键盘和鼠标触发的按键事件通过网络传输至云桌面,不管在局域网还是广域网的情况下,网络传输都有可能存在延时的情况,一旦存在延时,就可能产生错误,带给用户非常差的体验,甚至可能让云桌面宕机。
相关技术中,云桌面采用/dev/input/event设备或者/dev/uinput设备模拟按键事件、或者依赖Xtst库使用XtestFakeKeyEvent模拟按键事件、或者依赖xdo库模拟按键事件。这三种方式均为机械式地模拟按键事件,无法避免网络延迟带来的错误。且目前主流的桌面传输协议也不能解决该问题,例如桌面传输协议包括:向日葵、TeamViewe、Spice、虚拟网络控制台(Virtual Network Console,VNC)和Citrix等。可选的,按键事件也可以称为输入事件。
以用户在终端的外接键盘上按下一个按键A为例,实际会包含两个动作即按下(Down)动作和抬起(Up)动作,这两个动作对应产生两个事件,物理设备中这两个事件的时间差在100ms左右。在云桌面场景下,如果遇到网络延迟情况,可能只有按下的事件才会被云桌面响应,而抬起事件有可能迟迟接收不到。以输入A为例,云桌面接收到针对A键的按下事件后,模拟按下A键,如果持续100毫秒(millisecond,ms)没有接收到针对A键的抬起事件,云桌面会保持按下A键,例如在word文档内会输入一大串的A键。也即云桌面会错误地持续模拟按下事件,导致错误的输入,用户体验非常差。甚至还有可能会造成云桌面宕机。
又例如,以用户在终端外接的鼠标上按下一次左键为例,实际会包含两个动作,即按下动作和抬起动作,这两个动作对应产生两个事件,即按下事件和抬起事件。终端向云桌面发送按下事件然后发送抬起事件。云桌面接收到按下事件后,如果持续100ms没有接收到针对左键的抬起事件,则云桌面会错误地保持按下鼠标左键,导致云桌面上本次点击可能不在正确的位置。
为了解决上述问题,本公开实施例提供了一种输入方法,该方法可以应用于云设备,例如,云设备可以是云桌面或者云手机等。如图1所示,该方法包括如下步骤:
S101、接收终端发送的第一按键事件。
一种实现方式中,终端检测到用户触发的按键操作后,响应于按键操作,向云设备发送第一按键事件。第一按键事件可以是按下事件也可以是抬起事件。例如,终端检测到用户按下按键后,向云设备发送按下事件;终端检测到用户抬起按键后,向云设备发送抬起事件,其中,用户抬起按键指的是用户松开按键,使得按键自动抬起。
可选的,本公开实施例中的按键可以是键盘中的按键、鼠标中的按键、或者终端屏幕中显示的虚拟按键等。
S102、判断队列中是否存在第二按键事件。若队列中存在第二按键事件,则执行S103。
其中,队列的大小为1,即队列中最多存储一个按键事件。按键事件的类别包括按下事件和抬起事件。
在本公开实施例中,第二按键事件未被模拟且所属的类别为按下事件,说明云设备接收到类别为按下事件的第二按键事件后,暂未模拟第二按键事件,而是将第二按键事件存储到队列中。
S103、在第一按键事件所属的类别为抬起事件时,从队列中取出第二按键事件,先模拟第二按键事件,再模拟第一按键事件。
其中,按键事件可以包括类别标记,类别标记用于表示按键事件所属的类别。因此云设备可以通过第一按键事件包括的类别标记,确定第一按键事件所属的类别。例如,当类别标记为1时,表示按键事件所属的类别为按下事件;当类别标记为0时,表示按键事件所属的类别为抬起事件。云设备在检测到第一按键事件包括的类别标记为0时,确定第一按键事件所属的类别为抬起事件。
可以理解的,云设备接收到第一按键事件时,检查到第二按键事件被存储于队列中,说明云设备在接收第一按键事件之前,已经接收到第二按键事件,并将第二按键事件存储在队列中。而且在本公开实施例中,云设备和终端之间可基于可靠的传输控制协议(Transmission Control Protocol,TCP)连接,TCP连接可以保证在传输过程中不丢失按键事件,且保证传输过程中按键事件的顺序不出错。因此,由于第二按键事件的类别为按下事件,第一按键事件的类别为抬起事件,且第二按键事件比第一按键事件先到达云设备,因此第二按键事件和第一按键事件针对的是同一个按键。
可以理解的,由于队列的大小为1,因此当云设备从队列中取出第二按键事件后,队列为空。此时先模拟第二按键事件,即模拟按下第二按键事件对应的按键,再模拟第一按键事件,即模拟抬起第一按键事件对应的按键,从而实现该按键对应的信息的输入。
本公开实施例提供的输入方法,由于第二按键事件的类别为按下事件,且云设备接收到第二按键事件后未模拟第二按键事件,而是将第二按键事件存储在队列中,直到接收到类别为抬起事件的第一按键事件后,模拟第二按键事件,然后模拟第一按键事件。可见本公开实施例中,接收到按下事件时,并不立即模拟,而是存储到队列中,等到接收到抬起事件后,再模拟按下事件,接着模拟抬起事件,从而优化了模拟按键事件的时机,减少了云设备在接收到按下事件后由于网络延迟未接收到抬起事件,而错误地持续模拟按下事件的情况。
在本公开的一个可选的实施例中,如图1所示,S102判断出队列中不存在第二按键事件的情况下,可以执行:S104、在第一按键事件所属的类别为抬起事件时,模拟第一按键事件。
在本公开实施例中,如果队列中不存在第二按键事件,即队列为空,说明当前没有未被模拟的按键事件,且当前接收到的第一按键事件所属的类别为抬起事件,可以直接模拟第一按键事件,即模拟抬起第一按键事件对应的按键。从而提高模拟第一按键事件的效率,而且模拟抬起按键不会产生信息输入,因此不会产生错误的输入。
图1所示的实施例中介绍了在终端发送的第一按键事件所属的类别为抬起事件的两种情况,在实际应用中,终端发送的按键事件所属的类别可以是抬起事件也可以是按下事件,以下通过图2对第一按键事件所属的类别为抬起事件或者按下事件所涉及的各种情况进行说明:
在本公开的一个实施例中,如图2所示,本公开实施例提供的输入方法包括如下步骤:
S201、接收终端发送的第一按键事件。S201对应图1中的S101,实现方式可参考S101中的描述,此处不再赘述。
S202、判断队列中是否存在第二按键事件。若队列中存在第二按键事件,则执行S203或S207;若队列中不存在第二按键事件,则执行S204。
S202对应图1中的S102,实现方式可参考S102中的描述,此处不再赘述。
S203、在第一按键事件所属的类别为抬起事件时,从队列中取出第二按键事件,先模拟第二按键事件,再模拟第一按键事件。S203对应图1中的S103,实现方式可参考S103中的描述,此处不再赘述。
S204、判断第一按键事件的类别是否为按下事件。若第一按键事件的类别为按下事件,则执行S205。
一种实施方式中,云设备可以获取第一按键事件包括的类别标记,并在检测到该类别标记为1时,确定第一按键事件的类别为按下事件。
S205、判断当前修饰按键标记是否为真(true)。若当前修饰按键标记不为真,即当前修饰按键标记为假(false),则执行S206。
其中,修饰按键标记为真表示当前有修饰按键处于按下状态。相应的,修饰按键标记为假表示当前没有修饰按键处于按下状态。
可以理解的,修饰按键可以与其他按键组成组合按键,例如,修饰按键包括ctrl、shift和alt等,修饰按键在单独按下时一般不产生输入,需要与组合键中的其他按键一同按下以实现相应的输入或功能,因此修饰按键为组合按键中非最后一个按下的按键。
例如,组合按键可以是“ctrl+C”(用于实现复制操作)、“shift+1”(用于输入“!”)、“ctrl+alt+A”(用于实现截屏操作)等。其中,“ctrl+C”中修饰按键为ctrl,“shift+1”中修饰按键为shift,“ctrl+alt+A”中修饰按键为ctrl和alt。
S206、将第一按键事件存储在队列中。
结合S204-S206可知,在检测到队列中不存在第二按键事件,即队列为空,说明当前没有还未模拟的按键事件;而且当前修饰按键标记不为true,说明当前没有模拟按下修饰按键,说明第一按键事件与上一次接收到的按键事件不是组合键。而且第一按键事件的类别为按下事件,为避免直接模拟按下事件后,延迟接收到抬起事件而造成的持续模拟按下事件的错误,本公开实施例将第一按键事件存储在队列中。
采用上述方法,云设备可以在当前接收到的按键事件与上一个接收到的按键事件不是组合键,且当前接收的按键事件为按下事件时,将按键事件存储在队列中,而不是直接模拟,避免了直接模拟后因未及时接收到抬起事件而错误地持续模拟的问题。
在本公开的一个实施例中,在上述S202判断队列中存在第二按键事件之后,在判断出队列中存在第二按键事件时,如图2所示,云设备还可以执行如下步骤:
S207、确定第一按键事件所属的类别为按下事件时,执行S208。
S208、判断第二按键事件和第一按键事件对应的按键是否均为修饰按键。若均为修饰按键,则执行S209。
本公开实施例中,每个按键事件包括按键编号,云设备中可以记录每个编号对应的按键,并记录每个按键是否为修饰按键。因此云设备可以基于按键事件包括的按键编号,确定按键事件对应的按键是否为修饰按键。
结合S207和S208,由图2的过程可知,队列中存储的按键事件所属的类别为按下事件,且第一按键事件所属的类别也为按下事件时,存在以下三种情况:
第一种:队列中的第二按键事件对应的按键为修饰按键,当前接收到的第一按键事件对应的按键不为修饰按键。例如,第二按键事件对应的按键为ctrl,第一按键事件对应的按键为A。
第二种:队列中的第二按键事件对应的按键为修饰按键,当前接收到的第一按键事件对应的按键为修饰按键。例如,第二按键事件对应的按键为ctrl,第一按键事件对应的按键为alt。这种情况下后续云设备还可能接收到一个按下事件,该按下事件对应的按键与ctrl和alt形成组合键。例如,后续接收到的按下事件对应的按键为Z。
第三种:队列中的第二按键事件对应的按键为非修饰按键,当前接收到的第一按键事件对应的按键为非修饰按键。例如,第二按键事件对应的按键为A,第一按键事件对应的按键为B。在这种情况下,按键A+按键B实际上不是组合键,可能是用户的误操作。
S209、从队列中取出第二按键事件,模拟第二按键事件,并模拟第一按键事件,并设置当前修饰按键标记为真。
若均为修饰按键,即S208中的第二种情况,此时从队列中取出第二按键事件,取出后队列为空,模拟第二按键事件,并模拟第一按键事件。由于第二按键事件和第一按键事件对应的按键均为修饰按键,而两个修饰按键的按下顺序对产生的输入或实现的功能没有影响,因此可以先后按下这两个修饰按键或者同时按下这两个修饰按键,本公开实施例对此不作具体限定。此时设置当前修饰按键标记为true。由上述S208中的第二种情况可知,第二按键事件、第一按键事件与后续接收到的按下事件,这三个事件各自对应的按键组成组合键,也就是说第二按键事件和第一按键事件各自对应的按键,是三个键的组合键中的前两个按键,而按下三个键的组合键中的前两个按键后不会产生输入,没有任何影响,因此可以直接模拟第二按键事件和第一按键事件。
采用上述方法,云设备可以在连续接收到两个修饰按键的按键事件时,模拟接收到的这两个按键事件,保证模拟按键事件的效率。而且在实际应用中,即使两个修饰按键同时按下并保持,也不会产生输入,因此本公开实施例不会产生错误的输入。
在本公开的一个实施例中,如图2所示,在上述S205判断当前修饰按键标记是否为真之后,若判断出当前修饰按键标记为真,则云设备还可以执行S210:
S210、模拟第一按键事件。
如图2所示,在该情况下,由于队列为空、当前修饰按键标记为真、且第一按键事件所属的类别为按下事件,说明第一按键事件对应的按键与云设备当前模拟的两个修饰按键为组合按键,对应S108中的第二种情况。此时可以直接模拟第一按键事件,实现第一按键事件对应的按键与前两个按键事件对应的按键的组合功能。
采用上述方法,云设备可以在已模拟两个修饰按键的按键事件后,在接收到下一个按下事件时,直接模拟该按下事件,保证组合键的响应速度。而且由于三个键组成的组合键实现的功能一般不产生输入,因此即使保持按下也不会造成错误的输入。
在本公开的一个实施例中,如图2所示,上述S208在判断第二按键事件和第一按键事件对应的按键是否均为修饰按键之后,若判断出不均为修饰按键,则云设备还可以执行S211:
S211、从队列中取出第二按键事件,先模拟第二按键事件,后模拟第一按键事件,再模拟指定按键事件。其中,指定按键事件为类别是抬起事件的按键事件。
如图2所示,在该情况下,第二按键事件和第一按键事件对应的按键不均为修饰按键,且第二按键事件和第一按键事件所属的类别均为按下事件,一般情况下说明云设备先接收到的第二按键事件对应的按键为修饰按键,且第一按键事件对应的按键为非修饰按键,对应S108中的第一种情况。此时第二按键事件和第一按键事件对应的按键为完整的组合按键,可以先模拟第二按键事件,再模拟第一按键事件。同时,为了保证模拟该组合按键的按键事件后因网络延迟而未及时接收到抬起事件的情况,在模拟第二按键事件和第一按键事件之后,可以额外地模拟一个类别为抬起事件的指定按键事件。其中,指定按键事件对应的按键包括第二按键事件对应的按键和第一按键事件对应的按键。
或者,第二按键事件和第一按键事件对应的按键不均为修饰按键,且第二按键事件和第一按键事件所属的类别均为按下,可能存在第二按键事件对应的按键为非修饰按键,且第一按键事件对应的按键为非修饰按键的情况,对应S208中的第三种情况。此时第二按键事件和第一按键事件对应的按键不是组合键,但被先后按下,可能是用户的误操作。在这种情况下,云设备也可以从队列中取出第二按键事件,先模拟第二按键事件,然后模拟第一按键事件,之后再模拟指定按键事件,从而及时按下按键事件对应的按键并及时抬起按键,避免了持续按下第二按键事件和第一按键事件对应的按键。
采用上述方法,云设备可以在接收到修饰按键的按下事件和非修饰按键的按下事件后,确定这两个按键为组合键,并直接模拟这两个按下事件,保证模拟按下事件的效率。而且云设备在模拟两个按下事件后模拟一个额外的抬起事件,避免了因网络延迟而持续模拟按下事件导致的错误输入问题。
在本公开的一个实施例中,如图2所示,在上述S204判断第一按键事件的类别是否为按下事件之后,若判断出第一按键事件的类别为抬起事件,则云设备还可以执行S212:
S212、模拟第一按键事件。
如图2所示,在该情况下,队列为空,且第一按键事件所属的类别为抬起事件,说明当前无未模拟的按键事件,由于模拟抬起事件不会造成任何影响,因此可以直接模拟第一按键事件。S212对应图1中的S104,具体方式可与S104相互参照。
采用上述方法,云设备可以在当前无未模拟的按键事件的情况下,若接收到抬起事件,直接模拟抬起事件,提高模拟抬起事件的效率。而且模拟抬起事件不会造成任何影响,因此本公开实施例不会产生额外的错误。
参见图3,以下对本公开实施例提供的输入方法的整体流程进行说明:
S301、接收终端发送的第一按键事件。
S302、判断队列中是否存在第二按键事件。若否,则执行S303;若是,则执行S308。
S303、判断第一按键事件的类别是否为按下事件。若是,则执行S304;若否,则执行S307。
S304、判断当前修饰按键标记是否为真。若是,则执行S305;若否,则执行S306。
S305、模拟第一按键事件。
S306、将第一按键事件存储在队列中。
S307、模拟第一按键事件。
S308、判断第一按键事件的类别是否为按下事件。若否,则执行S309;若是,则执行S310。
S309、从队列中取出第二按键事件,先模拟第二按键事件,再模拟第一按键事件。
S310、判断第二按键事件和第一按键事件对应的按键是否均为修饰按键。若是,则执行S311;若否,则执行S312。
S311、从队列中取出第二按键事件,模拟第二按键事件,并模拟第一按键事件,并设置当前修饰按键标记为真。
S312、从队列中取出第二按键事件,先模拟第二按键事件,后模拟第一按键事件,再模拟指定按键事件。
以下结合实际应用场景,对本公开实施例所涉及的三种情况进行举例说明:
第一种情况:用户按一个按键。在该情况下,用户通过终端按下按键1并抬起,此时终端向云桌面发送按键1的按下事件a1,然后发送按键1的抬起事件a2。
云设备接收到按下事件a1,检测到队列为空、按下事件a1所属的类别为按下事件、且当前修饰按键标记为false,此时将按下事件a1存储到队列中。
云设备接收到抬起事件a2,检测到队列不为空且抬起事件a2所属的类别为抬起事件,则从队列中取出按下事件a1,先模拟按下事件a1,再模拟抬起事件a2。
第二种情况:用户按2个按键形成的组合键。在该情况下,用户通过终端按下按键shift、按下按键1、抬起按键shift、抬起按键1。此时终端向云桌面发送按键shift的按下事件b1、按键1的按下事件b2、按键shift的抬起事件b3和按键1的抬起事件b4。
云设备接收到按下事件b1,检测到队列为空、按下事件b1所属的类别为按下事件、且当前修饰按键标记为false,此时将按下事件b1存储到队列中。
云设备接收到按下事件b2,检测到队列不为空、按下事件b2所属的类别为按下事件、且按下事件b1对应的按键shift和按下事件b2对应的按键1不均为修饰按键,此时从队列中取出按下事件b1,先模拟按下事件b1,接着模拟按下事件b2,然后额外的模拟抬起事件b5。其中b5用于抬起按键shift和按键1。
云设备接收到抬起事件b3,检测到队列为空且抬起事件b3所属的类别为抬起事件,此时模拟抬起事件b3。
云设备接收到抬起事件b4,检测到队列为空且抬起事件b4所属的类别为抬起事件,此时模拟抬起事件b4。
第三种情况:用户按3个按键形成的组合键。在该情况下,用户通过终端按下按键ctrl、按下按键alt、按下按键A、抬起按键ctrl、抬起按键alt、抬起按键A。此时终端向云桌面发送按键ctrl的按下事件c1、按键alt的按下事件c2、按键A的按下事件c3、按键ctrl的抬起事件c4、按键alt的抬起事件c5和按键A的抬起事件c6。
云设备接收到按下事件c1,检测到队列为空、按下事件c1所属的类别为按下事件、且当前修饰按键标记为false,此时将按下事件c1存储到队列中。
云设备接收到按下事件c2,检测到队列不为空、按下事件c2所属的类别为按下事件、且按下事件c1对应的按键ctrl和按下事件c2对应的按键alt均为修饰按键,此时从队列中取出按下事件c1,模拟按下事件c1,接着模拟按下事件c2,并设置当前修饰按键标记为true。
云设备接收到按下事件c3,检测到队列为空、按下事件c3所属的类别为按下事件、且当前修饰按键标记为true,此时模拟按下事件c3。
云设备接收到抬起事件c4,检测到队列为空且抬起事件c4所属的类别为抬起事件,此时模拟抬起事件c4。
云设备接收到抬起事件c5,检测到队列为空且抬起事件c5所属的类别为抬起事件,此时模拟抬起事件c5。
云设备接收到抬起事件c6,检测到队列为空且抬起事件c6所属的类别为抬起事件,此时模拟抬起事件c6。
可以看出,本公开实施例可以应用在组合键和非组合键的场景,而且本公开实施例在各种场景下均不会产生错误的输入,因此本公开实施例的应用范围广。
基于相同的发明构思,对应于上述方法实施例,本公开实施例提供了一种输入装置,如图4所示,该装置包括:接收模块401、判断模块402和模拟模块403;
接收模块401,用于接收终端发送的第一按键事件;
判断模块402,用于判断队列中是否存在第二按键事件;其中,第二按键事件未被模拟且所属的类别为按下事件;
模拟模块403,用于若队列中存在第二按键事件,则在第一按键事件所属的类别为抬起事件时,从队列中取出第二按键事件,先模拟第二按键事件,再模拟第一按键事件。
本公开实施例提供的输入装置,由于第二按键事件的类别为按下事件,且云设备接收到第二按键事件后未模拟第二按键事件,而是将第二按键事件存储在队列中,直到接收到类别为抬起事件的第一按键事件后,模拟第二按键事件,然后模拟第一按键事件。可见本公开实施例中,接收到按下事件时,并不立即模拟,而是存储到队列中,等到接收到抬起事件后,再模拟按下事件,接着模拟抬起事件,从而优化了模拟按键事件的时机。
在本申请的一个实施例中,该装置还可以包括:存储模块;
判断模块402,还用于在判断队列中是否存在第二按键事件之后,若队列中不存在第二按键事件,则判断第一按键事件的类别是否为按下事件;
判断模块402,还用于若第一按键事件的类别为按下事件,则判断当前修饰按键标记是否为真,当前修饰按键标记为真表示当前有修饰按键处于按下状态,修饰按键为组合按键中非最后一个按下的按键;
存储模块,用于若当前修饰按键标记不为真,则将第一按键事件存储在队列中。
在本申请的一个实施例中,判断模块402,还用于若队列中存在第二按键事件,则在第一按键事件所属的类别为按下事件时,判断第二按键事件和第一按键事件对应的按键是否均为修饰按键;
模拟模块403,还用于若均为修饰按键,则从队列中取出第二按键事件,模拟第二按键事件,并模拟第一按键事件,并设置当前修饰按键标记为真。
在本申请的一个实施例中,模拟模块403,还用于在判断当前修饰按键标记是否为真之后,若当前修饰按键标记为真,则模拟第一按键事件。
在本申请的一个实施例中,模拟模块403,还用于在判断第二按键事件和第一按键事件对应的按键是否均为修饰按键之后,若不均为修饰按键,则从队列中取出第二按键事件,先模拟第二按键事件,后模拟第一按键事件,再模拟指定按键事件,指定按键事件为类别为抬起事件的按键事件。
在本申请的一个实施例中,模拟模块403,还用于在判断第一按键事件的类别是否为按下事件之后,若第一按键事件的类别为抬起事件,则模拟第一按键事件。
本公开的技术方案中,所涉及的按键信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图5示出了可以用来实施本公开的实施例的示例电子设备500的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图5所示,电子设备500包括计算单元501,其可以根据存储在只读存储器(ROM)502中的计算机程序或者从存储单元508加载到随机访问存储器(RAM)503中的计算机程序,来执行各种适当的动作和处理。在RAM 503中,还可存储电子设备500操作所需的各种程序和数据。计算单元501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
电子设备500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许电子设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元501的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元501执行上文所描述的各个方法和处理,例如输入方法。例如,在一些实施例中,输入方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由ROM 502和/或通信单元509而被载入和/或安装到电子设备500上。当计算机程序加载到RAM503并由计算单元501执行时,可以执行上文描述的输入方法的一个或多个步骤。备选地,在其他实施例中,计算单元501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行输入方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (15)

1.一种输入方法,包括:
接收终端发送的第一按键事件;
判断队列中是否存在第二按键事件;其中,所述第二按键事件未被模拟且所属的类别为按下事件;
若所述队列中存在所述第二按键事件,则在所述第一按键事件所属的类别为抬起事件时,从所述队列中取出所述第二按键事件,先模拟所述第二按键事件,再模拟所述第一按键事件。
2.根据权利要求1所述的方法,在所述判断队列中是否存在第二按键事件之后,所述方法还包括:
若所述队列中不存在第二按键事件,则判断所述第一按键事件的类别是否为按下事件;
若所述第一按键事件的类别为按下事件,则判断当前修饰按键标记是否为真,当前修饰按键标记为真表示当前有修饰按键处于按下状态,所述修饰按键为组合按键中非最后一个按下的按键;
若当前修饰按键标记不为真,则将所述第一按键事件存储在所述队列中。
3.根据权利要求2所述的方法,在所述判断队列中是否存在第二按键事件之后,所述方法还包括:
若所述队列中存在所述第二按键事件,则在所述第一按键事件所属的类别为按下事件时,判断所述第二按键事件和所述第一按键事件对应的按键是否均为修饰按键;
若均为修饰按键,则从所述队列中取出所述第二按键事件,模拟所述第二按键事件,并模拟所述第一按键事件,并设置当前修饰按键标记为真。
4.根据权利要求2所述的方法,在所述判断当前修饰按键标记是否为真之后,所述方法还包括:
若当前修饰按键标记为真,则模拟所述第一按键事件。
5.根据权利要求3所述的方法,在所述判断所述第二按键事件和所述第一按键事件对应的按键是否均为修饰按键之后,所述方法还包括:
若不均为修饰按键,则从所述队列中取出所述第二按键事件,先模拟所述第二按键事件,后模拟所述第一按键事件,再模拟指定按键事件,所述指定按键事件为类别为抬起事件的按键事件。
6.根据权利要求2所述的方法,在所述判断所述第一按键事件的类别是否为按下事件之后,所述方法还包括:
若所述第一按键事件的类别为抬起事件,则模拟所述第一按键事件。
7.一种输入装置,包括:
接收模块,用于接收终端发送的第一按键事件;
判断模块,用于判断队列中是否存在第二按键事件;其中,所述第二按键事件未被模拟且所属的类别为按下事件;
模拟模块,用于若所述队列中存在所述第二按键事件,则在所述第一按键事件所属的类别为抬起事件时,从所述队列中取出所述第二按键事件,先模拟所述第二按键事件,再模拟所述第一按键事件。
8.根据权利要求7所述的装置,所述装置还包括:存储模块;
所述判断模块,还用于在所述判断队列中是否存在第二按键事件之后,若所述队列中不存在第二按键事件,则判断所述第一按键事件的类别是否为按下事件;
所述判断模块,还用于若所述第一按键事件的类别为按下事件,则判断当前修饰按键标记是否为真,当前修饰按键标记为真表示当前有修饰按键处于按下状态,所述修饰按键为组合按键中非最后一个按下的按键;
所述存储模块,用于若当前修饰按键标记不为真,则将所述第一按键事件存储在所述队列中。
9.根据权利要求8所述的装置,
所述判断模块,还用于若所述队列中存在所述第二按键事件,则在所述第一按键事件所属的类别为按下事件时,判断所述第二按键事件和所述第一按键事件对应的按键是否均为修饰按键;
所述模拟模块,还用于若均为修饰按键,则从所述队列中取出所述第二按键事件,模拟所述第二按键事件,并模拟所述第一按键事件,并设置当前修饰按键标记为真。
10.根据权利要求9所述的方法,
所述模拟模块,还用于在所述判断当前修饰按键标记是否为真之后,若当前修饰按键标记为真,则模拟所述第一按键事件。
11.根据权利要求9所述的装置,
所述模拟模块,还用于在所述判断所述第二按键事件和所述第一按键事件对应的按键是否均为修饰按键之后,若不均为修饰按键,则从所述队列中取出所述第二按键事件,先模拟所述第二按键事件,后模拟所述第一按键事件,再模拟指定按键事件,所述指定按键事件为类别为抬起事件的按键事件。
12.根据权利要求8所述的装置,
所述模拟模块,还用于在所述判断所述第一按键事件的类别是否为按下事件之后,若所述第一按键事件的类别为抬起事件,则模拟所述第一按键事件。
13.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的方法。
14.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-6中任一项所述的方法。
15.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-6中任一项所述的方法。
CN202111328986.1A 2021-11-10 2021-11-10 一种输入方法、装置、电子设备、介质及产品 Active CN114116095B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111328986.1A CN114116095B (zh) 2021-11-10 2021-11-10 一种输入方法、装置、电子设备、介质及产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111328986.1A CN114116095B (zh) 2021-11-10 2021-11-10 一种输入方法、装置、电子设备、介质及产品

Publications (2)

Publication Number Publication Date
CN114116095A true CN114116095A (zh) 2022-03-01
CN114116095B CN114116095B (zh) 2023-07-21

Family

ID=80378243

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111328986.1A Active CN114116095B (zh) 2021-11-10 2021-11-10 一种输入方法、装置、电子设备、介质及产品

Country Status (1)

Country Link
CN (1) CN114116095B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104331170A (zh) * 2014-10-30 2015-02-04 北京海兰盈华科技有限公司 实现矩阵键盘中组合按键的方法及装置
WO2016190054A1 (ja) * 2015-05-25 2016-12-01 日本電気株式会社 キー制御システム、仮想化サーバ、端末装置、キー制御方法、キー送信方法、プログラム
CN110488989A (zh) * 2019-07-02 2019-11-22 西安万像电子科技有限公司 事件处理方法及装置
CN111638805A (zh) * 2020-04-27 2020-09-08 合肥联宝信息技术有限公司 一种按键处理方法、设备及存储介质
CN112073778A (zh) * 2019-06-10 2020-12-11 海信视像科技股份有限公司 显示设备及按键传递的容错方法
CN112882850A (zh) * 2021-03-09 2021-06-01 北京字节跳动网络技术有限公司 按键事件处理方法、装置、设备和存储介质
CN113114268A (zh) * 2021-04-19 2021-07-13 南京能瑞自动化设备股份有限公司 按键识别方法、装置、设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104331170A (zh) * 2014-10-30 2015-02-04 北京海兰盈华科技有限公司 实现矩阵键盘中组合按键的方法及装置
WO2016190054A1 (ja) * 2015-05-25 2016-12-01 日本電気株式会社 キー制御システム、仮想化サーバ、端末装置、キー制御方法、キー送信方法、プログラム
CN112073778A (zh) * 2019-06-10 2020-12-11 海信视像科技股份有限公司 显示设备及按键传递的容错方法
CN110488989A (zh) * 2019-07-02 2019-11-22 西安万像电子科技有限公司 事件处理方法及装置
CN111638805A (zh) * 2020-04-27 2020-09-08 合肥联宝信息技术有限公司 一种按键处理方法、设备及存储介质
CN112882850A (zh) * 2021-03-09 2021-06-01 北京字节跳动网络技术有限公司 按键事件处理方法、装置、设备和存储介质
CN113114268A (zh) * 2021-04-19 2021-07-13 南京能瑞自动化设备股份有限公司 按键识别方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN114116095B (zh) 2023-07-21

Similar Documents

Publication Publication Date Title
CN113722124B (zh) 一种云手机的内容处理方法、装置、设备及存储介质
US10768947B2 (en) Method for interface refresh synchronization,terminal device, and non-transitory computer-readable storage medium
CN116306396A (zh) 芯片验证方法及装置、设备和介质
CN107835305B (zh) 用于具有屏幕的终端设备的信息输入方法和装置
CN114025037A (zh) 一种云手机的检修方法、装置、电子设备和存储介质
CN113641929B (zh) 页面渲染的方法、装置、电子设备和计算机可读存储介质
CN114116095B (zh) 一种输入方法、装置、电子设备、介质及产品
CN114091909A (zh) 一种协同开发的方法、系统、装置及电子设备
CN113722037A (zh) 一种用户界面的刷新方法、装置、电子设备及存储介质
CN113747423A (zh) 云手机状态同步方法、装置、设备、存储介质及程序产品
CN110881001B (zh) 一种电子红包检测方法、系统及终端设备
CN114138358A (zh) 应用程序的启动优化方法、装置、设备和存储介质
CN114095564A (zh) 数据处理方法及装置、设备和介质
CN113032040B (zh) 用于处理任务的方法、装置、设备、介质和产品
CN114117046B (zh) 数据处理方法、装置、电子设备及介质
CN114690990B (zh) 笔记生成方法及装置、设备、介质和产品
CN110880999B (zh) 一种电子红包识别方法、装置及终端设备
CN115098165B (zh) 数据处理方法、装置、芯片、设备及介质
CN115629918B (zh) 数据处理方法、装置、电子设备及存储介质
CN116700791A (zh) 用于缓存指令的方法及装置、设备和介质
CN114401337A (zh) 基于云手机的数据分享方法、装置、设备及存储介质
CN116016373A (zh) 数据处理请求的发送方法及装置、设备和介质
CN117421005A (zh) 对象交互方法、装置、设备及存储介质
CN114416295A (zh) 应用控制方法、装置、设备、介质及程序产品
CN114201645A (zh) 对象标注方法、装置、电子设备以及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant