[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Startskript für Tastaturlayout?



On 21.04.06 22:57:11, Chinatinte@gmx.ch wrote:
> setxkbmap -model pc105 -layout ch
> 
> lässt sich wieder eine brauchbare Tastatur herstellen.
> 
> Das jedesmal von Hand einzugeben ist lästig.

Klaro, deswegen hat X11 eine tolle Konfigurationsdatei wo man das
eintragen kann. In Sarge heisst die XF86Config-4, in Testing/Unstable
heisst sie xorg.conf. In beiden Faellen liegt sie in /etc/X11.

Dort gibts dann eine Section die sich mit dem Keyboard beschaeftigt, das
sieht hier dann z.B. so aus:

Section "InputDevice"
        Identifier      "Generic Keyboard"
        Driver          "keyboard"
        Option          "CoreKeyboard"
        Option          "XkbRules"      "xorg"
        Option          "XkbModel"      "cherrybluec"
        Option          "XkbLayout"     "us"

Bei dir muesste dann statt cherrybluec pc105 eingesetzt werden und statt
us ch. Ich nehme mal an du benutzt unstable, da in Sarge de_CH korrekt
fuer die Schweiz ist, dies aber wohl bei Xorg 6.9 oder 7.0 geaendert
wurde auf nur "ch".

> Meine Idee war nun, ein kleines
> Startskript (keyboardstart) zu schreiben, das lediglich den obigen Befehl
> enthält und über das Skript in init.d gestartet wird:

Wieso schreibst du die Zeile nicht direkt in das Skript in /etc/init.d?
Wozu der Umweg?

> #! /bin/sh
> sh /usr/bin/keyboardstart

Man sollte eigene Skripte nicht in /usr/bin ablegen, besser geeignet
ist /usr/local/bin und Skripte die nur root ausfuehren sollte in
/usr/local/sbin.

> Nur: Es tut sich nichts. Kann mich jemand auf meinen Denkfehler hinweisen?

1. Hast du denn auch dafuer gesorgt dass dein Skript im entsprechenden
Runlevel gestartet wird? Dafuer brauchts einen Link SXX<deinskript> in
/etc/rcY.d, wobei XX die Nummer ist die angibt an welcher Stelle im
Bootprozess es gestartet wird und Y gibt den Runlevel an (normal ist 2
default-Runlevel bei Debian). Das Tool update-rc.d erlaubt dir die
passenden Links zu erstellen, man update-rc.d sagt dir wie.

2. setxkbmap funktioniert erst wenn X11 gesstartet wurde, also nach dem
Loginmanager oder startx. Du willst also u.U. den Loginmanager frueher
starten z.B. an Stelle 95 und dein Skript dann an Stelle 99 in der
Hoffnung das dann der XServer schon gestartet ist. Weiterhin denke ich
braucht setxkbmap eine gesetzte DISPLAY Variable, du musst es also aus
dem init-Skript ungefaehr so aufrufen:

DISPLAY=:0 setxkbmap ...

Wobei du den richtigen Wert fuer DISPLAY aus einer laufenden X11 Sitzung
ermitteln kannst indem du in einer Shell einfach mal "echo $DISPLAY"
eingibst.

HTH.

Andreas

-- 
Cold hands, no gloves.



Reply to: