ITBlog

IT Blog w tematach różnych...

  • O blogu…
  • Edukacja
    • Moodle – stare
    • Moodle2
    • Testy
    • Wykłady IT
  • Firma

Automatyczne kopiowanie tekstów do schowka

Napisane przez Igor Brzeżek on 15 czerwca 2026
Napisane w: Programowanie.

Contents
  1. Automatyczne kopiowanie zaznaczonego tekstu do schowka (Windows i Linux)
  2. Do czego służy autocopy?
  3. Jak to działa – mechanizm wewnętrzny
  4. Wersja Windows
  5. Wersja Linux (X11)
  6. Wymagania
  7. Wersja Windows
  8. Wersja Linux (X11)
  9. Instalacja i uruchomienie
  10. Windows – kompilacja
  11. Linux – kompilacja
  12. Opcje wiersza poleceń – szczegółowy opis
  13. Tryby wyświetlania
  14. Wyzwalanie kliknięciem
  15. Klawisze modyfikujące
  16. Konfiguracja czasowa
  17. Zarządzanie buforem (TUI)
  18. Logowanie i pliki
  19. Pomoc i informacje
  20. Sterowanie w trybie TUI
  21. Przykłady użycia
  22. Windows
  23. Linux
  24. Różnice między wersją Windows a Linux
  25. Bezpieczeństwo
  26. Podsumowanie

Automatyczne kopiowanie zaznaczonego tekstu do schowka (Windows i Linux)

autocopy to lekki program napisany w ANSI C, który automatyzuje kopiowanie zaznaczonego myszą tekstu do schowka systemowego. Dostępny jest w dwóch wersjach – dla systemu Windows (z wykorzystaniem Win32 API) oraz dla Linuxa z serwerem X11. Program eliminuje potrzebę ręcznego naciskania Ctrl+C – sam wykrywa moment zakończenia zaznaczania tekstu i symuluje kopiowanie.

GitHub: github.com/IgorBrzezek/autocopy

Do czego służy autocopy?

autocopy rozwiązuje problem mechanicznego, powtarzalnego kopiowania tekstu. Każdy, kto pracuje z dużą ilością danych, cytatów, kodu źródłowego czy dokumentacji, wie, ile czasu zajmuje ciągłe zaznaczanie i naciskanie Ctrl+C. autocopy robi to automatycznie:

  • Praca z dokumentacją – zaznaczasz fragment tekstu, a on już jest w schowku.
  • Kopiowanie kodu – przeglądasz kod źródłowy, zaznaczasz fragment i od razu możesz go wkleić.
  • Analiza danych – zbierasz informacje z roznych źródeł bez odrywania rąk od myszy.
  • Edukacja i badania – gromadzisz cytaty i fragmenty bez zbędnych kliknięć.

Jak to działa – mechanizm wewnętrzny

Wersja Windows

Program instaluje w systemie niskopoziomowy hak myszy (WH_MOUSE_LL), który monitoruje zdarzenia zwolnienia przycisku myszy (WM_LBUTTONUP) w całym systemie:

  1. Wykrywanie: monitoruje zwolnienie lewego przycisku myszy we wszystkich oknach.
  2. Walidacja: sprawdza, czy aktywne okno NIE należy do samego autocopy (zabezpieczenie).
  3. Wykonanie: po 200 ms opóźnienia (na przetworzenie przez system) symuluje naciśnięcie Ctrl+C.
  4. Odczyt schowka: jeśli włączono tryb TUI, logowanie lub wyświetlanie tekstu, program odczytuje zawartość schowka.

Dodatkowo instalowany jest hak klawiatury (WH_KEYBOARD_LL) do obsługi Ctrl+Z (wyjście), strzałek (nawigacja w TUI) oraz Ctrl+Enter (kopiowanie zaznaczonej pozycji w TUI).

