发明内容
本发明提出一种在虚拟桌面中使用客户端输入法的方法、终端及服务端,以克服现有客户端只能使用服务端提供的输入法所带来的用户体验差的缺陷。
为解决上述问题,本发明提供了一种在虚拟桌面中使用客户端输入法的方法,包括:
客户端将接收到的用户通过虚拟桌面选择使用本地输入法的请求发送给服务端;
所述服务端与所述客户端在完成协商后,请求所述客户端激活所述客户端上的输入法;
所述客户端激活本地输入法,使用本地当前激活的输入法对用户输入的信息进行逻辑处理后,将得到的用户确认输入的信息发送给所述服务端;
所述服务端收到后,将所述用户确认输入的信息作为在本地输入的信息进行处理。
进一步地,
所述用户确认输入的信息包括:文字或者功能键信息;
将所述用户确认输入的信息作为在本地输入的信息进行处理,具体包括:
当所述用户确认输入的信息为文字时,对所述文字进行处理;当所述用户确认输入的信息为功能键信息,则执行该功能键对应的控制命令。
进一步地,
所述服务端与客户端完成协商,具体包括:
所述服务端向所述客户端发起建立输入法通道请求;
所述客户端在建立输入法通道后,向所述服务端回复通道建立成功消息。
进一步地,
所述将得到的用户确认输入的信息发送给所述服务端,具体包括:
通过所述输入法通道将得到的所述用户确认输入的信息发送给服务端。
进一步地,
除将得到的用户确认输入的信息发送给所述服务端外,所述客户端还将所述用户输入的原始按键信息一并发送给所述服务端。
进一步地,
所述服务端在与所述客户端完成协商后,还将本端焦点窗口的属性信息发送给所述客户端;其中,所述属性信息包括焦点窗口在虚拟桌面上的位置坐标及大小信息;
所述客户端收到后,根据所述属性信息调整本地当前激活的输入法的窗口的位置及大小。
相应地,本发明还提供了一种终端,包括虚拟桌面客户端模块,还包括:客户端输入法模块;
所述虚拟桌面客户端模块用于将接收到的用户通过虚拟桌面选择使用本地输入法的请求发送给服务端;还用于在与所述服务端完成协商,并在接收所述服务端发来的激活本终端上的输入法的请求后,激活所述客户端输入法模块中设置的输入法;还用于将用户输入的信息发送给所述客户端输入法模块,并将经过所述客户端输入法模块处理后得到的用户确认输入的信息发送给所述服务端;
所述客户端输入法模块用于使用当前激活的输入法对所述虚拟桌面客户端发来的用户输入的信息进行逻辑处理后,将将得到的用户确认输入的信息发送给所述虚拟桌面客户端模块。
进一步地,
所述虚拟桌面客户端模块还用于与所述服务端进行协商的过程中,建立输入法通道;其中:所述虚拟桌面客户端通过所述输入法通道将所述用户确认输入的信息发送给所述服务端。
进一步地,
所述虚拟桌面客户端模块还用于将所述用户输入的原始按键信息一并发送给所述服务端。
进一步地,
所述虚拟桌面客户端模块还用于在接收到所述服务端发来的焦点窗口的属性信息后,根据所述属性信息调整本地当前激活的输入法的窗口的位置及大小。
相应地,本发明还提供了一种服务端,包括依次相连的虚拟桌面服务端模块、操作系统模块、输入法管理器及应用程序模块,还包括:位于所述输入法管理器中的客户端输入法代理模块;
所述虚拟桌面服务端模块用于将设有虚拟桌面客户端模块的终端发来的用户选择使用所述终端上的输入法的请求通过所述操作系统模块发送给所述输入法管理器;还用于在与所述终端完成协商后,将所述终端发来的用户确认输入的信息通过所述操作系统模块发送给所述客户端输入法代理模块;
所述输入法管理器用于在收到所述请求后,启动所述客户端输入法代理模块;
所述客户端输入法代理模块用于在启动后,对接收到所述用户确认输入的信息作为在本地输入的信息进行处理。
进一步地,
所述用户确认输入的信息包括:文字或者功能键信息;
所述客户端输入法代理模块将所述用户确认输入的信息作为在本地输入的信息进行处理,具体包括:
当所述用户确认输入的信息为文字时,所述客户端输入法代理模块将所述发送给所述应用程序模块进行处理;当所述用户确认输入的信息为功能键信息,所述客户端输入法代理模块将所述信息发送给所述操作系统模块,由所述操作系统模块执行该功能键对应的控制命令。
进一步地,
所述客户端输入法代理模块还用于将本服务端焦点窗口的属性信息通过所述操作系统模块及虚拟桌面服务端模块发送给所述客户端;其中,所述属性信息包括焦点窗口在虚拟桌面上的位置坐标及大小信息。
本发明能够将用户客户端设备的输入法集成到虚拟桌面中,使用户在虚拟桌面中能够使用对用户终端进行优化过的输入法,提高了输入效率,增强了用户体验。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在本实施例中,一种在虚拟桌面中使用客户端输入法的方法,如图2所示,包括:
步骤10:客户端将接收到的用户通过虚拟桌面选择使用本地输入法的请求发送给服务端;
步骤20:服务端与客户端在完成协商后,请求客户端激活本地输入法;
步骤30:客户端激活本地输入法,使用本地当前激活的输入法对用户输入的信息进行逻辑处理后,将得到的用户确认输入的信息发送给服务端;其中,该信息包括:用户确认输入的文字(包括汉字、字母、数字等)或功能键信息;
步骤40:服务端收到后,将用户确认输入的信息作为在本地输入的信息进行处理。如果用户确认输入的信息为文字信息,则可进行处理(如显示等);如用户确认输入的是功能键信息,则执行该功能键对应的控制命令。
在具体实现时,服务端与客户端完成协商,具体包括以下步骤:
服务端向客户端发起建立输入法通道请求;
客户端在建立输入法通道后,向服务端回复通道建立成功消息。其中,该输入法通道可以是一个逻辑通道,建立该通道的过程可以是客户端打开某特定端口或者建立一个socket(套接字),也可以在原有socket上建立一个逻辑通道。此后,客户端通过该通道向服务端发送用户确认输入的信息。
在用户输入过程中,由于某些按键事件可能会被服务端的操作系统解释成控制信息,而不是文字信息,因此为了防止服务端识别错误,客户端在发送用户确认输入的信息的同时,还需要将原始按键信息一同发送给服务端。
图3是本实施例的系统架构。301是客户端输入法代理模块,它对于操作系统来说就是一个输入法模块,是按照服务端操作系统输入法规范开发的输入法软件模块,但它本身没有输入法逻辑和字库,而是负责将客户端输入法逻辑处理的结果映射到本操作系统中。302是新建的输入法通道,它是在虚拟桌面协议上扩展的一个逻辑通道,用于传送用户通过客户端输入法确认输入的信息。303是客户端上预配置的输入法。用户在客户端上的输入经客户端输入法进行逻辑处理后,将处理后得到的信息经由虚拟桌面客户端模块、输入法通道、虚拟桌面服务端模块到达客户端输入法代理模块,由客户端输入法代理模块将这些信息转换为符合本地输入法规范的信息发送给应用程序。
其中,上述终端中包括虚拟桌面客户端模块,还包括:客户端输入法模块;
所述虚拟桌面客户端模块用于将接收到的用户通过虚拟桌面选择使用本地输入法的请求发送给服务端;还用于在与所述服务端完成协商,并在接收所述服务端发来的激活本终端上的输入法的请求后,激活所述客户端输入法模块中设置的输入法;还用于将用户输入的信息发送给所述客户端输入法模块,并将经过所述客户端输入法模块处理后得到的用户确认输入的信息发送给所述服务端;
所述客户端输入法模块用于使用当前激活的输入法对所述虚拟桌面客户端发来的用户输入的信息进行逻辑处理后,将将得到的用户确认输入的信息发送给所述虚拟桌面客户端模块。
较佳地,
所述虚拟桌面客户端模块还用于与所述服务端进行协商的过程中,建立输入法通道;其中:所述虚拟桌面客户端通过所述输入法通道将所述用户确认输入的信息发送给所述服务端。
较佳地,
所述虚拟桌面客户端模块还用于将所述用户输入的原始按键信息一并发送给所述服务端。
较佳地,
所述虚拟桌面客户端模块还用于在接收到所述服务端发来的焦点窗口的属性信息后,根据所述属性信息调整本地当前激活的输入法的窗口的位置及大小。
一种服务端,包括依次相连的虚拟桌面服务端模块、操作系统模块、输入法管理器及应用程序模块,还包括:位于所述输入法管理器中的客户端输入法代理模块;
所述虚拟桌面服务端模块用于将设有虚拟桌面客户端模块的终端发来的用户选择使用所述终端上的输入法的请求通过所述操作系统模块发送给所述输入法管理器;还用于在与所述终端完成协商后,将所述终端发来的用户确认输入的信息通过所述操作系统模块发送给所述客户端输入法代理模块;
所述输入法管理器用于在收到所述请求后,启动所述客户端输入法代理模块;
所述客户端输入法代理模块用于在启动后,对接收到所述用户确认输入的信息作为在本地输入的信息进行处理。
较佳地,
所述用户确认输入的信息包括:文字或者功能键信息;
所述客户端输入法代理模块将所述用户确认输入的信息作为在本地输入的信息进行处理,具体包括:
当所述用户确认输入的信息为文字时,所述客户端输入法代理模块将所述发送给所述应用程序模块进行处理;当所述用户确认输入的信息为功能键信息,所述客户端输入法代理模块将所述信息发送给所述操作系统模块,由所述操作系统模块执行该功能键对应的控制命令。
较佳地,
所述客户端输入法代理模块还用于将本服务端焦点窗口的属性信息通过所述操作系统模块及虚拟桌面服务端模块发送给所述客户端;其中,所述属性信息包括焦点窗口在虚拟桌面上的位置坐标及大小信息。
图4是触发客户端输入法的过程。虚拟桌面初始状态是采用服务端的输入法,当用户希望使用客户端的输入法时,需要激活客户端的输入法。过程如下:
步骤401,由于客户端输入法代理模块是按照标准输入法开发的,因此它在系统中与其它输入法没有区别,有一个输入法名称,用户在虚拟桌面显示的输入法工具上按此名称选择客户端输入法,客户端输入法代理模块启动;
步骤402,客户端输入法代理模块启动后,通过操作系统模块向虚拟桌面服务端模块请求激活客户端输入法;
步骤403,虚拟桌面服务端模块向虚拟桌面客户端模块请求建立输入法通道;
步骤404,虚拟桌面客户端模块返回通道建立成功消息,通道建立;
步骤405,虚拟桌面服务端模块向虚拟桌面客户端模块请求启动客户端的输入法;
步骤406,虚拟桌面客户端模块激活客户端的输入法;
步骤407-409,客户端向服务端返回成功消息。此时,客户端输入法开始接收用户输入,并将经过当前激活的输入法的逻辑处理的输入信息发送给虚拟桌面客户端模块。
由于输入法与操作系统有很强的关联关系,因此客户端输入法代理模块的实现方式,以及虚拟桌面客户端模块与客户端输入法的交互方式都是与实际操作系统相关的,根据不同的操作系统需要调用不同的开发接口来实现。
图5是本实施例中用户使用客户端输入法输入文字的过程,由于不同客户端和操作系统输入法的实现方式不一样,本实施例描述其中一种方式,过程如下:
步骤501,客户端检测到用户按键后,发送键盘事件到客户端输入法模块;
步骤502,客户端输入法模块根据输入法逻辑变换成输入文字或输入过程中的中间信息,如候选文字,并将这些信息包括用户按键的原始信息发送给虚拟桌面客户端模块;
步骤503,虚拟桌面客户端模块通过新建的输入法通道,将输入信息发送给虚拟桌面服务端模块;
步骤504,虚拟桌面服务端模块通过操作系统模块将输入信息转发给客户端输入法代理模块;
步骤505,客户端输入法代理模块查看输入消息,如判断出用户按键是控制信息,则转发给操作系统模块进行处理,否则提取输入的文字,通过文字输入事件发送给应用程序模块,由应用程序模块进行显示等处理。
图6是客户端输入法窗口与虚拟桌面输入焦点互相协调的过程。虚拟桌面输入焦点指的是在服务端侧的虚拟桌面中能够获取键盘输入的那个窗口。这个窗口的大小和位置是由服务端的操作系统决定的,而客户端输入法的窗口是由客户端绘制的,因此两者如果不协调,可能会出现输入法窗口覆盖焦点窗口的可能,也不能保证将输入法窗口放在虚拟桌面的最佳位置,方便用户输入。因此,为了提高用户体验,需要客户端调整当前激活的输入法的窗口大小和位置,以使输入法窗口与虚拟桌面更好的融合。
客户端的输入法窗口与虚拟桌面互相协作的过程如下:
步骤601,客户端输入法代理模块检测到键盘焦点事件,获取服务端上键盘焦点窗口的属性,包括窗口的位置坐标及大小信息;
步骤602,客户端输入法代理模块将获取的焦点窗口的属性发送给虚拟桌面服务端模块;
步骤603,虚拟桌面服务端模块通过输入法通道转发焦点窗口的属性给虚拟桌面客户端模块;
步骤604,虚拟桌面客户端模块根据该焦点窗口的属性,计算输入法窗口在虚拟桌面的位置;其中,该位置要保证不能遮盖当前显示字符的区域,但要尽量靠近该区域;
步骤605,虚拟桌面客户端模块通过本地接口调整当前激活的客户端输入法的窗口属性,达到上述计算出的位置和大小。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
以上所述仅为本发明的优选实施例而已,并非用于限定本发明的保护范围。根据本发明的发明内容,还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。