diff --git a/x.c b/x.c
index 8f570c2..6406925 100644
--- a/x.c
+++ b/x.c
@@ -426,7 +426,8 @@ mouseaction(XEvent *e, uint release)
 	for (ms = mshortcuts; ms < mshortcuts + LEN(mshortcuts); ms++) {
 		if (ms->release == release &&
 		    ms->button == e->xbutton.button &&
-		    match(ms->mod, e->xbutton.state & ~forcemousemod)) {
+		    (match(ms->mod, e->xbutton.state) ||  /* exact or forced */
+		     match(ms->mod, e->xbutton.state & ~forcemousemod))) {
 			ms->func(&(ms->arg));
 			return 1;
 		}