git://git.nikiroo.be
/
fanfix.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
0405085
)
Read keyboard modifiers with mouse events
author
Kevin Lamonte
<kevin.lamonte@gmail.com>
Thu, 31 Oct 2019 02:08:21 +0000
(21:08 -0500)
committer
Kevin Lamonte
<kevin.lamonte@gmail.com>
Thu, 31 Oct 2019 02:08:21 +0000
(21:08 -0500)
src/jexer/TApplication.java
patch
|
blob
|
blame
|
history
src/jexer/backend/ECMA48Terminal.java
patch
|
blob
|
blame
|
history
src/jexer/backend/SwingTerminal.java
patch
|
blob
|
blame
|
history
src/jexer/event/TMouseEvent.java
patch
|
blob
|
blame
|
history
diff --git
a/src/jexer/TApplication.java
b/src/jexer/TApplication.java
index 22a2479df9ed7294118c9beb52c50dd26841812f..4fb3bd6b2357929a712da57e70fd7f4a643f3559 100644
(file)
--- a/
src/jexer/TApplication.java
+++ b/
src/jexer/TApplication.java
@@
-1177,7
+1177,8
@@
public class TApplication implements Runnable {
mouse.getAbsoluteX(), mouse.getAbsoluteY(),
mouse.isMouse1(), mouse.isMouse2(),
mouse.isMouse3(),
mouse.getAbsoluteX(), mouse.getAbsoluteY(),
mouse.isMouse1(), mouse.isMouse2(),
mouse.isMouse3(),
- mouse.isMouseWheelUp(), mouse.isMouseWheelDown());
+ mouse.isMouseWheelUp(), mouse.isMouseWheelDown(),
+ mouse.isAlt(), mouse.isCtrl(), mouse.isShift());
} else {
// The first click of a potential double-click.
} else {
// The first click of a potential double-click.
@@
-1366,7
+1367,8
@@
public class TApplication implements Runnable {
mouse.getAbsoluteX(), mouse.getAbsoluteY(),
mouse.isMouse1(), mouse.isMouse2(),
mouse.isMouse3(),
mouse.getAbsoluteX(), mouse.getAbsoluteY(),
mouse.isMouse1(), mouse.isMouse2(),
mouse.isMouse3(),
- mouse.isMouseWheelUp(), mouse.isMouseWheelDown());
+ mouse.isMouseWheelUp(), mouse.isMouseWheelDown(),
+ mouse.isAlt(), mouse.isCtrl(), mouse.isShift());
} else {
// The first click of a potential double-click.
} else {
// The first click of a potential double-click.
diff --git
a/src/jexer/backend/ECMA48Terminal.java
b/src/jexer/backend/ECMA48Terminal.java
index 2ce6378a62d5f4bdb7af0bc7d27c82dd1889881d..5b5db6bbf4160930795de814cf82b6a56e1066f6 100644
(file)
--- a/
src/jexer/backend/ECMA48Terminal.java
+++ b/
src/jexer/backend/ECMA48Terminal.java
@@
-2238,10
+2238,13
@@
public class ECMA48Terminal extends LogicalScreen
boolean eventMouse3 = false;
boolean eventMouseWheelUp = false;
boolean eventMouseWheelDown = false;
boolean eventMouse3 = false;
boolean eventMouseWheelUp = false;
boolean eventMouseWheelDown = false;
+ boolean eventAlt = false;
+ boolean eventCtrl = false;
+ boolean eventShift = false;
// System.err.printf("buttons: %04x\r\n", buttons);
// System.err.printf("buttons: %04x\r\n", buttons);
- switch (buttons) {
+ switch (buttons
& 0xE3
) {
case 0:
eventMouse1 = true;
mouse1 = true;
case 0:
eventMouse1 = true;
mouse1 = true;
@@
-2323,9
+2326,21
@@
public class ECMA48Terminal extends LogicalScreen
eventType = TMouseEvent.Type.MOUSE_MOTION;
break;
}
eventType = TMouseEvent.Type.MOUSE_MOTION;
break;
}
+
+ if ((buttons & 0x04) != 0) {
+ eventShift = true;
+ }
+ if ((buttons & 0x08) != 0) {
+ eventAlt = true;
+ }
+ if ((buttons & 0x10) != 0) {
+ eventCtrl = true;
+ }
+
return new TMouseEvent(eventType, x, y, x, y,
eventMouse1, eventMouse2, eventMouse3,
return new TMouseEvent(eventType, x, y, x, y,
eventMouse1, eventMouse2, eventMouse3,
- eventMouseWheelUp, eventMouseWheelDown);
+ eventMouseWheelUp, eventMouseWheelDown,
+ eventAlt, eventCtrl, eventShift);
}
/**
}
/**
@@
-2360,12
+2375,15
@@
public class ECMA48Terminal extends LogicalScreen
boolean eventMouse3 = false;
boolean eventMouseWheelUp = false;
boolean eventMouseWheelDown = false;
boolean eventMouse3 = false;
boolean eventMouseWheelUp = false;
boolean eventMouseWheelDown = false;
+ boolean eventAlt = false;
+ boolean eventCtrl = false;
+ boolean eventShift = false;
if (release) {
eventType = TMouseEvent.Type.MOUSE_UP;
}
if (release) {
eventType = TMouseEvent.Type.MOUSE_UP;
}
- switch (buttons) {
+ switch (buttons
& 0xE3
) {
case 0:
eventMouse1 = true;
break;
case 0:
eventMouse1 = true;
break;
@@
-2422,9
+2440,21
@@
public class ECMA48Terminal extends LogicalScreen
// Unknown, bail out
return null;
}
// Unknown, bail out
return null;
}
+
+ if ((buttons & 0x04) != 0) {
+ eventShift = true;
+ }
+ if ((buttons & 0x08) != 0) {
+ eventAlt = true;
+ }
+ if ((buttons & 0x10) != 0) {
+ eventCtrl = true;
+ }
+
return new TMouseEvent(eventType, x, y, x, y,
eventMouse1, eventMouse2, eventMouse3,
return new TMouseEvent(eventType, x, y, x, y,
eventMouse1, eventMouse2, eventMouse3,
- eventMouseWheelUp, eventMouseWheelDown);
+ eventMouseWheelUp, eventMouseWheelDown,
+ eventAlt, eventCtrl, eventShift);
}
/**
}
/**
diff --git
a/src/jexer/backend/SwingTerminal.java
b/src/jexer/backend/SwingTerminal.java
index f0ba3552fd52b812a91a06be0f97c9adb96604e7..c2b335f43380e2b1e22ae4ee7b0d5556baad2ab0 100644
(file)
--- a/
src/jexer/backend/SwingTerminal.java
+++ b/
src/jexer/backend/SwingTerminal.java
@@
-2101,6
+2101,10
@@
public class SwingTerminal extends LogicalScreen
boolean eventMouse1 = false;
boolean eventMouse2 = false;
boolean eventMouse3 = false;
boolean eventMouse1 = false;
boolean eventMouse2 = false;
boolean eventMouse3 = false;
+ boolean eventAlt = false;
+ boolean eventCtrl = false;
+ boolean eventShift = false;
+
if ((modifiers & MouseEvent.BUTTON1_DOWN_MASK) != 0) {
eventMouse1 = true;
}
if ((modifiers & MouseEvent.BUTTON1_DOWN_MASK) != 0) {
eventMouse1 = true;
}
@@
-2110,6
+2114,16
@@
public class SwingTerminal extends LogicalScreen
if ((modifiers & MouseEvent.BUTTON3_DOWN_MASK) != 0) {
eventMouse3 = true;
}
if ((modifiers & MouseEvent.BUTTON3_DOWN_MASK) != 0) {
eventMouse3 = true;
}
+ if ((modifiers & MouseEvent.ALT_DOWN_MASK) != 0) {
+ eventAlt = true;
+ }
+ if ((modifiers & MouseEvent.CTRL_DOWN_MASK) != 0) {
+ eventCtrl = true;
+ }
+ if ((modifiers & MouseEvent.SHIFT_DOWN_MASK) != 0) {
+ eventShift = true;
+ }
+
mouse1 = eventMouse1;
mouse2 = eventMouse2;
mouse3 = eventMouse3;
mouse1 = eventMouse1;
mouse2 = eventMouse2;
mouse3 = eventMouse3;
@@
-2117,7
+2131,8
@@
public class SwingTerminal extends LogicalScreen
int y = textRow(mouse.getY());
TMouseEvent mouseEvent = new TMouseEvent(TMouseEvent.Type.MOUSE_MOTION,
int y = textRow(mouse.getY());
TMouseEvent mouseEvent = new TMouseEvent(TMouseEvent.Type.MOUSE_MOTION,
- x, y, x, y, mouse1, mouse2, mouse3, false, false);
+ x, y, x, y, mouse1, mouse2, mouse3, false, false,
+ eventAlt, eventCtrl, eventShift);
synchronized (eventQueue) {
eventQueue.add(mouseEvent);
synchronized (eventQueue) {
eventQueue.add(mouseEvent);
@@
-2145,8
+2160,24
@@
public class SwingTerminal extends LogicalScreen
oldMouseX = x;
oldMouseY = y;
oldMouseX = x;
oldMouseY = y;
+ boolean eventAlt = false;
+ boolean eventCtrl = false;
+ boolean eventShift = false;
+
+ int modifiers = mouse.getModifiersEx();
+ if ((modifiers & MouseEvent.ALT_DOWN_MASK) != 0) {
+ eventAlt = true;
+ }
+ if ((modifiers & MouseEvent.CTRL_DOWN_MASK) != 0) {
+ eventCtrl = true;
+ }
+ if ((modifiers & MouseEvent.SHIFT_DOWN_MASK) != 0) {
+ eventShift = true;
+ }
+
TMouseEvent mouseEvent = new TMouseEvent(TMouseEvent.Type.MOUSE_MOTION,
TMouseEvent mouseEvent = new TMouseEvent(TMouseEvent.Type.MOUSE_MOTION,
- x, y, x, y, mouse1, mouse2, mouse3, false, false);
+ x, y, x, y, mouse1, mouse2, mouse3, false, false,
+ eventAlt, eventCtrl, eventShift);
synchronized (eventQueue) {
eventQueue.add(mouseEvent);
synchronized (eventQueue) {
eventQueue.add(mouseEvent);
@@
-2200,6
+2231,10
@@
public class SwingTerminal extends LogicalScreen
boolean eventMouse1 = false;
boolean eventMouse2 = false;
boolean eventMouse3 = false;
boolean eventMouse1 = false;
boolean eventMouse2 = false;
boolean eventMouse3 = false;
+ boolean eventAlt = false;
+ boolean eventCtrl = false;
+ boolean eventShift = false;
+
if ((modifiers & MouseEvent.BUTTON1_DOWN_MASK) != 0) {
eventMouse1 = true;
}
if ((modifiers & MouseEvent.BUTTON1_DOWN_MASK) != 0) {
eventMouse1 = true;
}
@@
-2209,6
+2244,16
@@
public class SwingTerminal extends LogicalScreen
if ((modifiers & MouseEvent.BUTTON3_DOWN_MASK) != 0) {
eventMouse3 = true;
}
if ((modifiers & MouseEvent.BUTTON3_DOWN_MASK) != 0) {
eventMouse3 = true;
}
+ if ((modifiers & MouseEvent.ALT_DOWN_MASK) != 0) {
+ eventAlt = true;
+ }
+ if ((modifiers & MouseEvent.CTRL_DOWN_MASK) != 0) {
+ eventCtrl = true;
+ }
+ if ((modifiers & MouseEvent.SHIFT_DOWN_MASK) != 0) {
+ eventShift = true;
+ }
+
mouse1 = eventMouse1;
mouse2 = eventMouse2;
mouse3 = eventMouse3;
mouse1 = eventMouse1;
mouse2 = eventMouse2;
mouse3 = eventMouse3;
@@
-2216,7
+2261,8
@@
public class SwingTerminal extends LogicalScreen
int y = textRow(mouse.getY());
TMouseEvent mouseEvent = new TMouseEvent(TMouseEvent.Type.MOUSE_DOWN,
int y = textRow(mouse.getY());
TMouseEvent mouseEvent = new TMouseEvent(TMouseEvent.Type.MOUSE_DOWN,
- x, y, x, y, mouse1, mouse2, mouse3, false, false);
+ x, y, x, y, mouse1, mouse2, mouse3, false, false,
+ eventAlt, eventCtrl, eventShift);
synchronized (eventQueue) {
eventQueue.add(mouseEvent);
synchronized (eventQueue) {
eventQueue.add(mouseEvent);
@@
-2239,6
+2285,10
@@
public class SwingTerminal extends LogicalScreen
boolean eventMouse1 = false;
boolean eventMouse2 = false;
boolean eventMouse3 = false;
boolean eventMouse1 = false;
boolean eventMouse2 = false;
boolean eventMouse3 = false;
+ boolean eventAlt = false;
+ boolean eventCtrl = false;
+ boolean eventShift = false;
+
if ((modifiers & MouseEvent.BUTTON1_DOWN_MASK) != 0) {
eventMouse1 = true;
}
if ((modifiers & MouseEvent.BUTTON1_DOWN_MASK) != 0) {
eventMouse1 = true;
}
@@
-2248,6
+2298,16
@@
public class SwingTerminal extends LogicalScreen
if ((modifiers & MouseEvent.BUTTON3_DOWN_MASK) != 0) {
eventMouse3 = true;
}
if ((modifiers & MouseEvent.BUTTON3_DOWN_MASK) != 0) {
eventMouse3 = true;
}
+ if ((modifiers & MouseEvent.ALT_DOWN_MASK) != 0) {
+ eventAlt = true;
+ }
+ if ((modifiers & MouseEvent.CTRL_DOWN_MASK) != 0) {
+ eventCtrl = true;
+ }
+ if ((modifiers & MouseEvent.SHIFT_DOWN_MASK) != 0) {
+ eventShift = true;
+ }
+
if (mouse1) {
mouse1 = false;
eventMouse1 = true;
if (mouse1) {
mouse1 = false;
eventMouse1 = true;
@@
-2264,7
+2324,8
@@
public class SwingTerminal extends LogicalScreen
int y = textRow(mouse.getY());
TMouseEvent mouseEvent = new TMouseEvent(TMouseEvent.Type.MOUSE_UP,
int y = textRow(mouse.getY());
TMouseEvent mouseEvent = new TMouseEvent(TMouseEvent.Type.MOUSE_UP,
- x, y, x, y, eventMouse1, eventMouse2, eventMouse3, false, false);
+ x, y, x, y, eventMouse1, eventMouse2, eventMouse3, false, false,
+ eventAlt, eventCtrl, eventShift);
synchronized (eventQueue) {
eventQueue.add(mouseEvent);
synchronized (eventQueue) {
eventQueue.add(mouseEvent);
@@
-2293,6
+2354,10
@@
public class SwingTerminal extends LogicalScreen
boolean eventMouse3 = false;
boolean mouseWheelUp = false;
boolean mouseWheelDown = false;
boolean eventMouse3 = false;
boolean mouseWheelUp = false;
boolean mouseWheelDown = false;
+ boolean eventAlt = false;
+ boolean eventCtrl = false;
+ boolean eventShift = false;
+
if ((modifiers & MouseEvent.BUTTON1_DOWN_MASK) != 0) {
eventMouse1 = true;
}
if ((modifiers & MouseEvent.BUTTON1_DOWN_MASK) != 0) {
eventMouse1 = true;
}
@@
-2302,6
+2367,16
@@
public class SwingTerminal extends LogicalScreen
if ((modifiers & MouseEvent.BUTTON3_DOWN_MASK) != 0) {
eventMouse3 = true;
}
if ((modifiers & MouseEvent.BUTTON3_DOWN_MASK) != 0) {
eventMouse3 = true;
}
+ if ((modifiers & MouseEvent.ALT_DOWN_MASK) != 0) {
+ eventAlt = true;
+ }
+ if ((modifiers & MouseEvent.CTRL_DOWN_MASK) != 0) {
+ eventCtrl = true;
+ }
+ if ((modifiers & MouseEvent.SHIFT_DOWN_MASK) != 0) {
+ eventShift = true;
+ }
+
mouse1 = eventMouse1;
mouse2 = eventMouse2;
mouse3 = eventMouse3;
mouse1 = eventMouse1;
mouse2 = eventMouse2;
mouse3 = eventMouse3;
@@
-2315,7
+2390,8
@@
public class SwingTerminal extends LogicalScreen
}
TMouseEvent mouseEvent = new TMouseEvent(TMouseEvent.Type.MOUSE_DOWN,
}
TMouseEvent mouseEvent = new TMouseEvent(TMouseEvent.Type.MOUSE_DOWN,
- x, y, x, y, mouse1, mouse2, mouse3, mouseWheelUp, mouseWheelDown);
+ x, y, x, y, mouse1, mouse2, mouse3, mouseWheelUp, mouseWheelDown,
+ eventAlt, eventCtrl, eventShift);
synchronized (eventQueue) {
eventQueue.add(mouseEvent);
synchronized (eventQueue) {
eventQueue.add(mouseEvent);
diff --git
a/src/jexer/event/TMouseEvent.java
b/src/jexer/event/TMouseEvent.java
index 496d8bc06422baa3014a95a98ae953f60cd4325e..e52989814005bec2d2d303372519276ed4e4410f 100644
(file)
--- a/
src/jexer/event/TMouseEvent.java
+++ b/
src/jexer/event/TMouseEvent.java
@@
-118,6
+118,21
@@
public class TMouseEvent extends TInputEvent {
*/
private boolean mouseWheelDown;
*/
private boolean mouseWheelDown;
+ /**
+ * Keyboard modifier ALT.
+ */
+ private boolean alt;
+
+ /**
+ * Keyboard modifier CTRL.
+ */
+ private boolean ctrl;
+
+ /**
+ * Keyboard modifier SHIFT.
+ */
+ private boolean shift;
+
// ------------------------------------------------------------------------
// Constructors -----------------------------------------------------------
// ------------------------------------------------------------------------
// ------------------------------------------------------------------------
// Constructors -----------------------------------------------------------
// ------------------------------------------------------------------------
@@
-135,11
+150,15
@@
public class TMouseEvent extends TInputEvent {
* @param mouse3 if true, middle button is down
* @param mouseWheelUp if true, mouse wheel (button 4) is down
* @param mouseWheelDown if true, mouse wheel (button 5) is down
* @param mouse3 if true, middle button is down
* @param mouseWheelUp if true, mouse wheel (button 4) is down
* @param mouseWheelDown if true, mouse wheel (button 5) is down
+ * @param alt if true, ALT was pressed with this mouse event
+ * @param ctrl if true, CTRL was pressed with this mouse event
+ * @param shift if true, SHIFT was pressed with this mouse event
*/
public TMouseEvent(final Type type, final int x, final int y,
final int absoluteX, final int absoluteY,
final boolean mouse1, final boolean mouse2, final boolean mouse3,
*/
public TMouseEvent(final Type type, final int x, final int y,
final int absoluteX, final int absoluteY,
final boolean mouse1, final boolean mouse2, final boolean mouse3,
- final boolean mouseWheelUp, final boolean mouseWheelDown) {
+ final boolean mouseWheelUp, final boolean mouseWheelDown,
+ final boolean alt, final boolean ctrl, final boolean shift) {
this.type = type;
this.x = x;
this.type = type;
this.x = x;
@@
-151,6
+170,9
@@
public class TMouseEvent extends TInputEvent {
this.mouse3 = mouse3;
this.mouseWheelUp = mouseWheelUp;
this.mouseWheelDown = mouseWheelDown;
this.mouse3 = mouse3;
this.mouseWheelUp = mouseWheelUp;
this.mouseWheelDown = mouseWheelDown;
+ this.alt = alt;
+ this.ctrl = ctrl;
+ this.shift = shift;
}
// ------------------------------------------------------------------------
}
// ------------------------------------------------------------------------
@@
-289,6
+311,33
@@
public class TMouseEvent extends TInputEvent {
return mouseWheelDown;
}
return mouseWheelDown;
}
+ /**
+ * Getter for ALT.
+ *
+ * @return alt value
+ */
+ public boolean isAlt() {
+ return alt;
+ }
+
+ /**
+ * Getter for CTRL.
+ *
+ * @return ctrl value
+ */
+ public boolean isCtrl() {
+ return ctrl;
+ }
+
+ /**
+ * Getter for SHIFT.
+ *
+ * @return shift value
+ */
+ public boolean isShift() {
+ return shift;
+ }
+
/**
* Create a duplicate instance.
*
/**
* Create a duplicate instance.
*
@@
-296,7
+345,9
@@
public class TMouseEvent extends TInputEvent {
*/
public TMouseEvent dup() {
TMouseEvent mouse = new TMouseEvent(type, x, y, absoluteX, absoluteY,
*/
public TMouseEvent dup() {
TMouseEvent mouse = new TMouseEvent(type, x, y, absoluteX, absoluteY,
- mouse1, mouse2, mouse3, mouseWheelUp, mouseWheelDown);
+ mouse1, mouse2, mouse3, mouseWheelUp, mouseWheelDown,
+ alt, ctrl, shift);
+
return mouse;
}
return mouse;
}
@@
-307,7
+358,7
@@
public class TMouseEvent extends TInputEvent {
*/
@Override
public String toString() {
*/
@Override
public String toString() {
- return String.format("Mouse: %s x %d y %d absoluteX %d absoluteY %d 1 %s 2 %s 3 %s DOWN %s UP %s",
+ return String.format("Mouse: %s x %d y %d absoluteX %d absoluteY %d 1 %s 2 %s 3 %s DOWN %s UP %s
ALT %s CTRL %s SHIFT %s
",
type,
x, y,
absoluteX, absoluteY,
type,
x, y,
absoluteX, absoluteY,
@@
-315,7
+366,8
@@
public class TMouseEvent extends TInputEvent {
mouse2,
mouse3,
mouseWheelUp,
mouse2,
mouse3,
mouseWheelUp,
- mouseWheelDown);
+ mouseWheelDown,
+ alt, ctrl, shift);
}
}
}
}