中文输入法状态问题的解决方案汇总

由于不需要特殊硬件,可以直接在主流键盘上使用,基于英文键盘的中文输入法成为了绝对的主流。要在英文键盘上输入中文,不可避免地要影响按键的原有功能,然而这些原有功能又难以舍弃,比如输入英文、触发一些热键,这需要一种方案予以解决。

有状态方案

几乎所有的中文输入法都引入了中英状态,用于在输入英文和输入中文间切换,但状态的管理是一件麻烦事。

单键双向切换

通过单个按键(如 Shift 和 Ctrl+Space)在中文和英文状态间进行切换。具体按键可通过输入法设置和“输入语言热键”进行更改,也可使用 AHK 重映射为更特殊的热键。或者也可以使用外挂输入法(如影子输入法),在不启动时完全不影响现有热键。

关于获取中英状态的方法:

状态指示

为了避免在输入后才发现状态错误,不得不重新输入,可以在输入前显示出当前状态,提醒用户进行切换。

任务栏指示
  • 主流输入法
光标指示
浮窗指示

Mac:

标题栏指示
  • 拼音加加

试错重输

解决状态错误问题的另一种方法是在发现状态错误后,触发程序切换状态并自动重新输入。

双键单向切换

在每次输入前通过两个按键中的一个来指定状态,消除不确定性。

  • 添加英语键盘,并在“输入语言热键”中进行相应设置

Mac:

修饰键

通过修饰键改变组合按键的状态,因为会影响一只手的活动,只适合用于少量输入。

长按

通过长按触发某键在相反状态的功能。

脚踏板切换

通过脚踏板切换中英状态。

自动切换

根据输入

  • 输入数字后按句点键时自动使用英文句点

根据进程

根据当前焦点窗口所属进程,按指定规则切换到指定状态。

Mac:

根据窗口

Mac:

无状态方案

不得不引入中英状态的本质原因是按键不够,那么只要增加了足够的按键,状态也就不再必需了。

双键盘

同时使用两个键盘,一个输入英文,一个输入中文。缺点是需要手的大量移动。

自制键盘

4 Likes

我觉得这可以进网络黄页板块作为维基贴了…… 同时感叹本论坛用户人均大佬,为自己拉低了水准愧疚……

网络黄页板块确实更合适,已经挪过去了,不过后来挪的帖子似乎不会被加上公共编辑按钮。

一般输入法切换主要就是三组快捷键:输入法切换、全角半角切换、中英文标点切换。

这三组快捷键一般都是用左侧的shift\ctrl\alt\space几个按键的组合(虽然可以更改,但是余地很小,windows系统本身就限制了,并不是可以完全自由定义)

但是这几个按键的组合与很多软件的快捷键是冲突的,尤其严重的比如与Adobe系列的冲突。

**

  • 所以我想把这几个快捷键解放出来,有没有使用bat或者cmd或者ahk切换的方法?

**

比如几条命令写成一个bat或者cmd文件,这样可以把右侧的shfit、ctrl、alt三个键定义成执行这三个文件。(用windows本身的输入法快捷键定义是没法用右侧的三个键的。)

我对输入法切换,主要就是这个需求,今天下午还在小众论坛上搜了半天“输入法切换”关键字,又谷歌了半天“switch ime”国外的网站,都没有找到解决办法。

关于光标提示,我觉得这个功能挺不错的,不过可以稍微调整一下,不必中英文都提示,完全可以英文状态使用默认光标,中文状态加个“中”下角标或者干脆换个颜色的光标。

最简单的实现方式是把切换快捷键设为几乎不用的组合键,然后用 AHK 重映射你实际想用的快捷键到这个组合键。

仅更改类别确实不会更改为维基贴,具体怎么改我也想不起来了……编辑里可以折腾看看,实在不行就召唤小青蛙稻米鼠他们……

目前在用的就是这个方法,但是总觉得很不优雅也不舒服。

(比如在windows系统遇到切换音频输出设备这个切换类的问题,常规的操作是开始-控制面板-声音-选择设备-设为默认值-确定。但是用了nircmd.exe,就转化为cmd里执行一条命令即可。每次从外放音箱切换到耳机或者其他设备,都只需要按一个按键就可以。这就很舒服。)

这个貌似就是

那么现在有了

看了这个贴才意识到KeyboardHolder更新了,加了很需要的功能,太棒了

windows 下有类似 KeyboardHolder 这种每次切换窗口后自动切换为英文输入法的软件么

image

勾选上图选项后, 如果默认输入法是英文, 新开窗口就是英文.

会记住每个窗口的输入法状态.

但是这个选项多数人都会关, 因为会更乱.

image
也可以只用一个输入法,设置输入法对新开窗口默认使用英文状态

这种跟随启动程序或者跟随窗口自动切换输入法的操作确实是会更混乱,而且不实用。

因为对中文电脑用户来说,即使在同一个窗口或者同一个程序下,都会面临中英文频繁切换的问题,而不是说对某个需要输入字符的程序或窗口,我就肯定只用英文或只用中文。

这个是记住每个窗口的状态,或者说是记住上一次的输入法状态,我需要的是每次当我想输入时(切换过窗口后),输入法的状态都是一致的,即始终都是中文或始终都是英文
mac 上用KeyboardHolder很容易实现
windows上研究了一下,变相实现了,但是只能默认中文,和习惯不一致,但也只能按这个来改习惯了。

影子输入法可以默认英语,但是影子输入法不太稳定好像

这软件也是 2 年没更新了,暂时不去尝试了

感觉 ahk 能实现 切换窗口或无输入一段时间后 关闭输入法的功能,但是没找到现成的,只看到一个相关的,但是和我的需求不太一致

多年来我都养成了一个习惯:输入完中文立马按Shift切成英文,需要输入中文的时候再切换成中文,所以我已经不太需要这种了 :smiling_face_with_tear:

1 Like

我觉得还行,虽然停更好久了……不稳定的时候按快捷键重启影子输入法

从邮件推送里看到这个帖子, 点进来看了半天, 不是很明白在说什么… Anyway, 我自己在win10是这样设置的:

Win10系统默认alt+shift两个键同时按一下, 就会切换输入法 (就这2个键, 谁先谁后都可以, 一起按也可以)。而我总共只有两个输入法: 微软拼音和默认英文。所以我只要按一下就可以来回切换。

同时我把微软拼音设为默认中文, 并且把任何切换英文的快捷键都勾掉, 这样微软拼音永远无法输入英文。
image

对我来说, 问题完美解决。没装第三方软件, 也没装第三方输入法