gpm - narzędzie do kopiowania i wklejania oraz serwer myszy konsoli
wirtualnych
gpm [
opcje ]
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.
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.
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
- The option works similarly to the “-o” option
of mount; it is used to specify a list of “extra options”
that are specific to each mouse type. The list is comma-separated. The
options `dtr', `rts' or `both' are used by the serial initialization to
toggle the modem lines like, compatibly with earlier gpm versions; note
however that using -o dtr associated with non-plain-serial mouse types may
now generate an error. And by the way, use -o after -m and after -t.
- -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.
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).
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.
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.
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.
/var/run/gpm.pid PID uruchomionego gpm
/dev/gpmctl Gniazdko kontrolne dla klientów
/dev/gpmdata Kolejka fifo zapisywana przez powielacz (opcja -R).
gpm-types(7)
Opis aktualnych typów urządzeń wskazujących obsługiwanych przez gpm.
Plik info o
gpm, który zawiera kompletne informacje i
wyjaśnia jak napisać klienta gpm.
Autorami polskiego tłumaczenia niniejszej strony podręcznika
są: Jarek Wołoszyn <
[email protected]>, Robert Luberda
<
[email protected]> i Michał Kułach
<
[email protected]>
Niniejsze tłumaczenie jest wolną dokumentacją.
Bliższe informacje o warunkach licencji można uzyskać
zapoznając się z
GNU
General Public License w wersji 3 lub nowszej. Nie przyjmuje się
ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy
zgłaszać na adres listy dyskusyjnej
[email protected]