Parece que ninguém poderia responder sua pergunta até agora. Deixe-me fazer uma tentativa:
TL; DR
((modMask, xK_s),
sequence_ [shiftNextScreen, nextScreen])
deve funcionar.
Por quê?
Se você olhar para o link ,
você vê os seguintes tipos para suas funções:
nextScreen :: X ()
shiftNextScreen :: X ()
junto com o conhecimento de que X é uma Mônada e o tipo de atalho de teclas é
(ButtonMask,KeySym), X ()
o que você quer é:
combine nextScreen
e shiftNextScreen
para obter o resultado do tipo X ()
se simplesmente fizermos uma lista da seguinte forma:
[nextScreen,shiftNextScreen]
temos o tipo [X ()]
, feche, mas ainda não o que queremos.
Como sabemos que X é uma mônada, uma pesquisa rápida em hoogle mostra sequence_
que nos dá:
sequence_ [shiftNextScreen, nextScreen]
que produz o tipo X ()
e é, portanto, uma ação válida para o lado direito do mapeamento de chaves.