US20120096368A1 - Cloud-based virtual clipboard - Google Patents

Cloud-based virtual clipboard Download PDF

Info

Publication number
US20120096368A1
US20120096368A1 US12/904,833 US90483310A US2012096368A1 US 20120096368 A1 US20120096368 A1 US 20120096368A1 US 90483310 A US90483310 A US 90483310A US 2012096368 A1 US2012096368 A1 US 2012096368A1
Authority
US
United States
Prior art keywords
data
user
computing device
clipboard
application
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.)
Abandoned
Application number
US12/904,833
Inventor
Brian McDowell
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Priority to US12/904,833 priority Critical patent/US20120096368A1/en
Assigned to MICROSOFT CORPORATION reassignment MICROSOFT CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MCDOWELL, BRIAN
Priority to CN2011103213222A priority patent/CN102521018A/en
Publication of US20120096368A1 publication Critical patent/US20120096368A1/en
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSOFT CORPORATION
Abandoned legal-status Critical Current

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]

Definitions

  • Cloud computing is Internet-based computing, whereby shared resources such as software and other information are provided to a variety of computing devices on-demand via the Internet. It represents a new consumption and delivery model for IT services where resources are available to all network-capable devices, as opposed to older network models where resources were stored locally across the devices.
  • the move toward cloud computing opens up a new potential for mobile and other networked devices to work in conjunction with each other to provide greater interaction and a much richer experience with respect to third party and a user's own resources.
  • cloud computing offers enhanced connectivity between a user's various devices, such as for example smart phones, Internet-connected television or set-top boxes, laptops, netbooks, and desktop computers.
  • various devices such as for example smart phones, Internet-connected television or set-top boxes, laptops, netbooks, and desktop computers.
  • data such as a picture, document or a selection of text from one device to another
  • the user is still forced to perform a series of complex tasks to achieve this data transfer. These tasks may be time consuming and non-intuitive to perform.
  • the technology briefly described, comprises a system and method for quickly and easily making data from one computing device available to the other devices in a user's collection of computing devices.
  • the system includes a client-side clipboard application on each device in a user's collection of computing devices.
  • the client-side clipboard application may be a software module running as part of a computing device's operating system, or as an application in communication with the operating system.
  • the system further includes a cloud clipboard service resident on a server to which each of the user's computing devices are operatively connected.
  • the client-side clipboard application For each computing device in a user's collection of computing devices, the client-side clipboard application monitors a local clipboard buffer to which data may be copied by a user performing a known cut or copy operation on data in a device-level application.
  • the data which may be copied in the present system may be any data which can be copied to a local clipboard buffer in any of a wide variety of applications, including text, graphics, files, directories, and links to such data.
  • the client-side clipboard application retrieves that data and pushes it to the cloud clipboard service to which the computing device is connected.
  • the data in the cloud clipboard service is transmitted to the client-side clipboard applications in the other computing devices in a user's collection.
  • the client-side clipboard application takes the received data and stores it in the associated local clipboard buffer, replacing data that may have been there previously.
  • a user may perform a known paste operation from any of his networked computing devices to paste the data received from the cloud clipboard service into one or more device-level applications.
  • data from one computing device may be easily propagated to other devices in a user's collection of devices.
  • a similar system may be used to propagate data from one user's device to the devices of others in a friend network where permissions have been properly set.
  • the present technology relates to a method of propagating data between multiple computing devices, comprising: a) monitoring a local clipboard buffer of a first computing device of the multiple computing devices for a change in data stored in the local clipboard buffer; b) transmitting data from the local clipboard buffer of the first computing device to a storage location on a remote server to which the first computing device is operatively coupled upon detecting a change in the data stored in the local clipboard buffer of the first device; and c) propagating the data stored in the storage location in said step b) to a local clipboard buffer of a second computing device operatively coupled to the remote server.
  • the present technology relates to a system for propagating data between computing devices.
  • the system includes: a first computing device including: a first application including data, a first local clipboard buffer capable of storing data copied to the first local clipboard buffer from the first application, and a first client clipboard application for synchronizing with the first local clipboard buffer and forwarding the data in the first local clipboard buffer to a remote location; a service at the remote location, the service including: a data store for storing the data from the first client clipboard application; and a second computing device operative coupled to the service at the remote location, the second computing device including: a second client clipboard application for synchronizing with the data store in the service at the remote location, a second local clipboard buffer, the second client clipboard application forwarding data received from the data store to the second local clipboard buffer, data in the second local clipboard buffer being replaced with data received from the second client clipboard application, and a second application, data from the second local clipboard buffer capable of being pasted into the application.
  • the present technology relates to a computer-readable storage medium for programming a processor to perform a method of propagating data between a collection of computing devices of a single user.
  • the performed method comprising: a) synchronizing a local clipboard buffer of a first computing device of a collection of computing devices of the single user to a first client clipboard application on the first computing device; b) transmitting data from the local clipboard buffer of the first computing device to a storage location on a remote server to which the first computing device is operatively coupled upon detecting a change in the data stored in the local clipboard buffer of the first device; and c) propagating the data stored in the storage location in said step b) to local clipboard buffers of a plurality of computing devices in the user's collection of computing devices that are operatively coupled to the remote server.
  • FIG. 1 is an illustration of a network architecture for implementing an embodiment of the present technology.
  • FIG. 2 is a block diagram of client-side and server-side components for implementing the present technology.
  • FIG. 3 is a flowchart for implementing an embodiment of the present system shown in FIG. 2 .
  • FIG. 4 is a block diagram of client-side and server-side components for implementing an alternative embodiment of the present technology.
  • FIG. 5 is a flowchart for implementing the alternative embodiment of the present system shown in FIG. 4 .
  • FIG. 6 is an illustration of an example for copying and pasting data in a natural user interface.
  • FIG. 7 is a block diagram of an exemplary computing environment.
  • FIG. 8 is a block diagram of an exemplary gaming console.
  • the system includes a client-side clipboard application, which is a software module running as part of a computing device's operating system, or as an application in communication with the operating system, on each device in a user's collection of computing devices.
  • the system further includes a cloud clipboard service resident on a server to which each of the user's computing devices is operatively connected.
  • a user may perform cut, copy and paste operations which are known for copying data to a local clipboard buffer and retrieving data from a local clipboard buffer.
  • any cut or copied data may also be automatically uploaded to the cloud clipboard service, whereupon it is automatically propagated to a user's other networked devices for use on those devices.
  • data from one user uploaded to the cloud clipboard service may also be propagated to the devices of one or more other users.
  • FIG. 1 shows a block diagram of a sample network topology 100 for implementing the present technology.
  • Network topology 100 includes a collection 102 of computing devices 112 , 114 , 116 . These computing devices form part or all of a collection of computing devices belonging to a single user 110 and operatively coupled to a service 120 via a network 124 .
  • computing device 112 may be a mobile telephone of a mobile telephone network
  • computing device 114 may be a personal computer such as a desktop computer, laptop computer or tablet
  • computing device 116 may be a set-top box or game console having an associated display 118 .
  • Example embodiments of these computing devices are set forth below with respect to FIGS. 7 and 8 .
  • Each of the various types of computing devices may store their data locally and “in the cloud,” for example on a storage location 130 in service 120 as explained below.
  • the computing devices 112 , 114 , 116 shown in FIG. 1 are by way of example only and one or more of these may be omitted in further embodiments.
  • the user 110 may have a variety of other computing devices, or additional replicas of the computing devices 112 , 114 , 116 , in his or her collection 102 of computing devices in further embodiments.
  • Such computing devices may in general include, but are not limited to, desktop computers, laptop computers, tablets, cellular telephones, televisions/set top boxes, video game consoles, netbooks, automobiles, cameras and smart appliances. Other computing devices are contemplated.
  • the service 120 may for example be a large scale Internet service provider such as for example MSN® services or Xbox LIVE® gaming services, though it need not be in further embodiments.
  • Service 120 may have one or more servers including one implementing a cloud-based clipboard service 126 as explained below.
  • Service 120 may include other servers including for example a web server, a game server supporting gaming applications, a media server for organizing and distributing selected media, and/or an ftp server supporting file transfer and/or other types of servers. Other servers are contemplated.
  • each of the computing devices illustrated in FIG. 1 may be coupled to each other via one or more public or private networks 124 .
  • Network 124 may include the Internet, cellular networks, or any other type of known public or private data and/or voice transfer network.
  • computing devices 112 , 114 , 116 may be connected to each other by peer-to-peer connections in addition to, or instead of, their connection to network 124 .
  • the service 120 also provides a collection of services which applications running on computing devices 112 , 114 , 116 may invoke and utilize.
  • computing devices 112 , 114 , 116 may invoke user login service 132 , which is used to authenticate the user 110 seeking access to his or her secure resources from service 120 .
  • a user 110 may authenticate him or herself to the service 120 by a variety of authentication protocols, including for example with an ID such as a username and a password.
  • Data structure 130 may further include a cloud clipboard storage location 140 for storing a wide variety of clipboard data as explained below. While the cloud clipboard service 126 , data structure 130 and login service 132 are shown as part of a single service 120 , some or all of these components may be distributed across different services in further embodiments.
  • the service 120 including cloud clipboard service 126 and cloud clipboard storage 140 .
  • the service 126 may be operatively coupled via network 124 to the computing devices in a user's collection 102 of computing devices.
  • the transfer of data from a device 1 to devices 2 , 3 and 4 , etc. is described. It is understood that there may be greater or fewer computing devices than shown in FIG. 2 .
  • any of the computing devices in a user's collection of computing devices can occupy the position of device 1 to allow data from that device to be quickly and easily propagated to other devices in the user's collection of computing devices. Aspects of computing device 1 related to the present system are explained below. It is understood that each of the other devices 2 , 3 , 4 , etc. may include the same components.
  • Device 1 includes a local clipboard buffer 150 receiving data from and sending data to one or more device-level applications 152 on device 1 .
  • Local clipboard buffer 150 may be a block of memory in the random access memory (RAM) of device 1 .
  • Data may be written to local clipboard buffer 150 via different user interface commands commonly referred to as cut and/or copy operations. Different user interfaces will have different forms of these commands.
  • operating systems working with a keyboard could recognize a keyboard stroke shortcut of “Ctrl-x” to cut selected data objects, whereupon they are copied to the local clipboard buffer 150 , and “Ctrl-c” to copy selected data objects to the local clipboard buffer 150 .
  • Such systems typically also recognize a shortcut keystroke of “Ctrl-v” to paste objects stored in local clipboard buffer 150 to a device-level application 152 .
  • FIG. 6 shows a further embodiment for copying and pasting data objects in a natural user interface.
  • Each device may further include a client clipboard application 156 which may be a software module or a combination of hardware and software running on device 1 .
  • the client clipboard application may be part of the device's operating system, or may be an application in communication with the operating system.
  • Client clipboard application 156 may monitor and synchronize with the local clipboard buffer 150 so that, upon a change in the data stored in local clipboard buffer 150 , the client clipboard application automatically receives this data. The client clipboard application 156 may then automatically forward the received data to cloud clipboard service 126 .
  • Client clipboard application 156 may monitor local clipboard buffer 150 continuously, or periodically. Alternatively, the local clipboard buffer 150 may be modified to push data from the buffer to client clipboard application 156 upon a change in the data in the local clipboard buffer 150 .
  • the type of data which can be forwarded by the client clipboard application 156 to the cloud clipboard service 126 may be any type of data which can be stored in a local clipboard buffer 150 in any application 152 running on device 1 . This data may for example include text, graphics, one or more files, one or more file directories, and links to such data. Different applications 152 may have different types of data which it can operate with and store in local clipboard buffer 150 .
  • Client clipboard application 156 may receive any type of data from buffer 150 and forward it to cloud clipboard service 126 .
  • Each user device may further include a configuration utility 158 allowing a user to configure aspects of the cloud-based clipboard service.
  • the utility 158 may present a user interface through which a user can configure a desired implementation of the present system.
  • the utility 158 may for example allow a user to define each of his or her devices which are to be included in the cloud-based clipboard service, as well as to provide logon credentials authenticating the user to his or her collection of computing devices.
  • the configuration utility may interact with the user logon service 132 described above.
  • User login information may be cached so that a user need not enter login credentials each time a user uses the cloud-based clipboard service.
  • the user may set a variety of other user preferences via the configuration utility 158 .
  • the user may choose which types of data should be shared, which data connection to prioritize (e.g., on a phone, the user might prefer to use a wi-fi over a data-plan connection if both are available), which applications are excluded from the shared clipboard, and possibly configure conversion rules for data formats (for example, all images should be converted to jpeg format).
  • Other configurations are possible via configuration utility 158 .
  • Each of devices 1 , 2 , 3 , 4 , etc. may include a local clipboard buffer 150 , applications 152 , client clipboard application 156 and utility application 158 as described above.
  • a user of the device 1 may configure the device as described above in the preceding paragraph.
  • a user may use any of the devices in his or her collection 102 to configure the system, such as for example alternatively using device 2 to configure the system in step 204 .
  • a user may access service 120 directly, and configure the system through interaction with the service 120 in a step 208 .
  • the client clipboard application 156 monitors the local clipboard buffer 150 for a cut or copy operation that causes data to be copied to the local clipboard buffer 150 .
  • the client clipboard application 156 uploads the new data to cloud service 126 in step 214 .
  • the client clipboard application 156 may additionally upload metadata associated with the data to be propagated.
  • the metadata may include the type of device that generated the data, the application on the device which generated the data, the type of data (text, graphics, video, html) and a time stamp at which the data was copied to the local clipboard buffer 150 on the device. All this data and metadata may be sent to the cloud clipboard service 126 in step 214 .
  • the cloud clipboard service 126 may format the data to maximize its usability across different devices and different applications. Formatting step 220 may in examples include the step of stripping out formatting of the data uploaded in step 214 .
  • the data may be formatted per user preferences set forth via the configuration utility 158 , or a default set of rules directed at optimizing the possibility that the stored data may be viewed on a maximum number of devices and in a maximum number of applications on those devices.
  • multiple versions of the data may be generated in step 220 , with each version having a different format to again maximize the usability of the data across different devices and applications.
  • the data may be stored in cloud clipboard storage 140 in step 224 .
  • any data that was previously stored may be replaced.
  • replaced data may be maintained and that the user be provided with the ability to view data that was stored in cloud clipboard storage 140 at different times.
  • Device 2 (and/or device 3 , 4 , etc.) monitors the cloud clipboard service 126 for changes in the data stored in the clipboard in step 230 .
  • the devices in the user's collection 102 may monitor the cloud clipboard service 126 continuously or periodically for changes in the data stored in the cloud clipboard storage 140 .
  • the cloud clipboard service 126 may automatically push new data down to the connected computing devices in the user's collection 102 upon a change of data in cloud clipboard storage 140 .
  • the cloud clipboard service 126 first checks if a given device is permitted and is configured to receive data from the cloud clipboard service in step 228 . If a device is not configured to receive data from the cloud clipboard service 126 then nothing is sent (step 234 ).
  • a given device in a user's collection 102 is approved and configured to receive data from the cloud clipboard service in step 228 , that data is downloaded to the device in step 232 .
  • the client clipboard application 156 on the receiving device replaces any existing data in a local clipboard buffer 150 with the data received from the cloud clipboard service 126 in step 236 .
  • the received data may be pasted into any of a variety of device level applications 152 using a conventional paste operation.
  • data on one device may be automatically propagated to all the devices in a user's collection of computing devices having a continuous or intermittent connection with service 120 .
  • data from any of the devices in a user's collection of computing devices may be propagated as described above.
  • device 1 of FIGS. 2 and 3 may similarly receive data from cloud clipboard service 126 from one or more of the other computing devices in the collection.
  • the service 126 will maintain security and privacy rules protecting the content of the clipboard, based on the user settings entered for example via the configuration utility 158 .
  • a user is able to propagate data from one device to one or more other devices in the user's own collection of computing devices.
  • a user may propagate data from one of his or her computing devices to the computing devices of one or more other users. Such an embodiment is shown in the block diagram of FIG. 4 and described below with respect to the flowchart of FIG. 5 .
  • FIG. 4 is similar to FIG. 2 , with the exception that the user 1 shown on FIG. 4 is a device from the collection 102 of user 1 ; and user 2 , user 3 and user 4 are computing devices from the collections of user 2 , user 3 and user 4 , respectively.
  • the system may include greater or fewer numbers of computing devices in further embodiments.
  • a user may configure the cloud clipboard service 126 via configuration utility 158 as described above.
  • a user may further set permissions specifying which other users may receive data from user 1 via the cloud clipboard service.
  • FIG. 5 shows a system where data from a computing device of user 1 is propagated through the cloud clipboard service 126 to the computing device of a user x, which may be any of the users 2 , 3 , 4 , etc.
  • the user x may also configure his or her system and set permissions to receive data of user 1 via the cloud clipboard service 126 .
  • the cloud clipboard service 126 may operate to transfer data from user 1 to user x when there is two-way confirmation to send and receive data. That is, data is propagated from user 1 to user x when user 1 has set permissions to send clipboard data to user x, and when user x has set permissions to receive clipboard data from user 1 .
  • user 1 and/or user x may contact service 120 directly to configure the cloud clipboard service 126 in a step 258 .
  • the client clipboard application 156 of a device of user 1 may look for a local cut or copy operation as described above. If one is found, the system checks in step 264 if it is a special “copy to” operation.
  • a client clipboard application 156 may allow a user to perform a special cut or copy operation where the user is given the option not only to copy data but also to specify to whom the data is to be sent.
  • the recipient may be a single user, multiple users, or a defined group of users.
  • the identities of the users and user groups may be made by the users and stored in account records 134 in data structure 130 of service 120 .
  • step 264 the client clipboard application 156 of user 1 senses whether user 1 is performing a special copy operation. If not, the client clipboard application performs a data propagation across his or her own devices only, as described above with respect to the flowchart of FIG. 3 (the system may perform from step 214 of FIG. 3 onward). On the other hand, if it is determined that step 384 had the user performing a special “copy to” operation, the client clipboard application 156 may upload the content, metadata and recipient list to cloud clipboard service 126 in step 268 . Upon receipt, the cloud clipboard service 126 may format the data (step 272 ) and store the data (step 276 ) as described above. In a special “copy to” operation, the data may be propagated to the user's other computing devices in his collection (per the flowchart of FIG. 3 ) in addition to being sent to the specified recipients.
  • the client clipboard application 156 on the computing device of user x may check for updates in the cloud clipboard storage 140 .
  • the cloud clipboard service 126 may check in a step 280 whether user x device is specified and has permission to receive data from user 1 via the cloud clipboard service 126 . If not, data is not sent to the user x device (step 288 ).
  • the cloud clipboard service 126 writes the data to the cloud clipboard storage 140 for user x in step 282 and downloads the data in step 286 to the client clipboard application 156 in user x's collection of computing devices.
  • the client clipboard application 156 on user x's computing devices updates the local clipboard buffer 150 on each such device. Thereafter, user x may paste the data from local clipboard buffer 150 into an application from any device in user x's collection of computing devices.
  • FIG. 6 is an embodiment illustrating copy and paste operations in a natural user interface (NUI) system.
  • NUI natural user interface
  • the NUI system of FIG. 6 includes a target recognition, analysis, and tracking system 300 which may be used to recognize, analyze, and/or track a human target such as the user 318 .
  • Embodiments of the target recognition, analysis, and tracking system 300 include a computing environment 312 for executing a gaming or other application.
  • the computing environment 312 may include hardware components and/or software components such that computing environment 312 may be used to execute applications such as gaming and non-gaming applications.
  • Computing environment further includes a client clipboard application 156 associated with a local clipboard buffer 150 as described above.
  • computing environment 312 may include a processor such as a standardized processor, a specialized processor, a microprocessor, or the like that may execute instructions stored on a processor readable storage device for performing processes described herein.
  • the system 300 further includes a capture device 320 for capturing image and audio data relating to one or more users and/or objects sensed by the capture device.
  • the capture device 320 may include a three-dimensional depth camera and a video camera such as an RGB camera to capture depth data and color and texture data related to a captured schene.
  • the capture device 320 may be used to capture information relating to movements, gestures and speech of one or more users, which information is received by the computing environment and used to render, interact with and/or control aspects of a gaming or other application.
  • Embodiments of the target recognition, analysis and tracking system 300 may be connected to an audio/visual device 316 having a display 314 .
  • the device 316 may for example be a television, a monitor, a high-definition television (HDTV), or the like that may provide game or application visuals and/or audio to a user.
  • the computing environment 312 may include a video adapter such as a graphics card and/or an audio adapter such as a sound card that may provide audio/visual signals associated with the game or other application.
  • the audio/visual device 316 may receive the audio/visual signals from the computing environment 312 and may then output the game or application visuals and/or audio associated with the audio/visual signals to the user 318 .
  • the audio/visual device 316 may be connected to the computing environment 312 via, for example, an S-Video cable, a coaxial cable, an HDMI cable, a DVI cable, a VGA cable, a component video cable, or the like.
  • the system 300 may be used to interpret user 318 movements as operating system and/or application controls that are outside the realm of games or the specific application running on computing environment 312 .
  • a user may scroll through and control interaction with a variety of menu options presented on the display 314 .
  • Virtually any controllable aspect of an operating system and/or application may be controlled by the movements of the user 318 .
  • the user may perform movements that copy data objects to a local data buffer 150 (not shown in FIG. 6 ) by “placing” the data objects on a graphical representation 322 of a clipboard.
  • FIG. 6 illustrates an example including a number of data objects 320 on display 314 .
  • Data objects 320 shown may for example be gaming or other applications, but it is understood that data objects 320 may be any of a variety of other data including for example text, audio files, directories, etc.
  • a user may select one or more of the data objects 320 by pointing at the object with his hand, and then indicating selection of the object by performing a grabbing motion with his hand. This may be interpreted as a system command indicating the user wishes to copy the selected data object.
  • the user 318 may add a selected graphical object 320 to the local clipboard buffer 150 within computing system 312 .
  • the user may accomplish this by moving his hand so as to move one or more of the data objects 320 on the screen over to graphical clipboard 322 .
  • This display may for example show the selected object moving toward the graphical clipboard 322 with a variety of visual effects.
  • This motion may add the selected data object 320 to local clipboard buffer 150 on system 312 .
  • a client clipboard application 156 on system 312 may then upload the data object to cloud clipboard service 126 as explained above.
  • data from another device from user 318 may be downloaded to system 312 , whereupon the client clipboard application 156 within system 312 moves that data to the local clipboard buffer 150 .
  • a user may then paste that data, for example onto display 314 , by “grabbing” the data from clipboard 322 and, upon further movement of his hand, place that data somewhere on display 314 .
  • this data is graphical in nature it may then be pasted onto display 314 .
  • it may be played over speakers associated with the system 300 .
  • FIG. 7 illustrates an example of a suitable general computing system environment 500 that may comprise for example the desktop or laptop computing device 114 .
  • the computing system environment 500 is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the inventive system. Neither should the computing system environment 500 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary computing system environment 500 .
  • the inventive system is operational with numerous other general purpose or special purpose computing systems, environments or configurations.
  • Examples of well known computing systems, environments and/or configurations that may be suitable for use with the present system include, but are not limited to, personal computers, server computers, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, laptop and palm computers, hand held devices, distributed computing environments that include any of the above systems or devices, and the like.
  • an exemplary system for implementing the present technology includes a general purpose computing device in the form of a computer 510 .
  • Components of computer 510 may include, but are not limited to, a processing unit 520 , a system memory 530 , and a system bus 521 that couples various system components including the system memory to the processing unit 520 .
  • the system bus 521 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures.
  • such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus also known as Mezzanine bus.
  • ISA Industry Standard Architecture
  • MCA Micro Channel Architecture
  • EISA Enhanced ISA
  • VESA Video Electronics Standards Association
  • PCI Peripheral Component Interconnect
  • Computer 510 may include a variety of computer readable media.
  • Computer readable media can be any available media that can be accessed by computer 510 and includes both volatile and nonvolatile media, removable and non-removable media.
  • Computer readable media may comprise computer storage media and communication media.
  • Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data.
  • Computer storage media includes, but is not limited to, random access memory (RAM), read only memory (ROM), EEPROM, flash memory or other memory technology, CD-ROMs, digital versatile discs (DVDs) or other optical disc storage, magnetic cassettes, magnetic tapes, magnetic disc storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 510 .
  • Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media.
  • modulated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
  • communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above are also included within the scope of computer readable media.
  • the system memory 530 includes computer storage media in the form of volatile and/or nonvolatile memory such as ROM 531 and RAM 532 .
  • a basic input/output system (BIOS) 533 containing the basic routines that help to transfer information between elements within computer 510 , such as during start-up, is typically stored in ROM 531 .
  • RAM 532 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 520 .
  • FIG. 7 illustrates operating system 534 , application programs 535 , other program modules 536 , and program data 537 .
  • the computer 510 may also include other removable/non-removable, volatile/nonvolatile computer storage media.
  • FIG. 7 illustrates a hard disc drive 541 that reads from or writes to non-removable, nonvolatile magnetic media and a magnetic disc drive 551 that reads from or writes to a removable, nonvolatile magnetic disc 552 .
  • Computer 510 may further include an optical media reading device 555 to read and/or write to an optical media.
  • removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, DVDs, digital video tapes, solid state RAM, solid state ROM, and the like.
  • the hard disc drive 541 is typically connected to the system bus 521 through a non-removable memory interface such as interface 540
  • magnetic disc drive 551 and optical media reading device 555 are typically connected to the system bus 521 by a removable memory interface, such as interface 550 .
  • hard disc drive 541 is illustrated as storing operating system 544 , application programs 545 , other program modules 546 , and program data 547 . These components can either be the same as or different from operating system 534 , application programs 535 , other program modules 536 , and program data 537 . Operating system 544 , application programs 545 , other program modules 546 , and program data 547 are given different numbers here to illustrate that, at a minimum, they are different copies.
  • a user may enter commands and information into the computer 510 through input devices such as a keyboard 562 and a pointing device 561 , commonly referred to as a mouse, trackball or touch pad.
  • Other input devices may include a microphone, joystick, game pad, satellite dish, scanner, or the like.
  • These and other input devices are often connected to the processing unit 520 through a user input interface 560 that is coupled to the system bus 521 , but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB).
  • a monitor 591 or other type of display device is also connected to the system bus 521 via an interface, such as a video interface 590 .
  • computers may also include other peripheral output devices such as speakers 597 and printer 596 , which may be connected through an output peripheral interface 595 .
  • the computer 510 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 580 .
  • the remote computer 580 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 510 , although only a memory storage device 581 has been illustrated in FIG. 7 .
  • the logical connections depicted in FIG. 7 include a local area network (LAN) 571 and a wide area network (WAN) 573 , but may also include other networks.
  • LAN local area network
  • WAN wide area network
  • Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
  • the computer 510 When used in a LAN networking environment, the computer 510 is connected to the LAN 571 through a network interface or adapter 570 .
  • the computer 510 When used in a WAN networking environment, the computer 510 typically includes a modem 572 or other means for establishing communication over the WAN 573 , such as the Internet.
  • the modem 572 which may be internal or external, may be connected to the system bus 521 via the user input interface 560 , or other appropriate mechanism.
  • program modules depicted relative to the computer 510 may be stored in the remote memory storage device.
  • FIG. 7 illustrates remote application programs 585 as residing on memory device 581 . It will be appreciated that the network connections shown are exemplary and other means of establishing a communication link between the computers may be used.
  • FIG. 8 is a functional block diagram of gaming and media system 600 , and shows functional components of gaming and media system 600 in more detail.
  • System 600 may be the same as the computing device 116 described above.
  • Console 602 has a central processing unit (CPU) 700 , and a memory controller 702 that facilitates processor access to various types of memory, including a flash Read Only Memory (ROM) 704 , a Random Access Memory (RAM) 706 , a hard disk drive 708 , and portable media drive 606 .
  • CPU 700 includes a level 1 cache 710 and a level 2 cache 712 , to temporarily store data and hence reduce the number of memory access cycles made to the hard drive 708 , thereby improving processing speed and throughput.
  • bus 700 CPU 700 , memory controller 702 , and various memory devices are interconnected via one or more buses (not shown).
  • the details of the bus that is used in this implementation are not particularly relevant to understanding the subject matter of interest being discussed herein.
  • a bus might include one or more of serial and parallel buses, a memory bus, a peripheral bus, and a processor or local bus, using any of a variety of bus architectures.
  • bus architectures can include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnects (PCI) bus also known as a Mezzanine bus.
  • ISA Industry Standard Architecture
  • MCA Micro Channel Architecture
  • EISA Enhanced ISA
  • VESA Video Electronics Standards Association
  • PCI Peripheral Component Interconnects
  • CPU 700 memory controller 702 , ROM 704 , and RAM 706 are integrated onto a common module 714 .
  • ROM 704 is configured as a flash ROM that is connected to memory controller 702 via a PCI bus and a ROM bus (neither of which are shown).
  • RAM 706 is configured as multiple Double Data Rate Synchronous Dynamic RAM (DDR SDRAM) modules that are independently controlled by memory controller 702 via separate buses (not shown).
  • Hard disk drive 708 and portable media drive 606 are shown connected to the memory controller 702 via the PCI bus and an AT Attachment (ATA) bus 716 .
  • ATA AT Attachment
  • dedicated data bus structures of different types can also be applied in the alternative.
  • a three-dimensional graphics processing unit 720 and a video encoder 722 form a video processing pipeline for high speed and high resolution (e.g., High Definition) graphics processing.
  • Data are carried from graphics processing unit 720 to video encoder 722 via a digital video bus (not shown).
  • An audio processing unit 724 and an audio codec (coder/decoder) 726 form a corresponding audio processing pipeline for multi-channel audio processing of various digital audio formats. Audio data are carried between audio processing unit 724 and audio codec 726 via a communication link (not shown).
  • the video and audio processing pipelines output data to an A/V (audio/video) port 728 for transmission to a television or other display.
  • video and audio processing components 720 - 728 are mounted on module 714 .
  • FIG. 8 shows module 714 including a USB host controller 730 and a network interface 732 .
  • USB host controller 730 is shown in communication with CPU 700 and memory controller 702 via a bus (e.g., PCI bus) and serves as host for peripheral controllers 604 ( 1 )- 604 ( 4 ).
  • Network interface 732 provides access to a network (e.g., Internet, home network, etc.) and may be any of a wide variety of various wired or wireless interface components including an Ethernet card, a modem, a wireless access card, a Bluetooth module, a cable modem, and the like.
  • console 602 includes a controller support subassembly 740 for supporting four controllers 604 ( 1 )- 604 ( 4 ).
  • the controller support subassembly 740 includes any hardware and software components needed to support wired and wireless operation with an external control device, such as for example, a media and game controller.
  • a front panel I/O subassembly 742 supports the multiple functionalities of power button 612 , the eject button 614 , as well as any LEDs (light emitting diodes) or other indicators exposed on the outer surface of console 602 .
  • Subassemblies 740 and 742 are in communication with module 714 via one or more cable assemblies 744 .
  • console 602 can include additional controller subassemblies.
  • the illustrated implementation also shows an optical I/O interface 735 that is configured to send and receive signals that can be communicated to module 714 .
  • MUs 640 ( 1 ) and 640 ( 2 ) are illustrated as being connectable to MU ports “A” 630 ( 1 ) and “B” 630 ( 2 ) respectively. Additional MUs (e.g., MUs 640 ( 3 )- 640 ( 6 )) are illustrated as being connectable to controllers 604 ( 1 ) and 604 ( 3 ), i.e., two MUs for each controller. Controllers 604 ( 2 ) and 604 ( 4 ) can also be configured to receive MUs (not shown). Each MU 640 offers additional storage on which games, game parameters, and other data may be stored.
  • the other data can include any of a digital game component, an executable gaming application, an instruction set for expanding a gaming application, and a media file.
  • MU 640 can be accessed by memory controller 702 .
  • a system power supply module 750 provides power to the components of gaming and media system 600 .
  • a fan 752 cools the circuitry within console 602 .
  • An application 760 comprising machine instructions is stored on hard disk drive 708 .
  • various portions of application 760 are loaded into RAM 706 , and/or caches 710 and 712 , for execution on CPU 700 , wherein application 760 is one such example.
  • Various applications can be stored on hard disk drive 708 for execution on CPU 700 .
  • Gaming and media system 600 may be operated as a standalone system by simply connecting the system to monitor 88 ( FIG. 1 ), a television, a video projector, or other display device. In this standalone mode, gaming and media system 600 enables one or more players to play games, or enjoy digital media, e.g., by watching movies, or listening to music. However, with the integration of broadband connectivity made available through network interface 732 , gaming and media system 600 may further be operated as a participant in a larger network gaming community.

