나는 다음을 가지고 있습니다 :
XGrabButton(display, XKeysymToKeycode(display, XK_C), Mod1Mask | KeyPressMask, window, false, GrabModeAsync, GrabModeAsync);
목표는 Alt+Shift+C를 캡처하여 해당 조합을 사용하여 창을 닫는 것입니다. 다른 수정자가 활성화되어 있지 않으면 작동합니다. 예를 들어 CapsLock, NumLock, Ctrl 등이 있습니다.
다른 모든 수정자를 무시하도록 어떻게 알 수 있습니까?
답변1
내가 찾은 가장 좋은 접근 방식은 수정자를 완전히 지정하지 않는 것입니다. 대신, AnyModifier
필요한 수정자가 event.state
XButtonEvent에서 활성화되어 있는지 확인합니다.
XGrabKey(DISPLAY, XKeysymToKeycode(DISPLAY, XK_C), AnyModifier, frame, false, GrabModeAsync, GrabModeSync);
void WindowManager::OnKeyPress(const XKeyEvent& event)
{
if(!(event.state & Mod1Mask))
{
return;
}
//Handle buttons...
}