Если вы используете нестандартную раскладку клавиатуры в Linux (например, созданную через XKB), могут возникнуть неочевидные сложности в программах вроде Visual Studio Code. Например, при попытке назначить комбинацию клавиш с модификатором (IsoLevelShift + J вместо Enter), редактор может добавить лишний символ oem_8
в настройки, из-за чего сочетание перестаёт работать.
Это происходит из-за особенностей обработки ввода в VSCode, но проблему можно решить без переустановки или глубокого вмешательства в систему.
Почему VSCode добавляет лишние символы
Когда вы настраиваете горячие клавии через графический интерфейс (File > Preferences > Keyboard Shortcuts), редактор требует подтверждения действия клавишей Enter. Если ваша раскладка переназначает Enter на другую комбинацию (например, через XKB), VSCode может интерпретировать исходный физический сигнал клавиши как дополнительный символ. В данном случае — oem_8
, который обычно соответствует клавише «`» или «~» на стандартных клавиатурах.
Кстати, это не ошибка, а следствие того, как VSCode обрабатывает «сырой» ввод с клавиатуры. Редактор пытается записать все нажатые коды, включая те, которые вы хотели бы игнорировать.
Как редактировать настройки вручную
Вместо графического интерфейса можно напрямую редактировать файл keybindings.json
, где хранятся все пользовательские сочетания. Вот как это сделать:
- Откройте меню Keyboard Shortcuts (Сочетания клавиш) через File > Preferences или нажмите Ctrl+K Ctrl+S.
- В правом верхнем углу окна найдите иконку в виде листа с изогнутой стрелкой (см. изображение ниже). Кликните по ней, чтобы открыть
keybindings.json
.

- В открывшемся файле найдите сочетание, в котором появился
oem_8
. Например, строка может выглядеть так:
"key": "ctrl+shift+j oem_8"
Удалите часть с oem_8
, оставив только нужные клавиши:
"key": "ctrl+shift+j"
- Сохраните файл (Ctrl+S) и перезапустите VSCode. Проверьте работу сочетания.
Если вы хотите добавить новое сочетание вручную, пропишите его в формате JSON. Например:
{
"key": "ctrl+alt+k",
"command": "workbench.action.terminal.new"
}
Будьте внимательны: синтаксис JSON требует запятых между элементами списка, но не после последнего элемента. Ошибки в расстановке запятых или кавычек приведут к сбою загрузки настроек.
Дополнительные советы и ограничения
К сожалению, полностью «заставить» VSCode игнорировать определённые клавиши в графическом интерфейсе нельзя без модификации исходного кода редактора. Однако есть обходные пути:
- Используйте альтернативные модификаторы. Если проблема возникает только с IsoLevelShift, попробуйте переназначить комбинацию на другой модификатор (например, Ctrl+Alt) в вашей X-раскладке.
- Резервное копирование. Перед редактированием
keybindings.json
создайте его копию — это спасёт от случайных ошибок. - Проверка через терминал. Если сочетание не работает, откройте Help > Keyboard Shortcuts Reference и убедитесь, что ваша комбинация не конфликтует со встроенными командами.
Отмечу, что Electron-приложения (как Obsidian или Slack) могут по-разному обрабатывать пользовательские раскладки. В случае с VSCode ручное редактирование конфигурации — самый надёжный способ избежать неожиданностей. Если остались вопросы, смело пишите в комментарии — постараюсь помочь!