CN107463267A - 多主机启用流动的系统中的自动应用启动 - Google Patents

多主机启用流动的系统中的自动应用启动 Download PDF

Info

Publication number
CN107463267A
CN107463267A CN201710404878.5A CN201710404878A CN107463267A CN 107463267 A CN107463267 A CN 107463267A CN 201710404878 A CN201710404878 A CN 201710404878A CN 107463267 A CN107463267 A CN 107463267A
Authority
CN
China
Prior art keywords
master computer
computer
display
master
cursor
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.)
Pending
Application number
CN201710404878.5A
Other languages
English (en)
Inventor
保罗·帕塞里
拉杰什·戈帕拉克里希纳
拉普良·拉里·黄
让-克里斯托佩·黑梅斯
伊里·霍尔茨贝歇尔
菲利普·沙佐
坦维·K·沙阿
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.)
Logitech Europe SA
Original Assignee
Logitech Europe SA
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 Logitech Europe SA filed Critical Logitech Europe SA
Publication of CN107463267A publication Critical patent/CN107463267A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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
    • G06F3/0202Constructional details or processes of manufacture of the input device
    • 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/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/0486Drag-and-drop
    • 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/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • 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
    • 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/03547Touch pads, in which fingers can move on a surface
    • 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/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
    • 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/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • 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/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04812Interaction techniques based on cursor appearance or behaviour, e.g. being affected by the presence of displayed objects
    • 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/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • 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/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04845Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour
    • 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/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04847Interaction techniques to control parameter settings, e.g. interaction with sliders 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/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1407General aspects irrespective of display type, e.g. determination of decimal point position, display with fixed or driving decimal point, suppression of non-significant zeros
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/038Indexing scheme relating to G06F3/038
    • G06F2203/0383Remote input, i.e. interface arrangements in which the signals generated by a pointing device are transmitted to a PC at a remote location, e.g. to a PC in a LAN
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/80Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本发明公开了计算机实现的方法及系统。所述计算机实现的方法包括:从与第一主计算机通信地配对的输入装置接收输入信号(例如,光标移动),其中,第一主计算机通信地耦接至第二主计算机;检测光标何时选择应用窗口并且将该应用窗口移动到第一主计算机的显示器的边缘,应用窗口运行对应软件应用;以及响应于检测到光标何时选择应用窗口并且将应用窗口移动到第一主计算机的显示器的边缘而发送控制信号,以使第二主计算机中的处理器在第二主计算机的第二显示器上启动运行对应第二软件应用的第二应用窗口。

Description

