如何在使用xmonad时更改键盘布局?

所以我有一个IBM Thinkpad X31,运行natty和xmonad作为窗口管理器。 键盘是意大利语。 我希望一直使用美式英语键盘映射。 我该怎么做呢?

这是连接XMonad和多个键盘布局的一种方法。

步骤1.创建一个将在布局之间切换的脚本。 例如,假设我们将支持英语(美国),意大利语和法语。

/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 

测试此脚本 – 运行它并查看键盘布局是否在布局之间循环。 如果是,请继续执行下一步。

步骤2.自定义XMonad设置以支持将切换布局的自定义键绑定。

在您的主目录中,创建名为“.xmonad”的目录(如果它不存在)。

/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") ] 

现在,按Mod + q重新启动XMonad。 您的布局切换器应该function齐全。

参考:http: //zuttobenkyou.wordpress.com/tag/setxkbmap/

要将键盘映射更改为美式英语,请运行命令setxkbmap us 。 要将它与Xmonad集成, 请将其添加到启动挂钩 。

您可能已经有一个启动文件可以在登录时启动和配置 。

添加以下行以使用多个键盘布局:

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

-layout-layout一起工作。 在这里,我的布局是us (没有变体,在逗号之前为空)和se(kinesis) 。 例如,变体可能是dvorak 。 如果您不想要它们,可以省略变体。

-option在此处设置用于在布局之间切换的键盘快捷键。

让Windows记住他们的布局:

 # Per window keyboard layout kbdd 

如果您使用xmobar并想要显示当前布局,请将其添加到.xmobarrc配置中:

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

这是为所有人搜索多个键盘布局和找到这个线程。 如果只需要一个键盘布局,请将其添加到启动脚本中:

 setxkbmap -layout us