Start/End selection with AutoHotkey
I would like to have a script in AutoHotkey that allows me to do the following:
When I hit Control + Space: It would initiate "text selection mode" (i.e. if I move the cursor with the arrow keys, or moving the mouse it will highlight text)
When I hit Control + Space again: It would terminate "text selection mode" (e.g. if I move the cursor with the arrow keys or moving the mouse it will not highlight text)
However I would like to avoid using the following strategies, for the reasons explained below:
Strategy 1:
The following script does not let me move the cursor with the keyboard after I initiate text selection. Apparently the computer believes that I am constantly clicking on the mouse location, so it does not let me move the cursor with the keyboard.
*^Space::
text_selection_is_on := !text_selection_is_on
if text_selection_is_on
Send, {Click down}
else
Send, {Click up}
return
Strategy 2:
The following script relies on simulating the action of pressing the shift key down to initiate text selection. However, I would like to avoid relying on the shift key since some of the programs that I plan on using this script with require the shift key to be up (i.e. not pressed) when I move the cursor to select text.
*^Space::
text_selection_is_on := !text_selection_is_on
if text_selection_is_on
Send, {Shift down}
else
Send, {Shift up}
return
Is it possible to do this with AutoHotkey? If so, how?
Thanks!
Very ugly but maybe it's the solution you were looking for. Very sad the shift down solution doesn't work for you, because that's what I've always been using.
*^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