Xで修飾キーを文字キーに置き換えるには?

Xで修飾キーを文字キーに置き換えるには?

left Windows-keyを-keyに置き換えようとしています<>|。これはvtermで非常にうまく機能し、キーマップファイルを使用してこれを行うことができます。しかし、Xでは動作しません。 (KDEとMateで試しましたが、どちらも同じ動作を示します)

xkb を使用してもxmodmapxkb シンボル構成を使用しても、結果は同じです。 -keyが機能しなくなり、-keyはまだキーですが、押した<>|ときにleft Windows表示されます。<

xev私の<>|-keyのコードが94で、私の-keyのコードが133であることを確認して、left Windows次のことを試しました。

xmodmap -e "keycode 133 = less greater bar NoSymbol U0149 brokenbar U266A NoSymbol"
xmodmap -e "keycode 94 = Super_L"

私が試したxkbシンボルの設定は次のようになり、上記と同じ効果があります。

partial alphanumeric_keys
xkb_symbols "defoo" {
  include "de(basic)"
  name[Group1] = "German (foo)";
  key <LWIN> { [ less, greater, bar, NoSymbol, U0149, brokenbar, U266A, NoSymbol ] };
  key <LSGT> { [ Super_L ] };
};

何をすべきか?この鍵を交換する必要があります。

編集:Ubuntu 18.04を使用しています

編集:また、修飾キーを操作してみました。xmodmap -pm私のスーパーキーがmod4に割り当てられているとしましょう。

xmodmap -e "clear mod4"

しかし、これは何の効果もありません。つまり、Windowsキーは以前と同じように機能します。

答え1

私はこれを避けたいと思っていましたが、最終的にキーコードファイルのキーをevdevに置き換えて、望ましい効果を得ました。

プロフェッショナル:

  • キー押下のイベントコードを変更するので、すべてのレイアウトやアプリケーションで透過的に機能します。

欠点:

  • すべてのevdevキーボードと連携
  • 変更はシステムファイルに適用されます(後で破損する可能性があります)。

違い:

$ diff /usr/share/X11/xkb/keycodes/evdev{,.bak}
8c8
<         <LWIN> = 94;
---
>         <LSGT> = 94;
74c74
<   <LSGT> = 133;
---
>   <LWIN> = 133;

関連情報