多主机启用流动的系统中的自动应用启动
技术领域
本公开内容总体上涉及计算装置,并且特别地涉及用于在多主机启用流动的系统中自动启动应用的系统和方法。
背景技术
个人计算机(PC)、平板计算机、膝上型计算机、智能电话等(即“计算装置”)在现代社会中很常见,许多计算机用户拥有专用于不同目的(包括工作使用、个人使用、家庭或共享使用等)的多个计算机。用户通常定期使用多个计算机,甚至同时使用多个计算机。这些计算机中的许多计算机各自包括用于控制包括数据输入(例如,键盘、计算机鼠标、游戏控制器、“输入装置”等)、数据输出(例如,扬声器、“输出装置”等)和其他应用(例如,数据存储)的某些方面的许多外围装置。在许多常规系统中,定期访问多个计算装置的用户必须携带和管理多组外围装置,这可能是麻烦的,原因是每个组可能排外地与特定计算装置配对。
在缓解这个问题方面已经有了一些进展。例如,一些系统允许重新使用单个输入装置用于向多个计算装置的数据输入。然而,这些解决方案不是没有缺点。现有解决方案的一个显著缺点是如何完成将多个数据输入装置从第一主计算装置切换到第二主计算装置的过程。在一些现有解决方案中,为了将键盘装置和鼠标装置两者都切换到第二主计算装置,用户将必须执行两个单独的动作,这可能不利于用户体验。例如,在现有解决方案中,键盘装置和鼠标装置两者都与两个或更多个主计算装置中的每个主计算装置独立地配对。当用户想要从使用第一主计算装置切换到第二主计算装置时,用户必须单独地改变键盘装置和鼠标装置中的每一个的配对。
基于以上,本领域需要改进的方法和系统以在多个计算装置之间更有效地切换输入装置。
发明内容
在某些实施方式中,一种计算机实现的方法包括:由第一主计算机从与所述第一主计算机通信地配对的输入装置接收输入信号,输入信号与光标在第一主计算机的显示器上的移动对应,其中,第一主计算机通信地耦接至第二主计算机;由第一主计算机检测光标何时选择应用窗口并且将所述应用窗口移动到第一主计算机的显示器的边缘以及输入信号何时与所选择的应用窗口继续移动超出第一主计算机的显示器的边缘对应,应用窗口运行对应软件应用;以及响应于检测到光标将应用窗口移动到第一主计算机的显示器的边缘以及输入信号何时与所选择的应用窗口继续移动超出第一主计算机的显示器的边缘对应:由第一主计算机向第二主计算机发送控制信号,以使第二主计算机中的处理器在第二主计算机的第二显示器上启动运行对应第二软件应用的第二应用窗口。在一些情况下,第二软件应用可以与第一主计算机的软件应用相同。
在一些实施方式中,所述方法还可以包括:由第一主计算机检测输入到第一主计算机的显示器上的应用窗口中的输入数据;由第一主计算机向第二主计算机发送二控制信号,以使第二主计算机中的处理器将输入数据输入到第二主计算机的第二显示器上的第二应用窗口中。在一些情况下,还响应于检测到光标已经将应用窗口移动到第一主计算机的显示器的边缘以及输入信号何时与所选择的应用窗口继续移动超出第一主计算机的显示器的边缘对应:由第一主计算机向输入装置发送第三控制信号,以将输入装置的通信配对从第一主计算机切换到第二主计算机。在一些实现方式中,还响应于检测到光标已经将应用窗口移动到第一主计算机的显示器的边缘以及输入信号何时与所选择的应用窗口继续移动超出第一主计算机的显示器的边缘对应,所述方法包括:由第一主计算机向第二主计算机发送第四控制信号,以使第二主计算机中的处理器移动第二主计算机的显示器上的第二光标。在一些情况下,网络可以是LAN、WAN、基于云的网络等。输入装置可以经由包括蓝牙、蓝牙LE、红外(IR)、ZigBee、超宽带、RF或类似种类的通信协议中之一的无线通信协议与第一主计算机或第二主计算机通信地配对。
在一些实施方式中,一种计算机实现的方法包括:由第一主计算机从与所述第一主计算机通信地配对的输入装置接收输入信号,输入信号与光标在第一主计算机的显示器上的移动对应,其中,第一主计算机通信地耦接至第二主计算机;由第一主计算机检测光标何时选择应用窗口并且移动该应用窗口超出第一主计算机的显示器的边缘,应用窗口运行对应软件应用;以及响应于检测到光标已经移动应用窗口超出第一主计算机的显示器的边缘,所述方法可以包括:由第一主计算机向第二主计算机发送控制信号,以使第二主计算机中的处理器在第二主计算机的第二显示器上启动运行对应第二软件应用的第二应用窗口。
在某些实施方式中,移动应用窗口超出第一主计算机的显示器的边缘大于所述应用窗口的总大小的阈值百分比可以使第一主计算机向第二主计算机发送主机控制信号。阈值百分比可以是如本领域普通技术人员将理解的至少50%或任何合适的阈值。在一些情况下,还响应于检测到光标何时选择应用窗口并且移动所述应用窗口超出第一主计算机的显示器的边缘,所述方法可以包括:由第一主计算机向输入装置发送第二控制信号,以将输入装置的通信配对从第一主计算机切换到第二主计算机。另外的实施方式可以包括:对第一主计算机的第一显示器上的应用窗口以图形形式去强调;以及向第二主计算机发送第三控制信号,以使第二主计算机的处理器以图形形式强调第二显示器上的第二应用窗口。以图形形式强调第二应用窗口可以包括使第二应用窗口改变颜色、改变亮度或闪烁中至少之一。对应用窗口以图形形式去强调可以包括使应用窗口改变颜色、改变亮度或渐弱中至少之一。在一些情况下,第二软件应用可以与第一主计算机的软件应用相同。
在另外的实施方式中,一种系统包括一个或更多个处理器以及包含指令的一个或更多个非暂态计算机可读存储介质,所述指令被配置成使所述一个或更多个处理器执行操作,所述操作包括:由第一主计算机从与所述第一主计算机通信地配对的输入装置接收输入信号,输入信号与光标在第一主计算机的显示器上的移动对应,其中,第一主计算机通信地耦接至第二主计算机;由第一主计算机检测光标何时选择应用窗口并且将所述应用窗口移动到第一主计算机的显示器的边缘以及输入信号何时与所选择的应用窗口继续移动超出第一主计算机的显示器的边缘对应,应用窗口运行对应软件应用;以及响应于检测到光标已经将应用窗口移动到第一主计算机的显示器的边缘以及输入信号何时与所选择的应用窗口继续移动超出第一主计算机的显示器的边缘对应:由第一主计算机向第二主计算机发送控制信号,以使第二主计算机中的处理器在第二主计算机的第二显示器上启动运行对应第二软件应用的第二应用窗口。在一些情况下,第二软件应用可以与第一主计算机的软件应用相同。
在一些实施方式中,所述一个或更多个非暂态计算机可读存储介质还包含以下指令,所述指令使所述一个或更多个处理器执行操作,所述操作包括:由第一主计算机检测输入到所述第一主计算机的显示器上的应用窗口中的输入数据;以及由第一主计算机向第二主计算机发送第二控制信号,以使第二主计算机中的处理器将输入数据输入到第二主计算机的第二显示器上的第二应用窗口中。在一些实施方式中,所述一个或更多个非暂态计算机可读存储介质还包含以下指令,所述指令使所述一个或更多个处理器执行操作,所述操作包括:还响应于检测到光标已经将应用窗口移动到第一主计算机的显示器的边缘以及输入信号何时与所选择的应用窗口继续移动超出第一主计算机的显示器的边缘对应:由第一主计算机向输入装置发送第三控制信号,以将输入装置的通信配对从第一主计算机切换到第二主计算机。
在另外的实施方式中,所述一个或更多个非暂态计算机可读存储介质还可以包含以下指令,所述指令使所述一个或更多个处理器执行操作,所述操作包括:还响应于检测到光标已经将应用窗口移动到第一主计算机的显示器的边缘以及输入信号何时与所选择的应用窗口继续移动超出第一主计算机的显示器的边缘对应:由第一主计算机向第二主计算机发送第四控制器信号,以使第二主计算机中的处理器移动第二主计算机的显示器上的第二光标。
附图说明
参照附图阐述详细描述。
图1示出了根据某些实施方式的用于实现输入装置在主计算机之间的自动切换的系统的方面。
图2示出了根据某些实施方式的用于实现针对输入装置的自动多主机切换的系统。
图3是示出了根据某些实施方式的子网上的主机的自动发现过程的流程图。
图4示出了根据某些实施方式的用于响应于检测到边缘触发事件而自动地使输入装置在主计算机之间切换的简化方法。
图5是示出了根据某些实施方式的在第一主计算机与第二主计算机之间输入装置的边缘触发切换的简化框图。
图6示出了根据某些实施方式的在启用流动的系统中使用安全区。
图7示出了根据某些实施方式的应用于启用流动的系统的最小阈值时间的影响。
图8示出了根据某些实施方式的应用于启用流动的系统的最小阈值时间的影响。
图9示出了简化框图,该简化框图示出了根据某些实施方式的用于启用流动的系统中的基于光标轨迹的延迟补偿的方法。
图10示出了根据某些实施方式的用于启用流动的系统中的基于光标轨迹的延迟补偿的简化方法。
图11示出了根据某些实施方式的用于响应于检测到启用流动的系统中的边缘触发事件而自动地使多个输入装置在主计算机之间切换的系统的简化框图。
图12示出了根据某些实施方式的响应于检测到启用流动的系统中的边缘触发事件而自动地使多个输入装置在主计算机之间切换的简化方法。
图13示出了根据某些实施方式的用于响应于边缘触发事件而在主计算机之间传送数据的启用流动的系统的简化框图。
图14示出了根据某些实施方式的用于响应于边缘触发事件而在启用流动的系统中的主计算机之间传送数据的简化方法。
图15示出了根据某些实施方式的用于在主计算机之间启动和同步软件应用的简化方法。
图16示出了根据某些实施方式的用于自动多主机切换的基于云的启用流动的系统。
图17A示出了根据某些实施方式的启用流动的多主机系统的简化框图。
图17B示出了根据某些实施方式的启用流动的多主机系统的简化框图。
图18示出了根据某些实施方式的用于在启用流动的网络中动态地桥接主计算机的简化方法。
图19示出了根据某些实施方式的采用具有不同大小和分辨率的显示器的启用流动的多主机系统的简化框图。
图20是根据某些实施方式的计算机系统的简化框图。
图21A示出了简化框图,该简化框图示出了根据某些实施方式的在分开的主计算机上进行操作的同步应用。
图21B示出了简化框图,该简化框图示出了根据某些实施方式的在分开的主计算机上进行操作的同步应用。
图22是示出了根据某些实施方式的子网上的主机的自动发现过程的序列图。
图23是示出了根据某些实施方式的经由基于云的网络的计算机主机切换和复制/粘贴过程的序列图。
具体实施方式
本公开内容总体上涉及计算装置,并且特别地涉及用于在主计算装置之间自动地切换多主机切换装置的系统和方法。
在下面的描述中,将描述计算装置之间的自动切换的各种实施方式以及其他发明构思。出于说明的目的,阐述了具体的配置和细节,以提供对实施方式的透彻理解。然而,还将对本领域技术人员而言明显的是,可以在没有具体细节的情况下实践实施方式。此外,可以省略或简化公知的特征,以不使所描述的实施方式模糊。
在某些实施方式中,用户可以通过将第一主计算机的显示器上的光标移动到和/或超出所述显示器的边缘来使输入装置将配对从第一主计算机自动地切换到第二主计算机。这种“边缘触发”事件可以使第一主计算机向输入装置发送第一控制信号,以将输入装置的配对从第一主计算机切换到第二主计算机,并且向第二主计算机发送第二控制信号以指示光标应该位于其显示器上的地方,以模拟对用户呈现光标从第一主计算机的显示器连续且无缝移动到第二主计算机的显示器。在一些实施方式中,响应于边缘触发事件,来自虚拟剪贴板(例如,在第一主计算机上)的内容可以被传送到第二主计算机的虚拟剪贴板,所述内容可以包括文本、媒体、可执行文件等。在一些情况下,三个或更多个主计算机可以共享输入装置,并且包括用于在其对应的显示器中的每个显示器之间的连续且无缝光标移动的边缘触发能力。“通信地耦接”的装置或实体可以具有彼此的双向电子通信。与装置“配对”的装置通常一次向单个主计算机发送控制信号(例如,移动检测、按钮按压、滚轮移动等),但是可以与多个主计算机同时且通信地耦接。
主计算机可以为任何合适的计算装置,包括台式计算机、膝上型计算机、上网本、平板计算机、智能电话、个人数字助理等。输入装置可以包括计算机鼠标、键盘、游戏控制器、轨迹球、触摸板、远程控制装置、可穿戴技术(例如,智能表、耳机)、扬声器、麦克风等。尽管下面的实施方式包括特定类型的计算装置、输入装置、操作系统等,但是应当理解的是,出于说明下面的新颖的系统、方法和构思的目的而示出了那些特定类型,并且那些特定类型不应被解释为对可能使用的计算装置、输入装置和操作系统(例如,微软Windows、苹果操作系统、iOS、Android操作系统等)的类型进行限制。也就是说,任何类型的计算装置、输入装置、操作系统等可以用于本文中明确描述的任何实施方式以及未明确描述但在本公开内容的广泛范围内的任何实施方式。
某些实施方式的概述
图1示出了根据某些实施方式的用于实现输入装置130在主计算机之间的自动切换的系统100的方面。系统100包括第一主计算机110、第二主计算机120和输入装置130。第一主计算机110包括显示器115。第二主计算机120包括显示器125。输入装置130控制光标140并且被示出为具有多主机切换能力的计算机鼠标。
输入装置130被示出为在由t1至t4限定的时间段内从左向右移动。在时间t1处,输入装置130是静止的,并且光标140被显示在第一主计算机110的显示器115上。在时间t2处,输入装置130正在从左向右移动,从而使光标140到达显示器115的边缘118,这启动了边缘触发事件。作为响应,第一主计算机110向输入装置130发送控制信号,以将通信配对从第一主计算机110切换到第二主计算机120。第一主计算机110还可以向第二主计算机120发送第二控制信号以提供信息,所述信息可以包括光标140在显示器115上的位置、光标140的轨迹(例如,光标140在到达边缘118之前的速度和方向)、用于第一主计算机110的虚拟剪贴板数据(例如,字母数字数据、媒体数据等)和/或其他对应的数据,使得光标150可以由相应边缘128处的第二主计算机120定位在显示器125上,以模拟光标在显示器115、125之间的分屏移动。在一些实施方式中,当光标到达“启用流动”的边缘并且接收到与继续移动超出启用流动的边缘对应的另外的输入信号时,可以引起边缘触发事件。
在时间t3时,输入装置130已经将配对从第一主计算机110切换到第二主计算机120,并且光标150位于第二主计算机120上的显示器125的边缘128上。在时间t4处,输入装置130与显示器125上的对应光标150一起停止。因此,当实际上光标140和150的移动以及它们对应的显示器115、125可能由第一主计算机110和第二主计算机120的不同操作系统独立地控制时,用户经历时间t1处的光标140到光标150在时间t4时的位置呈现无缝且连续的移动。
在一些情况下,在从第一主计算机切换到第二主计算机之间可能存在小但可察觉的延迟。一些实施方式可以利用来自光标140的轨迹数据,包括光标速度和方向,以计算在分屏的情境中光标140将在哪里结束,并且随后在延迟时间段期间使光标150朝向主计算机120上的对应位置移动,以给出在第一主计算机与第二主计算机之间连续移动和“流动”的幻觉。下面将关于图9至图10对此进行进一步讨论。应当注意的是,如下面进一步讨论的,可以使用任意数目的主计算装置,并且可以在主计算装置之间或输入装置与主计算装置之间使用任何合适的通信协议。
典型系统架构的实施方式
图2示出了根据某些实施方式的用于实现针对输入装置的自动多主机切换的系统200。系统200包括网络服务提供商210、防火墙220、以太网连接230、路由器240和局域网(LAN)250。LAN 250包括第一主计算机(主机)260、第二主计算机(主机)270、第三主计算机(主机)280和第四主计算机(主机)290。以太网连接230通过防火墙220耦接至网络服务提供商210。路由器240通信地耦接至以太网连接230。第五主计算机(主机)295耦接至以太网连接230。每个主机260至290可以通信地耦接至路由器240以形成LAN 250。输入装置262(例如,计算机鼠标)可以启用多主机切换(即,可以与多个计算装置配对)并且可以通信地耦接至主机260和主机270。输入装置282(例如,计算机鼠标)和输入装置284(例如,键盘)可以启用多主机切换并且可以通信地耦接至主机280和主机290。输入装置297可以通信地耦接至主机295。输入装置可以经由任何合适的无线通信协议通信地耦接至它们各自的主计算机,所述任何合适的无线通信协议包括但不限于蓝牙、蓝牙低功耗(BTLE)、红外(IR)、RF、ZigBee、罗技优联(Logitech Unifying)或其他合适的通信标准。每个主计算机可以包括“流动”软件(201至204),以启用和支持如下面进一步讨论的主计算装置之间的自动切换。系统200以及使用基于显示器(例如,基于像素)触发以将用于第一主计算机的输入装置自动地切换到第二主计算机的本文献(例如,图1至图19)中讨论或预期的任何其他实施方式可以统称为“启用流动的系统”。
可以以任何合适的配置使用任何合适的网络服务提供商、防火墙(如果适用)、以太网连接和路由器。为系统200提供互联网服务能力的其他方法是适用的。没有详细讨论网络服务提供商210、防火墙220、以太网连接230和路由器240之间的操作细节和通信交互,原因是它们是本领域普通技术人员通常理解的。在一些实施方式中,LAN可以是封闭网络,并且例如可以不连接到网络服务提供商。在这种情况下,如本领域普通技术人员将理解的,本文中描述的包括输入装置在多个主计算机之间的自动切换以及传送存储在存储器(例如,虚拟剪贴板)中的内容的新构思仍然适用于独立的LAN。
在一些实施方式中,主计算机260、270、280、290可以包括对应的流动软件(201至204),所述流动软件支持输入装置的自动多主机切换以及主计算机之间的光标/数据“流动”。系统200可以提供光标从第一主计算机到第二主计算机的无缝且连续“流动”的用户体验,原因是主计算机可以经由流动软件彼此连续和/或周期性地进行通信,并且可以共享包括共享输入装置的标识(即,唯一标识码)、操作设置(即,在流动软件中)、光标的位置、虚拟剪贴板上的文本数据或媒体等的数据。因此,当用户移动光标并在第一主计算机上启动边缘触发事件时,第二主计算机可以基于共享数据来确定其光标应该位于何处,以模拟光标从第一主计算机到第二主计算机的无缝且连续的移动。
在一些实现方式中,一个或更多个主计算机可以启动自动发现过程,以确定LAN上的哪些其他装置共享一个或更多个输入装置。参照图2,主机260与输入装置262(即,具有多主机切换能力的计算机鼠标)通信地耦接。主机260可以通过LAN发送(例如,经由本地软件201)广播消息,以请求来自也通信地耦接至输入装置262的一个或更多个其他主计算机(即,主计算机270至主计算机290)的响应。所述消息可以包括唯一地标识输入装置262的数据。所述消息可以经由通用数据报协议(UDP)、发布/订阅系统或其他合适的通信协议来发送。在系统200中,主机270可以发送提供其网络名称并确认其耦接至输入装置262的响应消息。LAN上的任何主计算机可以启动发现过程。
一旦主机260接收到主机270通信地耦接至输入装置262的确认(例如,经由UDP广播),则主机260、270可以建立直接通信链路265以支持这两个计算机之间的连续和/或周期性通信。在图2中,方向通信链路使用传输控制协议/因特网协议(TCP/IP),但是也可以考虑其他安全通信协议(例如,RINA)。一旦在主计算机之间建立(并且保持)直接通信,就可以支持输入装置上的边缘触发多主机切换。在一些实施方式中,如下面进一步讨论的,系统200可以例如通过边缘触发来实现多个输入装置(例如,输入装置282、284)在主计算机(例如,主机280、290)之间的共享和自动切换。
图3是示出了根据某些实施方式的子网上的主机的自动发现过程的流程图300。具体地,自动发现过程包括:由耦接至输入装置的第一主机310确定子网(例如,一般为LAN或网络)上的其他主机是否也耦接至输入装置。一旦发现其他主机,就可以在主机之间建立直接通信链路(例如,TCP),并且可以开始自动多主机切换。在一些实施方式中,流程图300可以示出上面关于图2描述的关于主机260、270和输入装置262的自动发现过程。流程图300可以由每个主机260、270的对应软件220执行。
在步骤310处,用户可以使用软件201进行选择,以使得实现在主机260(即,“主机0”)上操作的用户界面上的自动切换。在一些实施方式中,如下面至少关于图5至图8进一步讨论的,自动切换可以由“边缘触发”或“边缘切换”触发。
在步骤315处,软件201可以使主计算机260向LAN 250上的其他主计算机(例如,经由UDP)广播消息,以确定其他主计算机(例如,主机270至主机290)是否共享同一输入装置262。广播的消息可以包括广播主机的名称(例如,“主机0”)以及用于输入装置262的唯一标识符。在步骤320处,主机270(“主机1”)广播响应消息(例如,经由UDP),所述响应消息包括主机270的主机名称(“主机1”)以及用于输入装置262的唯一标识符,所述响应消息确认主机260也通信地耦接至输入装置262。
在步骤325处,主机260(主机0)可以向主机270(主机1)发送请求,以建立安全的直接通信链路(例如,TCP)。在步骤330处,主机270可以接受与主机260的TCP连接。在步骤335处,主机360可以向主机270发送安全消息。如本领域普通技术人员将理解的,主计算机之间的安全消息传送可以以任何合适的格式,如JSON、XML、CSV、EDN等。安全消息可以包括与输入装置262相关联的主机260软件201设置。这可以包括按钮/特征配置、每英寸点数(dpi)设置、边缘或位置检测设置、显示设置(例如,哪些边缘、区域或位置使输入装置262在连接的主机260、270之间切换)等。
在步骤340处,主机270可以接收对软件201的软件设置,并且对动态地跟踪每个连接的主机的软件设置的软件202中的内部数据库进行更新。因此,在步骤340处,主机270可以具有主机260和主机270两者的设置,并且主机270更新它们之间的桥接(连接)(步骤345)。在步骤350处,主机270可以向主机370发送安全消息。如上面在步骤335中关于主机260所讨论的,安全消息可以包括主机370软件202设置以及与输入装置262相关联的其他数据。
在步骤350处,主机260可以接收软件202的软件设置并且对动态地跟踪每个连接的主机的软件设置的软件201中的内部数据库进行更新。因此,在步骤355处,主机270可以更新主机260和主机270两者的设置并且更新它们之间的桥接(连接)(步骤360)。
在步骤365处,主机260可以向主机270发送其自身的更新设置(例如,输入装置设置、光标位置/轨迹等)。在步骤370处,主机270可以接收软件201的软件设置并且对与动态地跟踪每个连接的主机的软件设置、光标位置等的与软件201相关联的内部数据库进行更新。在步骤380处,主机260和主机270两者都交换了软件配置,并且为输入装置161准备好使用自动切换。
图4示出了根据某些实施方式的用于响应于检测到启用流动的系统中的边缘触发事件而自动地使输入装置在主计算机之间切换的简化方法400。方法400(以及下面讨论的任何其他方法,包括方法1000、1200、1400、1500和1800)可以由处理逻辑执行,所述处理逻辑可以包括硬件(电路、专用逻辑等)、适当的硬件上的软件操作(如通用计算系统或专用机器)、固件(嵌入式软件)或其任意组合。为了向读者提供非限制的参考点,关于图1的系统100描述方法400的步骤。在某些实施方式中,方法400可以至少由图1至图3中示出和描述的系统(例如,主机110、主机260)以及图20的系统2000执行。具体地,如上面关于图2示出和描述的,方法400(以及方法1000、1200、1400、1500和1800)可以由流动软件执行。
在步骤410处,方法400可以包括:由第一主计算机110从输入装置130接收与光标140在主计算机110的显示器115上的移动对应的输入信号。输入装置130可以与第一主计算机110通信地配对。在一些实施方式中,第一主计算机110可以与第二主计算机120通信地耦接(例如,在上面关于图3描述的发现步骤之后)。
在步骤420处,方法400可以包括:由第一主计算机110检测光标140何时移动到第一主计算机110的显示器115上的边缘118。在步骤430处,响应于第一主计算机110检测到光标140已经移动到第一主计算机110的显示器115的边缘118,方法400可以包括:由第一主计算机110向输入装置130发送第一控制信号,以将输入装置130的通信配对从第一主计算机110切换到第二主计算机120。
在步骤440处,方法400还可以包括:由第一主计算机110向第二主计算机120发送第二控制信号,以使第二主计算机120将第二主计算机120的显示器125上的第二光标150移动到某一位置,以模拟光标140从第一主计算机110上的显示器115的边缘118连续移动或“流动”到第二主计算机120上的显示器125的对应边缘128,如例如图1中的时间t2至t3处所示。
边缘检测可以包括检测可以触发边缘检测的单个边缘上或几个启用流动的边缘中的一个启用流动的边缘上的光标140。例如,第一边缘118上的边缘检测可以使输入装置130从主机110切换到主机120。然而,显示器115的不同边缘上的边缘检测可以使输入装置130从主机110切换到第三主机装置(未示出)。任何数目的边缘或其部分可以触发边缘检测。在一些实施方式中,在显示器115的某些限定域或区域中检测光标140可以使输入装置130在主计算机之间切换。边缘可以由像素的单个行或列限定。在一些情况下,边缘可以由像素的多个行或列(例如,显示器115的以5个像素列宽的右边缘)限定。一些实施方式还可以包括:在接触边缘之前和/或接触边缘时检测光标140的速度或轨迹(即矢量-速度和方向),并且可以基于光标位置和速度(例如,大于100像素/秒的移动)两者触发边缘检测。
应当理解的是,图4中所示的具体步骤提供了根据某些实施方式的用于响应于检测到边缘触发事件而自动地使输入装置在主计算机之间切换的特定方法400。还可以根据可替选的实施方式来执行其他步骤序列。例如,可替选的实施方式可以以不同的顺序执行上述步骤。此外,图4所示的各个步骤可以包括多个子步骤,所述多个子步骤可以以适合于各个步骤的各种序列来执行。此外,可以根据特定应用添加或移除附加步骤。例如,在一些实施方式中,第一主计算机110可以向输入装置发送第一控制信号以启动在主计算机之间切换,但是可以不与第二主计算机120进行通信,从而消除了步骤440中描述的“流动”部分。可替选地或另外地,方法400的一些实施方式还可以包括(例如,在步骤420处)检测输入信号何时与光标继续移动超出第一主计算机的显示器的边缘对应。在这种情况下,触发流动事件以及发送第一控制信号和第二控制信号将要求光标不仅移动到显示器的边缘,而且继续接收指示在那个特定方向上继续移动的输入装置信号(例如,用户将光标移动到边缘,这使光标停止,但用户继续沿同一方向移向输入装置,这可能表明用户想要从一个主计算机“流动”到下一个主计算机,而不是故意将光标悬停在显示器边缘处或显示器边缘附近)。本领域普通技术人员将认识并理解方法400的许多变型、修改和替选方案。
边缘检测:位置
图5是示出了根据某些实施方式的在第一主计算机与第二主计算机之间切换输入装置的边缘触发切换的简化框图500。框图500包括来自第一主计算机(“主机510”)的显示器515、第二主计算机(“主机520”)上的显示器525以及输入装置530上的多通道开关535。多通道开关535可以在三个用户可编程通道之间切换。一些输入装置530可以具有更多或更少的通道。在一些实施方式中,通道1可以使输入装置530与主机510配对,通道2可以使输入装置530与主机520配对,以及通道3可以使输入装置530与第三主计算机(未示出)配对或者可以不与任何主计算机相关联(如所示的)。如本领域普通技术人员将理解的,通道的任何编程配置是可能的。主机510可以包括流动软件501。主机520可以包括流动软件502。如上面关于图2描述的,软件501、502可以类似于流动软件201进行操作。
显示器515和显示器525各自均包括限定观看区域的1919×1079像素的二维(2D)阵列。可以使用任何像素分辨率,并且不同的主计算机可以包括具有不同像素分辨率的显示器。显示器515示出光标540与边缘518接触,使软件501启动边缘触发事件并且使输入装置530的多通道开关535将通信配对从主机110切换到主机120。如上面进一步讨论的,边缘触发事件还可以使主机120在边缘528处放置550以模拟光标从显示器515到显示器525呈现平滑转移。参照图5,边缘触发可以发生在由0,1079至1919,1079限定的单个像素列上。边缘可以为多个像素宽,并且可以覆盖整个边缘或其一部分。在一些实现方式中,触发可以与不一定在显示器的边缘上的像素的行、列或区域相关联。例如,表示LAN上的若干不同主计算机的多个图形图标可以被配置在显示器上,以作为当光标与图标接触(或交叠)时使输入装置切换到对应主机的“流动”触发。
边缘检测:速度
在一些实施方式中,“流动”软件(例如,主机260上的软件201)可以监视光标移动、位置和速度。当光标到达显示器上的用户配置的边缘触发并且输入装置的速度满足或超过用户限定的速度阈值(例如,每秒100像素)时,那么输入装置可以切换到不同的通道(即,在主计算机之间切换)。可以使用任何适当的速度阈值,其可以大于或小于每秒100像素。
边缘检测:安全区
在某些实施方式中,“流动”软件(例如,主机260上的软件201)可以包括防止用户在主计算机之间无意的快速切换的“安全区”。这可能发生在例如当用户将光标移动到非常接近显示器的边缘时,并且由于小的输入装置传感器抖动,光标重复地执行两个主计算机之间的边缘触发。因此,通过在流动的接收端(即,从第一主计算机到第二主计算机的流动中的第二主计算机)上建立“安全区”,用户必须将光标移动到通常位于流动的进入点周围的区域的外部,使得回到第一主计算机的流动更可能是故意的。也就是说,安全区可以是由在边缘触发的特定区中关闭边缘检测的区域(例如,50×50正方像素区域)限定的区。
图6示出了根据某些实施方式的在启用流动的系统600中使用安全区660。系统600包括来自第一主计算机(“主机610”)的显示器615和第二主计算机(“主机620”)上的显示器625。主机610可以包括流动软件601,以及主机620可以包括软件602。如上面关于图2描述的,软件601、602可以类似于流动软件201进行操作。如上面关于图5进一步讨论的,显示器615和显示器625各自均包括限定观看区域的像素的2D阵列。显示器615示出光标640与边缘618接触,使流动软件601启动边缘触发事件,从而使对应的输入装置(未示出)将通信配对从主机610切换到主机620。当被切换时,显示器615上的光标640呈现出“流动”到显示器625上的位置650。位置650位于“安全区”660或有界区内,所述有界区防止该区中的边缘检测以防止无意的边缘触发事件使输入装置流动回到显示器615。安全区660可以是任何尺寸或形状的,并且可以是连续或不连续的(即,多个不连贯的安全区)。如图6所示,用户必须将光标移动离开安全区660到达路径670(或者安全区660外部的任何其他边缘触发区),以启动流动回到显示器615。
边缘检测——最小阈值时间
在一些实施方式中,流动软件可以监视与输入装置激活和去激活对应的时间戳。当第一主计算机上的流动软件检测到输入装置从第二主机装置“流动”入(即,切换到)时,可以激活输入装置。当第一主计算机上的流动软件检测到输入装置“流动”出至(即,切换到)第二主计算机时,可以对输入装置去激活。可以在“流动”之间实现最小阈值时间,以避免主计算机之间的意外跳跃(例如,由于输入装置传感器抖动)。在一些实施方式中,最小阈值时间可以是用户可编程的,并且可以为100ms。最小阈值时间可以是短于或长于100ms的任何合适的时间。在一些情况下,最小阈值时间可以特定于应用,或者可以基于输入装置在一段时间内的移动而动态地改变。
图7至图8描绘了具有如上面参照图1至图6描述的类似系统架构的两个主计算机之间的流动情境。应当理解的是,图被简化以强调在启用流动的系统中实现阈值时间的方面,并且包括相关联的主计算机、对应的流动软件、一个或更多个多主机输入装置等。
图7至图8还示出了根据某些实施方式的应用于启用流动的系统的最小阈值时间的影响。图7包括第一主计算机的显示器715和第二主计算机的显示器725。最小阈值时间设置为100ms,但是也可以使用其他时间。在图7中,用户从显示器715“流动”到显示器725。紧随其后,并且在最小阈值时间之前(即,小于100ms),用户将显示器725上的光标移动到边缘触发770,从而导致流动过程被拒绝。也就是说,输入装置仍然与第二主计算机配对(即,光标控件停留在第二主计算机上)而不是流动回到第一主计算机。在图8中,在从第一主计算机到第二主计算机的初始流动之后,用户超过最小阈值时间(大于100ms),然后允许进行返回到第一主计算机的流动过程。
补偿网络/装置配对延迟——使用光标轨迹
在一些实施方式中,在启用流动的系统中可能存在一些不期望的引入的延迟。延迟的一些源可能来自主机(例如,TCP网络滞后、基于云的网络滞后)、来自输入装置(例如,通道切换滞后、输入装置到主机重新连接)或这两者。在一些配置中,这样的延迟可以明显地影响流动过程的性能,并且可以导致第一主计算装置上的边缘触发事件与第二主计算装置上的光标的后续控制之间的用户可感知的暂停,这会对用户体验产生负面影响。本发明的某些实施方式通过以下来补偿这样的延迟:分析第一计算装置上的光标的轨迹并且将其应用于第二计算装置,以模拟光标在来自输入装置的控制数据实际上不可用的时间段期间的连续移动。这可以有助于改善以下用户体验:在正建立后台连接的同时得到对光标移动的立即反馈。
图9示出了简化框图900,该简化框图900示出了根据某些实施方式的用于启用流动的系统中的基于光标轨迹的延迟补偿的方法。系统900包括第一主计算机910上的第一显示器915和第二主计算机920上的第二显示器925。主机910、主机920可以分别包括流动软件901、902。如上面关于图2描述的,软件901、软件902可以类似于流动软件201进行操作。在一些实施方式中,软件901、软件902可以执行本文中讨论的一些或全部“流动”相关构思(例如,边缘检测、发送/接收光标位置/抛射(projectile)数据、计算轨迹、仿造光标移动等)。如上面关于图5进一步讨论的,显示器915和显示器925可以各自包括限定观看区域的像素的2D阵列。然而,如本领域普通技术人员将理解的,本文中描述的“流动”构思可以应用于三维(3D)显示器。
参照图9,第一显示器915包括光标940,当输入装置930被切换到第一通道(通道1)时,光标940可以由启用多主机的输入装置930控制。第二显示器925包括光标950,当输入装置930被切换到第二通道(通道2)时,光标950可以由启用多主机的输入装置930控制。如本领域普通技术人员将理解的,输入装置930可以包括更多或更少的通道,并且每个通道可以被编程成与任何主机器相关联。如上面关于图2描述的,主机910可以具有与主机920的建立的网络连接(例如,经由TCP/IP、RINA等)和双向通信。
在一些实施方式中,当光标940在显示器915上移动到位置942至946时,可以将光标940的位置及其对应的抛射数据发送到网络上的其他主计算机(例如,主机920)。光标位置数据可以是描述光标在对应的输入装置当前与其配对(例如,当前发送光标控制数据)的显示器上的当前位置的数据。在一些实施方式中,无论输入装置当前是否与主机配对,都可以对光标位置数据(和抛射数据)进行采样并且在网络(或其子集)中的每个主机之间发送光标位置数据(和抛射数据)。如本领域普通技术人员将理解的,光标位置数据可以是任何合适的格式(例如,监视器2D像素数据)。
抛射数据可以包括与光标940速度、加速度、矢量(速度和方向)等对应的数据,并且可以以任何合适的格式且以任何频率(例如,周期性或连续地)生成和/或发送。在一些实施方式中,光标位置和抛射数据可以在光标处于“启用流动”的边缘的第一/最后一个像素处的时间经由TCP/IP(或其他通信协议)来发送。在一些情况下,可以在“边缘”检测事件之前(例如,每100ms、1s等)发送光标位置和抛射数据。如本领域普通技术人员将理解的,可以以任何合适的速率或频率对光标位置和抛射数据进行采样和/或将光标位置和抛射数据发送到其他主计算机。因此,当光标940围绕显示器915移动时,不管与TCP/IP连接相关联的任何滞后,网络上的其他主计算机可以基于周期性接收的光标位置和抛射数据来估计光标940的当前位置和轨迹。
在一些实施方式中,可以在每个鼠标移动报告(或等效输入装置移动/动作报告)上发生抛射(例如,光标移动)的计算。然而,在主计算机之间实际发送抛射信息可能会或可能不会发生在每个鼠标移动报告上(例如,每1个、10个或50个等鼠标移动报告进行发送),这可以出于优化和避免再发送冗余信息的目的(例如,如果鼠标没有移动,则没有生成新数据)。
在一些实施方式中,当光标940到达位置948时,启动边缘触发事件。作为响应,如上面关于图5描述的,主机910可以生成控制信号,以使输入装置930从通道1(主机910)切换到通道2(主机920),并且主机910还向主机920发送指示边缘触发事件已经发生的消息(例如,控制信号)。然后,主机920可以基于接收的主机910的光标位置和抛射数据(即,光标先前如何移动)来开始光标950的仿造光标移动,以模拟主机910与主机920之间的连续且不间断的光标移动,同时主机920等待由系统延迟而当前停顿的来自输入装置930的实际光标控制信号。如图9所示,光标950起始(位置949)以及移动到显示器925上的位置952呈现出具有与显示器915上的光标940的轨迹类似的轨迹的连续且不间断的流动。当光标950到达位置952时,主机920可以开始从输入装置930接收光标控制信号以控制光标950(由此结束仿造光标移动),并且可以在显示器925上接着发生典型的(输入装置控制的)的光标控制。因此,在“流动”过程期间使用仿造光标移动可以通过以下有助于改善整体用户体验:在建立后台连接的同时,提供呈现出对主计算机之间的光标移动的立即反馈。
延迟或滞后可以由多个源引入,并且可能从系统到系统在持续时间内变化。在一些实施方式中,主机910与主机920之间的TCP/IP网络可以引入一些滞后(例如,10ms至50ms),并且可以根据网络流量、密度(网络上的计算装置的数目)等而变化。网络滞后可以影响主机920接收边缘触发事件已经发生的指示花费的时间。网络滞后可以基于网络流量、网络硬件规格或其他硬件或基于软件的源的延迟而增加。
作为在输入装置上的通道之间内部地切换(例如,通道1与通道2之间的切换)花费的时间的通道切换滞后可以根据输入装置930的类型而变化(例如,通常小于25ms)。作为输入装置与下一个主机器配对(例如,通道2与主机920配对)花费的时间的重新连接滞后可以根据通信协议的类型而变化。重新连接滞后可以由输入装置与主计算机之间的协商和/或认证引起。如本领域普通技术人员将理解的,重新连接滞后可以根据通信协议或总线类型而变化。例如,罗技优联协议接收器滞后通常可以在100ms到200ms之间。蓝牙滞后通常在2s到3s之间。蓝牙低功耗(LE)网络延迟通常为600ms至2s。蓝牙延迟通常比罗技优联更长,原因是蓝牙协议更通用(例如,罗技优联协议针对罗技产品进行了优化)并且通常包括主机栈以尝试验证装置信息和配对信息。
图10示出了根据某些实施方式的用于启用流动的系统中的基于光标轨迹的延迟补偿的简化方法1000。在步骤1010处,方法1000可以包括:由第一主计算机(例如,主机910)向第二主计算机(例如,主机920)发送与第一主计算机上的光标(940)移动对应的光标位置和抛射数据。第一主计算机和第二主计算机可以以任何合适的频率(例如,周期性或连续的光标更新)经由共享网络连接(例如,TCP/IP)进行通信。
在步骤1020处,方法1000可以包括第一主计算机检测与第一主计算机上的光标到达边缘(例如,显示器915上的位置948)对应的边缘触发事件。可以应用任何合适的边缘触发要求,包括光标速度、安全区、最小阈值时间等。
在步骤1030处,响应于边缘检测,方法1000可以包括:第一主计算机向输入装置(930)发送控制信号,以自动地使输入装置将无线配对从第一主计算机(例如,通道1)切换到第二主计算机(例如,通道2)。在步骤1040处,还响应于边缘检测,方法1000可以包括第一主计算机向第二主计算机发送边缘检测事件已经发生的消息。作为响应,第二主计算机可以确定其对应的光标(例如,光标950)应该从哪里开始(例如,位置949)以及它应该如何行进(例如,速度、方向、加速度)直到接收到来自输入装置的控制信号(例如,在通道切换和配对之后)。也就是说,第二主计算机可以基于光标940的轨迹来沿着计算的仿造轨迹(例如,由软件902计算的)移动其光标950,直到第二主计算机(例如,在位置952处)接收到来自输入装置930的控制信号为止。在正常操作条件(即,经由来自输入装置的控制信号的光标移动)下,光标950的光标控制然后从位置952继续,以向用户呈现单个光标在主计算机(例如,主机910与主机920)之间平滑且不间断的移动。
应当理解的是,图10所示的具体步骤提供根据某些实施方式的用于启用流动的系统中的基于光标轨迹的延迟补偿的特定方法1000。还可以根据可替选的实施方式来执行其他步骤序列。例如,可替选的实施方式可以以不同的顺序执行上述步骤。也就是说,在发送控制信号以自动地切换对应输入装置上的通道之前,某些实施方式可以向其他主计算机发送边缘检测通知。在其他实施方式中,方法步骤1030和1040两者可以基本上同时发生(例如,彼此在5ms内)。此外,图10所示的各个步骤可以包括多个子步骤,所述多个子步骤可以以适合于各个步骤的各种序列来执行。此外,可以根据特定应用来添加或移除附加步骤。可以以任何方便的方式参考控制信号以区分一个控制信号与另一控制信号。例如,可以使用诸如“第一控制信号”、“第二控制信号”或“第三控制信号”等术语来识别和/或解释特定控制信号。本领域普通技术人员将认识并理解方法1000的许多变型、修改和替选方案。
在主计算机之间切换多个输入装置
在一些用户系统布置中,多个输入装置可以通信地耦接至主计算机。例如,若干输入装置(例如,计算机鼠标、键盘等)和输出装置(例如,无线扬声器)可以与第一主计算机相关联。在一些实施方式中,流动软件可以允许用户自动地切换多个输入装置和输出装置。在一些情况下,可以无需将链接的输入/输出装置分配给相同的通道。
图11示出了根据某些实施方式的用于响应于检测到边缘触发事件而自动地使多个输入装置在主计算机之间切换的系统1100的简化框图。为了简化分析,图11包括许多与图5的系统500类似的系统元件,增加了附加输入装置(键盘1140)和对应的多通道开关1145。应当注意的是,如本领域普通技术人员将理解的,任何数目的输入和/或输出装置可以与任何数目的主计算装置相关联。
多通道开关535可以在三个用户可编程通道之间切换。在一些实施方式中,通道1可以使输入装置530与主机510配对,通道2可以使输入装置530与主机520配对,以及通道3可以不与任何主计算机(如所示的)相关联。通道的任何编程配置都是可能的。
用于键盘1140的多通道开关1145可以在三个用户可编程通道之间切换。一些输入装置1145可以具有更多或更少的通道。在一些实施方式中,通道1可以使输入装置1140与主机520配对,通道2可以不与任何主计算机(如所示的)相关联,以及通道3可以使输入装置530与主机510配对。
根据一些实施方式,当光标540到达显示器515的边缘518时,主机510可以指示边缘触发事件。然后,主机510可以产生使输入装置530(例如,蓝牙计算机鼠标)从通道1(主机510)切换到通道2(主机520)的控制信号,并且启动上述“流动”过程。如所示的,主机510还可以产生使输入装置1140(例如,蓝牙键盘)从通道3(主机510)切换到通道1(主机520)的第二控制信号。因此,响应于边缘触发事件,两个输入装置同时或基本上同时(例如,彼此在10ms内)切换。在一些实施方式中,可以添加更多输入或输出装置,并且每个装置不必在同一通道上。
对于主计算机之间的切换,输入装置可以各自具有单独的软件设置(例如,经由软件501、502)。例如,计算机鼠标可以包括延迟补偿的方面(参见图9至图10),而键盘可以不包括延迟补偿的方面。在一些情况下,蓝牙扬声器可以与第一主机(主机510)配对,并且可以响应于边缘触发事件而仍然在那里。在这种背景下,本领域普通技术人员将认识到许多变型、修改和替选方案。
图12示出了根据某些实施方式的用于响应于检测到边缘触发事件而自动地使多个输入装置在主计算机之间切换的简化方法1200。在步骤1210处,方法1200可以包括:由第一主计算机(例如,主机510)接收来自与第一主计算机通信地配对的输入装置(例如,输入装置530)的输入信号,所述输入信号与光标(例如,光标540)在第一主计算机的显示器(例如,显示器515)上的移动对应。
在步骤1220处,方法1200可以包括:由第一主计算机检测光标何时移动到第一主计算机的显示器的边缘以及输入信号何时与光标继续移动超出第一个主计算机的显示器的边缘对应。响应于检测到光标已经移动到第一主计算机的显示器的边缘并且输入信号与光标继续移动超出第一主计算机的显示器的边缘对应(即,步骤1220处的“是”条件),方法1200(在步骤1230处)可以包括:由第一主计算机向输入装置发送第一控制信号,以将输入装置的通信配对从第一主计算机切换到第二主计算机。否则,方法1200返回到步骤1210(即,步骤1220处的“否”条件)。在某些实施方式中,检测光标何时移动到第一主计算机的显示器的边缘可以包括检测光标何时与限定显示器的边缘的多个像素中的一个或更多个像素交叠。
在步骤1240处,方法1200可以包括:由第一主计算机向第二输入装置(例如,键盘1140)发送第二控制信号,以使与第一主计算机通信地配对的第二输入装置将第二输入装置的通信配对从第一主计算机切换到第二主计算机。在一些实施方式中,可以以任何顺序或同时发送第一控制信号和第二控制信号。输入装置可以是计算机鼠标。第二输入装置可以包括键盘、扬声器、麦克风等。第一主计算机可以经由局域网(LAN)、基于云的网络或允许第一主计算机与第二主计算机之间进行通信的任何合适的互连网络通信地耦接至第二主计算机。
可替选地或另外地,方法1200可以包括:由第一主计算机向第二主计算机发送第三控制信号,从而使第二主计算机中的处理器将第二主计算机的显示器上的第二光标移动到某一位置,以模拟光标从第一主计算机的显示器的边缘到第二主计算机的显示器的对应边缘的连续移动。如上面至少参照图9所讨论的,一些实施方式可以包括:由第一主计算机(例如,主机910)向第二主计算机(例如,主机920)发送与第一主计算机上的光标(940)移动对应的光标位置和抛射数据,以更好地模拟主计算机之间的光标“流动”移动。第一主计算机和第二主计算机(包括附加主计算机)可以以任何合适的频率(例如,周期性或连续的光标更新)经由共享网络连接(例如TCP/IP)进行通信。第一输入装置可以是计算机鼠标。第二输入装置可以是键盘、扬声器、麦克风等之一。第一输入装置和第二输入装置可以经由包括蓝牙、蓝牙LE、红外(IR)、ZigBee、超宽带或RF中之一的无线通信协议与第一主计算机或第二主计算机通信地配对。
应当理解的是,图12所示的具体步骤提供了根据某些实施方式的用于启用流动的系统中的基于光标轨迹的延迟补偿的特定方法1200。还可以根据可替选的实施方式来执行其他步骤序列。例如,可替选的实施方式可以以不同的顺序执行上述步骤。也就是说,某些实施方式可以在发送控制信号以自动地切换对应输入装置上的通道之前,向其他主计算机发送边缘检测通知。在其他实施方式中,方法步骤1230和1240两者可以基本上同时发生(例如,彼此在5ms内)。此外,图12所示的各个步骤可以包括多个子步骤,所述多个子步骤可以以适合于各个步骤的各种序列来执行。此外,可以根据特定应用来添加或移除附加步骤。例如,一些实施方式可以仅要求光标已经移动到第一主计算机的显示器的边缘(即,并不要求输入信号与光标继续移动超出显示器的边缘对应),以使第一主计算机发送第一控制信号、第二控制信号和第三控制信号。本领域普通技术人员将认识并理解方法1200的许多变型、修改和替选方案。
在主计算机之间共享虚拟剪贴板数据
除了将第一主计算机上的光标控制切换到第二主计算机以外,自动多主机切换可以提供附加的功能,包括用户数据的传送。在一些实施方式中,用户可以移动第一主计算机的虚拟剪贴板上的虚拟剪贴板(VC)数据,并且使其在第二主装置上可用(例如,用于粘贴)。可以传送任何类型的VC数据,包括字母数字文本、符号、文档、媒体(例如,音频、视频)、文件(例如,.doc、.xls、.exe、.rar、.gif等)等。两个主计算机之间的边缘触发的数据传送可以从用户的角度来看呈现出无缝且即时的,从而提供除在主计算机之间切换输入装置以外甚至更大的灵活性和附加功能。
图13示出了根据某些实施方式的用于响应于边缘触发事件而在主计算机之间传送数据的启用流动的系统1300的简化框图。为了简化分析,图13包括一些与图5的系统500类似的系统元件和附加元件,所述附加元件包括与主机510相关联的虚拟剪贴板1360以及与主机520相关联的虚拟剪贴板1370。此外,不详细讨论某些边缘触发步骤(例如,输入装置通道切换),以保持关注系统之间的数据和文件传送的方面,其可以应用于整个文献明确和隐含地支持的任何实施方式。
响应于光标540移动到显示器515的边缘518,主机510的软件501可以启动边缘触发事件。除了使发生对配对输入装置(例如,输入装置530,参见图5)的自动主机切换以外,主机510的软件501可以向主机520的软件502发送指示虚拟剪贴板1360包括可用于复制的数据的消息。消息可以是任何合适类型或格式(例如,标记)的消息,所述消息可以向输入装置提供从主计算机(在边缘触发事件之后)接收虚拟剪贴板1360已经存储数据的提示或指示。通常,虚拟剪贴板可以限定剪贴板上的内容的类型的格式。例如,在流动软件(例如,SW102)中,支持虚拟剪贴板数据的复制和粘贴。一些支持的虚拟剪贴板格式包括但不限于文本文件(例如,纯文本、rtf等)、图像文件(例如,x-win-dibv5、png、tiff、bmp、jpeg、gif等)、视频文件(例如,mpeg、mov等)、音频文件(例如,.wav、mp3等)、可执行文件、文档文件(.doc、.xls、.ppt等)等。
主机520可以接收VC数据在虚拟剪贴板1360上可用的提示。当在主机520上操作时,用户随后可以在任何时间访问该VC数据。当用户决定访问或粘贴VC数据时,主机520(经由软件502)可以请求来自主机510上的虚拟剪贴板1360的VC数据。作为响应,主机510向主机520上的虚拟剪贴板1370传送来自虚拟剪贴板1360的VC数据,并且用户可以完成粘贴操作。从用户的角度看,过程非常快(例如,通常在500ms以下),并且提供了呈现为简单的复制/粘贴操作,但是在两个分开的主计算机上。如上面关于图2进一步讨论的,可以通过网络链路(例如,TCP/IP连接)来执行提示数据或VC数据的传送。
在一些实施方式中,在主机之间传送VC数据可以不会从原始的虚拟剪贴板移除VC数据。例如,在四个主计算机的网络中,具有VC数据的第一主计算机可以将所述VC数据传送至其他三个主计算机中的一个或更多个主计算机,而不必将所述VC数据从其虚拟剪贴板删除,这可以是单个操作系统(例如,微软Windows)上的常规复制/粘贴操作中的通常结果。
图13示出了在实际发送数据之前一些实施方式如何首先向其他主计算机提供指示VC数据可用的提示。这可以是优选的,原因是一些虚拟剪贴板可能具有非常大量的数据并且用户可能不想在本地网络上以其他方式使用可用带宽。对于可以共享其各自的虚拟剪贴板的内容的较大数目的启用流动的主计算机联网而言,这可能更加明显。
在一些实施方式中,主计算机可以在网络中的一些或所有机器之间共享VC数据,而不首先要求来自主计算机的请求。在一些情况下,如上面关于图9至图10讨论的,类似于主装置之间的光标位置数据和抛射数据的传送,VC数据可以以任何合适的时间间隔(例如,周期性地、连续地)被共享,并且不一定响应于边缘触发事件。
图14示出了根据某些实施方式的用于响应于边缘触发事件在启用流动的系统中的主计算机之间传送数据的简化方法1400。在步骤1410处,方法1400可以包括:由第一主计算机(例如,主机510)接收来自与第一主计算机通信地配对的输入装置(例如,输入装置530)的输入信号,所述输入信号与光标(例如,光标540)在第一主计算机的显示器(例如,显示器515)上的移动对应。第一主计算机可以通信地耦接(例如,经由TCP/IP协议)至网络(例如,LAN、WAN、基于云的网络或主计算机之间的任何通信地互连的布置)上的第二主计算机。
在步骤1420处,方法1400可以包括:由第一主计算机确定数据被保存到虚拟剪贴板。可替选地或另外地,方法1400可以包括将数据存储在第一主计算机(例如,主计算机510)的虚拟剪贴板(例如,虚拟剪贴板1260)上。数据(即,VC数据)可以是包括字母数字文本、符号、文档(例如,.xls、.word、.ppt等)、媒体(例如,音频、视频)、数据文件(例如,.doc、.xls、.exe、.rar、.gif等)等的任何类型的数据。在一些实施方式中,响应于第一主计算机上的流动事件(例如,边缘触发事件),第一主计算机的显示器上的屏幕捕获可以被发送到远程第二主计算机。在一些实施方式中,流动事件可以由用户编程以执行多个任务(例如,主机切换、虚拟剪贴板传送等)。如本领域普通技术人员将理解的,VC数据可以存储在第一主计算机上、输入装置上(例如,存储在计算机鼠标中并且能够由任何主计算机访问(能够检索))或任何主计算机能够访问的位置(例如,在云中)。
在步骤1430处,如上面至少关于图5所示和所描述的,方法1400可以包括检测边缘触发事件。在一些实施方式中,边缘触发事件可以包括:由第一主计算机检测光标何时移动到第一主计算机的显示器的边缘和/或输入信号何时与光标继续移动超出第一主计算机的显示器的边缘对应。
在步骤1440处,响应于检测到光标已经移动到第一主计算机的显示器的边缘并且输入信号与光标继续移动超出第一主计算机的显示器的边缘对应,方法1400可以包括:向第二主计算机(例如,主计算机520)发送指示VC数据可用(例如,存储在第一主计算机的虚拟剪贴板、输入装置等上)的提示(例如,控制信号、标记、消息、警报等)。
在步骤1450处,方法1400可以包括由第二主计算机接收对VC数据的请求。在步骤1460处,方法1400可以包括:由第一主计算机经由共享网络连接(例如,TCP/IP网络)向第二主计算机发送VC数据。在一些实施方式中,第一主计算机可以存储和发送VC数据。可替选地或另外地,VC数据可以存储在输入装置上或其他外部位置(例如,作为第一主计算机能够访问的第三主计算机),并且第一主计算机可以首先检索VC数据,然后将所述VC数据发送到第二主计算机。在一些情况下,第一主计算机可以对将VC数据传送到第二主计算机而不首先接收所述VC数据进行协调。本领域普通技术人员将理解其许多变型、修改和可替选的实施方式。
在一些实施方式中,提示数据(例如,标记、消息等)可以包括描述VC数据的附加信息。例如,如本领域普通技术人员将认识到的,提示数据可以指示虚拟剪贴板上有多少文件、是什么类型的文件(例如,.doc、.xls、.mp3、.wav、.mov等)、文件大小、文件日期(保存时的时间/日期)或其他元数据。
应当理解的是,图14所示的具体步骤用于根据某些实施方式的响应于边缘触发事件在启用流动的系统中的主计算机之间传送数据。还可以根据可替选的实施方式来执行其他步骤序列。例如,可替选的实施方式可以以不同的顺序执行上述步骤。此外,图14所示的各个步骤可以包括多个子步骤,所述多个子步骤可以以适合于各个步骤的各种顺序来执行。此外,可以根据特定应用来添加或移除附加步骤。例如,一些实施方式可以在不首先发送提示消息的情况下在主机之间传送VC数据。本领域普通技术人员将认识并理解方法1400的许多变型、修改和替选方案。
在主计算机之间启动和同步软件应用
在一些实施方式中,可以使用第一主计算机上的边缘触发流动事件来使其他主计算机启动应用并且使启动的应用的各方面与第一主计算机同步。在一些方面中,可以在预期边缘触发流动事件(参见例如图9,对边缘触发流动事件的预期)的情况下执行启动和同步。例如,在预期边缘触发事件的情况下,响应于确定在拖动活动软件应用或程序(例如,在窗口中进行操作)时第一主计算机的显示器上的光标正在接近启用流动的边缘,第一主计算机可以发送控制信号以使第二主计算机上的一个或多个处理器启动第一主计算机上的相同软件应用或程序操作。启动软件程序可以包括例如:在后台运行软件程序,开始对软件应用的认证过程,或者启动软件应用,以及对来自运行在第一主计算机上的软件应用的输入进行镜像。例如,在一些实施方式中,如果用户在第一主计算机的显示器上的互联网浏览器(例如,Google)中打开了网站窗口并且开始将网站窗口朝启用流动的边缘拖动或者开始将网站窗口拖到启用流动的边缘处,则另一互联网浏览器可以在第二主计算机上启动到与第一主计算机上显示的相同的网站窗口。
在某些实施方式中,当用户用光标选择应用窗口并且将窗口拖动到第一主计算机上的启用流动的边缘时,可以发生边缘触发事件。响应于应用窗口与限定第一主计算机的显示器上的启用流动的边缘的像素的行或列交叠,可以发生边缘触发事件。在一些实施方式中,响应于应用窗口移动超出启用流动的边缘使得窗口的一部分在第一主计算机上不可见,可以发生边缘触发事件。如本领域普通技术人员将理解的,一些附加的非限制性示例包括:响应于应用窗口移动超出启用流动的边缘并且光标交叠(具有或不具有继续移动超出启用流动的边缘)、应用窗口移动超出启用流动的边缘一定阈值量(例如,50%交叠或任何合适的阈值)或者其任何组合,触发边缘触发事件。
在某些实施方式中,响应于边缘触发事件在启用流动的系统中的主计算机之间传送数据可以包括传送软件应用数据。例如,如果用户具有安装在第一主计算机和第二主计算机两者上的正在运行的软件应用,则当包含软件应用的窗口被拖动到第一主计算机的显示器的边缘时,可以在第二主计算机上启动软件应用,从而在第一主计算机和第二主计算机上同时运行相同的软件应用。再例如,当用户与第一主计算机上的软件应用交互时,可以将来自基于用户在第一主计算机上的交互的软件应用的数据发送到第二主计算机上的软件应用,从而将第一主计算机上的用户执行的动作镜像到第二主计算机上。用户交互数据可以包括字母数字键盘输入、影响软件应用在第一主计算机上进行操作的计算机鼠标输入等。在两个软件应用窗口正在两个主计算机上运行(例如,一个软件应用窗口在第一主计算机的显示器上并且一个软件应用窗口在第二主计算机的显示器上)的一些实施方式中,可以将视觉指示添加到一个或两个软件应用窗口,以识别哪个软件应用窗口当前是活动的。例如,活动的软件应用窗口可以改变颜色、闪烁、被加亮或被标记、与音频或图形暗示相关联等,以通知用户哪个软件应用窗口当前是活动的。
图21A示出了简化框图2150,该简化框图2150示出了根据某些实施方式的在分开的主计算机910、920上进行操作的同步应用。如上所述,主计算机910在显示器915上启动网络浏览器(“网络浏览器1”),并且将网络浏览器1移动到启用流动的边缘,使主机920在显示器925上启动网络浏览器(“网络浏览器2”)。在一些实施方式中,网络浏览器1上的网页和/或内容可以被镜像在网络浏览器2上(除了包括如上面参照图9讨论的抛射数据以外)。例如,网络浏览器1可以包括用于用户填写信息(例如姓名、年龄、帐号等)的数据字段。在一些实施方式中,在主计算机910连续地或周期性地向主计算机920发送输入的数据时,网络浏览器2可以被打开到相同网站并且可以填充相同的对应数据字段,当实际上与一个主机配对并且来自输入装置1140(或其他输入源)的输入的数据在启用流动的系统中经由边缘触发事件被传送时,这可以给用户以下印象:在输入装置(例如,输入装置1140)上输入数据实际上与主计算机910、主计算机920都配对。在一些实施方式中,至少部分地由于上面关于图9讨论的延迟,可能在网络浏览器1上输入的数据与网络浏览器2显示的数据之间存在一些延迟。这在图21A中示出,这示出了在主计算机910上输入的数据(“1..2…3..”)与传送到主计算机920的数据具有如由省略号所示的稍微延迟(“..1..2..3”)。
在一些实施方式中,如图21B所示(下面进一步讨论),单个软件应用窗口可以同时显示在第一主计算机和第二主计算机两者的显示器上,使得即使每个软件应用由每个对应的主计算机独立地操作,应用窗口仍然呈现横跨两个主计算机的显示器。在本实施方式中,将软件应用数据从第一主计算机传送到第二主计算机可以与显示在第一主计算机和第二主计算机两者的显示器上的软件应用窗口的比例相关。例如,如果软件应用窗口的25%显示在第一主计算机的显示器上,并且软件应用窗口(即,由第二主计算机操作的)的75%显示在第二主计算机的显示器上,显示在第二主计算机的显示器上的软件应用窗口的一部分可以被认为是活动的,并且用户在软件应用窗口中执行的动作可被镜像在第一主计算机的显示器上的软件应用窗口中。如果然后窗口被移动,使得软件应用窗口的70%显示在第一主计算机的显示器上并且软件应用窗口的30%显示在第二主计算机上,则用户在运行在第一主计算机上的应用中执行的动作可以被镜像(例如,由第二主计算机输入的)在第二主计算机的显示器上的软件应用窗口中。
图21B示出了简化框图2150,该简化框图2150示出了根据某些实施方式的在分开的主计算机910、920上进行操作的同步应用。主计算机910在显示器915上启动网络浏览器(“网络浏览器1”),并且将网络浏览器1移动到启用流动的边缘,使主机920在显示器925上启动网络浏览器。在该示例中,主计算机910上的边缘触发事件使主计算机920打开具有相同网络内容的网络浏览器,然而尽管是网络浏览器的两个单独实例,但是网络浏览器1呈现横跨主计算机910和主计算机920两者。也就是说,网络浏览器2呈现为网络浏览器1。抛射数据可以用于对主计算机910、主计算机920进行同步,以控制单独的网络浏览器的位置来实现“横跨”效果。在一些情况下,如图21B所示,尽管是网络浏览器的两个独立实例,但是只有网页的一部分(例如,网页的左侧)可以呈现为在主计算机910上可见,而另外的部分(例如,网页的右侧)可以呈现为在主计算机920上可见。可能的许多使用、修改、实现方式和变型将被本领域普通技术人员理解为具有本公开内容的益处。
在某些实施方式中,窗口可以被以图形形式强调或去强调,以向用户提供指示哪个窗口当前是“活动”窗口的视觉暗示。例如,如果第一主计算机的显示器上的第一光标(或光标加应用窗口)边缘触发并且“流动”到第二主计算机的显示器,则第一主装置上的光标(和/或应用窗口)可以被去强调以示出在第一主计算机上光标移动(和/或应用窗口交互)不再被控制。可以通过改变其颜色(例如,变灰),改变其亮度、清晰度、对比度、使光标和/或应用窗口渐弱或者指示非活动使用的任何其他合适的改变来对光标和/或应用窗口去强调。再例如,如本领域普通技术人员将理解的,第二主计算机上的光标和/或应用窗口变为“活动”并且可以以任何合适的方式被强调,包括但不限于改变颜色,改变亮度,使光标和/或应用窗口连续地、周期性地或有限次数地闪烁,或者任何其他合适的指示符。第一主计算机可以向第二主计算机发送控制信号,以命令第二主计算机强调光标和/或应用窗口。可替选地或另外地,如上所述,第二主计算机可以响应于接收到“流动”动作而在其自身上启动强调。参照图21B,大多数“横跨”网络浏览器呈现为显示在主计算机920上,主计算机920通过工具栏2162的颜色以图形形式被指示为“活动的”主计算机。主计算机910上的网络浏览器通过“变灰的”工具栏2160以图形形式被指示为“不活动的”主机。本领域普通技术人员将理解其许多变型、修改和可替选的实施方式。
在另外的实施方式中,可以通过从非活动的主计算机完全移除光标和/或应用窗口来对光标和/或应用窗口去强调。这可以以多种不同方式来执行。例如,第一主计算机(非活动的)可以在没有光标和/或应用窗口的情况下对其显示器进行屏幕截图并将屏幕截图覆盖在其显示器上,从而使得呈现出光标和/或应用窗口已经消失,尽管光标和/或应用窗口仍然存在于在下面的层中。在一些实施方式中,可以实现以下软件控制:在非活动状态下实际上移除光标和/或应用窗口,或者改变光标和/或应用窗口的颜色属性以使得它们在非活动状态期间对于用户呈现不可见。本领域普通技术人员将理解可以应用的许多变型、修改和替选方案。
在一些实施方式中,边缘触发事件可以使运行在第一主计算机上的互联网浏览器在第二主计算机上启动,但是可以不会将输入装置的配对从第一主计算机更改为第二主计算机。例如,用户可以使用输入装置来控制光标以选择运行在第一主计算机上的互联网浏览器窗口并且将该窗口拖动超出启用流动的边缘,小心不使光标到达启用流动的边缘。在某些情况下,这可能仍然使互联网浏览器窗口在第二主计算机中启动,但可以保持输入装置与第一主计算机相关联。在一些方面中,两个或更多个输入装置可以被配置成基于不同的标准在装置之间“流动”。例如,当光标到达和/或输入数据被接收以将光标移动超出启用流动的边缘时,第一输入装置(例如,计算机鼠标)可以从第一主计算机流动到第二主计算机,而当应用窗口被移动超出启用流动的边缘时,第二输入装置(例如,键盘或扬声器装置)可以流动。在本示例中,键盘(即,第二输入装置)保持与第一主计算机相关联。在一些情况下,光标轨迹数据(参见例如图9)可以用于在第二主计算机的显示器上的某一位置中打开第二浏览器窗口,以使第一浏览器窗口和第二浏览器窗口呈现为横跨第一显示器和第二显示器的同一窗口,并且可以在主计算机之间共享(例如,经由TCP/IP网络连接)数据。例如,如果用户开始在第一主计算机上的横跨的浏览器窗口中键入统一资源定位符(URL),但是URL太长而不能在截断的浏览器窗口上看到,则可以与第二主计算机共享URL条目(即,位于同一数据输入字段中),以使其呈现为同一URL条目,尽管单独的URL条目正同时被输入到单独的互联网浏览器上的两个URL字段中。
图15示出了根据某些实施方式的用于在主计算机之间启动和同步软件应用的简化方法1500。在步骤1510处,方法1500可以包括:由第一主计算机接收来自与第一主计算机通信地配对的输入装置的输入信号,所述输入信号与光标在第一主计算机的显示器上的移动对应,其中第一主计算机通信地耦接至第二主计算机。
在步骤1520处,方法1500可以包括:由第一主计算机检测光标何时选择并移动应用窗口到第一主计算机的显示器的边缘和/或输入信号何时与所选择的应用窗口继续移动超出第一主计算机的显示器的边缘对应。应用窗口可以运行对应的软件应用(例如,互联网浏览器、文字处理文档、电子表格文档等)。
在步骤1530处,方法1500可以包括:响应于检测到光标已经将应用窗口移动到第一主计算机的显示器的边缘和/或输入信号何时与所选择的应用窗口继续移动超出第一主计算机的显示器的边缘对应,方法1500包括:由第一主计算机向第二主计算机发送控制信号,从而使第二主计算机中的处理器在第二主计算机的第二显示器上启动运行对应第二软件应用的第二应用窗口。在一些情况下,对应第二应用可以与运行在第一应用窗口上的软件应用相同。
在步骤1540处,方法1500可以包括:由第一主计算机检测输入到第一主计算机的显示器上的应用窗口中的输入数据。在步骤1550处,方法1500可以包括:由第一主计算机向第二主计算机发送第二控制信号,从而使第二主计算机中的处理器将输入数据输入到第二主计算机的第二显示器上的第二应用窗口中。
应当理解的是,关于图15描述的具体步骤示出了用于根据某些实施方式的在主计算机之间启动和同步软件应用的特定方法。还可以根据可替选的实施方式来执行其他步骤序列。例如,可替选的实施方式可以以不同的顺序执行上述步骤。此外,图15所示的各个步骤可以包括多个子步骤,所述多个子步骤可以以适合于各个步骤的各种顺序来执行。此外,可以根据特定应用来添加或移除附加步骤。本领域普通技术人员将认识和理解方法1500的许多变型、修改和替选方案。
主计算装置的基于云的发现
某些启用流动的系统不限于本地网络,并且一些可以存在于许多不同的网络域(例如,WAN、VPN、3G、4G、LTE、企业等)上。发现操作可以类似于上面关于图2描述的基于LAN的网络,但是添加了基于云的服务器来替代典型的UDP/TCP发现和网络连接。
图16示出了根据某些实施方式的用于自动多主机切换的基于云的启用流动的系统1600。为了简化分析,图16包括一些与图5的系统500相似的系统元件和附加元件,所述附加元件包括基于云的呈现服务器1610。主计算机发现可以查询多个网络域以找到例如输入装置模型和序列号,以查找哪些主机共享输入装置。不管用户连接到的网络,这都可以允许流动操作(例如,自动多主机切换)发生。一个主要差异在于:使用基于云的服务器替代LAN以在主机装置之间传送控制信号、数据等。
例如,第一主计算机510和第二主计算机520可以登记1620、1625输入装置530的装置模型和序列号。主计算机510然后可以查询1640呈现服务器1610以确定其他主计算机(例如,主计算机520)是否在线。如图16所示并且如上面进一步讨论的,一旦每个主计算机都知道一个或更多个网络上的其他主计算机以及它们对应的设置(例如,输入装置设置、网络详情(网络名称、类型等)),则可以开始1650边缘触发和多主机切换。上述任何其他流动特征(例如,虚拟剪贴板共享、多输入装置切换、光标轨迹补偿等)可以在基于云的系统中实现,其中主要差异在于主计算机之间的通信路径。
图22是示出了根据某些实施方式的子网上的主机的自动发现过程的序列图2200。具体地,自动发现过程包括:由耦接至输入装置的第一主机确定基于云的网络上的其他主机是否也耦接至输入装置。一旦发现其他主机,就可以在主机之间建立直接通信链路,并且可以开始自动多主机切换。对于每个主计算机510、520,序列图2200可以例如由对应的软件501、502来执行。本领域普通技术人员将理解其许多变型、修改和可替选的实施方式。
图23是序列图2300,该序列图2300示出了根据某些实施方式的经由基于云的网络的计算机主机切换和复制/粘贴过程。图2300示出了:如何向呈现服务器登记主计算机,主计算机如何查询呈现服务器以确定哪些其他主计算机当前在线并且可用于边缘触发事件,以及主计算机如何实现启用流动的事件(例如,如上所讨论的输入装置切换、关于VC数据的复制/粘贴动作、启用流动的计算机应用启动、多输入装置切换等)。本领域普通技术人员将理解其许多变型、修改和可替选的实施方式。
启用流动的系统中的动态桥接
在一些启用流动的系统中,三个或更多个主计算机可以共享输入装置。当一个主计算机从网络退出时,流动软件(例如,SW 501、502)可以在在线主计算机之间动态地重新配置流动设置以保持流动布置。
图17A示出了根据某些实施方式的启用流动的多主机系统的简化框图。为了简化分析,图17包括一些与图5的系统500类似的系统元件,但是未示出。具体地,没有描绘包括单独的主计算机、一个或多个输入装置和通道选择器、流动软件等的底层基础设施,但是所述底层基础设施是存在的以支持显示器1710、1720、1730的操作。
在图17A中,主机1的显示器1710包括沿着边缘1750的启用流动的边缘触发。主机2的显示器1720包括沿着边缘1760和1770的启用流动的触发。主机3的显示器1730包括沿着边缘1780的启用流动的触发。在操作中,当光标被移动到显示器1710的边缘1750时,一个或更多个输入装置的控制可以从显示器1710切换到显示器1720。同样地,当光标被移动到显示器1720的边缘1760时,一个或更多个输入装置的控制可以从显示器1720切换到显示器1710。当光标被移动到显示器1720的边缘1770时,一个或更多个输入装置的控制可以从显示器1720切换到显示器1730。同样地,当光标被移动到显示器1730的边缘1780时,一个或更多个输入装置的控制可以从显示器1730切换到显示器1720。
启用流动的边缘可以由用户以任何期望的配置来编程。但是,有时主计算机可以从网络被移除,这可以使整个系统流动配置被置于不期望的(未编程的)状态。在某些实施方式中,动态桥接可以用于自动配置启用流动的系统以适应系统中的这种变化。例如,在图17B中,当主机2从网络退出时,主机1边缘检测被重新配置,使得边缘检测可以使对应的输入装置切换到主机3而不是主机2。当主机2恢复在线时,主机1和主机3被通知(例如,经由它们的网络连接)并且启用流动的系统自动配置以将主机2重新引入到图17所示的布置中。本领域普通技术人员将认识到在启用流动的系统中在动态桥接中可能的许多变型、修改和重新配置。
图18示出了根据某些实施方式的用于在启用流动的网络中动态地桥接主计算机的简化方法1800。在步骤1810处,方法1800可以包括:由与输入装置(例如,计算机鼠标)通信地配对的第一主计算机通过网络(例如,经由LAN的UDP)发送广播,该广播请求来自网络上的也与输入装置通信地配对的其他主计算机的响应。网络可以包括公共网络(例如,LAN、WAN)、不同的网络或其任何组合中的任何互连的计算装置。
在步骤1820处,方法1800可以包括:由第一主计算机接收来自网络上的第二主计算机和第三主计算机的广播的响应,所述广播的响应指示第二主计算机和第三主计算机都与输入装置通信地配对。
在步骤1830处,方法1800可以包括:由第一主计算机经由网络建立与第二主计算机和第三主计算机的通信连接(例如,TCP/IP),并且当第二主计算机和第三主计算机从网络断开并且重新连接到网络时,由第一主计算机自动地重新建立与第二主计算机或第三主计算机的连接。自动地重新建立连接可以包括:周期性的、非周期性的或连续的轮询,以确定每个主计算机与网络连接还是断开和/或是否可用于重新连接。
在步骤1840处,响应于检测到由输入装置控制的光标已经移动到第一主计算机的显示器的边缘(和/或超出显示器),方法1800可以包括:由第一主计算机向输入装置发送第一控制信号,以将输入装置的通信配对从第一主计算机切换到第二主计算机(在图18中表示为“是”)。否则,方法1800继续动态地建立和重新建立与网络上的已发现的主计算机的连接(回到步骤1830)。
在步骤1850处,如图17B图形地示出,响应于确定第二主计算机与网络断开并且检测到第一主计算机上的光标已经移动到显示器的边缘,方法1800可以包括:由第一主计算机向输入装置发送第三控制信号,以将输入装置的通信配对从第一主计算机切换到第三主计算机。
应当理解的是,图18所示的具体步骤用于根据某些实施方式的在启用流动的网络中动态地桥接主计算机。还可以根据可替选的实施方式来执行其他步骤序列。例如,可替选的实施方式可以以不同的顺序执行上述步骤。此外,图18所示的各个步骤可以包括多个子步骤,所述多个子步骤可以按照适合于各个步骤的各种序列来执行。此外,可以根据特定应用来添加或移除附加步骤。本领域普通技术人员将认识并理解方法1800的许多变型、修改和替选方案。
当在主机之间流动时的光标定位
在一些启用流动的系统中,不同的主计算机可以使用具有不同分辨率和/或尺寸的显示器。当确定在主计算机之间的流动过程期间将光标放置在哪里时,可以考虑本发明的某些实施方式。例如,在图19中,通过对应的流动软件(例如,SW 501)在720p监视器(主机1)与4K监视器(主机2)之间映射监视器端点A至A’以及B至B’,并且计算在流动操作期间缩放的进入点。本领域普通技术人员将认识到在多监视器启用流动的系统中可能的许多变型、修改和重新配置。
高级流动应用
在某些实施方式中,启用流动的系统可以包括手势识别系统或眼/头跟踪系统以启动边缘触发事件。例如,如果用户进行从第一主计算机的物理位置移动到第二主计算机的手移动,则手势识别软件响应于手移动可以启动边缘触发事件。在另一示例中,响应于用户转动其头部(例如,使用头跟踪系统)或将其眼睛从第一主计算机的显示器移动到第二主计算机的显示器,头部/眼睛跟踪软件可以启动边缘触发事件。
在某些实施方式中,启用流动的系统可以包括手势识别系统或眼/头跟踪系统以启动边缘触发事件。例如,如果用户进行从第一主计算机的物理位置移动到第二主计算机的手移动,则手势识别软件响应于检测到手移动,可以启动边缘触发事件。在另一示例中,响应于检测到用户正在转动其头(例如,使用头跟踪系统)或将其眼睛从第一主计算机的显示器移动到第二主计算机的显示器,头/眼睛跟踪软件可以启动边缘触发事件。
在头/眼睛跟踪实施方式中,相机可以由第一主计算机、第二主计算机、第三主计算机或其组合使用,以跟随用户的注视并且启动边缘触发事件。相机可以包括能够连接到主计算机的任何合适的相机。在某些实施方式中,相机可以包括具有内置相机(例如,移动电话、平板计算机、膝上型计算机)或外部相机(例如,网络相机)的任何装置,所述内置相机或外部相机通过无线通信信号如无线电信号、红外信号、超声信号的传输、蓝牙(BT)、蓝牙LE、基础设施无线保真(WiFi)、软接入点(AP)、直通互联(Wifi-Direct)和NFC通信方法的传输能够连接到主计算机。在一些实施方式中,相机和主计算机可以通过基于云的网络进行通信。
在头/眼睛跟踪实施方式中,头/眼睛跟踪软件可以执行眼睛校准过程来为单个用户定制边缘触发阈值。眼睛校准过程可以包括限定与多个主计算机(例如,第一主计算机、第二主计算机或第三主计算机)相关联的屏幕的边缘(例如,用于边缘触发事件)。例如,系统可以包括第一主计算机、第二主计算机和第三主计算机,其中第二主计算机和第三主计算机位于第一主计算机的两侧。用户可以观察显示在第一主计算机的屏幕上的各个区域中的限定第一主计算机的屏幕的左边缘和右边缘的几个不同的眼睛校准指示器,以校准用户眼睛跟踪用于边缘触发事件的检测。如上所讨论的,边缘触发事件可以与网络中的其他主计算机(例如,第二主计算机和第三主计算机)相关联。
在另外的实施方式中,眼睛校准过程可以包括确定多个主计算机之间的一系列主要-从属关系和从属-主要关系。确定所述一系列主要-从属关系和从属-主要关系可以包括检测和识别相机。在实施方式中,如上所述连接到相机的主计算机可以被确定为主要主计算机,而剩余的主计算机可以被确定为从属主计算机。在其他实施方式中,当多个主计算机分别连接到多个摄像机时,可以创建主要-从属关系的组合。
例如,可以存在第一主计算机是主要主计算机而第二主计算机和第三主计算机是从属主计算机的第一主要-从属关系。可以存在第二主计算机是主要主计算机而第一主计算机和第三主计算机是从属主计算机的第二主要-从属关系,或者其任何组合。在已经创建了几组主要-从属关系的实施方式中,如果一个主要主计算机离线,则先前的从属主计算机可以变为主要主计算机。例如,如果第一主要主计算机离线,则第二主计算机可以自动地从作为从属主计算机切换到主要主计算机。
在具有与至少第一主计算机和第二主计算机配对的第一输入装置和第二输入装置的头/眼睛跟踪实施方式中,响应于检测到边缘触发事件,启动上述“流动”过程可以包括识别用户动作并且禁止第一输入装置或第二输入装置切换。用户动作可以包括但不限于第一输入装置或第二输入装置的连续使用(例如,输入之间的最小时间、运行软件应用、流送音乐、视频通话)。在一些实施方式中,识别用户动作可以包括:监视来自鼠标或键盘的击键数目,监视活动的应用及其各自的进程的数目等。在另外的实施方式中,确定用户动作可以基于阈值。例如,如果输入装置是键盘,则可以基于当用户按下键盘的键之间的阈值时间量来确定用户动作。在另一示例中,如果输入装置是扬声器,则可以基于软件应用已经被运行的阈值时间量或运行软件应用所需的处理能力的阈值来确定用户动作。在一些实施方式中,键盘上的按键之间的阈值时间量可以为毫秒、秒或分钟的量级。用于运行软件应用的阈值时间量可以是秒、分钟或任何其他合适的时间帧。本领域普通技术人员将理解这些阈值和其他阈值(例如,运行软件应用所需的处理能力的量),本领域普通技术人员将理解其许多变型、修改和可替选的实施方式。
例如,在具有第一主计算机和第二主计算机的头/眼睛跟踪启用流动的系统中,用户可以将鼠标(例如,第一输入装置)和键盘(例如,第二输入装置)与第一主计算机配对。如果用户正在看第一主计算机的屏幕,通过在键盘上打字正将数据输入到运行在第一主计算机上的应用中,并且随后,当继续在键盘上打字的同时用户看第二主计算机的屏幕,则可以发生边缘触发检测,并且头/眼睛跟踪启用流动的系统可以将鼠标的配对从第一主计算机切换到第二主计算机,同时保持键盘与第一主计算机的配对。
对于另一示例,在具有第一主计算机和第二主计算机的头/眼睛跟踪启用流动的系统中,用户可以将鼠标(例如,第一输入装置)和扬声器(例如,第二输入装置)与第一主计算机配对。如果用户正在看第一主计算机的屏幕,正在通过第一主计算机上的扬声器流送音乐,并且随后,当继续流送音乐时用户看第二主计算机的屏幕,则可以发生边缘触发,并且头/眼睛跟踪启用流动的系统可以将鼠标的配对从第一主计算机切换到第二主计算机,同时保持扬声器与第一主计算机的配对。
在又一示例中,在具有第一主计算机和第二主计算机的头/眼睛跟踪启用流动的系统中,用户可以将鼠标(例如,第一输入装置)和网络相机(例如,第二输入装置)与第一主计算机配对。如果用户正在看第一主计算机的屏幕,正在使用第一主计算机上的网络相机进行视频通话,并且随后,当继续进行视频通话时用户看第二主计算机的屏幕,则可以发生边缘触发,并且头/眼睛跟踪启用流动的系统可以将鼠标的配对从第一主计算机切换到第二主计算机,同时保持网络相机与第一主计算机的配对。
在一些实施方式中,当响应于用户将其注视从第一主计算机的屏幕移动到第二主计算机的屏幕而检测到边缘触发事件并且光标还没有从第一主计算机的屏幕移动到第二主计算机的屏幕时,启用流动的系统可以利用上述光标位置数据,以沿与用户的注视相同的轨迹和方向将光标从第一主计算机的屏幕移动到第二主计算机的屏幕。
实现本文中的实施方式的示例性计算机系统
图20是根据某些实施方式的计算机系统2000的简化框图。计算机系统2000可以用于实现上面关于图1至图19讨论的任何主计算机计算装置。计算机系统2000可以包括一个或更多个处理器2002,所述一个或更多个处理器2002可以经由总线子系统2004与多个外围装置(例如,输入装置)进行通信。这些外围装置可以包括存储子系统2006(包括存储器子系统2008和文件存储子系统2010)、用户接口输入装置2014、用户接口输出装置2016和网络接口子系统2012。
在一些示例中,内部总线子系统2004可以提供用于使计算机系统2000的各种部件和子系统按预期彼此进行通信的机制。虽然内部总线子系统2004被示意性地示出为单个总线,但是总线子系统的可替选的实施方式可以利用多个总线。另外,网络接口子系统2012可以用作用于在计算机系统2000与其他计算机系统或网络之间传送数据的接口。网络接口子系统2012的实施方式可以包括有线接口(例如,以太网、CAN、RS232、RS485等)或无线接口(例如,ZigBee、Wi-Fi、蜂窝等)。
在一些情况下,用户接口输入装置2014可以包括键盘、定点装置(例如,鼠标、轨迹球、触摸板等)、条形码扫描器、结合到显示器中的触摸屏、音频输入装置(例如,语音识别系统、麦克风等)、人机接口(HMI)和其他类型的输入装置。通常,使用术语“输入装置”旨在包括用于将信息输入到计算机系统2000中的所有可能类型的装置和机制。另外,用户接口输出装置2016可以包括显示子系统、打印机或非视觉显示器如音频输出装置等。显示子系统可以是任何已知类型的显示装置。通常,使用术语“输出装置”旨在包括用于从计算机系统2000输出信息的所有可能类型的装置和机构。
存储子系统2006可以包括存储器子系统2008和文件/磁盘存储子系统2010。子系统2008和2010表示非暂态计算机可读存储介质,其可以存储提供本公开内容的实施方式的功能的程序代码和/或数据(例如,软件201至软件204)。在一些实施方式中,存储器子系统2008可以包括多个存储器,所述多个存储器包括用于在程序执行期间存储指令和数据的主随机存取存储器(RAM)2018以及可以存储固定指令的只读存储器(ROM)2020。文件存储子系统2010可以为程序和数据文件提供持久(即,非易失性)存储,并且可以包括磁性的或固态的硬盘驱动器、光学驱动器以及相关联的可移除介质(例如,CD-ROM、DVD、蓝光等)、基于可移除闪存的驱动器或卡、和/或本领域已知的其他类型的存储介质。
应当理解的是,计算机系统2000是说明性的并且并不意在限制本公开内容的实施方式。具有比系统2000更多或更少的部件的许多其他配置也是可能的。
各种实施方式还可以在各种各样的操作环境中实现,所述操作环境在一些情况下可以包括可以用于操作多个应用中的任何应用的一个或更多个用户计算机、计算装置或处理装置。用户装置或客户端装置可以包括许多通用个人计算机中的任何通用个人计算机,如运行标准操作系统的台式计算机或膝上型计算机以及运行移动软件并且能够支持多个网络和消息协议的蜂窝装置、无线装置和手持装置。这样的系统还可以包括运行各种商业上可获得的操作系统中的任何操作系统的多个工作站以及用于诸如开发和数据库管理目的的其他已知应用。这些装置还可以包括其他电子装置,如虚拟终端、瘦客户端、游戏系统以及能够经由网络进行通信的其他装置。
大多数实施方式利用本领域技术人员熟悉的至少一种网络来支持使用诸如TCP/IP、UDP、OSI、FTP、UPnP、NFS、CIFS等的各种商业上可获得的协议中的任何协议的通信。网络可以是例如局域网、广域网、虚拟专用网、因特网、内联网、外联网、公共交换电话网、红外网络、无线网络及其任何组合。
在使用网络服务器的实施方式中,网络服务器可以运行各种服务器或中间层应用中的任何应用,包括HTTP服务器、FTP服务器、CGI服务器、数据服务器、Java服务器和业务应用服务器。一个或多个服务器还可以能够响应于来自用户装置的请求而例如通过执行一个或更多个应用来执行程序或脚本,所述一个或更多个应用可以被实现为以任何编程语言编写的一个或更多个脚本或程序,所述编程语言包括但不限于C、C#或C++、或者诸如Perl、Python或TCL的任何脚本语言、以及其组合。一个或多个服务器还可以包括数据库服务器,包括但不限于从商业上可获得的服务器。
环境可以包括如上所讨论的各种数据存储装置以及其他存储器和存储介质。这些可以驻留在各种位置处,如在本地于(和/或驻留在)一个或更多个计算机的存储介质上或者通过网络远离任何或所有计算机的存储介质上。在特定的一组实施方式中,信息可以驻留在本领域技术人员熟悉的存储区域网络(SAN)中。类似地,可以视情况本地地和/或远程地存储用于执行归于计算机、服务器或其他网络装置的功能的任何必需文件。在系统包括计算机化的装置的情况下,每个这样的装置可以包括可以经由总线电耦接的硬件元件,所述元件包括例如至少一个中央处理单元(CPU)、至少一个输入装置(例如,鼠标、键盘、控制器、触摸屏或小键盘)以及至少一个输出装置(例如,显示装置、打印机或扬声器)。这样的系统还可以包括一个或更多个存储装置,如磁盘驱动器、光学存储装置、诸如RAM或ROM的固态存储装置以及可移除介质装置、存储卡、闪存卡等。
这样的装置还可以包括计算机可读存储介质读取器、通信装置(例如,调制解调器、网卡(无线或有线)、红外通信装置等)以及如上所述的工作存储器。计算机可读存储介质读取器可以与非暂态计算机可读存储介质连接,或者被配置成接纳非暂态计算机可读存储介质,所述非暂态计算机可读存储介质表示远程的、本地的、固定的和/或可移除存储装置以及用于临时地和/或更持久地包含、存储、传输和检索计算机可读信息的存储介质。系统和各种装置通常还将包括位于至少一个工作存储器装置内的许多软件应用、模块、服务程序或其他元件,包括操作系统以及诸如客户端应用或浏览器的应用程序。应当理解的是,可替选的实施方式可以具有来自上面描述的实施方式的许多变型。例如,还可以使用定制的硬件和/或特定元件可以在硬件、软件(包括便携式软件,如小应用程序)或这两者中实现。此外,可以采用与其他计算装置如网络输入/输出装置的连接。
用于包含代码或代码的部分的非暂态存储介质和计算机可读存储介质可以包括本领域已知或使用的任何合适的介质,例如但不限于以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质,包括RAM、ROM、电可擦除可编程只读存储器(EEPROM)、闪速存储器或其他存储器技术、CD-ROM、DVD或其他光学存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储装置、或者可以用于存储期望的信息并且能够由系统装置访问的任何其他介质。基于本文中提供的公开内容和教导,本领域普通技术人员将理解用于实现各种实施方式的其他方式和/或方法。然而,计算机可读存储介质不包括诸如载波等的暂态介质等。
因此,说明书和附图被认为是说明性的而不是限制性的。然而,明显的是,在不脱离如权利要求中阐述的本公开内容的更广泛的精神和范围的情况下,可以对其进行各种修改和改变。
其他变型在本公开内容的精神内。因此,虽然所公开的技术容许各种修改和替选构造,但是其某些说明性的实施方式在附图中示出并且已经在上面进行了详细描述。然而,应当理解的是,并不意在将公开内容限制为所公开的一个或多个具体形式,更确切地,意图是涵盖落入如所附权利要求中限定的本公开内容的精神和范围内的所有修改、替选构造和等同内容。
除非本文中另有说明或与上下文明显地相矛盾,否则在描述公开的实施方式的上下文中(特别是在所附权利要求的上下文中)使用的术语“一个(a)”、“一个(an)”和“该(the)”以及类似的指示物应被解释为涵盖单数和复数两者。除非另有说明,否则术语“包括”、“具有”、“包含”和“含有”应被解释为开放式术语(即,表示“包括但不限于”)。术语“连接”应被解释为部分地或全部地包含在内、附接至或结合在一起,即使存在某物介于中间也是如此。短语“基于”应被理解为开放式的,并且不以任何方式进行限制,并且在适当的情况下旨在被解释为或以其他方式被解读为“至少部分地基于”。除非本文中另有说明,否则本文中的值的范围的叙述仅意在用作单独地引用落入范围内的每个单独的值的速记方法,并且将每个单独的值并入本说明书中,如同其在本文中被单独叙述一样。除非本文中另有说明或者以其他方式与上下文明显矛盾,否则本文中描述的所有方法可以以任何合适的顺序来执行。除非另有说明,否则本文中提供的任何和所有示例或示例性语言(例如,“如”)的使用仅旨在更好地阐明本公开内容的实施方式,并且不对本公开内容的范围构成限制。说明书中的语言不应被解释为指示任何未要求保护的要素对本公开内容的实践必不可少。

