何が起こっているのか理解しようとしています

何が起こっているのか理解しようとしています

キーボードを設定しようとしていますが、利便性のためにWindowsキーをタブに再マップしたいと思います。だから試してみました(133はキーボードの左スーパーキーです)。

xmodmap -e "keycode 133 = Tab Super_L"

ただし、Windowsキーを押しても「ウィンドウ」メニューが表示され、タブが挿入されないため、この方法は機能しません。 Shift + superでタブを生成するなど、同じテーマの他のいくつかの変形も機能しません。

私はlightdmでcinnamon(Ubuntu 16.04のppaにインストールされています)を使用していますが、ウィンドウ/スーパーキーがより低いレベルで傍受され、xmodmapがこれを処理できないと想像しています...私が望むことを達成する方法はありますか? xmodmapに関連しない答えを歓迎します!

(私は専門家とは距離が離れているので非常に簡単な解決策があるかもしれません...)

ベストアンサー1

何が起こっているのか理解しようとしています

引数なしで入力するとxmodmap(修飾子リストを取得するために)、次のような結果が得られます。

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        ISO_Level5_Shift (0x69)
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

重要な部分はmod4…そこがまさにその場所だからですSuper_L

次に、次を実行し、xmodmap -e "keycode 133 = Tab Super_L" && xmodmap | grep mod4次のようになります。

mod4        Tab (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)

mod4が変更され、追加されましたTab。これがキーが133まだウィンドウメニューを開く理由です。

ところで今試してみているのでI3WM結果が少し異なることもあります。
たとえば、端末またはテキストエディタでキーを押すと、133タブ文字が書き込まれ、修飾子になります。

Shiftまた、キータイプがあるため他の動作が発生しないことも確認しましたONE_LEVEL

xev | grep key実行して、特定のキーの組み合わせで何が起こるかを確認することもできます。

解決策

しかしxmodmap、修飾子ごとに4つ以上のキーを持つことができないことを教えてくれるので、解決策(これまで私に効果があった唯一の方法)は使用しないか持っていないキーを犠牲にしてSuper_L

を使用している場合は、QWERTY次の場所にあるレイアウトを変更し/usr/share/X11/xkb/symbols/us(別のレイアウトを使用している場合は通常同じフォルダにある別のファイルです)、次のように作成できます。

key.type[Group1] = "TWO_LEVEL";
key <MENU>{[Super_L]}; // ONE or TWO level, assuming MENU key isn't used
key <LWIN>{[ Tab, Super_L]}; // should be TWO_LEVEL
key.type[Group1] = "ONE_LEVEL";

代わりに(おそらくファイルの14行目)

 key <LWIN>{[Super_L]};

次に、を使ってキーボードレイアウトを更新しますsetxkbmap us && xmodmap | grep mod4
次のような結果が得られます。

mod4        Super_R (0x86),  Super_L (0x87),  Super_L (0xce),  Hyper_L (0xcf)

それでも得ることができれば、Tabおそらく別のキーを犠牲にする必要があります。0x8516進値Yesは、対応するキーが直接キーではなく、を押してもウィンドウ133キーmod4のように動作できることを意味します。Shift

おすすめ記事