aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.def.h6
-rw-r--r--st.c8
2 files changed, 9 insertions, 5 deletions
diff --git a/config.def.h b/config.def.h
index 646a88a..6e2be9a 100644
--- a/config.def.h
+++ b/config.def.h
@@ -154,6 +154,11 @@ static KeySym mappedkeys[] = { -1 };
154 */ 154 */
155static uint ignoremod = Mod2Mask|XK_SWITCH_MOD; 155static uint ignoremod = Mod2Mask|XK_SWITCH_MOD;
156 156
157/* Override mouse-select while mask is active (when MODE_MOUSE is set).
158 * Note that if you want to use ShiftMask with selmasks, set this to an other
159 * modifier, set to 0 to not use it. */
160static uint forceselmod = ShiftMask;
161
157static Key key[] = { 162static Key key[] = {
158 /* keysym mask string appkey appcursor crlf */ 163 /* keysym mask string appkey appcursor crlf */
159 { XK_KP_Home, ShiftMask, "\033[2J", 0, -1, 0}, 164 { XK_KP_Home, ShiftMask, "\033[2J", 0, -1, 0},
@@ -357,7 +362,6 @@ static Key key[] = {
357 * ButtonRelease and MotionNotify. 362 * ButtonRelease and MotionNotify.
358 * If no match is found, regular selection is used. 363 * If no match is found, regular selection is used.
359 */ 364 */
360
361static uint selmasks[] = { 365static uint selmasks[] = {
362 [SEL_RECTANGULAR] = Mod1Mask, 366 [SEL_RECTANGULAR] = Mod1Mask,
363}; 367};
diff --git a/st.c b/st.c
index 5946c7c..78d8a01 100644
--- a/st.c
+++ b/st.c
@@ -765,7 +765,7 @@ selsnap(int mode, int *x, int *y, int direction) {
765void 765void
766getbuttoninfo(XEvent *e) { 766getbuttoninfo(XEvent *e) {
767 int type; 767 int type;
768 uint state = e->xbutton.state &~Button1Mask; 768 uint state = e->xbutton.state & ~(Button1Mask | forceselmod);
769 769
770 sel.alt = IS_SET(MODE_ALTSCREEN); 770 sel.alt = IS_SET(MODE_ALTSCREEN);
771 771
@@ -858,7 +858,7 @@ bpress(XEvent *e) {
858 struct timeval now; 858 struct timeval now;
859 Mousekey *mk; 859 Mousekey *mk;
860 860
861 if(IS_SET(MODE_MOUSE)) { 861 if(IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) {
862 mousereport(e); 862 mousereport(e);
863 return; 863 return;
864 } 864 }
@@ -1090,7 +1090,7 @@ xsetsel(char *str) {
1090 1090
1091void 1091void
1092brelease(XEvent *e) { 1092brelease(XEvent *e) {
1093 if(IS_SET(MODE_MOUSE)) { 1093 if(IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) {
1094 mousereport(e); 1094 mousereport(e);
1095 return; 1095 return;
1096 } 1096 }
@@ -1113,7 +1113,7 @@ void
1113bmotion(XEvent *e) { 1113bmotion(XEvent *e) {
1114 int oldey, oldex, oldsby, oldsey; 1114 int oldey, oldex, oldsby, oldsey;
1115 1115
1116 if(IS_SET(MODE_MOUSE)) { 1116 if(IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) {
1117 mousereport(e); 1117 mousereport(e);
1118 return; 1118 return;
1119 } 1119 }