Claims (20)

1.一种计算机实现的方法,包括:
由第一主计算机从与所述第一主计算机通信地配对的输入装置接收输入信号,所述输入信号与光标在所述第一主计算机的显示器上的移动对应,其中,所述第一主计算机通信地耦接至第二主计算机;
由所述第一主计算机检测所述光标何时选择应用窗口并且将所述应用窗口移动到所述第一主计算机的显示器的边缘以及所述输入信号何时与所选择的应用窗口继续移动超出所述第一主计算机的显示器的边缘对应,所述应用窗口运行对应的软件应用;以及
响应于检测到所述光标已经将所述应用窗口移动到所述第一主计算机的显示器的边缘以及所述输入信号何时与所选择的应用窗口继续移动超出所述第一主计算机的显示器的边缘对应:
由所述第一主计算机向所述第二主计算机发送控制信号,以使所述第二主计算机中的处理器在所述第二主计算机的第二显示器上启动运行对应第二软件应用的第二应用窗口。
2.根据权利要求1所述的计算机实现的方法,其中,所述第二软件应用与所述第一主计算机的所述软件应用相同。
3.根据权利要求1所述的计算机实现的方法,还包括:
由所述第一主计算机检测输入到所述第一主计算机的显示器上的所述应用窗口中的输入数据;以及
由所述第一主计算机向所述第二主计算机发送第二控制信号,以使所述第二主计算机中的所述处理器将所述输入数据输入到所述第二主计算机的所述第二显示器上的所述第二应用窗口中。
4.根据权利要求1所述的计算机实现的方法,其中,还响应于检测到所述光标已经将所述应用窗口移动到所述第一主计算机的显示器的边缘以及所述输入信号何时与所选择的应用窗口继续移动超出所述第一主计算机的显示器的边缘对应:
由所述第一主计算机向所述输入装置发送第三控制信号,以将所述输入装置的通信配对从所述第一主计算机切换到所述第二主计算机。
5.根据权利要求1所述的计算机实现的方法,其中,还响应于检测到所述光标已经将所述应用窗口移动到所述第一主计算机的显示器的边缘以及所述输入信号何时与所选择的应用窗口继续移动超出所述第一主计算机的显示器的边缘对应:
由所述第一主计算机向所述第二主计算机发送第四控制信号,以使所述第二主计算机中的处理器移动所述第二主计算机的显示器上的第二光标。
6.根据权利要求1所述的计算机实现的方法,其中,所述第一主计算机经由局域网通信地耦接至所述第二主计算机。
7.根据权利要求1所述的计算机实现的方法,其中,所述输入装置经由包括蓝牙、蓝牙低功耗、红外、ZigBee、超宽带或射频中之一的无线通信协议与所述第一主计算机或所述第二主计算机通信地配对。
8.一种计算机实现的方法,包括:
由第一主计算机从与所述第一主计算机通信地配对的输入装置接收输入信号,所述输入信号与光标在所述第一主计算机的显示器上的移动对应,其中,所述第一主计算机通信地耦接至第二主计算机;
由所述第一主计算机检测所述光标何时选择应用窗口并且移动所述应用窗口超出所述第一主计算机的显示器的边缘,所述应用窗口运行对应软件应用;以及
响应于检测到所述光标已经移动所述应用窗口超出所述第一主计算机的显示器的边缘:
由所述第一主计算机向所述第二主计算机发送控制信号,以使所述第二主计算机中的处理器在所述第二主计算机的第二显示器上启动运行对应第二软件应用的第二应用窗口。
9.根据权利要求8所述的计算机实现的方法,其中,移动所述应用窗口超出所述第一主计算机的显示器的边缘大于所述应用窗口的总大小的阈值百分比使所述第一主计算机向所述第二主计算机发送主机控制信号。
10.根据权利要求9所述的计算机实现的方法,其中,所述阈值百分比为至少50%。
11.根据权利要求8所述的计算机实现的方法,其中,还响应于检测到所述光标何时选择应用窗口并且移动所述应用窗口超出所述第一主计算机的显示器的边缘,所述方法包括:
由所述第一主计算机向所述输入装置发送第二控制信号,以将所述输入装置的通信配对从所述第一主计算机切换到所述第二主计算机。
12.根据权利要求9所述的计算机实现的方法,还包括:
对所述第一主计算机的第一显示器上的所述应用窗口以图形形式去强调;以及
向所述第二主计算机发送第三控制信号,以使所述第二主计算机的所述处理器以图形形式强调所述第二显示器上的所述第二应用窗口。
13.根据权利要求12所述的计算机实现的方法,其中,以图形形式强调所述第二应用窗口包括使所述第二应用窗口改变颜色、改变亮度或闪烁中至少之一。
14.根据权利要求12所述的计算机实现的方法,其中,对所述应用窗口以图形形式去强调包括使所述应用窗口改变颜色、改变亮度或渐弱中至少之一。
15.根据权利要求8所述的计算机实现的方法,其中,所述第二软件应用与所述第一主计算机的所述软件应用相同。
16.一种系统,包括:
一个或更多个处理器;以及
包含指令的一个或更多个非暂态计算机可读存储介质,所述指令被配置成使所述一个或更多个处理器执行操作,所述操作包括:
由第一主计算机从与所述第一主计算机通信地配对的输入装置接收输入信号,所述输入信号与光标在所述第一主计算机的显示器上的移动对应,其中,所述第一主计算机通信地耦接至第二主计算机;
由所述第一主计算机检测所述光标何时选择应用窗口并且将所述应用窗口移动到所述第一主计算机的显示器的边缘以及所述输入信号何时与所选择的应用窗口继续移动超出所述第一主计算机的显示器的边缘对应,所述应用窗口运行对应软件应用;以及
响应于检测到所述光标已经将所述应用窗口移动到所述第一主计算机的显示器的边缘以及所述输入信号何时与所选择的应用窗口继续移动超出所述第一主计算机的显示器的边缘对应:
由所述第一主计算机向所述第二主计算机发送控制信号,所述控制信号使所述第二主计算机中的处理器在所述第二主计算机的第二显示器上启动运行对应第二软件应用的第二应用窗口。
17.根据权利要求16所述的系统,其中,所述第二软件应用与所述第一主计算机的所述软件应用相同。
18.根据权利要求16所述的系统,其中,所述一个或更多个非暂态计算机可读存储介质还包含以下指令,所述指令使所述一个或更多个处理器执行操作,所述操作包括:
由所述第一主计算机检测输入到所述第一主计算机的所述显示器上的所述应用窗口中的输入数据;以及
由所述第一主计算机向所述第二主计算机发送第二控制信号,以使所述第二主计算机中的所述处理器将所述输入数据输入到所述第二主计算机的所述第二显示器上的所述第二应用窗口中。
19.根据权利要求16所述的系统,其中,所述一个或更多个非暂态计算机可读存储介质还包含以下指令,所述指令使所述一个或更多个处理器执行操作,所述操作包括:
还响应于检测到所述光标已经将所述应用窗口移动到所述第一主计算机的显示器的边缘以及所述输入信号何时与所选择的应用窗口继续移动超出所述第一主计算机的显示器的边缘对应:
由所述第一主计算机向所述输入装置发送第三控制信号,以将所述输入装置的通信配对从所述第一主计算机切换到所述第二主计算机。
20.根据权利要求16所述的系统,其中,所述一个或更多个非暂态计算机可读存储介质还包含以下指令,所述指令使所述一个或更多个处理器执行操作,所述操作包括:
还响应于检测到所述光标已经将所述应用窗口移动到所述第一主计算机的显示器的边缘以及所述输入信号何时与所选择的应用窗口继续移动超出所述第一主计算机的显示器的边缘对应:
由所述第一主计算机向所述第二主计算机发送第四控制信号,以使所述第二主计算机中的处理器移动所述第二主计算机的显示器上的第二光标。
CN201710404878.5A 2016-06-03 2017-06-01 多主机启用流动的系统中的自动应用启动 Pending CN107463267A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662345744P 2016-06-03 2016-06-03
US62/345,744 2016-06-03
US15/226,803 2016-08-02
US15/226,803 US20170351396A1 (en) 2016-06-03 2016-08-02 Automatic application launching in a multi-host flow-enabled system

