No Windows 10, onde os caracteres de parada são definidos para selecionar / mover texto com Ctrl + seta ou Ctrl + Shift + seta?

4

O Windows (e provavelmente a maioria dos outros sistemas operacionais) tem um ótimo recurso que permite que um se mova e selecione o texto com mais eficiência. Ao usar Ctrl (+ Deslocamento ]) + seta para esquerda / direita, pode-se saltar ou selecionar pedaços de texto (delimitados por espaços, traços e outros). Meu problema é que geralmente quero que esse comportamento reconheça e interrompa uma lista mais extensa de caracteres (por exemplo, o sublinhado _ ).

Esse comportamento é incorporado ao Windows? Pode ser substituído em todo o sistema ou por desenvolvedores de aplicativos?

    
por matt 18.04.2017 / 14:37

1 resposta

3

Podemos experimentar nesta string (colá-la no bloco de notas ou algo assim):

a!b@c#d$e%f^g&h*i(j)k-l=m_n+o{p}q[r]s|t\u'v~w/x<y>z?0.1;2'3:4"5

Descobri que ! , $ , % , ( , - , + , { , } , [ , | , \ , e ? têm algum efeito na quebra de linha ou no agrupamento de caracteres. Estranhamente, parece haver vários tipos de influência - eles variam se eles podem quebrar linhas e se uma Seta de Controle + pára antes ou depois. (E a omissão de ] não é um acidente. A chave de abertura tem propriedades especiais, mas a de fechamento não é muito).

Cada controle de edição no Windows tem uma quebra de palavras procedimento . Tal procedimento é responsável por:

  • Determinar o comportamento de um determinado personagem em relação à quebra de linha
  • Determinando se um caractere é um delimitador
  • Encontrando o início da próxima / palavra anterior / cluster em relação à posição atual

A maioria dos aplicativos usa o padrão do Windows, que, até onde eu sei, não é configurável. Um determinado controle de edição ou procedimento de quebra de palavras do controle rich text pode ser definido com o EM_SETWORDBREAKPROC mensagem da janela. Geralmente isso seria feito pelo aplicativo que possui o controle, uma vez que o endereço do procedimento só será garantido válido dentro desse processo. Programaticamente, você pode criar um thread dentro do processo de um aplicativo de destino que defina um procedimento de quebra personalizado nos controles de destino, mas não parece ser uma maneira menos complicada.

    
por 18.04.2017 / 18:53