web-dev-qa-db-ja.com

ターミナルでキーボードレイアウト(言語)を取得する方法(コンソール、コマンドライン)

コマンドラインで現在のキーボードレイアウトを取得することは可能ですか?私はすでにさまざまな方法を試しました:

  1. localectlstatus)など。
  2. cat /etc/default/locale
  3. cat /etc/default/keyboard
  4. setxkbmap -query
  5. gsettings ...
  6. setxkbmap -print | grep xkb_symbolssetxkbmap -v | awk -F "+" '/symbols/ {print $2}'
  7. xkblayout-stateをインストールしようとしましたが、インストールしたくありません(makeは失敗します)

そのため...キーボードレイアウトが別のレイアウトに変更された場合、これらはすべて同じ出力イベントを表示します...usレイアウトを表示します。ちなみに、私は何十ものトピックをチェックしましたが、結果はありません...重複としてマークしないでください。それを適切に達成する方法を見つけましょう。

uname -aLinux 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-67here 。これを行う明確な方法ですか?


上記のコマンドの出力:

$ 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

それで...あなたが見るように、これは変わります。全体として、現在のレイアウトを取得する明確な方法ですか?

2
V.7

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リストの最初の入力ソースです。

3