aboutsummaryrefslogtreecommitdiffstats
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 };
*/
static uint ignoremod = Mod2Mask|XK_SWITCH_MOD;
+/* Override mouse-select while mask is active (when MODE_MOUSE is set).
+ * Note that if you want to use ShiftMask with selmasks, set this to an other
+ * modifier, set to 0 to not use it. */
+static uint forceselmod = ShiftMask;
+
static Key key[] = {
/* keysym mask string appkey appcursor crlf */
{ XK_KP_Home, ShiftMask, "\033[2J", 0, -1, 0},
@@ -357,7 +362,6 @@ static Key key[] = {
* ButtonRelease and MotionNotify.
* If no match is found, regular selection is used.
*/
-
static uint selmasks[] = {
[SEL_RECTANGULAR] = Mod1Mask,
};
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) {
void
getbuttoninfo(XEvent *e) {
int type;
- uint state = e->xbutton.state &~Button1Mask;
+ uint state = e->xbutton.state & ~(Button1Mask | forceselmod);
sel.alt = IS_SET(MODE_ALTSCREEN);
@@ -858,7 +858,7 @@ bpress(XEvent *e) {
struct timeval now;
Mousekey *mk;
- if(IS_SET(MODE_MOUSE)) {
+ if(IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) {
mousereport(e);
return;
}
@@ -1090,7 +1090,7 @@ xsetsel(char *str) {
void
brelease(XEvent *e) {
- if(IS_SET(MODE_MOUSE)) {
+ if(IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) {
mousereport(e);
return;
}
@@ -1113,7 +1113,7 @@ void
bmotion(XEvent *e) {
int oldey, oldex, oldsby, oldsey;
- if(IS_SET(MODE_MOUSE)) {
+ if(IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) {
mousereport(e);
return;
}
remember that computers suck.