Você provavelmente pode usar o link (ou talvez algo melhor) para detectar o layout e vincular a chave para a função que irá decidir com base no layout de uma forma como esta:
( ( modMask, xK_k ), act )
-- ...
where
act = do
layout <- detectLayout -- not sure how to do this now
if layout == "Tall" then act1 else act2
(Parece que eu cheguei muito tarde, talvez alguém use isso eventualmente.)