公众号:Android系统攻城狮
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
1.前言
在开发过程中,需要用到有道词典,但是有道词典必须使用鼠标选中,才能翻译.这样就和编辑器脱离了,一边使用鼠标一边,使用键盘,这样会导致效率低下.
所以写一个解决方案,可以所有操作在Emacs中完成!
2.键盘模拟鼠标左键双击内容和双击Ctrl键(for有道词典)
<1>.v3.0
;;v3.0
;;功能描述:有时第一次需要将所选内容拷贝,第二次选中后直接可以双击Ctrl键翻译.
(defun translate-for-youdao()
(interactive)
(progn
;;ok: 延时10ms,双击所选内容
;;(shell-command (concat "xdotool type " (funcall '(lambda () (progn (unless buffer-read-only (setq buffer-read-only t)) (current-kill 0)))) " && xdotool click --repeat 2 --delay 10 1"))
;;ok: 不延时
(shell-command (concat "xdotool type " (funcall '(lambda () (progn (unless buffer-read-only (setq buffer-read-only t)) (current-kill 0)))) " && xdotool click --repeat 2 1"))
)
)
;;--repeat 2: 点击左键两次.
;;--delay 10 1: 10表示: 延时10ms.
;;1表示: 点击左键.
;;模拟按两次Ctrl键,调起有道词典的翻译功能.
(defun double-ctrl ()
(interactive)
(progn
;;延时1ms,第一次按下并抬起Ctrl键
(sit-for 0.001)
(shell-command "xdotool keydown ctrl keyup ctrl")
;;ok
;;延时1ms,第二次按下并抬起Ctrl键
(sit-for 0.001)
(shell-command "xdotool keydown ctrl keyup ctrl")
;; (setq use-dialog-box nil)
;; (setq use-file-dialog nil)
))
(advice-add 'double-ctrl :before 'translate-for-youdao)
(global-set-key [f2] 'double-ctrl)
<1>.v4.0
;;v4.0
;;功能描述:需要将所选内容拷贝,然后双击Ctrl键翻译.
(defun double-ctrl ()
(interactive)
(progn
(shell-command (concat "xdotool type " (funcall '(lambda () (progn (read-only-mode 1) (current-kill 0)))) " && xdotool click --repeat 2 --delay 10 1"))
(shell-command "xdotool keydown ctrl")
(shell-command "xdotool keyup ctrl")
(shell-command "xdotool keydown ctrl")
(shell-command "xdotool keyup ctrl")
))
(global-set-key [f2] 'double-ctrl)
<1>.v5.0
;;v5.0--->最终简化版本.
;;功能描述:有时第一次需要将所选内容拷贝,第二次选中后直接可以双击Ctrl键翻译.
(defun double-ctrl ()
(interactive)
(progn
(shell-command (concat "xdotool type " (funcall '(lambda () (progn (unless buffer-read-only (setq buffer-read-only t)) (current-kill 0)))) " && xdotool click --repeat 2 --delay 1 1"))
;;延时1ms,第一次按下并抬起Ctrl键
(sit-for 0.001)
(shell-command "xdotool keydown ctrl keyup ctrl")
;;ok
;;延时1ms,第二次按下并抬起Ctrl键
(sit-for 0.001)
(shell-command "xdotool keydown ctrl keyup ctrl")
))
(global-set-key [f2] 'double-ctrl)