キーバインディングを設定する方法を知っているので、KeyMaskタイプキーのいずれかを押し続ける必要があります。 Alt、Ctrl、Windows キーです。また、0 を KeyMask として使用すると、単一のキーコマンドを定義するために使用できます。
ただし、任意のキーをKeyMaskとして割り当てることはできません。ほとんどのキーはKeySym型であり、明示的な変換は効果がありません。
キーの組み合わせを割り当てる方法は?それともハッカーが多すぎる場合にのみ可能ですか?
たとえば、F1+F2
答え1
修飾キーは他のキーとは異なるため、これを直接行うことはできません。すべてのKeyPressイベントまたはKeyReleaseイベントには、修飾キーのステータスを示すフィールドが含まれているため、AKeyPressイベントを受信すると、それがjustAかCtrl+かを知ることができますA。ただし、他のキーの場合は、2番目のキーより前に押されたかどうかを直接追跡する必要があります。
このモジュールXMonad.Actions.Submapsubmap
キーボードを持ち、次のキーイベントを待ってから、マップから一致するアクションを返すキーバインディングに追加されたアクションを提供します。したがって、キーバインディングリストに以下を追加できますF1。F2
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
[
((0, xK_F1), submap . M.fromList $
[
((0, xK_F2), someAction)
])
]