Короткий ответ на ваш вопрос заключается в том, что это возможно, но необходимая привязка может не соответствовать ожидаемой из-за раскладки клавиатуры и / или некоторого логического «икота», которого вы не ожидаете на пути. что Sublime отображает ключи.
Объяснение причины этого и того, как вы определяете, как должна выглядеть ваша привязка для этого (или любого другого) ключа, все же немного сложнее.
Вообще говоря, Sublime использует коды сканирования, чтобы определить, какую клавишу вы нажимаете. Скан-коды основаны на положении клавиши на клавиатуре, а не на символах, которые они фактически создают.
Результатом этого является то, что Sublime видит клавиши, которые вы нажимаете, как если бы они были на клавиатуре США, даже если это не так; список клавиш в списке, который вы упоминаете в своем вопросе, предполагает стандартную раскладку клавиатуры в США.
Чтобы диагностировать проблемы с привязкой клавиш или увидеть, как Sublime читает ваш ввод, вы можете включить ведение журнала ввода, открыв консоль Sublime с View > Show Console
помощью меню и введя следующую команду:
sublime.log_input(True)
Пока входная регистрация включена, Sublime сообщит в консоли сообщение о каждом входном событии, которое он видит. Регистрация входных данных остается в силе до тех пор, пока вы не запустите ту же команду False
или не перезапустите Sublime.
Как правило, вы увидите одно из следующего:
chr evt: #
, который говорит вам, что вы нажали символkey evt: backspace
, который говорит вам, что вы нажали клавишуkey evt
затемchr evt
, что означает, что нажатая клавиша является чем-то похожим на мертвую клавишу, которая пытается добавить диакритический знак к символу.- вообще ничего, если клавиша действительно мертва или что-то за пределами Sublime (например, ОС) съело событие клавиатуры, прежде чем Sublime получил шанс увидеть его
Чтобы связать ключ с чем-то, что сообщает о chr
событии, ваше отображение должно включать только символ:
{ "keys": ["#"], "command": "echo"},
Чтобы связать ключ, который сообщает как key
событие, вы должны использовать ключ, как он сообщается в событии, включая любые модификаторы ( control
работает так же, как ctrl
):
{ "keys": ["backspace"], "command": "echo"},
С учетом всего вышесказанного, отчеты о входных журналах не всегда могут быть такими, какими вы изначально ожидали, что является одним из пунктов, упомянутых в комментариях к исходному вопросу.
Комбинации клавиш, которые генерируют символы, сообщаются как chr
события, что означает, что они принимают во внимание состояние сдвига. Ключи, которые не генерируют символ, сообщаются как key
события и включают модификатор и нажатую клавишу .
Этот бит подчеркивается, потому что это может быть не то, что вы изначально ожидали.
В качестве примера, на раскладке клавиатуры США, #
и 3
разделить клавишу, #
будучи сдвинутой версией клавиши.
Таким образом:
- 3:
chr evt: 3 (0x33)
- shift+3:
chr evt: # (0x23)
Это имеет логический смысл; нажатие 3
одной клавиши дает вам буквальное значение 3
, а нажатие клавиши shift - хеш-символ.
Однако обратите внимание на следующее:
- Ctrl+3:
key evt: control+3
- Ctrl+#:
key evt: control+3
- Ctrl+Shift+3:
shift+control+3
То есть; для того, чтобы получить #
символ, мне нужно нажать клавишу shift, но о событии, о котором сообщается, это 3
клавиша, потому что это действительно клавиша, которую я нажимаю.