私はGnomeデスクトップを搭載したFedora 14からMateデスクトップを持つFedora 20にアップグレードしました。 F14では、以前はCapsLockをControl_Leftに、Alt_RightをControl_Rightに置き換えました。 /etc/X11/xinit/xinitrc-commonに次の行を追加してこれを行いました(各行の「xmodmap」をご了承ください)。
xmodmap -e 'clear lock'
xmodmap -e 'clear control'
xmodmap -e 'remove mod1 = Alt_R'
xmodmap -e 'add control = Caps_Lock Alt_R'
xmodmap -e 'add mod1 = Control_R'
xmodmap -e 'add lock = Control_L'
F14では期待どおりに動作します。ただし、F20 の下の /etc/X11/xinitrc-common にコピーすると、CapsLock Control_L スワップは発生しません。代わりに、両方のキーがCapsLockになります。 Alt_R/Control_R スワップが正常に動作します。
次に、xmodmapのマニュアルページで提供されているソリューションを試してみました。 xmodmap を使用して Caps Lock を再マップすると機能しません。
xmodmap -e 'remove Lock = Caps_Lock'
xmodmap -e 'remove Control = Control_L'
xmodmap -e 'keysym Control_L = Caps_Lock'
xmodmap -e 'keysym Caps_Lock = Control_L'
xmodmap -e 'add Lock = Caps_Lock'
xmodmap -e 'add Control = Control_L'
奇妙なことに、CapsLockとControl_Lキーは両方ともControl_Lです。
それにもかかわらず、すべての交換にキーコードマッピングを使用することは魅力的です。
xmodmap -e 'clear Lock'
xmodmap -e 'clear Control'
xmodmap -e 'remove Mod1 = Alt_R'
xmodmap -e 'keycode 66 = Control_L'
xmodmap -e 'keycode 37 = Caps_Lock'
xmodmap -e 'keycode 108 = Control_R'
xmodmap -e 'keycode 105 = Alt_R'
xmodmap -e 'add Lock = Caps_Lock'
xmodmap -e 'add Control = Control_L Control_R'
xmodmap -e 'add Mod1 = Alt_R'
交換前の元のキーコードは66 = CapsLock、37 = Control_L、108 = Alt_R、105 = Control_Rです。
最初の2つの方法がうまくいかない理由を知りたいです。どんなアイデアがありますか?
答え1
ラップトップで正しいコントロールキーとメニューキーを切り替えようとすると、同様の問題が発生しました(Dellはキーボードの物理的な位置を変更しました)。
何らかの理由で修飾キーが機能するには、2つの機能が必要です。特定のキーがControl_Rであることを知っておく必要があり、特定のキーにControl修飾子が添付されていることに注意してください。
そのため、キーコードを交換してから、あるキーから制御機能を個別に削除し、別のキーに追加する必要がありました。文字キーを変更しようとするときは、最初のステップを実行するだけです。
私の考えでは、システムが修飾子の機能を異なる方法で処理しているようです。