アプリケーションキーマップの修飾キーである CapsLock

アプリケーションキーマップの修飾キーである CapsLock

私は開発者で、現在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があり、これがうまくいかない場合は、ここで問題を解決するために行ったことを投稿してください。答えにマージします。

おすすめ記事