v1.8.23: fix Ctrl+V/C/X/A/Z for non-Latin keyboard layouts, add Entry undo/redo

- Global keycode-based handler for Ctrl shortcuts (works with Russian, Chinese, any layout)
- Tkinter maps <<Paste>> to <Control-v> by keysym which fails on non-Latin layouts
- New handler intercepts <Control-Key> at 'all' level, checks keycodes and generates correct virtual events
- Added Undo/Redo support for Entry widgets (tk.Entry has no built-in undo)
- Tab switch focus management: terminal releases focus when switching away

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
chrome-storm-c442
2026-02-24 06:13:27 -05:00
parent a8f3bd04e1
commit 5cf856069b
5 changed files with 141 additions and 14 deletions

View File

@@ -123,7 +123,9 @@ class TerminalTab(ctk.CTkFrame):
self._terminal.set_status(
t("term_connected").format(alias=alias), "#44cc44"
)
self._terminal.focus_terminal()
# Only grab focus if terminal tab is currently visible
if self._terminal.winfo_ismapped():
self._terminal.focus_terminal()
self.after(0, _set_session)
except Exception as e:
self.after(0, lambda: self._terminal.set_status(