Tag Archives: Script - Page 2

Tastaturbelegung wechseln mit Fluxbox

Wer eine Fremdsprache lernt oder einfach lieber mit amerikanischer Tastenbelegung programmiert, muss regelmäßig sein Tastaturlayout verstellen. Während GNOME ein entsprechendes Applet für das Panel mitbringt, sieht es bei Fluxbox erstmal mau aus. Ich habe mir ein Skript geschrieben, das durch mehrere Tastaturlayouts rotiert und visuelles Feedback dafür liefert. Ist keines der angegebenen Layouts gesetzt, wird das erste gewählt.

#!/bin/bash
layouts=(
 "de"    "German"    "de.png"
 "se"    "Swedish"    "se.png"
);
errimg="error.png";

current=`
 setxkbmap -print |
 grep xkb_symbols |
 awk '{print $4}' |
 awk -F"+" '{print $2}'`;
next=0;

for (( i = 0 ; i < (${#layouts[@]}/3) ; i++ )) do
  if [ $current = ${layouts[$i*3]} ]; then
    next=($i+1)%${#layouts[@]/3};
  fi
done

return=`setxkbmap ${layouts[3*$next]} 2>&1`;

if [ ${#return} -gt 0 ]; then
  notify-send -i ${errimg}\
                      "Failed Setting Layout ${layouts[3*$next]}"\
                      "$return";
else
  notify-send -i ${layouts[3*$next + 2]}\
                     "Switched Keyboard Layout"\
                     "${layouts[3*$next + 1]}";
fi

Um weitere Layouts hinzuzufügen, müssen in das Array layouts je drei Strings eingefügt werden; der erste bezeichnet das Layout, der zweite ist der Ausgabestring und der dritte ist der Pfad zum entsprechenden Icon. Will man etwa auf das Bild verzichten, unbedingt einen leeren String angeben, da sonst die Indexberechnung schief läuft. Eine Auswahl an Layoutbezeichnern kann zum Beispiel hier gefunden werden.

Zu schwedischem Layout und zurück

Als Quelle muss ich diesen Post erwähnen. Eine kommentierte Fassung gibt es hier. Natürlich müssen die Pfade zu Bildern angepasst und die genannten Pakete installiert werden. Das Skript sollte grundsätzlich mit allen Window Managern funktionieren. Um es (unter Fluxbox) ohne Terminal oder fbrun ausführen zu können, kann man es natürlich mittels an ein Tastaturkürzel binden, in dem man in  ~/.fluxbox/keys etwa diese Zeile einfügt:

Mod1 F3 :execCommand ~/bin/switchkbl

Nachtrag: Die nötigen Pakete unter Ubuntu sind: setxkbmap, awk, libnotify-bin