Skip to content
palmoni5 edited this page Jul 17, 2026 · 1 revision

קיצורי מקלדת

מערכת הקיצורים יושבת ב־lib/shortcuts/ ומאפשרת התאמה אישית מלאה דרך מסך ההגדרות.

KeyboardShortcuts — ה־widget העוטף

keyboard_shortcuts.dart — עוטף את האפליקציה ורושם late key event handler גלובלי (FocusManager.instance.addLateKeyEventHandler), כך שהקיצורים פועלים גם כשדיאלוג מחזיק פוקוס. כללים ב־_handleKeyEvent:

  • בזמן עריכת טקסט (_isEditing) — קיצורי תו בודד ללא modifier נחסמים (רק F1–F12 ו־Escape מותרים).
  • כשיש overlay פתוח — קיצורי ניווט סוגרים אותו קודם; קיצורי טאבים פעילים רק במסכי עיון/חיפוש.
  • Ctrl+Tab / Ctrl+Shift+Tab — מעבר טאבים; Ctrl+1..9 — קפיצה לטאב לפי מספר (9 = אחרון). אלה נבדקים ישירות (ולא דרך matchesShortcut) כדי שלא יהפכו ל־Cmd ב־Mac.
  • ‏F11 — מסך מלא; ‏Escape — סגירה הקשרית.

ShortcutValidator — מקור האמת

shortcut_validator.dart מגדיר:

  • defaultShortcuts — ברירות המחדל, למשל: ctrl+l ספרייה, ctrl+o איתור מקורות, ctrl+f חיפוש בספר, ctrl+shift+f חיפוש חדש, ctrl+w סגירת טאב, ctrl+k שולחנות עבודה.
  • שמות עבריים לכל קיצור (_baseShortcutNames).
  • קיצורים אופציונליים ללא ברירת מחדל — פתיחת כלים (מנותבים דרך deep link‏ otzaria://open/tool/<id>), פתיחת תוספים (נרשמים דינמית), העתקת קישורים.
  • זיהוי קונפליקטיםcheckConflicts / hasConflict, עם קבוצות תאימות (_compatibleShortcutGroups) שמותר להן לחלוק קיצור.
  • ‏aliases למפתחות ישנים (canonicalSettingKey).

ShortcutHelper — התאמות פלטפורמה ופריסת מקלדת

  • macOS: הקיצורים נשמרים קנונית כ־ctrl+X, אבל ב־Mac ה־token‏ ctrl מתורגם ל־Command (⌘) — גם בבדיקת ההתאמה וגם בתצוגה (//).
  • פריסת מקלדת עברית: אותיות a–z נבדקות לפי physicalKey — הקיצור עובד גם כשהמקלדת במצב עברית.
  • activatorFromShortcut ממיר מחרוזת קיצור ל־SingleActivator.

תשתית נוספת

  • key_map.dart — ‏KeyMap: מיפוי דו־כיווני שמות מקשים ↔ LogicalKeyboardKey (מקור אמת יחיד).
  • view/custom_shortcut_dialog.dart — דיאלוג הקלטת קיצור מותאם אישית.
  • view/shortcut_dropdown_tile.dart — שורת הגדרת קיצור במסך ההגדרות.

ניווט בתוך ספר

קיצורי ניווט קטע/דף לא מדברים ישירות עם המסך — הם כותבים ל־ValueNotifierים שיושבים על הטאב (navPreviousSegmentNotifier וכו' ב־TextBookTab), והמסך מאזין להם. כך הקיצור עובד מכל מקום בלי צימוד.

דפים קשורים

Clone this wiki locally