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

Mac 终于找到输入法完美解决方案.

  •  
  •   xx0219 · 2016-09-10 09:29:41 +08:00 · 13898 次点击
    这是一个创建于 3003 天前的主题,其中的信息可能已经有所发展或是发生改变。

    转载的: 原文链接 https://github.com/rime/squirrel/wiki/%E5%AE%9E%E7%8E%B0Shift_L-%E6%8C%89%E4%B8%8B%E6%97%B6%E5%88%87%E6%8D%A2%E8%BE%93%E5%85%A5%E6%B3%95%E5%8D%B3Shift_L-%E4%BB%A3%E6%9B%BFCtrl_Space 也可以 github 搜索 rime/squirrel

    理想的情况是 mac 只保留一个 Squirrel 输入法,用 Squirrel 中的功能( shift 切换中英文状态) 现实的情况是 mac 不允许删除默认的 英文输入法,且默认某些 Application 输入法状态是系统默认的英文 所以有时实现切换中英文会变得很繁琐 (系统英文态<---> Squirrel 英文态<---->Squirrel 中文态)

    解决方案 不使用 Squirrel 英文态,但是依然想用 Shift_L 来切换中英文状态 (系统英文态<---->Squirrel 中文态)

    需要 配合 Karabiner 来使用

    Karabiner 中 private.xml 相关文档 只需要在其中加入以下配置

    <item> <name>Shift_L to Shift_L</name> <appendix> + When you type Shift_L only,change to previous system input method</appendix> <appendix>Shift_L == (Ctrl-Space)</appendix> <identifier>private.change_input_source_to_squirrel.Rime</identifier> <autogen>__KeyOverlaidModifier__ KeyCode::SHIFT_L, ModifierFlag::SHIFT_L | ModifierFlag::NONE, KeyCode::SHIFT_L, KeyCode::SPACE,ModifierFlag::CONTROL_L</autogen> </item>

    然后重起 Karabiner,并在 Kanabiner 配置界面上勾上 (Shift_L to Shift_L) 选项,启用以上配置即可

    我现在使用 有个小小的问题. 每次按 shift 都会自动打出一个 ( 来....有知道怎么去掉的 留个言哈.

    23 条回复    2016-09-22 14:58:28 +08:00
    lianz
        1
    lianz  
       2016-09-10 09:53:27 +08:00
    Shift+L 的话, 那想输入 L 怎么办? 我经常要频繁输入大写字母的, CapsLock 用不惯, 太慢
    lianz
        2
    lianz  
       2016-09-10 09:54:06 +08:00
    莫非 Shift_L 指的是左边的 Shift ?
    fiifee
        3
    fiifee  
       2016-09-10 09:58:26 +08:00 via iPhone
    @lianz 对啊
    lianz
        4
    lianz  
       2016-09-10 10:18:08 +08:00
    @fiifee 已经用你的配置设置了一下, 貌似还可以, 并且没碰到你说的 [自动打一个 ( ] 这个问题
    fiifee
        5
    fiifee  
       2016-09-10 10:42:15 +08:00 via iPhone
    @lianz 回复我干嘛,我不是 zuo   zhe
    Tink
        6
    Tink  
       2016-09-10 10:46:51 +08:00
    悄悄告诉你,其实自带的英文输入法可以删掉
    kaneg
        7
    kaneg  
       2016-09-10 10:47:02 +08:00 via iPhone
    为什么不用搜狗输入法?不折腾
    hatcloud
        8
    hatcloud  
       2016-09-10 11:24:37 +08:00
    v2wp
        9
    v2wp  
       2016-09-10 11:36:51 +08:00
    百度 MAC 输入法还不错,我一直在用,只保留他, shift 切换中英文输入就 OK 了
    TaoQAQ
        10
    TaoQAQ  
       2016-09-10 11:48:12 +08:00
    亲测好用,之前用的搜狗输入法自带的 shift 切换中英文,但是还是会不时的切到自带的英文输入法,现在把搜狗的 shift 禁用,然后改映射 shift->ctrl+space ,目前感觉不错
    FrankFang128
        11
    FrankFang128  
       2016-09-10 11:50:19 +08:00 via Android
    @TaoQAQ 映射怎么改
    Satelli
        12
    Satelli  
       2016-09-10 12:50:02 +08:00
    系统默认在识别到输入密码的场合时,自动切换到自带的英文输入法。
    fiifee
        13
    fiifee  
       2016-09-10 14:20:28 +08:00
    rime 在 mac 上我设置 Shift_R 来切换输入法不生效, 各位有同样的情况嘛?
    xylitolLin
        14
    xylitolLin  
       2016-09-10 17:38:40 +08:00
    其实系统自带有什么不好呢?我用的挺欢的,还不用装其他
    homever
        15
    homever  
       2016-09-10 17:41:58 +08:00
    @fiifee Mac 上 应该无法映射 Shift_R
    Sylv
        16
    Sylv  
       2016-09-10 18:52:03 +08:00 via iPhone
    嗯,我之前和你说的我的方案就和这个差不多。
    fiifee
        17
    fiifee  
       2016-09-10 19:03:06 +08:00
    @homever 什么原理?
    homever
        18
    homever  
       2016-09-10 21:18:05 +08:00
    @fiifee no idea. 我遇到的程序和游戏还没有一个能区分左右 shift 的。。
    xx0219
        19
    xx0219  
    OP
       2016-09-10 21:36:16 +08:00
    @homever Mac 下这个键盘按键神器 karibiner 可以区分左右 shift 的....
    qucklay
        20
    qucklay  
       2016-09-11 20:26:25 +08:00
    @v2wp 输入密码会中文吧
    bao3
        21
    bao3  
       2016-09-14 18:09:12 +08:00
    ```
    <?xml version="1.0"?>
    <root>
    <!-- change left command to control, send command+space when left command is pressed twice. -->
    <item>
    <name>快速切换输入法</name>
    <item>
    <name> Shift 切换输入法</name>
    <appendix>短按 Shift 为 cmd+space ,长按仍然输出 shift</appendix>
    <identifier>private.qinput.shiftR</identifier>
    <autogen>
    __DoublePressModifier__
    KeyCode::SHIFT_R,
    KeyCode::SHIFT_R,
    KeyCode::SPACE, ModifierFlag::CONTROL_L,
    </autogen>
    </item>
    <item>
    <name>Shift 切换系统输入(中英)</name>
    <appendix> 当只按下右 Shift 时输入法在系统中英文间切换,当按 Shift 和其他按键时,仍然为 Shift 功能</appendix>
    <identifier>private.change_input_source_to_squirrel.Rime</identifier>
    <autogen>
    __KeyOverlaidModifier__
    KeyCode::SHIFT_R,
    ModifierFlag::SHIFT_R | ModifierFlag::NONE,
    KeyCode::SHIFT_R,
    KeyCode::SPACE,ModifierFlag::CONTROL_L
    </autogen>
    </item>
    </item>
    </root>



    ```
    bao3
        22
    bao3  
       2016-09-14 18:16:01 +08:00
    我和楼主的配置非常像,只是我使用了两种方法,方法一是,快速双击右 Shift ,完成切换。缺点是要改变切换习惯,优点是兼容性好,因为有些人的鼠须管输入默认是在某些 app 中切换为鼠须管的英文状态的,使用双击 shift 可以继续使用 shift 来切换鼠须管自带的中英状态。比如在 xocde , iterm 中等等
    方法二,跟楼主一模一样,不过是仍然是右 shift ,按一下 shift 就完成系统输入法间的中英切换,缺点就是当你在上述提到的鼠须管默认英文状态的 app 中时,右 shift 无法切换鼠须管自带的输入法英文。我一直使用左 contrl 来手动切换

    但是看了楼主的我才知道其实我可以映射到左 shift 。。


    我更有个提议,使用 karabiner 的人应该取消鼠须管自带的输入法切换,改为使用 karabiner 的强制切换输入源,兼容性问题。
    v2wp
        23
    v2wp  
       2016-09-22 14:58:28 +08:00
    @qucklay 不会,自动英文
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2782 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 05:44 · PVG 13:44 · LAX 21:44 · JFK 00:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.