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

2018-07-25 10:58:48 +08:00
 itgoyo

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

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

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

Mac-Shift

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

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

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

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

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

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

42809 次点击
所在节点    macOS
35 条回复
dibis
2019-02-18 22:04:29 +08:00
@itgoyo 你是说外置键盘。目前我没搞外置键盘,设置成右边 shift 键,右边的 shift 键,值是多少
itgoyo
2019-02-18 22:15:35 +08:00
@jnuc093 我用的是 karabiner,这个是 mac 软件,没有值这个概念,你难道是在 linux 系统下面?因为 karabiner 把所有的键位都给列举出来了
itgoyo
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
2019-02-18 23:44:07 +08:00
@itgoyo 我看到这个文件的内容了。但是这个文件写在哪?
dibis
2019-02-18 23:48:18 +08:00
@itgoyo 噢看到了

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

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

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

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

谢谢 po 主给出的解决方案
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
2021-12-10 21:22:37 +08:00
把左 Shift 用来切输入法,牺牲有点大
itgoyo
2021-12-12 12:52:19 +08:00
@AthensBird 最厉害的地方在于,这个左 shift 还保留之前的 shift 的功能,点击瞬间是切换,长按 shfit 是原来 shift 的功能,而且本来这个 shift 就是长按的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/473948

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX