一次摆脱搜狗输入法的尝试
202409 更新
经过了大概 4 个月的反复摆弄,尝试过 Karabiner-Elements(见下文)和鼠须管两套方案,最后仍然没有得到媲美先前搜狗输入法所带给我的体验(但其实 Windows 上自带的微软输入法就可以完美满足我的需求,可惜 macOS 自带的并不能)。使用前两套方案(也就是本文曾经所建议或尝试使用的方案)的痛点总结起来就是
- 鼠须管和 macOS 自带的输入法的词库都十分匮乏,尤其是鼠须管,经常会给出一些意想不到的建议(不存在的词语或者生僻字),需要手动纠正。在一些常用词语上也表现不佳。当然,在后来我发现词库也是需要配置的,且已经有非常成熟的 rime-ice 等仓库的存在。对于 macOS 自带的输入法,我认为其智能程度要差于 iOS 上的自带输入法(我很少会萌生在 iOS 上安装第三方输入法的想法)。
- 鼠须管的配置有一定的门槛,且有新的使用逻辑,但相关的资料与解释甚少。一般的配置是可以通过参考来完成的,不算很困难(虽然还是要折腾就是了)。这也是为什么我一直将其认定为一种包含了作者个人的「艺术观点」、「意识形态」或者「哲学」的软体。但在有些方面则有问题:例如,针对关闭不同窗口固定默认的语言模式(中/英)这一需求,我搜索遍互联网+自己摸索到最后都没有解决,因此在 IDE 内编写代码时,在不同的窗口经常需要额外的按一次语言切换键。
- 搜狗输入法的所谓漏洞所带来的问题并没有想象中的那样大,且存在 LuLu 这样的屏蔽网络通讯的软件,因此我认为在这个问题上(对我而言)本地的搜狗输入法或许是最优解。当然,目前根据我个人的感受来看,我并没有使用 LuLu 屏蔽搜狗输入法的通信,因为我打出来的字并没有什么可追踪的内容。
所以在这里一如既往地变卦以后,下文的内容仅供参考,已经不再代表我当前的看法了。
本文中部分内容仅适用于 macOS 系统。其它系统的等价操作可自行探索。
今天在哔哩哔哩上偶然刷到了一个视频 BV1KK4y1B7Nr,标题为「某品牌手机输入法明文上传隐私!官方:承认+发补丁」,本着好奇心点进去把视频看完了。大体内容是作者通过局域网抓包,发现某系统自带的默认输入法会通过未经加密的 HTTP 协议传输用户输入的文本,具有潜在的信息泄漏的风险。
虽然从技术层面来看,整件事情最大的问题出在没有使用 HTTPS 而是直接使用了不安全的 HTTP 上,但是普通用户以及视频整体上强调的是,你所输入的文字实际上是会被传输到服务器上处理并且共享的。在先前使用输入法的过程中,我从来没有考虑到这一点,大概也是出于对厂商的无条件信任,认为数据的分享大概仅限于一些点击链接或者广告的操作,并不会赤裸裸地窥探用户的日常。
然而,现在却发现事实并非如此,几乎每天都会用到,并且很大概率会与个人隐私挂钩的输入法也在暗中对用户进行窥探。
视频整体并没有透露是哪一个输入法,并且提及的都是「系统内置输入法」,但是通过一闪而过的「橙色主题色」画面以及弹幕里的提示,和随即作者给出的漏洞页面来看,这的确是搜狗输入法搞的鬼。
作者给出的阿里云漏洞库页面
作为很早以前就已经出现的输入法,搜狗伴随了我很多年。如今看见上面的字数统计,已经输入了一百多万字,而事实远不止这这一些。但是回想起先前数次自己的喜好都被应用们十分精准地猜到,再加上如今这一视频的披露,我想是时候应该说再见了。
老牌、习惯,所以选择。
实际上用搜狗输入法是一种习惯性的选择。
在 iOS 上,使用系统自带的键盘就已经足够了,甚至换成其他输入法还会感觉很不习惯。
在 Windows 上,微软自带的输入法也能满足我的需求。而 macOS 是出了名的特立独行,很多不同于 Windows 的键盘操作我懒得去适应,于是直接安装了搜狗输入法,非常方便。如今我也毅然选择换用其它输入法。可是哪些输入法信得过呢?或许只能拜托开源社区了。
选择其它输入法
开源的解决方案——鼠须管 ㄓ
先前略有耳闻「鼠须管」输入法,于是马上下载来体验。在 macOS 上其专门的客户端叫做 Squirrel,应该就是鼠须管本管了。上手起来并不如搜狗这类输入法容易,先是其默认情况下只能输入繁体中文(不是缺点,整个项目中作者个人的语言风格特点挺突出的),如需输入简体中文,需要额外的设置。
当我点开设置时,弹出来的并不是 GUI,而是一个目录,里边放着几个配置 yml
文件。这顿时让我(或者旁人)觉得这个输入法很酷。随手翻阅了一下它的 Wiki,发现其能拓展的功能太多太多。这对于以前不疲于鼓捣的我来说可能是非常具有吸引力的一款作品,而当今我大概只能找出一些零碎的时间去特地鼓捣和研究。于是鼠须管被我搁置了,不过我并没有将它卸载。
我相信开源的东西永远是最干净的。
系统自带输入法
经过辗转我又来到了系统自带的输入法上。虽然这次事端就是系统自带输入法,但我对 macOS(至少在输入法这一个方面)还是有一定信心的。系统自带输入法的颜值不错(包括微软拼音),适合我这种性冷淡审美使用者,但 macOS 上的相关操作实在是过于非主流了:
- 长按Caps Lock切换英文的大小写
- 按下Caps Lock切换输入法
- 使用 Windows 的习惯中 Caps Lock 只是用来按一下切换大小写的
- 按下🌐亦能切换输入法
- 按下Control+空格亦能切换输入法
- Windows 上有类似的快捷键Win+空格
而且看来第二条也是沿用已久的果式习惯,因为 MacBook 的机身键盘上的 Caps Lock 的位置并不是写的 Caps Lock,而是「中/英」。此外,macOS 上也没有使用Shift来切换中英输入法的习惯。
系统设置中有相关快捷键的修改设置,但是限制很多。
- 首先,其只能修改Control+空格这一快捷键,而还有 Caps Lock 这个按键需要整顿。
- 其次,单个Shift按键在系统设置中并不是合法的,因此无法设置。
于是几经搜索找到了 macOS 上自定义快捷键的神器——Karabiner-Elements,其自身甚至是 Public Domain 的软件。其可以实现将一个快捷键映射到另外一个快捷键来实现完全自定义快捷键的效果。
1. 实现Shift切换中英文输入法
与搜狗输入法不同,其Shift 切换是在输入法内部进行。系统切换到搜狗输入法以后,按下 Shift 实际上是在搜狗输入法自身的中英文模式中切换,与系统无关。下面要操作的是使 Shift适用于系统的两个输入法之间的切换。
接下来的逻辑是将切换输入法的快捷键绑定到一个平时不会用到的快捷键上面,然后再通过 Karabiner-Elements 将Shift 映射到这个快捷键上。考虑到在完整的键盘上会出现高于 F12 的按键(从 F13到 F19),而 MacBook 自身的键盘并没这些键,所以从中挑选一个即可。
那么如何绑定到F13呢?幸好俺有一个外置的蓝牙键盘。键盘上标有 Windows 系统的 PrtSc、ScrLk 和 Pause,这些键其实在 macOS 上分别对应了 F13 到 F15。临时连接上蓝牙键盘,在绑定页面按下 PrtSc,就能将操作与 F13 绑定。
将切换到上一个输入法的快捷键设置为 F13
接下来用到 Karabiner-Elements 的映射功能,将Shift 映射到 F13即可。这一切通过在 Karabiner-Elements 的 Complex Modifications(复杂修改项)中编写一个简单的 JSON 描述文件来实现。
{
"description": "Press LShift alone produces F13",
"manipulators": [
{
"from": {
"key_code": "left_shift",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"key_code": "left_shift"
}
],
"to_if_alone": [
{
"key_code": "f13"
}
],
"type": "basic"
}
]
}
应用以后,按下左Shift相当于按下了 F13,于是切换了输入法。此时如果输入法只有系统自带的中文和英文,就产生了中英切换的效果,类似于使用搜狗的体验。
2. 实现 Caps Lock 短按切换大小写+长按无效果
系统本身的设置里,对 Caps Lock 有两个可以配置的地方。一个是在 Modifier Keys(修饰键)里的重定向功能,这个显然用不到,Caps Lock 依然需要保留其本身的功能。另一个是在输入法全局配置里的「切换输入法」功能开关。
重定向功能
切换输入法功能开关
直觉告诉我,这个「切换输入法」功能开关是需要关掉的。关掉以后,Caps Lock 键的用途就只有切换大小写了。美中不足的是在中文输入法下按下 Caps Lock 所做的并不是切换到英文大写,而是临时切换到英文模式。这一点暂时没有想到怎么解决。
此外,如果只是想要禁用长按切换大小写,而保留短按切换输入法,可以参考下面的 JSON 内容。来自 Ask Different 社区上的一篇回答。
{
"description": "Caps Lock: press -> Caps Lock; long press -> no effect",
"manipulators": [
{
"from": {
"key_code": "caps_lock"
},
"to_if_alone": [
{
"key_code": "caps_lock"
}
],
"type": "basic"
}
]
}
这里的 to_if_alone
就是长按后的效果。将其指定为 Caps Lock 本身,大概就可以实现无效化?
后续体验
在摆脱了具有隐私泄漏风险的搜狗以后,使用起来踏实很多。希望将来不要再莫名其妙发现自己被精准到不能在精准地推送了。虽然没有理由 100% 信任微软拼音和苹果自带的输入法,但好歹都是上个世纪做过操作系统的大科技公司,且在安装过程中都有隐私相关的选项,只要都选择「否」或者「拒绝」提供分析信息,大概就能够避免自己输入的信息被利用······
当然,我依然相信开源社区是最可靠、最透明的。
其实除了更换输入法以外,还有另外一种选择,即使用 LuLu 等软件来屏蔽输入法软件对互联网的访问,毕竟一个输入法需要什么互联网呢(一些网络热词倒是需要网络来更新,就看个人愿不愿意用隐私来换网络热词的精准提示了)。这招大概很难奏效,因为我甚至在应用程序列表找不到搜狗输入法。