10. Browser: Smart select text area using cursor 和 11.Browser: Mouseless browsing. - HollowMan6/EAF-OSPP-Summer-2020 GitHub Wiki

相关issue: #10#11#270

相关PR: #345#349#357#364#367

为EAF浏览器添加插入光标浏览功能。它可以用于智能选择文本区域。

core/js/caret_browsing.js 部分来自于 qutebrowser的caret.js

  • 用法

在我的按键配置下,按M-c激活插入符号浏览,C-q禁用。光标浏览默认情况下处于禁用状态。

如果光标浏览已激活,请按C-i切换是否开启标记。如果标记打开,将使用光标进行选择。如果标记关闭,则光标将仅根据命令移动。标记默认为关闭。

这是在我的配置下用于光标浏览的按键绑定列表,只有在激活光标浏览后才能使用。

按键 动作
z 将光标移到下一行
Z 将光标移到上一行
a 将光标移到下一个字符
A 将光标移到上一个字符
w 将光标移到下一个单词
W 将光标移到上一个单词
b 将光标移到页面底部
B 将光标移到页面顶部

如果标记已启用并且光标浏览已激活,请按/向前搜索文本并选择,?向后搜索文本并选择。C-.清除当前搜索文本。

  • 例子

以此处 https://superuser.com/questions/1236864/how-to-use-vimium-to-select-text-from-a-page 为例,如果我们要获得相同的结果,则可以执行以下操作:

首先,按M-c激活光标浏览,然后按C-i设置标记。 其次,按/打开搜索并选择,在小缓冲区输入mailto,然后按enter确认。 第三,按C-.清除当前的搜索文本,然后再次按/打开搜索并选择,在小缓冲区输入very,然后按enter确认。 再次,按一次w选择一个单词或a逐渐选择一个单词。 最后,按M-w即可提取文字verycomplicatedandlonganduglydomainthatiwontsearachfor.com

额外增加用 marker 选中文本模块:

使用M-D或者d进入Marker文本选中模式

之前 之后 激活caret mode d光标右移后

仅仅无span或者p祖宗节点和有 文本内容的span节点会被选中。

随后设计了一个minor mode叫做eaf-browser-caret-mode,继续通过M-c开启关闭,开启时希望能够覆盖Emacs熟悉的C-nC-pC-fC-b进行光标控制,但是由于未知原因,minor mode无法覆盖已经在eaf-browser-keybinding中定义的按键,随后已经尝试修复,但是均失败。随后,EAF大神@loyalpartner成功厘清了动态绑定的秘密,在#360中帮我修复了错误,在这里感谢他的努力!

另外,增加暗模式插入符号:

从深色模式bgcolor内联样式中排除类CaretBrowsing

优化“插入符号”浏览光标的暗模式颜色算法,使其可以遵循eaf-browser-dark-mode设置。

image

修复浏览器焦点问题导致有时使用caret选中文字时为灰色而不是蓝色(焦点不在浏览器中):

Screen Capture_select-area_20200806111435