IP Library Granted Patent US 11,722,550
Granted Patent B2
US 11,722,550 · App. 16/535,685 · Granted Aug 8, 2023

Sharing an input device between remote desktops of multiple client devices

Inventors: Lin Lv (Beijing, CN); Yunfei San (Beijing, CN); Yunxia Cheng (Beijing, CN); Jack Liu (Beijing, CN); Ning Ke (Northborough, MA); Yang Liu (Beijing, CN); Jian Ken Song (Beijing, CN)
Assignee: VMware, Inc.
H04L67/025G06F9/452G06F9/45533
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,722,550
App. No.
16/535,685
Granted
Aug 8, 2023
Kind
B2
Abstract

An input device is shared between a first remote desktop having a first display image, which is displayed on a first display of a first client device, and a second remote desktop having a second display image, which is displayed on a second display of a second client device. Upon detecting that an input pointer of the input device currently displayed within the first display image on the first display, is moved across an edge of the first remote desktop that corresponds to a virtual boundary between the first remote desktop and the second remote desktop, instructions are issued to a first remote computing device that is hosting the first remote desktop to discontinue receiving inputs made with the input device and a second remote computing device that is hosting the second remote desktop to begin receiving inputs made with the input device.

Claims (67)

1. A method of processing inputs made with an input device that is shared between a first remote desktop having a first display image, which is displayed on a first display of a first client device, and a second remote desktop having a second display image, which is displayed on a second display of a second client device, said method comprising:

establishing a first communication channel between the first client device and a first remote computing device that is hosting the first remote desktop;

establishing second and third communication channels between the second client device and a second remote computing device that is hosting the second remote desktop;

sending events generated by the input device from the first client device to the first remote computing device through the first communication channel, and events generated by the second client device to the second remote computing device through the second communication channel;

detecting movement of an input pointer of the input device currently displayed within the first display image on the first display across a virtual boundary between the first remote desktop and the second remote desktop;

in response to detecting the movement of the input pointer:

instructing the first client device and the first remote computing device to discontinue using the first communication channel;

establishing a fourth communication channel between the first client device and a second remote computing device that is hosting the second remote desktop; and

instructing the second client device and the second remote computing device to discontinue using the second communication channel;

sending the events generated by the input device from the first client device to the second remote computing device through the fourth communication channel; and

transmitting the second display image from the second remote computing device to the second client device through the third communication channel.

2. The method of claim 1 , wherein

in response to the instructions, the first remote computing device updates the first display image so that the input pointer is no longer displayed within the first display image and the second remote computing device updates the second display image so that the input pointer is displayed within the second display image.

3. The method of claim 2 , wherein

when the events are generated by the input device while the input pointer is displayed within the first display image, the first remote computing device updates the first display image based on the events and the second remote computing device does not update the second display image based on the events; and

when the events are generated by the input device while the input pointer is displayed within the second display image, the second remote computing device updates the second display image based on the events and the first remote computing device does not update the first display image based on the events.

4. The method of claim 3 , wherein the input device is an input device of the first client device.

5. The method of claim 3 , wherein the input device is an input device of the second client device.

6. The method of claim 1 , further comprising:

maintaining a data structure that tracks, for each active remote desktop that has been launched in an input device sharing mode, a login ID and a client device ID.

7. The method of claim 6 , further comprising:

upon detecting that the first remote desktop has been launched in the input device sharing mode, updating the data structure to add an entry corresponding to the first remote desktop;

upon detecting that the second remote desktop has been launched in the input device sharing mode, updating the data structure to add an entry corresponding to the second remote desktop; and

upon detecting that both the first remote desktop and the second remote desktop have been launched in the input device sharing mode and are associated with the same login ID, prompting each of the first and second client devices to designate an input device thereof as the shared input device.

8. A non-transitory computer readable medium having instructions stored therein which are executable by a processor to carry out a method of processing inputs made with an input device that is shared between a first remote desktop having a first display image, which is displayed on a first display of a first client device, and a second remote desktop having a second display image, which is displayed on a second display of a second client device, said method comprising:

establishing a first communication channel between the first client device and a first remote computing device that is hosting the first remote desktop;

establishing second and third communication channels between the second client device and a second remote computing device that is hosting the second remote desktop;

sending events generated by the input device from the first client device to the first remote computing device through the first communication channel, and events generated by the second client device to the second remote computing device through the second communication channel;

detecting movement of an input pointer of the input device currently displayed within the first display image on the first display across a virtual boundary between the first remote desktop and the second remote desktop;

in response to detecting the movement of the input pointer:

instructing the first client device and the first remote computing device to discontinue using the first communication channel;

