Avanti Indietro Indice

2. Dobijanje našeg rasporeda tipkovnice u X-ima

Vjerojatno imate QWERTZ, hrvatski odnosno slovenski raspored tipkovnice. Ako ne, poslužit ce i naljepnice s našim slovima.

Ukoliko na konzoli želite zadržati npr. postojeći američki raspored tipkovnice, ili slova odmah želite probat u X-ima skinite slovenski xmodmap s ftp://sizif.mf.uni-lj.si/pub/i18n/Xmodmap.sl.pc102. Naravno, morat ćete ga malo modificirat, a kako ja osobno ovaj način ne preferiram neću dalje objašnjavati. Pređimo na Plan B :))).

Najprije, sredimo raspored na konzoli. Držite se Domikulićevih savjeta na http://linux.hr/iso/. Ne bi trebalo biti većih problema.

Vjerojatno ćete trebat komandi setfont dodat -u switch za pravilan prikaz grafičkih simbola na konzoli. To bi npr. glasilo:

setfont /usr/share/consolefonts/lat2-14.psf -u lat1.uni

Zapnete li, pogledajte neke od mojih fajlova.

Uspjeli ste ? OK. Home, Delete, BackSpace, End rade na konzoli? Super. Prelazimo na X-e. Instalirajmo X fontove i stvar bi trebala raditi. Ne? No dobro, na adresi ISO 8859-2 Resources nabrojane su među ostalim i lokacije za download X fontova. Novije Linux distribucije uglavnom dolaze sa svim potrebnim screen latin2 fontovima.

Kompletnu kolekciju 'blizanaca' svakog iso8859-1 fonta u latin2 obliku možete skinuti s http://www.biz.net.pl/english/x-fonts/licence.html (ne trebate ništa upisati, stisnite send). Fontove mozete skinuti u bdf, pcf ili pcf.Z obliku. Najbolje u ovom trećem, kompresiranom (noviji Xserveri mogu baratati kompresiranim fontovima).

Pogledajte u Files section vašeg XF86Configa gdje vam je FontPath za X fontove. Kod mene na Debianu je /usr/X11R6/lib/X11/fonts. Stvorite poddirektorij za latin2 fontove i u njemu raspakirajte arhivu. Dobit ćete nova tri poddirektorija. Sva tri unesite na vrh (bitno) FontPatha u XF86Configu.

Ako su vam fontovi pcf oblika, možete (ne morate) ih kompresirati s

compress *.pcf (dobijete pcf.Z oblik), ja sam koristio

gzip *.pcf .

Pored fontova, u svakom direktoriju morate imati fonts.dir fajl. Bilo da u direktorij dodajete novi font ili fontovima mijenjate imena (kompresiranjem npr.) obvezno nakon toga slijedi naredba

mkfontdir

Ako su fontovi u bdf obliku, konvertirajte ih. Skripta za konverziju u Slovenian HOWTO meni ne radi, pa sam modificirao jednu dobivenu preko Altaviste i nazvao je fontkonv.


#!/bin/sh
#skripta za bdftopcf.gz
convert='bdftopcf $file | gzip > `basename $file .bdf`.pcf.gz'
for file in *.bdf; do
  eval $convert
done
mkfontdir
xset fp rehash || echo 'Type   "xset fp rehash"   if running from X-session'   

xset fp rehash potreban je da ne bi morali restartat X-e.

Svaki novodobiveni direktorij može imati i fonts.alias datoteku. Najvjerojatnije ćete nove fontove htjeti isprobati u xtermu. Meni se svidio fiksni font etl16-IL2.pcf.gz (dolazi u xfntil2 paketu), pa uglavnom njega koristim kao fiksni screen font pod xtermom i familijom. Možete ga skinuti http://members.xoom.com/markovicr/etl16-IL2.bdf modificiranog za slrn u X-ima (offline newsreader kojeg kad sam u X-ima koristim pod rxvt-om). U Navigatoru stisnite Shift i kliknite na link radi lakšeg snimanja.

Dakle,

