gpm(8) narzędzie do kopiowania i wklejania oraz serwer myszy konsoli

SKŁADNIA

gpm [ opcje ]

OPIS

Ten program stara się być użytecznym serwerem myszy dla aplikacji uruchamianych na konsoli linuksowej. Bazuje on na pakiecie "selection" i część jego kodu pochodzi właśnie z selection. Pakiet ma być zamiennikiem programu "selection" jako mechanizmu kopiowania i wklejania, zapewnia także dodatkowe usługi. "Selection" było pierwszą implementacją mechanizmu kopiowania i wklejania w Linuksie, używającą dwóch przycisków myszy. Zaznaczony tekst będzie dalej w tym dokumencie nazywany zaznaczeniem (ang. selection). Poniższe informacje zostały wzięte z pliku texinfo, który nadal jest polecanym źródłem informacji.

Plik wykonywalny gpm ma działać jako demon (tak więc gpmd byłoby dla niego lepszą nazwą). Ta część opisuje opcje w linii poleceń gpm, a funkcje programu opisuje kolejna część.

Z powodu ograniczeń wywołania systemowego "ioctl(TIOCLINUX)", gpm musi być uruchamiany przez administratora. Ograniczenia zostały dodane w ostatnich jądrach 1.1, w celu usunięcia błędu ochrony związanego z zaznaczaniem i robieniem zrzutów ekranowych.

Serwer może być ustawiony, tak by pasował do gustu użytkownika i dowolne aplikacje używające myszy odziedziczą te ustawienia. W wersjach od 1.02 aż do 1.19.2, właściwości myszy mogły być zmieniane przez każdego użytkownika logującego się na konsoli systemowej za pomocą opcji -q. Ze względów bezpieczeństwa ta opcja nie jest już dostępna.

Od wersji 0.97 serwer sam umieszcza się w tle. Aby usunąć gpm z pamięci należy wywołać go jeszcze raz z opcją -k, chociaż killall gpm może być lepszym wyjściem.

POLECENIA SPECJALNE

Wersja 1.10 dodała możliwość wykonywania poleceń specjalnych w odpowiednich warunkach. Standardowo jest to ponowne uruchomienie lub zatrzymanie systemu, ale użytkownik może ustawić własne. Możliwość wywoływania poleceń jest ciekawa dla programistów, gdyż pozwala na czyste wyłączenie komputera, kiedy klawiatura jest zablokowana i niedostępna jest sieć, w celu przywrócenia systemu do stanu używalności.

Polecenia specjalne są włączane przez potrójne kliknięcie lewym i prawym przyciskiem -- bardzo nietypowe przy normalnym używaniu myszy. Najprościej jest je wykonać trzymając jeden przycisk i trzykrotnie klikając drugim. Kiedy wykonywanie specjalnych komend zostanie uruchomione, na konsoli pojawi się wiadomość (i dwa dźwięki z głośniczka jeśli się go posiada); jeśli użytkownik puści wszystkie przyciski i wciśnie znowu jeden z nich w ciągu trzech sekund, wtedy wykonane zostanie polecenie przypisane do tego przycisku.

Standardowe polecenia specjalne to:

lewy przycisk
Ponowne uruchomienie systemu, przez wysłanie sygnału do procesu init.
środkowy przycisk (jeśli jest)
Wykonuje /sbin/shutdown -h now
prawy przycisk
Wykonuje /sbin/shutdown -r now

Opcja -S włącza wykonywanie poleceń specjalnych i pozwala na zmianę trzech specjalnych poleceń. Aby zaakceptować standardowe polecenia należy wpisać -S "" (podaje pusty argument). Aby podać swoje własne polecenia, proszę użyć listy rozdzielonej dwukropkami podając polecenia dla lewego, środkowego i prawego przycisku. Jeśli jakieś polecenie jest puste, zostanie zinterpretowane jako "wyślij sygnał do procesu inicjującego (init)". Ta szczególna operacja jest udostępniana w połączeniu z wykonywaniem poleceń zewnętrznych, ponieważ czasem błąd programu uniemożliwia forkowanie; w takim rzadkim przypadku programista powinien być w stanie wyłączyć system pomimo tego, a zabicie procesu init jest jedyną możliwością zrobienia tego.

