diff --git a/TermTk/TTkAbstract/abstractscrollview.py b/TermTk/TTkAbstract/abstractscrollview.py index 5dbbfdd9..087ab251 100644 --- a/TermTk/TTkAbstract/abstractscrollview.py +++ b/TermTk/TTkAbstract/abstractscrollview.py @@ -207,8 +207,13 @@ class TTkAbstractScrollView(TTkContainer, TTkAbstractScrollViewInterface): delta = TTkCfg.scrollDelta offx, offy = self.getViewOffsets() if evt.evt == TTkK.WHEEL_Up: - delta = -delta - self.viewMoveTo(offx, offy + delta) + self.viewMoveTo(offx, offy - delta) + elif evt.evt == TTkK.WHEEL_Down: + self.viewMoveTo(offx, offy + delta) + elif evt.evt == TTkK.WHEEL_Left: + self.viewMoveTo(offx - delta, offy) + elif evt.evt == TTkK.WHEEL_Right: + self.viewMoveTo(offx + delta, offy) return True def resizeEvent(self, w, h): diff --git a/TermTk/TTkCore/TTkTerm/input_thread.py b/TermTk/TTkCore/TTkTerm/input_thread.py index 216be61a..b40d5a19 100644 --- a/TermTk/TTkCore/TTkTerm/input_thread.py +++ b/TermTk/TTkCore/TTkTerm/input_thread.py @@ -198,6 +198,12 @@ class TTkInput: elif code == 0x41: key = TTkMouseEvent.Wheel evt = TTkMouseEvent.Down + elif code == 0x42: + key = TTkMouseEvent.Wheel + evt = TTkMouseEvent.Left + elif code == 0x43: + key = TTkMouseEvent.Wheel + evt = TTkMouseEvent.Right elif code == 0x23: evt = TTkMouseEvent.Move elif code == 0x27: diff --git a/TermTk/TTkCore/TTkTerm/inputmouse.py b/TermTk/TTkCore/TTkTerm/inputmouse.py index 113cefa8..f753b7fc 100644 --- a/TermTk/TTkCore/TTkTerm/inputmouse.py +++ b/TermTk/TTkCore/TTkTerm/inputmouse.py @@ -82,6 +82,8 @@ class TTkMouseEvent: Move = TTkK.Move Up = TTkK.WHEEL_Up Down = TTkK.WHEEL_Down + Left = TTkK.WHEEL_Left + Right = TTkK.WHEEL_Right __slots__ = ('x', 'y', 'key', 'evt', 'mod', 'tap', 'raw') def __init__(self, x: int, y: int, key: int, evt: int, mod: int, tap: int, raw: str): @@ -127,6 +129,8 @@ class TTkMouseEvent: TTkMouseEvent.Move : "Move", TTkMouseEvent.Up : "Up", TTkMouseEvent.Down : "Down", + TTkMouseEvent.Left : "Left", + TTkMouseEvent.Right : "Right", }.get(self.evt, "Undefined") def mod2str(self): diff --git a/TermTk/TTkCore/constant.py b/TermTk/TTkCore/constant.py index af8753d8..f87dd379 100644 --- a/TermTk/TTkCore/constant.py +++ b/TermTk/TTkCore/constant.py @@ -388,6 +388,8 @@ class TTkConstant: Move = 0x00080000 WHEEL_Up = 0x00100000 # Wheel Up WHEEL_Down = 0x00200000 # Wheel Down + WHEEL_Left = 0x00400000 # Wheel Down + WHEEL_Right= 0x00800000 # Wheel Down NoEvent = MouseEvent.NoEvent Press = MouseEvent.Press @@ -396,6 +398,8 @@ class TTkConstant: Move = MouseEvent.Move WHEEL_Up = MouseEvent.WHEEL_Up WHEEL_Down = MouseEvent.WHEEL_Down + WHEEL_Left = MouseEvent.WHEEL_Left + WHEEL_Right= MouseEvent.WHEEL_Right # Cursors Cursor_Blinking_Block = 0x0001 diff --git a/TermTk/TTkWidgets/TTkTerminal/terminalhelper.py b/TermTk/TTkWidgets/TTkTerminal/terminalhelper.py index 9a1a7780..d5f104a3 100644 --- a/TermTk/TTkWidgets/TTkTerminal/terminalhelper.py +++ b/TermTk/TTkWidgets/TTkTerminal/terminalhelper.py @@ -136,8 +136,8 @@ class TTkTerminalHelper(): sys.exit() else: self._inout = os.fdopen(self._fd, "w+b", 0) - name = os.ttyname(self._fd) - TTkLog.debug(f"{self._pid=} {self._fd=} {name}") + # name = os.ttyname(self._fd) + TTkLog.debug(f"{self._pid=} {self._fd=}") self._quit_pipe = os.pipe() diff --git a/TermTk/TTkWidgets/TTkTerminal/terminalview.py b/TermTk/TTkWidgets/TTkTerminal/terminalview.py index 7e219fa3..510d9745 100644 --- a/TermTk/TTkWidgets/TTkTerminal/terminalview.py +++ b/TermTk/TTkWidgets/TTkTerminal/terminalview.py @@ -957,7 +957,9 @@ class TTkTerminalView(TTkAbstractScrollView, _TTkTerminal_CSI_DEC): TTkK.Move: (35, 0,'M'), TTkK.Drag: (k, 32,'M'), TTkK.WHEEL_Up: (k, 0,'M'), - TTkK.WHEEL_Down:(k, 1,'M')}.get( + TTkK.WHEEL_Down:(k, 1,'M'), + TTkK.WHEEL_Left:(k, 2,'M'), + TTkK.WHEEL_Right:(k, 3,'M')}.get( evt.evt,(0,0,'M')) # _termLog.mouse(f'Mouse: [<{k+km};{x};{y}{pr}') self.termData.emit(f'\033[<{k+km};{x};{y}{pr}'.encode()) @@ -968,7 +970,9 @@ class TTkTerminalView(TTkAbstractScrollView, _TTkTerminal_CSI_DEC): TTkK.Move: b'\033[MC', TTkK.Drag: b'\033[M@', TTkK.WHEEL_Up: b'\033[M`', - TTkK.WHEEL_Down:b'\033[Ma'}.get( + TTkK.WHEEL_Down:b'\033[Ma', + TTkK.WHEEL_Left:b'\033[Mb', + TTkK.WHEEL_Right:b'\033[Mc'}.get( evt.evt, b'') bah = bytearray(head)