Kontrola instancji odbywa się przez nazwany mutex o nazwie AutoCopy2_Instance_Mutex_Igor, co zapobiega uruchomieniu wielu kopii programu (flaga --force to omija).

Wersja Linux (X11)

Wersja linuksowa wykorzystuje rozszerzenie XRecord do monitorowania zdarzeń myszy i klawiatury w całym systemie X11:

  1. Rejestracja: tworzy kontekst XRecord do przechwytywania zdarzeń przycisków myszy i klawiszy modyfikujących od wszystkich klientów X.
  2. Wykrywanie kliknięć: monitoruje ButtonRelease dla przycisku 1 (lewy).
  3. Walidacja modyfikatorów: sprawdza stan klawiszy Alt i Ctrl przez XQueryPointer.
  4. Wykonanie: po 200 ms opóźnienia symuluje Ctrl+C przez XTest (XTestFakeKeyEvent).
  5. Odczyt schowka: pobiera tekst przez mechanizm X Selection (CLIPBOARD).

Wersja Linux posiada rownież wątek obsługi schowka, który pozwala na kopiowanie tekstu z powrotem do schowka systemowego (funkcja w trybie TUI).

Wymagania

Wersja Windows

  • System operacyjny: Windows XP SP3 i nowsze z obsługą Win32 API.
  • Architektura: x86 lub x64.
  • Kompilacja: MinGW-w64 (GCC dla Windows).
  • Zero zależności runtime – binarka zawiera wszystkie wymagane biblioteki przy kompilacji z flagą -static.

Wersja Linux (X11)

  • System operacyjny: dowolna dystrybucja Linux z serwerem X11.
  • Kompilacja: GCC z bibliotekami X11, XTest, XFixes, XRecord, pthread.
  • Debug: libxcb, libXau, libXdmcp (dla linkowania statycznego).

Instalacja i uruchomienie

Windows – kompilacja

Pobierz kod źródłowy i skompiluj kompilatorem MinGW-w64:

gcc autocopy.c -o autocopy.exe -lkernel32 -luser32 -lgdi32 -Wall -O2 -static

Do automatycznej kompilacji można użyć Makefile:

make

Po kompilacji umieść plik autocopy.exe w dowolnym folderze (opcjonalnie dodaj do zmiennej PATH). Uruchom:

autocopy.exe [opcje]

Linux – kompilacja

Zainstaluj wymagane pakiety deweloperskie:

Debian/Ubuntu:

sudo apt-get install build-essential libx11-dev libxtst-dev libxfixes-dev libxrecord-dev libxcb-dev libxau-dev libxdmcp-dev

Fedora/RHEL:

sudo dnf install gcc make libX11-devel libXtst-devel libXfixes-devel libXrandr-devel libXext-devel libxcb-devel libXau-devel libXdmcp-devel

Skompiluj z linkowaniem dynamicznym:

gcc autocopy_linux.c -o autocopy_linux -lX11 -lXtst -lXfixes -lpthread

Lub statycznym (większy plik, ale działa bez bibliotek deweloperskich):

gcc -static autocopy_linux.c -o autocopy_linux -Wl,--start-group -lX11 -lXtst -lXfixes -lXext -lxcb -lXau -lXdmcp -lpthread -ldl -lrt -lresolv -Wl,--end-group

Uruchom:

./autocopy_linux [opcje]

Opcje wiersza poleceń – szczegółowy opis

Tryby wyświetlania

--tui Włącza Terminal User Interface – tryb wizualny z logiem, statystykami na żywo i możliwością przewijania.
--showtext Wyświetla skopiowany tekst w konsoli (domyślnie wyłączone).

Wyzwalanie kliknięciem

--1click Wyzwala po pojedynczym kliknięciu (domyślne).
--2click Wyzwala po podwojnym kliknięciu.
--3click Wyzwala po potrojmym kliknięciu.

Klawisze modyfikujące

