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

Mac 使用 shift 快速实现中英文切换

  •  1
     
  •   itgoyo · 2018-07-25 10:58:48 +08:00 · 42801 次点击
    这是一个创建于 2312 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人在是使用 Mac 开发过程中经常碰到使用输入法的时候不是我想要的输入法。

    碰到的问题搜狗输入法没有悬浮窗口,只有看右上角才知道当前是什么输入法,百度输入法有悬浮窗,但是不能记录状态,所以中英文切换很频繁。

    每次开发都要用 control+空格键来切换比较麻烦,于是乎,本人使用改建软件实现了使用 shift 来进行中英文切换

    Mac-Shift

    Mac 使用 shift 快速切换输入法,程序员的输入法的代码利器

    首先要下载一个修改键位的软件Karabiner-Elements,下载地址:https://pqrs.org/osx/karabiner/

    • Karabiner 改键位把 left-shift改成f17

    改建

    • 系统偏好设置-键盘-快捷键-输入法

    选择上一个输入法改成F17 (也就是按一下键盘左边的 shift 即可)

    F17

    当然了这样子的方法不是最完美的,就是当你的组合快捷键要用到 shift 的时候,你的左边 shift 是没有用的,因为它的键位一就那个被改成了 F17,所以只能用右边的 shift 来操作。以上只是本人的做法当然如果你有更好的方法可以和我分享一下。我的 IDE 使用到 shift 的组合键并不多,所以这么改基本能满足我的日常开发

    本人使用的是百度输入法,因为百度输入法,会有一个输入法的悬浮窗口,如果是搜狗的话并没有这个,所以不方便查看当前是什么输入法。

    详细链接可以参考 Github 地址: https://github.com/itgoyo/Mac-Shift

    35 条回复    2021-12-12 12:52:19 +08:00
    zhaidoudou123
        1
    zhaidoudou123  
       2018-07-25 11:06:51 +08:00
    macOS 上我用的自带输入法,现在已经形成习惯了,在 Windows 就 shift 切换中文英文,到 macOS 上就 capslock 切换,已经形成了条件反射了)
    b821025551b
        2
    b821025551b  
       2018-07-25 11:07:42 +08:00
    mac 上居然还要安装第三方输入法?
    orclo
        3
    orclo  
       2018-07-25 11:15:03 +08:00
    装个 ShowyEdge 不就好了 扫一眼就知道了。。。。。。
    wclebb
        4
    wclebb  
       2018-07-25 11:21:59 +08:00   ❤️ 1
    macOS 习惯了用 Shift 来写大写,而 Caps lock 切换中英文输入法,可以说非常方便。
    在 Windows 我同样保留了这个输入大写的习惯,确实觉得比 Caps Lock 更方便得多,只需要小拇指一压,输入完毕后就松开即可,还真别说,方便。(因人而异吧……)

    甚至我觉得比 Windows 需要快捷键组合切换输入法更好一些( Ctrl+Shift、Ctrl+空格、Shitf+Alt 都可以算是切换输入法……)

    当然确实是每个人习惯不同,改变也要时间。

    ————

    另外任何输入法挡住屏幕是很烦的,对我而言,每次用鼠标恰好点到输入法上就烦躁无比。
    自然反而更觉得只看右上角是什么输入法是最佳的方法。Windows 我也是把它隐藏。

    所以:开发过程中经常碰到使用输入法的时候不是我想要的输入法。
    或许,试试自带输入法? Caps lock 中英文也是一键切换的。
    itgoyo
        5
    itgoyo  
    OP
       2018-07-25 11:27:16 +08:00
    谢谢个位 v 友的意见,由于本人使用 vim,用 CapsLook 和 esc 对调了,所以 CapsLook 也是我比较常用的按键,也已经是条件反射了`ShowyEdge`这个软件还是不错的,就是开发的时候我是软件全屏,状态栏上有网速还有温度变化一直在跳动所以比较碍眼,所以就没有显示状态栏。
    randyzhao
        6
    randyzhao  
       2018-07-25 11:28:15 +08:00
    自带输入法用 Caps lock 切换中英文输入,可以解决大部分麻烦。

    不过和完全切换输入法还是不大一样。
    英文输入法的时候,长按字母可以输入 ô ç 这样的字符,还算方便。
    Caps lock 切换的英文输入则不行。
    KeepPro
        7
    KeepPro  
       2018-07-25 11:29:06 +08:00
    OS X 自带输入法 加一
    而且最好代码里面都用英文。
    hahastudio
        8
    hahastudio  
       2018-07-25 11:33:29 +08:00
    鼠须管了解一下
    Sylv
        9
    Sylv  
       2018-07-25 11:45:27 +08:00 via iPhone   ❤️ 1
    Karabiner 是可以实现这样的改键的:
    单按 shift -> 切换输入法
    长按 /组合键按 shift -> shift

    具体实现楼主可以搜下。
    1002xin
        10
    1002xin  
       2018-07-25 12:16:00 +08:00
    都是改成 command+space 切换输入法,不要太爽,哪需要这么麻烦
    itgoyo
        11
    itgoyo  
    OP
       2018-07-25 13:35:39 +08:00
    @Sylv 这个真的可以有,谢谢
    ShuangFan
        12
    ShuangFan  
       2018-07-25 13:38:59 +08:00
    mac 自带不就很好用么,一键切换啊
    ynyounuo
        13
    ynyounuo  
       2018-07-25 13:43:02 +08:00   ❤️ 2
    https://pqrs.org/osx/karabiner/complex_modifications/#modifier-keys

    官方就有 #9 的这种修改方式。Shift (if alone) → Capslock。
    luob
        14
    luob  
       2018-07-25 13:45:43 +08:00
    一直用一个输入法不切换不行吗,在输入法内一般都支持 shift 切换中英文吧,用了第三方之后,自带的也不用管了,反正 mac 会记住上次使用的输入法。
    pheyer
        15
    pheyer  
       2018-07-25 15:39:31 +08:00
    我用的 caps lock 键当输入法切换快捷键
    popbones
        16
    popbones  
       2018-07-26 08:31:38 +08:00
    你需要这个: https://olkb.com
    zzzhzyzy
        17
    zzzhzyzy  
       2018-07-26 09:12:36 +08:00 via Android
    我用系统自带的,因为可以用 touch bar😂😂搜狗用不了 bar
    SandyLee
        18
    SandyLee  
       2018-07-26 14:41:23 +08:00
    感觉官方的 caps lock 很方便,以至于我在 windows 上也想这么用
    dibis
        19
    dibis  
       2019-02-17 16:00:32 +08:00
    用了 sogou 输入法,在 sogou 英文输入的时候多出了个提示框比较麻烦。
    于是中英文切换就用 ctrl+shift,当然这也操作没有单独按 shift 方便,正如文中所说确实有点其他的麻烦。
    上面有人提到了单按和长按 shift 的解决方案,正在摸索中。
    itgoyo
        20
    itgoyo  
    OP
       2019-02-17 18:03:10 +08:00
    @jnuc093 单按长按 shift、可以看这里,已经实现了 https://github.com/itgoyo/Poker-for-Mac/issues/2
    dibis
        21
    dibis  
       2019-02-18 22:04:29 +08:00
    @itgoyo 你是说外置键盘。目前我没搞外置键盘,设置成右边 shift 键,右边的 shift 键,值是多少
    itgoyo
        22
    itgoyo  
    OP
       2019-02-18 22:15:35 +08:00
    @jnuc093 我用的是 karabiner,这个是 mac 软件,没有值这个概念,你难道是在 linux 系统下面?因为 karabiner 把所有的键位都给列举出来了
    itgoyo
        23
    itgoyo  
    OP
       2019-02-18 22:17:25 +08:00
    @jnuc093

    ```
    "parameters": {
    "basic.to_if_alone_timeout_milliseconds": 250,
    "basic.to_if_held_down_threshold_milliseconds": 1
    },
    "to_if_alone": [
    {
    "key_code": "f17"
    }
    ],
    "to_if_held_down": [
    {
    "key_code": "left_shift"
    }
    ]
    ```
    具体实现式这样子的,当谈了 f17 式我修改映射之后的键位,短按 0.25s 前触发为短
    dibis
        24
    dibis  
       2019-02-18 23:44:07 +08:00
    @itgoyo 我看到这个文件的内容了。但是这个文件写在哪?
    dibis
        25
    dibis  
       2019-02-18 23:48:18 +08:00
    @itgoyo 噢看到了

    ~/.config/karabiner/karabiner.json 这个文件
    dibis
        26
    dibis  
       2019-02-19 00:06:55 +08:00
    这是我的原始文件

    https://gist.github.com/jnuc093/f8f63bffecf85013f7467ef9d9407067

    不知道加到哪一行
    itgoyo
        27
    itgoyo  
    OP
       2019-02-19 09:51:18 +08:00
    itgoyo
        28
    itgoyo  
    OP
       2019-02-19 09:52:42 +08:00
    @jnuc093 根据需要修改,还有你最好要外接键盘、万一改换了,键位就错了,或者是你先保存你之前的.json 文件
    dibis
        29
    dibis  
       2019-02-19 22:26:44 +08:00
    @itgoyo 管用!非常的感谢。
    yetone
        30
    yetone  
       2019-05-01 17:37:25 +08:00
    Erona
        31
    Erona  
       2019-07-05 11:20:43 +08:00
    也可以考虑尝试一下这个
    https://github.com/Eronana/scimex

    给原生输入法增加了:
    - 使用 `Shift` 切换中英文
    - 使用 `CapsLock` 切换大写英文
    - 中文状态下使用英文标点
    xiparos
        32
    xiparos  
       2019-11-04 21:38:34 +08:00
    我的 mac 上 caps lock 根据 Emacs 的键位已经换成了 left control,所以大写这个功能已经从键盘上消失,所以原声的 caps lock 切换对我来说不管用。

    谢谢 po 主给出的解决方案
    xiaoshu1998
        33
    xiaoshu1998  
       2019-11-14 09:41:59 +08:00
    @yetone 我用了你的配置,感觉有时候切换会出问题。
    我给改成了用自己的键位进行设置,首先要在设置里面更改切换输入法的快捷键,我改成了⌥<space>,然后就是在 `~/.config/karabiner/karabiner.json` 里面进行配置
    ```
    {
    "description": "Switch between zh-Hans <-> en (left_shift)",
    "manipulators": [
    {
    "from": {
    "key_code": "left_shift",
    "modifiers": {
    "optional": [
    "any"
    ]
    }
    },
    "to": [
    {
    "key_code": "left_shift"
    }
    ],
    "to_if_alone": [
    {
    "key_code": "spacebar",
    "modifiers": [
    "left_alt"
    ]
    }
    ],
    "type": "basic"
    },
    {
    "from": {
    "key_code": "left_shift",
    "modifiers": {
    "optional": [
    "any"
    ]
    }
    },
    "to": [
    {
    "key_code": "left_shift"
    }
    ],
    "to_if_alone": [
    {
    "key_code": "spacebar",
    "modifiers": [
    "left_alt"
    ]
    }
    ],
    "type": "basic"
    }
    ]
    }
    ```
    AthensBird
        34
    AthensBird  
       2021-12-10 21:22:37 +08:00
    把左 Shift 用来切输入法,牺牲有点大
    itgoyo
        35
    itgoyo  
    OP
       2021-12-12 12:52:19 +08:00
    @AthensBird 最厉害的地方在于,这个左 shift 还保留之前的 shift 的功能,点击瞬间是切换,长按 shfit 是原来 shift 的功能,而且本来这个 shift 就是长按的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2772 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:53 · PVG 21:53 · LAX 05:53 · JFK 08:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.