Abstract

A system and method are disclosed for quickly and easily making data from one device available to other devices in a user's collection of computing devices. In one example, each of a user's computing devices includes a client-side clipboard application. A cloud clipboard service may be resident on a server to which each of the user's computing devices are operatively connected. Data from a local clipboard buffer on a user's computing device is automatically uploaded by the associated client-side clipboard application to the cloud clipboard service. Thereafter, the uploaded data it is automatically propagated to a user's other networked devices for use on those devices. Data from one user uploaded to the cloud clipboard service may also be propagated to the devices of one or more other users.

Description

    BACKGROUND
  • The current trend in computing is away from mainframe systems toward cloud computing. Cloud computing is Internet-based computing, whereby shared resources such as software and other information are provided to a variety of computing devices on-demand via the Internet. It represents a new consumption and delivery model for IT services where resources are available to all network-capable devices, as opposed to older network models where resources were stored locally across the devices. The move toward cloud computing opens up a new potential for mobile and other networked devices to work in conjunction with each other to provide greater interaction and a much richer experience with respect to third party and a user's own resources.
  • One advantage of cloud computing is that it offers enhanced connectivity between a user's various devices, such as for example smart phones, Internet-connected television or set-top boxes, laptops, netbooks, and desktop computers. Despite this enhanced connectivity, where a user wishes to transfer data such as a picture, document or a selection of text from one device to another, the user is still forced to perform a series of complex tasks to achieve this data transfer. These tasks may be time consuming and non-intuitive to perform.
  • SUMMARY
  • The technology, briefly described, comprises a system and method for quickly and easily making data from one computing device available to the other devices in a user's collection of computing devices. In one example, the system includes a client-side clipboard application on each device in a user's collection of computing devices. The client-side clipboard application may be a software module running as part of a computing device's operating system, or as an application in communication with the operating system. The system further includes a cloud clipboard service resident on a server to which each of the user's computing devices are operatively connected.
  • For each computing device in a user's collection of computing devices, the client-side clipboard application monitors a local clipboard buffer to which data may be copied by a user performing a known cut or copy operation on data in a device-level application. The data which may be copied in the present system may be any data which can be copied to a local clipboard buffer in any of a wide variety of applications, including text, graphics, files, directories, and links to such data. Upon a change in the data in the local clipboard buffer, the client-side clipboard application retrieves that data and pushes it to the cloud clipboard service to which the computing device is connected.
  • Thereafter, the data in the cloud clipboard service is transmitted to the client-side clipboard applications in the other computing devices in a user's collection. Upon receipt, the client-side clipboard application takes the received data and stores it in the associated local clipboard buffer, replacing data that may have been there previously. Thereafter, a user may perform a known paste operation from any of his networked computing devices to paste the data received from the cloud clipboard service into one or more device-level applications.
  • In this way, data from one computing device may be easily propagated to other devices in a user's collection of devices. In a further embodiment, a similar system may be used to propagate data from one user's device to the devices of others in a friend network where permissions have been properly set.
  • In one example, the present technology relates to a method of propagating data between multiple computing devices, comprising: a) monitoring a local clipboard buffer of a first computing device of the multiple computing devices for a change in data stored in the local clipboard buffer; b) transmitting data from the local clipboard buffer of the first computing device to a storage location on a remote server to which the first computing device is operatively coupled upon detecting a change in the data stored in the local clipboard buffer of the first device; and c) propagating the data stored in the storage location in said step b) to a local clipboard buffer of a second computing device operatively coupled to the remote server.
  • In another example, the present technology relates to a system for propagating data between computing devices. The system includes: a first computing device including: a first application including data, a first local clipboard buffer capable of storing data copied to the first local clipboard buffer from the first application, and a first client clipboard application for synchronizing with the first local clipboard buffer and forwarding the data in the first local clipboard buffer to a remote location; a service at the remote location, the service including: a data store for storing the data from the first client clipboard application; and a second computing device operative coupled to the service at the remote location, the second computing device including: a second client clipboard application for synchronizing with the data store in the service at the remote location, a second local clipboard buffer, the second client clipboard application forwarding data received from the data store to the second local clipboard buffer, data in the second local clipboard buffer being replaced with data received from the second client clipboard application, and a second application, data from the second local clipboard buffer capable of being pasted into the application.
  • In a further example, the present technology relates to a computer-readable storage medium for programming a processor to perform a method of propagating data between a collection of computing devices of a single user. The performed method comprising: a) synchronizing a local clipboard buffer of a first computing device of a collection of computing devices of the single user to a first client clipboard application on the first computing device; b) transmitting data from the local clipboard buffer of the first computing device to a storage location on a remote server to which the first computing device is operatively coupled upon detecting a change in the data stored in the local clipboard buffer of the first device; and c) propagating the data stored in the storage location in said step b) to local clipboard buffers of a plurality of computing devices in the user's collection of computing devices that are operatively coupled to the remote server.
  • This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is an illustration of a network architecture for implementing an embodiment of the present technology.
  • FIG. 2 is a block diagram of client-side and server-side components for implementing the present technology.
  • FIG. 3 is a flowchart for implementing an embodiment of the present system shown in FIG. 2.
  • FIG. 4 is a block diagram of client-side and server-side components for implementing an alternative embodiment of the present technology.
  • FIG. 5 is a flowchart for implementing the alternative embodiment of the present system shown in FIG. 4.
  • FIG. 6 is an illustration of an example for copying and pasting data in a natural user interface.
  • FIG. 7 is a block diagram of an exemplary computing environment.
  • FIG. 8 is a block diagram of an exemplary gaming console.
  • DETAILED DESCRIPTION
  • Embodiments of the present technology will now be described with reference to FIGS. 1 through 8, which in general relate to a system and method for quickly and easily making data from one device available to other devices in a user's collection of computing devices. In one example, the system includes a client-side clipboard application, which is a software module running as part of a computing device's operating system, or as an application in communication with the operating system, on each device in a user's collection of computing devices. The system further includes a cloud clipboard service resident on a server to which each of the user's computing devices is operatively connected.
  • A user may perform cut, copy and paste operations which are known for copying data to a local clipboard buffer and retrieving data from a local clipboard buffer. However, in accordance with the present system, any cut or copied data may also be automatically uploaded to the cloud clipboard service, whereupon it is automatically propagated to a user's other networked devices for use on those devices. In embodiments, data from one user uploaded to the cloud clipboard service may also be propagated to the devices of one or more other users. These principals and others of the present technology are explained below in greater detail.
  • FIG. 1 shows a block diagram of a sample network topology 100 for implementing the present technology. Network topology 100 includes a collection 102 of computing devices 112, 114, 116. These computing devices form part or all of a collection of computing devices belonging to a single user 110 and operatively coupled to a service 120 via a network 124. In one example, computing device 112 may be a mobile telephone of a mobile telephone network, computing device 114 may be a personal computer such as a desktop computer, laptop computer or tablet, and computing device 116 may be a set-top box or game console having an associated display 118. Example embodiments of these computing devices are set forth below with respect to FIGS. 7 and 8.
  • Each of the various types of computing devices may store their data locally and “in the cloud,” for example on a storage location 130 in service 120 as explained below. The computing devices 112, 114, 116 shown in FIG. 1 are by way of example only and one or more of these may be omitted in further embodiments. Moreover, the user 110 may have a variety of other computing devices, or additional replicas of the computing devices 112, 114, 116, in his or her collection 102 of computing devices in further embodiments. Such computing devices may in general include, but are not limited to, desktop computers, laptop computers, tablets, cellular telephones, televisions/set top boxes, video game consoles, netbooks, automobiles, cameras and smart appliances. Other computing devices are contemplated.
  • The service 120 may for example be a large scale Internet service provider such as for example MSN® services or Xbox LIVE® gaming services, though it need not be in further embodiments. Service 120 may have one or more servers including one implementing a cloud-based clipboard service 126 as explained below. Service 120 may include other servers including for example a web server, a game server supporting gaming applications, a media server for organizing and distributing selected media, and/or an ftp server supporting file transfer and/or other types of servers. Other servers are contemplated.
  • In embodiments, each of the computing devices illustrated in FIG. 1 may be coupled to each other via one or more public or private networks 124. Network 124 may include the Internet, cellular networks, or any other type of known public or private data and/or voice transfer network. In further embodiments, computing devices 112, 114, 116 may be connected to each other by peer-to-peer connections in addition to, or instead of, their connection to network 124.
  • The service 120 also provides a collection of services which applications running on computing devices 112, 114, 116 may invoke and utilize. For example, computing devices 112, 114, 116 may invoke user login service 132, which is used to authenticate the user 110 seeking access to his or her secure resources from service 120. A user 110 may authenticate him or herself to the service 120 by a variety of authentication protocols, including for example with an ID such as a username and a password.
  • Where authentication is performed by the service 120, the ID and password may be stored in user account records 134 within a data structure 130. Data structure 130 may further include a cloud clipboard storage location 140 for storing a wide variety of clipboard data as explained below. While the cloud clipboard service 126, data structure 130 and login service 132 are shown as part of a single service 120, some or all of these components may be distributed across different services in further embodiments.
  • Referring now to the block diagram of FIG. 2, there is shown the service 120 including cloud clipboard service 126 and cloud clipboard storage 140. The service 126 may be operatively coupled via network 124 to the computing devices in a user's collection 102 of computing devices. In the description below, the transfer of data from a device 1 to devices 2, 3 and 4, etc. is described. It is understood that there may be greater or fewer computing devices than shown in FIG. 2. Moreover, any of the computing devices in a user's collection of computing devices can occupy the position of device 1 to allow data from that device to be quickly and easily propagated to other devices in the user's collection of computing devices. Aspects of computing device 1 related to the present system are explained below. It is understood that each of the other devices 2, 3, 4, etc. may include the same components.
  • Device 1 includes a local clipboard buffer 150 receiving data from and sending data to one or more device-level applications 152 on device 1. Local clipboard buffer 150 may be a block of memory in the random access memory (RAM) of device 1. Data may be written to local clipboard buffer 150 via different user interface commands commonly referred to as cut and/or copy operations. Different user interfaces will have different forms of these commands.
  • In one common example, operating systems working with a keyboard could recognize a keyboard stroke shortcut of “Ctrl-x” to cut selected data objects, whereupon they are copied to the local clipboard buffer 150, and “Ctrl-c” to copy selected data objects to the local clipboard buffer 150. Such systems typically also recognize a shortcut keystroke of “Ctrl-v” to paste objects stored in local clipboard buffer 150 to a device-level application 152. FIG. 6, described below, shows a further embodiment for copying and pasting data objects in a natural user interface. Further details relating to the configuration and operation of a conventional local clipboard buffer are described for example in Microsoft developer network documents found for example at http://msdn.microsoft.com\en-us\library\ms648709(VS.85).aspx and links sited therein, which documents are incorporated by reference herein in their entirety.
  • Each device may further include a client clipboard application 156 which may be a software module or a combination of hardware and software running on device 1. The client clipboard application may be part of the device's operating system, or may be an application in communication with the operating system. Client clipboard application 156 may monitor and synchronize with the local clipboard buffer 150 so that, upon a change in the data stored in local clipboard buffer 150, the client clipboard application automatically receives this data. The client clipboard application 156 may then automatically forward the received data to cloud clipboard service 126.
  • Client clipboard application 156 may monitor local clipboard buffer 150 continuously, or periodically. Alternatively, the local clipboard buffer 150 may be modified to push data from the buffer to client clipboard application 156 upon a change in the data in the local clipboard buffer 150. The type of data which can be forwarded by the client clipboard application 156 to the cloud clipboard service 126 may be any type of data which can be stored in a local clipboard buffer 150 in any application 152 running on device 1. This data may for example include text, graphics, one or more files, one or more file directories, and links to such data. Different applications 152 may have different types of data which it can operate with and store in local clipboard buffer 150. Client clipboard application 156 may receive any type of data from buffer 150 and forward it to cloud clipboard service 126.
  • Each user device may further include a configuration utility 158 allowing a user to configure aspects of the cloud-based clipboard service. The utility 158 may present a user interface through which a user can configure a desired implementation of the present system. The utility 158 may for example allow a user to define each of his or her devices which are to be included in the cloud-based clipboard service, as well as to provide logon credentials authenticating the user to his or her collection of computing devices. In this respect, the configuration utility may interact with the user logon service 132 described above. User login information may be cached so that a user need not enter login credentials each time a user uses the cloud-based clipboard service.
  • The user may set a variety of other user preferences via the configuration utility 158. In embodiments, the user may choose which types of data should be shared, which data connection to prioritize (e.g., on a phone, the user might prefer to use a wi-fi over a data-plan connection if both are available), which applications are excluded from the shared clipboard, and possibly configure conversion rules for data formats (for example, all images should be converted to jpeg format). Other configurations are possible via configuration utility 158.
  • Each of devices 1, 2, 3, 4, etc., may include a local clipboard buffer 150, applications 152, client clipboard application 156 and utility application 158 as described above.
  • An operation of the system shown in FIG. 2 will now be described with reference to the flowchart of FIG. 3. In step 200, a user of the device 1 may configure the device as described above in the preceding paragraph. A user may use any of the devices in his or her collection 102 to configure the system, such as for example alternatively using device 2 to configure the system in step 204. As a further alternative, a user may access service 120 directly, and configure the system through interaction with the service 120 in a step 208.
  • In step 210, the client clipboard application 156 monitors the local clipboard buffer 150 for a cut or copy operation that causes data to be copied to the local clipboard buffer 150. Upon detecting new data in a local clipboard buffer 150, the client clipboard application 156 uploads the new data to cloud service 126 in step 214. In step 214, the client clipboard application 156 may additionally upload metadata associated with the data to be propagated. In particular, the metadata may include the type of device that generated the data, the application on the device which generated the data, the type of data (text, graphics, video, html) and a time stamp at which the data was copied to the local clipboard buffer 150 on the device. All this data and metadata may be sent to the cloud clipboard service 126 in step 214.
  • In step 220, the cloud clipboard service 126 may format the data to maximize its usability across different devices and different applications. Formatting step 220 may in examples include the step of stripping out formatting of the data uploaded in step 214. The data may be formatted per user preferences set forth via the configuration utility 158, or a default set of rules directed at optimizing the possibility that the stored data may be viewed on a maximum number of devices and in a maximum number of applications on those devices. In embodiments, multiple versions of the data may be generated in step 220, with each version having a different format to again maximize the usability of the data across different devices and applications. After formatting in step 220, the data may be stored in cloud clipboard storage 140 in step 224.
  • As in conventional local clipboard buffers, when new data is stored in cloud clipboard storage 140 in step 224, any data that was previously stored may be replaced. In embodiments, it is conceivable that replaced data may be maintained and that the user be provided with the ability to view data that was stored in cloud clipboard storage 140 at different times.
  • Device 2 (and/or device 3, 4, etc.) monitors the cloud clipboard service 126 for changes in the data stored in the clipboard in step 230. The devices in the user's collection 102 may monitor the cloud clipboard service 126 continuously or periodically for changes in the data stored in the cloud clipboard storage 140. In an alternative embodiment, instead of devices checking the cloud clipboard service 126 for changes in stored data and pulling data down, the cloud clipboard service 126 may automatically push new data down to the connected computing devices in the user's collection 102 upon a change of data in cloud clipboard storage 140.
  • Whether initiated by the client-side clipboard application or server-side clipboard service, when new data is to be propagated to other devices in a user's collection 102, the cloud clipboard service 126 first checks if a given device is permitted and is configured to receive data from the cloud clipboard service in step 228. If a device is not configured to receive data from the cloud clipboard service 126 then nothing is sent (step 234).
  • On the other hand, if a given device in a user's collection 102 is approved and configured to receive data from the cloud clipboard service in step 228, that data is downloaded to the device in step 232. Upon receipt, the client clipboard application 156 on the receiving device replaces any existing data in a local clipboard buffer 150 with the data received from the cloud clipboard service 126 in step 236. Thereafter, the received data may be pasted into any of a variety of device level applications 152 using a conventional paste operation.
  • Using the above-described system, data on one device may be automatically propagated to all the devices in a user's collection of computing devices having a continuous or intermittent connection with service 120. As noted above, data from any of the devices in a user's collection of computing devices may be propagated as described above. Thus, device 1 of FIGS. 2 and 3 may similarly receive data from cloud clipboard service 126 from one or more of the other computing devices in the collection. The service 126 will maintain security and privacy rules protecting the content of the clipboard, based on the user settings entered for example via the configuration utility 158.
  • In the embodiments described above, a user is able to propagate data from one device to one or more other devices in the user's own collection of computing devices. In a further embodiment of the present system, a user may propagate data from one of his or her computing devices to the computing devices of one or more other users. Such an embodiment is shown in the block diagram of FIG. 4 and described below with respect to the flowchart of FIG. 5.
  • FIG. 4 is similar to FIG. 2, with the exception that the user 1 shown on FIG. 4 is a device from the collection 102 of user 1; and user 2, user 3 and user 4 are computing devices from the collections of user 2, user 3 and user 4, respectively. As above, it is understood that the system may include greater or fewer numbers of computing devices in further embodiments. Referring now to the flowchart of FIG. 5, in step 250, a user may configure the cloud clipboard service 126 via configuration utility 158 as described above. In addition to the permissions and user preferences described above, a user may further set permissions specifying which other users may receive data from user 1 via the cloud clipboard service.
  • FIG. 5 shows a system where data from a computing device of user 1 is propagated through the cloud clipboard service 126 to the computing device of a user x, which may be any of the users 2, 3, 4, etc. In step 254, the user x may also configure his or her system and set permissions to receive data of user 1 via the cloud clipboard service 126. The cloud clipboard service 126 may operate to transfer data from user 1 to user x when there is two-way confirmation to send and receive data. That is, data is propagated from user 1 to user x when user 1 has set permissions to send clipboard data to user x, and when user x has set permissions to receive clipboard data from user 1. As discussed above, user 1 and/or user x may contact service 120 directly to configure the cloud clipboard service 126 in a step 258.
  • In step 260, the client clipboard application 156 of a device of user 1 may look for a local cut or copy operation as described above. If one is found, the system checks in step 264 if it is a special “copy to” operation. In particular, a client clipboard application 156 may allow a user to perform a special cut or copy operation where the user is given the option not only to copy data but also to specify to whom the data is to be sent. The recipient may be a single user, multiple users, or a defined group of users. The identities of the users and user groups may be made by the users and stored in account records 134 in data structure 130 of service 120.
  • In step 264, the client clipboard application 156 of user 1 senses whether user 1 is performing a special copy operation. If not, the client clipboard application performs a data propagation across his or her own devices only, as described above with respect to the flowchart of FIG. 3 (the system may perform from step 214 of FIG. 3 onward). On the other hand, if it is determined that step 384 had the user performing a special “copy to” operation, the client clipboard application 156 may upload the content, metadata and recipient list to cloud clipboard service 126 in step 268. Upon receipt, the cloud clipboard service 126 may format the data (step 272) and store the data (step 276) as described above. In a special “copy to” operation, the data may be propagated to the user's other computing devices in his collection (per the flowchart of FIG. 3) in addition to being sent to the specified recipients.
  • In step 278, the client clipboard application 156 on the computing device of user x may check for updates in the cloud clipboard storage 140. Upon an update, the cloud clipboard service 126 may check in a step 280 whether user x device is specified and has permission to receive data from user 1 via the cloud clipboard service 126. If not, data is not sent to the user x device (step 288).
  • On the other hand, if the permissions from user 1 and user x are such that user x may receive data from user 1 via the cloud clipboard service 126, the cloud clipboard service 126 writes the data to the cloud clipboard storage 140 for user x in step 282 and downloads the data in step 286 to the client clipboard application 156 in user x's collection of computing devices. In step 292, the client clipboard application 156 on user x's computing devices updates the local clipboard buffer 150 on each such device. Thereafter, user x may paste the data from local clipboard buffer 150 into an application from any device in user x's collection of computing devices.
  • As noted above, cut, copy and paste operations are well-known when performed using a keyboard and/or mouse user interactive devices. FIG. 6 is an embodiment illustrating copy and paste operations in a natural user interface (NUI) system. In general, the NUI system of FIG. 6 includes a target recognition, analysis, and tracking system 300 which may be used to recognize, analyze, and/or track a human target such as the user 318. Embodiments of the target recognition, analysis, and tracking system 300 include a computing environment 312 for executing a gaming or other application. The computing environment 312 may include hardware components and/or software components such that computing environment 312 may be used to execute applications such as gaming and non-gaming applications. Computing environment further includes a client clipboard application 156 associated with a local clipboard buffer 150 as described above. In one embodiment, computing environment 312 may include a processor such as a standardized processor, a specialized processor, a microprocessor, or the like that may execute instructions stored on a processor readable storage device for performing processes described herein.
  • The system 300 further includes a capture device 320 for capturing image and audio data relating to one or more users and/or objects sensed by the capture device. The capture device 320 may include a three-dimensional depth camera and a video camera such as an RGB camera to capture depth data and color and texture data related to a captured schene. In embodiments, the capture device 320 may be used to capture information relating to movements, gestures and speech of one or more users, which information is received by the computing environment and used to render, interact with and/or control aspects of a gaming or other application.
  • Embodiments of the target recognition, analysis and tracking system 300 may be connected to an audio/visual device 316 having a display 314. The device 316 may for example be a television, a monitor, a high-definition television (HDTV), or the like that may provide game or application visuals and/or audio to a user. For example, the computing environment 312 may include a video adapter such as a graphics card and/or an audio adapter such as a sound card that may provide audio/visual signals associated with the game or other application. The audio/visual device 316 may receive the audio/visual signals from the computing environment 312 and may then output the game or application visuals and/or audio associated with the audio/visual signals to the user 318. According to one embodiment, the audio/visual device 316 may be connected to the computing environment 312 via, for example, an S-Video cable, a coaxial cable, an HDMI cable, a DVI cable, a VGA cable, a component video cable, or the like.
  • The system 300 may be used to interpret user 318 movements as operating system and/or application controls that are outside the realm of games or the specific application running on computing environment 312. As one example, a user may scroll through and control interaction with a variety of menu options presented on the display 314. Virtually any controllable aspect of an operating system and/or application may be controlled by the movements of the user 318. For example, in accordance with the present technology, the user may perform movements that copy data objects to a local data buffer 150 (not shown in FIG. 6) by “placing” the data objects on a graphical representation 322 of a clipboard.
  • In particular, FIG. 6 illustrates an example including a number of data objects 320 on display 314. Data objects 320 shown may for example be gaming or other applications, but it is understood that data objects 320 may be any of a variety of other data including for example text, audio files, directories, etc. In one embodiment, a user may select one or more of the data objects 320 by pointing at the object with his hand, and then indicating selection of the object by performing a grabbing motion with his hand. This may be interpreted as a system command indicating the user wishes to copy the selected data object.
  • Thereafter, the user 318 may add a selected graphical object 320 to the local clipboard buffer 150 within computing system 312. The user may accomplish this by moving his hand so as to move one or more of the data objects 320 on the screen over to graphical clipboard 322. This display may for example show the selected object moving toward the graphical clipboard 322 with a variety of visual effects. This motion may add the selected data object 320 to local clipboard buffer 150 on system 312. A client clipboard application 156 on system 312 may then upload the data object to cloud clipboard service 126 as explained above.
  • Similarly, data from another device from user 318 (or another user) may be downloaded to system 312, whereupon the client clipboard application 156 within system 312 moves that data to the local clipboard buffer 150. A user may then paste that data, for example onto display 314, by “grabbing” the data from clipboard 322 and, upon further movement of his hand, place that data somewhere on display 314. It is understood that the above described system is by way of example only, and a wide variety of other NUI interface operations may be used to copy data from system 300 up to cloud clipboard service 126, and to download data from cloud clipboard service 126 to the system 300. Where this data is graphical in nature it may then be pasted onto display 314. Alternatively, for example where it is audio, it may be played over speakers associated with the system 300.
  • Suitable examples of a system 300 and components thereof are found in the following co-pending patent applications, all of which are hereby specifically incorporated by reference: U.S. patent application Ser. No. 12/475,094, entitled “Environment and/or Target Segmentation,” filed May 29, 2009; U.S. patent application Ser. No. 12/511,850, entitled “Auto Generating a Visual Representation,” filed Jul. 29, 2009; U.S. patent application Ser. No. 12/474,655, entitled “Gesture Tool,” filed May 29, 2009; U.S. patent application Ser. No. 12/603,437, entitled “Pose Tracking Pipeline,” filed Oct. 21, 2009; U.S. patent application Ser. No. 12/475,308, entitled “Device for Identifying and Tracking Multiple Humans Over Time,” filed May 29, 2009; U.S. patent application Ser. No. 12/575,388, entitled “Human Tracking System,” filed Oct. 7, 2009; U.S. patent application Ser. No. 12/422,661, entitled “Gesture Recognizer System Architecture,” filed Apr. 13, 2009; U.S. patent application Ser. No. 12/391,150, entitled “Standard Gestures,” filed Feb. 23, 2009; and U.S. patent application Ser. No. 12/474,655, entitled “Gesture Tool,” filed May 29, 2009.
  • FIG. 7 illustrates an example of a suitable general computing system environment 500 that may comprise for example the desktop or laptop computing device 114. The computing system environment 500 is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the inventive system. Neither should the computing system environment 500 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary computing system environment 500.
  • The inventive system is operational with numerous other general purpose or special purpose computing systems, environments or configurations. Examples of well known computing systems, environments and/or configurations that may be suitable for use with the present system include, but are not limited to, personal computers, server computers, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, laptop and palm computers, hand held devices, distributed computing environments that include any of the above systems or devices, and the like.
  • With reference to FIG. 7, an exemplary system for implementing the present technology includes a general purpose computing device in the form of a computer 510. Components of computer 510 may include, but are not limited to, a processing unit 520, a system memory 530, and a system bus 521 that couples various system components including the system memory to the processing unit 520. The system bus 521 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus also known as Mezzanine bus.
  • Computer 510 may include a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 510 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, random access memory (RAM), read only memory (ROM), EEPROM, flash memory or other memory technology, CD-ROMs, digital versatile discs (DVDs) or other optical disc storage, magnetic cassettes, magnetic tapes, magnetic disc storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 510. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above are also included within the scope of computer readable media.
  • The system memory 530 includes computer storage media in the form of volatile and/or nonvolatile memory such as ROM 531 and RAM 532. A basic input/output system (BIOS) 533, containing the basic routines that help to transfer information between elements within computer 510, such as during start-up, is typically stored in ROM 531. RAM 532 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 520. By way of example, and not limitation, FIG. 7 illustrates operating system 534, application programs 535, other program modules 536, and program data 537.
  • The computer 510 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only, FIG. 7 illustrates a hard disc drive 541 that reads from or writes to non-removable, nonvolatile magnetic media and a magnetic disc drive 551 that reads from or writes to a removable, nonvolatile magnetic disc 552. Computer 510 may further include an optical media reading device 555 to read and/or write to an optical media.
  • Other removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, DVDs, digital video tapes, solid state RAM, solid state ROM, and the like. The hard disc drive 541 is typically connected to the system bus 521 through a non-removable memory interface such as interface 540, magnetic disc drive 551 and optical media reading device 555 are typically connected to the system bus 521 by a removable memory interface, such as interface 550.
  • The drives and their associated computer storage media discussed above and illustrated in FIG. 7, provide storage of computer readable instructions, data structures, program modules and other data for the computer 510. In FIG. 7, for example, hard disc drive 541 is illustrated as storing operating system 544, application programs 545, other program modules 546, and program data 547. These components can either be the same as or different from operating system 534, application programs 535, other program modules 536, and program data 537. Operating system 544, application programs 545, other program modules 546, and program data 547 are given different numbers here to illustrate that, at a minimum, they are different copies. A user may enter commands and information into the computer 510 through input devices such as a keyboard 562 and a pointing device 561, commonly referred to as a mouse, trackball or touch pad. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 520 through a user input interface 560 that is coupled to the system bus 521, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). A monitor 591 or other type of display device is also connected to the system bus 521 via an interface, such as a video interface 590. In addition to the monitor, computers may also include other peripheral output devices such as speakers 597 and printer 596, which may be connected through an output peripheral interface 595.
  • The computer 510 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 580. The remote computer 580 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 510, although only a memory storage device 581 has been illustrated in FIG. 7. The logical connections depicted in FIG. 7 include a local area network (LAN) 571 and a wide area network (WAN) 573, but may also include other networks. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
  • When used in a LAN networking environment, the computer 510 is connected to the LAN 571 through a network interface or adapter 570. When used in a WAN networking environment, the computer 510 typically includes a modem 572 or other means for establishing communication over the WAN 573, such as the Internet. The modem 572, which may be internal or external, may be connected to the system bus 521 via the user input interface 560, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 510, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation, FIG. 7 illustrates remote application programs 585 as residing on memory device 581. It will be appreciated that the network connections shown are exemplary and other means of establishing a communication link between the computers may be used.
  • FIG. 8 is a functional block diagram of gaming and media system 600, and shows functional components of gaming and media system 600 in more detail. System 600 may be the same as the computing device 116 described above. Console 602 has a central processing unit (CPU) 700, and a memory controller 702 that facilitates processor access to various types of memory, including a flash Read Only Memory (ROM) 704, a Random Access Memory (RAM) 706, a hard disk drive 708, and portable media drive 606. In one implementation, CPU 700 includes a level 1 cache 710 and a level 2 cache 712, to temporarily store data and hence reduce the number of memory access cycles made to the hard drive 708, thereby improving processing speed and throughput.
  • CPU 700, memory controller 702, and various memory devices are interconnected via one or more buses (not shown). The details of the bus that is used in this implementation are not particularly relevant to understanding the subject matter of interest being discussed herein. However, it will be understood that such a bus might include one or more of serial and parallel buses, a memory bus, a peripheral bus, and a processor or local bus, using any of a variety of bus architectures. By way of example, such architectures can include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnects (PCI) bus also known as a Mezzanine bus.
  • In one implementation, CPU 700, memory controller 702, ROM 704, and RAM 706 are integrated onto a common module 714. In this implementation, ROM 704 is configured as a flash ROM that is connected to memory controller 702 via a PCI bus and a ROM bus (neither of which are shown). RAM 706 is configured as multiple Double Data Rate Synchronous Dynamic RAM (DDR SDRAM) modules that are independently controlled by memory controller 702 via separate buses (not shown). Hard disk drive 708 and portable media drive 606 are shown connected to the memory controller 702 via the PCI bus and an AT Attachment (ATA) bus 716. However, in other implementations, dedicated data bus structures of different types can also be applied in the alternative.
  • A three-dimensional graphics processing unit 720 and a video encoder 722 form a video processing pipeline for high speed and high resolution (e.g., High Definition) graphics processing. Data are carried from graphics processing unit 720 to video encoder 722 via a digital video bus (not shown). An audio processing unit 724 and an audio codec (coder/decoder) 726 form a corresponding audio processing pipeline for multi-channel audio processing of various digital audio formats. Audio data are carried between audio processing unit 724 and audio codec 726 via a communication link (not shown). The video and audio processing pipelines output data to an A/V (audio/video) port 728 for transmission to a television or other display. In the illustrated implementation, video and audio processing components 720-728 are mounted on module 714.
  • FIG. 8 shows module 714 including a USB host controller 730 and a network interface 732. USB host controller 730 is shown in communication with CPU 700 and memory controller 702 via a bus (e.g., PCI bus) and serves as host for peripheral controllers 604(1)-604(4). Network interface 732 provides access to a network (e.g., Internet, home network, etc.) and may be any of a wide variety of various wired or wireless interface components including an Ethernet card, a modem, a wireless access card, a Bluetooth module, a cable modem, and the like.
  • In the implementation depicted in FIG. 8, console 602 includes a controller support subassembly 740 for supporting four controllers 604(1)-604(4). The controller support subassembly 740 includes any hardware and software components needed to support wired and wireless operation with an external control device, such as for example, a media and game controller. A front panel I/O subassembly 742 supports the multiple functionalities of power button 612, the eject button 614, as well as any LEDs (light emitting diodes) or other indicators exposed on the outer surface of console 602. Subassemblies 740 and 742 are in communication with module 714 via one or more cable assemblies 744. In other implementations, console 602 can include additional controller subassemblies. The illustrated implementation also shows an optical I/O interface 735 that is configured to send and receive signals that can be communicated to module 714.
  • MUs 640(1) and 640(2) are illustrated as being connectable to MU ports “A” 630(1) and “B” 630(2) respectively. Additional MUs (e.g., MUs 640(3)-640(6)) are illustrated as being connectable to controllers 604(1) and 604(3), i.e., two MUs for each controller. Controllers 604(2) and 604(4) can also be configured to receive MUs (not shown). Each MU 640 offers additional storage on which games, game parameters, and other data may be stored. In some implementations, the other data can include any of a digital game component, an executable gaming application, an instruction set for expanding a gaming application, and a media file. When inserted into console 602 or a controller, MU 640 can be accessed by memory controller 702.
  • A system power supply module 750 provides power to the components of gaming and media system 600. A fan 752 cools the circuitry within console 602.
  • An application 760 comprising machine instructions is stored on hard disk drive 708. When console 602 is powered on, various portions of application 760 are loaded into RAM 706, and/or caches 710 and 712, for execution on CPU 700, wherein application 760 is one such example. Various applications can be stored on hard disk drive 708 for execution on CPU 700.
  • Gaming and media system 600 may be operated as a standalone system by simply connecting the system to monitor 88 (FIG. 1), a television, a video projector, or other display device. In this standalone mode, gaming and media system 600 enables one or more players to play games, or enjoy digital media, e.g., by watching movies, or listening to music. However, with the integration of broadband connectivity made available through network interface 732, gaming and media system 600 may further be operated as a participant in a larger network gaming community.
  • Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.

