一上午撸了个用 karabiner 通过 shift 切换中英文的脚本,有个问题

2015-09-01 14:54:51 +08:00
 freewarcraft
第一次用,结果默认选项里好像没这个功能,于是自己撸一个,研究了老半天 sample 才明白

我的 mac 就中英 2 种输入法,另外双击左右 cmd 都是激活 alfred 。

代码如下:(强迫症请无视里面的 begin 和 end ,可以删掉的。。。)
<item>
<name>Switch_Chinese_English</name>
<appendix>Switch_Chinese_English</appendix>
<identifier>private.switch</identifier>
<autogen>__HoldingKeyToKey__
KeyCode::SHIFT_R,
@begin
KeyCode::SPACE, ModifierFlag::COMMAND_L, ModifierFlag::OPTION_L,
@end
@begin
KeyCode::VK_NONE, KeyCode::SHIFT_R,
@end
ThresholdMillisecond::RawValue::150,
</autogen>
<autogen>__HoldingKeyToKey__
KeyCode::SHIFT_L,
KeyCode::SPACE, ModifierFlag::COMMAND_L, ModifierFlag::OPTION_L,
KeyCode::VK_NONE, KeyCode::SHIFT_L,
ThresholdMillisecond::RawValue::150,
</autogen>
</item>

说明:
按左右 shift 都可以切换中英文输入法,和 win 一样
按住 shift 的功能不变
因为我切换语言的快捷键是 cmd +空格和 alt + cmd +空格(反向),所以代码里用 cmd +空格时,连按 shift 会呼出 alfred ,改为 alt + cmd +空格就不会了。

一个问题:
现在我把按键时间设为 150ms (再短就容易出现超时),也就是说按下 shift 然后松开要在 150ms 内完成,才会切换输入法,超时后就变为长按 shift 的效果。
但是在按下 shift 的 150ms 内再按其他键(即要的是长按 shift 效果而非切换输入法效果),会导致 shift 键的 holding 状态被打断而变成切换输入法。
这个问题能解决吗?
3779 次点击
所在节点    macOS
8 条回复
freewarcraft
2015-09-01 14:59:40 +08:00
注意,代码中“ holdingkeytokey ”前面的 2 个“_”和后面的一个“_”黏贴进来以后被删了,用的时候记得加上。。。
freewarcraft
2015-09-01 15:01:46 +08:00
噢,原来是 markdown 的问题,现在代码显示没问题了
Sylv
2015-09-01 15:15:36 +08:00
用手机看代码不方便,所以没细看你的配置代码。
我同样也是自己用 karabiner 研究出了用 shift 来切换输入法的方法,用了好几个月了,挺顺手的,没什么问题。
这贴的 17 楼有我的配置代码,你可以参考下:
/t/205046
Sylv
2015-09-01 15:21:31 +08:00
粗略看了下,你的问题可能是因为用了 __HoldingKeyToKey__ 命令导致的,应该这个命令就是这么设计的,你像我一样改用成 __KeyOverlaidModifier__ 命令来实现应该就不会有这个问题了。
freewarcraft
2015-09-01 16:05:44 +08:00
@Sylv 用了你写的配置,真是太方便了,感谢感谢,看来是我造轮子了。。。
ewBuyVmLZMZE
2015-09-01 17:04:56 +08:00
……好冷的实现,但是我已经习惯了 Command + Space
zander
2015-09-01 18:10:06 +08:00
按 caps lock 就可以切换到英文模式吧。
莫非把 caps lock 变成 control 了?
pheyer
2015-09-02 14:17:33 +08:00
可以把 caps lock 设置为切换中英文的快捷键,要不然找一个支持 shift 切换中英文的输入法不就是了

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

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

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

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

© 2021 V2EX