KEYMAPS(5) File Formats Manual KEYMAPS(5) NUME keymaps - descrieri ale tabelelor de tastatura pentru loadkeys i dumpkeys DESCRIERE Aceste fiiere sunt utilizate de loadkeys(1) pentru a modifica tabelele de conversie utilizate de controlorul de tastatura din nucleu i generate de dumpkeys(1) din aceste tabele de conversie. Formatul acestor fiiere este vag asemanator cu cel acceptat de xmodmap(1). Fiierul este format din linii de definiie a setului de caractere sau a tastelor sau a irurilor intercalate cu comentarii. Comentariile sunt introduse cu caracterele ! sau # i continua pana la sfaritul liniei. Tot ceea ce urmeaza dupa unul dintre aceste caractere pe linia respectiva este ignorat. Reinei ca nu este necesar ca un comentariu sa inceapa de la prima coloana, ca in cazul xmodmap(1). Sintaxa fiierelor de hari de taste este orientata pe linii; o definiie completa trebuie sa incapa pe o singura linie logica. Liniile logice pot fi, totui, imparite in mai multe linii fizice prin terminarea fiecarei sub-linii cu caracterul de bara oblica inversa (\). INCLUDE FIIERE O harta de taste poate include alte hari de taste utilizand sintaxa include "nume-ruta" DEFINIII ALE SETURILOR DE CARACTERE O linie de definire a setului de caractere este de forma: charset "iso-8859-x" Acesta definete modul in care trebuie interpretate urmatoarele simboluri de taste. De exemplu, in iso-8859-1, simbolul mu (sau micro) are codul 0265, in timp ce in iso-8859-7 litera mu are codul 0354. DEFINIII COMPLETE ALE CODURILOR DE TASTE Fiecare linie de definiie completa a unei taste este de forma: keycode numar-tasta = simbol-tasta simbol-tasta simbol-tasta... numar-tasta este numarul de identificare interna a cheii, aproximativ echivalent cu codul de scanare al acesteia. numar-tasta poate fi dat in notaie zecimala, octala sau hexazecimala. Cifra octala este indicata printr-un zero inainte, iar cea hexazecimala prin prefixul 0x. Fiecare dintre simbolurile-de-tasta reprezinta aciuni de tastatura, dintre care pana la 256 pot fi asociate unei singure taste. Aciunile disponibile includ ieirea codurilor de caractere sau a secvenelor de caractere, comutarea consolelor sau a harilor de taste, pornirea mainii etc; (lista completa poate fi obinuta din dumpkeys(1) prin scrierea dumpkeys -l ). Fiecare simbol-tasta poate fi prefixat de un ,,+" (semnul plus), caz in care acest simbol-tasta este tratat ca o ,,litera" i, prin urmare, este afectat de <> la fel ca i de <> (pentru a fi corect, CapsLock inverseaza starea Shift). Literele ASCII (,,a"-,,z" i ,,A"-,,Z") sunt facute capabile pentru CapsLock in mod implicit. Daca Shift+CapsLock nu ar trebui sa produca un simbol minuscul, punei linii precum keycode 30 = +a A in fiierul de harta. Aciunea care este efectuata atunci cand o anumita tasta este apasata depinde de modificatorii care sunt in vigoare in acel moment. Controlorul de tastatura accepta 9 modificatori. Aceti modificatori sunt denumii (in mod complet aleatoriu) Shift, AltGr, Control, Alt, Alt, ShiftL, ShiftR, CtrlL, CtrlR i CapsShift. Fiecaruia dintre aceti modificatori ii este asociata o pondere de putere de doi, conform tabelului urmator: modificator pondere Shift 1 AltGr 2 Control 4 Alt 8 ShiftL 16 ShiftR 32 CtrlL 64 CtrlR 128 CapsShift 256 Aciunea efectiva a unei taste se determina prin insumarea ponderilor tuturor modificatorilor in vigoare. In mod implicit, niciun modificator nu este in vigoare, astfel incat aciunea numarul zero, adica cea din prima coloana a liniei de definire a unei taste, este efectuata atunci cand tasta este apasata sau eliberata. Atunci cand, de exemplu, sunt in vigoare modificatorii Shift i Alt, aciunea numarul noua (din a zecea coloana) este cea efectiva. Schimbarea starii modificatorilor in vigoare poate fi realizata prin asocierea aciunilor corespunzatoare ale tastelor la tastele dorite. De exemplu, legarea simbolului Shift la o tasta stabilete modificatorul Shift in vigoare atunci cand tasta respectiva este apasata i anuleaza efectul modificatorului atunci cand tasta este eliberata. Legarea simbolului AltGr_Lock la o tasta activeaza AltGr atunci cand tasta respectiva este apasata i anuleaza efectul atunci cand tasta este apasata din nou; (in mod implicit, Shift, AltGr, Control i Alt sunt legate de tastele care poarta o eticheta similara; AltGr poate desemna tasta Alt dreapta). Reinei ca trebuie sa fii foarte ateni atunci cand atribuii tastele modificatoare, altfel va putei trezi cu o harta de tastatura inutilizabila. Daca, de exemplu, definii o tasta pentru a avea Control in prima sa coloana i lasai restul coloanelor sa fie VoidSymbols, vei avea probleme. Acest lucru se datoreaza faptului ca apasarea tastei pune in vigoare modificatorul Control, iar urmatoarele aciuni sunt cautate din a cincea coloana (a se vedea tabelul de mai sus). Astfel, atunci cand eliberai tasta, se executa aciunea din a cincea coloana. Aceasta are VoidSymbol in ea, deci nu se intampla nimic. Acest lucru inseamna ca modificatorul Control este inca in vigoare, dei ai eliberat tasta. Daca apasai i eliberai din nou tasta nu are niciun efect. Pentru a evita acest lucru, trebuie sa definii intotdeauna toate coloanele pentru a avea acelai simbol modificator. Exista o notaie scurta la indemana pentru acest lucru, a se vedea mai jos. simbolurile-de-taste pot fi date in notaie zecimala, octala, hexazecimala, unicode sau simbolica. Notaiile numerice utilizeaza acelai format ca i in cazul keynumber. Notaia Unicode este ,,U+" urmata de patru cifre hexazecimale. Notaia simbolica seamana cu cea utilizata de xmodmap(1). Diferenele notabile sunt simbolurile numerice. Simbolurile numerice ,,0", ..., ,,9" din xmodmap(1) sunt inlocuite cu cuvintele corespunzatoare ,,zero", ,,one", ... ,,nine" pentru a evita confuzia cu notaia numerica. Trebuie remarcat faptul ca utilizarea notaiei numerice pentru simbolurile-de-taste este extrem de dificil de adaptat, deoarece numerele de aciune ale tastelor pot varia de la o versiune de nucleu la alta i, prin urmare, utilizarea notaiilor numerice este puternic descurajata. Acestea sunt destinate a fi utilizate numai atunci cand tii ca exista o aciune de tastatura acceptata in nucleul dvs. pentru care versiunea curenta a loadkeys(1) nu are un nume simbolic. Exista o serie de notaii scurte la indemana pentru a spori lizibilitatea i pentru a reduce munca de tastare i probabilitatea erorilor de tastare. In primul rand, putei da o linie de specificare a harii, de forma keymaps 0-2,4-5,8,12 pentru a indica faptul ca liniile harii tastelor nu vor specifica toate cele 256 de coloane, ci numai cele indicate; (in exemplu: doar harile simple, Shift, AltGr, Control, Control+Shift, Alt i Control+Alt, adica 7 coloane in loc de 256). In cazul in care nu este indicata o astfel de linie, vor fi definite harile de taste 0-M, unde M+1 este numarul maxim de intrari gasite in orice linie de definire. In continuare, putei elimina orice intrare VoidSymbol din linia de definire a unei chei. VoidSymbol denota o aciune de tastatura care nu produce nici o ieire i nu are nici un alt efect. De exemplu, pentru a defini tasta numarul 30 pentru a produce ,,a" fara schimbare, ,,A" atunci cand este apasata cu Shift i nu face nimic atunci cand este apasata cu AltGr sau ali modificatori, putei scrie keycode 30 = a A in locul celei mai detaliate keycode 30 = a A VoidSymbol VoidSymbol \ VoidSymbol VoidSymbol VoidSymbol ... Pentru mai multa comoditate, putei scapa de obicei cu definiii i mai laconice. Daca introducei o linie de definiie a unei taste cu un singur i exact un cod de aciune dupa semnul egal, acesta are o semnificaie speciala. Daca codul (numeric sau simbolic) nu este o litera ASCII, inseamna ca codul este replicat implicit prin toate coloanele definite. Daca, pe de alta parte, codul de aciune este un caracter ASCII in intervalul ,,a", ..., ,,z" sau ,,A", ..., ,,Z" in secvena de colaionare ASCII, se fac urmatoarele definiii pentru diferitele combinaii de modificatori, cu condiia ca acestea sa fie definite efectiv; (tabelul enumera cele doua cazuri posibile: fie codul de aciune unica este o litera minuscula, notata cu ,,x", fie o litera majuscula, notata cu ,,Y"). modificator simbol none x Shift X AltGr x Shift+AltGr X Control Control_x Shift+Control Control_x AltGr+Control Control_x Shift+AltGr+Control Control_x Alt Meta_x Shift+Alt Meta_X AltGr+Alt Meta_x Shift+AltGr+Alt Meta_X Control+Alt Meta_Control_x Meta_Control_y Shift+Control+Alt Meta_Control_x Meta_Control_y AltGr+Control+Alt Meta_Control_x Meta_Control_y Shift+AltGr+Control+Alt Meta_Control_x Meta_Control_y DEFINIII ALE MODIFICATORULUI UNIC Toate formele anterioare de linii de definire a tastelor definesc intotdeauna toate cele M+1 combinaii posibile de modificatori care sunt definite, indiferent daca linia conine efectiv sau nu atatea coduri de aciune. Cu toate acestea, exista o variaie a sintaxei de definire pentru a defini doar aciuni unice pentru o anumita combinaie de modificatori a unei taste. Acest lucru este deosebit de util in cazul in care incarcai o harta a tastelor care nu corespunde nevoilor dumneavoastra doar in ceea ce privete anumite combinaii de modificatori, cum ar fi AltGr+taste funcionale. Putei crea apoi un mic fiier local care sa redefineasca doar acele combinaii de modificatori i sa il incarcai dupa fiierul principal. Sintaxa acestei forme este: { plain | a modificare> } keycode numar-tasta = simbol-tasta , de exemplu: plain keycode 14 = BackSpace control alt keycode 83 = Boot alt keycode 105 = Decr_Console alt keycode 106 = Incr_Console Folosind ,,plain" se definete doar intrarea de baza a unei taste (adica cea fara modificatori in vigoare) fara a afecta legaturile altor combinaii de modificatori ale acelei taste. DEFINIII DE IRURI Pe langa comentariile i liniile de definire a tastelor, o harta a tastelor poate conine definiii de iruri. Acestea sunt utilizate pentru a defini ce trimite fiecare cod de aciune al unei taste de funcie. Sintaxa definiiilor de iruri este urmatoarea: string simbol-tasta = "text" text poate conine caractere literale, coduri de caractere octale in formatul de bara oblica inversa urmata de pana la trei cifre octale i cele trei secvene de eludare \n, \\ i \", pentru linie noua, bara oblica inversa i, respectiv, ghilimele. DEFINIII DE COMPUNERE Apoi, pot exista i definiii de compunere. Acestea au sintaxa: compose 'caracter' 'caracter' to 'caracter' i descrie modul in care doi octei sunt combinai pentru a forma un al treilea octet (atunci cand se utilizeaza o tasta de accent mort sau o tasta de compunere). Acest lucru este utilizat pentru a obine litere accentuate (cu diacritice) i altele asemenea pe o tastatura standard. ABREVIERI Diverse abrevieri pot fi utilizate cu kbd-0.96 i ulterior. strings as usual Definete valorile obinuite ale irurilor (dar nu i tastele la care acestea sunt asociate). compose as usual for "iso-8859-1" Definete combinaiile obinuite de compunere. Pentru a afla ce simboluri-de-taste sunt disponibile pentru a fi utilizate in harile de taste ,,keymaps", utilizai comanda dumpkeys --long-info Din pacate, in prezent nu exista o descriere a rolului fiecarui simbol. Trebuie sa se ghiceasca dupa nume sau sa se afle din sursele nucleului. EXEMPLE Nota: avei grija sa folosii o linie ,,keymaps", cum ar fi prima linie din <>, sau "keymaps 0-15" sau similar. Urmatoarea intrare schimba tasta Control din stanga i tasta Caps Lock de pe tastatura: keycode 58 = Control keycode 29 = Caps_Lock Tasta numarul 58 este, in mod normal, tasta Caps Lock, iar tasta numarul 29 este, in mod normal, tasta Control. Urmatoarea intrare stabilete tastele Shift i Caps Lock pentru a se comporta mai confortabil, ca la mainile de scris mai vechi. Altfel spus, apasarea tastei Caps Lock o data sau de mai multe ori pune tastatura in starea CapsLock (blocareMajuscule, iar apasarea uneia dintre tastele Shift o elibereaza. keycode 42 = Uncaps_Shift keycode 54 = Uncaps_Shift keycode 58 = Caps_On Urmatoarea intrare stabilete aranjamentul tastaturii de editare din tastatura imbunataita pentru a fi mai asemanator cu cel din terminalele din seria VT200: keycode 102 = Insert keycode 104 = Remove keycode 107 = Prior shift keycode 107 = Scroll_Backward keycode 110 = Find keycode 111 = Select control alt keycode 111 = Boot control altgr keycode 111 = Boot Iata un exemplu de atribuire a irului "du\ndf\n" la tasta AltGr-D. Folosim codul de aciune ,,de rezerva" F100, care nu este atribuit in mod normal niciunei taste. altgr keycode 32 = F100 string F100 = "du\ndf\n" AUTORI Andries Brouwer CONSULTAI I loadkeys(1), dumpkeys(1), showkey(1), xmodmap(1) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . kbd 24 aprilie 1998 KEYMAPS(5)