Sélection de début / fin avec AutoHotkey

Je voudrais avoir un script dans AutoHotkey qui me permet de faire ce qui suit:

  • Lorsque je touche Control + Space : il déclencherait le "mode de sélection de texte" (c'est-à-dire si je déplacer le curseur avec les touches fléchées, ou en déplaçant la souris, cela mettrait en surbrillance le texte)

  • Lorsque je lance à nouveau Control + Space : il mettrait fin au "mode de sélection de texte" (par exemple, si je déplace le curseur avec les touches fléchées ou en déplaçant la souris, cela ne mettra pas en surbrillance le texte)

Cependant, je voudrais éviter d' utiliser les stratégies suivantes, pour les raisons expliquées ci-dessous:

Stratégie 1:

Le script suivant ne me permet pas de déplacer le curseur avec le clavier après avoir lancé la sélection du texte. Apparemment, l'ordinateur croit que je clique constamment sur l'emplacement de la souris, de sorte qu'il ne me laisse pas déplacer le curseur avec le clavier.

*^Space:: text_selection_is_on := !text_selection_is_on if text_selection_is_on Send, {Click down} else Send, {Click up} return 

Stratégie 2:

Le script suivant repose sur la simulation de l'action d'appuyer sur la touche Maj pour lancer la sélection du texte. Cependant, j'aimerais éviter de compter sur la touche shift puisque certains des programmes que je prévois lors de l'utilisation de ce script requièrent que la touche Maj soit mise en veille (c'est-à-dire pas pressée) lorsque je déplace le curseur pour sélectionner le texte.

 *^Space:: text_selection_is_on := !text_selection_is_on if text_selection_is_on Send, {Shift down} else Send, {Shift up} return 

Est-il possible de le faire avec AutoHotkey? Si c'est le cas, comment?

Merci!

Très laid, mais c'est peut-être la solution que vous recherchiez. Très triste, la solution de changement de vitesse ne fonctionne pas pour vous, car c'est ce que j'ai toujours utilisé.

 *^Space:: dx = 1 dy = 1 text_selection_is_on := !text_selection_is_on if text_selection_is_on { MouseMove, %A_CaretX%, %A_CaretY%, 0 dx := A_CaretX Send, {right} dx := A_CaretX - dx Send, {left} dy := A_CaretY Send, {down} dy := A_CaretY - dy Send, {up} Send, {Click down} } else Send, {Click up} return left:: if text_selection_is_on MouseMove, % -dx, 0, 0, R else Send, {left} return right:: if text_selection_is_on MouseMove, % dx, 0, 0, R else Send, {right} return down:: if text_selection_is_on MouseMove, 0, % dy, 0, R else Send, {down} return up:: if text_selection_is_on MouseMove, 0, % -dy, 0, R else Send, {up} return 

Je ne pense pas qu'il soit possible de sélectionner du texte sans faire glisser et maintenir enfoncée la souris ou utiliser un décalage du tout.

Cependant, vous pourriez peut-être préciser ces restrictions sur l'utilisation de la touche Maj. La touche Maj peut-elle ne pas être utilisée du tout? Ou peut-il être utilisé tant qu'il est maintenu enfoncé pendant très peu de temps, et tant que la souris et le caret ne se déplacent pas pendant ce temps?

Si tel est le cas, vous pouvez sélectionner le texte comme suit: c'est-à-dire qu'il fonctionne dans mon navigateur, et je pense qu'il fonctionne dans la plupart des domaines où vous pouvez sélectionner du texte en faisant glisser la souris; Mais je n'ai aucune idée de quel programme vous envisagez de sélectionner le texte.

  • Effectuez un simple clic-gauche sur une extrémité de la sélection.
  • Déplacez la souris vers l'autre extrémité de la sélection.
  • Effectuez un décalage + clic gauche là-bas (SendInput + {LButton}).

Encore une fois, je n'ai aucune idée des circonstances pratiques de vos programmes ou de la façon dont leurs sélections de textes fonctionnent.