最近想同步手机上的输入历史,遂想试试在电脑上也使用搜狗输入法,设置里貌似没这功能,不知道大家有没有经验。
这个?
可能是一个办法,可惜我没有在用 HammerSpoon。
还好,本身挺小巧的,多装个也不占资源
噢,很久之前试过,没怎么弄明白就放弃了,感觉也没太大需求。
这是目前最好的方法,不仅仅是emacs, 你切换 chrome 和其他应用都可以控制输入法的初始状态. 多个应用切换的时候很方便.
1 个赞
我的方法:
- 自制一个切换输入法的命令行工具( applescript 也能做到,但是…太慢了)
- 每次切换到 emacs 时,保存当前输入法名字,将输入法换成ABC输入法
- 每次切出emacs时,将输入法切换回之前保存的
输入法切换工具
工具源代码见 text_input_source
以及编译安装脚本 compile.sh
emacs lisp
(defvar memacs-autoescape-english-layout-name "ABC"
"English layout name in your macOS system")
(setq memacs-autoescape--origin-outside-layout-name "ABC")
(defun memacs/autoescape-use-english-layout()
"Change input source to english layout while emacs frame focused."
(unless (evil-hybrid-state-p)
(setq memacs-autoescape--origin-outside-layout-name (shell-command-to-string "textinputsource"))
(unless (string= memacs-autoescape--origin-outside-layout-name
memacs-autoescape-english-layout-name)
(start-process-shell-command "changeInputSource" nil
(concat "textinputsource -s "
memacs-autoescape-english-layout-name))
))
)
(defun memacs/autoescape-recover-outside-layout()
"Recover input source to origin layout while emacs frame unfocused."
(unless (string=
(shell-command-to-string "textinputsource")
memacs-autoescape--origin-outside-layout-name)
(call-process-shell-command (concat "textinputsource -s "
memacs-autoescape--origin-outside-layout-name)))
)
;; 切入到 emacs
(add-hook 'focus-in-hook 'memacs/autoescape-use-english-layout)
;; 切出到 emacs
(add-hook 'focus-out-hook 'memacs/autoescape-recover-outside-layout)
;; 关闭 emacs
(add-hook 'kill-emacs-hook 'memacs/autoescape-recover-outside-layout)
详情见
1 个赞
对比了一下大佬的方式,还是 HammerSpoon 方便 ,我的通用性太差了
你是想同步输入词库?
可以试试Rime,开箱自带切换Emacs时切换英文
1 个赞
为什么搜狗啊?其实现在本身自带的输入法就很好用了,可以一键切换。
我用的Rime,它有一个ascii_mode,默认在iterm2,Alfred,Terminal,Quicksilver这些里面都是英文。
楼主的这个需求,我觉得Mac自带有这个功能?
在设置->键盘->输入法 里有一个自动切换到文稿的输入法。勾选后,我理解就是不同应用程序的输入法是可以不同的。比如chrome里面我用的中文。切到emacs后,就是英文。我自己就是使用的这程办法。最多就是第一次切到emacs时可能需要关闭一下输入法。以后切到emacs都是英文了。
1 个赞
简单试了下是这样的
的确有,之前没发现。