web-dev-qa-db-ja.com

コマンドラインから現在のキーボードレイアウトを取得する方法

すべてのディストリビューションのコマンドラインで現在のキーボードレイアウトを取得するにはどうすればよいですか?出来ますか ?

つまりxset -q | grep LED| awk '{ print $10 }'は、キーボードレイアウトが異なるさまざまな出力を示していますが、他の人に聞いたところ、レイアウトを変更しても同じ出力が表示されることに気付きました。それは可能ですか、それとも彼らは何か間違ったことをしましたか?現在のキーボードレイアウトを取得する明確な方法はありますか?

私はトピック ここ を始めましたが、ソリューションがディストリビューションに依存していることは明らかです。そこで、私はこれを取得するための多くのバリアントを試しましたが、xsetのみが機能しました。

ちなみに、各ディストリビューションのコマンドは何ですか?つまりディストリビューションに応じて現在のキーボードレイアウトを取得するコマンドを実行するスクリプト用。つまりどのコマンドが出力するか[〜#〜] current [〜#〜]Fedoraの切り替えレイアウト、Ubuntu、KDE ​​Neon、Arch、Gentooなどのレイアウト。

6
V.7

解決策が見つからなかった理由は、解決策がないためです。これが「US QWERTY layout」のような意味である場合、「現在のキーボードレイアウト」などはありません。キーボードレイアウトは、特定の事前定義されたレイアウトである必要はありません。それを明確に説明する唯一の方法は、マッピングのセット全体をダンプすることです(これはxkbcomp :0 -で実行できます)。

これまたはその構成インターフェースで構成されているレイアウトを確認できます。特定のインターフェイスで構成されているレイアウトだけがわかります。このレイアウトが最新かどうかはわかりません。ユーザーがレイアウトを変更するために別のインターフェースを使用したか、xmodmapxkbcompなどのツールを使用して完全にカスタムのキーマップを設定した可能性があります。

setxkbmap -queryから得られる出力は、可能な限り近くなります。 Xサーバーから情報を取得するため、適用されているかどうかに関係なく、構成ファイルの問題に遭遇することはありません。ただし、Xサーバーにキーボードレイアウトを変更するように指示するには、レイアウト名(およびオプション)を指定する方法と、個々のキーを設定する方法の2つがあります。 setxkbmap -queryusと表示する場合は、最後に誰かが特定のレイアウトのロードをXサーバーに正常に要求したときに、リクエストがusレイアウトのロードでした。ただし、個々のキーの構成を変更する後続の要求があった場合、レイアウトは完全に異なる可能性があります。

誰も何も悪いことをしていません。キーボードレイアウトは事前定義されたレイアウトである必要がないため、システムには「現在のレイアウト」という概念がないというだけのことです。