Mac 使用 shift 快速实现中英文切换 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
itgoyo
V2EX    macOS

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

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

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

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

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

    Mac-Shif

    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
    unneeded
        1
    unneeded  
       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     Solana     2353 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 10:56 PVG 18:56 LAX 03:56 JFK 06:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86