Xmonad-将密钥绑定到命令链


3

我正在为Xmonad使用EZConfig模块。我想绑定ModMask s到首先将当前的焦点窗口移到另一个屏幕,然后将焦点移到另一个屏幕。

使用CycleWS模块,可以通过先运行“ shiftNextScreen”再运行“ nextScreen”来实现

我可以将两个命令绑定到一个键上吗?

另外,我尝试去

((modMask, xK_s),
     shiftNextScreen nextScreen)

但这不起作用,因为nextScreen成为shiftNextScreen的参数,这没有任何意义。我一点都不知道haskell。

Answers:


5

到目前为止,似乎没人能回答您的问题。让我试试看:

TL; DR

((modMask, xK_s),
     sequence_ [shiftNextScreen, nextScreen])

应该管用。

为什么?

如果您查看http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Actions-CycleWS.html

您会看到以下类型的功能:

nextScreen :: X ()
shiftNextScreen :: X ()

加上X是Monad的知识以及(ButtonMask,KeySym), X ()您想要的键绑定类型 是:

合并nextScreenshiftNextScreen得到类型的结果X ()

如果我们简单地列出以下内容:

[nextScreen,shiftNextScreen]我们有type [X ()],close,但还没有我们想要的。

我们知道X是monad,所以出现了对hoogle的快速搜索sequence_

这给了我们:

sequence_ [shiftNextScreen, nextScreen]

产生类型X (),因此对于键映射的右侧是有效的操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.