establishing a fourth communication channel between the first client device and a second remote computing device that is hosting the second remote desktop; and

instructing the second client device and the second remote computing device to discontinue using the second communication channel;

sending the events generated by the input device from the first client device to the second remote computing device through the fourth communication channel; and

transmitting the second display image from the second remote computing device to the second client device through the third communication channel.

9. The computer readable medium of claim 8 , wherein

in response to the instructions, the first remote computing device updates the first display image so that the input pointer is no longer displayed within the first display image and the second remote computing device updates the second display so that the input pointer is displayed within the second display image.

10. The computer readable medium of claim 9 , wherein

when the events are generated by the input device while the input pointer is displayed within the first display image, the first remote computing device updates the first display image based on the events and the second remote computing device does not update the second display image based on the events; and

when the events are generated by the input device while the input pointer is displayed within the second display image, the second remote computing device updates the second display image based on the events and the first remote computing device does not update the first display image based on the events.

11. The computer readable medium of claim 10 , wherein the input device is an input device of the first client device.

12. The computer readable medium of claim 10 , wherein the input device is an input device of the second client device.

13. The computer readable medium of claim 8 , wherein the method further comprises:

maintaining a data structure that tracks, for each active remote desktop that has been launched in an input device sharing mode, a login ID and a client device ID.

14. The computer readable medium of claim 13 , wherein the method further comprises:

upon detecting that the first remote desktop has been launched in the input device sharing mode, updating the data structure to add an entry corresponding to the first remote desktop;

upon detecting that the second remote desktop has been launched in the input device sharing mode, updating the data structure to add an entry corresponding to the second remote desktop; and

upon detecting that both the first remote desktop and the second remote desktop have been launched in the input device sharing mode and are associated with the same login ID, prompting each of the first and second client devices to designate an input device thereof as the shared input device.

15. A remote desktop computer system comprising:

a first client device having a first remote desktop client running therein and a first input device;

a second client device having a second remote desktop client running therein and a second input device;

a first virtual machine having a first remote desktop agent running therein, wherein the first remote desktop agent is in communication with the first remote desktop client to provision a first remote desktop, the first remote desktop client configured to send events to the first remote desktop agent via a first communication channel;

a second virtual machine having a second remote desktop agent running therein, wherein the second remote desktop agent is in communication with the second remote desktop client to provision a second remote desktop, the second remote desktop client configured to send events to the second remote desktop agent via a second communication channel, the second remote desktop agent and the second remote desktop client connected by a third communication channel; and

a connection broker server that selected the first virtual machine to host the first remote desktop of the first client device and the second virtual machine to host the second remote desktop of the second client device, wherein the connection broker is configured to:

detect movement of an input pointer of the first input device currently displayed within a first display image on a first display across a virtual boundary between the first remote desktop and the second remote desktop;

in response to detecting the movement of the input pointer:

instruct the first remote desktop client and the first remote desktop agent to discontinue using the first communication channel;

establish a fourth communication channel between the first remote desktop client device and the second remote desktop agent; and

instruct the second remote desktop client and the second remote desktop agent to discontinue using the second communication channel;

send the events generated by the first input device from the first remote desktop client to the second remote desktop agent through the fourth communication channel; and

transmit a second display image from the second remote desktop agent to the second remote desktop client through the third communication channel.

16. The system of claim 15 , wherein the connection broker is further configured to:

maintain a data structure that tracks, for each active remote desktop that has been launched in an input device sharing mode, a login ID and a client device ID.

17. The system of claim 16 , wherein the connection broker is further configured to:

upon detecting that the first remote desktop has been launched in the input device sharing mode, update the data structure to add an entry corresponding to the first remote desktop;

upon detecting that the second remote desktop has been launched in the input device sharing mode, update the data structure to add an entry corresponding to the second remote desktop; and

upon detecting that both the first remote desktop and the second remote desktop have been launched in the input device sharing mode and are associated with the same login ID, prompt each of the first and second client devices to designate an input device thereof as the shared input device.

Assignments (4)
PATENT ASSIGNMENT Recorded Aug 5, 2024
From: VMWARE LLC
To: OMNISSA, LLC
Reel/Frame 068327/0365 →
SECURITY INTEREST Recorded Jul 3, 2024
From: OMNISSA, LLC
To: UBS AG, STAMFORD BRANCH
Reel/Frame 068118/0004 →
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2019
From: LV, LIN; SAN, YUNFEI; CHENG, YUNXIA; LIU, JACK; KE, NING; LIU, YANG; SONG, JIAN KEN
To: VMWARE, INC.
Reel/Frame 050002/0939 →