Xmonadでmodキーを設定する方法の例はたくさんありますが、2番目のmodキーを追加するにはどうすればよいですか?
Xmodmapを使用して、2番目のキーをたとえばに追加できます。 Mod1なので、どちらかを押すとmodMask = mod1Maskで機能します。
あなたはただまたはキーを一緒にすることができます...見てください:
$ ghci
> :m + XMonad
> :t (.|.)
(.|.) :: (Data.Bits.Bits a) => a -> a -> a
> :t mod1Mask
mod1Mask :: KeyMask
> :t mod2Mask
mod2Mask :: KeyMask
> :t mod1Mask .|. mod2Mask
mod1Mask .|. mod2Mask :: KeyMask
ご覧のとおり、OR 2つのキーマスクを組み合わせて、希望する結果を得ることができます。必要なのはそれだけなので、最後の行のように使用します。
myAwesomeModMask = mod1Mask .|. mod3Mask
-- or whatever you want it to be
そして、それがすべてです。
編集:ああ、待ってください、あなたは2つの異なるキーが独立してModキーとして機能することを望みます。コードが現在立っているので、それは現在不可能だと思います。解決策:ソースをチェックして自分で編集してから、cabalで再度インストールします。それは小さな変化でしょう。
Daniel Schoepeの答えを拡張するために、スーパーキー(Windowsキー)を使用してxmonadでこれを行いますが、xmonad.hsでは何も設定しません(modMask = mod4Maskを設定する以外)。 xmodmap を使用する.Xmodmapファイルで、左側のコントロールを2番目のスーパーキーとして設定しました。
remove Control = Control_L
keysym Control_L = Super_L
add Control = Control_L
Xmodmapを使用して、capslockとcontrolを交換したり、適切なcontrolをsuperに設定したりすることもできますが、変更はXでのみ機能し、仮想端末では機能しないことに注意してください。
Xmonad.hs modMask値を編集することにより、modキーを他のmod1にバインドできます。
例、mod4(多くの場合「Win」)キーへのバインド:
import XMonad
main = xmonad defaultConfig
{ modMask = mod4Mask
, terminal = "urxvt"
}
両方のmodMask
の選択肢を同じアクションにバインドできます。これは、最初の(key、action)cotcatMap
でList
ingすることで実現できます。