icewm で分音記号を入力するためのショートカット キーを登録するにはどうすればよいですか?

icewm で分音記号を入力するためのショートカット キーを登録するにはどうすればよいですか?

一般的な発音区別符号を入力するためのショートカット キーを設定しようとしています。ターミナルまたは icewm コマンド バー (または gmrun から) で xdotool を使用して発音区別符号を入力できます。

xdotool key Aacute

ただし、次のキーマッピング (icewm キー ファイル内) は機能しません。

key "Ctrl+Alt+a"                  xdotool key Aacute
key "Ctrl+Alt+a"                  xdotool --delay 1000 key Aacute

代わりに、ショートカットを入力するとカーソルが 1 回点滅するだけで (ターミナルまたはテキスト エディターの場合)、それ以外は何も起こりません。次の例ではポップアップが表示されるので、キー コード自体は正しいです。

key "Ctrl+Alt+a"                  zenity --info --text="shortcut works"

アクティブなアプリケーションで実際に発音区別符号が入力されるように、キーバインディングを登録する方法はありますか?

答え1

setxkbmapまたはを使用するxmodmapのが正しいように思えますが、FWIW と FTR では、この質問に出くわした後、次の方法がうまく機能することがわかりました。 を使用したい他の人にも役立つことを願っていますxdotool

私のキーボードにはこれらのキーがないので、xdotool でこれらのキーをエミュレートしています。 を使用して&コマンドをバックグラウンドで実行し、IceWM がホット キーの処理から戻り、xdotool に干渉しないようにすることに注意してください。

--clearmodifiers200 ミリ秒は、確実に動作させるために使用できる最短の遅延です。これがあなたのユースケースに適しているかどうかはわかりません。

key "Ctrl+Up"          xdotool sleep 0.2 key --clearmodifiers Page_Up &
key "Ctrl+Down"        xdotool sleep 0.2 key --clearmodifiers Page_Down &
key "Ctrl+Shift+Up"    xdotool sleep 0.2 key --clearmodifiers Home &
key "Ctrl+Shift+Down"  xdotool sleep 0.2 key --clearmodifiers End &

また、これらのキーを押しても、期待どおりの繰り返し動作は発生しないことに注意してください (IceWM ホット キーはこれに最適な選択肢ではないため) が、私の目的には問題ありません。

答え2

当初の解決策がうまくいかなかったので、代わりにキーボード マッピングを変更しました。デフォルトの米国キーボード マッピングには必要な発音区別符号がありませんが、国際バージョンにはあります。試してみるには、次の操作を行います。

setxkbmap -layout 'us(intl)'

しかし、国際版では、特定のキーに対してデフォルトで Compose が使用されます。たとえば、' 文字はすぐには反応しません。そのため、代わりに、米国のキーボードに基づいて独自のキーボード マッピングを作成することにしました。

新しいファイルを作成しました:/usr/share/X11/xkb/symbols/erik

partial default alphanumeric_keys
xkb_symbols "basic" {
  include "us"
  include "eurosign(5)"

    key <AC01> { [         a,          A,        aacute,           Aacute ] };
    key <AD03> { [         e,          E,        eacute,           Eacute ] };
    key <AD08> { [         i,          I,        iacute,           Iacute ] };
    key <AD09> { [         o,          O,        oacute,           Oacute ] };
    key <AD07> { [         u,          U,        uacute,           Uacute ] };

    key <RALT>  { type[Group1]="TWO_LEVEL", [ ISO_Level3_Shift, Multi_key ]   };  

    modifier_map Mod5   { <RALT> };
};

xkb に変更を適用させるには:

sudo dpkg-reconfigure xkb-data

キーボードマッピングを試すには:

setxkbmap -layout erik

これで、alt_gr + [aeiou] は [áéíóú] と入力するはずです。

私は、icewm スタートアップ ファイルを使用して、起動時に上記のコマンドを呼び出すことで、変更を永続的にしました。ディストリビューションのキーボード スイッチャーを使用してレイアウトを選択できるはずですが、これはテストしていません。キーボード マッピングに私の名前を付けるという大きな栄誉を与えたいのでなければ、ファイルに別の名前を付けてください。すべてのデフォルトの国マッピングは 2 文字のコードで命名されているため、2 文字のコードは避けてください。

注:
例として、シンボル ディレクトリ内の他のマッピング ファイルを確認できます。
ファイル形式を理解するためのリソースは、次の場所にあります。
https://www.x.org/wiki/XKB/

関連情報