Wie ändere ich mein Tastaturlayout während der Verwendung von xmonad?

7

Ich habe also ein IBM Thinkpad X31, auf dem natty und xmonad als Fenstermanager ausgeführt werden. Die Tastatur ist italienisch. Ich möchte ständig ein amerikanisches englisches Tastatur-Mapping verwenden. Wie mache ich das?

Walead Fuss
quelle

Antworten:

6

Hier ist eine Möglichkeit, XMonad und mehrere Tastaturlayouts zu verbinden.

Schritt 1. Erstellen Sie ein Skript, das zwischen Ihren Layouts wechselt. Nehmen wir zum Beispiel an, wir werden Englisch (USA), Italienisch und Französisch unterstützen.

/home/you/bin/layout_switch.sh::

#!/bin/zsh
# LICENSE: PUBLIC DOMAIN
# switch between my layouts

# If an explicit layout is provided as an argument, use it. Otherwise, select the next layout from
# the set [us, it, fr].
if [[ -n "$1" ]]; then
    setxkbmap $1
else
    layout=$(setxkbmap -query | awk 'END{print $2}')
    case $layout in
        us)
                setxkbmap it
            ;;
        it)
                setxkbmap fr
            ;;
        *)
                setxkbmap us
            ;;
    esac
fi

Testen Sie dieses Skript - führen Sie es aus und prüfen Sie, ob das Tastaturlayout zwischen den Layouts wechselt. Wenn dies der Fall ist, fahren Sie mit dem nächsten Schritt fort.

Schritt 2. Passen Sie die XMonad-Einstellungen an, um die benutzerdefinierte Schlüsselbindung zu unterstützen, mit der das Layout geändert wird.

Erstellen Sie in Ihrem Home-Verzeichnis ein Verzeichnis mit dem Namen ".xmonad" (falls nicht vorhanden).

/home/you/.xmonad/xmonad.hs::

import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run(spawnPipe)
import XMonad.Util.EZConfig(additionalKeys)
import System.IO

main = do
  xmonad $ defaultConfig
     {
        terminal = "gnome-terminal"
     } `additionalKeys`
     [ (( mod1Mask             , xK_Escape), spawn "/home/you/bin/layout_switch.sh")
     ]

Starten Sie nun XMonad neu, indem Sie Mod + q drücken. Ihr Layout-Umschalter sollte voll funktionsfähig sein.

Referenz: http://zuttobenkyou.wordpress.com/tag/setxkbmap/

Orlenko
quelle
Dies funktioniert gut, aber ein Neustart von XMonad war nicht genug, ich musste mich abmelden und anmelden (ich bin auf Ubuntu mit seinem Login-Manager).
Gauthier
3

Möglicherweise haben Sie bereits eine Startdatei, um die Dinge beim Anmelden zu starten und zu konfigurieren .

Fügen Sie die folgende Zeile hinzu, um mehrere Tastaturlayouts zu verwenden:

# Keyboard layout switcher
setxkbmap -layout us,se -variant ,kinesis -option 'grp:alt_shift_toggle'

-layoutund -variantzusammenarbeiten. Hier sind meine Layouts us(keine Variante, leer vor dem Komma) und se(kinesis). Varianten könnten dvorakzum Beispiel sein. Sie können die Variante weglassen, wenn Sie sie nicht möchten.

-option Legt hier die Tastenkombination zum Wechseln zwischen Layouts fest.

Damit sich Fenster an ihr Layout erinnern:

# Per window keyboard layout
kbdd

Wenn Sie xmobar verwenden und wollen das aktuelle Layout zeigen, fügen Sie diese zu Ihrer .xmobarrcConfig:

, commands = [...
...
, Run Kbd [("se", "SE"), ("us", "US")]
]
...
, template = "...... %kbd% "

Das war für alle Leute, die nach mehreren Tastaturlayouts googelten und diesen Thread fanden. Wenn Sie nur ein Tastaturlayout möchten, fügen Sie dieses Ihrem Startskript hinzu:

setxkbmap -layout us
Gauthier
quelle