TIP#3359: Na MacOS se ztrácejí klávesové zkratky přiřazené k Shortcuts/Zkratky. Jde s tím něco dělat?

Už jsem na to o víkendu zase narazil. Dvě z několika Zkratek s přiřazenou  klávesovou kombinací přestaly reagovat. Ostatní fungovaly. Oprava byla snadná, přidat je znovu. 

MacOS tohle dělá už doslova roky (viz např. macOS Ventura Shortcuts forgets keyboard shortcuts – solution? z roku 2022) a Apple to klasicky ignoruje. Důvod přitom není jasný, ale často se to stane po aktualizaci MacOS, nebo k tomu prý může dojít chybou synchronizace Zkratek přes iCloud. Spouštěč chyby může být i přidání nového zařízení, stejně jako to, že zkratku opravíte na iPhone či iPadu a tím se ztratí informace specifická jenom pro Mac. 

Řešení?

To jedno co používám je, že si v Obsidianu v digitální dokumentaci udržují jaké zkratky mají jaké klávesy – a pokud něco přestane fungovat, tak to snadno najdu a ručně opravím. 

Lze také přiřazovat jinde – ve zkratce zapněte Použít jako rychlou akci → Nabídka Služby a klávesy přiřaďte v Nastavení systému → Klávesnice → Klávesové zkratky → Služby. Tyto vazby ukládá systém jinde než Zkratky, takže bývají stabilnější. Nevýhoda: služby fungují jen v aplikacích, které je podporují.

Praktičtější může být přesunout klávesovou zkratku mimo aplikaci Zkratky. Spouštějte ji příkazem shortcuts run „Název zkratky“ a klávesy přiřaďte v aplikaci, která si nastavení drží sama: Karabiner-Elements, Raycast, Alfred, Keyboard Maestro nebo BetterTouchTool. Něco co jsem chvíli používal a opustil, nebavily mě další extra aplikace a často i nepřívětivé cesty, jak to nastavovat. 

Někde je doporučováno neupravovat danou zkratku na jiných zařízeních, ale moje zkušenost je, že mi mizí nastavení u zkratek, na které jsem nesahal doslova rok či déle. 

Nezkoušel jsem synchronizací těchto zkratek vypnout – což ale nejde “per zkratka”, jen pro všechny a bylo by to dost nepraktické.

Řešení s Karabiner-Elements

Osobně používám právě Karabiner pro další věci, takže můžu využit toho, že i zde je možné klávesovou zkratkou vyvolat shortcut. 

Stačí do Complex Modifications > Add your own rule. Otevře editor, ukázkový text pak například nahradit tímto. 

{
  "description": "⌃⇧X → Open XnViewMP",
  "manipulators": [
    {
      "type": "basic",
      "from": {
        "key_code": "x",
        "modifiers": { "mandatory": ["control", "shift"] }
      },
      "to": [
        { "shell_command": "/usr/bin/shortcuts run 'Open XnViewMP'" }
      ]
    }
  ]
}

Další zkratky pak ideálně vložit v podobě dalšího vlastního předpisu. 

Pokud narazíte na to, že to výše uvedené vlastně spouští vše přímo ve shellu a tan nemá oprávnění, tak to spíš volejte takto:

{
    "description": "⌃⇧E → Fotky z Photos do /tmp/",
    "manipulators": [
        {
            "from": {
                "key_code": "e",
                "modifiers": { "mandatory": ["control", "shift"] }
            },
            "to": [{ "shell_command": "open -g 'shortcuts://run-shortcut?name=Fotky%20z%20Photos%20export%20do%20%2Ftmp%2F'" }],
            "type": "basic"
        }
    ]
}

Tohle spouští tu zkratku skrz aplikaci Shortcuts – a tam si nejprve tu zkratku spustíte ručně, čímž MacOS bude protestovat a umožní vám přidělit potřebná práva.

A pozor, to „-g“ je nutné, jinak vám bude otevírat aplikaci Shortcuts a hodí na ní focus.