--alt Kopiuje tylko przy wciśniętym lewym Alt.
--ctrl Kopiuje tylko przy wciśniętym lewym Ctrl.
--ctrl1 Zawsze zezwala na kopiowanie pojedynczym kliknięciem + Ctrl.
--ctrl2 Zawsze zezwala na kopiowanie podwojnym kliknięciem + Ctrl.

Konfiguracja czasowa

--mintime <ms> Minimalny czas między kliknięciami (domyślnie: 0 ms).
--maxtime <ms> Maksymalny czas między kliknięciami (domyślnie: czas podwojnego kliknięcia systemu, ok. 500 ms).

Zarządzanie buforem (TUI)

--maxline <N> Maksymalna liczba linii w buforze TUI (Windows, domyślnie: 100, zakres: 10-100000).
--maxlinebuffer <M> Maksymalna liczba bajtów na linię (Windows, domyślnie: 65536 = 64 KB, zakres: 256-1048576).
--logbuffer N Maksymalna liczba linii w buforze TUI (Linux, domyślnie: 200).
--linesize M Maksymalny rozmiar tekstu w znakach na linię logu (Linux, domyślnie: 4096).

Logowanie i pliki

--log <plik> Zapisuje skopiowany tekst do pliku z znacznikami czasowymi.

Pomoc i informacje

-h Krotka pomoc.
--help Szczegołowa dokumentacja.
--version Wyświetla wersję programu.
--force Wymusza uruchomienie kolejnej instancji (Windows, pomija blokadę mutex).
-b, --batch Tryb batch – bez wyświetlania na konsoli (Linux, do pracy w tle).

Sterowanie w trybie TUI

Strzałka w górę Przesuwa zaznaczenie w górę w logu.
Strzałka w dół Przesuwa zaznaczenie w dół w logu.
Ctrl+Enter Kopiuje zaznaczoną pozycję z logu do schowka.
u / U Przewijanie o stronę w górę (Linux).
d / D Przewijanie o stronę w dół (Linux).
Ctrl+Z Wyjście z programu (Windows).
Ctrl+C Wyjście z programu (Linux).

Przykłady użycia

Windows

1. Podstawowe użycie z wyświetlaniem tekstu

autocopy.exe --showtext

Wyzwala po pojedynczym kliknięciu i wyświetla skopiowany tekst w konsoli.

2. Podwojne kliknięcie z Alt

autocopy.exe --2click --alt

Kopiuje tylko po podwojnym kliknięciu z wciśniętym lewym Alt.

3. Tryb TUI z logowaniem do pliku

autocopy.exe --tui --log clipboard.txt

Włącza interfejs TUI z statystykami i zapisuje kopiowany tekst do pliku clipboard.txt z oznaczeniami czasowymi.

4. Najbardziej przydatna opcja

autocopy.exe --2click --tui --showtext

Łączy tryb podwojnego kliknięcia z interfejsem TUI i wyświetlaniem tekstu. Zalecane przez autora jako najbardziej uniwersalne ustawienie.

5. Potrojne kliknięcie z konfiguracją czasową

autocopy.exe --3click --mintime 200 --maxtime 800 --showtext

Wymaga potrojnego kliknięcia w oknie 200-800 ms między kliknięciami; wyświetla tekst.

6. Ctrl + kliknięcie z własnym buforem

autocopy.exe --ctrl1 --ctrl2 --maxline 200 --maxlinebuffer 131072 --tui

Zezwala na Ctrl+pojedyncze i Ctrl+podwojne kliknięcie z większym buforem i trybem TUI.

Linux

1. Uruchomienie domyślne

./autocopy_linux

Kopiuje po pojedynczym kliknięciu, wyświetla tekst w konsoli.

2. Podwojne kliknięcie z Alt

./autocopy_linux --2click --alt

3. Tryb TUI z logowaniem do pliku

./autocopy_linux --tui --log ~/autocopy_log.txt

4. Tryb batch (praca w tle)

./autocopy_linux -b

