fix(captures): use platform hotkey defaults

This commit is contained in:
Jamie Pine
2026-04-25 10:28:34 -07:00
parent 29f99a8622
commit 2a1bb6f936
8 changed files with 77 additions and 20 deletions
+10 -2
View File
@@ -17,11 +17,17 @@ Adding a new migration:
(idempotent) and print a short message when it does real work.
"""
import json
import logging
import sqlite3
from sqlalchemy import inspect, text
from ..utils.capture_chords import (
default_push_to_talk_chord,
default_toggle_to_talk_chord,
)
logger = logging.getLogger(__name__)
@@ -200,6 +206,8 @@ def _migrate_capture_settings(engine, inspector, tables: set[str]) -> None:
if "capture_settings" not in tables:
return
columns = _get_columns(inspector, "capture_settings")
push_default = json.dumps(default_push_to_talk_chord())
toggle_default = json.dumps(default_toggle_to_talk_chord())
if "allow_auto_paste" not in columns:
_add_column(
engine,
@@ -218,14 +226,14 @@ def _migrate_capture_settings(engine, inspector, tables: set[str]) -> None:
_add_column(
engine,
"capture_settings",
"chord_push_to_talk_keys TEXT NOT NULL DEFAULT '[\"MetaRight\",\"AltGr\"]'",
f"chord_push_to_talk_keys TEXT NOT NULL DEFAULT '{push_default}'",
"chord_push_to_talk_keys",
)
if "chord_toggle_to_talk_keys" not in columns:
_add_column(
engine,
"capture_settings",
"chord_toggle_to_talk_keys TEXT NOT NULL DEFAULT '[\"MetaRight\",\"AltGr\",\"Space\"]'",
f"chord_toggle_to_talk_keys TEXT NOT NULL DEFAULT '{toggle_default}'",
"chord_toggle_to_talk_keys",
)
if "hotkey_enabled" not in columns:
+9 -5
View File
@@ -6,6 +6,11 @@ import uuid
from sqlalchemy import Column, String, Integer, Float, DateTime, Text, ForeignKey, Boolean, JSON
from sqlalchemy.ext.declarative import declarative_base
from ..utils.capture_chords import (
default_push_to_talk_chord,
default_toggle_to_talk_chord,
)
Base = declarative_base()
@@ -205,14 +210,13 @@ class CaptureSettings(Base):
# "Voicebox would like to receive keystrokes from any application" dialog
# before they've even opened the Captures tab.
hotkey_enabled = Column(Boolean, nullable=False, default=False)
# Lists of rdev::Key variant names (e.g. "MetaRight", "AltGr"). Right-hand
# modifiers by default so they don't collide with left-hand system
# shortcuts (Cmd+Opt+I devtools, Cmd+Opt+Esc force-quit).
# Lists of keytap key names (e.g. "MetaRight", "ControlRight"). Right-hand
# modifiers by default so they don't collide with left-hand shortcuts.
chord_push_to_talk_keys = Column(
JSON, nullable=False, default=lambda: ["MetaRight", "AltGr"]
JSON, nullable=False, default=default_push_to_talk_chord
)
chord_toggle_to_talk_keys = Column(
JSON, nullable=False, default=lambda: ["MetaRight", "AltGr", "Space"]
JSON, nullable=False, default=default_toggle_to_talk_chord
)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)