From 2248a71e07595ad73db8104f4465281913567f46 Mon Sep 17 00:00:00 2001 From: Robin Moser Date: Thu, 2 Jul 2026 15:02:15 +0200 Subject: [PATCH] Add vim-style keybindings for timeline navigation (h/j/k/l) --- timetagger/app/dialogs.py | 8 ++++---- timetagger/app/front.py | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/timetagger/app/dialogs.py b/timetagger/app/dialogs.py index 2528a37f..76f94ec0 100644 --- a/timetagger/app/dialogs.py +++ b/timetagger/app/dialogs.py @@ -3933,10 +3933,10 @@ def open(self, callback=None): "M": "Select this month", "Q": "Select this quarter", "Y": "Select this year", - "↑/PageUp": "Step back in time", - "↓/PageDown": "Step forward in time", - "→": "Zoom in", - "←": "Zoom out", + "↑/PageUp/K": "Step back in time", + "↓/PageDown/J": "Step forward in time", + "→/L": "Zoom in", + "←/H": "Zoom out", "_other": "Other", "S": "Start the timer or add an earlier record", "Shift+S": "Resume the current/previous record", diff --git a/timetagger/app/front.py b/timetagger/app/front.py index c7b2e61c..87c4c281 100644 --- a/timetagger/app/front.py +++ b/timetagger/app/front.py @@ -1514,13 +1514,13 @@ def _on_key(self, e): elif e.key.lower() == "backspace": self._handle_button_press("select_none") # - elif e.key.lower() == "arrowup" or e.key.lower() == "pageup": + elif e.key.lower() in ("arrowup", "pageup", "k"): self._handle_button_press("nav_backward") - elif e.key.lower() == "arrowdown" or e.key.lower() == "pagedown": + elif e.key.lower() in ("arrowdown", "pagedown", "j"): self._handle_button_press("nav_forward") - elif e.key.lower() == "arrowleft": + elif e.key.lower() in ("arrowleft", "h"): self._handle_button_press("nav_zoom_" + self._current_scale["out"]) - elif e.key.lower() == "arrowright": + elif e.key.lower() in ("arrowright", "l"): self._handle_button_press("nav_zoom_" + self._current_scale["in"]) elif e.key.lower() == "n" or e.key.lower() == "home" or e.key.lower() == "end": self._handle_button_press("nav_snap_now" + self._current_scale["now"])