GPM(8) System Manager's Manual GPM(8)

gpm - o ustensilă de tăiat și lipit și un server de mouse pentru console virtuale

gpm [ opțiuni ]

Acest pachet încearcă să fie un server de mouse util pentru aplicațiile care rulează în consola Linux. Se bazează pe pachetul „selection”, iar o parte din codul său provine chiar din «selection». Acest pachet este destinat să înlocuiască „selection” ca mecanism de tăiere și lipire; de asemenea, oferă facilități suplimentare. Pachetul „selection” a oferit prima implementare de tăiere și lipire pentru Linux folosind două butoane ale mouse-ului, iar memoria tampon de tăiere este încă numită „memorie tampon de selecție” sau pur și simplu „selecție” în tot acest document. Informațiile de mai jos sunt extrase din fișierul texinfo, care este sursa preferată de informații.

Executabilul «gpm» este menit să acționeze ca un demon (astfel, gpmd ar fi un nume mai potrivit pentru el). Această secțiune este menită să descrie opțiunile din linia de comandă pentru «gpm», în timp ce elementele sale interne sunt prezentate în secțiunea următoare.

Din cauza restricțiilor din apelul de sistem ioctl(TIOCLINUX), «gpm» trebuie să fie rulat de către superutilizator. Restricțiile au fost adăugate în ultimele nuclee 1.1 pentru a remedia o breșă de securitate legată de selecția și descărcarea ecranului.

Serverul poate fi configurat în funcție de gustul utilizatorului, iar orice aplicație care utilizează mouse-ul va moșteni atitudinea serverului. De la versiunea 1.02 până la 1.19.2 a fost posibil ca orice utilizator conectat la consola de sistem să schimbe comportamentul mouse-ului folosind opțiunea „-q”. Acest lucru nu mai este posibil din motive de securitate.

Începând cu versiunea 0.97, programul server se plasează singur în fundal. Pentru a omorî «gpm», puteți să-l reinvocați cu ajutorul opțiunii „-k” din linia de comandă, deși comanda «killall gpm» poate fi o alegere mai bună.

Versiunea 1.10 adaugă capacitatea de a executa comenzi speciale în anumite circumstanțe. Comenzile speciale se referă în mod implicit la repornirea și oprirea sistemului, dar utilizatorul poate specifica alegerea sa personală. Capacitatea de a invoca comenzi cu ajutorul mouse-ului este una foarte utilă pentru programatori, deoarece permite emiterea unei închideri curate atunci când tastatura este blocată și nu există nicio rețea disponibilă pentru a readuce sistemul într-o stare sănătoasă.

Comenzile speciale sunt comutate prin triplu clic pe butonul stâng și drept - un eveniment puțin probabil în timpul utilizării normale a mouse-ului. Cel mai simplu mod de a face triplu clic este apăsarea unuia dintre butoane și triplul clic pe celălalt. Atunci când se comută procesarea specială, apare un mesaj pe consolă (și difuzorul emite două bipuri, dacă aveți un difuzor); dacă utilizatorul eliberează toate butoanele și apasă din nou pe unul dintre ele în decurs de trei secunde, atunci se execută comanda specială corespunzătoare butonului respectiv.

Comenzile speciale implicite sunt:

Repornește sistemul prin semnalizarea procesului init
Execută comanda «/sbin/shutdown -h now»
Execută comanda «/sbin/shutdown -r now»

Opțiunea din linia de comandă „-S” activează procesarea comenzilor speciale și permite modificarea celor trei comenzi speciale. Pentru a accepta comenzile implicite, utilizați -S "" (de exemplu, specificați un argument gol). Pentru a specifica propriile comenzi, utilizați o listă separată prin două puncte pentru a specifica comenzile asociate butonului din stânga, mijloc și dreapta. Dacă una dintre comenzi este goală, aceasta este interpretată ca „trimite un semnal către procesul init”. Această operație particulară este acceptată, în plus față de executarea comenzilor externe, deoarece uneori erorile grave pun sistemul în imposibilitatea de a executa un apel fork(); în aceste cazuri rare, programatorul ar trebui să poată oricum să oprească sistemul, iar omorârea lui «init» dintr-un proces în curs de execuție este singura modalitate de a face acest lucru.

