xmonadで任意のキーバインディングを割り当てることはできますか?

xmonadで任意のキーバインディングを割り当てることはできますか?

キーバインディングを設定する方法を知っているので、KeyMaskタイプキーのいずれかを押し続ける必要があります。 Alt、Ctrl、Windows キーです。また、0 を KeyMask として使用すると、単一のキーコマンドを定義するために使用できます。

ただし、任意のキーをKeyMaskとして割り当てることはできません。ほとんどのキーはKeySym型であり、明示的な変換は効果がありません。

キーの組み合わせを割り当てる方法は?それともハッカーが多すぎる場合にのみ可能ですか?

たとえば、F1+F2

答え1

修飾キーは他のキーとは異なるため、これを直接行うことはできません。すべてのKeyPressイベントまたはKeyReleaseイベントには、修飾キーのステータスを示すフィールドが含まれているため、AKeyPressイベントを受信すると、それがjustACtrl+かを知ることができますA。ただし、他のキーの場合は、2番目のキーより前に押されたかどうかを直接追跡する必要があります。

このモジュールXMonad.Actions.Submapsubmapキーボードを持ち、次のキーイベントを待ってから、マップから一致するアクションを返すキーバインディングに追加されたアクションを提供します。したがって、キーバインディングリストに以下を追加できますF1F2

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

     ((0, xK_F1),  submap . M.fromList $
                         [ 
                          ((0, xK_F2),  someAction)
                         ])
    ]

関連情報