É possível usar a chave hash (#, cerquilha) em uma ligação de chave no Sublime Text 3?

É possível usar a chave hash (#, cerquilha) em uma ligação de chave no Sublime Text 3?

Nos teclados do Reino Unido, o símbolo de hash (#, também conhecido como libra em outros lugares) tem sua própria tecla (com til acima).

Presumivelmente porque não é uma tecla padrão nos teclados dos EUA, não está listada nolista de chaves nomeadas na documentaçãopara uso em pressionamentos de teclas personalizados.

Existe uma maneira de referenciá-lo ao criar combinações de teclas personalizadas?

Responder1

A resposta curta à sua pergunta é que isso é possível, mas a ligação necessária pode não ser o que você espera devido ao layout do teclado e/ou a um "soluço" lógico que você não espera no caminho que Sublime mapeia chaves.

Explicar o motivo disso e como você determina a aparência de sua ligação para essa (ou qualquer outra) chave é um pouco mais complicado.

De modo geral, o Sublime usa códigos de varredura para determinar qual tecla você está pressionando. Os scancodes são baseados na posição da tecla no teclado e não nos caracteres que eles realmente criam.

O resultado disso é que o Sublime vê as teclas que você pressiona como se estivessem em um teclado dos EUA, mesmo que não estejam; a lista de teclas mencionada na sua pergunta assume um layout de teclado padrão dos EUA.

Para diagnosticar problemas de vinculação de teclas ou ver como o Sublime está lendo sua entrada, você pode ativar o registro de entrada abrindo o console do Sublime no View > Show Consolemenu e digitando o seguinte comando:

sublime.log_input(True)

Enquanto o registro de entrada estiver ativado, o Sublime reportará uma mensagem no console sobre cada evento de entrada que estiver vendo. O log de entrada permanece em vigor até que você execute o mesmo comando Falseou reinicie o Sublime.

Geralmente, você verá um dos seguintes:

  • chr evt: #, que informa que você pressionou umpersonagem
  • key evt: backspace, que informa que você pressionou umchave
  • key evtseguido por chr evt, o que significa que a tecla que você pressionou é algo semelhante a umchave mortaque está tentando adicionar um diacrítico a um caractere.
  • absolutamente nada se a tecla estiver realmente morta ou algo fora do Sublime (por exemplo, o sistema operacional) comeu o evento do teclado antes que o Sublime tivesse a chance de vê-lo

Para vincular uma chave a algo que está relatando um chrevento, seu mapeamento deve incluir apenas o caractere:

{ "keys": ["#"], "command": "echo"},

Para vincular uma chave que está sendo relatada como um keyevento, você usaria a chave conforme ela é relatada no evento, incluindo quaisquer modificadores ( controlfunciona tão bem quanto ctrl):

{ "keys": ["backspace"], "command": "echo"},

Com tudo isso dito, o que os relatórios de registro de entrada podem nem sempre ser o que você esperaria inicialmente, que é um dos itens mencionados nos comentários da sua pergunta original.

As combinações de teclas que geram caracteres são relatadas como chreventos, o que significa que levam em consideração o estado de mudança. Chaves que não geram um caractere são relatadas como keyeventos e incluem o modificador e otecla que foi pressionada.

Essa parte é enfatizada porque pode não ser o que você esperava inicialmente.

A título de exemplo, em um layout de teclado dos EUA, #e 3compartilhe uma tecla, #sendo a versão deslocada da tecla.

Por isso:

  • 3:chr evt: 3 (0x33)
  • shift+3:chr evt: # (0x23)

Isto faz sentido lógico; pressionar a 3tecla sozinha fornece um literal 3, enquanto usar shift fornece um caractere hash.

No entanto, observe o seguinte:

  • Ctrl+3:key evt: control+3
  • Ctrl+#:key evt: control+3
  • Ctrl+Shift+3:shift+control+3

Aquilo é; para obter o #caractere preciso pressionar shift, mas o evento de tecla relatado é para a 3tecla, porque essa é realmente a tecla que estou pressionando.

informação relacionada