CN109074273B - 自动虚拟输入设备 - Google Patents
自动虚拟输入设备 Download PDFInfo
- Publication number
- CN109074273B CN109074273B CN201680085189.6A CN201680085189A CN109074273B CN 109074273 B CN109074273 B CN 109074273B CN 201680085189 A CN201680085189 A CN 201680085189A CN 109074273 B CN109074273 B CN 109074273B
- Authority
- CN
- China
- Prior art keywords
- input device
- sce
- virtual input
- fce
- computing environment
- 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
- 238000000034 method Methods 0.000 claims abstract description 43
- 230000004044 response Effects 0.000 claims abstract description 14
- 230000004913 activation Effects 0.000 claims abstract description 7
- 230000000153 supplemental effect Effects 0.000 claims description 27
- 230000003993 interaction Effects 0.000 claims description 16
- 238000012544 monitoring process Methods 0.000 claims description 12
- 238000004891 communication Methods 0.000 claims description 8
- 230000002452 interceptive effect Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 6
- 238000012913 prioritisation Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000012559 user support system Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/02—Input arrangements using manually operated switches, e.g. using keyboards or dials
- G06F3/023—Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
- G06F3/0233—Character input methods
- G06F3/0236—Character input methods using selection techniques to select from displayed items
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
- G06F3/0488—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
- G06F3/04886—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures by partitioning the display area of the touch-screen or the surface of the digitising tablet into independently controllable areas, e.g. virtual keyboards or menus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/452—Remote windowing, e.g. X-Window System, desktop virtualisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
在一个示例中,一种用于第一计算环境(FCE)在第二计算环境(SCE)的显示器上自动地显示虚拟输入设备的方法,第二计算环境(SCE)经主信道以可通信方式耦合到FCE。在FCE和SCE之间建立辅助信道。经辅助信道与SCE商议虚拟输入设备偏好。检测由SCE经主信道对与SCE关联的活跃FCE应用的输入元素的选择。响应于所述选择,自动地引发启动根据设备偏好的虚拟输入设备,虚拟输入设备可由SCE操作以将数据输入到输入元素。
Description
背景技术
今天的许多计算设备(诸如例如,平板计算机和智能电话)不具有物理输入设备(诸如,键盘)。为了输入字母数字信息和/或执行其它控制功能,这种设备经常采用虚拟输入设备(诸如例如,虚拟键盘)。当在设备上执行的应用需要用户提供能够用这种输入设备产生的类型的输入(例如,电话号码、登入信息或用于备忘录的文本)时,能够使用虚拟输入设备。
附图说明
图1是根据本公开的示例的其中第一计算环境自动地使虚拟输入设备被显示在第二计算设备上的系统的示意图。
图2是根据本公开的示例的其中第一计算环境是服务器计算机并且第二计算环境是客户端计算机的图1的系统的示意图。
图3是根据本公开的示例的其中第一计算环境是顾客计算环境并且第二计算环境是主机计算环境的图1的系统的示意图。
图4是用于第一计算环境自动地在第二计算环境的显示器上显示虚拟输入设备的方法的根据本公开的示例的流程图。
图5是可与图4的方法一起使用的虚拟输入设备监控器的根据本公开的示例的流程图。
图6是可与图4的方法一起使用的第一计算环境的辅助信道控制模块的方法的根据本公开的示例的流程图。
图7是可与图4的方法一起使用的第二计算环境的辅助信道控制模块的方法的根据本公开的示例的流程图。
图8是可与图4的方法一起使用的用于建立用于虚拟输入设备的辅助信道的方法的根据本公开的示例的流程图。
图9是可与图4的方法一起使用的用于商议对虚拟输入设备的用户偏好的方法的根据本公开的示例的流程图。
具体实施方式
下面的情况是有益的:当需要虚拟输入设备时,在不用从用户获得任何另外的交互或辅助以便显示虚拟输入设备的情况下,使虚拟输入设备自动地显示在计算设备上。例如,当用户选择在计算设备上运行的应用的用户名字段(通过例如在触摸屏上触摸所述字段或将鼠标或跟踪球指针移动到所述字段并且点击选择按钮)时,选择所述字段的行动将会最佳地打开(bring up)虚拟输入设备,从而用户能够输入用户名。类似地,如果用户启动备忘录应用,则虚拟输入设备将会最佳地被自动地打开,从而用户能够输入备忘录的文本。
然而,在一些计算配置中,不能做到这一点。一个这种配置包括:用作客户端的一个计算环境与在用作服务器的不同计算环境上执行的应用执行远程桌面会话。在这种情况下,所述两个计算环境能够按照一定距离分隔开并且经网络连接。另一这种配置包括:用作主机的一个计算环境运行用作顾客的不同计算环境的桌面会话。在这种情况下,所述两个计算环境可位于单个计算设备内,顾客计算环境作为主机的虚拟机执行。
在这些配置中,在客户端/主机上执行的应用显示由在服务器/顾客上执行的服务器程序产生的交互窗口。交互窗口对于客户端/主机的用户而言可能看起来是服务器/顾客的桌面。在服务器的情况下,服务器可支持与不同客户端的同时连接(或会话),每个连接(或会话)可被定制用于所述特定客户端。当用户与显示在客户端/主机上的交互窗口的内容交互(例如,通过使用触摸、鼠标等选择窗口的图标或其它元素)时,这些交互被从客户端/主机传送到服务器/顾客,这使服务器/顾客相应地做出响应并且随后更新交互窗口内容以反映交互的结果。
因为交互窗口的内容由服务器/顾客确定并且对于客户端/主机而言是未知的,所以客户端/主机不知道是否或何时需要并且应该显示虚拟输入设备。因此如果在客户端/主机的用户在由服务器/顾客产生的交互窗口上选择例如备忘录图标,则服务器/顾客的备忘录应用将会被显示在交互窗口中,但虚拟输入设备不出现在客户端/主机显示器上,因为客户端/主机不知道现在需要虚拟输入设备。
一些类型的操作系统具有服务器侧/顾客侧虚拟输入设备,诸如虚拟键盘。如果服务器/顾客应用(诸如,备忘录应用)知道它已被从客户端/主机启动并且知道服务器/顾客操作系统支持服务器侧/顾客侧虚拟输入设备,则它能够请求服务器/顾客操作系统显示服务器侧/顾客侧虚拟输入设备。由服务器/顾客随后产生的交互窗口包括服务器侧/顾客侧虚拟输入设备。在客户端/主机设备的用户然后能够通过选择显示的服务器侧/顾客侧虚拟输入设备的元素(诸如,虚拟键盘的按键)来与其交互。
然而,为了做到这一点,在服务器/顾客上运行的应用需要认识到:它可能正在服务器/顾客配置中运行,和/或服务器/顾客操作系统具有服务器侧/顾客侧虚拟输入设备。许多较早的应用不具有这种认识。如果备忘录应用例如不具有这种认识,则服务器侧/顾客侧虚拟输入设备将不会被自动地显示给客户端/主机处的用户。
另外,许多较早的操作系统不支持服务器侧/顾客侧虚拟输入设备。因此,即使在服务器/顾客上运行的应用意识到它正在服务器/顾客配置中运行并且客户端/主机的用户需要虚拟输入设备,服务器/顾客也不能显示虚拟输入设备。
根据本公开,当在第一计算环境上运行的应用的输入元素被在第二计算环境的用户选择时,即使第一计算环境的操作系统不支持FCE侧虚拟输入设备和/或应用不知道虚拟输入设备,第一计算环境(FCE)也能够使虚拟输入设备被呈现在第二计算环境(SCE)的显示器上。在第一计算环境的操作系统支持FCE侧虚拟输入设备的示例中,不管在服务器上运行的应用是否知道虚拟输入设备,都可显示FCE侧虚拟输入设备。在第一计算环境的操作系统不支持FCE侧虚拟输入设备的示例中,第一计算环境能够使得SCE侧虚拟输入设备被显示。
辅助信道被建立在第一计算环境和第二计算环境之间。这个辅助信道不同于第一计算环境和第二计算环境之间的主信道通信连接,通过主信道通信连接,所述两个计算环境通信以便在第二计算环境的显示器上呈现在第一计算环境上执行的应用的交互窗口。所述两个计算环境经辅助信道商议以确定两个环境的虚拟输入设备能力,并且确立虚拟输入设备将要被按其使用的优先次序。第一计算环境上的监控模块检测在第一计算环境上执行的应用的输入元素的第二计算环境上的选择。如果FCE侧虚拟输入设备是最高优先级存在的虚拟输入设备,则在第二计算环境的用户未采取另外的行动的情况下,将会由监控模块在选择时自动地启动FCE侧虚拟输入设备。如果SCE侧虚拟输入设备是最高优先级存在的虚拟输入设备,则在第二计算环境的用户未采取另外的行动的情况下,监控模块将会经辅助信道向第二计算环境发送指令以自动地启动SCE侧虚拟输入设备。
本公开的一个核心概念代表这样的计算机技术:与以前已经做到的相比,所述计算机技术有益于使用不具有物理键盘或其它这种物理输入设备的客户端设备执行的远程客户端-服务器桌面会话,并且有益于主机设备上的顾客环境的虚拟化。
通过响应于用户在客户端设备或主机设备上选择显示在交互窗口中的输入元素而自动地使虚拟输入设备被启动(即使在服务器或顾客环境上执行的应用和/或操作系统不具有这么做的能力也是如此),用户能够在没有中断或延迟的情况下继续工作。如果用户选择输入元素但虚拟输入设备未被自动地显示,则发生用户沮丧和用户一连串的思路的中断。在这种情况下,在像通常情况一样交互窗口被全屏幕显示在客户端或主机上的情况下,用户首先必须缩小所述窗口或使所述窗口最小化。然后,用户需要在客户端或主机上定位虚拟输入设备的图标。这涉及用户对显示器的视觉扫描,并且还可能涉及到用户滑动通过多个屏幕以便定位合适的图标。然后,在用户已手动地定位并且选择图标以启动虚拟输入设备之后,他或她返回到缩小或最小化的交互窗口,并且再一次将其最大化。最后,在所有这些之后,虚拟输入设备准备好供使用。此时,用户需要从中断恢复到他或她的一连串的思路以便执行当他们选择交互窗口的输入元素时他们原先想要的任务。
将这种操作与本公开的操作进行比较。根据本公开,用户选择显示在客户端或主机显示器上的输入元素,并且虚拟输入设备自动地出现。用户能够立即输入所需信息并且继续执行他的工作,而没有任何延迟或中断。另外,无论服务器/顾客操作系统和/或在服务器/顾客上运行并且由用户交互的应用是否支持和/或认识到虚拟输入设备,本公开都能够使这一点得以完成。
现在考虑具有通信计算环境的系统,并且参照图1,系统100包括第一计算环境(FCE)110,FCE 110以可通信方式耦合到第二计算环境(SCE)170。FCE 110和SCE 170经主信道190和不同的辅助信道195通信。FCE 110向SCE 170呈现交互窗口,并且SCE 170经主信道190向FCE 110传送SCE 170的用户所做的选择和其它交互。FCE 110和SCE 170经辅助信道195执行商议虚拟输入设备显示偏好。
FCE 110包括处理器120,处理器120以可通信方式耦合到存储器130。存储器130包括用于各种模块的程序指令,所述程序指令可由处理器120执行。一个模块是在FCE 110上执行的活跃应用160。活跃应用160包括显示在窗口中的输入元素165,输入元素165能够由在SCE 170的用户选择以允许用户提供输入(诸如例如,字母数字文本)。另一模块是辅助信道模块140,辅助信道模块140在FCE 110和SCE 170之间建立辅助信道195并且与SCE 170商议虚拟输入设备显示偏好。另一模块是监控模块150。监控模块150检测由SCE 170经主信道190对在FCE 110上执行并且显示在SCE 170的交互窗口182中的活跃应用160的输入元素165的选择。响应于所述选择,监控模块150自动地使虚拟输入设备185根据显示偏好被显示在SCE 170的显示器180上。在一个示例中,通过经辅助信道195发信号通知SCE 170启动虚拟输入设备,监控模块150自动地使SCE 170的虚拟输入设备被启动并且呈现给用户。在另一示例中,监控模块150经主信道190自动地使FCE 110的虚拟输入设备被启动并且呈现给SCE 170。一旦虚拟输入设备已被启动,在SCE 170的用户然后能够与虚拟输入设备185交互以向FCE 110提供所需输入。
在一个示例中,并且如随后参照图2所讨论,FCE 110是服务器计算机260,SCE 170是客户端计算机210,SCE 170经网络以可通信方式耦合到FCE 110,并且主信道190使用远程桌面通信协议(RDCP)。在一个示例中,RDCP在FCE 110和SCE 170之间实现远程桌面会话,这使在SCE 170的用户能够与FCE 110的桌面交互并且操作FCE 110的桌面,所述FCE 110的桌面由FCE 110呈现给SCE 170。如随后所讨论,RDCP不是微软(Microsoft)RDP(远程桌面协议),但微软RDP是RDCP的一个示例。
在另一示例中,并且如随后参照图3所讨论,SCE 170是主机计算环境,并且FCE110是在SCE 170内虚拟化的顾客计算环境(即,虚拟机)。在一个示例中,主信道190使FCE110和SCE 170能够经套接字接口通信从而使在SCE 170的用户能够与FCE 110的桌面交互并且操作FCE 110的桌面,所述FCE 110的桌面由FCE 110呈现给SCE 170。
因此,FCE 110可被视为“桌面交互计算环境”(DICE),并且SCE 170可被视为“桌面呈现计算环境”(DPCE)。
现在考虑客户端-服务器系统并且参照图2,系统200包括客户端计算机210,客户端计算机210在一些示例中经网络(未示出)以可通信方式耦合到服务器计算机260。
客户端计算机210包括处理器212,处理器212耦合到显示器214、鼠标218、触摸屏幕219和存储器215。在一些示例中,客户端计算机210还包括物理输入设备(未示出),所述物理输入设备也耦合到处理器212。存储器215包括可由处理器212执行的、用于各种程序模块的程序指令,所述程序模块包括客户端操作系统(客户端OS)216,客户端操作系统216可启动客户端存储器215中的其它程序模块并且向客户端存储器215中的其它程序模块提供资源。服务器计算机260包括处理器262和存储器265。存储器265包括可由处理器262执行的、用于各种程序模块的程序指令,所述程序模块包括服务器操作系统(服务器OS)266,服务器操作系统266可启动服务器存储器265中的其它程序模块并且向服务器存储器265中的其它程序模块提供资源。
在一些示例中,客户端OS 216和服务器OS 266是不同的。例如,一个OS可以是视窗(Windows)XP,而另一OS可以是视窗10。或者一个OS可以是视窗7,而另一OS可以是Linux。在一些示例中,客户端OS 216和服务器OS 266具有不同平台。平台可被定义为操作系统和/或计算机架构的底层技术。例如,视窗、Linux、OS X、iOS和安卓(Android)是具有不同底层技术的操作系统,并且因此在这里被视为具有不同平台。作为另一示例,ARM、X86和64位机器具有不同底层技术,并且因此在这里被视为具有不同平台。另外,不同平台可由不同制造商(诸如,微软和苹果(Apple))开发和/或供应。
客户端存储器215包括远程客户端应用220,并且服务器存储器265包括远程服务器应用270。远程客户端应用220和远程服务器应用270经主信道250通信,主信道250采用远程桌面通信协议(RDCP)。示例性RDCP的非限制性列表包括微软RDP、思杰(Citrix)ICA和Teredici PColP。示例性远程客户端应用220和远程服务器应用270的非限制性列表包括微软远程桌面服务/终端服务(Microsoft Remote Desktop Services/Terminal Services)和思杰虚拟化桌面/虚拟化服务器(Citrix XenDesktop/XenServer)。各种远程客户端应用220和远程服务器应用270利用各种操作系统操作。
在一个示例中,RDCP通过连接250在远程客户端应用220和远程服务器应用270之间实现远程桌面会话。尽管对于不同远程客户端应用220和远程服务器应用270而言细节可能不同,但在远程桌面会话中,远程服务器应用270通常向远程客户端应用220发送服务器计算机260的桌面或桌面应用的交互窗口。交互窗口可被视为所述桌面或桌面应用的“图片”。远程客户端应用220在显示器214上显示交互窗口,从而显示器214(如果远程客户端应用220正在全屏幕模式下运行)或者显示器214上的窗口看起来像服务器计算机260的桌面或窗口。用户能够随后使用鼠标218将光标移动到特定交互元素(诸如例如,图标),并且点击它以选择它(或者替代地采用触摸屏幕219触摸它)。例如,如果用户选择应用(诸如例如,备忘录应用)的图标,则远程服务器应用270在服务器260上启动所述应用并且使它的用户界面作为应用窗口272出现在呈现给客户端计算机210的交互窗口中。
用户能够与活跃(即,具有焦点)的应用窗口272的各种图形元素交互。这些元素可包括控件元素(诸如例如,单选按钮或复选框),并且还可包括输入元素(诸如,输入元素274)。在许多情况下,输入元素允许由用户输入字母数字文本。在传统计算机中,使用客户端计算机210的物理键盘输入这种文本。然而,如果(诸如,对于平板计算机或智能电话而言)不存在物理键盘,则替代地使用虚拟输入设备(诸如,虚拟键盘)。虽然为了图解的清楚起见在服务器计算机260内绘制了窗口272,但窗口272在客户端计算机210的显示器214上被呈现给用户,并且对应于窗口182(图1)。
在一些示例中,客户端计算机210包括客户端侧虚拟输入设备230。尽管在客户端计算机210上执行的应用通常知道用户何时已选择所述客户端侧应用的输入元素并且因此能够自动地启动客户端侧虚拟输入设备230,但这对于应用窗口272中的在服务器计算机260上执行的应用的输入元素274而言情况并非如此。输入元素274的选择对于远程客户端应用220而言是未知的,因为正在服务器计算机260而非客户端计算机210上执行用户经窗口272与之交互的应用。作为结果,当输入元素274被用户选择时,客户端侧虚拟输入设备230不能被自动地启动。
在一些示例中,服务器计算机260包括服务器侧虚拟输入设备285。在一些示例中,服务器侧虚拟输入设备285是服务器OS 266的特征。另外,在一些示例中,显示在窗口272中的应用能够认识到正在从客户端计算机210而非从它所驻留在的服务器计算机260与它交互,和/或认识到服务器OS 266具有服务器侧虚拟输入设备285。如果服务器计算机260包括服务器侧虚拟输入设备285,并且如果所述应用知道服务器OS 266包括服务器侧虚拟输入设备285,则当显示在窗口272中的应用的输入元素274被在客户端计算机210的用户选择时,服务器侧虚拟输入设备285能够被自动地启动。然而,如果服务器计算机260缺少服务器侧虚拟输入设备285,和/或如果所述应用没有认识到正在从客户端计算机210与它交互和/或没有认识到服务器OS 266具有服务器侧虚拟输入设备285,则当输入元素274被用户选择时,服务器侧虚拟输入设备285不能被自动地启动。关于可用作服务器OS 266的操作系统的示例,视窗服务器(Windows Server)2012、视窗(Windows)8和视窗(Windows)10特别具有服务器侧虚拟输入设备285,而视窗服务器2008、视窗7和视窗X并不特别具有。关于示例性应用,微软视窗(Microsoft Windows)应用被分组为:为视窗8和较新的操作系统而设计的“现代”应用(其认识到虚拟键盘并且能够自动地启动服务器侧虚拟输入设备285);和较早的“Win32”或“桌面”应用(其没有认识到虚拟键盘并且因此不能自动地启动服务器侧虚拟输入设备285)。认识到虚拟键盘的现代应用包括例如微软商店(Microsoft Store)app或拼贴(Tile)app(也被称为地铁(metro)app),包括诸如办公室(Office)365应用或脸书(Facebook)应用的示例。没有认识到虚拟键盘的较早的“Win32”或“桌面”应用包括例如微软记事本(Microsoft Notepad)和微软写字板(Microsoft Wordpad)。
为了即使操作系统和/或应用不支持虚拟输入设备也在需要时自动地提供虚拟输入设备,服务器计算机260和客户端计算机210在服务器计算机260中的服务器辅助信道模块290和客户端计算机210中的客户端辅助信道模块240之间实现辅助信道255。在一些示例中,在建立远程客户端应用220和远程服务器应用270之间的通信之后,建立辅助信道255。在一些示例中,由服务器辅助信道模块290启动辅助信道250的建立。服务器辅助信道模块290和客户端辅助信道模块240商议虚拟输入设备偏好。在商议期间,获得使用客户端侧虚拟输入设备230、服务器侧虚拟输入设备285和客户端侧物理输入设备的优先次序。在一些示例中,从服务器辅助信道模块290和客户端辅助信道模块240中的至少一个获得所述优先次序。所述商议还确定客户端侧虚拟输入设备230、服务器侧虚拟输入设备285和客户端侧物理输入设备中的哪些存在。如果物理输入设备是最高优先级存在的设备,则没有设备将会被分派作为虚拟输入设备;将会使用物理输入设备。否则,最高优先级存在的设备(客户端侧虚拟输入设备230或服务器侧虚拟输入设备285)被分派为当输入元素274被选择时被使用。
服务器计算机260还包括虚拟输入设备监控器280。虚拟输入设备监控器280在路径276监控由客户端计算机210的用户经主信道250与在服务器计算机260上执行的活跃应用的窗口272的交互以便检测对输入元素274的选择。响应于所述选择,虚拟输入设备监控器280经主信道350自动地使虚拟输入设备被显示在客户端计算机210处。根据设备偏好确定要被使用的特定虚拟输入设备。
当将要在路径282启动服务器侧虚拟输入设备285时,虚拟输入设备监控器280可请求服务器OS 266去这么做。
当将要在路径384启动客户端侧虚拟输入设备230时,虚拟输入设备监控器280可自动地发信号通知顾客辅助信道模块390以使这一点发生。客户端辅助信道模块240经辅助信道255从服务器辅助信道模块290接收指令以实现这一点。作为响应,在一些示例中,通过请求客户端OS 216启动客户端侧虚拟输入设备230,客户端辅助信道模块240在路径242启动客户端侧虚拟输入设备230。主机侧虚拟输入设备330自动地在本地被显示在主机计算环境310处。来自客户端侧虚拟输入设备230的输入经路径232被发送给远程客户端应用220,并且经主信道250和远程服务器应用270被从远程客户端应用220发送给活跃应用。
随后参照图5更详细地描述虚拟输入设备监控器280的操作。
现在考虑基于虚拟机的系统,并且参照图3,系统300包括主机计算环境310,主机计算环境310以可通信方式耦合到顾客计算环境360。系统300允许两个不同操作系统(诸如例如,视窗10和OS X)在单个计算设备内的不同计算环境中运行。
主机计算环境310包括处理器312,处理器312被耦合到显示器314、鼠标318、触摸屏幕319和存储器315。在一些示例中,主机计算环境310还包括物理输入设备(未示出),所述物理输入设备也耦合到处理器312。存储器315包括可由处理器312执行的用于各种程序模块的程序指令,所述程序模块包括主机操作系统(主机OS)216,主机操作系统216可启动存储器315中的其它程序模块并且向存储器315中的其它程序模块提供资源。存储器315中还包括顾客计算环境360。顾客计算环境360的软件模块由相同的处理器312执行,处理器312执行主机计算环境310的软件模块。顾客计算环境360包括顾客操作系统(顾客OS)366,顾客操作系统366在许多示例中是与主机OS 316不同的类型的操作系统。例如,一个OS可以是视窗XP,而另一OS可以是视窗10。或者一个OS可以是视窗7,而另一OS可以是Linux。在一些示例中,主机OS 316和顾客OS 366具有不同平台。顾客OS 366可启动顾客计算环境360中的其它程序模块,并且向顾客计算环境360中的其它程序模块提供资源。在一些示例中,主机环境310还包括管理程序317,管理程序317创建并且运行虚拟机(即,顾客计算环境360)。顾客环境360在主机环境310内的虚拟机“盒”中执行。
处理器312、显示器314、鼠标318、触摸屏幕319和存储器315可分别与处理器212、显示器214、鼠标218、触摸屏幕219和存储器215(图2)相同或相似。
主机计算环境310包括主机客户端应用320,并且顾客计算环境360包括顾客服务器应用370。主机客户端应用320和顾客服务器应用370经主信道350通信。在一些示例中,通过套接字通信或通过由管理程序317或其它部件提供的虚拟机收发器信道来实现主信道350。示例性主机客户端应用320和顾客服务器应用370的非限制性列表包括虚拟件(VMware)、虚拟盒(Virtual Box)和平行桌面(Parallel Desktop)。各种主机客户端应用320和顾客服务器应用370利用各种操作系统操作。
在一个示例中,套接字或虚拟机收发器通过连接350实现主机客户端应用320和顾客服务器应用370之间的桌面会话。尽管对于不同主机客户端应用320和顾客服务器应用370而言细节可能不同,但在桌面会话中,顾客服务器应用370通常向主机客户端应用320发送顾客计算环境360的桌面或桌面应用的交互窗口。主机客户端应用320在显示器314上显示交互窗口,从而显示器314(如果主机客户端应用320正在全屏幕模式下运行)或者显示器314上的窗口看起来像顾客计算环境360的桌面或窗口。用户能够随后使用鼠标318将光标移动到特定交互元素(诸如例如,图标),并且点击它以选择它(或者替代地采用触摸屏幕319触摸它)。例如,如果用户选择应用(诸如例如,备忘录应用)的图标,则顾客服务器应用370在顾客计算环境360上启动所述应用并且使它的用户界面作为应用窗口372出现在呈现给主机计算环境310的交互窗口中。
用户能够与活跃(即,具有焦点)的应用窗口372的各种图形元素交互。这些元素可包括控件元素(诸如例如,单选按钮或复选框),并且还可包括输入元素(诸如,输入元素374)。在许多情况下,输入元素允许由用户输入字母数字文本。在传统计算机中,使用主机计算环境310的物理键盘输入这种文本。然而,如果(诸如,对于平板计算机或智能电话而言)不存在物理键盘,则替代地使用虚拟输入设备(诸如,虚拟键盘)。虽然为了图解的清楚起见在顾客计算环境360内绘制了窗口372,但它在显示器314上被呈现给用户,并且对应于窗口182(图1)。
在一些示例中,主机计算环境310包括主机侧虚拟输入设备330。尽管在主机计算环境310上执行的应用通常知道用户何时已选择所述客户端侧应用的输入元素并且因此能够自动地启动主机侧虚拟输入设备330,但这对于在顾客计算环境360上执行并且显示在窗口372中的应用的输入元素374而言情况并非如此。对输入元素374的选择对于主机客户端应用320而言是未知的,因为正在顾客计算环境360而非主机计算环境310上执行用户与之交互的窗口372的应用。作为结果,当输入元素374被用户选择时,主机侧虚拟输入设备330不能被自动地启动。
在一些示例中,顾客计算环境360包括顾客侧虚拟输入设备385。在一些示例中,顾客侧虚拟输入设备385是顾客OS 366的特征。另外,在一些示例中,显示在窗口372中的应用能够认识到正在从主机计算环境310而非从它所驻留在的顾客计算环境360与它交互,和/或认识到顾客OS 366具有顾客侧虚拟输入设备385。如果顾客计算环境360包括顾客侧虚拟输入设备385,并且如果所述应用知道顾客OS 366包括顾客侧虚拟输入设备385,则当显示在窗口272中的应用的输入元素374被在主机计算环境310的用户选择时,顾客侧虚拟输入设备385能够被自动地启动。然而,如果顾客计算环境360缺少顾客侧虚拟输入设备385,和/或如果所述应用没有认识到正在从主机计算环境310与它交互和/或没有认识到顾客OS366具有顾客侧虚拟输入设备385,则当输入元素374被用户选择时,顾客侧虚拟输入设备385不能被自动地启动。可用作顾客OS 366的操作系统的示例包括作为可用作服务器OS266(图2)的前面所讨论的那些操作系统。另外,认识到虚拟键盘的现代应用和没有认识到虚拟键盘的较早应用的示例包括参照图2分别标注为现代应用和较早应用的应用。
为了即使操作系统和/或应用不支持虚拟输入设备也在需要时自动地提供虚拟输入设备,顾客计算环境360和主机计算环境310在顾客计算环境360中的顾客辅助信道模块390和主机计算环境310中的主机辅助信道模块340之间实现辅助信道355。在一些示例中,在建立主机客户端应用320和顾客服务器应用370之间的通信之后,建立辅助信道355。在一些示例中,由顾客辅助信道模块390启动辅助信道355的建立。顾客辅助信道模块390和主机辅助信道模块340商议虚拟输入设备偏好。在商议期间,获得使用主机侧虚拟输入设备330、顾客侧虚拟输入设备385和主机侧物理输入设备的优先次序。在一些示例中,从顾客辅助信道模块390和顾客辅助信道模块340中的至少一个获得所述优先次序。所述商议还确定主机侧虚拟输入设备330、顾客侧虚拟输入设备385和客户端侧物理输入设备中的哪些存在。如果物理输入设备是最高优先级存在的设备,则没有设备将会被分派作为虚拟输入设备;将会使用物理输入设备。否则,最高优先级存在的设备(主机侧虚拟输入设备330或顾客侧虚拟输入设备385)被分派为当输入元素374被选择时被使用。
顾客计算环境360还包括虚拟输入设备监控器380。虚拟输入设备监控器380在路径376监控由主机计算环境310的用户经主信道350与在顾客计算环境360上执行并且显示在窗口372中的活跃应用的交互以便检测对输入元素374的选择。响应于所述选择,虚拟输入设备监控器380经主信道350自动地使虚拟输入设备被显示在主机计算环境310处。根据设备偏好确定要被使用的特定虚拟输入设备。
当将要在路径382启动顾客侧虚拟输入设备385时,虚拟输入设备监控器380可请求顾客OS 366去这么做。
当将要在路径384启动主机侧虚拟输入设备330时,虚拟输入设备监控器380可自动地发信号通知顾客辅助信道模块390以使这一点发生。主机辅助信道模块340经辅助信道355从顾客辅助信道模块390接收指令以实现这一点。作为响应,在一些示例中,通过请求主机OS 316启动主机侧虚拟输入设备330,主机辅助信道模块340在路径342启动主机侧虚拟输入设备330。主机侧虚拟输入设备330自动地在本地被显示在主机计算环境310处。来自主机侧虚拟输入设备330的输入经路径332被发送给主机客户端应用320,并且经主信道350和顾客服务器应用370被从主机客户端应用320发送给活跃应用。
随后参照图5更详细地描述虚拟输入设备监控器380的操作。
现在考虑一种用于第一计算环境(FCE)在第二计算环境(SCE)的显示器上自动地显示虚拟输入设备的方法,第二计算环境经主信道以可通信方式耦合到FCE,并且参照图4,通过在FCE和SCE之间建立辅助信道,方法400开始于410。在420,由FCE和SCE经辅助信道商议虚拟输入设备偏好。在430,检测由SCE经主信道对与SCE关联的活跃FCE应用的输入元素的选择。在一个示例中,与SCE关联的活跃FCE应用是在与在SCE的用户的远程会话中在FCE上执行的应周,并且用户做出选择。在440,响应于所述选择,自动地引发根据设备偏好启动虚拟输入设备,虚拟输入设备可由SCE操作以将数据输入到输入元素。
参照图5,现在考虑虚拟输入设备监控器的流程图。虚拟输入设备监控器可以是监控模块150(图1)、监控器280(图2)和/或监控器380(图3)。图5的流程图可另外或者替代地被视为在服务器计算机260(图2)或顾客计算环境360中实现的方法的至少一部分。
如随后参照图8-9所讨论,通过建立辅助信道并且商议对虚拟输入设备的用户偏好,方法500开始于510。在515,确定是否将要使用虚拟输入设备。例如,如果商议的偏好指示物理键盘存在于客户端计算机或主机计算环境并且将要替代虚拟输入设备而被使用,则所述方法停止(515的“否”分支)。否则(515的“是”分支),所述方法在520继续,其中识别在服务器计算机或顾客计算环境上执行的活跃应用。活跃应用(诸如例如,图1的应用160)被显示在应用窗口274(图2)或应用窗口374(图3)中。在一些示例中,通过查询服务器/顾客OS以识别当前具有焦点的应用(即,它是当前能够被交互的应用),识别活跃应用。在525,确定服务器/顾客OS是否具有虚拟输入设备。在一些示例中,通过向服务器/顾客OS查询登记的虚拟键盘设备是否存在(是否虚拟键盘被像标准应用一样启动),或者检查用于启动虚拟键盘的API是否存在,实现这一点。如果服务器/顾客OS确实具有虚拟输入设备(525的“是”分支),则在530确定活跃应用是否是这样的应用:所述应用认识到服务器/顾客操作系统具有服务器侧/顾客侧虚拟输入设备和/或正在从与其中所述应用正执行的计算环境不同的计算环境与所述应用交互。在一些示例中,通过识别活跃应用的种类(对于具有这种认识的应用而言以及对于不具有这种认识的那些应用而言,所述活跃应用的种类是不同的),作出这种确定。在一些示例中,通过确定应用是否像没有认知的应用一样具有进程句柄和关联的可执行体来实现这一点。没有认知的应用可以是假设其在桌面计算机环境中运行的较早或“传统”的应用。如果应用是有认知的(530的“是”分支),则所述方法环回到520以等待另一应用变得活跃,因为当前活跃的应用本身管理虚拟输入设备的使用。
如果应用是无认知的应用(530的“否”分支),或者如果服务器/顾客OS不具有虚拟输入设备(525的“否”分支),则在535确定点击或触摸事件是否已发生在活跃应用窗口内。在一个示例中,监控器向服务器/顾客OS登记以接收这种点击或触摸事件的通知。如果尚未发生点击或触摸事件(535的“否”分支),则在540确定所述应用是否仍然是活跃应用。如果所述应用仍然是活跃应用(540的“是”分支),则所述方法循环以等待点击或触摸事件。如果所述应用不是活跃应用(540的“否”分支),则所述方法返回到520以识别现在是活跃应用的应用。
如果点击或触摸事件已发生(535的“是”分支),则在545确定所述点击或触摸事件是否针对输入元素,诸如例如输入元素274(图2)、374(图3)。在一些示例中,活跃应用窗口的被点击或被触摸的元素被检查以确定它是否是输入元素,诸如可编辑元素或并非只读的文本框。如果它不是输入元素(545的“否”分支),则流程分叉至540。如果点击或触摸事件是针对输入元素(545的“是”分支),则在550向辅助信道模块发出请求以根据商议的偏好启动虚拟输入设备。辅助信道模块可以是服务器辅助信道模块290(图2)或顾客辅助信道模块390(图3)。随后参照图6更详细地描述辅助信道模块的操作。
在500发出请求之后,在560确定另一点击或触摸事件是否已发生在活跃应用窗口内。如果另一点击或触摸事件未发生在活跃应用窗口内(565的“否”分支),则在565确定所述应用是否仍然是活跃应用。如果所述应用仍然是活跃应用(565的“是”分支),则所述方法循环至560以等待点击或触摸事件。如果所述应用不是活跃应用(565的“否”分支),则在570向辅助信道模块发出请求以关闭虚拟输入设备。流程随后返回到520。
参照图6,现在考虑辅助信道模块的流程图。辅助信道模块可以是第一计算环境110的辅助信道模块140(图1)、服务器计算机260的服务器辅助信道模块290(图2)和/或顾客计算环境360的顾客辅助信道模块390(图3)。图6的流程图可另外或者替代地被视为在第一计算环境110、服务器计算机260或顾客计算环境360中实现的方法的至少一部分。
如随后参照图8-9所讨论,通过辅助信道模块与不同计算环境中的对应辅助信道模块建立辅助信道并且商议对虚拟输入设备的用户偏好,方法600开始于610。在615,等待来自虚拟输入设备监控模块的虚拟设备请求。当接收到这种请求时,随后在620确定将要被启动的虚拟输入设备的类型。可从商议的用户偏好确定这一点。如果监控器所驻留在的相同计算环境(服务器计算机260或顾客计算环境360)的虚拟输入设备(620的“FCE侧”分支)将要被启动,则在625,确定从监控器接收的请求的类型。在一些示例中,所述类型与所述请求一起被传递。如果所述请求是启动虚拟输入设备(625的“启动”侧),则在630,辅助信道模块自动地启动FCE侧虚拟输入设备(例如,服务器虚拟输入设备285或顾客虚拟输入设备385)。如果所述请求是关闭虚拟输入设备(625的“关闭”侧),则在630,辅助信道模块自动地关闭FCE侧虚拟输入设备。在一个示例中,通过作出API调用或向FCE的操作系统(例如,服务器OS 266或顾客OS 366)提供信号,FCE侧虚拟输入设备被启动或关闭。尽管在图5-6的示例中,FCE侧虚拟输入设备由FCE辅助信道模块启动或关闭,但在其它示例中,FCE侧虚拟输入设备替代地由虚拟设备监控模块启动或关闭。
如果与监控器所驻留在的计算环境不同的计算环境(客户端计算机210或主机计算环境310)的虚拟输入设备(620的“SCE侧”分支)将要被启动,则在640,确定从监控器接收的请求的类型。在一些示例中,所述类型与所述请求一起被传递。如果所述请求是启动虚拟输入设备(640的“启动”侧),则在645,与监控器相同的计算环境中的辅助信道模块(辅助信道模块140、服务器辅助信道模块290或顾客辅助信道模块390)指示所述不同计算环境中的辅助信道模块(客户端辅助信道模块240或主机辅助信道模块340)自动地启动客户端虚拟输入设备230(图2)或主机虚拟输入设备330(图3)。如果所述请求是关闭虚拟输入设备(640的“关闭”侧),则在650,与监控器相同的计算环境中的辅助信道模块指示所述不同计算环境中的辅助信道模块自动地关闭客户端虚拟输入设备230(图2)或主机虚拟输入设备330(图3)。在650,监控计算环境中的辅助信道模块等待来自所述不同计算环境中的辅助信道模块的、虚拟键盘已被按照所请求的那样启动或关闭的确认。
参照图7,现在考虑与图6的辅助信道模块互补并且可结合图6的辅助信道模块使用的另一辅助信道模块的流程图。所述辅助信道模块可以是客户端计算机210的客户端辅助信道模块240(图2)和/或主机计算环境310的主机辅助信道模块340(图3)。图7的流程图可另外或者替代地被视为在第二计算环境170、客户端计算机210或主机计算环境310中实现的方法的至少一部分。
如随后参照图8-9所讨论,通过辅助信道模块与不同计算环境中的互补辅助信道模块建立辅助信道并且商议对虚拟输入设备的用户偏好,方法700开始于710。在720,等待来自互补辅助信道模块的虚拟设备指令。当接收到这种指令时,它的类型被确定。在一些示例中,所述类型与所述指令一起被传递。
如果所述指令是启动虚拟输入设备(730的“启动”侧),则在740,辅助信道模块自动地启动虚拟设备185(图1)、客户端虚拟输入设备230(图2)或主机虚拟输入设备330(图3)。如果所述请求是关闭虚拟输入设备(625的“关闭”侧),则在630,辅助信道模块自动地关闭虚拟设备185(图1)、客户端虚拟输入设备230(图2)或主机虚拟输入设备330(图3)。在760,辅助信道模块向所述不同计算环境中的互补辅助信道模块确认所指示的启动或关闭操作的完成。
参照图8,现在考虑建立用于虚拟输入设备的辅助信道的方法。图8的流程图可另外或者替代地被视为辅助信道模块的至少一部分。辅助信道模块可以是第一计算环境110的辅助信道模块140(图1)、服务器计算机260的服务器辅助信道模块290(图2)和/或顾客计算环境360的顾客辅助信道模块390(图3)。
通过确定不同计算环境是否支持虚拟信道连接,所述方法开始于810。所述不同计算环境可以是第二计算环境110、客户端计算机210的客户端辅助信道模块240(图2)和/或主机计算环境310的主机辅助信道模块340(图3)。在一些示例中,通过查明用于特定虚拟信道协议的插件对于第一和第二计算环境是否存在来作出所述确定。例如,计算环境可尝试使用由计算环境支持的所有虚拟信道协议与所述不同计算环境建立虚拟信道连接。如果所述不同计算环境支持虚拟信道(810的“是”分支),则在820,在所述两个计算环境的所述两个辅助信道模块之间建立用于辅助信道的虚拟信道连接。
如果所述不同计算环境不支持虚拟信道(810的“否”分支),则在830,确定所述不同计算环境是否支持套接字连接。在一些示例中,通过计算环境尝试与所述不同计算环境建立直接套接字连接来作出所述确定。在客户端-服务器系统(例如,图2)中,所述连接是网络套接字连接。在虚拟机系统(例如,图3)中,所述连接是套接字连接。如果所述不同计算环境支持套接字(830的“是”分支),则在840,在所述两个计算环境的所述两个辅助信道模块之间建立用于辅助信道的套接字连接。如果所述不同计算环境不支持网络套接字(830的“否”分支),则发生错误。
在执行块820或块840之后,在850商议对虚拟输入设备的用户偏好,并且所述方法结束。
参照图9,现在考虑商议对虚拟输入设备的用户偏好的方法。图9的流程图可另外或者替代地被视为辅助信道模块的至少一部分。辅助信道模块可以是第一计算环境110的辅助信道模块140(图1)、服务器计算机260的服务器辅助信道模块290(图2)和/或顾客计算环境360的顾客辅助信道模块390(图3)。辅助信道连接两个计算环境。所述第二计算环境可以是第二计算环境170(图1)、客户端计算机210的客户端辅助信道模块240(图2)和/或顾客计算环境310的主机辅助信道模块340(图3)。
通过结合所述两个计算环境之间经主信道(诸如,主信道150(图1)、250(图2)、350(图3))的交互经辅助信道从所述两个计算环境中的至少一个计算环境获得对输入设备的优先次序,方法900开始于910。在一个示例中,可获得预定义的优先次序。在一个示例中,所述优先次序按照使用至少一个计算环境中的虚拟输入设备和第二计算环境中的物理输入设备(诸如,物理键盘)的所需次序排序。在一个示例中,从所述两个计算环境之一获得优先次序。在另一示例中,从两个计算环境获得不同的优先次序,并且根据预定算法解决优先级的冲突。在920,确定哪些输入设备存在于所述两个计算环境中。在930,如果存在的最高优先级设备是物理输入设备(930的“是”分支),则在940,没有设备被分派作为虚拟输入设备。换句话说,当点击或触摸事件针对输入元素发生时,将会使用物理输入设备。如果存在的最高优先级设备不是物理输入设备(930的“否”分支),则在950,最高优先级存在的设备被分派作为虚拟输入设备以供在点击或触摸事件针对输入元素发生之时使用。
在一些示例中,这里讨论的至少一个块或步骤被自动化。换句话说,设备、系统和方法自动地发生。如这里以及所附权利要求中所定义,术语“自动化”或“自动地”(及其相似变型)将会被广泛地理解为表示使用计算机和/或机械/电气设备的设备、系统和/或过程的受控操作,而无需人类干预、观察、努力和/或决定。
从前面的描述,将会理解,由本公开提供的计算环境、介质和方法代表本领域的显著进步。虽然几个特定示例已被描述和图示,但本公开不限于这样描述和图示的部分的特定方法、形式或布置。例如,尽管在一个示例中虚拟输入设备是虚拟键盘,但在其它示例中它能够是虚拟控件按钮的另一布置(诸如,虚拟数字小键盘、产生字符或文字的印台(虚拟台)或其它设备)。前面的示例是说明性的,并且不同特征或元件可被包括在可在本申请或以后申请中要求保护的各种组合中。除非另外指定,否则方法权利要求的操作不需要被按照指定的次序执行。类似地,示图中的块或数字(诸如,(110)、(120)等)不应该被解释为局限于按照特定次序进行的操作。另外的块/操作可被添加,一些块/操作可被去除,或者块/操作的次序可被改变并且仍然在公开的示例的范围内。另外,在不同附图内讨论的方法或操作能够被添加到其它附图,或者与其它附图中的方法或操作交换。再另外,特定数字数据值(诸如,特定量、数字、种类等)或其它特定信息应该被解释为是说明性的以用于讨论示例。这种特定信息并非被提供用于限制示例。本公开不限于上述实现方式,而是替代地考虑到其等同物的全部范围而由所附权利要求定义。在权利要求记载其等同物的“一个”或“第一”元件的情况下,这种权利要求应该被理解为包括至少一个这种元件,既不要求也不排除两个或更多个这种元件。在权利要求记载“具有”的情况下,所述术语应该被理解为表示“包括”。
Claims (14)
1.一种用于显示虚拟输入设备的第一计算环境FCE,包括:
处理器;和
存储器,以可通信方式耦合到处理器并且包括用于以下项的可由处理器执行的指令:
辅助信道模块,用于在FCE和第二计算环境SCE之间建立辅助信道,所述辅助信道不同于FCE和SCE之间的主信道连接,并且用于通过以下操作与SCE商议虚拟输入设备显示偏好:
如果SCE侧物理输入设备是存在的最高优先级输入设备,则不分派虚拟输入设备;
如果SCE侧物理输入设备不是存在的最高优先级输入设备,则分派虚拟输入设备作为FCE侧虚拟输入设备或者作为是存在的最高优先级输入设备的SCE侧虚拟输入设备,以及
监控模块,用于如果虚拟输入设备已经被分派,则检测由SCE经主信道对在FCE上执行并且显示在SCE的交互窗口中的应用的输入元素的选择,并且作为响应,自动地使虚拟输入设备根据显示偏好被显示在SCE处。
2.如权利要求1所述的第一计算环境FCE,其中所述FCE的操作系统不包括FCE侧虚拟输入设备。
3.如权利要求1所述的第一计算环境FCE,其中在FCE上执行的应用不支持虚拟输入设备。
4.如权利要求1所述的第一计算环境FCE,其中所述FCE的操作系统具有与SCE的操作系统不同的平台。
5.一种用于第一计算环境FCE在第二计算环境SCE的显示器上自动地显示虚拟输入设备的方法,第二计算环境SCE经主信道以可通信方式耦合到FCE,所述方法包括:
在FCE和SCE之间建立辅助信道;
通过以下操作经辅助信道与SCE商议虚拟输入设备偏好:
如果SCE侧物理输入设备是存在的最高优先级输入设备,则不分派虚拟输入设备;
如果SCE侧物理输入设备不是存在的最高优先级输入设备,则分派虚拟输入设备作为FCE侧虚拟输入设备或者作为是存在的最高优先级输入设备的SCE侧虚拟输入设备;
如果虚拟输入设备已经被分派,则:
检测由SCE经主信道对与SCE关联的活跃FCE应用的输入元素的选择;以及
响应于所述选择,自动地引发根据设备偏好启动虚拟输入设备,虚拟输入设备可由SCE操作以将数据输入到输入元素。
6.如权利要求5所述的方法,其中
所述输入元素是由活跃FCE应用呈现的图形用户界面的字母数字输入控件,以及
所述选择是针对所述字母数字输入控件的点击事件或触摸事件。
7.如权利要求5所述的方法,其中自动地引发根据设备偏好启动虚拟输入设备包括:
如果设备偏好是FCE侧虚拟输入设备,则指示FCE的操作系统启动FCE侧虚拟输入设备;以及
如果设备偏好是SCE侧虚拟输入设备,则经辅助信道向SCE发出指令以启动SCE侧虚拟输入设备。
8.如权利要求5所述的方法,包括:
在启动之后,检测由SCE对活跃FCE应用的另外元素的选择或检测不同FCE应用的激活;以及
响应于所述选择或所述激活,自动地关闭虚拟输入设备。
9.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质具有存储在它上面的可执行程序,其中所述程序指示第一计算环境FCE的处理器:
与第二计算环境SCE建立辅助信道,所述辅助信道不同于与第二计算环境的主信道;
通过以下操作经辅助信道与SCE商议虚拟输入设备偏好:
如果SCE侧物理输入设备是存在的最高优先级输入设备,则不分派虚拟输入设备;
如果SCE侧物理输入设备不是存在的最高优先级输入设备,则分派虚拟输入设备作为FCE侧虚拟输入设备或者作为是存在的最高优先级输入设备的SCE侧虚拟输入设备;
如果虚拟输入设备已经被分派,则:
监控由SCE经主信道与在FCE上执行的应用的交互以检测对应用的输入元素的选择;以及
响应于所述选择自动地使虚拟输入设备根据设备偏好被显示在SCE处。
10.如权利要求9所述的介质,其中所述设备偏好指定SCE侧虚拟输入设备的使用,并且其中,为了自动地显示SCE侧虚拟输入设备,所述程序还指示处理器:
自动地经辅助信道向SCE发出请求以启动SCE侧虚拟输入设备,作为响应,SCE在本地在SCE上显示SCE侧虚拟输入设备。
11.如权利要求9所述的介质,其中所述设备偏好指定FCE侧虚拟输入设备的使用,并且其中,为了自动地显示FCE侧虚拟输入设备,所述程序还指示处理器:
自动地启动FCE上的FCE侧虚拟输入设备,FCE侧虚拟输入设备经主信道被显示在SCE处。
12.如权利要求9所述的介质,其中为了建立辅助信道,所述程序还指示处理器:
如果SCE支持虚拟信道,则建立虚拟信道作为辅助信道;以及
如果SCE支持网络套接字但不支持虚拟信道,则建立套接字连接作为辅助信道。
13.如权利要求9所述的介质,其中所述FCE是服务器,SCE是客户端,并且主信道使用远程桌面通信协议RDCP。
14.如权利要求9所述的介质,其中所述FCE是顾客虚拟机,SCE是主机机器,并且主信道在SCE上实现FCE的虚拟化。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2016/043889 WO2018021999A1 (en) | 2016-07-25 | 2016-07-25 | Automatic virtual input device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109074273A CN109074273A (zh) | 2018-12-21 |
CN109074273B true CN109074273B (zh) | 2022-03-29 |
Family
ID=61016400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680085189.6A Expired - Fee Related CN109074273B (zh) | 2016-07-25 | 2016-07-25 | 自动虚拟输入设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10956034B2 (zh) |
EP (1) | EP3423939B1 (zh) |
CN (1) | CN109074273B (zh) |
WO (1) | WO2018021999A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3750054B1 (en) * | 2018-04-27 | 2023-08-16 | Hewlett-Packard Development Company, L.P. | Signals to i/o devices based on virtual computer messages |
EP3750074A4 (en) * | 2018-04-27 | 2021-08-25 | Hewlett-Packard Development Company, L.P. | MESSAGES BASED ON INPUT / OUTPUT DEVICE SIGNALS TO VIRTUAL COMPUTERS |
US11429753B2 (en) * | 2018-09-27 | 2022-08-30 | Citrix Systems, Inc. | Encryption of keyboard data to avoid being read by endpoint-hosted keylogger applications |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101842243A (zh) * | 2007-09-06 | 2010-09-22 | 谷歌公司 | 动态虚拟输入设备配置 |
CN103339600A (zh) * | 2010-10-01 | 2013-10-02 | Flex Electronics ID Co.,Ltd. | 立即远程呈现 |
CN102918490B (zh) * | 2010-04-01 | 2014-07-23 | 思杰系统有限公司 | 与在平板计算装置的虚拟桌面内显示的远程应用交互 |
CN104853157A (zh) * | 2015-05-06 | 2015-08-19 | 金三立视频科技(深圳)有限公司 | Nvr远程控屏方法、控屏装置以及控屏系统 |
CN105637886A (zh) * | 2014-09-25 | 2016-06-01 | 华为技术有限公司 | 用于向客户端提供图形用户界面的服务器,以及客户端 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7130807B1 (en) * | 1999-11-22 | 2006-10-31 | Accenture Llp | Technology sharing during demand and supply planning in a network-based supply chain environment |
US6757362B1 (en) * | 2000-03-06 | 2004-06-29 | Avaya Technology Corp. | Personal virtual assistant |
US20020075317A1 (en) | 2000-05-26 | 2002-06-20 | Dardick Technologies | System and method for an on-demand script-activated virtual keyboard |
US7260820B1 (en) * | 2001-04-26 | 2007-08-21 | Vm Ware, Inc. | Undefeatable transformation for virtual machine I/O operations |
WO2007065307A2 (en) | 2005-12-10 | 2007-06-14 | Intel Corporation | Handling a device related operation in a virtualization environment |
JP5125777B2 (ja) * | 2008-06-03 | 2013-01-23 | 富士通株式会社 | 入出力ポートの割当て識別装置、その割当て識別方法及び情報処理装置 |
WO2010021631A1 (en) | 2008-08-22 | 2010-02-25 | Hewlett-Packard Development Company, L.P. | Remote graphics console and virtual media access to virtual machine guests |
US8706836B2 (en) * | 2008-12-15 | 2014-04-22 | Shara Susznnah Vincent | Live streaming media and data communication hub |
US9269060B2 (en) * | 2009-11-20 | 2016-02-23 | Oracle International Corporation | Methods and systems for generating metadata describing dependencies for composable elements |
US9274821B2 (en) * | 2010-01-27 | 2016-03-01 | Vmware, Inc. | Independent access to virtual machine desktop content |
CN106843715B (zh) * | 2010-10-05 | 2020-06-26 | 西里克斯系统公司 | 用于远程化的应用的触摸支持 |
US9087182B2 (en) * | 2011-03-02 | 2015-07-21 | Blackberry Limited | Password-based operation of a locked computing device |
US9552140B2 (en) * | 2011-07-21 | 2017-01-24 | Nokia Technologies Oy | Method and apparatus for providing data entry content to a remote environment |
US9304662B2 (en) * | 2011-08-25 | 2016-04-05 | Vmware, Inc. | User interface virtualization techniques |
US9250854B2 (en) | 2011-08-25 | 2016-02-02 | Vmware, Inc. | User interface virtualization for remote devices |
JP2014529964A (ja) * | 2011-08-31 | 2014-11-13 | ピング アイデンティティ コーポレーション | モバイル機器経由の安全なトランザクション処理のシステムおよび方法 |
TWI511537B (zh) * | 2012-04-27 | 2015-12-01 | Wistron Corp | 智慧型電視系統、智慧型電視、行動裝置及其輸入操作方法 |
US9292330B2 (en) * | 2012-11-29 | 2016-03-22 | International Business Machines Corporation | Replacing virtual machine disks |
US9483334B2 (en) * | 2013-01-28 | 2016-11-01 | Rackspace Us, Inc. | Methods and systems of predictive monitoring of objects in a distributed network system |
US9575649B2 (en) * | 2013-04-25 | 2017-02-21 | Vmware, Inc. | Virtual touchpad with two-mode buttons for remote desktop client |
KR102241318B1 (ko) * | 2013-10-11 | 2021-04-16 | 삼성전자주식회사 | 통신 서비스 운용 방법 및 이를 지원하는 전자 장치 |
US10983805B2 (en) | 2014-02-21 | 2021-04-20 | Nod, Inc. | Contextual keyboard located on a remote server for implementation on any content delivery and interaction application |
US9830175B1 (en) * | 2015-12-16 | 2017-11-28 | Amazon Technologies, Inc. | Predictive management of on-demand code execution |
-
2016
- 2016-07-25 WO PCT/US2016/043889 patent/WO2018021999A1/en active Application Filing
- 2016-07-25 EP EP16910677.0A patent/EP3423939B1/en not_active Not-in-force
- 2016-07-25 US US16/091,055 patent/US10956034B2/en active Active
- 2016-07-25 CN CN201680085189.6A patent/CN109074273B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101842243A (zh) * | 2007-09-06 | 2010-09-22 | 谷歌公司 | 动态虚拟输入设备配置 |
CN102918490B (zh) * | 2010-04-01 | 2014-07-23 | 思杰系统有限公司 | 与在平板计算装置的虚拟桌面内显示的远程应用交互 |
CN103339600A (zh) * | 2010-10-01 | 2013-10-02 | Flex Electronics ID Co.,Ltd. | 立即远程呈现 |
CN105637886A (zh) * | 2014-09-25 | 2016-06-01 | 华为技术有限公司 | 用于向客户端提供图形用户界面的服务器,以及客户端 |
CN104853157A (zh) * | 2015-05-06 | 2015-08-19 | 金三立视频科技(深圳)有限公司 | Nvr远程控屏方法、控屏装置以及控屏系统 |
Also Published As
Publication number | Publication date |
---|---|
EP3423939A4 (en) | 2019-11-27 |
US20190138204A1 (en) | 2019-05-09 |
EP3423939A1 (en) | 2019-01-09 |
WO2018021999A1 (en) | 2018-02-01 |
US10956034B2 (en) | 2021-03-23 |
CN109074273A (zh) | 2018-12-21 |
EP3423939B1 (en) | 2020-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3966681B1 (en) | Automated application updates during operating system upgrades | |
US10970101B2 (en) | System and method for dynamically configuring virtual displays and virtual inputs for different remote sessions that each present content for a virtual machine | |
EP3196764A1 (en) | Rapid dual-system switching method, apparatus and terminal | |
CN109074273B (zh) | 自动虚拟输入设备 | |
US12041133B1 (en) | System and method for controlling remote sessions executing on other devices | |
US8977968B2 (en) | Pseudo-remote terminal IOTA mobile diagnostics and electronic customer care | |
US9286088B2 (en) | User interface for interaction with virtual machine | |
US10572213B2 (en) | Universal application pinning | |
CN108255547B (zh) | 一种应用程序控制方法及装置 | |
US11722550B2 (en) | Sharing an input device between remote desktops of multiple client devices | |
US10871882B2 (en) | Efficient access to frequently utilized actions on computing devices | |
KR101837830B1 (ko) | Vdi 환경에서 3d 터치방식을 이용한 모바일 기기의 단축키 입력장치 및 입력방법 | |
US11487559B2 (en) | Dynamically switching between pointer modes | |
CN108375964A (zh) | 一种对话式机器管理方法及装置 | |
US9280358B1 (en) | Configuring a computer for using mobile devices as input and output devices | |
CN108268287A (zh) | 一种串口重定向终端软件优化实现方法 | |
JP2017102847A (ja) | 情報処理システム、中継装置、方法およびプログラム | |
KR101352866B1 (ko) | 원격 단말 제어를 위한 시스템, 제어방법 및 기록 매체 | |
US10812565B2 (en) | Systems and methods to configure metadata | |
EP2924962A1 (en) | Method of changing a user interface to be a dedicated Skype(tm) interface and computer program product thereof and handheld electronic device | |
US20170228244A1 (en) | Menu bar integration in desktop virtualization environments | |
US20230251842A1 (en) | Application installation on a remote desktop using local installation files | |
KR20150009376A (ko) | 터미널 환경의 서버 기반 컴퓨팅 시스템에서 마우스 ui 지원을 위한 터치 스크린 단말 장치 및 마우스 ui 지원 방법 | |
US12034782B2 (en) | System for enabling workspace sharing | |
CN112118611B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20220329 |