5. Pojedyncze kliknięcie z Ctrl

./autocopy_linux --ctrl1

Jest to rownoznaczne z --ctrl --1click.

Różnice między wersją Windows a Linux

Cecha Windows Linux
Środowisko Win32 API, MinGW X11, XRecord, XTest
Rozmiar pliku ~100-200 KB (static) ~38 KB (dynamic) / ~2,7 MB (static)
Kontrola instancji Mutex systemowy Brak (jedna instancja przez PID)
Wyjście z programu Ctrl+Z lub zamknięcie okna Ctrl+C w terminalu
Nawigacja w TUI Strzałki gora/dół Strzałki gora/dół, u/d (strona), Home/End
Ograniczenie bufora TUI –maxline, –maxlinebuffer –logbuffer, –linesize
Ctrl+Shift+Enter w TUI Brak Kopiuje wszystkie wpisy z sesji

Bezpieczeństwo

Program posiada kilka wbudowanych zabezpieczeń:

  • Samo-detekcja: nie wyzwala się po kliknięciu we własnym oknie konsoli.
  • Pojedyncza instancja: tylko jedna kopia programu może działać jednocześnie (z możliwością wymuszenia flagą --force).
  • Obsługa sygnałów: w Windows zapobiega przypadkowemu zamknięciu przez Ctrl+C.
  • Walidacja PID: przed wysłaniem Ctrl+C sprawdzany jest właściciel aktywnego okna.
  • Wyjście awaryjne: Ctrl+Z (Windows) lub Ctrl+C (Linux) zamyka program.

Podsumowanie

autocopy to eleganckie, minimalistyczne narzędzie dla każdego, kto regularnie pracuje z kopiowaniem tekstu w systemie Windows lub Linux. Dzięki zastosowaniu niskopoziomowych haków systemowych (WH_MOUSE_LL w Windows) i rozszerzenia XRecord (w Linux) program jest niezwykle oszczędny – czeka w tle, nie zużywając praktycznie zasobów procesora.

Bogaty zestaw opcji (tryb kliknięcia, klawisze modyfikujące, konfiguracja czasowa, tryb TUI z logowaniem) sprawia, że sprawdzi się zarowno w codziennej pracy biurowej, jak i w zaawansowanych procesach analizy danych czy dokumentacji. Wersja ANSI C dodatkowo oferuje całkowitą niezależność – pojedynczy plik wykonywalny, który działa bez żadnych zewnętrznych zależności.

Źrodla: github.com/IgorBrzezek/autocopy

Nawigacja

← Generator plików WAV
Pobieranie audio + video z YouTube →
  • Szukaj

  • Kategorie

    • IT ogólnie (147)
      • Bezpieczeństwo (19)
        • Model AAA (7)
        • Szyfrowanie (1)
      • CCTV (3)
      • Hardware (2)
      • Podstawy informatyki (1)
      • Sieci (35)
        • Cisco (4)
          • Obsługa haseł (2)
        • MikroTik (8)
        • Pomiary w sieciach LAN (6)
          • iptraf-ng (3)
        • Protokół ARP (5)
        • Symulator sieci GNS3 (3)
        • WLAN / WiFi (5)
      • Software (78)
        • Bazy danych (13)
        • Programowanie (21)
        • Systemy operacyjne (21)
          • Linux Debian (18)
        • Windows (8)
      • WiFi (2)
      • Wirtualizacja (26)
  • Ostatnie wpisy

    • WinScreen czyli terminal z wirtualnymi oknami
    • Style Mover czyli przenoszenie stylów HTML
    • Generator obrazów AI za pomocą API
    • Generator modulacji AM i FM
    • Generator plików tekstowych i binarnych
  • Strona odwiedzona

    od 11.01.2013

  • Doskonała platforma e-learningowa Uzyskaj certyfikat IT

Proudly powered by WordPress Theme: Parament by Automattic.
7ads6x98y