BigSur 下目前可行的单键切换输入法方案

2020-09-09 17:31:46 +08:00
 honjow

macOS 的中英输入法切换对我而言一直是个老大难问题,感觉总是无法准确知道自己目前的输入语言,以及能准确快速地切换到自己需要的输入法

好在后来接触到 karabiner,搞了一份右 cmd 切换中文,右 shift 切换英文的方案,简洁明了,也不影响自身组合键功能。

但是目前 BigSur 下 karabiner 用不了了,然后感觉又回到了输入法各种混乱的时期。

前两天发现 BigSur 下 hammerspoon 好像是正常运行的,并且好像这货也能做按键映射操作。于是翻了两天资料教程。终于找到一篇和我需求比较接近的 https://blog.blahgeek.com/IMLight/

经过一番折腾(指查 hammerspoon 的 api 文档以及临时学习 lua 语法),终于初步实现了。

代码主要为两个 lua

keyMap.lua

主要修改自上面提到的那个帖子的代码,将其对象化,因为后面要两个实例跑,对应两个映射操作。因为对 lua 不熟悉,写得可能比较丑,好在能用

singleKeyChangeIme.lua

定义输入法切换以及映射按键等

用法 在 hammerspoon 的 init.lua 添加 require "singleKeyChangeIme" 引用即可。

4939 次点击
所在节点    macOS
23 条回复
wyx119911
2020-09-09 19:52:03 +08:00
一直用 keyboard maestro 。但是有 bug 会偶尔切换失灵
honjow
2020-09-09 20:22:47 +08:00
@wyx119911 keyboard maestro 用得不多,感觉自己不太会配置,或者只是我更习惯至今编辑配置文件的方式。我这个脚本用了一天,也碰到偶尔没反应的情况,不过大体还好
thet
2020-09-09 22:42:41 +08:00
自带的中英切换不能用吗
keyv
2020-09-09 22:47:31 +08:00
我把切换的按键放到 touch bar 上了,替换掉原来 siri 的位置。
Cuo
2020-09-09 23:26:33 +08:00
kawa 可以给每个输入法指定快捷键,很适合多语言用户
shoujiaxin
2020-09-09 23:52:04 +08:00
搞这么复杂。。。Caps Lock 切中英文有什么问题吗
BearD01001
2020-09-10 00:09:09 +08:00
@shoujiaxin 表示这个按键切输入法经常失效
lslqtz
2020-09-10 00:15:02 +08:00
一直用 caps lock 和 control+space……
Procumbens
2020-09-10 00:17:04 +08:00
System Preference -> Keyboard -> Input Sources -> Show Input menu in menu bar & Use the Caps Lock key to switch to and from U.S. (press and hold to enable typing in all uppercase.)
中文系统下应该是:系统偏好设置->键盘->输入源,勾选在菜单栏显示输入菜单以及使用 Caps Lock 键来切换不就可以满足需求了嘛……
honjow
2020-09-10 00:39:47 +08:00
@shoujiaxin
@thet 几位可能是主要使用系统自带输入法吧
只能说需求和习惯不一样了,能一个键准确切换到需要的输入法,完全不用关心当前什么输入法对我而言是最好的。
Contextualist
2020-09-10 02:46:39 +08:00
Karabiner 的作者正在用 DriverKit 写新版本( Big Sur 可用): https://github.com/pqrs-org/Karabiner-DriverKit-VirtualHIDDevice
@honjow 要不要试试毒。
sinxccc
2020-09-10 02:52:09 +08:00
我有一个 plist 放在 ~/Library/LaunchAgents 下面,直接把右边的 cmd 映射成了 F16 来切换输入法。
honjow
2020-09-10 03:09:29 +08:00
@Contextualist 明天试试
20015jjw
2020-09-10 03:34:02 +08:00
control space 我觉得很好用
主要是因为我的 caplocks 是 dual role control esc
Contextualist
2020-09-10 05:03:29 +08:00
@honjow 他们官网链接里的信息或许更有用些: https://karabiner-elements.pqrs.org/docs/macos-big-sur/
我自己没试过,祝你好运了!
tsohgdivil
2020-09-10 06:12:04 +08:00
哭了,怎么 karabiner 又不能用了。楼主试用完以后能够分享一下么
tsohgdivil
2020-09-10 06:15:05 +08:00
看了一下 karabiner 的官网,似乎现在的暂时不可用是 Big Sur 系统本身的 bug 导致的:
Important Notice
macOS Big Sur Beta 6 has a very serious DriverKit issue.
Karabiner-Elements will stop working after restarting your Mac due to the issue.

You have to reinstall the driver by the following way every reboot on macOS Big Sur Beta 6.
honjow
2020-09-10 10:49:51 +08:00
@Contextualist 试了下,好像可以用,不过官网说的重启要重新安装驱动的情况,因为还没重启,不知道究竟需不需要
typetraits
2020-09-12 21:51:08 +08:00
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x70000006E}]}'

CapsLock 映射为 F19,然后改快捷键里面的切换输入法就可以了
不需要安装任何第三方工具
honjow
2020-09-14 10:26:28 +08:00
@typetraits 还是有点区别的,我的需求是一个键绑定一个输入法,不是一个键循环切换

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

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

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

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

© 2021 V2EX