我有一台 IBM Thinkpad X31,运行 natty 和 xmonad 作为窗口管理器。键盘是意大利语。我希望一直使用美式英语键盘映射。我该怎么做?
答案1
这是连接 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。您的布局切换器应该可以完全正常运行。
答案2
你可能已经有一个启动文件来启动和配置事物在登录时。
添加以下行以使用多种键盘布局:
# Keyboard layout switcher
setxkbmap -layout us,se -variant ,kinesis -option 'grp:alt_shift_toggle'
-layout
和-variant
一起工作。这里我的布局是us
(无变体,逗号前为空) 和se(kinesis)
。变体可以是dvorak
,例如。如果您不想要变体,可以省略它们。
-option
在此设置用于在布局之间切换的键盘快捷键。
要让窗口记住其布局:
# Per window keyboard layout
kbdd
如果您使用 xmobar 并想要显示当前布局,请将其添加到您的.xmobarrc
配置中:
, commands = [...
...
, Run Kbd [("se", "SE"), ("us", "US")]
]
...
, template = "...... %kbd% "
这是针对所有在 Google 上搜索多种键盘布局并找到此主题的人的。如果您只需要一种键盘布局,请将其添加到您的启动脚本中:
setxkbmap -layout us
答案3
要将键盘映射更改为美式英语,请运行命令setxkbmap us
。要将其与 Xmonad 集成,请运行将其添加到启动钩子中。