This page attempts to recollect a large amount of pointers to specifications,
articles, API-documents, and attempts that related to the clipboard and more
generally to user-initiated transfers, such as copy-and-paste or drag-and-drop
as we know them in common desktop environments.
It comes as an attempt to clarify a few ideas in order to propose sensible
copy-and-paste facilities that web-page scripts could influence.
Copy and Paste, Clipboard, Data-flavours, Drag-And-Drop…
Litterature about User-initiated Transfers
Maybe a good start is the copy-and-paste Wikipedia definition as well as the
drag-and-drop Wikipedia definition.
Both could be thicker though!
I should include here the platform’s UI guidelines.
Maybe the origins of these paradigms can be found at early versions of such.
A beginning list which should provide precise pointers to the transfer actions::
From the specifications there or from some other sources we should find out what are the ingredients to a standardized new clipboard-format introduction for MathML.
On desktop applications:
MicroSoft Windows in:
- .NET and Visual Basic: centered around the Clipboard class
a set of encoding-types is pre-defined in DataFormats class
and it seems there are internal documents about the various data-type names.
Several documents treat transfers of particular formats along special conversion
facilities (e.g. images, audio-files, …).
- C++: some Clipboard Formats,
are predefined and can also be registered at application-startup.
is a developer documentation chapter which includes clipboard and drag-and-drop
and may even be based on shared memory spaces (!).
Apple’s MacOSX in
- Cocoa: copy and paste centered around the NSPasteboard class
A large set of own encoding-types
is pre-defined. Several documents treat transfers of particular formats (also fonts, …). Apple is promoting a standard called Uniform Type Identifiers
- Carbon: the
OSType class is responsible to designate the names, traditionally based on 4-characters-codes, and an emerging specification is called Uniform Type Identifiers
which provide applications-info-level information about clipboard (and files’) types.
the Java runtime has fairly complete transfer mechanisms
in all platforms.
A DnD and Data Transfer tutorial
exists for the Swing widget set.
The java runtime uses the DataFlavor
class to mimic mime-types, they are used as keys to denote the encodings
of a transfer, presented under the Transferable
interface. Every java installation comes with SystemFlavorMap which relies on a file called flavormap.properties which associates platform-local-names to MIME-types. There seems to exist tricks to enrich this map, application per application.
- Internet Explorer’s DHTML Data Tansfer (now replaced by About DHTML Data Transfer
It was never clear whether that API can be considered to stay or not. It seems
there are good reasons not to keep it active since it allows any web-page-script
to read the clipboard or write to it without the user doing anything else than
reading. Only URLs and plain-text is supported.
- Safari offers an API for scripts to replace the content being copied or pasted
through standard gestures as well as specify individual draggeable elements’
and behaviour in
Safari JS Programming
All formats seem supported using mime-types as encoding names.
- Flash’s Clipboard Data Format
- nothing in Mozilla I know of (probably HTML5 now)
- nothing in Opera I know of (probably HTML5 now)
- continuing the webapp work, Hallvord Steen is starting to refresh a complete specification over clipboard operations for the web before they become implemented in Opera. See the mailing list thread. This continues a first incomplete working-draft with discussion at the webAPI working group. Discussion continues, e.g. see this mailing-list-thread.
- Design-Science and MicroSoft’s MathML-clipboard (requires W3C member password) this has flowed in the following
- MathML 3’s chapter 6 has a section that specifies how MathML should be put in the clipboard. The nicest part, I feel, is that it even empowers page authors, in case the MathML is put in the clipboard, to put into it, parallel types such as image renderings or alternate language representations.
- HTML5, the “back to roots through parsing wizardy” ongoing spec, has a current draft that specifies an API for drag-and-drop and direct translation to copy-and-paste. Maybe something compatible with the clipboard-operations’ draft, or that will be. Looks like Mozilla implementations are there already (in French)
- LiveClipboard: Ray Ozzie’s initiative to use
the clipboard transferring XML fragments. Assumes the web-application entirely
masters (and displays) the selection (which is quite an issue). Probably
only works well with atomic selection elements. Also, cannot care for multiple
encodings since it relies on the browser actually copy-and-pasting XML-content
- an old site about copy and paste
- Tim Berners-Lee considers important to give types to transferred objets
Note: none much tested!
- PasteBoard Inspector: traditional Cocoa inspector
- ClipboardViewer is the name of an example AppKit application in MacOSX’s developer tools’ examples
- ClipSpy: are Windows utilities to check the clipboard’s content
- DropItTester: pure java drag-and-drop and clipboard inspector, primitive to detect the flavours
Trackback URL for this post: