X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2Fio%2FAWTTerminal.java;h=8b542402daf5b7321de855fbeffd8d31f09559c7;hb=091d8a06c7f9f91c2a15c9350b6502cf4c10f5a3;hp=783cffd4ec5f1fba6e6cd2397dd70a37d380a2a5;hpb=e7083f0b935964ca5a04835187397ff117941044;p=nikiroo-utils.git diff --git a/src/jexer/io/AWTTerminal.java b/src/jexer/io/AWTTerminal.java index 783cffd..8b54240 100644 --- a/src/jexer/io/AWTTerminal.java +++ b/src/jexer/io/AWTTerminal.java @@ -92,9 +92,14 @@ public final class AWTTerminal implements ComponentListener, KeyListener, private List eventQueue; /** - * The reader thread. + * The last reported mouse X position. */ - private Thread readerThread; + private int oldMouseX = -1; + + /** + * The last reported mouse Y position. + */ + private int oldMouseY = -1; /** * true if mouse1 was down. Used to report mouse1 on the release event. @@ -202,7 +207,6 @@ public final class AWTTerminal implements ComponentListener, KeyListener, boolean ctrl = false; char ch = ' '; boolean isKey = false; - int fnKey = 0; if (key.isActionKey()) { isKey = true; } else { @@ -369,14 +373,18 @@ public final class AWTTerminal implements ComponentListener, KeyListener, keypress = kbEnter; break; case 0x09: - keypress = kbTab; + if (shift) { + keypress = kbShiftTab; + } else { + keypress = kbTab; + } break; case 0x7F: keypress = kbDel; break; default: if (!alt && ctrl && !shift) { - ch = key.getKeyText(key.getKeyCode()).charAt(0); + ch = KeyEvent.getKeyText(key.getKeyCode()).charAt(0); } // Not a special key, put it together keypress = new TKeypress(false, 0, ch, alt, ctrl, shift); @@ -566,6 +574,13 @@ public final class AWTTerminal implements ComponentListener, KeyListener, public void mouseMoved(final MouseEvent mouse) { int x = screen.textColumn(mouse.getX()); int y = screen.textRow(mouse.getY()); + if ((x == oldMouseX) && (y == oldMouseY)) { + // Bail out, we've moved some pixels but not a whole text cell. + return; + } + oldMouseX = x; + oldMouseY = y; + TMouseEvent mouseEvent = new TMouseEvent(TMouseEvent.Type.MOUSE_MOTION, x, y, x, y, mouse1, mouse2, mouse3, false, false);