xmodmapを使用してCapsLockとControlを交換します(マンページソリューションが機能しない)。

xmodmapを使用してCapsLockとControlを交換します(マンページソリューションが機能しない)。

私は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修飾子が添付されていることに注意してください。

そのため、キーコードを交換してから、あるキーから制御機能を個別に削除し、別のキーに追加する必要がありました。文字キーを変更しようとするときは、最初のステップを実行するだけです。

私の考えでは、システムが修飾子の機能を異なる方法で処理しているようです。

おすすめ記事