Tastenkombinationen optimieren
admin | 1. January 2009Ich hatte mich unter Windows bereits an die Benutzung der Windows-Taste gewöhnt. Windows+D zur Anzeige des Desktops und andere Kleinigkeiten habe ich nun versucht unter Ubuntu nachzubasteln.
Zunächst wird unter Ubuntu die Windows-Taste wie eine richtige Taste behandelt und nicht wie eine Modifizierer-Taste (wie z.B. Shift oder Strg). Das lässt sich jedoch System/Einstellungen/Tastatur ändern. Dort wählt man “Other Options” (Ubuntu 8.10) bzw. “Belegungseinstellungen” (Ubuntu 8.04). Dort öffnet man die Ansicht “Alt/Win key behaviour” und wählt “Hyper is mapped to the Win-Keys”.
Jetzt kann man unter System/Einstellungen/Tastenkombinationen Tasttenkombinationen vergeben und dabei die Windows-Taste verwenden. Wenn man das ohne die vorherige Änderung durchführt erscheint schon beim Druck auf die Windows-Taste der Eintrag “Super L” und die Festlegung ist schon beendet. Ist “Hyper” aktiv wartet Ubuntu auf den Druck einer zusätzlichen Taste, so dass Tastenkombinationen verwendet werden können.
Auf diese Weise lassen sich schon einmal folgende Tastenkombinationen aktivieren, die unter Windows standardmäßig so belegt sind:
Desktop anzeigen (Win+D) = Fenstermanagement / Alle Fenster verbergen und den Desktop fokussieren
Ausführen (Win+R) = Desktop / Den “Anwendung ausführen” Dialog des Panels anzeigen
Bildschirm sperren (Win+L) = Desktop / Bildschirm sperren
Explorer (Win+E) = Desktop / Persönlicher Ordner
Suchen (Win+F) = Desktop / Suchen
Jetzt gibt es an meinem Lenovo 3000 N200 noch Fn-Tastenkombinationen, die zwar unter Windows etwas bewegen, unter Ubuntu jedoch nichts tun. Das ist zum Beispiel die Fn+F5 Taste, die unter Windows eine Auswahl von WLAN Access Points anzeigt. Eine Analyse mittels sudo showkey von einem reinen Textterminal (z.B. Strg+Alt+F1) zeigt, dass diese Taste den Keycode 238 hat. Ob weiterführend diesem Keycode ein X Event zugeordnet ist erfährt man mit xev (X event tester). Es sollte von einer Konsole gestartet werden, damit man die Ausgabe sehen kann. Dort erfährt man, dass das Event XF86WLAN heißt.
Diese Taste möchte ich zum Leben erwecken. Zunächst möchte ich mit dieser Taste das Ethernet (LAN) abschalten. Dazu öffne ich den Konfigurationseditor gconf-editor und setze folgende Einstellungen:
/apps/metacity/keybinding_commands/command_1 = sudo ifconfig eth0 down
/apps/metacity/global_keybindings/run_command_1 = XF86WLAN
Das gibt Ubuntu zu verstehen, dass beim Auftreten des X Events XF86WLAN, welches beim Druck der Taste Fn+F5 ausgelöst wird, das Kommando sudo ifconfig eth0 down ausgeführt werden soll.
Jetzt benötigt dieser Aufruf leider ein Passwort, so dass das Kommando nicht erfolgreich ausgeführt werden kann, wenn die Taste gedrückt wird. Da muss man noch ein bisschen Nacharbeit leisten: mit dem Gruppenmanager (System/Systemverwaltung/Benutzer und Gruppen) oder alternativ auf der Konsole mit sudo nano /etc/group erstellt man eine eigene Gruppe für die Tastatur, z.B. mit dem Namen specialkeyuser. Dieser Gruppe fügt man den Benutzer hinzu, der diese Tastenkombination ausführen können soll. Spätestens jetzt muss man aber wieder einmal die Konsole bemühen, um mit sudo nano /etc/sudoers einen Eintrag zu erstellen, der der Gruppe specialkeyuser das Recht einräumt, sudo für ifconfig aufzurufen, ohne das Passwort einzugeben. Der Eintrag dafür lautet %specialkeyuser ALL=(ALL) NOPASSWD: /sbin/ifconfig.
Jetzt kann ich mit Fn+F5 den Ethernet-Adapter abschalten. Nur einschalten nicht… Dazu braucht man ein kleines Skript, welches den Adapterstatus prüft und abhänging davon den Netzwerkadapter ein- bzw. ausschält. Das könnte z.B. so aussehen:
#!/bin/bash
if [ `ifconfig | grep eth0 | wc -l` = "1" ]; then
sudo ifconfig eth0 down
else
sudo ifconfig eth0 up
fi
Zunächst wird mit ifconfig der Status aller Netzwerkkarten ausgegeben. Dann wird mit grep nach der Netzwerkkarte eth0 gesucht. Mit wc -l werden die übrig gebliebenen Zeilen gezählt. Ist die Anzahl 1, ist der Adapter gerade aktiv und muss beendet werden. Ist die Anzahl Zeilen 0, ist der Adapter nicht aktiv und muss gestartet werden. Das Skript habe ich unter dem Namen network.sh in meinem Home-Verzeichnis abgelegt mit mit chmod +x ausführbar gemacht. Zu guter letzt muss ich anstelle des bisherigen Eintrags mein kleines Skript ablegen:
/apps/metacity/keybinding_commands/command_1 = /home/user/network.sh
Randbemerkungen:
Das Shell-Skript ist vermutlich nicht sonderlich robust. Vergibt man beispielsweise mehrere IP-Adressen pro Netzwerkadapter, so gibt es den Anschluss eth0 mehrfach und das Skript würde das Zählen von Zeilen nicht mehr richtig machen. Für ein einfaches Laptop ohne Serverbetrieb sollte das Skript aber ausreichen.





