我正在尝试大量使用 Windows 的语音输入功能,并发现Win+H热键不太理想,因为当我用右手握住鼠标时,仅用左手按下并不快速/容易(这种情况经常发生,因为当我想开始口述时,我通常刚刚单击了一个文本区域/文本框)。
我尝试创建一个 AutoHotkey 组合键,这样我就可以只用左手开始语音输入:
; Set "Ctrl + Shift + z" to "Windows + h" to start the Windows voice-to-type system. It just makes it easier to reach.
^+z::Send #h
但是,我经常遇到一个问题,语音输入窗口的行为就像是立即收到两次热键按下一样:它启动并立即停止“我正在聆听”模式。我能分辨出来,因为它在启动和停止该模式时会播放声音,还会播放动画。
这个问题绝不当我按下Win+时发生这种情况H。
有什么方法可以阻止此问题的发生?我想知道是否可以通过 regedit 或其他方式修改Win+热键。H
我尝试过的事情
我尝试使用中提到的功能此主题以防止重复按键,但问题仍然存在。
PreventRepeating() {
KeyWait, Alt
KeyWait, Ctrl
KeyWait, Shift
KeyWait, LWin
KeyWait, RWin
KeyWait, %A_ThisHotkey%
}
; Set Ctrl + Alt to Windows + h to start the Windows voice-to-type system. It just makes it easier to reach.
^+z::
Send #h
PreventRepeating()
Return
答案1
不是一个自动热键解决方案,而不是解决您在使用 AutoHotkey 脚本时遇到的问题。但是,有没有更“原生”的快捷键重新映射解决方案?
我尝试过重新映射快捷方式这是键盘管理器实用程序在里面微软的 PowerToys应用程序,并且它似乎运行良好。
答案2
作为替代方法,您可以使用下面的方法,因为它保留了您的关键功能并且更加通用,尽管这是直接来自 AHK 文档并经过我自己的一些非常基本的修改。
来源:AHK 文档 #3
#Persistent
#SingleInstance, Force
h::
if (Hotkey_Presses > 0) ; ←←← SetTimer already started, so we log the keypress instead.
{
Hotkey_Presses += 1
Return
}
; ◦ ◦ ◦ ◦ ◦ ◦ ◦ Otherwise, this is the first press of a new series. Set count to 1 and start the timer.
Hotkey_Presses := 1
SetTimer, HotKey, -400 ; ←←← Wait for more presses within a 400 millisecond window.
Return
HotKey:
if (Hotkey_Presses = 1) ; ←←← The key was pressed once.
{
Send, {TEXT}h
Soundbeep, 1700, 150
}
else if (Hotkey_Presses = 2) ; ←←← The key was pressed twice.
{
SplashTextOn, 150, , The key was pressed twice.
Soundbeep, 1700, 150
Soundbeep, 1700, 150
Sleep, 1500
SplashTextOff
}
else if (Hotkey_Presses > 2) ; ←←← Multiple key presses.
{
SplashTextOn, 225, , The key was pressed three or more times.
Soundbeep, 1700, 150
Soundbeep, 1500, 150
Soundbeep, 1900, 150
Sleep, 1500
SplashTextOff
}
; ◦ ◦ ◦ ◦ ◦ ◦ ◦ Regardless of which action above was triggered, reset the count to prepare for the next series of presses.
Hotkey_Presses := 0
Return
^Esc:: ExitApp
答案3
不确定这是否有用,但您是否考虑过只使用双击作为热键?您不必担心按键之间的距离,并且可以根据需要设置热键。提供的示例让您只需双击“H”键,但单击对您没有任何作用,因此请谨慎选择您的按键。当然,您也可以将其设置为 ^H:: (Ctrl+H) 之类的键并保留“H”键的功能。
H::
If (A_ThisHotkey = A_PriorHotkey && A_TimeSincePriorHotkey < 250) ; ←←← Double-Tap in less than 250 milliseconds.
SoundBeep, 2100, 100 ; ←←← To veryify double-tap success.
Return