私は開発者で、現在Ubuntu LinuxとPyCharm IDEを使用してウェブサイトを開発しています。タイピングのパフォーマンスを向上させるために、CapsLockをHyper_Lに変更し、xmodmapを使用してmod3に割り当てることを検討しました。次に、「i」キーのmod3を「Up」にマッピングしたいと思います。これまで私がしたことは次のとおりです。
xmodmap -e "keysym Caps_Lock = Hyper_L"
出力は次のとおりです。
shift Shift_L (0x32), Shift_R (0x3e)
lock Hyper_L (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
その後、mod4からHyper_Lを削除しました。
xmodmap -e "remove Mod4 = Hyper_L"
その後、Hyper_Lをmod3に割り当ててみました。
xmodmap -e "add Mod3 = Hyper_L"
ただし、次のエラーが発生します。
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 118 (X_SetModifierMapping)
Value in failed request: 0x17
Serial number of failed request: 11
Current serial number in output stream: 11
それでは、ここで何が間違っていますか?どのように動作させることができますか?私がしっかりしているのか?それとも、mod3をカスタムキーとして使用するために別のアプローチを使用する必要がありますか?
PS 私はMicrosoft Natural Ergonomic 7000キーボードを使用しています。
ベストアンサー1
インターネットには多くの答えがあり、ほとんど混乱しています。
キーは、「キーコード66」をスーパーキーにマッピングし、他のモード{1,2,4,5}(存在する場合のみ)からそのキーのマッピングを削除してからmod3を設定する必要があることです。
~/.Xmodmap を開き、次のように入力します。
! Unmap capslock
clear Lock
keycode 66 = Hyper_L
! Leave mod4 as windows key _only_
remove mod4 = Hyper_L
! Set mod3 to capslock
add mod3 = Hyper_L
これを実行
xmodmap ~/.Xmodmap
問題が発生した場合は、次の方法でキーボードをリセットできます。
setxkbmap -layout us
爆発の考えられる原因は、Hyper_Lが他の場所にマッピングされていることです。パラメータなしでxmodmapを実行して、Hyper_Lにバインドされている他のエントリを見つけて、この問題を解決してください。削除する項目がわかったら、.Xmodmap ファイルに「remove BINDING=Hyper_L」を追加します。
X11セッションを開くと、.Xmodmapファイルがロードされ、次回ログインまたは再起動するときにマップを準備する必要があります。
この設定は私のUbuntu 14.04設定で動作します。他の* nixがあり、これがうまくいかない場合は、ここで問題を解決するために行ったことを投稿してください。答えにマージします。