1

На британских клавиатурах символ хеша (#, иначе фунт в другом месте) имеет свой собственный ключ (с тильдой над ним).

Предположительно, поскольку это не стандартная клавиша на клавиатурах США, она не указана в списке именованных клавиш в документации для использования при пользовательских сочетаниях клавиш.

Есть ли способ ссылаться на него при создании пользовательских привязок клавиш?

1 ответ1

3

Короткий ответ на ваш вопрос заключается в том, что это возможно, но необходимая привязка может не соответствовать ожидаемой из-за раскладки клавиатуры и / или некоторого логического "икота", которого вы не ожидаете на пути. что 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 , потому что это действительно клавиша, которую я нажимаю.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .