複数のキーボードレイアウトを切り替えるスクリプト

複数のキーボードレイアウトを切り替えるスクリプト

ElementaryOSプロジェクトでArchlinuxとPantheon Shellを使用していますが、不便な問題があります。抜け穴トグルレイアウトがあります。今私はこのスクリプトレイアウト間を切り替えます。完全には動作しませんが(スイッチ間にまだ少しの遅延があります)、標準スイッチよりも高速です。パネルから不要なマークも削除しました。今、私は別の言語を学んでいるので、システムに別のレイアウトを追加する必要があります。

setxkbmap us50行のPythonスクリプトが遅く実行されるため、上記のものとは異なり、すぐに実行できるsetxkbmap ruスイッチsetxkbmap eoを使用したいと思います。問題は、それらをスクリプトに結合してCAPSLOCKopen USSHIFT + CAPSLOCKopen RUSHIFT + TABopenを押す方法ですEO。私はこのようなスクリプトを書いたことがなく、それがどのように見えるのかわかりません。

答え1

スクリプトを書かなくても同様のことをする方法があります。英語、ロシア語、エスペラントを組み合わせた新しいキーボードレイアウトを作成することができ、ほぼ希望通りに動作します。

/usr/share/X11/xkb/symbols/まず、(またはディストリビューションに応じてキーボード設定ファイルがどこにあっても)、ファイルを作成し、/usr/share/kbd/keymaps/既存のファイルと競合しないoo名前を指定します(私は鉱山として名前を付けました)。そして、このファイルにいくつかの行を追加して、正しく機能していることを確認してください。

xkb_symbols "multi" {
include "us(basic)"
include "level3(ralt_switch)"
name[Group1] = "english";
name[Group2] = "esperanto";
name[Group3] = "russian";
key <CAPS> {[ISO_Next_Group, ISO_Prev_Group]};
key.type[group1]="FOUR_LEVEL";
key.type[group2]="FOUR_LEVEL";
key.type[group3]="FOUR_LEVEL";
key <AD01> {[], [scircumflex, Scircumflex], [Cyrillic_shorti, Cyrillic_SHORTI]};
};

それからsetxkbmap oo -variant multi

  • を押してq書きますq。この例は文字にのみ適用されますq(ただし、他の文字に対しては簡単にこれを行うことができます)。ŝエスペラントやロシア語で書くことができますй
  • Capsuseoおよびをru繰り返します(3回繰り返すとレイアウトISO_Next_Groupに戻ります)。us
  • Shift + Capsループを逆順に入力しますISO_Prev_Group

レイアウト間の反復方法が気に入らない場合(<CAPS>ファイルの行の変更)を使用できます。

key <CAPS> {[ISO_First_Group, ISO_Last_Group]};
  • 入力すると、現在どこにいてもレイアウトに移動しますCapsusISO_First_Group
  • どこにいても、入力はShift + Capsレイアウトに入ります。ruISO_Last_Group
  • 残念ながらこれはないISO_Second_Groupので、2つのレイアウトに直接アクセスできます(ただし、2つ以上を使用したい場合は繰り返すことができます)。他の同様のキーコードのリストがあります。ここ

このファイルの仕組み:

  • xkb_symbols "multi" { ... };キーボードレイアウトバリアントの名前です。
  • include "us(basic)"レイアウトが含まれているため、設定ファイルにキーを入れるqwerty必要はありません。qwerty
  • include "level3(ralt_switch)"時々利用したい場合はAltgr
  • key <NAME>{ [group 1 content], [group 2 content], [group 3 content]};Shift、各コンテンツグループは、主キー、キー、およびキーと...のカンマ区切りの名前で、Altgr最大8つの値です。ここでは、最初のグループの内容を省略できます。

注:グループの変更は、setxkbmap毎回実行するよりも高速です。

関連情報