我也会在心里哈哈哈三声。。。。
论自嘲的艺术~
我写了一个补丁,更新最新版的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来解决这个问题。
我发现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 发消息的应用还是不行,还有其他解决办法吗
恩,现在可以了。在你上传这个补丁前,我是用 paste 实现的,这个比较通用,在很多没识别的输入框里都能用这个
(kill-new (read-string "Input: "))
(eaf-proxy-yank_text)
你可以参考我的补丁,很简单的,只要应用支持快捷键都可以想办法。 如果应用支持鼠标,可以自己写JavaScript, EAF可以直接在运行时动态注入任何JavaScript代码做任何事情,比如用JavaScript来点击事件。
甚至再暴力点,你可以通过 JavaScript 来汇报Web应用的坐标,然后用Qt暴力发送鼠标点击事件。
很多Web应用都喜欢自己造输入框,这种问题只能发现一个解决一个,坏处是代码一改就要改EAF兼容性补丁,好处是,大部分软件都没法像EAF这样纯键盘操作。
好吧,有空研究研究,对这方面知识实在太欠缺了
增加了一个 eaf-generate-keymap-doc 命令,专门自动从源码生成按键文档,以后再也不会遗漏按键信息了。
问个低级问题,eval_js
没有参数,只能运行后再自己输运行什么,所以如果想在一个函数里调用 js 应该怎么做呢?
先说你要解决的问题,你提的解决思路可能方向有误。
我就是想通过 js 模拟按键实现发送消息的功能。
浏览器的安全策略,浏览器不允许开发者通过JS来模拟鼠标和键盘事件,太危险了。 但是你可以通过PyQt来模拟鼠标键盘事件,这样浏览器不会知道Qt的事件是伪造的。
按键模拟,可以看 core/buffer.py 的代码,然后多Google,把 fake_* 那个函数看懂即可。
整个逻辑:
- 执行JS代码,返回 element 的坐标, 通过 execute_js 返回坐标给Python进程
- Python进程接到坐标,创建鼠标点击事件,发送给控件,参考 core/buffer.py
这样你就可以通过JS获取坐标,PyQt伪造事件对浏览器里面的应用键盘操作了。
好吧,感谢。我去研究研究。
我再问一下,如果按照这个逻辑的话,我还是需要先在某个页面执行 js 代码吗?那不就又回到我之前那个问题了
你要搜索一下源代码啊,看看现有的是怎么用的,多动脑筋
最新版增加了一个 eaf-mindmap-dark-mode 模式,思维导图也有暗黑模式了。
(eaf-setq eaf-mindmap-dark-mode "true")
最新版EAF会根据Emacs主题的深浅自动变化,当然 eaf-browser-dark-mode 和 eaf-mindmap-dark-mode 这两个选项依然可以手动设置。
最新版,浏览器中按s键,可以直接把网页保存为PDF文件,方便资料收集离线阅读。