Jako przykład: -S ":telinit 1:/sbin/halt", przypisuje zabicie init lewemu przyciskowi, uruchomienie w trybie jednego użytkownika środkowemu i zatrzymanie systemu prawemu przyciskowi.

Administratorzy systemu powinni oczywiście postępować bardzo ostrożnie z tymi poleceniami, ponieważ gpm uruchamia się z prawami administratora. Polecenia specjalne są dobre tylko w komputerach, gdzie fizyczny dostęp do myszy jest możliwy tylko dla zaufanych osób.

OPCJE WIERSZA POLECEŃ

W wierszu poleceń dostępne są następujące opcje:

-a przysp
Ustawia przyspieszenie myszy kiedy pojedynczy ruch myszą jest dłuższy niż delta (zobacz -d).
-A[limit]
Uruchamia z wyłączonym mechanizmem wklejania. Jest to pomyślane jako środek bezpieczeństwa - prawdopodobny wydaje się następujący atak na system: ktoś wkleja do bufora selekcji złośliwe polecenie powłoki (rm -rf /) włączając znak końca linii, a ofiara naciska środkowy przycisk myszy... W wersji 1.17.2 został wprowadzony bardziej ogólny mechanizm czasu oczekiwania - serwer gpm może samoczynnie wyłączyć mechanizm wklejania po pewnym czasie nieaktywności. Aby włączyć ten tryb pracy, należy podać opcjonalny parametr limit (bez spacji pomiędzy opcją a argumentem!), który zostanie zinterpretowany jako czas w sekundach, w którym bufor zaznaczenia jest uważany za poprawny i możliwy do wklejania. W wersji 1.15.7 został dodany prosty program "disable-paste". Jeżeli wiele użytkowników może pracować na konsoli systemowej, to dobrym dodatkiem do pliku /etc/profile mogą być następujące wiersze:

case $( /usr/bin/tty ) in
/dev/tty[0-9]*) /usr/bin/disable-paste ;;
esac

