【转】全新NVDA剪贴板即将发布,期待你的体验与赞助

3 璀璨繁星点点 1小时前 69次点击

Windows 的剪贴板(Clipboard),可以简单理解成电脑里的一个临时“中转站”,用于保存用户刚刚复制或剪切的内容,并在不同应用之间方便地交换数据。

但对于屏幕阅读器用户来说,尤其是国内的屏幕阅读器用户,围绕剪贴板进行的开发和再利用一直都比较丰富。

我们通常希望:

1. 能随时查看、修改剪贴板中的内容。例如,对于文本,可以逐行、逐字查看,也可以进行汇总和摘要。

2. 当剪贴板内容发生变化时,能够及时给出反馈。

3. 能够只粘贴剪贴板中的部分内容。

4. 能够管理剪贴板历史记录。这也意味着,对于屏幕阅读器用户而言,剪贴板仅仅作为一个“临时中转站”是不够的。

5. 能够与屏幕阅读器深度融合,例如将屏幕阅读器朗读过的或当前可浏览的特定内容复制到剪贴板。

6. 除此以外,可能还有更多玩法,例如跨端粘贴。

其实,抛开屏幕阅读器用户,非屏幕阅读器用户同样对剪贴板有着更多需求。市面上也已经有 Ditto 这样的剪贴板管理工具。

对于 NVDA 而言,也一直不乏剪贴板相关的插件。比如早期的“星光小板”,以及现在的“剪贴板朗读增强”,都体现了国内 NVDA 用户和开发者对剪贴板使用场景的探索与实践。

为了让剪贴板相关需求更加清晰、功能更加集中、代码更加易于维护,并在此基础上惠及更多用户,NVDA 中文社区计划开发一款全新的剪贴板插件。

以往的插件有哪些可改进的点

1. 功能较为繁多,定位不够清晰。例如,虽然名称为“剪贴板增强”,但功能层面还混合了词典查询、公农历信息播报等特性。

2. 部分代码实现尚未遵循 NVDA 的编码规范,本地化难度较高。

3. 部分功能实现相对脆弱。例如使用 monkey patching 而不是 Extension Point,容易产生功能冲突。

4. 模块之间职责耦合度较高,增加了维护成本。

我们计划怎么做

开发一款全新的剪贴板插件,在解决上述问题的基础上,进一步加入一些新的功能。

1. 重新梳理功能定位。将与剪贴板无关的功能拆分到独立的插件中,便于分别维护。

2. 遵循 NVDA 最新的编码规范。尤其重视 i18n,以便惠及更多地区的 NVDA 用户。

3. 遵循 NVDA 插件开发最佳实践。例如优先使用 NVDA 的内置实现,使用 Extension Point 代替 monkey patching 等。

4. 加入更多新功能。探索并创新地实现一些同类产品中尚未出现的功能特性。

我们已经做了什么

1. 开发了一个功能原型,并向参与 Polyglot(翻译插件)众筹的赞助成员开放优先试用。

2. 已将其中一些功能拆分为独立插件,并将个别功能迁移到与其定位更加匹配的插件中。

3. 实现了一些有用的新功能。

新版剪贴板插件功能盘点

1. 支持与手机版天坦读屏进行跨平台复制粘贴。

2. 历史记录支持使用 OneDrive 进行云同步。

3. 新增了剪贴板管理器:支持分类、浏览、搜索、新建和编辑剪贴板历史等操作。

4. 除纯文本外,剪贴板历史还支持保存更多类型的数据,包括格式化文本、图像、文本和图像以及文件组。

5. 剪贴板的导航单位可调,例如按 Windows 分词边界或按照标点符号拆分。

6. 剪贴板摘要更准确,也更有用。例如,对于文件,将提供大小、数量,以及是复制还是剪切;对于图片,将提供方向、分辨率,近似纯色的图像还将提供占比最高的像素颜色;对于文本,将提供当前行数、总行数、字符数、是否含空白、汉字数、标点数等。

7. 可以在浏览模式下显示剪贴板内容,支持渲染 Markdown 包括数学公式和 html 语法。

你需要适应的点

我们从新版插件中移除了一些功能,其中多数功能给出了等效替代方案,你需要了解这些变化。

1. 最后一次朗读文本的逐字、逐词、逐句导航功能已完全移除。可使用 2026.2 中新增的 NVDA+X(重复最后朗读的内容;连按两次可在浏览模式下显示该信息)代替。

2. 公农历信息播报功能已完全移除,可使用“简易万年历”代替。

3. 本地英汉词典解释功能已完全移除,可使用“Polyglot”代替。

4. 拷贝最后一次朗读的文本功能已完全移除,可使用 2026.3 中新增的等效功能(NVDA+Ctrl+X)代替。

5. 用较慢的语速重复最后一次朗读的文本功能已完全移除,暂无替代方案。

6. 打开剪贴板中或刚听到的文本内的网址功能已完全移除,可使用“打开链接(OpenLinkWith)”代替。

7. 剪贴板编辑器功能已合并到剪贴板管理器。

8. 其他手势变化请以插件帮助文档为准。

