IP Library › Granted Patent US 10,817,086
Granted Patent B2
US 10,817,086 · App. 14/823,733 · Granted Oct 27, 2020

Touch support for remoted applications

Inventor: Georgy Momchilov (Parkland, FL)
Assignee: Citrix Systems, Inc.
G06F3/041G06F3/038G06F3/0488G06F3/04886G06F9/451G09G5/003G09G5/18G09G2370/02
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 10,817,086
App. No.
14/823,733
Granted
Oct 27, 2020
Kind
B2
Abstract

Touch, multi-touch, gesture, flick and stylus pen input may be supported for remoted applications. For example, a touch capable client device may receive touch input for a remoted application executing on a server. In such an instance, the touch input may be transmitted to the server for processing. The server may subsequently modify the application display or the application functionality and provide an output to the client device. In some arrangements, the output may correspond to instructions for modifying a display of the application while in other examples, the output may correspond to an image of the changed application display. Additionally or alternatively, determining a functionality associated with touch input may be performed based on user definitions, user preferences, server definitions (e.g., operating system on the server), client definitions (e.g., operating system on the client) and the like and/or combinations thereof. Aspects may also include resolving latency and enhancing user experience using various features.

Claims (52)

1. One or more non-transitory computer-readable media storing executable instructions that, when executed by at least one processor, cause a system to:

receive a first touch input event from a remote computing device different from the system, wherein the first touch input event is responsive to a first application executing on the system, the first application being presented on the remote computing device; and

receive a second touch input event from the remote computing device, wherein the second touch input event is responsive to a second application executing on the system, the second application being presented on the remote computing device, the second application being different from the first application, the first touch input event and the second touch input event being a same type of touch input event,

wherein the second application interprets the second touch input event differently than the first application interprets the first touch input event.

2. The one or more non-transitory computer-readable media of claim 1 , wherein the first touch input event includes a multi-touch input event.

3. The one or more non-transitory computer-readable media of claim 1 , wherein the executable instructions, when executed by the at least one processor, cause the system to:

receive, from a remote application client executing on the remote computing device, information relating to the first touch input event, wherein the remote application client is configured to coordinate communications between the system and the computing device for interacting with the first application.

4. The one or more non-transitory computer-readable media of claim 1 , wherein the executable instructions, when executed by the at least one processor, cause the system to:

receive information relating to the first touch input event from the remote computing device, the information including raw input data detected by one or more touch-sensitive hardware elements of the computing device.

5. The one or more non-transitory computer-readable media of claim 1 , wherein the executable instructions, when executed by the at least one processor, cause the system to:

determine whether the second touch input event is to be processed locally at the system or remotely at the remote computing device based on at least one of an application to which the second touch input event is directed or a type of the touch input event.

6. The one or more non-transitory computer-readable media of claim 1 , wherein the executable instructions, when executed by the at least one processor, cause the system to:

determine whether the second touch input event is to be processed locally at the system or remotely at the remote computing device based on at least one of an amount of available network bandwidth between the system and the computing device or a processing speed of the application.

7. The one or more non-transitory computer-readable media of claim 6 , wherein the executable instructions, when executed by the at least one processor, cause the system to:

process the second touch input event locally at the system in response to at least one of:

the amount of available network bandwidth being above a specified bandwidth threshold; or

the processing speed of the application being above a speed threshold.

8. The one or more non-transitory computer-readable media of claim 6 , wherein the executable instructions, when executed by the at least one processor, cause the system to:

store the second touch input event in a queue;

determine an age of the second touch input event; and

discard the second touch input event responsive to the age of the second touch input event reaching a specified age.

9. The one or more non-transitory computer-readable media of claim 8 , wherein discarding the second touch input event responsive to the age of the second touch input event reaching the specified age comprises discarding a touch input event having an oldest creation date.

10. The one or more non-transitory computer-readable media of claim 8 , wherein the executable instructions, when executed by the at least one processor, cause the system to:

discard all touch input events existing for a specified amount of time.

11. The one or more non-transitory computer-readable media of claim 1 , wherein the executable instructions, when executed by the at least one processor, cause the system to:

determine whether to process the second touch input event locally at the system or remotely at the remote computing device based on one or more rules; and

cause the second touch input event to be processed remotely at the computing device in response to determining that the second touch input event is to be processed remotely, wherein processing of the second touch input event remotely at the computing device includes a modification of a display of the application.

12. The one or more non-transitory computer-readable media of claim 11 , wherein the one or more rules include at least one rule that one or more specified types of touch inputs are to be processed remotely.

13. The one or more non-transitory computer-readable media of claim 11 , wherein the one or more rules are stored by one or more of the system, the remote computing device, or the application.

14. The one or more non-transitory computer-readable media of claim 1 , wherein the first application and the second application respectively define how to interpret a type of touch input.

15. A method comprising:

detecting, by a first computing device, a first touch input event directed to a first application executing on a second computing device;

detecting, by the first computing device, a second touch input event directed to a second application executing on the second computing device, the second application being different from the first application, the first touch input event and the second touch input event being a same type of touch input event, wherein the first touch input event and the second touch input event are interpreted differently;

determining, by the first computing device, an amount of network latency between the first computing device and the second computing device;

determining whether the amount of network latency is above a specified threshold; and

in response to determining that the amount of network latency is above the specified threshold, processing the first touch input event locally at the first computing device.

16. The method of claim 15 , comprising:

when the touch input event is processed locally at the first computing device, transmitting information relating to the touch input event to the second computing device.

17. The method of claim 16 , comprising:

receiving an application display update from the second computing device in response to transmitting the information relating to the touch input event to the second computing device.

18. A system comprising:

at least one processor; and

non-transitory memory storing executable instructions that, when executed by the at least one processor, cause the system to:

receive a first message comprising first touch input from a computing device different from the system, the first touch input being directed to a first application executing on the system;

generate a touch input notification message in a first message format configured to trigger a function call by the first application for processing the first touch input;

forward the touch input notification message to the first application executing on the system; and

receive a second message comprising second touch input from the computing device, the second touch input being directed to a second application executing on the system, the second application being different from the first application, the first touch input directed to the first application and the second touch input directed to the second application being a same type of touch input,

wherein the second application interprets the second touch input differently than the first application interprets the first touch input.

19. The system of claim 18 , wherein a function triggered by the function call by the first application for processing the first touch input is executed differently based on a type of the system.

20. The system of claim 18 , wherein the non-transitory memory stores executable instructions that, when executed by the at least one processor, cause the system to:

transmit information related to the first touch input to the computing device; and

receive an application display update from the computing device in response to transmitting the information related to the first touch input to the computing device.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 19, 2015
From: MOMCHILOV, GEORGY
To: CITRIX SYSTEMS, INC.
Reel/Frame 036364/0480 →
Continuity (3)
Continuation 13253452 · Oct 5, 2011
Provisional Application 61389874 · Oct 5, 2010
Related Publication 20150346855A1 · Dec 3, 2015