キーボードを設定しようとしていますが、利便性のために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
おそらく別のキーを犠牲にする必要があります。0x85
16進値Yesは、対応するキーが直接キーではなく、を押してもウィンドウ133
キーmod4
のように動作できることを意味します。Shift