我想要一个 AutoHotkey 中的脚本来让我执行以下操作:
当我点击Control + Space:它将启动“文本选择模式”(即,如果我使用箭头键移动光标,或者移动鼠标,它将突出显示文本)
当我Control + Space再次点击时:它将终止“文本选择模式”(例如,如果我使用箭头键移动光标或移动鼠标,它将不是突出显示文本)
但我想避免采用以下策略,原因如下:
策略1:
下面的脚本不允许我在启动文本选择后使用键盘移动光标。显然,计算机认为我是不断地单击鼠标位置,因此它不允许我用键盘移动光标。
*^Space::
text_selection_is_on := !text_selection_is_on
if text_selection_is_on
Send, {Click down}
else
Send, {Click up}
return
策略2:
以下脚本依赖于模拟按下 Shift 键以启动文本选择的操作。但是,我想避免依赖 Shift 键,因为我计划使用此脚本的一些程序需要按下 Shift 键向上(即未按下)当我移动光标选择文本时。
*^Space::
text_selection_is_on := !text_selection_is_on
if text_selection_is_on
Send, {Shift down}
else
Send, {Shift up}
return
可以使用 AutoHotkey 来实现这一点吗?如果可以,该怎么做?
谢谢!
答案1
非常丑陋,但也许这就是你要找的解决方案。很遗憾,降档解决方案对你不起作用,因为这是我一直在使用的。
*^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
答案2
我认为如果不拖动并按住鼠标或根本不使用 shift 就不可能选择文本。
但是,也许您可以详细说明一下使用 Shift 键的限制。Shift 键可以完全不能用吗?或者只要按住很短的时间,并且鼠标和插入符号在此期间不移动,就可以使用它吗?
如果是这种情况,您可以按如下方式选择文本 - 也就是说,它在我的浏览器中有效,并且我认为它在大多数可以通过拖动鼠标选择文本的区域中有效;但我不知道您计划在什么程序中选择文本。
- 在选择内容的一端单击鼠标左键即可。
- 将鼠标移至选择的另一端。
- 在那里按住 Shift 键并单击鼠标左键(SendInput +{LButton})。
再说一遍,我不知道您的程序的实际情况或它们的文本选择的工作方式。