从今天开始,Emacs里面可以运行任何你想要的程序 (Linux & Windows & Mac & BSD)

我也会在心里哈哈哈三声。。。。 :rofl:

论自嘲的艺术~

我写了一个补丁,更新最新版的EAF默认就支持Ctrl + Return了。

原因是: EAF已经可以自动转换Emacs风格按键 C-M-S-o 为 Qt 可以识别的 Ctrl + Alt + Shift + o 但是Emacs中的 Ctrl + Return 是一个奇怪的 <C-return> 格式,导致EAF按键伪造模块失效

所以,我手动写了一个 Elisp 命令: eaf-send-ctrl-return-sequence 来发送 C + RET 字符串给EAF来解决这个问题。

1 个赞

我发现Telegram Web的输入框是一个自己造的div, 而不是标准的 input textarea 这种。

上面这个补丁让EAF的 get_focus_input 和 set_focus_input 这两个JS脚本可以直接识别Telegram Web的输入框,现在你用EAF直接上Telegram,可以直接输入内容,甚至用Emacs编辑 Alt + e 再传递给Telegram。

感谢!现在 telegram 确实可以用 c-return 发消息了。不过其他不能用 c-return 发消息的应用还是不行,还有其他解决办法吗 :sob:

恩,现在可以了。在你上传这个补丁前,我是用 paste 实现的,这个比较通用,在很多没识别的输入框里都能用这个

(kill-new (read-string "Input: "))   
(eaf-proxy-yank_text)

你可以参考我的补丁,很简单的,只要应用支持快捷键都可以想办法。 如果应用支持鼠标,可以自己写JavaScript, EAF可以直接在运行时动态注入任何JavaScript代码做任何事情,比如用JavaScript来点击事件。

甚至再暴力点,你可以通过 JavaScript 来汇报Web应用的坐标,然后用Qt暴力发送鼠标点击事件。

很多Web应用都喜欢自己造输入框,这种问题只能发现一个解决一个,坏处是代码一改就要改EAF兼容性补丁,好处是,大部分软件都没法像EAF这样纯键盘操作。

好吧,有空研究研究,对这方面知识实在太欠缺了 :sob:

增加了一个 eaf-generate-keymap-doc 命令,专门自动从源码生成按键文档,以后再也不会遗漏按键信息了。

1 个赞

问个低级问题,eval_js 没有参数,只能运行后再自己输运行什么,所以如果想在一个函数里调用 js 应该怎么做呢?

先说你要解决的问题,你提的解决思路可能方向有误。

我就是想通过 js 模拟按键实现发送消息的功能。

浏览器的安全策略,浏览器不允许开发者通过JS来模拟鼠标和键盘事件,太危险了。 但是你可以通过PyQt来模拟鼠标键盘事件,这样浏览器不会知道Qt的事件是伪造的。

按键模拟,可以看 core/buffer.py 的代码,然后多Google,把 fake_* 那个函数看懂即可。

整个逻辑:

  1. 执行JS代码,返回 element 的坐标, 通过 execute_js 返回坐标给Python进程
  2. Python进程接到坐标,创建鼠标点击事件,发送给控件,参考 core/buffer.py

这样你就可以通过JS获取坐标,PyQt伪造事件对浏览器里面的应用键盘操作了。

3 个赞

好吧,感谢。我去研究研究。

我再问一下,如果按照这个逻辑的话,我还是需要先在某个页面执行 js 代码吗?那不就又回到我之前那个问题了 :joy:

你要搜索一下源代码啊,看看现有的是怎么用的,多动脑筋

最新版增加了一个 eaf-mindmap-dark-mode 模式,思维导图也有暗黑模式了。

(eaf-setq eaf-mindmap-dark-mode "true")

最新版EAF会根据Emacs主题的深浅自动变化,当然 eaf-browser-dark-mode 和 eaf-mindmap-dark-mode 这两个选项依然可以手动设置。

1 个赞

最新版,浏览器中按s键,可以直接把网页保存为PDF文件,方便资料收集离线阅读。

5 个赞