From 5d55d41f3495c3d821b24a50372aa6ebd1bcac7f Mon Sep 17 00:00:00 2001 From: chrome-storm-c442 Date: Tue, 24 Feb 2026 05:30:13 -0500 Subject: [PATCH] v1.8.13: fix entry_undo Cyrillic bind crash tkinter rejects Cyrillic chars in bind(). Use keycode-based dispatch instead (same approach as terminal_widget). Co-Authored-By: Claude Opus 4.6 --- gui/widgets/entry_undo.py | 12 +++++++++--- version.py | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/gui/widgets/entry_undo.py b/gui/widgets/entry_undo.py index 73d43a6..3b40f2f 100644 --- a/gui/widgets/entry_undo.py +++ b/gui/widgets/entry_undo.py @@ -46,9 +46,15 @@ def enable_undo(ctk_entry): _recording[0] = True return "break" + def _on_ctrl_key(event): + """Route Ctrl+key by physical keycode (layout-independent).""" + if event.keycode == 90: # Z + return _undo(event) + if event.keycode == 89: # Y + return _redo(event) + return None + entry.bind("", _snapshot, add="+") entry.bind("", _undo) entry.bind("", _redo) - # Support Russian keyboard layout (Cyrillic keycodes) - entry.bind("", _undo) # Ctrl+Я (z position on Russian layout) - entry.bind("", _redo) # Ctrl+Н (y position on Russian layout) + entry.bind("", _on_ctrl_key) diff --git a/version.py b/version.py index d30a73b..d30403b 100644 --- a/version.py +++ b/version.py @@ -1,6 +1,6 @@ """Version info for ServerManager.""" -__version__ = "1.8.12" +__version__ = "1.8.13" __app_name__ = "ServerManager" __author__ = "aibot777" __description__ = "Desktop GUI for managing remote servers"