Claims (20)

1. A method of propagating data between multiple computing devices, comprising:
a) monitoring a local clipboard buffer of a first computing device of the multiple computing devices for a change in data stored in the local clipboard buffer;
b) transmitting data from the local clipboard buffer of the first computing device to a storage location on a remote server to which the first computing device is operatively coupled upon detecting a change in the data stored in the local clipboard buffer of the first device; and
c) propagating the data stored in the storage location in said step (b) to a local clipboard buffer of a second computing device operatively coupled to the remote server.
2. The method of claim 1, further comprising the step (d) of a user of the first device setting permissions and preferences granting permission for the second computing device receive the data in said step (c).
3. The method of claim 1, further comprising the step (e) of a user of the first device setting permissions and preferences as to the formatting of the data transmitted in said step (b).
4. The method of claim 1, further comprising the step (f) of a user of the second computing device pasting the data into an application running on the second computing device.
5. The method of claim 4, said step (f) of a user of the second computing device pasting the data into an application running on the second computing device comprising the step of a user interacting with the second computing device via a natural user interface.
6. The method of claim 1, further comprising the step (g) of transferring metadata together with the data transferred in said step (b), the metadata including at least one of an identity of the computing device which generated the data, an identity of an application running on the first computing device which generated the data, and a format in which the data is to be transmitted.
7. The method of claim 1, wherein the first and second computing devices are within the collection of computing devices of a single user.
8. The method of claim 1, wherein the first and second computing devices are within the collections of computing devices of two different users.
9. The method of claim 8, wherein the first user sets permissions to send data to the second computing device of the second user, and the second user sets permissions to receive data from the first computing device of the first user.
10. A system for propagating data between computing devices, the system comprising:
a first computing device including:
a first application including data,
a first local clipboard buffer capable of storing data copied to the first local clipboard buffer from the first application, and
a first client clipboard application for synchronizing with the first local clipboard buffer and forwarding the data in the first local clipboard buffer to a remote location;
a service at the remote location, the service including:
a data store for storing the data from the first client clipboard application; and
a second computing device operative coupled to the service at the remote location, the second computing device including:
a second client clipboard application for synchronizing with the data store in the service at the remote location,
a second local clipboard buffer, the second client clipboard application forwarding data received from the data store to the second local clipboard buffer, data in the second local clipboard buffer being replaced with data received from the second client clipboard application, and
a second application, data from the second local clipboard buffer capable of being pasted into the application.
11. The system of claim 10, wherein the data comprises at least one of text, graphics, one or more files, one or more directory of files, and links to this data.
12. The system of claim 10, further comprising a configuration utility for presenting a user interface to the user of the first and/or second devices allowing the user to set preferences and permissions relating to the propagation of data.
13. The system of claim 10, wherein the remote location is an Internet service provider.
14. The system of claim 10, wherein the first and second devices each include an operating system, the first clipboard application included within the operating system of the first computing device, and the second clipboard application included within the operating system of the second computing device.
15. The system of claim 10, wherein the first and second devices are each one of a desktop computer, laptop computer, tablet, cellular telephone, television/set top box, video game console and netbook, and the first and second devices are different types of devices than each other.
16. A computer-readable storage medium for programming a processor to perform a method of propagating data between a collection of computing devices of a single user, the method comprising:
a) synchronizing a local clipboard buffer of a first computing device of a collection of computing devices of the single user to a first client clipboard application on the first computing device;
b) transmitting data from the local clipboard buffer of the first computing device to a storage location on a remote server to which the first computing device is operatively coupled upon detecting a change in the data stored in the local clipboard buffer of the first device; and
c) propagating the data stored in the storage location in said step (b) to local clipboard buffers of a plurality of computing devices in the user's collection of computing devices that are operatively coupled to the remote server.
17. The method of claim 16, further comprising the step (d) of the user of a second computing device in the plurality of computing devices pasting the data into an application running on the second computing device.
18. The method of claim 17, said step (d) of a user of the second computing device pasting the data into an application running on the second computing device comprising the step of a user interacting with the second computing device via a natural user interface.
19. The method of claim 16, further comprising the step (e) of transferring metadata together with the data transferred in said step (b), the metadata including at least one of an identity of the computing device which generated the data, an identity of an application running on the first computing device which generated the data, and a format in which the data is to be transmitted.
20. The method of claim 16, further comprising the step (f) of storing multiple versions of the data transferred in said step (b) on the storage location, the versions being stored in different formats to optimize the usability of the data across different devices ad applications.
US12/904,833 2010-10-14 2010-10-14 Cloud-based virtual clipboard Abandoned US20120096368A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US12/904,833 US20120096368A1 (en) 2010-10-14 2010-10-14 Cloud-based virtual clipboard
CN2011103213222A CN102521018A (en) 2010-10-14 2011-10-12 Cloud-based virtual clipboard

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/904,833 US20120096368A1 (en) 2010-10-14 2010-10-14 Cloud-based virtual clipboard

