Zwischenablage

Die Zwischenablage (englisch Clipboard) ist ein Puffer, also ein Zwischenspeicher, für das kurzzeitige Speichern und Übertragen von Daten. Dieses Verfahren wird meist nur auf einem Computer zwischen Dokumenten oder Anwendungen angewandt. Betriebssysteme benutzen für die Interaktion mit der Zwischenablage die Technik Kopieren und Einfügen (Copy and Paste). Die meisten Programme greifen auf deren Schnittstellen für die Zwischenablage zu, wenn sie auf eine festgelegte Benutzereingabe, wie eine Tastenkombination oder eine Menüauswahl, reagieren. Ein Element in der Zwischenablage kann in verschiedenen Formaten vorgehalten werden. Jedes Programm bestimmt dabei, in welchen Variationen die Daten gespeichert werden. Dies ist nützlich, da zum Zeitpunkt des Speicherns keine Rückschlüsse auf die Zielanwendung gezogen werden können.

Windows, Linux und MacOS nutzen für die Zwischenablage den RAM und können nicht mehrere Elemente zwischenspeichern, da sie den vorherigen Inhalt überschreiben. Zudem wird das Objekt in der Zwischenablage nach dem Einfügen nicht gelöscht, sondern weiter vorgehalten. Ein Neustart oder Ausschalten des Systems leert aber dennoch den RAM und somit das gespeicherte Objekt. Die Verfahrensweise der Zwischenablage kann dabei zwischen Betriebssystemen und ihren Versionen variieren. Diese Kernfunktionen der Zwischenablage können zudem durch Clipboard-Manager und Einstellungen verändert oder erweitert werden.

Die Interaktionstechnik Drag and Drop benutzt die Zwischenablage dagegen nicht, obwohl die Funktionalität Ähnlichkeiten mit der von Kopieren und Einfügen aufweist.

Geschichte 
Eine erste Form der Zwischenablage wurde von Pentti Kanerva im Texteditor TVEDIT implementiert. Die Software nutzte einen Zwischenspeicher für das Ausschneiden von Texten. Der Nutzer musste erst Zeichen auswählen und danach löschen. Darauffolgend konnte er diese an einer bestimmten Stelle wiederherstellen.

Seitdem ein Text an einer Stelle gelöscht und an einer anderen Stelle wieder eingefügt werden konnte, entspricht der Begriff „Löschen“ in diesem Zusammenhang nicht mehr der eigentlichen Bedeutung des Wortes. Larry Tesler benannte das Szenario deswegen 1973 in Ausschneiden, Kopieren, Einfügen (englisch cut, copy and paste) um. Außerdem definierte er den Begriff „clipboard“, was wörtlich übersetzt „Klemmbrett“ heißt, als Zwischenspeicher für diese Interaktionstechnik. Tesler war gleichzeitig auch einer der Entwickler des ersten PCs namens Apple Lisa, der diese Technologie ab Werk unterstützte.

Datenformate 
Die Zwischenablage unterstützt das Speichern von mehreren Typen des Datenobjekts zur selben Zeit, sodass komplexe Datenstrukturen ebenso abgelegt werden können. Diese reichen von Textformaten mittels Auszeichnungssprache, wie zum Beispiel RTF oder HTML, über eine Vielfalt von Bitmaps und Vektorgrafiken bis hin zu komplexen Varianten, wie Dateien und Verzeichnisse, Tabellen und Einträgen in Datenbanken. Das Ausschneiden von mehreren Zellen einer Tabelle und das darauffolgende Einfügen in eine andere Tabelle könnte beispielsweise die zugrunde liegenden Formeln, Datensätze und sogar automatische Übersetzungen der Referenzen innerhalb einer Zelle mit einfließen lassen. Dies würde zum Beispiel dazu führen, dass nach einem Kopieren und Einfügen von Zellen, die von einer Summenfunktion benutzt werden, ein Programm den Inhalt dieser Funktion mit den neuen Referenzen aktualisiert.

Eine Anwendung kann Daten in vielen verschiedenen Formaten der Zwischenablage hinzufügen. Diese können native, einfachere oder häufigere Datenformate sein, die eine höhere Chance haben von unterschiedlichsten Anwendungen erkannt zu werden. Deshalb kann die Zielanwendung beim Einfügen der Zwischenablage das Format wählen, das am ehesten dem der Anwendung entspricht, sodass nach Möglichkeit alle Originaldaten vorhanden bleiben.

Sicherheit 
Das Hijacking der Zwischenablage ist ein Angriff, der den Inhalt der Zwischenablage gegen einen bösartigen Inhalt wie eine mit Viren behaftete Webseite austauscht. Während einige Sicherheitslücken geschlossen wurden, kann über JavaScript und damit über jede Webseite das sogenannte „pastejacking“ weiterverwendet werden. Dylan Ayrey fand diese Lücke und stellt eine Webseite bereit, die zeigen soll, dass das System Aktionen ausführt, die der Nutzer gar nicht beabsichtigt.

