我正在寻找一种方法来禁用alt准备与键盘一起使用的助记键菜单的功能,等待按下字母,但显然,Windows 本身无法做到这一点,至少 Windows 7 无法做到这一点(我不知道其他的)。
问题在于Adobe Premiere其中,它alt用于放大和缩小时间线/序列,我经常这样做,因为我进行逐帧口型同步。
问题是,当我释放alt键时,有时,其与菜单相关的功能仍然存在,并且立即使用箭头键移动...光标?在时间线/序列中,而不是浏览视频帧,而是浏览菜单。
虽然很烦人,但通过在停止上下滚动鼠标滚轮后立即再次按下alt,我可以保持连续的工作流程。这只有一毫秒,但可以推断出一个非常耗时的任务,2-3 分钟可能需要 2-3 小时才能完成。
无论如何...在寻找替代方法时,我发现某人有同样的问题,但Adobe Photoshop还有人建议使用一款名为助理遗憾的是它仅适用于 Photoshop,但也有 AutoHotKey 解决方案。
我一直试图避免使用 AHK,因为我不喜欢在后台运行程序,而且在这种情况下,考虑到我没有顶级硬件配置,每一点内存和/或处理能力都至关重要。上次我的电脑因为项目的复杂性而停止工作了好几次,Premiere 消耗了超过 7GB 的 RAM。
但我尝试了一下,结合了原来的建议:
#NoEnv
; #Warn ;
~LAlt::
KeyWait, LAlt
return
~LAlt Up::
Send, {LAlt Up}
return
我确信这有效,因为我在 Windows 资源管理器窗口中进行了测试,尽管菜单闪烁,但它并没有触发。
通过一种方法来触发 Premiere -AND- 一起运行脚本:
#NoEnv
; #Warn ;#Persistent ;Script will not Exit when no hotkeys exist.
Run, "C:\Program Files\Adobe\Adobe Premiere Pro CC 2017\Adobe Premiere Pro.exe"
SetTitleMatchMode, 2 ;Program Title can be portions of the title instead of the full title
SetTimer, CheckPrograms, 1000 ;Run CheckPrograms subroutine every 1 second
return
CheckPrograms:
IfWinExist, Premiere
{
Run, DisableALTFunctionality.ahk
;PremiereTrack = 1
}
IfWinNotExist, Premiere
;PremiereTrack = 0
Exitapp
return
但据我所知,这不起作用,因为当 Premiere 最终加载时(这里还没有 SSD)我打开了我的最后一个项目,而 ALT 功能仍然存在。
我正在通过桌面上的快捷方式运行第二个脚本,两个脚本都在同一个目录中,并且 AHK 文件已正确配置为手动与 AutoHotScript x64 一起运行(便携版)——托盘图标显示正在运行的脚本确实是DisableALTFunctionality.ahk
。
但即使将超时时间增加到 5 分钟左右,我也没有成功。
答案1
您可以使用#如果- 或者#IfWinActive- 指令禁用此程序中的 ALT 功能:
#NoEnv
; #Warn ;#Persistent ; Script will not Exit when no hotkeys exist.
SetTitleMatchMode, 2 ; Program Title can be portions of the title instead of the full
#IfWinActive, Premiere
LAlt::
RAlt:: return ; do nothing
!WheelDown:: Send, {Alt Down}{WheelDown}{Alt Up} ; ! means Alt
!WheelUp:: Send, {Alt Down}{WheelUp}{Alt Up}
#IfWinActive ; turn off context sensitivity
也可以尝试:
#NoEnv
; #Warn ;#Persistent ; Script will not Exit when no hotkeys exist.
SetTitleMatchMode, 2 ; Program Title can be portions of the title instead of the full
#IfWinActive, Premiere
LAlt up::
If (A_PriorKey = "LAlt") ; If LAlt was pressed alone
return ; do nothing
return
; In this case its necessary to define a custom combination by using "LAlt &" or "<!"
; to avoid that LAlt loses its original function as a modifier key:
<!F4:: Send {Alt Down}{F4}{Alt Up} ; <! means LAlt
#IfWinActive ; turn off context sensitivity