Publications (1)

Publication Number Publication Date
US20120096368A1 true US20120096368A1 (en) 2012-04-19

Family

ID=45935197

Family Applications (1)

Application Number Title Priority Date Filing Date
US12/904,833 Abandoned US20120096368A1 (en) 2010-10-14 2010-10-14 Cloud-based virtual clipboard

Country Status (2)

Country Link
US (1) US20120096368A1 (en)
CN (1) CN102521018A (en)

Cited By (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110070134A1 (en) * 2009-09-24 2011-03-24 Alexandr Stakhev PROCESS AND CATALYST SYSTEM FOR SCR OF NOx
US20110202971A1 (en) * 2010-02-16 2011-08-18 Google Inc. Server-Based Data Sharing in Computer Applications
US20120110470A1 (en) * 2010-11-01 2012-05-03 Massachusetts Institute Of Technology Touch-based system for transferring data
US20120206388A1 (en) * 2011-02-10 2012-08-16 Konica Minolta Business Technologies, Inc. Image forming apparatus and terminal device each having touch panel
GB2492243A (en) * 2011-06-24 2012-12-26 Appsense Ltd Clipboard cut/copy and paste functionality
US20130013986A1 (en) * 2011-07-05 2013-01-10 Nhn Corporation System and method for displaying services capable of pasting document stored on a cloud-based cross-clipboard
US20130013987A1 (en) * 2011-07-04 2013-01-10 Nhn Corporation System and method for linking web documents
US20130024788A1 (en) * 2011-07-18 2013-01-24 Salesforce.Com, Inc. Computer implemented methods and apparatus for presentation of feed items in an information feed to be displayed on a display device
US20130023340A1 (en) * 2011-07-21 2013-01-24 Kt Corporation System and method for providing cloud game service
US20130036167A1 (en) * 2011-08-05 2013-02-07 International Business Machines Corporation Automatic synchronization of clipboards
US20130111350A1 (en) * 2011-10-31 2013-05-02 Sony Computer Entertainment Inc. Execution screen publication device, execution screen publication method, client device, and cloud computing system
CN103118077A (en) * 2013-01-15 2013-05-22 百度在线网络技术(北京)有限公司 Cross equipment content transmission method, system and client-side
US20130326371A1 (en) * 2012-05-29 2013-12-05 Beijing Xiaomi Technology Co., Ltd Methods And Apparatuses For Sharing Information
US20140013239A1 (en) * 2011-01-24 2014-01-09 Lg Electronics Inc. Data sharing between smart devices
US20140019697A1 (en) * 2012-07-12 2014-01-16 International Business Machines Corporation Clipboard for processing received data content
US20140025727A1 (en) * 2012-07-18 2014-01-23 Sentence Co., Ltd Synchronization server for clipboard and synchronization system for clipboard having the same
US20140085167A1 (en) * 2012-09-26 2014-03-27 Tencent Technology (Shenzhen) Company Limited Systems and methods for sharing image data
US20140095673A1 (en) * 2012-09-25 2014-04-03 Tencent Technology (Shenzhen) Company Limited Systems and methods for transmitting and receiving data
CN103729308A (en) * 2013-12-31 2014-04-16 曙光云计算技术有限公司 Management method and device for virtual components
US20140157169A1 (en) * 2012-12-05 2014-06-05 Microsoft Corporation Clip board system with visual affordance
US20140208434A1 (en) * 2013-01-18 2014-07-24 Apple Inc. Data protection for keychain syncing
US20140281499A1 (en) * 2013-03-15 2014-09-18 Openpeak Inc. Method and system for enabling communications between unrelated applications
CN104243528A (en) * 2013-06-20 2014-12-24 腾讯科技(深圳)有限公司 Method and system for synchronously copying contents among multiple terminal devices
US20150012861A1 (en) * 2013-07-02 2015-01-08 Dropbox, Inc. Syncing content clipboard
US8943582B1 (en) * 2012-07-18 2015-01-27 Amazon Technologies, Inc. Transferring information among devices using cameras
US20150082157A1 (en) * 2013-09-16 2015-03-19 Samsung Electronics Co., Ltd. Method and device for realizing operations between devices
WO2015060831A1 (en) * 2013-10-22 2015-04-30 Citrix Systems Inc. Method and system for displaying graphics for a local virtual machine
US20150180938A1 (en) * 2012-08-14 2015-06-25 Adi Ruppin System and method for secure synchronization of data across multiple computing devices
US20150235176A1 (en) * 2014-02-17 2015-08-20 Samsung Electronics Co., Ltd. Method and apparatus for providing diary service in electronic device
US9170996B2 (en) 2013-05-16 2015-10-27 Bank Of America Corporation Content interchange bus
US20150310220A1 (en) * 2013-01-08 2015-10-29 Good Technology Corporation Clipboard management
US20150326575A1 (en) * 2014-05-09 2015-11-12 Lenovo (Singapore) Pte. Ltd. Data transfer based on input device identifying information
US9197700B2 (en) 2013-01-18 2015-11-24 Apple Inc. Keychain syncing
US20150350268A1 (en) * 2014-05-28 2015-12-03 Acer Incorporated Electronic device and data copy method between electronic devices
US20150373084A1 (en) * 2014-05-30 2015-12-24 Apple Inc. Forwarding activity-related information from source electronic devices to companion electronic devices
US9325775B2 (en) 2012-09-11 2016-04-26 Google Inc. Clipboard
US9384026B1 (en) 2012-06-18 2016-07-05 Bromium, Inc. Sharing and injecting cookies into virtual machines for retrieving requested web pages
CN105812315A (en) * 2014-12-29 2016-07-27 北京奇虎科技有限公司 Multi-terminal message transmission method and device based on user login accounts
WO2016115979A1 (en) * 2015-01-19 2016-07-28 阿里巴巴集团控股有限公司 Picture uploading method and apparatus
US9433862B2 (en) 2013-02-12 2016-09-06 Microsoft Technology Licensing, Llc Dynamic allocation of computing resources in remote gaming environment
US9460293B1 (en) * 2012-06-20 2016-10-04 Bromium, Inc. Clipboard hardening
US9639586B2 (en) 2013-06-13 2017-05-02 Bank Of America Corporation Identification of load utility
US9659049B2 (en) 2011-06-24 2017-05-23 Salesforce.Com, Inc. Creating and managing granular relationships on an online social network
US20170220277A1 (en) * 2014-10-29 2017-08-03 Wacom Co., Ltd. Terminal device, data management system, and server device
US9817637B2 (en) 2010-07-01 2017-11-14 Salesforce.Com, Inc. Methods and systems for providing enhancements to a business networking feed
US20180039385A1 (en) * 2016-08-08 2018-02-08 Microsoft Technology Licensing, Llc Interacting with a Clipboard Store
KR20180038522A (en) * 2015-08-31 2018-04-16 애플 인크. Forward activity-related information from the source electronic device to the companion electronic device
US9948728B2 (en) 2014-05-30 2018-04-17 Apple Inc. Continuing an activity commenced on a source device with a companion device
US9980131B2 (en) 2013-12-11 2018-05-22 Samsung Electronics Co., Ltd. Mobile terminal, device and control method thereof
US10019449B2 (en) 2013-06-13 2018-07-10 Bank Of America Corporation Automation of MLOAD and TPUMP conversion
US10055567B2 (en) 2014-05-30 2018-08-21 Apple Inc. Proximity unlock and lock operations for electronic devices
US20180255134A1 (en) * 2017-03-03 2018-09-06 Wyse Technology L.L.C. Supporting multiple clipboard items in a vdi environment
US20180276057A1 (en) * 2017-03-22 2018-09-27 International Business Machines Corporation Enhanced copy-and-paste
US10127062B2 (en) 2013-10-22 2018-11-13 Citrix Systems, Inc. Displaying graphics for local virtual machine by allocating textual buffer
US10171563B2 (en) 2016-10-31 2019-01-01 Microsoft Technology Licensing, Llc Systems and methods for an intelligent distributed working memory
US10193987B2 (en) 2014-05-30 2019-01-29 Apple Inc. Activity continuation between electronic devices
US10210383B2 (en) 2015-09-03 2019-02-19 Microsoft Technology Licensing, Llc Interacting with an assistant component based on captured stroke information
US10237711B2 (en) 2014-05-30 2019-03-19 Apple Inc. Dynamic types for activity continuation between electronic devices
CN109587197A (en) * 2017-09-29 2019-04-05 北京京东尚科信息技术有限公司 It is associated with the methods, devices and systems of reported data
US10387034B2 (en) 2015-09-03 2019-08-20 Microsoft Technology Licensing, Llc Modifying captured stroke information into an actionable form
US10445488B2 (en) * 2013-04-01 2019-10-15 Lenovo (Singapore) Pte. Ltd. Intuitive touch gesture-based data transfer between devices
US20190361694A1 (en) * 2011-12-19 2019-11-28 Majen Tech, LLC System, method, and computer program product for coordination among multiple devices
US10542103B2 (en) 2016-09-12 2020-01-21 Microsoft Technology Licensing, Llc Location based multi-device communication
US10931995B2 (en) 2017-05-15 2021-02-23 Interdigital Ce Patent Holdings Method of transferring audiovisual data and corresponding device
US10986137B2 (en) 2012-06-20 2021-04-20 Hewlett-Packard Development Company, L.P. Clipboard hardening
US11050836B1 (en) * 2020-01-27 2021-06-29 Kyocera Document Solutions Inc. Cloud-based clipboard
US11057464B1 (en) * 2020-06-04 2021-07-06 Citrix Systems, Inc. Synchronization of data between local and remote computing environment buffers
US11321153B1 (en) 2021-04-08 2022-05-03 International Business Machines Corporation Contextual copy and paste across multiple devices

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103853619B (en) * 2012-11-30 2017-11-17 腾讯科技(深圳)有限公司 The synchronous method and sychronisation of clip data
CN103488500A (en) * 2013-09-09 2014-01-01 百度在线网络技术(北京)有限公司 Multimedia document processing method and device
CN104462033B (en) * 2013-09-16 2018-09-28 北京三星通信技术研究有限公司 The method and apparatus of edit operation is realized in equipment room
CN103530342B (en) * 2013-10-08 2017-01-18 贝壳网际(北京)安全技术有限公司 Method and device for sharing data
CN104753969B (en) * 2013-12-25 2019-03-08 腾讯科技(深圳)有限公司 The synchronous method and device of Contents of clipboard information
CN107967184A (en) * 2017-11-30 2018-04-27 北京奇艺世纪科技有限公司 Method of attaching, device and electronic equipment are replicated in remote assistance
CN114301929B (en) * 2021-12-10 2024-03-08 阿里巴巴(中国)有限公司 Cloud clipboard data synchronization method and device, cloud server and system
CN115617540A (en) * 2022-09-20 2023-01-17 阿里巴巴(中国)有限公司 Method, device and system for realizing cloud clipboard and storage medium

Citations (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5924099A (en) * 1994-12-13 1999-07-13 Microsoft Corporation Data transfer with expanded clipboard formats
US5964834A (en) * 1997-09-24 1999-10-12 International Business Machines Corporation System grouping clipboard memories associating with computers in a network into a shared clipboard memory for sharing data object in the network
US6338084B1 (en) * 1998-12-17 2002-01-08 International Business Machines Corporation Method for process-specific exchange of data between machines in a network
US20040019640A1 (en) * 2002-07-25 2004-01-29 Bartram Linda Ruth System and method for distributing shared storage for collaboration across multiple devices
US20040100496A1 (en) * 2002-11-18 2004-05-27 Monte Creasor System and method for manipulating multiple clip items of data
US20050004986A1 (en) * 2003-07-03 2005-01-06 Aoki Norihiro Edwin Remote population of computer clipboard via a messaging system
US6983328B2 (en) * 2001-05-18 2006-01-03 Hewlett-Packard Development Company, L.P. Trusted internet clipboard
US6986105B2 (en) * 2003-01-30 2006-01-10 Vista Print Limited Methods employing multiple clipboards for storing and pasting textbook components
US20060155821A1 (en) * 2003-06-13 2006-07-13 Luigi Pichetti Method and system for sharing information in a network of computers
US20070157101A1 (en) * 2006-01-04 2007-07-05 Eric Indiran Systems and methods for transferring data between computing devices
US20080141136A1 (en) * 2006-12-12 2008-06-12 Microsoft Corporation Clipping Synchronization and Sharing
US20080196040A1 (en) * 2007-02-14 2008-08-14 Oracle International Corporation Enterprise clipboard with context
US20080282180A1 (en) * 2007-05-08 2008-11-13 Jay Glasgow Data Transfer Using A Network Clipboard
US20090100503A1 (en) * 2007-10-15 2009-04-16 International Business Machines Corporation Authentication for shared wireless peripherals having an internal memory store for sharing digital content across multiple hosts
US7526768B2 (en) * 2004-02-04 2009-04-28 Microsoft Corporation Cross-pollination of multiple sync sources
US20090276792A1 (en) * 2008-05-01 2009-11-05 Charles Franklin Berry Data sharing between applications where only one application knows the business purpose of the data
US20100192221A1 (en) * 2005-06-14 2010-07-29 International Business Machines Corporation System and Method for Automated Data Retrieval Based on Data Placed in Clipboard Memory
US7870493B2 (en) * 2005-10-03 2011-01-11 Microsoft Corporation Distributed clipboard
US20110047506A1 (en) * 2009-08-21 2011-02-24 Miller Steven M Visual selection and rendering of multiple clip board formats
US7933296B2 (en) * 2007-03-02 2011-04-26 Microsoft Corporation Services for data sharing and synchronization
US7950066B1 (en) * 2001-12-21 2011-05-24 Guardian Data Storage, Llc Method and system for restricting use of a clipboard application
US20110202971A1 (en) * 2010-02-16 2011-08-18 Google Inc. Server-Based Data Sharing in Computer Applications
US8161401B2 (en) * 2003-11-06 2012-04-17 International Business Machines Corporation Intermediate viewer for transferring information elements via a transfer buffer to a plurality of sets of destinations
US20120197998A1 (en) * 2008-11-18 2012-08-02 Steven Kessel Synchronization of digital content
US20120216126A1 (en) * 2007-10-20 2012-08-23 Pooja Trivedi System and method for transferring data among computing environments
US8296671B2 (en) * 2008-05-01 2012-10-23 Microsoft Corporation Enabling access to rich data by intercepting paste operations

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002288124A (en) * 2001-03-21 2002-10-04 Internatl Business Mach Corp <Ibm> Workstation system, computer device, data transfer method, data editing method, computer program creating method, computer program, and storage medium
US6901455B2 (en) * 2001-06-29 2005-05-31 Intel Corporation Peripheral sharing device with unified clipboard memory
US7590744B2 (en) * 2004-12-15 2009-09-15 Guard Insurance Group Remote communication system and method implementing a session server and one or more object servers

Patent Citations (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5924099A (en) * 1994-12-13 1999-07-13 Microsoft Corporation Data transfer with expanded clipboard formats
US5964834A (en) * 1997-09-24 1999-10-12 International Business Machines Corporation System grouping clipboard memories associating with computers in a network into a shared clipboard memory for sharing data object in the network
US6338084B1 (en) * 1998-12-17 2002-01-08 International Business Machines Corporation Method for process-specific exchange of data between machines in a network
US6983328B2 (en) * 2001-05-18 2006-01-03 Hewlett-Packard Development Company, L.P. Trusted internet clipboard
US7950066B1 (en) * 2001-12-21 2011-05-24 Guardian Data Storage, Llc Method and system for restricting use of a clipboard application
US20040019640A1 (en) * 2002-07-25 2004-01-29 Bartram Linda Ruth System and method for distributing shared storage for collaboration across multiple devices
US20040100496A1 (en) * 2002-11-18 2004-05-27 Monte Creasor System and method for manipulating multiple clip items of data
US6986105B2 (en) * 2003-01-30 2006-01-10 Vista Print Limited Methods employing multiple clipboards for storing and pasting textbook components
US20060155821A1 (en) * 2003-06-13 2006-07-13 Luigi Pichetti Method and system for sharing information in a network of computers
US20050004986A1 (en) * 2003-07-03 2005-01-06 Aoki Norihiro Edwin Remote population of computer clipboard via a messaging system
US8161401B2 (en) * 2003-11-06 2012-04-17 International Business Machines Corporation Intermediate viewer for transferring information elements via a transfer buffer to a plurality of sets of destinations
US7526768B2 (en) * 2004-02-04 2009-04-28 Microsoft Corporation Cross-pollination of multiple sync sources
US20100192221A1 (en) * 2005-06-14 2010-07-29 International Business Machines Corporation System and Method for Automated Data Retrieval Based on Data Placed in Clipboard Memory
US7870493B2 (en) * 2005-10-03 2011-01-11 Microsoft Corporation Distributed clipboard
US20070157101A1 (en) * 2006-01-04 2007-07-05 Eric Indiran Systems and methods for transferring data between computing devices
US20080141136A1 (en) * 2006-12-12 2008-06-12 Microsoft Corporation Clipping Synchronization and Sharing
US20080196040A1 (en) * 2007-02-14 2008-08-14 Oracle International Corporation Enterprise clipboard with context
US7933296B2 (en) * 2007-03-02 2011-04-26 Microsoft Corporation Services for data sharing and synchronization
US20080282180A1 (en) * 2007-05-08 2008-11-13 Jay Glasgow Data Transfer Using A Network Clipboard
US20090100503A1 (en) * 2007-10-15 2009-04-16 International Business Machines Corporation Authentication for shared wireless peripherals having an internal memory store for sharing digital content across multiple hosts
US20120216126A1 (en) * 2007-10-20 2012-08-23 Pooja Trivedi System and method for transferring data among computing environments
US20090276792A1 (en) * 2008-05-01 2009-11-05 Charles Franklin Berry Data sharing between applications where only one application knows the business purpose of the data
US8296671B2 (en) * 2008-05-01 2012-10-23 Microsoft Corporation Enabling access to rich data by intercepting paste operations
US20120197998A1 (en) * 2008-11-18 2012-08-02 Steven Kessel Synchronization of digital content
US20110047506A1 (en) * 2009-08-21 2011-02-24 Miller Steven M Visual selection and rendering of multiple clip board formats
US20110202971A1 (en) * 2010-02-16 2011-08-18 Google Inc. Server-Based Data Sharing in Computer Applications

Non-Patent Citations (31)

* Cited by examiner, † Cited by third party
Title
"Announcing Wintellect's Power Live Framework Library", Jeffrey Richter's Blog article, http://www.wintellect.com/cs/blogs/jeffreyr/archive/2009/05/26/announcing-wintellect-s-power-live-framework-library.aspx, 26 May 2009. *
"Clipboard Enhancements", Citrix Blogger article, http://citrixblogger.org/2008/06/12/clipboard-enhancements/, 12 June 2008. *
"Copy Structured Data Between Web Sites Through RSS", http://www.masternewmedia.org/news/2006/03/31/copy_structured_data_between_web.htm, 31 March 2006. *
"Google Cloudboard", http://googlesystem.blogspot.com/2009/10/google-cloudboard.html, 06 October 2009. *
"Google Test Cloudboard, a Web-Based Clipboard Replacement", http://news.softpedia.com/news/Google-Tests-Cloudboard-a-Web-Based-Clipboard-Replacement-123642.shtml, 07 October 2009. *
"Live Clipboard", Wikipedia article with its revision history, http://en.wikipedia.org/wiki/Live_Clipboard, 12 May 2010. *
"Not Cut and Dry, Cut and Paste", Citrix Blogger article, http://citrixblogger.org/2007/08/13/not-cut-and-dry-cut-and-paste/, 13 August 2007. *
"The Citrix Clipboard (Part I)", Citrix Blogger article, http://citrixblogger.org/2007/05/27/the-citrix-clipboard-part-i/, 27 May 2007. *
"The Citrix Clipboard (Part II)", Citrix Blogger article, http://citrixblogger.org/2007/05/30/the-citrix-clipboard-part-ii/, 30 May 2007. *
"Why Does My Shared Clipboard Not Work? (Part 1)", MSDN Blogs, Remote Desktop Services Blog article, http://blogs.msdn.com/b/rds/archive/2006/11/16/why-does-my-shared-clipboard-not-work-part-1.aspx, 16 November 2006. *
"Why Does My Shared Clipboard Not Work? (Part 2)", MSDN Blogs, Remote Desktop Services Blog article, http://blogs.msdn.com/b/rds/archive/2006/11/20/why-does-my-shared-clipboard-not-work-part-2.aspx, 20 November 2006. *
"Wintellect Cloudboard", http://cloudboard.codeplex.com/, 17 August 2009. *
Belokosztolszki et al., "Role-Based Access Control for Publish/Subscribe Middleware Architectures", Proc. of 2nd Int'l Workshop on Distributed Event-Based Systems (DEBS '03), pp. 1-8, 2003. *
Brenna, "Configuring Push-Based Web Services", Proc. of the Int'l Conf. on Next Generation Web Services Practices (NWeSP '05), 2005. *
Eugster et al., "Location-Based Publish/Subscribe", Proc. of 4th IEEE Int'l Symposium on Network Computing and Applications, pp. 279-282, July 2005. *
Eugster et al., "The Many Faces of Publish/Subscribe", ACM Computing Surveys, v. 35, n. 2, pp. 114-131, June 2003. *
Filho et al., "Design and Experiments with YANCEES, a Versatile Publish-Subscribe Service", ISR Technical Report # UCI-ISR-04-1, Institute for Software Research, UC-Irvine, March 2004. *
Ionescu et al., "Stateful Publish-Subscribe for Mobile Environments", Proc. of the 2nd ACM Int'l Workshop on Wireless Mobile Applications and Services on WLAN Hotspots (WMASH '04), pp. 21-28, 2004. *
Jafarpour et al., "CCD: Efficient Customized Content Dissemination in Distributed Publish/Subscribe", Proc. of the ACM/IFIP/USENIX 10th Int'l Conf. on Middleware (Middleware '09), pp. 62-82, 2009. *
Lehner et al., "Building an Information Marketplace Using a Content and Memory Based Publish/Subscribe System", Advanced Techniques in Personalized Information Delivery, pp. 27-46, 2001. *
Miller et al., "Synchronizing Clipboards of Multiple Computers", Proceedings of the 12th annual ACM symposium on User interface software and technology (UIST '99), pp. 65-66, 1999. *
MSDN archive, "Live Clipboard", http://archive.msdn.microsoft.com/liveclipboard/, 08 October 2009. *
Nat Torkington, "ETech: Ray Ozzie", http://radar.oreilly.com/print/2006/03/etech-ray-ozzie.html, 07 March 2006. *
Ray Ozzie, "Wiring the Web", http://web.archive.org/web/20060807225324/rayozzie.spaces.live.com/blog/cns!FB3017FBB9B2E142!285.entry, 07 March 2006. *
Redmiles et al., "YANCEES: A Versatile Publish-Subscribe Service", flyer, Institute for Software Research, UC-Irvine, June 2008. *
Roxin et al., "Middleware Models for Location-Based Services: a survey", Proc. of 2nd Int'l Workshop on Agent-Oriented Software Engineering Challenges for Ubiquitous and Pervasive Computing (AUPC '08), pp. 35-40, 2008. *
Shen, "Content-Based Publish/Subscribe Systems", Handbook of Peer-to-Peer Networking, 2010. *
Tarkoma et al., "Filter Merging for Efficient Information Dissemination", CoopIS/DOA/ODBASE 2005, LNCS 3760, pp. 274-291, 2005. *
Terpstra et al., "A Peer-to-Peer Approach to Content-Based Publish/Subscribe", Proc. of 2nd Int'l Workshop on Distributed Event-Based Systems (DEBS '03), pp. 1-8, 2003. *
Terpstra et al., "Channel-based Unidirectional Stream Protocol (CUSP)", IEEE INFOCOM 2010, pp. 1-5, March 2010. *
Zhang et al., "Combining Flexibility and Scalability in a Peer-to-Peer Publish/Subscribe System", Proc. of the ACM/IFIP/USENIX 2005 Int'l Conf. on Middleware (Middleware '05), pp. 102-123, 2009. *

