IP Library Granted Patent US 9,846,496
Granted Patent B2
US 9,846,496 · App. 14/843,882 · Granted Dec 19, 2017

Virtual input device system

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 9,846,496
App. No.
14/843,882
Granted
Dec 19, 2017
Kind
B2
Abstract

The described technology is directed towards virtual input devices that take application program-directed input from automation and/or remote devices, such as over a network, instead of via actual user input via a physical device, for example. This allows an automation framework to insert input into an application program, such as for automated testing without modifying any of the application's other components. The virtual input devices may be object instances or the like that receive their input from function calls based upon the type of input and output events, e.g., to simulate keyboard input/output (I/O), mouse or other pointer I/O, voice, gesture, and other command I/O, and so forth.

Claims (42)

1. A method, comprising:

generating, by a processor included on at least one device, a mapping of input devices to providers based on respective types of input data generated by the input devices, wherein the providers normalize the input data generated by the input devices, and wherein the input devices are at least one of actual input devices or virtual input devices;

receiving, by the processor, a request to output an event at a virtual input device of the virtual input devices, wherein the virtual input device corresponds to a first input device type;

identifying, by the processor, a provider corresponding to the virtual input device based upon the mapping;

routing, by the processor to the provider, first input data directed to a computer program from the virtual input device in order for the provider to simulate the event being output from a second input device type supported by a device on which the computer program executes, wherein the device does not support the first input device type;

normalizing, by the processor via the provider, the input data into a normalized event simulating the event being output from the second input device type, wherein the normalized event is receivable by a user interface element of the computer program that is configured to handle normalized events; and

outputting, by the processor, the normalized event to the user interface element of the computer program.

2. The method of claim 1 , wherein generating the mapping comprises generating a one-to-many mapping for at least one input device to the providers.

3. The method of claim 1 , wherein the routing the first input data to the provider comprises routing the first input data to a button provider representative of a button input device type.

4. The method of claim 1 , wherein the routing the first input data to the provider comprises routing the first input data to a pointer provider representative of a pointer input device type.

5. The method of claim 1 , wherein the routing the first input data to the provider comprises routing the first input to a command provider representative of a command input device type.

6. The method of claim 1 , wherein the virtual input device comprises an instantiated object instance, and wherein the receiving the request to output the event at the virtual input device comprises receiving a function call on a function of the virtual input device object instance.

7. The method of claim 1 , wherein the receiving the request to output the event at the virtual input device comprises receiving a network communication corresponding to the request.

8. The method of claim 1 , further comprising selecting, by the processor, the provider from a plurality of providers mapped to the input device based on a characteristic of the event being output.

9. The method of claim 1 , wherein the normalizing the first input data comprises translating the first input data into one or more messages and one or more codes to simulate the event being output from the second input device type.

10. A system comprising:

a processor; and

a memory communicatively coupled to the processor, the memory having stored therein computer-executable instructions, comprising:

an input namespace component configured to generate a mapping of input devices to providers based on respective types of input data generated by the input devices, wherein the providers normalize the input data generated by the input devices, and wherein the input devices are at least one of actual input devices or virtual input devices;

a request receiving entity configured to obtain a request to output an event at a virtual input device of the virtual input devices, wherein the virtual input device corresponds to a first input device type;

a virtual input device manager configured to:

identify a provider corresponding to the virtual input device based upon the mapping, and

route, to the provider, first input data directed to a computer program from the virtual input device in order for the provider to simulate the event being output from a second input device type supported by a device on which the computer program executes, wherein the device does not support the first input device type; and

the provider configured to:

normalize the input data into a normalized event simulating the event being output from the second input device type, wherein the normalized event is receivable by a user interface element of the computer program that is configured to handle normalized events, and

output the normalized event to the user interface element of the computer program.

11. The system of claim 10 , wherein the mapping comprises a one-to-many mapping for at least one input device to the providers.

12. The system of claim 10 wherein the virtual input device manager is further configured to select the provider from a plurality of providers mapped to the input device based on a characteristic of the event being output.

13. The system of claim 10 , wherein the providers comprise at least one of a button provider representative of a button input device type, a pointer provider representative of a pointer input device type, or a command provider representative of a command input device type.

14. The system of claim 10 , further comprising a helpdesk troubleshooter component configured to automatically identify an error condition associated with information provided during a helpdesk call based on at least the output of the event at the virtual input device.

15. The system of claim 10 , wherein the provider normalizes the input data by translation of the first input data into one or more messages and one or more codes to simulate the event being output from the actual input device.

16. A non-transitory computer-readable medium having instructions stored thereon that, in response to execution, cause a system including a processor to perform operations, comprising:

generating a mapping of input devices to providers based on respective types of input data generated by the input devices, wherein the providers normalize the input data generated by the input devices, and wherein the input devices are at least one of actual input devices or virtual input devices;

receiving a request to output an event at a virtual input device of the virtual input devices, wherein the virtual input device corresponds to a first input device type;

identifying a provider corresponding to the virtual input device based upon the mapping;

routing, to the provider, first input data directed to a computer program from the virtual input device in order for the provider to simulate the event being output from a second input device type supported by a device on which the computer program executes, wherein the device does not support the first input device type;

normalizing, via the provider, the input data into a normalized event simulating the event being output from the second input device type, wherein the normalized event is receivable by a user interface element of the computer program that is configured to handle normalized events; and

outputting the normalized event to the user interface element of the computer program.

17. The non-transitory computer-readable medium of claim 16 , wherein the mapping comprises a one to many mapping for at least input device to the providers.

18. The non-transitory computer-readable medium of claim 16 , the operations further comprising, selecting the provider from a plurality of providers mapped to the input device based on a characteristic of the event being output.

19. The non-transitory computer-readable medium of claim 16 , wherein the providers comprise at least one of a button provider representative of a button input device type, a pointer provider representative of a pointer input device type, or a command provider representative of a command input device type.

20. The non-transitory computer-readable medium of claim 16 , the operations further comprising automatically identifying an error condition associated with information provided during a helpdesk call based on at least the output of the event at the virtual input device.

Assignments (2)
SECURITY INTEREST Recorded Oct 1, 2025
From: WARNER BROS. DISCOVERY, INC.; WARNER MEDIA, LLC; TURNER BROADCASTING SYSTEM, INC.; HOME BOX OFFICE, INC.; DISCOVERY COMMUNICATIONS, LLC; WARNERMEDIA DIRECT LLC; DISCOVERY.COM LLC; WARNER BROS. ENTERTAINMENT INC.; CNN INTERACTIVE GROUP, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 072995/0858 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 2, 2015
From: PATWARDHAN, MAKARAND V.; PARKER, J. JORDAN C.; FURTWANGLER, NATHAN J. E.; CORRINGTON, JESSE
To: HOME BOX OFFICE, INC.
Reel/Frame 036482/0809 →