有没有锁定英文符号的动作?

动作需求 · 6000 次浏览
星染浅夏 创建于 23天21小时前

最好能设定某些进程,该进程只用英文符号输入(指逗号,句号这种),字母键还是可以中英文输入。


回复内容
ORYS 23天20小时前
#1

你可以搞一个文本替换的动作

运行后:全选,获取选中文本, 替换中文字符到英文, 粘贴回去

星染浅夏 回复 ORYS 23天19小时前 :

太麻烦哩,写一段就要替换一次

ORYS 回复 星染浅夏 23天2小时前 :

其实按一下输入法的切中英符号快捷键, 通常是 ctrl+. 就好了, 可以试试用这个自动触发

星染浅夏 回复 ORYS 23天1小时前 :

这个快捷键在哪设置

星染浅夏 回复 ORYS 23天1小时前 :

我找到了,这个进程启动是只有启动的时候适用吗,切换不适用吗?

ORYS 回复 星染浅夏 23天1小时前 :

这个 窗口获得焦点 可能更适合, 研究研究

这个方案会有个问题, 按快捷键时候没有逻辑判断当前的状态, 研究一下怎么判断当前字符是中文还是英文的, 就可以完美了

ORYS 最后更新于 23天1小时前
星染浅夏 回复 ORYS 23天1小时前 :

这个标点状态好像没法判断

星染浅夏 回复 ORYS 22天22小时前 :

找AI写了一下,好像可以判断:

功能 调用 Windows IME API ( ImmGetConversionStatus ) 检测当前前台窗口的输入法状态:


- 若为中文输入法( IME_CMODE_NATIVE 置位)且未开启符号模式( IME_CMODE_SYMBOL 未置位),则将输出变量 为英文标点状态 设为 true

- 否则设为 false

阿泽同学 23天12小时前
#2

gpt的建议是用ahk实现符合切换功能,用quiker来启停这个脚本


#NoEnv

#SingleInstance Force


IsTargetWindow()

{

    WinGet, ProcessName, ProcessName, A

    return (ProcessName = "Typora.exe"

        || ProcessName = "Code.exe"

        || ProcessName = "Obsidian.exe"

        || ProcessName = "notepad.exe")

}


#If IsTargetWindow()


,::

SendInput {Text},

return


.::

SendInput {Text}.

return


;::

SendInput {Text};

return


'::

SendInput {Text}'

return


/::

SendInput {Text}/

return


\::

SendInput {Text}\

return


[::

SendInput {Text}[

return


]::

SendInput {Text}]

return


#If


星染浅夏 回复 阿泽同学 23天3小时前 :

感谢,我试试

回复主贴