V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
skydrizzle
V2EX  ›  macOS

macOS 多语种输入切换方案征集

  •  
  •   skydrizzle · 2022-02-15 12:43:17 +08:00 · 4030 次点击
    这是一个创建于 794 天前的主题,其中的信息可能已经有所发展或是发生改变。

    困扰了很长时间的一个问题,想跟大家征集一下有没有解决方案,需求如下:

    1. 三种语言输入需求:英文、中文、日文
    2. 默认按 caps 切换英文和中文输入法
    3. 按下某个组合快捷键,切换到其他语种:例如 shift+control+j 切换到日文输入法
    4. 在日文输入法下按 caps 也切换到英文输入法,再次按 caps 切换回日文输入法
    5. 再次按下某个组合快捷键,切换回中文语种:例如 shift+control+c 切换回中文输入法(回到 2. 的相互切换状态)

    P.S.

    • 所有输入法都是 macOS 系统输入法,不希望使用第三方输入法
    • 能利用目前已安装的工具而不需要安装新的工具更好(非必需):Keyboard Maestro ,Karabiner-Elements
    第 1 条附言  ·  2022-02-16 01:02:46 +08:00

    感谢各位贡献自己的方案!但是看下来似乎没有发现完全符合我的需求的。

    关键在于如何使输入法限定于中英、及日英之间用同个快捷键 caps * 切换,其中主要难点在于:

    使用同个快捷键在两种特定输入法间来回切换,需要识别当前的系统输入法状态,目前 Keyboard Maestro 没有提供相应的 Action 接口,于是去 Keyboard Maestro 论坛咨询了一下。

    得到有效解决办法以后,我自己写了一组 Keyboard Maestro 插件,可以完美解决主贴的需求。

    点此到 GitHub 下载

    使用方法:

    1. 使用 Karabiner-Elements 将 F19 映射到 caps **:From key: caps_lockTo key: f19
    2. 下载 多语种输入切换 Macros.kmmacros,并用 Keyboard Maestro 打开并启用
    3. 里面有 3 个 Macro,快捷键和输入法可以按照自己需求调整,注意,其中输入法变量需要用系统内部名称:

    例如(查询方法见 Keyboard Maestro 论坛):

    • 英文 ABC 输入法:com.apple.keylayout.ABC
    • 英文 ABC - Extended 输入法:com.apple.keylayout.USExtended
    • 简体拼音输入法:com.apple.inputmethod.SCIM.ITABC
    • 简体双拼输入法:com.apple.inputmethod.SCIM.Shuangpin
    • 日文输入法:com.apple.inputmethod.Kotoeri.Japanese

    *:为什么要用 caps 键,因为 macOS 默认就是用 caps 切换中英输入,习惯了
    **:macOS 自带的 caps 切换功能时而会失效,所以要用 Karabiner-Elements 映射到不用的 F19 实现 100% 稳定切换。

    第 2 条附言  ·  2022-02-16 18:28:29 +08:00

    Keyboard Maestro 帖子下面有人指出,判断输入状态用 %KeyboardLayout% 变量即可,所以更新第二版 (v2):

    • 重写 macro 脚本,响应速度比之前更快(尤其是快速切换时比较明显)
    • 添加了新的快捷键 shift + option + jshift + option + c (缓解 MBP 键盘与 K3 键盘键位不一致;同样按需修改)

    点此到 GitHub 下载 v2 版

    16 条回复    2023-03-29 21:46:19 +08:00
    Vitta
        1
    Vitta  
       2022-02-15 13:01:23 +08:00
    我用的 hammerspoon
    你说的那俩我没用过。我是 rime, 英文,哈里路亚输入法,其他切哈里没问题,哈里那 caps 是变大写,不会切输入法
    sungnix
        2
    sungnix  
       2022-02-15 13:19:15 +08:00
    我是只保留鼠须管和系统日语输入法,
    鼠须管输入中文和英文,
    在鼠须管里 Shift 切换中英文状态,
    Command + Space 切换输入法。
    djv
        3
    djv  
       2022-02-15 14:57:36 +08:00
    Command + Space 配合 Caps 就能实现吧,我记错了?
    Mintyfrankie
        4
    Mintyfrankie  
       2022-02-15 15:39:14 +08:00
    提供一个我自己用的思路:
    我目前使用的输入法(全原生):简体中文+繁体中文+英文+法语
    配合 Karabiner 更改的 HyperKey 和 kawa (brew install kawa) 实现用 HyperKey + Z/X/C/V 切换到以上任意一个输入法;
    再利用 Karabiner 将轻按右 Shift 键 map 为 F12 ,在系统设置中将其 map 为「切换回上一个输入源」,实现在短时间内需要频繁切换中 /英状态的需求;
    我还安装了一个名为 Input Source Pro 的软件(在 MAS 中安装)可以在切换输入法以后在光标旁显示当前的输入源,能够减少一些心智成本。
    Mintyfrankie
        5
    Mintyfrankie  
       2022-02-15 15:41:39 +08:00
    @Mintyfrankie 如果我没理解错的话,应该这套工作流也可以完美满足你的需求,也基本上没有什么 bug ,就是需要安装一些新的软件。
    ck65
        6
    ck65  
       2022-02-15 17:06:34 +08:00
    我也是中日英三个输入法,切换已经形成了肌肉记忆:如果不记得当前是什么输入法,又看不到菜单栏,就当作是正确的输入法,如果输入法不对手就在大脑反应过来之前按了 Esc + Command-Space 切换到要用的输入法。
    ViolaH
        7
    ViolaH  
       2022-02-15 20:23:51 +08:00 via iPhone
    同中日英,不过我是日文键盘,有「英数」「かな」两个键直接切英文和日文输入法,中文输入法的话设了个「 cmd +かな」的快捷键
    leaves615
        8
    leaves615  
       2022-02-15 22:26:02 +08:00   ❤️ 1
    安利 一个工具 Keyboardholder 输入法自动切换

    http://keyboardholder.leavesc.com/
    ViolaH
        9
    ViolaH  
       2022-02-15 22:46:57 +08:00 via iPhone
    @leaves615 巧了,我就在用你这个方案,还提过 issue
    Jxcrow
        10
    Jxcrow  
       2022-02-16 00:21:12 +08:00
    跟我一样的需求,暂时用的 kawa ,需求都可以满足。
    sprzwty
        11
    sprzwty  
       2022-02-16 01:02:38 +08:00
    @ViolaH 巧了,我也在用这个。前年入了个 108 键,直接用 karabiner 把 f15-f17 设成输入法切换了
    fatelight
        12
    fatelight  
       2022-02-16 02:15:53 +08:00
    自动切换输入法
    czhu
        13
    czhu  
       2022-02-16 08:49:02 +08:00
    没懂需求,mac 左下角不是有个专门切换输入法的 Globe Key ?按下去选自己需要的输入法就行。
    Cuo
        14
    Cuo  
       2022-02-16 12:56:59 +08:00
    以前专门写过脚本,后来和 10 层一样发现了 kawa .
    https://github.com/hatashiro/kawa
    Mintyfrankie
        15
    Mintyfrankie  
       2022-03-30 04:02:59 +08:00 via iPhone
    看到楼主用 Keyboard Maestro 解决了问题;之前我也尝试过 KM 来解决,但这个软件本身确实有些重,加上它的非图形化 macro 效率是有点低,就放弃了。

    最近我又重新静下心来折腾了 Hammerspoon ,发现它的自由度真的很高,可以完美地实现你的需求,切换速度也因为是纯脚本语言而效率很好。如果有需要的朋友我也可以分享一下自己的思路。
    bunny777
        16
    bunny777  
       2023-03-29 21:46:19 +08:00
    我有点没搞懂,keyboard maestro 不是直接有提供,Set Keyboard Layout to “ABC”,这个选项吗?可以一键切换呀?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4938 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:42 · PVG 17:42 · LAX 02:42 · JFK 05:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.