Publications (1)

Publication Number Publication Date
CN107463267A true CN107463267A (zh) 2017-12-12

Family

ID=60327784

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710404878.5A Pending CN107463267A (zh) 2016-06-03 2017-06-01 多主机启用流动的系统中的自动应用启动

Country Status (3)

Country Link
US (1) US20170351396A1 (zh)
CN (1) CN107463267A (zh)
DE (1) DE102017112041A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110515580A (zh) * 2019-09-02 2019-11-29 联想(北京)有限公司 一种显示控制方法、装置及终端
CN113515202A (zh) * 2021-07-27 2021-10-19 北京字节跳动网络技术有限公司 光标移动方法、装置和电子设备
WO2023051204A1 (zh) * 2021-09-29 2023-04-06 华为技术有限公司 跨设备连接方法、电子设备及存储介质

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10277671B2 (en) 2016-06-03 2019-04-30 Logitech Europe S.A. Automatic multi-host discovery in a flow-enabled system
US20170351471A1 (en) * 2016-06-03 2017-12-07 Logitech Europe S.A. Automatic multi-host switching for an input device
US20170351472A1 (en) * 2016-06-03 2017-12-07 Logitech Europe S.A. Automatic data transfer in a multi-host flow-enabled system
CN107122148B (zh) * 2017-03-17 2020-05-12 广州视源电子科技股份有限公司 远程协作方法及系统
TWI681319B (zh) 2018-03-22 2020-01-01 大陸商東莞寶德電子有限公司 游標控制系統及其控制方法
TWI693824B (zh) * 2018-07-18 2020-05-11 緯創資通股份有限公司 操作方法以及相關操作系統
CN109782970B (zh) * 2018-12-25 2021-01-08 维沃移动通信有限公司 一种显示方法和终端
TWI757762B (zh) * 2020-06-04 2022-03-11 宏正自動科技股份有限公司 多視窗顯示的切換方法以及切換系統
CN114428572A (zh) * 2020-10-29 2022-05-03 京东方科技集团股份有限公司 分屏显示方法、装置、电子设备及计算机可读介质
US20220391158A1 (en) * 2021-06-04 2022-12-08 Apple Inc. Systems and Methods for Interacting with Multiple Display Devices
CN115185390A (zh) * 2022-07-18 2022-10-14 深圳市般若造物科技有限公司 鼠标控制方法、鼠标及存储介质
US11893174B1 (en) * 2022-10-28 2024-02-06 Dell Products L.P. Information handling system mouse gesture to support transfer of visual images in a multi-display configuration

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050190148A1 (en) * 2003-12-19 2005-09-01 Fujitsu Component Limited Switching device and switching methods of the same
CN101078955A (zh) * 2006-05-26 2007-11-28 南京易思克网络安全技术有限责任公司 一种多个计算机屏幕鼠标切换的装置及方法
US20110131520A1 (en) * 2009-12-02 2011-06-02 Osama Al-Shaykh System and method for transferring media content from a mobile device to a home network
US20120278727A1 (en) * 2011-04-29 2012-11-01 Avaya Inc. Method and apparatus for allowing drag-and-drop operations across the shared borders of adjacent touch screen-equipped devices
US20140317530A1 (en) * 2013-04-19 2014-10-23 Samsung Electronics Co., Ltd. Method and device for receiving input

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050190148A1 (en) * 2003-12-19 2005-09-01 Fujitsu Component Limited Switching device and switching methods of the same
CN101078955A (zh) * 2006-05-26 2007-11-28 南京易思克网络安全技术有限责任公司 一种多个计算机屏幕鼠标切换的装置及方法
US20110131520A1 (en) * 2009-12-02 2011-06-02 Osama Al-Shaykh System and method for transferring media content from a mobile device to a home network
US20120278727A1 (en) * 2011-04-29 2012-11-01 Avaya Inc. Method and apparatus for allowing drag-and-drop operations across the shared borders of adjacent touch screen-equipped devices
US20140317530A1 (en) * 2013-04-19 2014-10-23 Samsung Electronics Co., Ltd. Method and device for receiving input

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110515580A (zh) * 2019-09-02 2019-11-29 联想(北京)有限公司 一种显示控制方法、装置及终端
CN110515580B (zh) * 2019-09-02 2022-08-19 联想(北京)有限公司 一种显示控制方法、装置及终端
CN113515202A (zh) * 2021-07-27 2021-10-19 北京字节跳动网络技术有限公司 光标移动方法、装置和电子设备
CN113515202B (zh) * 2021-07-27 2023-12-12 北京字节跳动网络技术有限公司 光标移动方法、装置和电子设备
WO2023051204A1 (zh) * 2021-09-29 2023-04-06 华为技术有限公司 跨设备连接方法、电子设备及存储介质

