Zählung von Einfügeereignissen mit xclip

357
SYN-cook

xclip ist eine Befehlszeilenschnittstelle zur X-Zwischenablage. Beim Versuch, eine Sicherheitsfunktion mit diesem Tool einzurichten, habe ich einige Auswirkungen beobachtet, die ich nicht verstehe.

Was ich getan habe, ist, dass ich Strings in xclip pipet, wobei die Option loops auf 1 gesetzt ist (xclip wird nach einem einzelnen Einfügeereignis mit auf 1 festgelegten Loops beendet):

echo test | xclip -loops 1 -display :0 -selection c -verbose

Als ich dann versuchte, auf meinem Linux Mate-Desktop einzufügen, bemerkte ich Folgendes: Das Einfügen in ein Webformular oder die Firefox-Suchleiste funktionierte wie ein Zauber mit Loops auf 1, aber das Einfügen in die Adressleiste von Firefox war nicht möglich diese.

Um in die Firefox-Adressleiste einfügen zu können, mussten die Schleifen auf 2 erhöht werden, dh zwei Einfügeereignisse wurden "konsumiert". Beim Einfügen in die Adressleiste von Google Chrome wurden 4 Einfügeereignisse benötigt. Sogar das Einfügen in einen einfachen Texteditor wie Pluma erforderte zwei Einfügeereignisse.

Aber warum ist das so? Warum ist es manchmal notwendig, den Inhalt der Zwischenablage mehrmals bereitzustellen, um erfolgreich in eine Anwendung eingefügt zu werden, und warum verhalten sich Anwendungen so unterschiedlich?

0
Bei IIRC gibt es einige Schemata für unterschiedliche Puffergrößen. Daher können Anwendungen auch versuchen, die Auswahl mehrmals zu lesen, bis sie die richtige Puffergröße erreichen. Manchmal wird Software ineffizient geschrieben und kann dieselbe Subroutine mehrmals aus Versehen aufrufen. dirkt vor 7 Jahren 0
@dirkt Danke für deinen Hinweis mit den Puffergrößen. Ich bin mir nicht sicher, ob dies von Bedeutung ist, aber ich habe gerade versucht, Texte unterschiedlicher Größe (bis zu 7,5 MB) einzufügen - es ist alles der gleiche Effekt. SYN-cook vor 7 Jahren 0
Wenn Sie Details wünschen (an die ich mich nicht erinnere, es ist zu lang), ist das Protokoll [hier] (https://www.x.org/releases/X11R7.6/doc/xorg-docs/specs/ICCCM/ icccm.html), und ich denke, es sollte möglich sein, die Ereignisse irgendwie zu verfolgen. dirkt vor 7 Jahren 0

0 Antworten auf die Frage