Skróty klawiszowe w VS Code na macOS z rosyjską układem klawiatury: naprawa dla Cmd+, i innych
Na macOS kombinacja Cmd+, otwiera ustawienia we wszystkich aplikacjach: Safari, Finder, Chrome. W VS Code nie działa ona przy aktywnym rosyjskim układzie klawiatury. Powodem jest przetwarzanie na poziomie znaku, a nie fizycznego klawisza. Przy rosyjskim układzie klawisz przecinka generuje znak „B”, więc VS Code szuka kombinacji Cmd+B i nic nie znajduje.
Aplikacje oparte na Electron, w tym VS Code, używają znaków do skrótów klawiszowych — w przeciwieństwie do natywnych aplikacji macOS, które odwołują się do kodu skanowania (scan code).
Diagnostyka: od hipotez do prawdziwej przyczyny
Sprawdzenie aktywności okna, innych skrótów (np. Cmd+Shift+P działa poprawnie), konfliktów systemowych, rozszerzeń oraz procesów tła nie wykazało żadnych problemów. Kluczowym testem jest tryb „Record Keys” w ustawieniach skrótów klawiszowych: VS Code rejestruje „cmd+[Comma]”, ale nie może przypisać do niego żadnej komendy.
Przełączenie na angielski układ klawiatury potwierdza diagnozę: problem leży w mapowaniu znaków dla klawiszy nieliterowych.
Naprawa w pliku keybindings.json
Utwórz plik ~/Library/Application Support/Code/User/keybindings.json z przypisaniem opartym na kodzie skanowania:
[
{ "key": "cmd+[Comma]", "command": "workbench.action.openSettings" }
]
Nawiasy kwadratowe [Comma] wskazują fizyczny klawisz, a nie jego znak. Działa to niezależnie od wybranego układu klawiatury.
Kompletny zestaw poprawek dla skrótów z klawiszami nieliterowymi
Problem dotyczy wszystkich kombinacji Cmd+znak przy układach klawiatury innych niż łaciński. Zalecany plik keybindings.json:
[
{ "key": "cmd+[Comma]", "command": "workbench.action.openSettings" },
{ "key": "cmd+[Period]", "command": "editor.action.quickFix", "when": "editorHasCodeActionsProvider && editorTextFocus" },
{ "key": "cmd+[Slash]", "command": "editor.action.commentLine", "when": "editorTextFocus" },
{ "key": "cmd+[BracketLeft]", "command": "editor.action.outdentLines", "when": "editorTextFocus" },
{ "key": "cmd+[BracketRight]", "command": "editor.action.indentLines", "when": "editorTextFocus" },
{ "key": "cmd+[Backslash]", "command": "workbench.action.splitEditor" }
]
- Cmd+. — szybka poprawka kodu (Quick Fix)
- Cmd+/ — komentowanie linii
- Cmd+[+] — zwiększanie wcięć (indent)
- Cmd+\ — dzielenie edytora
Bonus: otwieranie linków z terminala w zewnętrznym przeglądarce
Ustawienie remote.forwardedPorts.openBrowserKind powoduje, że VS Code otwiera przekazywane porty (w tym lokalne serwery deweloperskie) w zewnętrznej przeglądarce, a nie w wbudowanym prostym przeglądarce (Simple Browser).
W pliku settings.json dodaj:
"remote.forwardedPorts.openBrowserKind": "external"
Co warto zapamiętać
- VS Code przypisuje skróty klawiszowe na podstawie znaku, macOS — na podstawie fizycznego klawisza
- Naprawa przez
cmd+[Comma]wkeybindings.jsonrozwiązuje problem we wszystkich układach klawiatury - Dotyczy wszystkich aplikacji opartych na Electron oraz klawiszy nieliterowych
- Tryb „Record Keys” w ustawieniach skrótów pokazuje rzeczywisty kod skanowania
- Ustawienie portów działa również dla lokalnych serwerów, mimo nazwy „remote"
— Editorial Team
Brak komentarzy.