2013 entdeckten Forscher ein Sicherheitsrisiko von Applikationen zur Passwortverwaltung auf Android-Geräten. Sie fanden heraus, dass bei 21 der beliebtesten dieser Anwendungen Passwörter ausgelesen werden können. Dies geschieht durch die Verwendung einer anderen Applikation und den Zugriff auf die Zwischenablage. Joe Siegrist sagte, dass dieser Angriff alle Anwendungen des Betriebssystems Android betrifft. Das Fraunhofer-Institut SIT fand 2016 nochmals eine ähnliche Sicherheitslücke, die es ebenfalls ermöglichte, Passwörter aus der Zwischenablage zu stehlen.

Zwischenablagen der Betriebssysteme

Windows 
Die Zwischenablage in Windows speichert einen Eintrag in 3 verschiedenen Formaten. Jeder Eintrag liegt in mindestens einem dieser Formate vor.

 Standardformate von Windows (z. B. CF_BITMAP, oder CF_UNICODETEXT),
 Registrierte Formate, die durch Anwendungen hinzugefügt werden (z. B. CF_HTML)
 Interne Formate von Anwendungen oder des Systems

Windows unterstützt außerdem das verzögerte Erstellen (englisch delayed rendering) der Formate eines zwischengespeicherten Datenobjekts. Das bedeutet, dass die Anwendung nur bei Bedarf ein Format generiert und in die Zwischenablage verschiebt. Falls also eine Applikation zeitaufwändige Prozesse benötigt, um die Daten in ein spezielles Format aufzubereiten, können die lang andauernden Rechenoperationen mit dieser Funktionalität umgangen werden.

Bis einschließlich Windows XP konnte auf die Zwischenablage mit Hilfe von clipbrd.exe zugegriffen werden. Diese Anwendung erlaubte es dem Nutzer, die aktuelle Zwischenablage in einer CLP-Datei abzuspeichern. Darauffolgend konnte die Datei entweder im eigenen System oder per Übertragung innerhalb eines anderen Windowscomputer verwendet werden. Indem die CLP mittels clipbrd.exe in die Zwischenablage importiert wird, kann der Anwender den Inhalt an den gewünschten Ort des Zielsystems einfügen. Dies ist nützlich, da die verschiedenen Formate gespeichert werden und somit auch für andere Nutzer eine funktionierende Variante bereithält.

Mit Windows 10 1809 erweitert Microsoft die Möglichkeiten der Zwischenablage deutlich. Die Zwischenablage erhält einen Verlauf, der es ermöglicht, mehrere Objekte oder Textpassagen in die Zwischenablage zu übernehmen. Aus dem Verlauf kann dann beim Einfügen das gewünschte Objekte ausgewählt werden. Zusätzlich kann der Verlauf der Zwischenablage mit der Cloud (automatisch oder manuell) synchronisiert werden.

Außerdem ist die Zwischenablage über PowerShell erreichbar:
# Um den Inhalt eines Ordners in die Zwischenablage einzufügen.
Set-Clipboard -Path "C:\directory\"
# Um den Inhalt der Ablage zu erlangen.
Get-Clipboard
Daten können auch über die Eingabeaufforderung gespeichert werden:
$ # Um den Inhalt eines Ordners in die Zwischenablage zu speichern.
$ dir | clip

macOS 
Auch macOS speichert einen Eintrag in verschiedenen Formaten in die Zwischenablage.

Dessen Inhalt kann über das Menü der Schaltfläche Bearbeiten des Finders und die Auswahl des Eintrags „Zwischenablage einblenden“ angezeigt werden. Außerdem kann die Zwischenablage geräteübergreifend mit derselben Apple-ID benutzt werden, solange sie WLAN, Bluetooth und Handoff aktiviert haben. So kann ein kopierter Text auf einem Gerät, auf einem Zweiten eingefügt werden.

Mit Hilfe folgender Kommandos kann die Zwischenablage benutzt werden:
$ # Um Daten in die Zwischenablage zu kopieren.
$ echo 'hello world' | pbcopy
$ # Um aus dem Clipboard heraus einzufügen.
$ pbpaste
hello world

X Window System 
Das X Window System, das vorwiegend in Unix oder Linux basierten Betriebssystemen eingesetzt wird, stellt drei Zwischenablagen namens „PRIMARY“, „SECONDARY“ und „CLIPBOARD“ bereit.

Die Interaktion mit diesen ist nicht standardisiert. Dennoch benutzen die meisten modernen Bibliotheken und Desktopumgebungen, wie GNOME oder KDE, eine weit verbreitete Konvention, die durch freedesktop.org spezifiziert wurde.

„CLIPBOARD“ wird identisch wie das Pendant aus Windows benutzt. Der Unterschied zu den bereits erwähnten Systemen ist, dass die Daten nicht extra in der Zwischenablage abgelegt werden, sondern nur deren Referenz. Die Anwendung übernimmt den Besitz der Selektion und kommuniziert dies dem X Server. Sobald ein Einfügen erfolgt, wird das Datenobjekt und seine verfügbaren Formate von der Anwendung angefordert und abhängig davon eingefügt.

