Você pode atribuir atalhos de teclas arbitrários no xmonad?

1

Eu sei como configurar atalhos de teclado onde você tem que segurar uma das chaves do tipo KeyMask. Quais são: Alts, Ctrls, Windowskeys. Além disso, dar 0 como o KeyMask pode ser usado para definir comandos de tecla única.

Mas não posso atribuir chaves arbitrárias como KeyMask. A maioria das chaves são do tipo KeySym e, com conversões explícitas, não funciona.

Como você pode atribuir combinações de chaves arbitrárias? Ou isso só é possível com muito hacking?

por exemplo, F1 + F2

    
por foo 05.05.2015 / 14:44

1 resposta

1

Você não pode fazer isso diretamente, já que as teclas modificadoras são diferentes das outras. Todos os eventos KeyPress ou KeyRelease contêm um campo indicando o estado das teclas modificadoras, então quando você recebe um evento " A pressionado", você sabe se é apenas A ou Ctrl + A . Mas, para outras chaves, você precisa saber se elas foram pressionadas antes da segunda chave.

O módulo XMonad.Actions.Submap fornece uma ação submap para adicionar às suas combinações de teclas que irão pegar o teclado e aguardar o próximo evento de pressionamento de tecla e, em seguida, retornar a ação correspondente do mapa. Então para F1 então F2 você pode adicionar à sua lista de ligações de teclas:

myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
    [

     ((0, xK_F1),  submap . M.fromList $
                         [ 
                          ((0, xK_F2),  someAction)
                         ])
    ]
    
por 06.05.2015 / 14:04