如何让 xmonad 使用两个 mod 键

如何让 xmonad 使用两个 mod 键

我找到了很多关于如何在 xmonad 中设置 mod 键的示例,但是如何添加第二个 mod 键?

答案1

您可以使用 xmodmap 添加第二个键,例如 Mod1,这样按下任一键都可以使用 modMask = mod1Mask。

答案2

您只需将或键组合在一起即可...观看:

$ 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

因此,如您所见,您可以将两个关键蒙版组合在一起以获得所需的结果。这就是全部,因此您只需像那里的最后一行那样使用它即可。

myAwesomeModMask = mod1Mask .|. mod3Mask
-- or whatever you want it to be

这就是全部内容了。

编辑:啊,等等,你想要两个不同的键独立地充当 Mod 键。我认为,就目前的代码而言,这目前是不可能的。解决方案:查看源代码并自行编辑,然后 cabal 再次安装它;这将是一个小改动。

答案3

只是为了扩展 Daniel Schoepe 的回答,我在 xmonad 中使用超级键(windows 键)执行此操作,但我没有在 xmonad.hs 中设置任何内容(除了设置 modMask = mod4Mask)。使用修改映射我已在 .Xmodmap 文件中将左控制键设置为第二个超级键,内容如下:

remove Control = Control_L
keysym Control_L = Super_L
add Control = Control_L

您还可以使用 xmodmap 来交换 capslock 和 control,将右控制设置为 super,等等,但请注意,这些更改仅在 X 中有效,而在虚拟终端中无效。

答案4

您可以将两个选择绑定到同一个操作。这可以通过在初始 (key,action) 上进行modMask来实现。cotcatMapList

相关内容