Ca un exemplu, -S ":telinit 1:/sbin/halt", asociază omorârea init cu butonul din stânga, trecerea la un singur utilizator cu cel din mijloc și oprirea sistemului cu butonul din dreapta.

În mod evident, administratorii de sistem trebuie să fie atenți la comenzile speciale, deoarece «gpm» rulează cu permisiuni de superutilizator. Comenzile speciale sunt cele mai potrivite pentru calculatoarele al căror mouse poate fi accesat fizic doar de persoane de încredere.

Opțiunile disponibile în linia de comandă sunt următoarele:

Stabilește valoarea accelerației utilizată atunci când un singur eveniment de mișcare este mai lung decât delta (a se vedea opțiunea „-d”).
Pornește cu selecția lipirii dezactivată. Aceasta este o măsură de securitate; un atac plauzibil asupra unui sistem pare să fie acela de a introduce o comandă shell periculoasă în memoria tampon de selecție (rm -rf /), inclusiv întreruperea de linie de terminare, după care victima nu trebuie decât să facă clic pe butonul din mijloc al mouse-ului... Începând cu versiunea 1.17.2, acest lucru s-a transformat într-un mecanism de îmbătrânire mai general; demonul «gpm» poate dezactiva (îmbătrâni) lipirea selecției în mod automat după o perioadă de inactivitate. Pentru a activa acest mod, trebuie doar să se dea parametrul opțional limita (fără spațiu între !) care este interpretat ca fiind timpul în secunde pentru care o selecție este considerată validă și pasibilă de lipire. Începând cu versiunea 1.15.7, este furnizat un program trivial numit „disable-paste”. Următoarele reprezintă o bună adăugare la „/etc/profile” dacă permiteți mai multor utilizatori să lucreze la consolă.

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

