Next Previous Contents

3. Tastaturoppsett

3.1 Lasting av tastaturtabell

Dette gjøres med loadkeys (under Linux) eller xmodmap (under X). Glem xmodmap ... Når du installerer Linux har du allerede gjort de endringene som trengs. (Du brukte jo no-latin1 under installasjonen ...).

  Det morsomme er at sannsynligvis så prøver Linux å laste no-latin1.map
  når du starter maskinen. Men den finnes ikke ... Eller den finnes,
  men er i gz-format.
  Derfor må du gå til   /usr/lib/kbd/keytables/ 
  og så :               gunzip no-latin1.map.gz
  evt:                  gunzip no.map.gz
Nå kan du prøve:
loadkeys /usr/lib/kbd/keytables/no-latin1.map

Sannsynligvis virker ikke ÆØÅ enda. Les de neste kapitlene :)

no-latin1.map muliggjør døde taster (dead-keys). Dvs at du kan trykke en tast som ikke vises. Den kommer fram når du trykker en ny tast, (dvs. om kombinasjonen er meningsfull), og disse to tastene inngår en symbiose. De deler samme plass ! no.map er ikke så tålmodig. Her kommer det du trykker øyeblikkelig. no(-latin1).map er en ren tekstfil. Senere i teksten skal jeg fortelle deg hvordan du kan gjøre endringer i den. (Om tastaturet ditt fex viser $ når du trykker SHIFT+4, og det skulle være AltGr+4 som ga $-tegnet).

3.2 Leser Linux norsk ?

For å sjekke om Linux prøver å lese norsk tastatur kan du se om filen

/etc/sysconfig/keyboard
har denne linja :
KEYTABLE="/usr/lib/kbd/keytables/no-latin1.map"

Hvis ikke, skriv den inn og lagre den under rett navn og på rett sted. Merk! Bruker du ikke RH 5.x-distribusjonen bør du lese filene under /etc/rc.d Her finner du ut hva (ofte /etc/rc.d/init.d/keytable) ønsker å finne for oppsett.

3.3 Filen .inputrc

Du må ha filen ~/.inputrc Den skal se slik ut :


            set meta-flag on
            set convert-meta off
            set output-meta on

Ikke lag noen kommentarer og greier i denne. Bare skriv de tre linjene. Denne filen må ligge i alle hjemmeområder og er du sysop så bør du også lagre den som:

/etc/skel/.inputrc

Da vil alle nye hjemmeområder som du oppretter få den.

Skulle ikke forundre meg om du får fram ÆØÅ på dette tidspunkt allerede... Hvertfall under bash. Men du må logge ut/inn først.

3.4 Sjekke filen XF86Config.

Du må sjekke om filen

/etc/X11/XF86Config

ser slik ut (under section keyboard) :


  Section "Keyboard"
    Protocol    "Standard"

    AutoRepeat  500 5

    LeftAlt     Meta
    AltGr       ModeShift
    ScrollLock  Compose
    RightCtl    Control

    XkbDisable

    XkbKeymap   "xfree86(us)"
  EndSection

Dette er alt du trenger i den seksjonen. Jeg har altså 'disable't XKB. Derfor finner du ikke "no" eller "pc102" osv. her ... Grunnen til dette er at jeg ønsker X skal 'arve' det som er satt opp i no-latin1.map.

(I andre Linuxdistribusjoner kan det være du må oppdatere /etc/XF86Config og /usr/X11R6/lib/X11/XF86Config).

3.5 Hvordan virker det ?

Først en ting: Når du jobber med oppsettet er det lurt å ha inittab (/etc/inittab) satt til runlevel 3 og ikke 5. Sett den til 3 om du har 5. Grunnen til dette er at programmet som gir scankoder (showkey) ikke nødvendigvis virker under X.

Når du trykker en tast på tastaturet vil Linux-kjernen motta et tall. Tallet er denne tastens scankode. Alle taster har en scankode og de er meningsløse uten en tabell som oversetter dem til et tegn vi er vant med. Tallet 4 på hovedtastaturet har fex en scankode=5. På talltastaturet har den (hos meg) 75. Begge gir tallet 4 på skjermen. Denne tabellen er no-latin1.map og forteller Linux hva den skal tolke scankoden som. Om du har et moderne tastatur (kanskje laget for windows) har du mange taster som ikke Linux intepreterer. Men det er ikke noe problem å få Linux til å gjenkjenne alle tastene dine (om du har noe meningsfullt å bruke dem til).

3.6 Bruke showkey

Dersom du har et spesiellt tastatur (dvs. et vanlig i dag ...) kan det være lurt å finne ut hva slags scankoder det bruker. De vanlige bokstavene er uinteressante, for de har internasjonale scankoder, men de norske bokstavene, tallene og spesialtastene, kan være lurt å scanne før du endrer no-latin1.map

Dette programmet (showkey) virker neppe (se Hvordan virker det ?) i X. Lag en tegning av tastaturet ditt før du bruker showkey. (Programmet avslutter automatisk etter 10 sek). Når du har laget tegningen kjører du showkey. Da vil scankoden til den tasten du trykker vises som et tall (10-tallssystemet). Trykker du ENTER (og det gjør du jo når du starter programmet) vil scankoden være 28. Noter disse kodene på tegningen du har laget.

3.7 dumpkeys

