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

BigSur 下目前可行的单键切换输入法方案

  •  
  •   honjow · 2020-09-09 17:31:46 +08:00 · 5128 次点击
    这是一个创建于 1547 天前的主题,其中的信息可能已经有所发展或是发生改变。

    macOS 的中英输入法切换对我而言一直是个老大难问题,感觉总是无法准确知道自己目前的输入语言,以及能准确快速地切换到自己需要的输入法

    好在后来接触到 karabiner,搞了一份右 cmd 切换中文,右 shift 切换英文的方案,简洁明了,也不影响自身组合键功能。

    但是目前 BigSur 下 karabiner 用不了了,然后感觉又回到了输入法各种混乱的时期。

    前两天发现 BigSur 下 hammerspoon 好像是正常运行的,并且好像这货也能做按键映射操作。于是翻了两天资料教程。终于找到一篇和我需求比较接近的 https://blog.blahgeek.com/IMLight/

    经过一番折腾(指查 hammerspoon 的 api 文档以及临时学习 lua 语法),终于初步实现了。

    代码主要为两个 lua

    keyMap.lua

    主要修改自上面提到的那个帖子的代码,将其对象化,因为后面要两个实例跑,对应两个映射操作。因为对 lua 不熟悉,写得可能比较丑,好在能用

    singleKeyChangeIme.lua

    定义输入法切换以及映射按键等

    用法 在 hammerspoon 的 init.lua 添加 require "singleKeyChangeIme" 引用即可。

    第 1 条附言  ·  2020-09-10 11:39:52 +08:00
    Karabiner 的新版已经支持 BigSur 了,测试了下功能基本都正常,之前的配置也直接用,不过官网说 beta6 下重启后需要再次安装驱动。
    这个 hammerspoon 实现的方式,经过一段时间使用,有时快速切换的情况会没反应,总之其实还是没 Karabiner 那样好用,大家有需求还是搞 Karabiner 吧
    23 条回复    2021-12-06 04:16:20 +08:00
    wyx119911
        1
    wyx119911  
       2020-09-09 19:52:03 +08:00
    一直用 keyboard maestro 。但是有 bug 会偶尔切换失灵
    honjow
        2
    honjow  
    OP
       2020-09-09 20:22:47 +08:00
    @wyx119911 keyboard maestro 用得不多,感觉自己不太会配置,或者只是我更习惯至今编辑配置文件的方式。我这个脚本用了一天,也碰到偶尔没反应的情况,不过大体还好
    thet
        3
    thet  
       2020-09-09 22:42:41 +08:00 via iPhone
    自带的中英切换不能用吗
    keyv
        4
    keyv  
       2020-09-09 22:47:31 +08:00 via iPhone
    我把切换的按键放到 touch bar 上了,替换掉原来 siri 的位置。
    Cuo
        5
    Cuo  
       2020-09-09 23:26:33 +08:00   ❤️ 1
    kawa 可以给每个输入法指定快捷键,很适合多语言用户
    shoujiaxin
        6
    shoujiaxin  
       2020-09-09 23:52:04 +08:00 via iPhone   ❤️ 1
    搞这么复杂。。。Caps Lock 切中英文有什么问题吗
    BearD01001
        7
    BearD01001  
       2020-09-10 00:09:09 +08:00 via iPhone
    @shoujiaxin 表示这个按键切输入法经常失效
    lslqtz
        8
    lslqtz  
       2020-09-10 00:15:02 +08:00
    一直用 caps lock 和 control+space……
    Procumbens
        9
    Procumbens  
       2020-09-10 00:17:04 +08:00
    System Preference -> Keyboard -> Input Sources -> Show Input menu in menu bar & Use the Caps Lock key to switch to and from U.S. (press and hold to enable typing in all uppercase.)
    中文系统下应该是:系统偏好设置->键盘->输入源,勾选在菜单栏显示输入菜单以及使用 Caps Lock 键来切换不就可以满足需求了嘛……
    honjow
        10
    honjow  
    OP
       2020-09-10 00:39:47 +08:00
    @shoujiaxin
    @thet 几位可能是主要使用系统自带输入法吧
    只能说需求和习惯不一样了,能一个键准确切换到需要的输入法,完全不用关心当前什么输入法对我而言是最好的。
    Contextualist
        11
    Contextualist  
       2020-09-10 02:46:39 +08:00
    Karabiner 的作者正在用 DriverKit 写新版本( Big Sur 可用): https://github.com/pqrs-org/Karabiner-DriverKit-VirtualHIDDevice
    @honjow 要不要试试毒。
    sinxccc
        12
    sinxccc  
       2020-09-10 02:52:09 +08:00
    我有一个 plist 放在 ~/Library/LaunchAgents 下面,直接把右边的 cmd 映射成了 F16 来切换输入法。
    honjow
        13
    honjow  
    OP
       2020-09-10 03:09:29 +08:00
    @Contextualist 明天试试
    20015jjw
        14
    20015jjw  
       2020-09-10 03:34:02 +08:00 via Android
    control space 我觉得很好用
    主要是因为我的 caplocks 是 dual role control esc
    Contextualist
        15
    Contextualist  
       2020-09-10 05:03:29 +08:00
    @honjow 他们官网链接里的信息或许更有用些: https://karabiner-elements.pqrs.org/docs/macos-big-sur/
    我自己没试过,祝你好运了!
    tsohgdivil
        16
    tsohgdivil  
       2020-09-10 06:12:04 +08:00
    哭了,怎么 karabiner 又不能用了。楼主试用完以后能够分享一下么
    tsohgdivil
        17
    tsohgdivil  
       2020-09-10 06:15:05 +08:00
    看了一下 karabiner 的官网,似乎现在的暂时不可用是 Big Sur 系统本身的 bug 导致的:
    Important Notice
    macOS Big Sur Beta 6 has a very serious DriverKit issue.
    Karabiner-Elements will stop working after restarting your Mac due to the issue.

    You have to reinstall the driver by the following way every reboot on macOS Big Sur Beta 6.
    honjow
        18
    honjow  
    OP
       2020-09-10 10:49:51 +08:00
    @Contextualist 试了下,好像可以用,不过官网说的重启要重新安装驱动的情况,因为还没重启,不知道究竟需不需要
    typetraits
        19
    typetraits  
       2020-09-12 21:51:08 +08:00
    hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x70000006E}]}'

    CapsLock 映射为 F19,然后改快捷键里面的切换输入法就可以了
    不需要安装任何第三方工具
    honjow
        20
    honjow  
    OP
       2020-09-14 10:26:28 +08:00
    @typetraits 还是有点区别的,我的需求是一个键绑定一个输入法,不是一个键循环切换
    Anna1879
        21
    Anna1879  
       2021-12-06 04:13:45 +08:00
    强烈推荐 [单键切换输入法]{t/565667#;},20211206 Monetary 依旧有效,记得下载完最新配置在保持系统仅有中英两种输入法的前提下系统切换键更换为 `F18` 即可。
    Anna1879
        22
    Anna1879  
       2021-12-06 04:15:00 +08:00
    @Anna1879 {/t/565667#;}
    Anna1879
        23
    Anna1879  
       2021-12-06 04:16:20 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3773 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:30 · PVG 18:30 · LAX 02:30 · JFK 05:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.