itgoyo
V2EX  ›  macOS

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

  •  1
     
  •   itgoyo · Jul 25, 2018 · 45611 views
    This topic created in 3022 days ago, the information mentioned may be changed or developed.

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

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

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

    ————

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

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

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

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

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

    ~/.config/karabiner/karabiner.json 这个文件
    dibis
    dibis
    Feb 19, 2019
    26
    这是我的原始文件

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

    不知道加到哪一行
    itgoyo
    itgoyo
    OP
    Feb 19, 2019
    27
    itgoyo
    itgoyo
    OP
    Feb 19, 2019
    28
    @jnuc093 根据需要修改,还有你最好要外接键盘、万一改换了,键位就错了,或者是你先保存你之前的.json 文件
    dibis
    dibis
    Feb 19, 2019
    29
    @itgoyo 管用!非常的感谢。
    yetone
    yetone
    May 1, 2019
    30
    Erona
    Erona
    Jul 5, 2019
    31
    也可以考虑尝试一下这个
    https://github.com/Eronana/scimex

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

    谢谢 po 主给出的解决方案
    xiaoshu1998
    xiaoshu1998
    Nov 14, 2019
    33
    @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
    AthensBird
    Dec 10, 2021
    34
    把左 Shift 用来切输入法,牺牲有点大
    itgoyo
    itgoyo
    OP
    Dec 12, 2021
    35
    @AthensBird 最厉害的地方在于,这个左 shift 还保留之前的 shift 的功能,点击瞬间是切换,长按 shfit 是原来 shift 的功能,而且本来这个 shift 就是长按的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1863 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 59ms · UTC 00:01 · PVG 08:01 · LAX 16:01 · JFK 19:01
    ♥ Do have faith in what you're doing.