Det har ikke lykkes meg å finne ut hva dumpkeys -l og dumpkeys --long-info utgjør av en forskjell. Bruk dumpkeys -l. Eller bedre :

dumpkeys -l | less

En oppsummering av hva dette gir finner du i Tegntabell Bruk denne når du gjør endringer i no-latin1.map.

3.8 Redigere no-latin1.map

Å redigere denne filen er ingen kunst. Det som er kunsten er å finne ut hva som er lovlig å skrive. Det som er lov finner du i Tegntabell. Jeg hadde problemer med 3'er-tasten, 4'er-tasten, den ved siden av 1'eren, den ved siden av Å'en og BackSpace.

Slik ser linja ut (etter jeg endret den) som beskriver 3'eren : (/usr/lib/kbd/keytables/no-latin1.map)


        keycode   4 = three  numbersign  sterling  threesuperior
        control keycode   4 = Escape
        alt     keycode   4 = Meta_three

  Den første linja sier at keycode = 4 gir tallet 3   (three)
  Om du trykker SHIFT+3 så er det tegnet          #   (numbersign)
  Om du trykker AltGr+3 så er det tegnet          £   (sterling)
  Om du trykker SHIFT+AltGr så er tegnet          ³   (threesuperior)

De to neste linjene forteller Linux hva tallet 3 i kombinasjon med Alt og Ctrl gir.

Alle linjer er på formen keycode keynumber = keysym keysym keysym... Du trenger ikke mer enn ett keysym. Har du ingen vil tasten ikke virke. Skriver du keycode 30 = +a A vil tegnet tolkes som en bokstav og CapsLock vil virke på den (+). Du kan ha 256 tegn bundet til en tast. Da må linja med keycode inneholde 256 keysym's. For å skrive ut det 256. tegnet under tallet 1 trenger du bare å holde nede tastene :

          SHIFT+AltGr+CTRL+Alt+ShiftL+ShiftR+CtrlL+CtrlR+1
           1      2    4    8    16    32     64    128
  

(Tallene under angir vekt, dvs. posisjon på keycode-linja som tegnet står, se under).

Spør naboen om hjelp til å trykke om du er interessert i å bruke denne muligheten. Jeg vil anbefale max 4 tegn pr. tast. Skriv man keytables for info om tegnene og tastekombinasjonene. Der finner du en oversikt over hvordan spesialtastene (modifiers) er vektet. Shift+AltGr er vektet til 1+2 = 3. Når du holder de nede samtidig er du på 4. posisjon i keycode-linja. (Ingen modifier gir vekt=0, dvs. 1. posisjon). CTRL gir 5. posisjon (har vekt 4).

Min tast til venstre for 1'er tasten består av tegnene '¦' og '§'. Men Linux liker veldig godt '|' , så jeg har endret denne litt. Ellers er alle tasten wysiwyg. (Det du ser, det får du også på skjermen:)


  Posisjon:                             1 2 3 4
-----------------------------------------------
  Den til venstre for 1'eren har        | § ¦ ¶
  2'eren har                            2 " @ ²
  3'eren har                            3 # £ ³
  4'eren har                            4 » $ «
  Den til høyre for Å'en har            ¨ ^ ~
  (der det første tegnet er en dødtast - Jeg kan skrive Ä, Ö osv ...).
  Den over Enter-tasten er BackSpace.

For å få dette til ser no-latin1.map sånn ut (bare endringene er listet) :


        keycode   4 = three     numbersign      sterling        threesuperior
        keycode   5 = four      guillemotright  dollar          guillemotleft
        keycode  14 = BackSpace                 BackSpace
        keycode  27 = dead_diaeresis             asciicircum    asciitilde
        keycode  41 = bar       section         brokenbar       paragraph

(Definer evt. dine egne windows-taster, se Bruke showkey og Tegntabell)

Husk å kjøre :

loadkeys /usr/lib/kbd/keytables/no-latin1.map

3.9 Oppsummering

Om ting ikke virker etter lynkurset i kapittel 2, må du lese kapittel 3 og (kanskje) bruke tabellen i kapittelet Tegntabell. Jeg har ikke skjønt hva en skal med XKB i det hele tatt. Bruker du det så må du også gjøre endringer i filen

/usr/X11R6/lib/X11/xkb/symbols/no

I mitt tilfelle måtte jeg endret fire av de ovenevnte tingene (Ikke Back- Space). Der det i no-latin1.map het keycode = 41, heter det nå key <TLDE>. (Dette er enda mer meningsløst enn en scankode! - i "no" kan du ikke bruke scankoder, men tåpelige omskrivinger av scankoder !! Forstå det den som kan).

Den linja ville da sett slik ut (om den skulle være lik no-latin1.map) :


           key <TLDE> { [       bar,       section  ]
                              [ brokenbar,     paragraph  ]};

Jeg måtte ha laget et eget avsnitt (i filen no) for BackSpace. Men inntil videre vil jeg ikke kommentere XKB. Om noen forteller meg hvorfor XKB er lurt vil jeg lage et kapittel som omhandler dette. Det lover jeg ! (Evt. lover jeg at noen vil skrive om det :) Derfor er kapittelet som omhandler dette, ganske tomt foreløpig. ( XKB)

Det eneste som nå ikke virker er det numeriske tastaturet på høyre side. Men det vil jeg heller ikke ha til å virke. Jeg er bare interessert i å bruke det som et numerisk tastatur - ikke som Home,PgUp,End osv ...


Next Previous Contents