这套输入法切换方案我已经使用多年了,个人认为是 macOS 下最佳的中英文输入法切换方案,这几天有几位朋友询问是如何用 Karabiner-Elements 实现的,我就整理了一下分享出来。
长按或者组合键按左右 Command ⌘ 和 Shift ⇧ 时仍保留原有修饰键功能。
大部分中文输入法都带有中文和英文两种输入模式,再加上系统自带的英文输入法,实际上我们使用的时候会有 3 种输入状态:
而这 3 种输入状态要用两种快捷键在它们之间切换,我相信很多朋友都有在这 3 种输入状态中纠缠不清的困恼。但其实我们只需要中英两种输入状态,有一种英文输入状态是多余的,如果将其去除掉,整个中英文输入切换过程就会简单很多。
一种解决方法是:用奇技淫巧去禁用系统自带的英文输入法,只使用中文输入法来输入中英文。但这并不是很靠谱,因为系统有的地方会强制使用英文输入法,禁用掉英文输入法可能会导致在一些地方无法输入密码等问题。
更好的解决方法是:禁用掉中文输入法的英文输入模式,只使用中文输入法来输入中文,使用英文输入法来输入英文,各司其职,各尽其责。
但是 macOS 默认切换输入法的快捷键( Command ⌘ + 空格 ␣ / Control ⌃ + 空格 ␣)用起来并不是很顺手,很多朋友应该和我一样都是习惯用 Shift ⇧ 来切换中英两种输入状态。因此这个改键方案首先实现了用 Shift ⇧ 来切换输入法,这样在中英输入法之间切换就会方便很多,我也保留了默认的 Command ⌘ + 空格 ␣ 快捷键(可以按需选择是否启用,或者像我一样只启用右 Command ⌘ + 空格 ␣,左 Command ⌘ + 空格 ␣ 是我的 Alfred 快捷键)。
除了这个问题以外,传统的输入法切换还有个痛点:需要先判断当前的输入状态才能决定是否要切换,特别是 macOS 菜单栏的输入法图标并不是很醒目,需要将视焦从打字区移动到右上角菜单栏才能知道现在是什么输入状态,容易打断思路,而且这个过程就像 USB 要两次才能插对一样经常会判断出错。
这个问题的终极解决方法就是给中英文输入法分别设置单独的快捷键,而且最好是一键快捷键,这样打字过程中就不再需要判断当前输入法状态,可以直接无脑一键切换到所需的输入法。 我个人认为最适合担当这组快捷键的就是左右 Command ⌘ 键(左 ⌘ → 英文;右 ⌘ → 中文),在用标准手势打字时,左右 Command ⌘ 可以用左右大拇指很方便地按到,而且具有对称性,容易和中英文输入法建立联系养成肌肉记忆。
Karabiner-Elements 其实是有个 select_input_source
方法可以直接切换到指定输入法的,原本要实现上述的一键切换是挺简单的,几行配置就行。
但是 select_input_source
底层使用的 TISSelectInputSource
macOS 输入法切换 API 长期以来对 CJKV (中文、日文、韩文、越南文)这类较为复杂的输入法的切换存在问题:经常会切换到中文输入法后,菜单栏的输入法图标已经变为中文了,但是打出来的字却还是英文。( Keyboard Maestro 等使用相同 API 来切换输入法的工具都有这个问题。)
因此为了规避这个问题,不得不让 Karabiner-Elements 使用一种稍微复杂点的变通方法来实现我们想要的改键(⇧ → 切换输入法;左 ⌘ → 英文;右 ⌘ → 中文):
F18
。F18
来切换输入法。F18
来切换输入法 → 英文输入法F18
来切换输入法 → 中文输入法这样就间接实现了我们想要的效果,但是这个变通方法只有当系统只有中英两种输入法时才会有效,要不然一键切换时可能会误切换到不是想要的第三种输入法。因此如果你有使用三种或以上输入法,目前这套改键配置并不适用,只有等未来 TISSelectInputSource
API 的问题得到修复(这问题好几年了,我怀疑根本不会修复了?),才能直接用 select_input_source
来实现这种一键切换效果了。
启用全部或部分改键规则。
打开 系统偏好设置( System Preferences )
> 键盘( Keyboard )
> 快捷键( Shortcuts )
> 输入法( Input Sources )
,在 选择上一个输入法( Select the previous input source )
快捷键处,短按 Shift ⇧ 键(此时已被改键为 F18
),将此快捷键修改为 F18
。
修改你的中文输入法设置,禁用掉英文输入模式,或者将初始状态设置为中文,并禁用掉中英文状态切换快捷键,以我使用的搜狗输入法为例:
注:此配置理论上应该支持所有简体中文输入法(输入法语言代码为 zh-Hans
),如果你使用的是繁体输入法,需要手动将配置文件内的所有 zh-Hans
替换为 zh-Hant
。
除了输入法切换改键以外,顺便也分享下我还使用的一些改键配置。
CapsLock ⇪:
左 Control ⌃:
Tab ⇥:
CapsLock ⇪ 改成 Control ⌃ 和 Esc ⎋ 就不细说了,对于有需求的用户,算是较为公认的最佳改键方案了,特别好用,谁用谁知道。
CapsLock ⇪ 改成 Control ⌃ 后,左 Control ⌃ 就功能重复了,而我有时候还是需要用大写锁定键的,所以我就把短按左 Control ⌃ 改成了 CapsLock ⇪。
而左 Control ⌃ 和其它键一起按时,我则是把它改成了一个新的修饰键——Super Key (⌃⌥⌘),相当于同时按下 Control ⌃ + Option ⌥ + Command ⌘。
左手小指区还有个容易按到的 Tab ⇥ 键,我们基本都不会去长按它,所以就可以把它和其它键一起按时改键成另外一个新修饰键——Hyper Key (⇧⌃⌥⌘),相当于同时按下 Shift ⇧ + Control ⌃ + Option ⌥ + Command ⌘。
Super Key (⌃⌥⌘) 和 Hyper Key (⇧⌃⌥⌘) 这两个新的修饰键和其它键组合基本不会和现有快捷键冲突,而且可以很方便地用小拇指一键按到,所以就可以用来定义一些新的快捷键(我主要是用 BetterTouchTool 来设置这些快捷键,Karabiner-Elements 虽然也可以通过写配置文件来实现,但是 BetterTouchTool 有界面可以直接设置会更方便点)。
Super Key(左 Control ⌃)我主要是用来设置一些和窗口布局相关的快捷键(我用的是一台带鱼屏 + MacBook Pro 屏,所以经常需要对窗口进行排列整理),例如:
Hyper Key( Tab ⇥)我主要是用来设置一些常用程序的切换快捷键和一些搜索快捷键,例如:
上文里一键点击导入配置的链接已经失效,有需要的朋友请手动复制下列链接到浏览器打开来导入对应 Karabiner-Elements 配置。
CapsLock / Control / Tab 改键:
karabiner://karabiner/assets/complex_modifications/import?url=https://gist.github.com/gxfxyz/4e0348eed10f7ee0286403ef671494d0/raw/35a8590aac3f2176b777427f243340fcd4a1289d/karabiner_capslock_control_tab.json
2
tinybaby365 2019-05-20 09:22:40 +08:00
太复杂了。只用 Emacs key bindings [control+keys]
|
3
Rsl 2019-05-20 09:43:26 +08:00
我是 caps lock 切换输入法. 专门设置两个键分别切换中英这个思路不错, 我也去弄一下.
|
4
justdoit123 2019-05-20 09:46:59 +08:00 via iPhone
10.14.6 挂了 真是烦人
|
5
devtiange 2019-05-20 09:57:26 +08:00 2
右 shift 平时不怎么用, 用来切换输入法就好了.
楼主搞那么多钟切换方式, 自己不会乱吗? PS: 可以搭配 https://github.com/tekezo/ShowyEdge 中文输入法开启的时候, 在屏幕上显示一条线, 这样能更方便确认当前状态. |
6
TZ 2019-05-20 10:26:14 +08:00
好多热键啊
|
7
Sylv OP @devtiange 实际上我平常只用左右 Command 来切换输入法,已经养成条件反射了,其它快捷键只是最初为了过渡习惯才保留的。
|
8
sunocean 2019-05-20 11:52:04 +08:00
这个思路启发了我, 真的很不错。
@devtiange 这个软件真的很好用。 发现基本在零设置的情况下。 解决了不知道当前输入法是什么的痛点。 目前使用 caps locks + 这个软件 来实现输入法切换。 省去了适应新快捷键的时间。 |
9
20015jjw 2019-05-20 13:27:55 +08:00
space cadet 读一下
|
10
sethverlo 2019-05-20 15:22:38 +08:00
求问楼主,想把 caps 改成 control, 短按 shift 切换中英(自带输入法),长按 shift + 某个键就是大写,这样能改吗……能的话就抛弃搜狗了
|
11
PerFectTime 2019-05-20 15:54:37 +08:00
|
12
EngelEyes 2019-05-20 15:54:41 +08:00
自娱自乐挺好的,有些可能还是要看使用者自己的习惯。
|
13
ooops 2019-05-20 16:21:34 +08:00
楼主,右 command 实在有些难按,我想改成别的键,你的配置要怎么修改?
|
14
unco020511 2019-05-20 17:22:24 +08:00
说实话我到现在都没彻底搞清楚 mac 的输入法切换
|
15
Sylv OP @sethverlo
可以实现的,你导入上面的两个配置文件,然后启用这几个改键: - Tap Shift_L (⇧) → Switch input source (F18) | 短按左 Shift (⇧) → 切换输入法 - Tap Shift_R (⇧) → Switch input source (F18) | 短按右 Shift (⇧) → 切换输入法 - Tap CapsLock (⇪) → Escape (⎋); Hold CapsLock (⇪) → Control (⌃) | 短按 CapsLock (⇪) → Escape (⎋); 长按 CapsLock (⇪) → Control (⌃) 再按上面说明改下切换输入法快捷键为 F18,这样就能实现你想要的效果,如果你不需要短按 CapsLock (⇪) → Esc (⎋),那可以到下面链接找只改 CapsLock (⇪) → Control (⌃) 的配置: https://pqrs.org/osx/karabiner/complex_modifications/#caps_lock |
16
Sylv OP @ooops
你倒入我的配置后,修改你的配置文件: ~/.config/karabiner/karabiner.json 查找左右 Command 的键代码 left_command 和 right_command,把它们替换成你想要的键代码就行。 PS: 右 Command 应该很好按啊,就在空格键旁边,大拇指一移就按到了,你用的不是 Mac 布局的键盘? |
18
szzhiyang 2019-05-21 10:51:32 +08:00 1
|
19
ooops 2019-05-21 10:52:12 +08:00
@Sylv #16 外接键盘,左边 command 还好,空格较长,右边的 command 感觉多隔了一个键。
我遇到另外一个问题是我用清歌已经打出了部分字母,然后切换输入法字母没有上屏。这比较尴尬。。还在尝试中。 |
20
liumengdi 2019-05-21 19:04:24 +08:00
Command ⌘ → 不是把光标移到最右边的快捷键么? 改成切换输入法不会有冲突么
|
22
Sylv OP @liumengdi 😂
“短按左 Command ⌘ → 切换到英文输入法”的意思是把单按 Command 键改键成切换英文输入法的快捷键,箭头是表示绑定什么功能的意思,不是指 Command 键 + 右方向键。 |
24
tchekai704 2019-05-25 22:58:34 +08:00 1
楼主思路不错,trying。
汇报一个 bug,当使用 Microsoft Remote Desktop / Parallels Desktop 等方式访问 Windows 时,shift 会导致无法切换 Windows 下输入法的中英文。需要加入如下配置来排除 shift 的作用范围 "conditions": [ { "type": "frontmost_application_unless", "bundle_identifiers": [ "^com\\.microsoft\\.rdc\\.macos$", "^com\\.parallels\\.winapp" ] } ], |
25
tchekai704 2019-05-25 23:01:01 +08:00 1
另外 hyper key 的思路与我不谋而合,我是用 alfred 来设置的,同时我的 hyper key 不是 tab,而是 option。
理由是 macOS 下的“ option+字母”是输入一些不常用的符号,所以没有任何程序对这个快捷键进行了绑定,不存在任何冲突。 |
26
jijifujiji 2019-10-18 18:03:19 +08:00
楼主我想问下 macbook 在系统里面设置快捷键的时候 是怎么把那个设置为 F18 的呀
我这边只有能按出的键位或者组合键才可以设置 |
27
Sylv OP @jijifujiji 先用 Karabiner 绑定某个键 /组合键为 F18,然后用绑定的键 /组合键在设置快捷键时按下就可以设置成 F18 了。
|
28
jijifujiji 2019-10-22 23:35:55 +08:00
@Sylv 谢谢楼主🙏,搞好了
我还有个问题想问下楼主,就是 我想把切换窗口的 command + tab 替换成 option + tab 应该怎么搞,我照着例子胡乱改了下,不好用,楼主知道正确的应该怎么弄吗 { "description": "Change Alt + tab to Command + tab", "manipulators": [ { "from": { "simultaneous": [ { "key_code": "left_option" }, { "key_code": "tab" } ], "modifiers": { // "mandatory": [ // "command", // ], "optional": [ "any" ] } }, "to": [ { // "key_code": "tab", "simultaneous": [ { "key_code": "command" }, { "key_code": "tab" } ], // "modifiers": [ // "command", // ] } ], "type": "basic" } ] } |
29
Sylv OP @jijifujiji
这样: { "description": "Change Alt + tab to Command + tab", "manipulators": [ { "from": { "key_code": "tab", "modifiers": { "mandatory": [ "left_option" ] } }, "to": { "key_code": "tab", "modifiers": [ "command" ] }, "type": "basic" } ] } |
30
jijifujiji 2019-10-23 10:50:12 +08:00
@jijifujiji
卧槽,楼主碉堡了!! |
31
jijifujiji 2019-10-23 10:50:40 +08:00
@Sylv
好用的一批 |
32
Vendettar 2020-02-09 16:57:42 +08:00
真的🐂🍺
|
33
dofine 2020-02-16 16:25:06 +08:00
> 所以就可以用来定义一些新的快捷键(我主要是用 BetterTouchTool 来设置这些快捷键,Karabiner-Elements 虽然也可以通过写配置文件来实现,但是 BetterTouchTool 有界面可以直接设置会更方便点)
楼主可以介绍下写配置文件咋实现么。。主要是不舍的买 BTT 哈哈哈 |
34
Sylv OP @dofine 用 Karabiner-Elements 设置组合键的话还是有点麻烦的,每个组合键都得单独写配置,我很长时间没弄了,记不清怎么写了,你研究参考下 Manual 吧,不过我还是会建议用 BetterTouchTool 等有界面的程序来设置,会简单很多。
https://pqrs.org/osx/karabiner/document.html |
35
ruooooooli 2020-02-23 16:19:50 +08:00
把窗口移动到左 / 右显示屏
楼主这个是怎么实现的呢 |
36
Sylv OP @ruooooooli 这个我是用 Moom ( https://manytricks.com/moom/) 实现的,有个 Move to Other Display 的功能可以绑定快捷键。
|
37
ruooooooli 2020-02-24 09:48:21 +08:00
@Sylv 感谢
|
38
ruooooooli 2020-02-24 22:45:51 +08:00
@Sylv 试了一下 moom 和我想要的还是不太一样,可能是我没有表达清楚,我其实想要的是向 Ubuntu 一样,把一个窗口移动到另一个桌面 space 🤣
|
39
Sylv OP @ruooooooli 看了下貌似 Moom 和 BetterTouchTool 都没有把窗口移到另一个 Space 的功能。
|
40
ruooooooli 2020-02-25 10:47:05 +08:00
@Sylv 我也发现了,他们都是移动窗口到另一个屏幕上。我目前找到了 sizeup 可以实现这个功能。
|
41
Steven55k 2020-02-29 19:19:25 +08:00 via iPhone
楼主好,我这边点此导入一直显示 failed to connect the serve,下午尝试自己实现了一部分,核心的输入法部分实在没找到解决方案,希望方便的话能单发一下 json 给我!
|
42
Sylv OP |
44
litianqi1995 2020-03-10 00:49:40 +08:00
感谢楼主,推荐 Karabiner 另一个功能 喜欢把外置键盘放到内置键盘上的人 放的不好老会误触,禁用系统键盘了。Karabiner 而且断开置键盘 直接会恢复到自带键盘 非常好用
|
45
dj2rap 2020-03-13 10:14:40 +08:00
楼主,有没有切换隐藏程序的脚本,上面那个挂了
|
47
ruooooooli 2020-04-03 19:34:09 +08:00
加上 Hyper Key 之后,发现 Tab 用起来好不顺手哈哈哈
|
48
helsinglee 2020-10-10 22:08:04 +08:00
@Sylv 新版有点兼容性问题!大写切换无法输入
|
49
Sylv OP @helsinglee 你是什么版本?我是 macOS Catalina 10.15.5 + Karabiner-Elements 13.0.0,目前还是正常工作。
|
50
helsinglee 2020-10-18 23:59:54 +08:00
@Sylv macOS Catalina 10.15.6 + Karabiner-Elements 13.0.0 工作不正常。退回 12.10 ,目前正常使用。
|
51
jijifujiji 2020-11-02 20:01:53 +08:00
“TISSelectInputSource API 的问题得到修复(这问题好几年了,我怀疑根本不会修复了?),才能直接用 select_input_source 来实现这种一键切换效果了。”
这个问题应该就是本来应该出现输入法配置的那块出现...吧,这总是我研究老长时间了,还以为输入法有问题 |
52
sidkang 2021-03-24 17:09:47 +08:00
仍旧 suffer 于 TISSelectInputSource 的 bug,真是无奈= =
|
53
LoneFireBlossom 2021-10-25 16:28:15 +08:00
楼主你好,我想导入配置,但 cloudapp 说“The item owner has been notified that their item has exceeded its view limit.”,没法导入= =是不是得重新开放下载啊
|
54
Sylv OP @LoneFireBlossom
已在第 1 条附言里更新了新的导入配置链接,请查看。 |
55
ohmytime 2021-11-20 20:09:35 +08:00
@ruooooooli 很赞, sizeup 的确能把 窗口移动到另外一个 space.
|
56
Kobayashi 2021-11-26 20:46:30 +08:00
Karabiner 切换输入法是有问题
- select_input_source 基于 TISSelectInputSource, 切换多了会失效。输入法图标变了但是输入法不变。 - left_shift 直接映射 Ctrl+Space 问题是切换频率过快失效,可能需要多次触发 left_shift 才能切换成功。(没搞明白这是个什么 bug ) - 映射 left_shift 到 f13-f19 ,然后在系统设置中配置 f13-f19 为输入法切换快捷键。目前看起来没有以上问题 |
57
Anna1879 2021-12-06 04:06:13 +08:00
非常感谢楼主的维护,很好用。
使用过程中,由于我日常使用`⌘-L + ␣`调用 Alfred ,所以在 Karabiner-Elements 采用了单键切换输入法设置之后,会产生两个效果: 1. 当前输入法为中文时,启动 Alfred 默认输入法改为英文; 2. 当前输入法为英文时,启动 Alfred 默认输入法改为中文; 这就导致无法统一 Alfred 调取的输入法,对 workflow 调用极为不利,还自我增加了一个在 Alfred 搜索中需判断输入法的步骤。 此时,使用 Keyboard Maestro ,设置按下`⌘␣`自动将输入法改为英文即可解决上述问题。 |
58
Sylv OP |
60
LoneFireBlossom 2021-12-09 16:36:12 +08:00
@LoneFireBlossom #53
其实我一直都是需要输入中英日三种语言,所以就没用楼主的方法,导入楼主的方法放在 karabiner-elements 里留着传家( 所以我就老老实实用 Keyboard Maestro 来设置,用左右 CMD 、OPT 键来切换语言。 > 经常会切换到中文输入法后,菜单栏的输入法图标已经变为中文了,但是打出来的字却还是英文。( Keyboard Maestro 等使用相同 API 来切换输入法的工具都有这个问题。) 针对这个问题,其实我觉得这个 BUG 的频率我还能接受。10 次切换有一次会出现吧差不多? 出现问题的时候我就快速按三下切换语言,我是把系统的那个在各个输入法间切换的快捷键设置成了左 OPT (忘了左 OPT 映射成 F 十几了),因为有三个输入法,所以按三下切换键就从中文再次切换到中文,这样的切换是正常的。 |
61
LoneFireBlossom 2022-01-20 21:29:45 +08:00 2
楼主只用两种输入法,但我用三种,所以在这儿补充一下现在我的使用方法。
环境:MBP16 intel Monterey 12.1 、12.2 beta 这七八天来我用的是 kawa ( https://github.com/hatashiro/kawa )来切换输入法。感觉比用 keyboard maestro 来设置要好。 用 keyboard maestro 切换的问题就是楼主说过的,按下快捷键切换中文,系统显示输入法是中文,结果实际上还是英文。 用 kawa 的话没有这个问题,它的问题是我按下切换到中文 /日语输入法的快捷键之后,不能瞬间开始打字,得稍微缓个 0.1 秒左右(总之就是别太快就行)。这个问题比用 keyboard maestro 来切换输入法的问题要轻太多了,所以我的输入体验提升了很多。 别的就没任何问题了。 注意: 用 kawa 需要阅读其旧版项目中的 readme ,新版里不知为何删掉了这段,见: https://github.com/zcbenz/kawa 摘抄如下,我刚开始没设置这个,结果体验和 keyboard maestro 的方法一样。设置之后就没有 keyboard maestro 的问题了。 # For CJKV input sources There is a known bug in the TIS library of macOS that switching keyboard layouts doesn't work well when done programmatically, especially between complex input sources like CJKV. Kawa workarounded this bug by programmatically doing the followings: Select a target input source If the source is CJKV Switch to the first non-CJKV input source Return to the target input source by sending Select the previous input source shortcut Thus, to activate the workaround above, the following restrictions should meet. There is at least one non-CJKV input source in the input source list The Select the previous input source shortcut should be enabled and set to something It can be set in System Preferences > Keyboard > Shortcuts > Input Sources |
62
CZCaptain 2022-06-23 13:26:57 +08:00
哈喽楼主好
目前我的方案是这样: 短按 caps→esc 长按 caps→command 可不可以将你提到的短按左 command 切换至英文输入法这个配置融合到短按 caps→esc 这里面去,这样在全局环境下,只要按下 caps ( esc ),就能退出插入模式,并且自动切换输入法为英文? 这是我目前的 karabiner caps 键配置,不知道可不可改 { "description": "Change caps_lock to Command if pressed with other keys, to escape if pressed alone.", "manipulators": [ { "from": { "key_code": "caps_lock", "modifiers": { "optional": [ "any" ] } }, "to": [ { "key_code": "left_command" } ], "to_if_alone": [ { "key_code": "escape" } ], "type": "basic" } ] }, |
63
Sylv OP @CZCaptain 你好,我很久没折腾过 Karabiner 配置了,已经生疏了,所以我也不太清楚你的需求能不能用 Karabiner 实现,抱歉。
|
64
helsinglee 2022-10-24 10:54:09 +08:00
@CZCaptain 也许不行,发现改建后的修饰键有点问题。
|
65
bnpysse 2023-05-05 14:40:48 +08:00
我用清歌五笔输入法,好像不起作用呢。
另外,我使用了 Manico ,是不是与使用它有关系?因为使用了 Manico ,从而造成了 Karabiner 不起作用? |
66
bnpysse 2023-05-06 08:20:14 +08:00
找到原因了,我需要在 Karabiner 当中把 Left-Shift 以及 Right-Shift 映射成 F18 才可以。
我还是想保留长按 Shift+字母的大写功能,这个对我来说,我还是觉得很用的。 其它的都好,就是想保留一下 Shift 的长按功能,怎么改呢?有了解的朋友么?谢谢! |
67
capgrey 2023-07-25 23:14:27 +08:00
感谢楼楼主!
|
68
LoneFireBlossom 2023-09-19 00:02:40 +08:00 2
@LoneFireBlossom
现在已经不需要使用 kawa 了。 使用新版 input source pro ,设置切换输入法的快捷键,并打开故障排除-修复输入法切换问题。就没有 CJKV 语言的问题了 |
69
LoneFireBlossom 2023-10-10 17:44:38 +08:00
@LoneFireBlossom 不过目前试了试还是不如 kawa 好用,有的时候还是会出现显示切换到中文但是实际上还是英文的问题,等再更新吧
|
70
Polygene 326 天前
蹲一个 Win 平台左右 Alt 键切换中英文的方案,这个方案我在 macos 上试用之后感觉确实很好用,输入效率提高好多。
|
71
zmxnv123 289 天前
如果使用三种输入法,中日英三语,只使用 f18 的话只能在两种输入法之间切换,所以有什么办法使用 TISSelectInputSource API 吗。
|
73
zmxnv123 289 天前
@LoneFireBlossom 老哥, 故障排除-修复输入法切换问题 在哪里打开?我也是中日英三种输入法切换。
|
74
LoneFireBlossom 289 天前
@zmxnv123 #73 我上面写了啊,还是得用 kawa
|
75
zmxnv123 289 天前
@LoneFireBlossom 看了下 kawa ,原来是用了 option+control+space 快捷键。我直接绑到 karabiner 上去了,没有用 kawa ,目前使用没啥问题。https://gist.github.com/nzooherd/9e83731c70ba68f87d8c58f267ccae19
|
76
LoneFireBlossom 289 天前
@zmxnv123 #75 根本不是 kawa 用什么快捷键的问题……是 kawa 会通过「在切换到中文输入法时先切换到英文输入法再切换到中文输入法」来解决了这个 BUG
|
77
zmxnv123 289 天前
@LoneFireBlossom 不管怎么说,我看你那个链接知道了 option+control+space 这个快捷键,绑在 karabiner 上也能用,目前没啥问题。
|
78
imkerberos 37 天前 1
@devtiange 受你的推荐的软件启发,用 hammerspoon 和 limelight 实现了根据输入法状态变化 limelight 的颜色,现在真是舒服啊!
[收藏的 limelight 源代码]( https://github.com/imkerberos/limelight) ```lua local hs = hs hs.keycodes.inputSourceChanged(function () if hs.keycodes.currentSourceID() == "com.apple.keylayout.US" or hs.keycodes.currentSourceID() == "com.apple.keylayout.ABC" then print("==== change to US ====") hs.execute("/nix/store/ahqry8gchidl4mpag5j7lzp8a0md7cq7-limelight-0.1.0/bin/limelight -m config active_color 0xFF7F9200") else print("==== change to CJK ====") hs.execute("/nix/store/ahqry8gchidl4mpag5j7lzp8a0md7cq7-limelight-0.1.0/bin/limelight -m config active_color 0xFFFF2F92") end end) ``` |
79
imkerberos 37 天前
|
80
phoulx 31 天前 1
@LoneFireBlossom #76 参考你引述的 kawa 的方法,karabiner 也可以配置多输入法下指定切换,因为`to/to_if_alone`对应的 value 是一个列表,会顺序执行列表中的动作。所以先切换到指定输入法、再连按两次「选择上一个输入法」的快捷键(这里映射为 F13 )即可:
```json "to_if_alone": [ { "select_input_source": { "language": "^zh-Hans$", "input_source_id": "^im\\.rime\\.inputmethod\\.Squirrel\\.Hans$", "input_mode_id": "^im\\.rime\\.inputmethod\\.Squirrel\\.Hans$" } }, { "key_code": "f13" }, { "key_code": "f13" } ] ``` 实测延迟足够低(体感不足 0.1 秒),不用刻意等待再输入,唯一的影响是右上输入法图标会轻闪一下,因为相当于快速切换了两次 |
81
LoneFireBlossom 31 天前
@phoulx #80 用 rime 没这个 bug 吧?应该是只有 Mac 自带的输入法才有这个 bug
|
82
phoulx 30 天前 via iPhone
@LoneFireBlossom 用 rime 也会遇到这个 bug ,估计只要属于 zh*都有
|