web-dev-qa-db-ja.com

xmonadの使用中にキーボードレイアウトを変更するにはどうすればよいですか?

そのため、ウィンドウマネージャーとしてnattyとxmonadを実行するIBM Thinkpad X31があります。キーボードはイタリア語です。私は常にアメリカ英語のキーボードマッピングを使用したいと思っています。どうすればいいですか?

7
Walead Fuss

XMonadと複数のキーボードレイアウトを接続する1つの方法を次に示します。

手順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/

6
orlenko

ログイン時に 起動および設定を行うための起動ファイル がすでにある場合があります。

いくつかのキーボードレイアウトを使用するには、次の行を追加します。

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

-layout-variantは連動します。ここで、私のレイアウトはus(バリアントなし、コンマの前に空)、およびse(kinesis)です。たとえば、バリアントはdvorakになります。必要ない場合は、variantを省略できます。

-optionは、レイアウトを切り替えるキーボードショートカットをここに設定します。

ウィンドウがレイアウトを記憶するために:

# Per window keyboard layout
kbdd

Xmobarを使用して現在のレイアウトを表示する場合は、これを.xmobarrc Configに追加します。

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

これは、複数のキーボードレイアウトをグーグルで検索して、このスレッドを見つけるためのすべての人々のためでした。キーボードレイアウトを1つだけにする場合は、これを起動スクリプトに追加します。

setxkbmap -layout us
3
Gauthier

キーボードマッピングをアメリカ英語に変更するには、setxkbmap usコマンドを実行します。 Xmonadと統合するには、 スタートアップフックに追加 します。

2
Egil