作为开发者,我有哪些考量

作为视障用户的重要基础设施——屏幕阅读器,它承担的任务不只是读出文字这么简单,它在很大程度上决定了我们如何与计算机交互。

因此,移除或迁移某些功能,亦或是改变某些按键和手势,确实可能打破一些用户已经形成的使用习惯。但如果从更长远的角度来看,我们认为有一些原则应当优先于过往习惯。

1. 有替代方案,就不重复造轮子。

如果一个功能已经有成熟、稳定且定位明确的替代方案,就没有必要为了保留原有使用方式,而在新的插件中继续维护一套重复实现。

例如,对于最后一次朗读文本的相关功能,我们推荐优先使用 NVDA 新版本已经提供的原生能力。该方案需要连按两次 NVDA+X,才能在浏览模式下对最后朗读的内容进行文本导航,确实改变了原有的使用习惯。但从操作成本来看,新的方案所需手势更少;配合句子导航、单词导航,也能够提供更加灵活、统一的精细化查看方式。

2. 职责边界清晰,优先于功能大而全。

一个插件拥有更多功能,并不意味着它更有价值。功能不断增加之后,插件之间的定位会越来越模糊,内部实现的耦合也会越来越高,最终会增加开发、调试、维护和本地化的成本。

对于与剪贴板关系不大的功能,与其继续堆砌在同一个插件中,不如将它们拆分为更加合适的独立插件。

这样并不是简单地减少功能,而是将功能放到更加合适的位置,同时让每个插件的定位更加清晰。对于用户来说,可以根据自己的需求选择和组合插件;对于开发者来说,则可以更加独立地开发、测试和维护各个项目。

例如,本次我们将本地英汉词典功能迁移到 Polyglot,将公农历信息播报开发为独立的“简易万年历”,对于打开网址,我们推荐使用社区已有的 OpenLinkWith。这些功能本身并没有什么问题,也不是因为它们“不好用”才被移除,而是因为它们已经有了更合适的归属。

因此,我们更希望让剪贴板插件专注于剪贴板本身:如何保存、浏览、搜索、编辑和管理剪贴板内容,以及围绕这些内容提供更好的辅助能力。

3. 上游贡献优先于插件覆盖。

NVDA 本身一直在不断发展。如果 NVDA 缺失了某个功能,那么我们不如进行上游贡献,而不是把一个具有普遍需求的功能长期保留在独立的插件中。

这样做的好处有两点:

一是通过 Feature Request、ADR 等方式,让更大的社区参与需求讨论和方案评估,验证功能是否具有普遍性,并探索是否存在更好的实现方式;

二是如果功能最终进入 NVDA,就能够由整个项目共同维护,避免一个具有普遍需求的功能长期依赖于某个个人插件,从而面临无人维护的风险。

例如,我们曾经希望 NVDA 能够支持中文文本的分词能力,也有用户希望将其作为剪贴板插件的一部分。但我们认为,中文分词本质上属于屏幕阅读器的通用文本处理能力,并不应该绑定在剪贴板插件中。因此,我们在 2026.3 为 NVDA 添加了原生的中文分词功能。

随后,贡献者 @LeonarddeR 进一步完善了 NVDA 对文本导航的支持,使其除了中文之外,还覆盖日文和韩文。新版剪贴板在文本摘要方面也受益于此。

我们希望插件更多地建立在 NVDA 提供的基础能力之上,与 NVDA 形成互补: 对于 NVDA 已经具备或适合由 NVDA 提供的能力,我们推动其进入上游;对于 NVDA 尚未覆盖的需求,则通过插件进行探索和补充。

发布和赞助

由于该插件使用了 NVDA 2026.3 中的新特性,同时也希望让社区能够在早期适应这些变化,我们计划随 NVDA 2026.3 正式版一同发布该插件。 该插件完全免费且开源。我们开放了本文的打赏入口,您可以在微信中打开如下链接,通过文末的“喜欢作者”的方式赞助本插件,赞助所得将全部用于插件的日常维护。

阅读原文

原文链接

https://mp.weixin.qq.com/s/-ZGCm_5EsDjGMBna0MdZtg

共 4 条评论
璀璨繁星点点 [楼主] 1小时前
0 
以前去提希望和NVDA联动,一堆人出来跳脚说,凭什么商业的公司要和开源的东西联动?现在他们不就做出来了吗?这正是我所乐意看到的。希望以后毛坦和 NVDA 能有更多的功能上的互通。
TEKMAN 1小时前
0 

这是NVDA插件开发者向天坦申请了API,不是天坦去找NVDA搞联动,就跟那些在社区评论带尾巴的用的客户端是一个道理,关键点在于天坦自己要有完整的生态,也就是 Windows 端那个天坦云粘贴是必须做并且要一直维护下去的,不能自己不做完全靠开源生态。

璀璨繁星点点 [楼主] 1小时前
0 
这个是知道的,
璀璨繁星点点 [楼主] 59分钟前
0 
希望他们的这种互通能够继续做下去,这样NVDA也算是有可以互通的生态了。
添加一条新评论

登录后可以发表评论 去登录