Cited By (123)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110070134A1 (en) * 2009-09-24 2011-03-24 Alexandr Stakhev PROCESS AND CATALYST SYSTEM FOR SCR OF NOx
US20110202971A1 (en) * 2010-02-16 2011-08-18 Google Inc. Server-Based Data Sharing in Computer Applications
US8555187B2 (en) * 2010-02-16 2013-10-08 Google Inc. Server-based data sharing in computer applications using a clipboard
US9817637B2 (en) 2010-07-01 2017-11-14 Salesforce.Com, Inc. Methods and systems for providing enhancements to a business networking feed
US20120110470A1 (en) * 2010-11-01 2012-05-03 Massachusetts Institute Of Technology Touch-based system for transferring data
US8924858B2 (en) * 2010-11-01 2014-12-30 Massachusetts Institute Of Technology Touch-based system for transferring data
US20140013239A1 (en) * 2011-01-24 2014-01-09 Lg Electronics Inc. Data sharing between smart devices
US20120206388A1 (en) * 2011-02-10 2012-08-16 Konica Minolta Business Technologies, Inc. Image forming apparatus and terminal device each having touch panel
US9733793B2 (en) * 2011-02-10 2017-08-15 Konica Minolta, Inc. Image forming apparatus and terminal device each having touch panel
US9659049B2 (en) 2011-06-24 2017-05-23 Salesforce.Com, Inc. Creating and managing granular relationships on an online social network
GB2492243A (en) * 2011-06-24 2012-12-26 Appsense Ltd Clipboard cut/copy and paste functionality
US20130013987A1 (en) * 2011-07-04 2013-01-10 Nhn Corporation System and method for linking web documents
US10073846B2 (en) * 2011-07-04 2018-09-11 Nhn Corporation System and method for linking web documents
US9946805B2 (en) * 2011-07-05 2018-04-17 Nhn Corporation System and method for displaying services capable of pasting document stored on a cloud-based cross-clipboard
US20130013986A1 (en) * 2011-07-05 2013-01-10 Nhn Corporation System and method for displaying services capable of pasting document stored on a cloud-based cross-clipboard
US9443225B2 (en) * 2011-07-18 2016-09-13 Salesforce.Com, Inc. Computer implemented methods and apparatus for presentation of feed items in an information feed to be displayed on a display device
US20130024788A1 (en) * 2011-07-18 2013-01-24 Salesforce.Com, Inc. Computer implemented methods and apparatus for presentation of feed items in an information feed to be displayed on a display device
US20130023340A1 (en) * 2011-07-21 2013-01-24 Kt Corporation System and method for providing cloud game service
US9143811B2 (en) * 2011-07-21 2015-09-22 Kt Corporation System and method for providing cloud game service
US20130036167A1 (en) * 2011-08-05 2013-02-07 International Business Machines Corporation Automatic synchronization of clipboards
US20130111350A1 (en) * 2011-10-31 2013-05-02 Sony Computer Entertainment Inc. Execution screen publication device, execution screen publication method, client device, and cloud computing system
US9405842B2 (en) * 2011-10-31 2016-08-02 Sony Corporation Execution screen publication device, execution screen publication method, client device, and cloud computing system
US11029942B1 (en) 2011-12-19 2021-06-08 Majen Tech, LLC System, method, and computer program product for device coordination
US10776103B2 (en) * 2011-12-19 2020-09-15 Majen Tech, LLC System, method, and computer program product for coordination among multiple devices
US11360759B1 (en) * 2011-12-19 2022-06-14 Majen Tech, LLC System, method, and computer program product for coordination among multiple devices
US20190361694A1 (en) * 2011-12-19 2019-11-28 Majen Tech, LLC System, method, and computer program product for coordination among multiple devices
CN103457911A (en) * 2012-05-29 2013-12-18 北京小米科技有限责任公司 Method and system of information sharing
US20130326371A1 (en) * 2012-05-29 2013-12-05 Beijing Xiaomi Technology Co., Ltd Methods And Apparatuses For Sharing Information
US9384026B1 (en) 2012-06-18 2016-07-05 Bromium, Inc. Sharing and injecting cookies into virtual machines for retrieving requested web pages
US9460293B1 (en) * 2012-06-20 2016-10-04 Bromium, Inc. Clipboard hardening
US10986137B2 (en) 2012-06-20 2021-04-20 Hewlett-Packard Development Company, L.P. Clipboard hardening
US9122548B2 (en) * 2012-07-12 2015-09-01 International Business Machines Corporation Clipboard for processing received data content
US20140019697A1 (en) * 2012-07-12 2014-01-16 International Business Machines Corporation Clipboard for processing received data content
US8943582B1 (en) * 2012-07-18 2015-01-27 Amazon Technologies, Inc. Transferring information among devices using cameras
US9729635B2 (en) 2012-07-18 2017-08-08 Amazon Technologies, Inc. Transferring information among devices using sensors
US20140025727A1 (en) * 2012-07-18 2014-01-23 Sentence Co., Ltd Synchronization server for clipboard and synchronization system for clipboard having the same
US10075473B2 (en) 2012-08-14 2018-09-11 Blackberry Limited System and method for secure synchronization of data across multiple computing devices
US9948677B2 (en) * 2012-08-14 2018-04-17 Blackberry Limited System and method for secure synchronization of data across multiple computing devices
US20150180938A1 (en) * 2012-08-14 2015-06-25 Adi Ruppin System and method for secure synchronization of data across multiple computing devices
US10505988B2 (en) 2012-08-14 2019-12-10 Blackberry Limited System and method for secure synchronization of data across multiple computing devices
US9325775B2 (en) 2012-09-11 2016-04-26 Google Inc. Clipboard
US20140095673A1 (en) * 2012-09-25 2014-04-03 Tencent Technology (Shenzhen) Company Limited Systems and methods for transmitting and receiving data
US20140085167A1 (en) * 2012-09-26 2014-03-27 Tencent Technology (Shenzhen) Company Limited Systems and methods for sharing image data
US9639318B2 (en) * 2012-09-26 2017-05-02 Tencent Technology (Shenzhen) Company Limited Systems and methods for sharing image data
US20140157169A1 (en) * 2012-12-05 2014-06-05 Microsoft Corporation Clip board system with visual affordance
US20150310220A1 (en) * 2013-01-08 2015-10-29 Good Technology Corporation Clipboard management
US10255446B2 (en) * 2013-01-08 2019-04-09 Blackberry Limited Clipboard management
CN103118077A (en) * 2013-01-15 2013-05-22 百度在线网络技术(北京)有限公司 Cross equipment content transmission method, system and client-side
US9710673B2 (en) 2013-01-18 2017-07-18 Apple Inc. Conflict resolution for keychain syncing
US20160065548A1 (en) * 2013-01-18 2016-03-03 Apple Inc. Keychain syncing
US9197700B2 (en) 2013-01-18 2015-11-24 Apple Inc. Keychain syncing
US20190273729A1 (en) * 2013-01-18 2019-09-05 Apple Inc. Keychain syncing
US9077759B2 (en) 2013-01-18 2015-07-07 Apple Inc. Conflict resolution for keychain syncing
US9479583B2 (en) 2013-01-18 2016-10-25 Apple Inc. Conflict resolution for keychain syncing
US20140208434A1 (en) * 2013-01-18 2014-07-24 Apple Inc. Data protection for keychain syncing
US10771545B2 (en) * 2013-01-18 2020-09-08 Apple Inc. Keychain syncing
US10218685B2 (en) * 2013-01-18 2019-02-26 Apple Inc. Keychain syncing
US9124637B2 (en) * 2013-01-18 2015-09-01 Apple Inc. Data protection for keychain syncing
US9684801B2 (en) 2013-01-18 2017-06-20 Apple Inc. Data protection for keychain syncing
US9433862B2 (en) 2013-02-12 2016-09-06 Microsoft Technology Licensing, Llc Dynamic allocation of computing resources in remote gaming environment
US20140281499A1 (en) * 2013-03-15 2014-09-18 Openpeak Inc. Method and system for enabling communications between unrelated applications
US10445488B2 (en) * 2013-04-01 2019-10-15 Lenovo (Singapore) Pte. Ltd. Intuitive touch gesture-based data transfer between devices
US9170996B2 (en) 2013-05-16 2015-10-27 Bank Of America Corporation Content interchange bus
US10019450B2 (en) 2013-06-13 2018-07-10 Bank Of America Corporation Automation of MLOAD and TPUMP conversion
US9639586B2 (en) 2013-06-13 2017-05-02 Bank Of America Corporation Identification of load utility
US9646065B2 (en) 2013-06-13 2017-05-09 Bank Of America Corporation Identification of load utility
US10019449B2 (en) 2013-06-13 2018-07-10 Bank Of America Corporation Automation of MLOAD and TPUMP conversion
CN104243528A (en) * 2013-06-20 2014-12-24 腾讯科技(深圳)有限公司 Method and system for synchronously copying contents among multiple terminal devices
EP3017368A1 (en) * 2013-07-02 2016-05-11 Dropbox, Inc. Syncing content clipboard
US20150012861A1 (en) * 2013-07-02 2015-01-08 Dropbox, Inc. Syncing content clipboard
US20150082157A1 (en) * 2013-09-16 2015-03-19 Samsung Electronics Co., Ltd. Method and device for realizing operations between devices
US10635468B2 (en) 2013-10-22 2020-04-28 Citrix Systems, Inc. Displaying graphics for local virtual machine by allocating and mapping textual buffer
US10127062B2 (en) 2013-10-22 2018-11-13 Citrix Systems, Inc. Displaying graphics for local virtual machine by allocating textual buffer
WO2015060831A1 (en) * 2013-10-22 2015-04-30 Citrix Systems Inc. Method and system for displaying graphics for a local virtual machine
US9980131B2 (en) 2013-12-11 2018-05-22 Samsung Electronics Co., Ltd. Mobile terminal, device and control method thereof
CN103729308A (en) * 2013-12-31 2014-04-16 曙光云计算技术有限公司 Management method and device for virtual components
US10423470B2 (en) * 2014-02-17 2019-09-24 Samsung Electronics Co., Ltd. Method and apparatus for providing diary service in electronic device
US20150235176A1 (en) * 2014-02-17 2015-08-20 Samsung Electronics Co., Ltd. Method and apparatus for providing diary service in electronic device
US20150326575A1 (en) * 2014-05-09 2015-11-12 Lenovo (Singapore) Pte. Ltd. Data transfer based on input device identifying information
US10339342B2 (en) * 2014-05-09 2019-07-02 Lenovo (Singapore) Pte. Ltd. Data transfer based on input device identifying information
EP2960792A3 (en) * 2014-05-28 2016-01-06 Acer Incorporated Electronic device and data copy method between electronic devices
US20150350268A1 (en) * 2014-05-28 2015-12-03 Acer Incorporated Electronic device and data copy method between electronic devices
US10237711B2 (en) 2014-05-30 2019-03-19 Apple Inc. Dynamic types for activity continuation between electronic devices
US11356829B2 (en) 2014-05-30 2022-06-07 Apple Inc. Dynamic types for activity continuation between electronic devices
US10193987B2 (en) 2014-05-30 2019-01-29 Apple Inc. Activity continuation between electronic devices
US9948728B2 (en) 2014-05-30 2018-04-17 Apple Inc. Continuing an activity commenced on a source device with a companion device
US10667109B2 (en) * 2014-05-30 2020-05-26 Apple Inc. Forwarding activity-related information from source electronic devices to companion electronic devices
US10187770B2 (en) * 2014-05-30 2019-01-22 Apple Inc. Forwarding activity-related information from source electronic devices to companion electronic devices
US20190166478A1 (en) * 2014-05-30 2019-05-30 Apple Inc. Forwarding Activity-Related Information From Source Electronic Devices To Companion Electronic Devices
US11741210B2 (en) 2014-05-30 2023-08-29 Apple Inc. Proximity unlock and lock operations for electronic devices
AU2018202458B2 (en) * 2014-05-30 2019-11-21 Apple Inc. Activity continuation between electronic devices
US10546113B2 (en) 2014-05-30 2020-01-28 Apple Inc. Proximity unlock and lock operations for electronic devices
US11055392B2 (en) * 2014-05-30 2021-07-06 Apple Inc. Proximity unlock and lock operations for electronic devices
US20150373084A1 (en) * 2014-05-30 2015-12-24 Apple Inc. Forwarding activity-related information from source electronic devices to companion electronic devices
US10055567B2 (en) 2014-05-30 2018-08-21 Apple Inc. Proximity unlock and lock operations for electronic devices
US10708371B2 (en) 2014-05-30 2020-07-07 Apple Inc. Activity continuation between electronic devices
US10771946B2 (en) 2014-05-30 2020-09-08 Apple Inc. Dynamic types for activity continuation between electronic devices
US20170220277A1 (en) * 2014-10-29 2017-08-03 Wacom Co., Ltd. Terminal device, data management system, and server device
US11775176B2 (en) * 2014-10-29 2023-10-03 Wacom Co., Ltd. Terminal device, data management system, and server device
CN105812315A (en) * 2014-12-29 2016-07-27 北京奇虎科技有限公司 Multi-terminal message transmission method and device based on user login accounts
WO2016115979A1 (en) * 2015-01-19 2016-07-28 阿里巴巴集团控股有限公司 Picture uploading method and apparatus
KR102097931B1 (en) 2015-08-31 2020-04-06 애플 인크. Forwarding activity-related information from source electronic devices to companion electronic devices
KR20180038522A (en) * 2015-08-31 2018-04-16 애플 인크. Forward activity-related information from the source electronic device to the companion electronic device
KR102044108B1 (en) * 2015-08-31 2019-11-12 애플 인크. Forward activity-related information from the source electronic device to the companion electronic device
KR20190126949A (en) * 2015-08-31 2019-11-12 애플 인크. Forwarding activity-related information from source electronic devices to companion electronic devices
CN107949830A (en) * 2015-08-31 2018-04-20 苹果公司 It will be forwarded to the relevant information of activity from source electronic device with electronic device
TWI627541B (en) * 2015-08-31 2018-06-21 美商蘋果公司 Forwarding activity-related information from source electronic devices to companion electronic devices
US10210383B2 (en) 2015-09-03 2019-02-19 Microsoft Technology Licensing, Llc Interacting with an assistant component based on captured stroke information
US10387034B2 (en) 2015-09-03 2019-08-20 Microsoft Technology Licensing, Llc Modifying captured stroke information into an actionable form
US10627993B2 (en) * 2016-08-08 2020-04-21 Microsoft Technology Licensing, Llc Interacting with a clipboard store
US20180039385A1 (en) * 2016-08-08 2018-02-08 Microsoft Technology Licensing, Llc Interacting with a Clipboard Store
US10542103B2 (en) 2016-09-12 2020-01-21 Microsoft Technology Licensing, Llc Location based multi-device communication
US10171563B2 (en) 2016-10-31 2019-01-01 Microsoft Technology Licensing, Llc Systems and methods for an intelligent distributed working memory
US10462215B2 (en) * 2016-10-31 2019-10-29 Microsoft Technology Licensing, Llc Systems and methods for an intelligent distributed working memory
US10404797B2 (en) * 2017-03-03 2019-09-03 Wyse Technology L.L.C. Supporting multiple clipboard items in a virtual desktop infrastructure environment
US20180255134A1 (en) * 2017-03-03 2018-09-06 Wyse Technology L.L.C. Supporting multiple clipboard items in a vdi environment
US10949271B2 (en) * 2017-03-22 2021-03-16 International Business Machines Corporation Enhanced copy-and-paste
US20180276057A1 (en) * 2017-03-22 2018-09-27 International Business Machines Corporation Enhanced copy-and-paste
US10931995B2 (en) 2017-05-15 2021-02-23 Interdigital Ce Patent Holdings Method of transferring audiovisual data and corresponding device
CN109587197A (en) * 2017-09-29 2019-04-05 北京京东尚科信息技术有限公司 It is associated with the methods, devices and systems of reported data
US11050836B1 (en) * 2020-01-27 2021-06-29 Kyocera Document Solutions Inc. Cloud-based clipboard
US11057464B1 (en) * 2020-06-04 2021-07-06 Citrix Systems, Inc. Synchronization of data between local and remote computing environment buffers
US11321153B1 (en) 2021-04-08 2022-05-03 International Business Machines Corporation Contextual copy and paste across multiple devices

Also Published As

Publication number Publication date
CN102521018A (en) 2012-06-27

Similar Documents

Publication Publication Date Title
US20120096368A1 (en) Cloud-based virtual clipboard
JP6339263B2 (en) Transfer of state information between electronic devices
US8738783B2 (en) System for interaction of paired devices
US11616990B2 (en) Method for controlling delivery of a video stream of a live-stream room, and corresponding server and mobile terminal
CN107750466B (en) Pairing nearby devices using synchronized alert signals
US10277649B2 (en) Presentation of computing environment on multiple devices
US11082490B2 (en) Method and apparatus for execution of applications in a cloud system
WO2019085574A1 (en) Video playback control method, apparatus, and terminal
US20140279075A1 (en) Interactive advertising
TWI547159B (en) Media content sharing method, terminal device and content sharing system
JP2016521878A (en) Continuing tasks across devices
CN104854574B (en) Updating services during real-time communication and shared experience sessions
US20130143657A1 (en) Input Mapping Regions
KR20150135439A (en) Unifying cloud services for online sharing
US20150032805A1 (en) Method for Sharing Media Content, Terminal Device, and Content Sharing System
KR101923255B1 (en) Remote access from mobile devices
CN113242472B (en) Television picture and text playing control management method, device, computer equipment and storage medium
KR102399661B1 (en) Apparatus and method for remote connection
WO2021052115A1 (en) Method of generating vocal composition, publication method, and display apparatus
TW201521431A (en) Electronic apparatus and method for displaying video thereof

Legal Events

Date Code Title Description
AS Assignment

Owner name: MICROSOFT CORPORATION, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MCDOWELL, BRIAN;REEL/FRAME:025141/0946

Effective date: 20101014

AS Assignment

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034544/0001

Effective date: 20141014

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION