
私は以下を持っています:
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...
}