xmonad에서 임의의 키 바인딩을 할당할 수 있습니까?

xmonad에서 임의의 키 바인딩을 할당할 수 있습니까?

키 바인딩을 설정하는 방법을 알고 있으므로 KeyMask 유형 키 중 하나를 누르고 있어야 합니다. Alt, Ctrl, Windows 키입니다. 또한 0을 KeyMask로 사용하면 단일 키 명령을 정의하는 데 사용할 수 있습니다.

하지만 임의의 키를 KeyMask로 할당할 수는 없습니다. 대부분의 키는 KeySym 유형이며 명시적인 변환은 효과가 없습니다.

키 조합을 할당하는 방법은 무엇입니까? 아니면 해커가 너무 많은 경우에만 가능합니까?

예를 들어 F1+F2

답변1

수정자 키는 다른 키와 다르기 때문에 이 작업을 직접 수행할 수 없습니다. 모든 KeyPress 또는 KeyRelease 이벤트에는 수정자 키의 상태를 나타내는 필드가 포함되어 있으므로 AKeyPress 이벤트를 수신하면 그것이 just A인지 Ctrl+ 인지 알 수 있습니다 A. 하지만 다른 키의 경우 두 번째 키 이전에 눌렸는지 여부를 직접 추적해야 합니다.

이 모듈XMonad.Actions.Submapsubmap키보드를 잡고 다음 키 이벤트를 기다린 후 지도에서 일치하는 작업을 반환하는 키 바인딩에 추가된 작업을 제공합니다 . 따라서 키 바인딩 목록에 다음을 추가할 수 있습니다 F1.F2

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

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

관련 정보