Also Published As

Publication number Publication date
DE102017112041A1 (de) 2017-12-07
US20170351396A1 (en) 2017-12-07

Similar Documents

Publication Publication Date Title
CN107463518A (zh) 用于输入装置的自动多主机切换
CN107463267A (zh) 多主机启用流动的系统中的自动应用启动
CN107463281A (zh) 启用流动的系统中的自动多主机发现
CN107463517A (zh) 用于多个输入装置的自动多主机切换
CN107463449A (zh) 多主机启用流动的系统中的自动数据传送
US8908003B2 (en) Remote communication system and method
CN104781759B (zh) 用于基于触摸的通信的系统和方法
CN106716921A (zh) 会话历史范围控制
CN102184212B (zh) 定制流内容呈现
CN109844717A (zh) 用于移动应用程序的实时远程控制的系统和方法
CN107005739A (zh) 用于基于语音的设备的外部视觉交互
US20150100463A1 (en) Collaborative home retailing system
CN104081374B (zh) 分级显示器服务器系统和方法
CN106020592A (zh) 分屏显示方法及装置
CN104244075B (zh) 一种媒体信息分享方法和系统
JP6849612B2 (ja) ビジネスオブジェクトを伝送する方法及び装置
CN102638774A (zh) 一种移动终端数据同步分享的方法和系统
CN107077348A (zh) 跨设备的经分割的应用呈现
CN104035953B (zh) 用于跨不同装置的无缝内容导航的方法和系统
CN109471742A (zh) 信息处理方法、装置、电子设备及可读存储介质
CN108733437B (zh) 即时通信方法、系统及电子装置与服务器
CN107534679A (zh) 针对通信会话的端点控制
CN107835979A (zh) 智能音频路由管理
CN106980482A (zh) 一种信息展示方法及第一电子设备
Salina et al. Next Generation Networks: perspectives and potentials

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20171212

WD01 Invention patent application deemed withdrawn after publication