我正在使用 Xmonad 的 EZConfig 模块。我想绑定ModMask s
以首先将当前焦点窗口移至我的其他屏幕,然后将焦点移至我的其他屏幕。
使用 CycleWS 模块可以通过运行“shiftNextScreen”然后运行“nextScreen”来实现
我可以将两个命令绑定到同一个键吗?
另外,我尝试过
((modMask, xK_s),
shiftNextScreen nextScreen)
但这样做不行,因为 nextScreen 变成了 shiftNextScreen 的参数,这毫无意义。我根本不了解 haskell。
答案1
似乎到现在为止还没有人能回答你的问题。让我试试:
总结
((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 ()
:
结合nextScreen
并shiftNextScreen
得到类型结果X ()
如果我们简单列出如下清单:
[nextScreen,shiftNextScreen]
我们有类型[X ()]
,接近但还不是我们想要的。
我们知道 X 是一个 monad,快速搜索一下霍格尔出现sequence_
得到的结果为:
sequence_ [shiftNextScreen, nextScreen]
它产生了类型X ()
,因此对于键映射的右侧来说是一个有效的操作。