コマンドラインで現在のキーボードレイアウトを取得することは可能ですか?私はすでにさまざまな方法を試しました:
localectl
(status
)など。cat /etc/default/locale
cat /etc/default/keyboard
setxkbmap -query
gsettings ...
setxkbmap -print | grep xkb_symbols
(setxkbmap -v | awk -F "+" '/symbols/ {print $2}'
)xkblayout-state
をインストールしようとしましたが、インストールしたくありません(make
は失敗します)そのため...キーボードレイアウトが別のレイアウトに変更された場合、これらはすべて同じ出力イベントを表示します...usレイアウトを表示します。ちなみに、私は何十ものトピックをチェックしましたが、結果はありません...重複としてマークしないでください。それを適切に達成する方法を見つけましょう。
uname -a
はLinux x4 4.4.0-97-generic #120-Ubuntu SMP Tue Sep 19 17:28:18 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
を示します
配布はKDE Neon 5.8
で、Ubuntuに基づいています
ウィンドウシステムはX11
です
ところで、私はこれを見つけました:xset -q | grep -A 0 'LED' | cut -c59-67
here 。これを行う明確な方法ですか?
上記のコマンドの出力:
$ localectl status
:
System Locale: LANG=en_US.UTF-8
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_MONETARY=ru_RU.UTF-8
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
VC Keymap: n/a
X11 Layout: us
X11 Model: pc105
$ cat /etc/default/locale
:
# File generated by update-locale
LANG="en_US.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
$ cat /etc/default/keyboard
:
# KEYBOARD CONFIGURATION FILE
# Consult the keyboard(5) manual page.
XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"
$ setxkbmap -query
:
rules: evdev
model: pc101
layout: us,ru
options: grp:alt_shift_toggle
$ setxkbmap -print | grep xkb_symbols
:
xkb_symbols { include "pc+us+ru:2+inet(evdev)+group(alt_shift_toggle)" };
$ setxkbmap -v | awk -F "+" '/symbols/ {print $2}'
:
us
$ cat ~/.config/kxkbrc
:
[Layout]
DisplayNames=,
LayoutList=us,ru
LayoutLoopCount=-1
Model=pc101
Options=grp:alt_shift_toggle
ResetOldOptions=true
ShowFlag=false
ShowLabel=true
ShowLayoutIndicator=true
ShowSingle=false
SwitchMode=Global
Use=true
これらのコマンドはすべて2回実行されました(キーボードレイアウト変更の前後)。結果はありません。
ところで:
$ xset -q | grep -A 0 'LED' | cut -c59-67
(英語が有効になっています):
00000000
$ xset -q | grep -A 0 'LED' | cut -c59-67
(ロシア語が有効になっています):
00001000
それで...あなたが見るように、これは変わります。全体として、現在のレイアウトを取得する明確な方法ですか?
buntu 17.1に関しては、デスクトップセッションの現在のキーボードレイアウトが異なる方法で保存されていることがわかりました。
スウェーデン語と英語(米国)のレイアウトを使用できます。以前は私ができました:
$ gsettings get org.gnome.desktop.input-sources sources
[('xkb', 'se'), ('xkb', 'us')]
$ gsettings get org.gnome.desktop.input-sources current
uint32 0
current値0(ゼロ)は、現在のレイアウトがsourcesリスト。ただし、17.10では、レイアウトを切り替えてもcurrent値は変更されません。
代わりに、17.10にはmru-sourcesキーが含まれます。このキーにはm ost r ecently- sed入力ソース。したがって、スウェーデン語が私の現在のレイアウトである場合、次のようになります。
$ gsettings get org.gnome.desktop.input-sources mru-sources
[('xkb', 'se'), ('xkb', 'us')]
そして、英語に切り替えると、次のようになります。
$ gsettings get org.gnome.desktop.input-sources mru-sources
[('xkb', 'us'), ('xkb', 'se')]
したがって、現在のレイアウトは、単にmru-sourcesリストの最初の入力ソースです。