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

1

Nos teclados do Reino Unido, o símbolo de hash (#, a.k.a libra em outro lugar) tem sua própria chave (com o til acima dele).

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

Existe uma maneira de referenciá-lo ao criar ataduras de teclas personalizadas?

    
por Dan 01.09.2017 / 01:05

1 resposta

2

A resposta curta para a sua pergunta é que isso é possível, mas a ligação que você precisa pode não ser o que você espera que seja devido ao layout do teclado e / ou um pouco de "problema" lógico que talvez você não espere da maneira que o Sublime mapeia as chaves.

Explicar a razão para isso e como você determina como a sua ligação deve ser para essa (ou qualquer outra) chave está um pouco mais envolvida.

Em geral, o Sublime usa códigos de verificação 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 chaves na lista mencionada na sua pergunta pressupõe um layout de teclado padrão nos EUA.

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

sublime.log_input(True)

Enquanto o log de entrada está ativado, o Sublime reportará uma mensagem no console referente a cada evento de entrada que está sendo exibido. O registro de entrada permanece em vigor até que você execute o mesmo comando com False ou reinicie o Sublime.

Você geralmente verá um dos itens a seguir:

  • chr evt: # , que informa que você pressionou um caractere
  • key evt: backspace , que informa que você pressionou uma tecla
  • key evt seguido por chr evt , o que significa que a tecla que você pressionou é algo parecido com uma chave morta que está tentando adicionar um diacrítico a um caractere.
  • nada se a chave estiver realmente morta ou algo fora do Sublime (por exemplo, o SO) comeu o evento do teclado antes que o Sublime tivesse a chance de vê-lo

Para associar uma chave a algo que está relatando um evento chr , seu mapeamento deve incluir apenas o caractere:

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

Para vincular uma chave que está relatando como um evento key , use a chave conforme relatado no evento, incluindo quaisquer modificadores ( control funciona assim como ctrl ):

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

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

As combinações de chaves que geram caracteres são relatadas como chr events, o que significa que elas levam em consideração o estado de mudança. As chaves que não geram um caractere são informadas como key events e incluem o modificador e a chave que foi pressionada .

Esse bit é enfatizado porque pode não ser o que você espera inicialmente.

Por exemplo, em um layout de teclado dos EUA, # e 3 compartilham uma chave, com # sendo a versão deslocada da chave.

Assim:

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

Isso faz sentido lógico; Pressionar a tecla 3 obtém apenas um literal 3 , enquanto o uso de deslocamento gera 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

Isso é; Para obter o caractere # , preciso pressionar shift, mas o evento principal relatado é para a chave 3 , porque essa é realmente a chave que estou pressionando.

    
por 04.01.2018 / 01:07