

To ensure maximum compatibility with Typinator and PopChar, you just need to check for the pasteboard type "Pasteboard generator type". "Pasteboard generator type" = "Typinator (restore)". When Typinator restores the contents of the clipboard (in step 4), it adds " (restore)" to the item, so you get: When Typinator fills the clipboard with an expansion (step 2 in the section “How it works”), it adds its own name as the generator, so you get: "Pasteboard generator type" = "Typinator". The contents is a UTF8 string that tells you who the “generator” was. The presence of "Pasteboard generator type" tells you that this was not the result of a regular Copy but rather a temporary change. Whenever Typinator modifies the clipboard as part of an expansion operation, it adds data with a special type (or “flavor”):"Pasteboard generator type". In order to avoid these problems, other utilities need to distinguish whether the contents of the clipboard have changed because the user copied something to the clipboard or whether Typinator temporarily used the clipboard to transfer an expansion to another application. Typinator cannot know which application has fetched the data, so it will incorrectly assume that the target application has already processed the Paste command. The first two issues can arise when a clipboard utility fetches the contents of the clipboard before the target application. Typinator’s expansions fill the clipboard history of another utility.Typinator leaves the most recent expansion in the clipboard.Typinator inserts the current clipboard instead of the desired expansion.This technique works quite reliably, but other utilities can interfere with this sequence of steps, which can lead to unexpected or undesirable results for both Typinator and the other utility. The actual process is more sophisticated, but the promise/callback separation is an important part of our solution. When the target application reads the contents of the clipboard in response to the Paste command, Typinator’s callback methods are invoked, which lets Typinator know that the target application has fetched the data. Typinator’s solution is to “promise” only the types of the items on the clipboard, postponing the actual delivery of the data. When Typinator changes the clipboard too early, the target application will pick up the next part or the restored clipboard instead of the desired expansion when Typinator waits too long, expansions take much longer and may appear sluggish. Typinator needs to know when it is safe to restore the original clipboard or fill the clipboard with the next part in case of a multi-part expansion. The biggest problem with this approach is that there is currently no reliable way for Typinator to find out whether the target application has already picked up and inserted the clipboard as a result of the Paste command. If that is necessary, Typinator repeats the steps 2 and 3. For example, Typinator sometimes needs to break an expansion into multiple parts that are sent to the target application separately.

However, the process may get more complex in some situations. Normally, this sequence is executed smoothly and appears as an instantanteous operation for users. Typinator restores the original contents of the clipboard.Typinator tells the target operation to perform a Paste operation.Typinator puts the expansion on the clipboard.To transfer a text snippet or a picture to the target application, Typinator performs the following steps: Since PopChar’s usage scenarios are simpler, we describe the technique primarily from Typinator’s perspective. Typinator and PopChar use the same technical foundation. This page is meant for developers of clipboard utilities and describes a few simple rules to ensure maximum compatibility with Typinator. One of these techniques involves usage of the clipboard, which introduces potential compatibility issues when other utilities also process the clipboard. They use different techniques for this task, depending on the information to be transferred and the target application. Two of our products, Typinator and PopChar, need to transfer text and pictures to the active application.