Stabilește viteza de transmisie în baud.
Stabilește secvența de butoane. 123 este secvența normală, 321 poate fi folosit de stângaci, iar 132 poate fi util cu mouse-urile cu două butoane (în special în cadrul Emacs). Toate permutările de butoane sunt permise.
Stabilește valoarea delta. Atunci când un singur eveniment de mișcare este mai lung decât delta, accel este utilizat ca factor de multiplicare; (trebuie să fie 2 sau mai mare).
Nu intră automat în funcțiune în fundal la pornire și înregistrează mesajele în fluxul de eroare standard, nu în mecanismul syslog. Acest lucru este util pentru depanare; în versiunile anterioare, acest lucru se făcea cu o opțiune de compilare.
În cazul dispozitivelor glidepoint, emulați butonul specificat prin atingere. numărul trebuie să fie ,1 2 sau 3, și se referă la numărul butonului înainte de efectuarea reamplasării butonului cu „-B”. Această opțiune se aplică la decodificarea mman și ps2. În mod implicit nu este emulat niciun buton, deoarece apăsarea ps2 este incompatibilă cu unele mouse-uri ps2 normale.
Afișează un rezumat al opțiunilor liniei de comandă.
Stabilește interval pentru a fi utilizat ca limită superioară de timp pentru clicuri multiple. În cazul în care intervalul dintre evenimentele de ridicare și coborâre a butonului este mai mic decât limita, apăsarea este considerată un clic dublu sau triplu. Timpul este exprimat în milisecunde.
Omoară un «gpm» în execuție. Acest lucru poate fi folosit de utilizatorii „busmouse” pentru a omorî «gpm» înainte de a rula X (cu excepția cazului în care folosește „-R” sau dacă limitarea la o singură deschidere este eliminată din nucleu).
Alege tabelul de căutare inword(). Argumentul set-caractere este o listă de caractere. „-” este utilizată pentru a specifica un interval, iar „\” este utilizat pentru a eluda caracterul următor sau pentru a furniza coduri octale. Numai caracterul vizibil poate apărea în setul de caractere, deoarece caracterele de control nu pot apărea în memoria video în modul text, de unde se taie selecția.
Alege fișierul mouse pentru a fi deschis. Trebuie să fie înainte de „-t” și „-o”.
Activează modul multiplu. Demonul va citi două dispozitive de mouse diferite. Orice opțiune ulterioară se va referi la cel de-al doilea dispozitiv, în timp ce orice opțiune anterioară va fi utilizată pentru primul dispozitiv. Această opțiune forțează automat activarea opțiunii de repetare (-R).
Opțiunea funcționează în mod similar cu opțiunea „-o” din mount; este utilizată pentru a specifica o listă de „opțiuni suplimentare” specifice fiecărui tip de mouse. Lista este despărțită prin virgule. Opțiunile dtr, rts sau ambele sunt utilizate de inițializarea serială pentru a comuta liniile modemului ca, compatibil cu versiunile anterioare ale «gpm»; rețineți totuși că utilizarea opțiunii „-o dtr” asociată cu tipuri de mouse care nu sunt seriale poate genera acum o eroare. Și, apropo, utilizați „-o” după „-m” și după „-t”.
Forțează indicatorul să fie vizibil în timpul selecției. Acesta este comportamentul din selection-1.7, dar uneori este confuz. Valoarea implicită este de a nu afișa indicatorul, ceea ce poate fi, de asemenea, derutant.
Stabilește capacitatea de reacție. O capacitate de reacție mai mare este utilizată pentru o mișcare mai rapidă a cursorului.
Determină «gpm» să acționeze ca un repetitor: orice date de mouse primite în modul grafic vor fi produse pe fifo „/dev/gpmdata” în protocolul nume, dat ca argument opțional (fără spațiu între !). În principiu, puteți folosi aceleași nume ca pentru opțiunea „-t”, deși repetarea în unele protocoale s-ar putea să nu fie implementată pentru o vreme. În plus, puteți specifica raw ca nume, pentru a repeta datele mouse-ului octet cu octet, fără nicio traducere de protocol. În cazul în care nume este omis, valoarea implicită este „msc”. Utilizând «gpm» în modul repetitor, puteți configura serverul X pentru a utiliza fifo-ul său ca dispozitiv de mouse. Această opțiune este utilă pentru posesorii de bus-mouse pentru a trece peste limitarea cu o singură deschidere. Este, de asemenea, o modalitate ușoară de a gestiona acele mouse-uri stupide cu mod dual care vă obligă să țineți butonul din mijloc apăsat în timp ce schimbați modul video. Opțiunea este forțată de opțiunea „-M”.
Stabilește rata de eșantionare pentru dispozitivul mouse-ului.
Activează procesarea comenzilor speciale și, opțional, specifică comenzile personalizate ca o listă separată prin două puncte. Consultați mai sus pentru o descriere detaliată a comenzilor speciale.
Stabilește tipul de mouse. Utilizați „-t help” pentru a obține o listă cu tipurile permise. Începând cu versiunea 1.18.1, lista arată, de asemenea, ce protocoale sunt disponibile ca repetitoare (a se vedea „-R” de mai sus), marcându-le cu un asterisc („*”).

Utilizați „-t” după ce ați selectat dispozitivul mouse-ului cu „-m”.

Afișează informațiile despre versiune și iese.
-2
Forțează două butoane. Aceasta înseamnă că butonul din mijloc, dacă există, va fi luat ca și cum ar fi fost cel din dreapta.
-3
Forțează trei butoane. În mod implicit, mouse-ul este considerat ca fiind unul cu două butoane, până când este apăsat butonul din mijloc. Dacă există trei butoane, cel din dreapta este utilizat pentru a extinde selecția, iar cel din mijloc pentru a o lipi. Atenție: dacă folosiți opțiunea „-3” cu un mouse cu 2 butoane, nu veți putea lipi selecția.