-b baud
Ustawia prędkość (baud rate).
-B sekwencja
Ustawia kolejność przycisków. ``123'' jest normalnym ustawieniem, ``321'' może być używane przez osoby leworęczne, a ``132'' może być użyteczne przy myszy dwuprzyciskowej (zwłaszcza w Emacsie). Wszystkie kombinacje są dozwolone.
-d delta
Ustawia wartość delty. Kiedy pojedynczy ruch myszą jest dłuższy niż delta, przysp jest używane jako mnożnik (musi być większe lub równe 2).
-D
Przy uruchamianiu nie uruchamia się automatycznie w tle i wypisuje wiadomości na standardowego wyjście błędów, a nie poprzez mechanizm syslog. Jest to użyteczne w celu odpluskiwania; w poprzednich wersjach było to robione za pomocą opcji kompilacji.
-g numer
Używany z urządzeniami typu glidepoint, emuluje określony przycisk przez stukanie w gładzik. Numer musi wynosić 1, 2 lub 3 i określa numer przycisku przed zmianą ustawień w opcji -B. Ta opcja wiąże się z dekodowaniem mman i ps2. Standardowo żaden przycisk nie jest emulowany, ponieważ stukanie w tych urządzeniach jest niekompatybilne z normalnymi myszkami ps2.
-h
Pokazuje streszczenie opcji w wierszu poleceń.
-i interwał
Ustawia górny limit czasowy przy wielokrotnych kliknięciach. Jeśli czas pomiędzy puszczeniem i wciśnięciem przycisku jest mniejszy niż ten interwał, uważane jest to za podwójne lub potrójne kliknięcie. Jednostką są milisekundy.
-k
Zabija działający gpm. Może być używane przez użytkowników myszy typu "bus" w celu zabicia gpm, przed uruchamianiem X (chyba że użyją opcji -R lub ograniczenie pojedynczego otwarcia zostanie usunięte z jądra).
-l kodowanie
Wybiera tablicę (LUT) dla "inword()". Argument kodowanie jest listą znaków. "-" jest używane do podania zakresu, a "\" do ochrony następnego znaku lub zapewnienia kodu ósemkowego. Tylko widoczne znaki mogą pojawić się w kodowaniu, ponieważ znaki specjalne nie mogą pojawić się w pamięci video w trybie tekstowym podczas kopiowania zaznaczenia.
-m plik
Wybiera urządzenie myszy do otwarcia. Musi być podane przed opcją -t i -o.
-M
Włącza tryb wielu urządzeń. Demon będzie czytał dwa różne urządzenia myszy. Każda następna opcja odnosi się do drugiego urządzenia, a każda wcześniejsza do pierwszego. Ta opcja automatycznie uruchamia "powielacz" (opcja -R).
-o lista-opcji-dodatkowych
Opcja ta działa podobnie do opcji "-o" polecenia mount - pozwala określić listę "dodatkowych opcji", specyficznych dla danego typu myszy. Lista ta jest rozdzielona przecinkami. Opcje dtr, rts lub both są używane przy inicjalizacji myszy szeregowej do włączenia linii modemu; opcje te są zgodne ze wcześniejszymi wersjami gpm, jednakże używanie -o dtr z urządzeniami myszy nie będącymi typu serial, może teraz generować błąd.
-p
Włącza widoczny wskaźnik podczas zaznaczania. Tak zachowuje się selection-1.7, lecz czasem jest to denerwujące. Standardowo wskaźnik nie jest pokazywany, co może być równie denerwujące.
-r numer
Ustawia czułość jako wartość procentową (od 1 do 100, domyślnie 10). Niższa czułość może posłużyć do zwolnienia ruchów kursora, lecz nie da się w ten sposób go przyspieszyć (zob. -a).
-R[nazwa]
Zmienia gpm, aby działał jako powielacz: wszystkie dane od myszy w trybie graficznym zostaną przekazane do kolejki fifo /dev/gpmdata w protokole nazwa. W szczególności można użyć tych samych nazw, jak dla opcji -t, aczkolwiek tryb powtarzania dla pewnych protokołów może jeszcze nie być zaimplementowany. Dodatkowo, można podać raw jako nazwę, aby uzyskać powtarzanie bajt po bajcie bez jakiejkolwiek translacji protokołów. Jeżeli nie podano nazwy, to wartością domyślną jest msc. Używając gpm w trybie powtarzania można skonfigurować serwer X do używania jego kolejki jako urządzenia myszy. Ta opcja jest przydatna dla właścicieli myszy typu bus w celu ominięcia ograniczeń pojedynczego otwarcia. To pozwala w prosty sposób poradzić sobie z głupimi myszami, mogącymi działać w dwóch trybach, co zmusza użytkownika do trzymania środkowego przycisku w czasie zmiany trybu graficznego. Ta opcja jest włączana przez opcję -M.
-s numer
Ustawia częstotliwość próbkowania dla urządzenia myszy.
-S polecenia
Włącza przetwarzanie poleceń specjalnych i opcjonalnie ustawia polecenia specjalne (przez listę oddzieloną dwukropkami). Zob. wyżej na dokładniejszy opis poleceń specjalnych.
-t nazwa
Ustawia typ myszy. Wpis -t help pozwala uzyskać listę możliwych typów. Opcji -t można użyć po wybraniu urządzenia za pomocą opcji -m
-v
Pokazuje informację o wersji i kończy działanie.
-2
Wymusza dwa przyciski. To oznacza, że środkowy przycisk (jeśli istnieje) będzie działał jakby był prawym.
-3
Wymusza trzy przyciski. Standardowo mysz jest uważana za dwuprzyciskową, dopóki środkowy przycisk nie zostanie wciśnięty. Jeżeli są trzy przyciski, prawy jest używany do rozszerzenia zaznaczenie, a środkowy do wklejenia. Uwaga: jeśli użyje się opcji -3 z myszką dwuprzyciskową nie będzie móżna wkleić zaznaczenia.

DZIAŁANIE

Aby zaznaczyć tekst proszę wcisnąć lewy przycisk i przeciągnąć myszą. Aby wkleić tekst na tej samej lub innej konsoli należy wcisnąć środkowy przycisk. Prawy przycisk jest używany do zmiany rozmiaru zaznaczenia (tak jak w "xterm").

Myszy dwuprzyciskowe używają prawego przycisku do wklejania.

Podwójne i potrójne kliknięcia zaznaczają cały wyraz lub cały wiersz. Użycie opcji -p jest polecane w celu uzyskania lepszej widoczności.

Jeśli po zawartości wiersza zaznaczona jest kończąca spacja i jeśli nie ma w tym wierszu więcej tekstu, jego reszta zostanie zaznaczona automatycznie. Jeśli zaznaczone jest kilka wierszy, zaznaczone spacje na końcach każdego z nich zostaną usunięte z bufora zaznaczenia.

Jeśli w trakcie zaznaczenia na konsoli wirtualnej wyświetlone zostaną jakieś znaki w zaznaczonym miejscu, podświetlenie zostanie usunięte z ekranu, aby zachować integralność wyświetlania, ale zawartość bufora zostanie nienaruszona.

Mechanizm zaznaczania jest wyłączony jeśli wirtualna konsola zostanie ustawiona w tryb graficzny, np. w czasie uruchamiania X11, i zostanie przywrócona przy powrocie do trybu tekstowego (zob. część BŁĘDY poniżej).

BŁĘDY

Serwer gpm może mieć problemy w czasie współdziałania z X: jeśli dana mysz jest urządzeniem z możliwością pojedynczego otwarcia (np. myszy typu bus), powinno się wyłączyć gpm przed uruchamianiem X lub użyć opcji -R (zob. wyżej). Aby wyłączyć gpm, proszę użyć gpm -k. Ten problem nie dotyczy myszy typu serial.

Dwie instancje gpm nie mogą zostać uruchomione na tym samym systemie. Aby użyć dwóch myszki proszę skorzystać z opcji -M (zob. wyżej).

Podczas gdy aktualna konsola jest w trybie graficznym, gpm jest uśpiony dopóki nie powróci do trybu tekstowego (chyba że zostanie użyte -R). Przez to nie będzie zwracał odpowiedzi klientom. Jednak jest to nietypowe, aby programy wykorzystujące mysz, odczytywały ją na ukrytej konsoli.

Klienty wydzielone z gpm nie są aktualizowane, dlatego używanie ich stanowi potencjalne zagrożenie dotyczące bezpieczeństwa.

AUTORZY

Andrew Haylett <[email protected]> (oryginalny kod selection)
Alessandro Rubini <[email protected]> (stary opiekun
                                            (wciąż bardzo pomaga))
Ian Zimmerman <[email protected]> (stary opiekun)
Nico Schottelius <[email protected]> (opiekun)
A także bardzo wiele innych osób, które pomogły tworzyć selection i gpm.

OPIEKUNOWIE

Obecnym opiekunem jest Nico Schottelius. Jednak bez pomocy Alessandra Rubiniego i członków listy dyskusyjnej, on sam nie podołałby zadaniu opiekowania się gpm. Adres lista dyskusyjnej dla deweloperów to [email protected] Więcej informacji o liście znajduje się w pliku README, w części poświęconej dystrybucji źródeł gpm.

PLIKI

/var/run/gpm.pid PID uruchomionego gpm
/dev/gpmctl      Gniazdko kontrolne dla klientów
/dev/gpmdata     Kolejka fifo zapisywana przez powielacz (opcja -R).

TŁUMACZENIE

Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Jarek Wołoszyn (PTM) <[email protected]>, Robert Luberda (PTM) <[email protected]> i Michał Kułach <[email protected]>.

Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją 1.20.4 oryginału.