web-dev-qa-db-ja.com

コマンドラインからキーボードレイアウトを適切に変更する方法(setxkbmapはすべてのショートカットを解除します)

コマンドラインからCinnamonで現在アクティブなキーボードレイアウトを変更する方法はありますか?

ほとんどのガイドで提案されているsetxkbmapソリューションは、想定どおりに機能しません。呼び出されると、Cinnamonの言語インジケーター自体が消え、Cinnamonで構成された既存の組み合わせが機能しなくなります。 。この機能を復元するには、設定に移動して、キーボードレイアウト設定を再度有効にする必要があります。

さらに、setxkbmapがレイアウトを変更するように見える方法は、Cinnamonが好むと思われるよりも低いレベルであるという性質です。たとえば、setxkbmapを使用してレイアウトを非ラテンのものに変更する場合、システム全体のデフォルトのキーの組み合わせが機能しなくなります。 (Ctrl-Cで簡単にテストできます)。これは、Cinnamon内からのネイティブレイアウト切り替えでは発生しません。 setxkbmapは、ほとんどのアプリケーションが期待するレベルよりも低いレベルで動作するようです。

ネイティブのCinnamon(またはそれをベースにしているのでgnome)の方法でレイアウトを変更し、キーボードの組み合わせを機能させる方法はありますか?

(通常提案される別の解決策はgsettings set org.gnome.desktop.input-sources current 0です。これは現在のCinnamonでも機能しません(何も起こりません))。

もちろん、現在追加されているレイアウトは3つだけですが、可能なインデックスをすべて10個までテストしました。上記の変数は、レイアウトが手動で変更された場合にも変化しないようです。 Cinnamon環境に存在する同様の変数org.cinnamon.desktop.input-sourcesも試しましたが、何にも影響しません(gnomeバージョンとまったく同じ方法で)。

2
Cray

現時点での最善の解決策は、コマンドライン引数を受け入れるこの外部プログラム(xkb-switch)を使用して、xbindkeysなどにスクリプト化することです。

非公式、外部、およびコンパイル可能な言語で記述されていますが、依存関係がほとんどないため、実際にインストールするのは非常に簡単です。

https://github.com/ierton/xkb-switch

$ xkb-switch --help

Usage: xkb-switch -s ARG            Sets current layout group to ARG
       xkb-switch -l|--list         Displays all layout groups
       xkb-switch -h|--help         Displays this message
       xkb-switch -v|--version      Shows version number
       xkb-switch -w|--wait [-p]    Waits for group change and exits
       xkb-switch -W                Infinitely waits for group change
       xkb-switch -n|--next         Switch to the next layout group
       xkb-switch [-p]              Displays current layout group

使用:

xkb-switch -s us
xkb-switch -s de
etc...

このソリューション:

  • コマンドラインから動作します。
  • 高速であるため、このプログラムを呼び出しても遅延は発生しません(レイアウトsetxkbmapの切り替えとは異なります)。
  • トレイアイコン領域の組み込みレイアウトインジケータを正しく切り替えます。 (インジケーターはsetxkbmapのように消えたり機能しなくなりません。)
  • ロック画面でキーマップを台無しにせず、ロックする前に間違ったレイアウトが選択された場合に正しいパスワードを入力できないようにします(setxkbmapと同様)。
  • Ctrl-C、Ctrl-Vなどの主要なキーの組み合わせは変更しません。異なるレイアウトでも同じキーで動作します(アイデアはよくわかりますが、setxkbmap)。
  • すべてのウィンドウに同じレイアウトを使用するか、ウィンドウごとに個別のレイアウトを使用するかのような、すべてのCinnamonレイアウトメカニズムを尊重します。 (setxkbmapがそうなら推測してください?)

インストール手順はGithubにあります。

0
Cray