dano
1
背景: 系统windows,长期用惯了小狼毫,所以其他中英文输入法都删了。
obisidian vim mode有些插件试图解决在按Esc键等切换vim模式时的中英文切换问题,但是,windows下跑不通。
试着用autohotkey脚本,能用,但是输入法切换即使成功仍然有点慢,何况有时候还不成功。
中文输入法如小狼毫本身left shift就可以直接切换中英文输入模式,所以很好用。
只是autohotkey无法简单判断现在输入法处于中文还是英文状态,
有没有类似经验的朋友,看怎么用更好的用ahk脚本来解决这个问题?
有看到有人用定制化配置rime小狼毫输入法,但是在我这里没有成功。难道是windows版本仍然不支持这种配置的问题吗?
可以通过只使用 小狼毫中文+禁用输入法 模式
,实现识别状态
之前配置小狼毫切换英文上屏功能的时候用到过,我找找相关资料
autohotkey判断小狼毫状态:
总共有三个状态,小狼毫中文/小狼毫英文/禁用输入法,其中前两个状态系统无法区分,后两个可以用以下脚本区分,即获取"当前是否启用输入法"
;-----------------------------------------------------------------------------------
; Code snippet adapted from [@お腹いっぱい。]
; Available at: [https://img.atwiki.jp/mousegestures/attach/34/18/AutoHotkey%20%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%20part4.htm]
;-----------------------------------------------------------------------------------
; IMEの状態の取得
; 対象: AHK v1.0.34以降
; WinTitle : 対象Window (省略時:active window)
; 戻り値 1:ON 0:OFF
;-----------------------------------------------------------------------------------
IME_GET(WinTitle="")
{
ifEqual WinTitle,, SetEnv,WinTitle,A
WinGet,hWnd,ID,%WinTitle%
DefaultIMEWnd := DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hWnd, Uint)
;Message : WM_IME_CONTROL wParam:IMC_GETOPENSTATUS
DetectSave := A_DetectHiddenWindows
DetectHiddenWindows,ON
SendMessage 0x283, 0x005,0,,ahk_id %DefaultIMEWnd%
DetectHiddenWindows,%DetectSave%
Return ErrorLevel
}
我一般是将小狼毫 default.yaml 中的 ascii_composer 部分都设置为 noop,然后用ahk触发系统的"开关输入法"快捷键。
不知道能不能帮到楼主,楼主可以详细描述一下是什么切换问题
dano
4
我也用这个imeset函数,但是他是针对切换不同语种的输入语言,所以对rime输入法中的中英切换不起作用(default按shift那个响应)。大概因为日文不需要这种功能,日文键盘原生就有一个键专门实现罗马字和假名的切换。
附带还有一个问题是,ahk呼出ime_set时,似乎会很慢,人能感觉出迟钝,按道理调用windows api应该不至于,可能是我笔记本烂吧。
至于rime,我都在appdata下的数据目录中加xx.custom.yaml,
但是,。。。。无效
我的意思是只使用 小狼毫中文+禁用输入法 模式
,就可以通过win的"开关输入法"快捷键切换了(默认是Ctrl+空格)。如果要用其他键,可以用ahk映射到其他键,而不用小狼毫内自带的shift切换。
楼主能不能详细描述一下需求?因为我不用vim,也方便其他用户理解
dano
6
我明白你的意思,用别的软件方法快捷键来完成切换。
你不用vim所以不知道。
vim有几个模式互相转换,正常模式和选择模式下,按键其实都是命令,所以不需要输入中文;只有在插入模式下,才会需要输入中文。
这几个模式的切换按键比较固定,就是esc,i,a这些。
如果能在rime下切中英文模式,就不需要额外再去按一个快捷键,直接根据模式达到自动切换。
顺带说一句,我用vim模式是因为我把开关功能全部转到了左手键盘区,相比传统方法,按键少(任何编辑功能基本只要按1-2键),定位快,配合右手鼠标和语音输入,对手的压力小很多。
1 个赞