bdftopcf -o etl16-IL2.pcf etl16-IL2.bdf
gzip etl16-IL2.pcf
cp etl16-IL2.pcf.gz /usr/X11R6/lib/X11/fonts/misc-il2/
xset fp rehash
U mojoj /usr/X11R6/lib/X11/fonts/misc-il2/fonts.alias datoteci ubačeno je:

moj -etl-fixed-medium-r-normal--16-160-72-72-c-80-iso8859-2

Zadajte naredbu

xfd -fn moj

i primjetit ćete male izmjene na fontu (rađene primitivno :-), bez xmbdfed-a).

Sad možete npr. startati xterm:

xterm -fn moj, ili bolje, stavit u ~/.Xdefaults (ja koristim /etc/X11/Xresources) među ostalim:

XTerm*font: moj. (bez tocke :))

Dakle, imate naša slova na konzoli, propisno ste instalirali X latin2 fontove, pokrenuli xterm i - nema naših slova :(.

Unutar Keyboard sectiona vašeg /etc/XF86Config probali ste s XkbLayout ili XkbKeymap razne stvari, bez uspjeha. Ovakav način dobijanja hrvatskog rasporeda tipkovnice u X-ima bio bi treći i najlakši, nadajmo se da će u budućnosti doći i do toga.

Dakle, budući da Plan C zasad ne postoji :), vratimo se Planu B. Po defaultu u Keyboard sectionu imamo:

# To disable the XKEYBOARD extension, uncomment XkbDisable.
# XkbDisable

Da, otkomentirajte XkbDisable i eto rješenja. Dobijaju se naša slova u xtermu. Doduše, mala nuspojava (barem kod mene) jest da komentar u XF86Config koji se odnosi na ServerNumLock možemo zanemariti, ali to je već drugi problem.

Vjerojatno vam neće baš sve tipke simulirati konzolu (kvačice hoće :)). Ovdje uskače u pomoć jedan jako koristan utility - xmodmap. Startajte xev iz xterma i pogledajte keycode problematične tipke. Zatim tom keycodeu dajte željeni keysumname.

Ja sam npr. u svom globalnom /etc/X11/Xmodmapu imao upisano (nemam više ovakav Xmodmap, nego jedan kompliciraniji za objasnit i prilagođeniji meni najstabilnijem rođaku xterma - rxvt-u):


! /etc/X11/Xmodmap
!
! This is the global Xmodmap file.  It is used by both xdm and xinit.
keycode 22 = BackSpace
keycode 86 = plus
keycode 112 = slash
keycode 63 = asterisk
keycode 82 = minus

Prvi red je da bi BackSpace brisao ulijevo, drugi - moram eksplicitno reći da želim plus, ne zarez na num. dijelu tipkovnice (vidim da mnogima daje zarez). Posljednja tri retka odnose se na KP_Divide, KP_Multiply i underscore na num. dijelu tipkovnice. Premda ove tri tipke daju jednake znakove onima na nenum. dijelu tipkovnice, ja sam im udijelio i imena s tog dijela tipkovnice. Tako izbjegavam ponekad čudno ponašanje ovih tipki u lessu, dselectu ili ncftpu npr.

Još jedna sugestija. Onaj dio na Domikulićevoj stranici o Home, End, Delete i BackSpace u Xtermu kod mene ne uspijeva. Dugo sam koristio pod /etc/X11/Xresources:


*VT100.Translations: #override <Key>BackSpace: string(0x7F)\n\
              <Key>Delete:        string(0x1b) string("[3~")\n\
              <Key>Home:          string(0x1b) string("[1~")\n\
              <Key>End:           string(0x1b) string("[4~")\n\
              Ctrl<Key>Prior:     string(0x1b) string("[40~")\n\

Trenutno koristim ovakav oblik (razni su razlozi zašto):


XTerm*VT100.Translations: #override <Key>Delete: string("\033[3~")\n\
                               <Key>Home: string("\033OH")\n\
                               <Key>End: string("\033OF")

