web-dev-qa-db-ja.com

コマンドラインからキーボードを変更するにはどうすればよいですか?

コマンドラインからキーボードレイアウトを変更するにはどうすればよいですか?たとえば、英語からヘブライ語に切り替えたいです。画面の隅にある小さなアイコンを使用して、lightdmから実行できます。

64
Eyal

ターミナルから

英語からヘブライ語、およびその逆 Alt + Shift

setxkbmap -option grp:alt_shift_toggle us,il

このコマンドですべてのロケールエイリアスを見ることができます

cat /etc/locale.alias

Setxkbmapの詳細については、マニュアルをご覧ください

man setxkbmap
43
NickTux

次の場所ですべての異なるキーマップを見つけることができます。

/usr/share/keymaps/i386/
/usr/share/kbd/keymaps/i386/
/usr/share/X11/xkb/symbols/

Linuxコマンドラインでキーボードレイアウトを変更するには(スペイン語など)、次のコマンドを入力します。

loadkeys es

Xの場合:

setxkbmap es

Ubuntuを使用していると仮定して、これらの変更をシステム全体に適用するには、次を使用できます。

Sudo dpkg-reconfigure console-setup
50
Dr_Bunsen

Ubuntu 13.10以降

これは、Gnome/Unityキーボードレイアウトインジケーターを使用したsetxkbmapよりも適切に機能します。

gsettings set org.gnome.desktop.input-sources current 0

0はレイアウトインデックスです(デフォルトまたはトップレイアウトは0)。 0から始まるインデックス付きレイアウト。

簡単に使用できるように、エイリアスを作成します。

13
user.dz
setxkbmap us,il -option "lv3:ralt_alt,grp:alt_shift_toggle"

このコマンドを使用すると、英語とヘブライ語を切り替えることができます。 right alt+shift からあなたを救います left alt+shift

12
ansar313

標準のCLIツールはないようですが、 xkb-switch は、仕事をするための小さなオープンソースツールです。 Ubuntu 16.04.4 LTSでテストしたところ、問題なく動作します。

$ xkb-switch       # display current group
ua
$ xkb-switch -l    # list groups
us
ua
$ xkb-switch -s us # switch to a named group
$

setxkbmap <name>はすべてのオプションを無効にし、setxkbmap -layout <name>はオプションを保持しますが、設定されている場合はタスクバーインジケーターもgrp_ledも変更できないため、これは他のソリューションよりも良く見えます。


警告

~/.config/kxkbrcLayoutLoopCountを使用している場合(たとえば、LayoutListにリストされているレイアウトの総数よりも少なく設定されている場合)、次のようになります。

LayoutList=us,ua,th,de
LayoutLoopCount=2
Options=grp_led:scroll,grp:rwin_switch,compose:menu,lv3:ralt_switch,
        nbsp:level2,grp:rctrl_toggle,misc:typo

xkb-switchを使用すると、現在のグループのレイアウト間のみを切り替えることができます。


画面ロックで呼び出す

あなたのコメントに気付きました:

スクリーンセーバーがオンになる直前に、英語に切り替えて、戻ったときに簡単にパスワードを入力できるようにします。

これがまさに私の目標だったので、答えは次のとおりです。
これを行うには、 here のようにdbus-monitorにフックするスクリプトにラップするだけです。

3
bytebuster

18.04+でGnomeを使用してgsettingsを使用すると、コマンドラインからキーボードレイアウトを追加し、それらを切り替えることができますまたはからデスクトップ上のキーボードレイアウトスイッチャー。

1.現在のキーボードレイアウトとオプション:

$ gsettings list-recursively org.gnome.desktop.input-sources
org.gnome.desktop.input-sources show-all-sources false
org.gnome.desktop.input-sources xkb-options ['terminate:ctrl_alt_bksp']
org.gnome.desktop.input-sources per-window false
org.gnome.desktop.input-sources current uint32 1
org.gnome.desktop.input-sources mru-sources @a(ss) []
org.gnome.desktop.input-sources sources [('xkb', 'es'), ('xkb', 'no')]

2.キーボードレイアウトの追加:

$ gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us'), ('xkb', 'no'),('xkb','gr')]"
$ gsettings get org.gnome.desktop.input-sources sources
[('xkb', 'es'), ('xkb', 'no'), ('xkb', 'gr')]

3.現在のキーボードレイアウトをコマンドラインから変更する:

$ gsettings set org.gnome.desktop.input-sources current 1

現在、3つの異なる言語があるため、0〜2の3つの選択肢があり、1つはスペイン語、2つはノルウェー語、3つはギリシャ語です。したがって、currentを1に設定すると、ノルウェー語が現在のキーボードレイアウトになります。

4.考えられるすべてのキーボードレイアウトのリスト:

cat //usr/share/X11/xkb/rules/base.lst

5.キーボードショートカットでキーボードレイアウトを変更する:

キーボードレイアウトを変更するためのキーボードショートカットが事前に構成されています。現在のショートカット:

$ gsettings get org.gnome.desktop.wm.keybindings switch-input-source
['<Super>space']

Gsetting setを使用して新しいショートカットを設定できますが、すでに使用されているショートカットを使用しないように注意してください。使用中のすべてのショートカットをリストするには:

$ gsettings list-recursively org.gnome.desktop.wm.keybindings
org.gnome.desktop.wm.keybindings cycle-windows-backward ['<Shift><Alt>Escape']
org.gnome.desktop.wm.keybindings minimize ['<Super>h']
org.gnome.desktop.wm.keybindings move-to-workspace-7 @as []
org.gnome.desktop.wm.keybindings move-to-workspace-8 @as []
org.gnome.desktop.wm.keybindings move-to-workspace-9 @as []
org.gnome.desktop.wm.keybindings move-to-monitor-left ['<Super><Shift>Left']
...
3
ElToro1966

Ubuntu 18.04 + Gnomeの場合、他の答えはうまくいきませんでしたが、これはうまくいきました。

gdbus call --session --dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval \
 "imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()"

「inputSources [0]」の引数は、gsettingsソリューションの場合と同じ、キーボードレイアウトのインデックスです。

linux StackExchange で見つけました。

1
1mi