Pentru a selecta textul, apăsați butonul stâng al mouse-ului și trageți mouse-ul. Pentru a lipi textul în aceeași consolă sau în altă consolă, apăsați butonul din mijloc. Butonul din dreapta este utilizat pentru a extinde selecția, ca în «xterm».

Mouse-urile cu două butoane folosesc butonul din dreapta pentru a lipi textul.

Clicurile duble și triple selectează cuvinte și linii întregi. Se recomandă utilizarea opțiunii „-p” pentru un răspuns vizual optim.

În cazul în care este evidențiat un spațiu după conținutul unei linii și dacă nu există alt text pe restul liniei, restul liniei va fi selectat automat. În cazul în care sunt selectate mai multe linii, spațiile finale evidențiate de pe fiecare linie vor fi eliminate din memoria tampon de selecție.

Orice ieșire pe consola virtuală care conține selecția va șterge selecția evidențiată de pe ecran, pentru a menține integritatea afișajului, deși conținutul tamponului de lipire nu va fi afectat.

Mecanismul de selecție este dezactivat dacă consola virtuală de control este plasată în modul grafic, de exemplu, atunci când se rulează X11, și este reactivat atunci când se reia modul text; (dar pentru aceasta, a se vedea secțiunea ERORI de mai jos).

Este posibil ca serverul «gpm» să aibă probleme de interacțiune cu X: dacă mouse-ul dumneavoastră este un dispozitiv cu o singură deschidere (adică un mouse de bus), trebuie să omorâți «gpm» înainte de a porni X sau să utilizați opțiunea „-R” (a se vedea mai sus). Pentru a omorî «gpm» trebuie doar să apelați «gpm -k». Această problemă nu se aplică la mouse-uri seriale.

Două instanțe de «gpm» nu pot rula pe același sistem. Dacă aveți două mouse-uri, utilizați opțiunea „-M” (a se vedea mai sus).

În timp ce consola curentă este în modul grafic, «gpm» doarme până la revenirea la modul text (cu excepția cazului în care se utilizează opțiunea „ -R”). Prin urmare, nu va răspunde clienților. În orice caz, este puțin probabil ca clienții dornici de mouse să se avânte în consolele ascunse.

Clienții livrați împreună cu «gpm» nu sunt actualizați, astfel că există potențiale riscuri de securitate atunci când îi folosiți.

Andrew Haylett <ajh@gec-mrc.co.uk> (codul de selecție original, codul lui «selection»)
Ian Zimmerman <itz@speakeasy.org> (fostul responsabil de întreținere)
Alessandro Rubini <rubini@linux.it> (fostul responsabil de întreținere (încă ajută foarte mult))
Nico Schottelius <nico-gpm2008@schottelius.org> (actualul responsabil de întreținere)
Mulți și mulți contribuitori, atât pentru «selection», cât și pentru «gpm».

Actualul responsabil cu întreținerea este Nico Schottelius. Dar fără ajutorul lui Alessandro Rubini și al listei de discuții mi-ar fi imposibil să mențin „gpm”. Lista de discuții pentru dezvoltare poate fi accesată la gpm@lists.linux.it. Mai multe informații despre listă se găsesc în fișierul README, parte a distribuției sursă a „gpm”.

/var/run/gpm.pid PID-ul de funcționare a «gpm»
/dev/gpmctl     Un soclu de control pentru clienți
/dev/gpmdata    Fifo scris de un demon repeater (`-R').

 mev(1)        Un exemplu de client pentru demonul «gpm».
 gpm-root(1)   Un gestionar pentru evenimentele Control-Mouse.

Fișierul de informații despre «gpm», care oferă informații mai complete și explică cum se poate scrie un client gpm.

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

februarie 2002 4th Berkeley Distribution