„PRIMARY“ hingegen, ist ein X11 spezifischer Mechanismus. Das bedeutet, dass die Selektion direkt ein Kopieren der Daten zur Folge hat und über die dritte beziehungsweise mittlere Maustaste eingefügt wird. Dieser Prozess ist komplett unabhängig von der Variante „CLIPBOARD“ und verändert deshalb nicht dessen Inhalt.

„SECONDARY“ wurde als Alternative zu „PRIMARY“ geplant, wird aber meist nicht verwendet.

Zwei Kommandos ermöglichen den Zugriff auf das „CLIPBOARD“:
$ # Speichern mit Hilfe von xclip.
$ echo text | xclip -in -selection clipboard
$ # Speichern mit Hilfe von xsel.
$ echo text | xsel --clipboard
Auf der Linux-Konsole bietet GPM (General Purpose Mouse Manager) eine ähnliche Funktion, allerdings nur für Text. Das Einfügen erfolgt auf der Linuxkonsole mit der Rolltaste der Maus beziehungsweise der mittleren Maustaste.

AmigaOS 
Das Betriebssystem AmigaOS verwendet 256 Einheiten für die Zwischenablage, sodass ein Nutzer mehrere Zwischenablagen zur gleichen Zeit nutzen kann. Diese werden in einem speziellen Speicherplatz aufbewahrt, der durch die AmigaDOS Zuweisung CLIPS: definiert ist. Durch das Containerformat IFF können beliebige Datentypen in einer Zwischenablage gemischt werden.

Android 
Android stellt ein Framework bereit, das ein Objekt zwischenspeichert und systemweit verfügbar macht. Während einfacher Text direkt gespeichert wird, werden komplexe Datenstrukturen als Referenz abgelegt. Das Objekt gehört zu einer von drei verschiedenen Arten:

 Zeichenkette
 URI Objekt
 Intent

Der Inhalt des Clipboards kann nur durch Anwendungen oder das System verwendet werden.

Entwickler können die Klasse ClipboardManager benutzen, um das Kopieren und Einfügen von Daten zu steuern.

iOS 
Die Zwischenablage in iOS hat den Namen „Pasteboard“ und hat eine ähnliche Funktionsweise wie das Pendant in macOS. Applikationen können weitere Pasteboards mit Hilfe von Instanzen der UIPasteboard Klasse erstellen. Diese können privat oder öffentlich gesetzt werden. Eine Instanz kann einen oder mehrere Einträge mit verschiedenen Formatierungen, die durch Uniform Type Identifiers festgelegt wurden, enthalten.

Ähnlich zu Android können die Daten der Zwischenablage nicht über die GUI des Betriebssystems erreicht werden. Nur Anwendungen und das System selbst können auf diese zugreifen.

APIs 
Für viele Programmiersprachen gibt es Bibliotheken und APIs, die eine einfache Zugriffsmöglichkeit auf die Zwischenablage bereitstellen.

JavaScript 
JavaScript stellt eine Schnittstelle über ein Event (ClipboardEvent) bereit, die ein Lesen und Setzen von Daten erlaubt. Dies wird aber nicht von jedem Browser unterstützt, da eine Manipulation dieses Speichers ein Sicherheitsrisiko bedeuten kann.

Qt 
Das Framework für plattformübergreifende Benutzerschnittstellen Qt wird unter anderem von Python und C++ benutzt. Qt enthält durch die Klasse QClipboard, eine Möglichkeit auf die verschiedenen Zwischenablagen Schnittstellen der Betriebssysteme zuzugreifen. Dadurch können gewöhnliche Datentypen in der Zwischenablage über Funktionen erreicht werden. Jedes gespeicherte Element wird mittels MIME typisiert und kann somit ausgelesen sowie in einen bestimmten Datentyp gespeichert werden.

Erweiterungen der Zwischenablage 

Clipboard-Manager fügen zu der bereits integrierten Zwischenablage weitere Funktionen hinzu, sodass der Nutzer den Speicher verändern kann. Viele Anwendungen dieser Art können mehrere Einträge zwischenspeichern und einfügen. Dabei kann der letzte Eintrag trotzdem wie üblich benutzt werden. Des Weiteren wird dem Nutzer oft die Möglichkeit gegeben, den Verlauf der Speichereinträge zu sehen, zu selektieren, zu editieren, in andere Formate zu konvertieren und zu durchsuchen.

Da die meisten Betriebssysteme (Windows, macOS, Linux, X11, Android, iOS) den Inhalt der Zwischenablage nicht in den Festspeicher ablegen, wird dieser gelöscht sobald sich der Nutzer abmeldet oder das System neustartet. Deswegen implementieren Clipboard-Manager sowie Anwendungen wie der Texteditor Emacs häufig eine persistente Speicherung.

Weblinks 
 2. Peer-to-Peer Communication by Means of Selections (englisch) in the ICCCM
 Windows Dev Center: Transferring Shell Objects with Drag-and-Drop and the Clipboard (englisch)
 Microsoft Developer Network: How the Clipboard Works, Part 1 (englisch)
 Microsoft Developer Network: How the Clipboard Works, Part 2 (englisch)
 Ubuntu Users Wiki: Zwischenablage

Einzelnachweise 

Benutzerschnittstelle
Programmierschnittstelle
Windows-Systemdienst