# 影子输入法
影子输入法是简单、简洁、高度自定义的输入法。取名“影子”,意在效率上发力,让你有不一样的输入,让你指间生花,让你的操作像一片“影子”!影子输入法是开源、绿色、安全的输入法。
# 基础用法
# 基本配置
- 提升权限(UIA):建议勾选,避免管理员用户启动的应用输入法无法上屏。
- 注册系统(TSF):根据个人习惯,如果影子输入法为主力输入法,建议勾选。
# 快捷造词
- 触发热键:Alt + CapsLock
# 模糊音设置
模糊音为发音不标准的用户,根据自己的发音习惯,修正拼音/双拼输入文字内容。
# 进阶功能
# 内置命令管理器
内置命令管理器影子输入法提供的一些内置命令,用于快捷实现一些特定功能,比如魔法字符串、超级命令等。
内置命令管理器中,可以自定义命令名称,以下是我自己的设置规则:
magic = m ; 魔法字符串
run = s ; 超级命令
clip = c ; 剪贴板
# 魔法字符串
魔法字符串可以自定义短语,通过输入关键字来达到快速输入常用字符串的目的。该功能可以代替 AHK 脚本热字串的功能。
在影子输入法中,要使用该功能,需要在进阶选项中勾选 魔法字符串
选项。
定义方法:
打开“词库管理工具”,在 extend / hotstrings
表中定义热字串,如:
key = zh
value = 中华人民共和国
comment = 中国
使用方法:
在影子输入法中文输入状态下输入 magic/zh
(如果自定义了命令名称,则输入 m/zh
),即可直接录入“中华人民共和国”。
# 超级命令
超级命令实际上执行了一个独立的 AHK 脚本,用于完成热字串所无法实现的功能。
在影子输入法中,要使用该功能,需要在进阶选项中勾选 超级命令
选项。
定义方法:
打开“词库管理工具”,在 extend / function
表中自定义脚本。每个脚本的 comment 描述了该脚本的类型。
- {func} :表示内置命令,内置命令在内置命令管理器中有详细描述
- {Script} : 表示标准 AHK 脚本,采用 AHK v1 语法编写
- 没有描述:表示标准 cmd 指令
以下是两个例子:
key:
day
comment:
{func}当前时间
value:
date/yyyy年MM月dd日
该例子调用了内置命令 date
,并指定了日期输出格式。
使用方法:
在影子输入法中文输入状态下输入 run/day
(如果自定义了命令名称,则输入 s/day
),即可直接输入当前日期。
key:
test
comment:
{Script}点击坐标
value:
SendInput, 演示文本。
Sleep, 100
MouseClick, left, 100, 100
Sleep, 100
MouseClick, left, 100, 200
Sleep, 100
MouseClick, left, 100, 300
Sleep, 100
SendInput, {ENTER}
该例子为标准 AHK 脚本,在当前文本框内输入了“演示文本”,并依次点击三个坐标,最后按下回车键。
使用方法:
在影子输入法中文输入状态下输入 run/test
(如果自定义了命令名称,则输入 s/test
),即可直接触发脚本动作。
# 剪贴板
影子输入法可以记录剪贴板历史记录(仅限于文本记录),启用该功能,需要在进阶选项中勾选 剪贴板历史
选项。
使用方法:
- clip/ :显示历史记录
- clip/z :清除剪贴板历史纪录
# 自定义功能
# 修改输入法中英文指示器样式
; 文件路径:Lib/keylist.ahk
; 第660行起
fg:=(!(srf_mode&&srf_inputing)&&GetKeyState("CapsLock", "T")?"A":srf_mode||IME_GETOPENSTATUS()?"中":"英")
ToolTip, % fg, Caret_.X+5, Caret_.Y+30
Btt(fg,Caret_.X+5, Caret_.Y+30,,"style32")
SetYzLogo(fg="中", 0)
目前只是注释掉了,具体如何修改显示样式,后面有空再研究。
# 映射 Emacs 键位
影子输入法,要适配Emacs键位,只需要修改3个按键即可。
esc -> C-g
right -> C-f
left -> C-b
修改方法:
在 Lib / keylist.ahk 文件中,找到 esc / left / right 按键绑定方法,直接替换,或者在对应的方法下边,用 Emacs 键位重新实现一遍即可。
>^g::
If (!srf_inputing){
SetYzLogo(srf_mode:=0, 1)
SetTimer, ToolTipInputStatus, -10
}
Gosub srf_value_off
If (srf_mode&&Escfg=3){
SetYzLogo(srf_mode:=0, 1)
SetTimer, ToolTipInputStatus, -10
}
Return
>^b::
tfzm:="", dwselect:=0
If (!insertpos){
insertpos:=leftcaret(StrLen(srf_all_Input)+1)
} Else {
insertpos:=leftcaret(insertpos)
}
Gosub srf_tooltip_fanye
Return
>^f::
tfzm:="", dwselect:=0
If (!insertpos){
insertpos:=1
} Else {
insertpos:=Min(insertpos+1,StrLen(srf_all_Input)+1)
}
Gosub srf_tooltip_fanye
Return
# 影子输入法与Putty按键冲突
影子输入法默认 Alt+s,Alt+w 这些快捷键绑定了管理功能,与putty冲突,要屏蔽这些快捷键,直接修改 config.json 文件,屏蔽 hotkeys 的所有键值。
也可以直接删掉,如要恢复,从 confit--.json 文件中复制过来即可
"gesture": {},
"hotkeys": {
"!d": {
"Action": "MenuZWin",
"Comment": "\u4EC5\u663E\u793A\u7A97\u53E3\u83DC\u5355",
"FilterMode": "",
"Sep": "0"
},
"!q": {
"Action": "MenuZAll",
"Comment": "\u663E\u793A\u5E38\u89C4\u83DC\u5355",
"FilterMode": "\u641C\u7D22",
"Sep": "1"
},
"!s": {
"Action": "MenuZAll",
"Comment": "\u663E\u793A\u5E38\u89C4\u83DC\u5355",
"FilterMode": "",
"Sep": "0"
},
"!w": {
"Action": "MenuZAll",
"Comment": "\u663E\u793A\u5E38\u89C4\u83DC\u5355",
"FilterMode": "\u9996\u9009\u9879",
"Sep": "1"
},
"!x": {
"Action": "MenuZAll",
"Comment": "\u663E\u793A\u5E38\u89C4\u83DC\u5355",
"FilterMode": "\u6587\u4EF6\u64CD\u4F5C",
"Sep": "1"
}
}