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

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

我有一台 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。您的布局切换器应该可以完全正常运行。

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

答案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 集成,请运行将其添加到启动钩子中

相关内容