Die Verwaltung und speziell das Wechseln zwischen Layouts in KDE ist gelinde gesagt "etwas kaputt". Hotkeys werden dabei z.B. überhaupt nicht auf das neue Layout übernommen, Teilweise werden Tasten für andere Tastaturebenen zum falschen layout gemappt und funktionieren nicht (alt-gr nur als alt...) und Sonderzeichen funktionieren ständig nicht richtig nach dem umschalten.
Ich habe das an mehreren Rechnern mit einem simplen script umschifft, das setxkbmap aufruft. Damit werden auch Hotkeys und Optionen wie capslock=esc übernommen. Die Layoutverwaltung in KDE muss komplett deaktiviert werden, die pfuscht sonst immer mit sehr seltsamen Ergebnissen dazwischen.
Code: Alles auswählen
#!/bin/bash
# ohne argumente = toggle de<>dv
if [ $# -ne 1 ]; then
if [ $(setxkbmap -query | grep -c us,de,us) == "1" ]; then
setxkbmap -model microsoft4000 -layout de,us,us -variant nodeadkeys,dvp,
setxkbmap -option && setxkbmap -option caps:escape,shift:both_capslock_cancel,altwin:left_meta_win
kdialog --title "Keyboard layout changed" --passivepopup "DE" 3 &
else
setxkbmap -model microsoft4000 -layout us,de,us -variant dvp,nodeadkeys,
setxkbmap -option && setxkbmap -option caps:escape,shift:both_capslock_cancel,altwin:left_meta_win
kdialog --title "Keyboard layout changed" --passivepopup "DV" 3 &
fi
# wechsel direkt zu layout $1
elif [ $# == "1" ]; then
case $1 in
de )
setxkbmap -model microsoft4000 -layout de,us,us -variant nodeadkeys,dvp,
setxkbmap -option && setxkbmap -option caps:escape,shift:both_capslock_cancel,altwin:left_meta_win
kdialog --title "Keyboard layout changed" --passivepopup "DE" 3 &
;;
dv )
setxkbmap -model microsoft4000 -layout us,de,us -variant dvp,nodeadkeys,
setxkbmap -option && setxkbmap -option caps:escape,shift:both_capslock_cancel,altwin:left_meta_win
kdialog --title "Keyboard layout changed" --passivepopup "DV" 3 &
;;
us )
setxkbmap -model microsoft4000 -layout us,us,de -variant ,dvp,nodeadkeys
setxkbmap -option && setxkbmap -option caps:escape,shift:both_capslock_cancel,altwin:left_meta_win
kdialog --title "Keyboard layout changed" --passivepopup "US" 3 &
;;
* )
exit
;;
esac
fi
Nicht schön, aber funktioniert
Das script liegt in /usr/local/bin und wurde einfach auf Hotkeys gemappt die sich in allen Layouts nicht unterscheiden (z.B. multimedia/sondertasten oder ctrl+alt+leertaste)
Das Layout wird dabei _nur_ für den X-server geändert, nicht für die tty-konsolen! (die lässt man am besten auf dem Layout das zur Tastatur passt - falls man in der Konsole mal völlig schräge Sonderzeichen braucht/sucht...)