後で更新: 午前中、私はxmodmapと素晴らしい最後に問題を完全に解決したこの答えを見つけました。。その理由は、xmodmapがキーボードハードウェアに近いxkbほど強力ではないからだと思います。この手順を実行すると、KUL ES-87(AltキーとSuperキーの切り替え)と「OS Xモード」がAppleキーボードのように動作します。
次のスクリプトを使用して、xmodmapを介していくつかの修飾キーを再マップしました。
remove mod4 = Super_L
remove control = Control_L
add control = Super_L
add mod4 = Control_L
Super キーは Control キーとして機能します。 SuperキーはControlキーにマップされているため、コピーして貼り付けることができます。ただし、Controlキー(Superにマップされている)を使用してSuper + Vで通知ウィンドウを表示したり、Super + PgDnでワークスペースを切り替えたりするなど、UbuntuでSuperが実行する操作を実行することはできません。
奇妙なことは、これらの機能を再マップするためにキーボードショートカットに移動すると、期待どおりにキーストロークが表示されることです。キーボードでCrtl + Vを押すとSuper + Vを送信したと記録されますが、キーボードショートカットにショートカットを記録する以外の状況でこのキーの組み合わせを使用しようとすると、まだ機能しません。したがって、キーボード設定は変更されたキーマップを正しく解釈しますが、それでも機能を実行できません。 xmodmap Superをリセットすると、Controlが期待どおりに機能し、すべてのショートカットがデフォルトで機能します。
この問題の原因は何ですか?キーボードが期待どおりに動作するようにするにはどうすればよいですか?
修正する:xkbをデフォルト値にリセットし(xmodmapもリセットします)、xmodmapマップをキーコードで更新しました。これはスーパーキーを無効にする以外には効果がありません(キーは通知リストを開くためには使用されませんが、まだキーボードショートカットにスーパーキーとして登録されており、左キーは何らかの方法でCtrl
Control_L機能を維持します。入れる)キーとキーボードショートカットは、新しいショートカットを割り当てるとまだControlとして認識されます。正確に何が起こっているのでしょうか?
m@buntoo:~$ setxkbmap -layout us
m@buntoo:~$ xmodmap -pke | grep 'Super\|Control'
keycode 37 = Control_L NoSymbol Control_L
keycode 105 = Control_R NoSymbol Control_R
keycode 133 = Super_L NoSymbol Super_L
keycode 134 = Super_R NoSymbol Super_R
keycode 206 = NoSymbol Super_L NoSymbol Super_L
m@buntoo:~$ xmodmap -e "keycode 37 = Super_L"
m@buntoo:~$ xmodmap -e "keycode 133 = Control_L"
m@buntoo:~$ xmodmap -pke | grep 'Super\|Control'
keycode 37 = Super_L NoSymbol Super_L
keycode 105 = Control_R NoSymbol Control_R
keycode 133 = Control_L NoSymbol Control_L
keycode 134 = Super_R NoSymbol Super_R
keycode 206 = NoSymbol Super_L NoSymbol Super_L
m@buntoo:~$ xmodmap -e "keycode 206 = Control_L"
m@buntoo:~$ xmodmap -pke | grep 'Super\|Control'
keycode 37 = Super_L NoSymbol Super_L
keycode 105 = Control_R NoSymbol Control_R
keycode 133 = Control_L NoSymbol Control_L
keycode 134 = Super_R NoSymbol Super_R
keycode 206 = Control_L NoSymbol Control_L
m@buntoo:~$
答え1
mod4とSuper_Lを削除して追加するだけでなく、キーコードも交換されます。
キーコードを入手してxmodmap -pke
値を交換してください。私はkeycode 37 = Control_L NoSymbol Control_L
)なので、次のようにします。
xmodmap -e "keycode 37 = Super_L"
そして、必要なら2つ以上。正確にテストすることはできません。私のキーボードにはその機能がありませんSuper_L
。