使用 AutoHotkey 开始/结束选择

使用 AutoHotkey 开始/结束选择

我想要一个 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})。

再说一遍,我不知道您的程序的实际情况或它们的文本选择的工作方式。

相关内容