Mi celas ebligi la uzon de katalunaj literoj, esperantaj literoj kaj rusaj literoj en preskaŭ la plena X sistemo, kaj ankaŭ en terminalaj programoj. Pli ekzakte, mi celas uzi tiajn literojn en X programoj kiuj subtenas unikodon, retpoŝtilo mutt, kaj redaktilo vim (kompreneble ankaŭ gvim, kiel X programo).
La katalunaj literoj estas: a b c ç d e f g h i j k l m n o p q r s t u v w x y z
La hispanaj literoj estas: a b c d e f g h i j k l m n ñ o p q r s t u v w x y z
La esperantaj literoj estas: a b c ĉ d e f g ĝ h ĥ i j ĵ k l m n o p q r s ŝ t u ŭ v z
La rusaj literoj estas: а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я
Dum jaroj 2003/2004 mi eklernis novajn fremdajn lingvojn krom la anglan.Mi denaske scipovas la katalunan, kaj dum mia infaneco mi lernis la hispanan. Kiam mi estis dekunujara, mi eklernis la anglan. Kaj nun, kiam mi estas dudekdu, mi lernas la esperantan kaj la rusan. Mi neniam antaŭe havis problemojn por skribi per miaj konataj lingvoj ĉe komputilo: Katalunan, Hispanan kaj Anglan eblas skribi per la sama literkodo: la tre konata iso-8859-1, aŭ alimaniere latin1.
Nun nova mondo malkovriĝis antaŭ mi: literkodoj kaj por la rusa kaj por la esperanta. Ruse oni plej kutime skribas per: KOI8-R aŭ win-1251 (tiu ĉi lasta preskaŭ nur en vindozaj komputilsistemoj). Esperante oni skribas per latin3 (a.k.k. iso-8859-3), aŭ rekte sen uzi la esperantajn ĉapelitajn literojn, sed anstataŭigi ilin per x, h aŭ ' sistemo (per po du latinaj literoj por ĉapellitero).
Ekde kelkaj jaroj ekzistas novaj literkodoj, ne limigataj pro 1-bajto interna komputila reprezento de literoj. Tiel, tiuj literkodoj enhavas pli ol 256 literojn malsimilajn. Ekzistas pluraj unikodaj literkodoj. La plej uzatas estas UTF-8. Mi celis atingi la uzon de UTF-8.
Nuntempe neniu zorgas pri literkodoj en siaj programoj, ĉar oni ĉiam uzas kodotekojn, kiuj ja zorgas pri tiuj aferoj. Ĉe konzolo oni povas programi per la kodoteko "ncursesw", kaj ĉe X-sistemo per QT, GTK, ktp...
La X-sistemo mem zorgas pri rilato inter klavoj kaj literoj. Ĝi havas proprajn kodojn por ĉiuj eblaj literoj. Do, se programo subtenas KOI8-R literoj, ĝi povas bone funkcii sub la X-sistemo, ĉar la X-sistemo jam havas propran kodon por ebligi tajpi ĉiujn literojn.
Noteto: Mi ne certas pri tio... sed ŝajnas ke tio tiel rulas.
Tio, kio rilatigas literkodon kun montrotaj literoj, estas tiparo. Do, se oni volas uzi fine UTF-8 en X-sistemo, oni devas havi tiparojn UTF-8. La ISO-a nomo de tiu literkodo estas iso-10646-1. Por scii ĉu via X-sistemo havas tiajn tiparojn, skribu en X-terminalo:
xlsfonts | grep iso10646-1
Se vi havas ilin, daŭrigu la legadon de tiu ĉi dokumento. Se ne, bonvolu legi alian how-to pri instali unikodajn tiparojn ĉe vian X-sistemon.
Multaj nuntempaj programoj scias kiun literkodon uzi, per agordoj locale. Ni scios kiun naciagordon ni havas tajpante tion en X-terminalo:
echo $LANG
Ekzemple, tiu ordono eble donos al ni ca_ES.ISO-8859-1
. Tio
signifas:
Ni devas unikodigi niajn naciajn agordojn. T.e. ŝanĝi la literkodon de nia nacia agordo. Laŭ la antaŭa ekzemplo, ni devus ŝanĝi tiun ca_ES.ISO-8859-1 al ca_ES.UTF-8.
Unue, ni devas certiĝi pri ĉu nia naciagorda sistemo enhavas nian naciajn agordojn unikodajn. Ni povas peti tion serĉante ilin per:
locale -a | grep "ca_ES\.UTF-8"
Se ni havas tion, ni nur devas ordoni al nia sistemo ĉiam uzi ĝin. Se ne, ni devas krei ilin per ordono (ordonota per uzanto root):
localedef -f UTF-8 -i ca_ES ca_ES.UTF-8
Post havi tiujn dosierojn unikodigitajn, ni devas ŝanĝi startdosierojn, por ke ili agordu tiun nacian unikodan locale. Ni devas ŝanĝi linion similan al:
export LANG="ca_ES.ISO-8859-1"
kaj ŝanĝi ĝin al:
export LANG="ca_ES.UTF-8"
Fine, ni bezonas havi naciagordon agorditan kun literkodon "UTF-8". Aliekzemple, rusoj devus havi literkodon ru_RU.UTF-8.
Nun, niaj iksaj programoj jam bone devus montri unikode!
Mi nuntempe uzas programitan X11 de Xfree86, versio 4.3.0. Oni normale elektas nuran lingvon de klavaro (almenaŭ en Katalunio), ĉar per la hispana klavaro oni povas tajpi kaj per la kataluna, kaj per la hispana, kaj per la angla. Do, mi antaŭe uzis nur es-an klavaron.
Nuntempe, mi bezonas modifitan hispanan klavaron (por tajpi esperantajn literojn), kaj ankaŭ rusan. La X-sistemo, kiun mi uzas, tenas du klavarojn samtempe uzeblajn (normala kaj alternativa). Do laŭ tio, kion mi vidis en aliaj dokumentoj tiaj, oni normale elektas la usonan kiel unua tajpolingvo kaj la nelatinan (rusan, ekzemple) kiel dua. Oni povas ŝanĝi inter tiuj du tajpolingvoj per elektita speciala klavo. Aŭ eĉ oni povas tajpi alialfabetajn literojn samptempe premante alian specialan klavon: ALT-GR (hispane, t.e. alternativaj grafikaĵoj).
En normalaj hispanaj hejmoj, oni uzas la alternativan klavaron por tajpi malmultajn specialajn signojn, kiel {}, [], kaj eĉ la Eŭran signon €. Kompreneble, antaŭ skribi ruse per komputilo mi uzis tiun alternativan klavaron por tajpi la ĉapelitajn literojn: ĉ ĥ ĵ ŝ ŭ. Mi agordis mian klavarsistemon por tajpi ilin uzante klavon ALT-GR samtempe kun c h j s kaj u.
Do jen la problemo! Mi ne povis uzi la rusan kiel alternativa klavaro. La nura solvo estis ŝanĝi rultempe la klavarsistemon. Mi skribis recepton por ŝanĝi la klavarsistemon al "es+eo", kaj alian recepton por ŝanĝi al "en+ru". Nur mankis al mi ilo por ruligi tiujn receptojn per specialaj klavoj. La nomo de tiu programo estas xbindkeys.
Nu, ĝis nun mi ĉion ŝanĝis sen tuŝi la ĉefan agordodosieron de XFree86 4.3.0. Tie oni nur elektas la unuan agordon kiun oni trovos ĵus post ruligi la sistemon X. Fakte, la receptoj modifas la agordojn pri la klavaro, kiujn kompreneble oni devas elekti en la ĉefa agordodosiero de la sistemo X.
Nur gravas la klavara sekcio de tiu agordodosiero (/etc/X11/XF86Config-4 ĉe mi). Jen la enhavo, kiun mi uzas, de tiu sekcio. Rigardu ke mi nek agordas du klavarojn. Oni ne povas elekti kiel tajpi la esperantajn specialajn literojn per tiu dosiero.
Section "InputDevice" Identifier "Keyboard0" Driver "keyboard" Option "XkbRules" "xfree86" Option "XkbRules" "xfree86" Option "XkbModel" "pc104" Option "XkbLayout" "es" EndSection
Vi vidas ke nenion ĝi montras pri esperanto aŭ rusa lingvo. Nu, ĵus post ruligi la sistemon X, ni devas agordi la specialajn klavojn por tajpi ĉapelajn literojn. Mi faras tion per xmodmap, ilo de X kiu eblas ŝanĝi literojn de klavojn. Mi havas en mia hejma dosierujo la dosieron por xmodmap, nomigita .Xmodmap (vidu la punkton: kaŝita dosiero), kun jena enhavo:
keycode 54 = C NoSymbol ccircumflex keycode 42 = G NoSymbol gcircumflex keycode 43 = H NoSymbol hcircumflex keycode 44 = J NoSymbol jcircumflex keycode 39 = S NoSymbol scircumflex keycode 30 = U NoSymbol ubreve
Tiu sola dosiero ne taŭĝas. Ni devas ruligi xmodmap por agordi laŭ tiu enhavo de la dosiero. Mi faras tion per hejma dosiero .xinitrc (hejma startodosiero de mia sistemo X), kun jena enhavo:
#!/bin/bash # Tio agordas kelkajn aferojn de iksaj programoj. xrdb -merge /home/viric/.Xresources # Linio pri xmodmap xmodmap ~/.Xmodmap # Tio ebligos min sxangxi per specialaj klavoj la klavarsistemojn. xbindkeys # Jen mia fenestrilo exec wmaker
Vi jam vidis ke tie mi ruligas ankaŭ xbindkeys. Tiu estas la programo kiu ruligos la eblecon ŝanĝi klavarsistemon per specialaj klavoj. Ni devas agordi tiun programon per nova dosiero: ~/.xbindkeysrc. Jen la enhavo:
"setxkb-es" shift + c:115 "setxkb-ru" shift + c:116
Tie estas du programoj, nomitaj setxkb-es kaj setxkb-ru. La unua igas hispanan klavaron kun esperantaj ĉapelitaj literoj. La alia, igas rusan klavaron. Fakte, la dua igas rusan kun angla. Sciu, ke la unua recepto igas hispanan klavaron kiel ĉefa, kaj la dua recepto igas la rusan ĉefa, kaj la usonan kiel alternativa klavaro. Mi ruligas la unuan recepton per "maldekstra majuskla + maldekstra vindoza klavoj", kaj la duan per "dekstra majuskla + dekstra vindoza klavoj".
Tiuj receptoj devas esti en serĉvojo, ĉar mi menciis neniun dosierujon. La enhavo de setxkb-es estas:
#!/bin/bash setxkbmap -layout es setxkbmap -model pc104 xmodmap ~/.Xmodmap
Kaj la enhavo de setxkb-ru estas:
#!/bin/bash setxkbmap -layout ru,us setxkbmap -model pc104 setxkbmap -option grp:shift_toggleEn la lasta dosiero mi agordas novan specialan klavon, por ŝanĝi inter la ĉefa kaj la alternativa klavaroj (ru, us). Tiel, se iam xbindkeys malfunkcias, ni ankoraŭ povos skribi latine.
Mi uzas xterm, ĉar preskaŭ ĉiuj havas ĝin (do des pli bone lerni uzi ĝin ol alia), kaj ĝi bone subtenas unikodon. Por uzi xterm unikode, ni devas ruligi ĝin dirante kiun tiparon uzi, kaj ordonante uzi unikodon. Tio estas:
xterm -u8 -font '-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso10646-1'Kompreneble, ni povas uzi iun ajn unikodan tiparon (iso10646-1). Mi plej ŝatas tiun ekzemple montritan. Oni povas scii kiujn unikodajn tiparojn eblas uzi per ordono montrita antaŭe.
xterm devas subteni unikodon, por bone montri literojn. Tamen, xterm ruligas bash. Ankaŭ bash devas kompreni unikodon (ĉar ĝi legos niajn ordonojn unikode). Se nia naciagordo estas unikoda, bash bone rolos. Do ni devas havi bone agorditan naciagordojn antaŭ ruligi bash. T.e. antaŭ ruligi xterm. Se oni forgesas tion, bash ne bone rolos, ĉefe forviŝante literojn.
:set fileencoding=koi8r
.
Ankaŭ oni povas rekte diri al vim la literkodon de malfermota dosiero
denove per konzola ordono ekzemple: :e dosiero ++enc=latin3
. Por
pli da informo, bonvolu rigardi vim-an helpan paĝon pri tiuj ordonoj
(fileencoding kaj ++opt).
Vim ene ĉiam rolos unikode, sed tradukos literkodojn konservante kaj
malfermitante dosierojn.