by AAHKUser » 03 Jan 2022, 04:27
在Windows下使用Ps 和Ai 有一个很困扰的问题,就是在中文输入法下按笔刷B,吸管i等快捷键会被输入法挡住,非常影响状态。我目前想到的办法是,在需要输入快捷键的时候自动切换到英文键盘,输入完成后,再自动切换回来,实现无感无影响操作。在修改图层名字、另存文件等地方,可以借助A_Caret来获取状态,实现中英文自动切换,但是在按T激活文字工具,A_Caret无法识别输入状态,所以需要用曲线救国的方式来实现,我想到了实现的逻辑,但是代码能力有限,被如何启动和禁用其他热键给难住了,写不出来,希望能得到各位的帮助,谢谢!
以下的代码中
@fwejifjjwk2提供了很多帮助,非常感谢。
Code: Select all
#If WinActive("ahk_class Photoshop") and (not A_CaretX)
:*:t::
SendInput, !+{0}t!+{1}
Disable CnOk ; 此部分,不知道如何实现
Disable t
Gui, +AlwaysOnTop +Disabled -SysMenu +Owner ; +Owner 避免显示任务栏按钮.
Gui, Add, 内容,, 当前是编辑模式/n按下面的按或esc以回到快捷键模式.
Gui, Add, Button, default, 写完了 ; ButtonOK(如果存在) 会在此按钮被按下时运行.
Gui Show, xCenter, Y0
GuiEscape:
GuiClose:
Button写完了:
Enable CnOk
Enable t
return
; 逻辑,按一次t,进入编辑模式,暂停所有字符串替换,并显示置顶box,再按t也没关系,要取消编辑模式,需要按esc,或者点击box。
CnOk:{
:*:v::
SendInput, !+{0}v!+{1} ;设置-输入-高级键盘设置里,给切换英文键盘和中文键盘各一个单独的快捷键,!+{0}切换到英文键盘,!+{1}切换到中文键盘
return
:*:m::
SendInput, !+{0}m!+{1}
return
:*:w::
SendInput, !+{0}w!+{1}
return
:*:c::
SendInput, !+{0}c!+{1}
return
:*:i::
SendInput, !+{0}i!+{1}
return
:*:j::
SendInput, !+{0}j!+{1}
return
:*:w::
SendInput, !+{0}w!+{1}
return
:*:b::
SendInput, !+{0}b!+{1}
return
:*:s::
SendInput, !+{0}s!+{1}
return
:*:y::
SendInput, !+{0}y!+{1}
return
:*:e::
SendInput, !+{0}e!+{1}
return
:*:g::
SendInput, !+{0}g!+{1}
return
:*:o::
SendInput, !+{0}o!+{1}
return
:*:p::
SendInput, !+{0}p!+{1}
return
:*:a::
SendInput, !+{0}a!+{1}
return
:*:u::
SendInput, !+{0}u!+{1}
return
:*:k::
SendInput, !+{0}k!+{1}
return
:*:n::
SendInput, !+{0}n!+{1}
return
:*:h::
SendInput, !+{0}h!+{1}
return
:*:r::
SendInput, !+{0}r!+{1}
return
:*:z::
SendInput, !+{0}z!+{1}
return
}
#If
在Windows下使用Ps 和Ai 有一个很困扰的问题,就是在中文输入法下按笔刷B,吸管i等快捷键会被输入法挡住,非常影响状态。我目前想到的办法是,在需要输入快捷键的时候自动切换到英文键盘,输入完成后,再自动切换回来,实现无感无影响操作。在修改图层名字、另存文件等地方,可以借助A_Caret来获取状态,实现中英文自动切换,但是在按T激活文字工具,A_Caret无法识别输入状态,所以需要用曲线救国的方式来实现,我想到了实现的逻辑,但是代码能力有限,被如何启动和禁用其他热键给难住了,写不出来,希望能得到各位的帮助,谢谢!
以下的代码中[mention]fwejifjjwk2[/mention]提供了很多帮助,非常感谢。
[code]
#If WinActive("ahk_class Photoshop") and (not A_CaretX)
:*:t::
SendInput, !+{0}t!+{1}
Disable CnOk ; 此部分,不知道如何实现
Disable t
Gui, +AlwaysOnTop +Disabled -SysMenu +Owner ; +Owner 避免显示任务栏按钮.
Gui, Add, 内容,, 当前是编辑模式/n按下面的按或esc以回到快捷键模式.
Gui, Add, Button, default, 写完了 ; ButtonOK(如果存在) 会在此按钮被按下时运行.
Gui Show, xCenter, Y0
GuiEscape:
GuiClose:
Button写完了:
Enable CnOk
Enable t
return
; 逻辑,按一次t,进入编辑模式,暂停所有字符串替换,并显示置顶box,再按t也没关系,要取消编辑模式,需要按esc,或者点击box。
CnOk:{
:*:v::
SendInput, !+{0}v!+{1} ;设置-输入-高级键盘设置里,给切换英文键盘和中文键盘各一个单独的快捷键,!+{0}切换到英文键盘,!+{1}切换到中文键盘
return
:*:m::
SendInput, !+{0}m!+{1}
return
:*:w::
SendInput, !+{0}w!+{1}
return
:*:c::
SendInput, !+{0}c!+{1}
return
:*:i::
SendInput, !+{0}i!+{1}
return
:*:j::
SendInput, !+{0}j!+{1}
return
:*:w::
SendInput, !+{0}w!+{1}
return
:*:b::
SendInput, !+{0}b!+{1}
return
:*:s::
SendInput, !+{0}s!+{1}
return
:*:y::
SendInput, !+{0}y!+{1}
return
:*:e::
SendInput, !+{0}e!+{1}
return
:*:g::
SendInput, !+{0}g!+{1}
return
:*:o::
SendInput, !+{0}o!+{1}
return
:*:p::
SendInput, !+{0}p!+{1}
return
:*:a::
SendInput, !+{0}a!+{1}
return
:*:u::
SendInput, !+{0}u!+{1}
return
:*:k::
SendInput, !+{0}k!+{1}
return
:*:n::
SendInput, !+{0}n!+{1}
return
:*:h::
SendInput, !+{0}h!+{1}
return
:*:r::
SendInput, !+{0}r!+{1}
return
:*:z::
SendInput, !+{0}z!+{1}
return
}
#If[/code]