web-dev-qa-db-ja.com

xmonadに2つのmodキーを使用させる方法

Xmonadでmodキーを設定する方法の例はたくさんありますが、2番目のmodキーを追加するにはどうすればよいですか?

7
Arthur Ulfeldt

Xmodmapを使用して、2番目のキーをたとえばに追加できます。 Mod1なので、どちらかを押すとmodMask = mod1Maskで機能します。

6
user17882

あなたはただまたはキーを一緒にすることができます...見てください:

$ 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で再度インストールします。それは小さな変化でしょう。

4

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でのみ機能し、仮想端末では機能しないことに注意してください。

2
Silfheed

Xmonad.hs modMask値を編集することにより、modキーを他のmod1にバインドできます。

例、mod4(多くの場合「Win」)キーへのバインド:

import XMonad

main = xmonad defaultConfig
         { modMask = mod4Mask
         , terminal = "urxvt"
         }
0
Avis

両方のmodMaskの選択肢を同じアクションにバインドできます。これは、最初の(key、action)cotcatMapListingすることで実現できます。

0
JoeGomain