Nažalost, čini se daleko dan kad će na Unixima biti unificiran keyboard policy, također xterm i rođaci ne funkcioniraju baš 100 % stabilno, tako da, kad su osjetljivije stvari u pitanju uvijek editiram na konzoli. Naime znaju se desiti pojave poput 'letter droppings'. Napravite npr. mali test. Editirajte u npr. xtermu neku nevažnu dugačku datoteku i držite Delete stisnuto. Ukoliko vam se nakon brisanja dvadesetak redaka ne desi ništa neuobičajeno, tada vam je xterm dosta stabilan.

Relativno nova i izvrsna stranica o stanovitim problemima s tipkovnicom (želite li editor pod xtermom, a da mu propisno rade Home, End, BackSpace i Delete, te da pokazuje naša slova - koristite joe :)) je Adjusting Keyboard Behavior.

2.1 My Files


/etc/init.d/mojlocal
--------------------
#!/bin/sh
# /usr/X11R6/bin/xfstt --res 96 --encoding iso8859-2 &
setfont /usr/share/consolefonts/lat2-14.psf -u lat1.uni
echo "Postavljen font lat2-14.psf!"
# Audio Excel inicijaliziraj CD
modprobe sb
/root/cminit -cd 1 -loud 1
#aumix -c 70
for t in 1 2 3 4 5 6 7 8
do
setleds +num </dev/tty$t> /dev/null
done

/etc/profile
------------
# /etc/profile: system-wide .profile file for bash(1).
stty -istrip
echo -ne '\033(K'
INPUTRC=/etc/inputrc
LESSCHARSET=latin1
LESSCHARDEF="8bcccbcc18b95.33b."
PATH="/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/sbin:/sbin:/usr/local/sbin
#PS1="\h \w\\$ " bivsi prompt
PAGER=less
LESS="-rMcw"
EDITOR="joe -asis"
VISUAL="joe -asis"
NNTPSERVER=news.tel.hr
GLOBIGNORE='.:..'
# NNTPSERVER=bagan.srce.hr
export PATH PAGER INPUTRC LESSCHARSET LESSCHARDEF LESS EDITOR VISUAL NNTPSERVER
ulimit -c unlimited
umask 022


~/.bash_profile - user login shell
---------
MOZILLA_HOME=/usr/local/netscape
NPX_PLUGIN_PATH=/usr/local/netscape/plugins
MINICOM='-m -c on'
alias ll="ls --color -alFN"
alias l="ls --color -aFN"
alias joe="joe -asis -nobackups"
alias cp="cp -ip"
alias mv="mv -i"
alias rm="rm -i"
alias mfe="mount /floppy"
alias umf="umount /floppy"
alias x="startx"
alias x8="startx -- :1 -bpp 8"
# alias uspan="tar -xvMf /dev/fd0"
alias f="fetchmail -v"
alias s="slrn --spool -C"
alias sp="slrnpull"
alias pine="picofix pine"
if [ $TERM = "rxvt" ] ; then
    PS1='\[\e[01;35m\]\h \[\e[01;33m\]\$\[\e[00m\] \[\e]0;\w\007\]'
else
    PS1='\[\e[01;35m\]\h \[\e[01;34m\]\w\[\e[01;35m\]\$\[\e[00m\] '
fi
export PS1 MOZILLA_HOME NPX_PLUGIN_PATH MINICOM

~/.bashrc - user non-login shell
---------------------------------
# ~/.bashrc: executed by bash(1) for non-login shells.
source ~/.bash_profile
source /etc/profile

/etc/printcap
----------------
#       @(#)etc.printcap        5.2 (Berkeley) 5/5/88
#
# > This file was generated by /usr/sbin/magicfilterconfig. <
#
lp|lj|hplj4l|HP Laserjet 4L:\
        :lp=/dev/lp1:sd=/var/spool/lpd/hplj4l:\
        :sh:pw#80:pl#72:px#1440:mx#0:\
        :if=/etc/magicfilter/ljet4-filter:\
        :af=/var/log/lp-acct:lf=/var/log/lp-errs:


Avanti Indietro Indice