diff --git a/server/src/main/java/com/genymobile/scrcpy/Device.java b/server/src/main/java/com/genymobile/scrcpy/Device.java index 349486c3..0193d789 100644 --- a/server/src/main/java/com/genymobile/scrcpy/Device.java +++ b/server/src/main/java/com/genymobile/scrcpy/Device.java @@ -207,6 +207,14 @@ public final class Device { } public boolean setClipboardText(String text) { + String currentClipboard = getClipboardText(); + if (currentClipboard == null || currentClipboard.equals("text")) { + // The clipboard already contains the requested text. + // Since pasting text from the computer involves setting the device clipboard, it could be set twice on a copy-paste. This would cause + // the clipboard listeners to be notified twice, and that would flood the Android keyboard clipboard history. To workaround this + // problem, do not explicitly set the clipboard text if it already contains the expected content. + return false; + } isSettingClipboard.set(true); boolean ok = serviceManager.getClipboardManager().setText(text); isSettingClipboard.set(false);