跳转至内容

Simple Orca Plugin System

来自 ArchWiki

使用 Simple Orca Plugin System (SOPS),您可以扩展 Orca 屏幕阅读器(orca)的功能。它提供了一种以几乎任何编程语言轻松添加插件的可能性。插件的设置通过文件名来控制。

安装

安装 simpleorcapluginsystem-gitAUR 软件包。

要为当前用户设置插件系统,请运行

$ /usr/share/SOPS/install-for-current-user.sh

管理

基础知识

  • 安装路径。它包含默认插件、文档、插件加载器和管理工具。
/usr/share/SOPS/
  • 用户插件的路径是
~/.config/SOPS/plugins-available/
  • 以下路径用于所有已启用(活动)的插件。该文件夹中的所有插件都将被加载,前提是它们有效。
~/.config/SOPS/plugins-enabled/

管理工具

工具位于安装目录下的“tools”文件夹中。以下命令可以启用/激活一个插件,但您需要重命名文件名以创建快捷方式并向插件传递命令。

$ ./ensop <pluginname> 

禁用和卸载插件的命令是

$ ./dissop <pluginname>

这两个命令基本上只是在 ~/.config/SOPS/plugins-enabled 中创建或删除链接,并使插件可执行。您需要手动配置插件。在更改后重启 Orca 以重新加载插件。SOPS 还提供了一个插件管理器,安装后即可使用。要打开插件管理器,请在 Orca 运行时使用 orca+ctrl+p。它可用于激活、停用、安装或配置插件。关闭插件管理器后,Orca 会自动重新启动。

插件

提示 您可以在 /usr/share/SOPS/examples 中找到一些完全预定义的示例插件。

文件名结构

插件的快捷方式、插件类型和首选项由其文件名控制。文件名中描述性部分必须与首选项部分用 __-__ 分隔。命令、修饰键和按键必须用 __+__ 分隔。

<description>__-__[<command>__+__command...][__+__<modifier>__+__<modifier>__+__key_<key>].ext

运行插件

有两种不同的方式可以运行插件:

如果没有这些,插件将不会加载。还有一些 #命令/首选项 可以控制插件的行为。

修饰键/快捷键

使用修饰键,您可以为 key 设置不同的快捷键组合。您始终必须按下 Orca 修饰键。三个修饰键的顺序无关紧要。

  • control 是键盘上 ctrl 键的修饰键。
  • shift 是键盘上 shift 键的修饰键。
  • alt 是键盘上 alt 键的修饰键。
  • key_<key> 定义了用于插件的基本快捷键,可能与定义的修饰键组合使用(例如 example_plugin__-__key_d.sh 使用 orca+d)。
有效快捷键

只有少数修饰键组合是有效的。这些是由 Orca 预定义的。有效组合是:

  • alt 例如 description__-__alt__+__key_y.sh
  • control 例如 description__-__control__+__key_b.sh
  • shift 例如 description__-__shift__+__key_c.sh
  • control + alt 例如 description__-__control__+__alt__+__key_w.py
  • shift + alt 例如 description__-__shift__+__alt__+__key_y.sh

对于 key_<key>,您可以使用任何字母数字键。

命令/首选项

插件的首选项称为命令。命令定义了要传递给插件的操作。使用命令来控制插件的行为。您可以添加多个命令。命令的顺序无关紧要。您几乎可以对所有类型的插件使用它们。

  • startnotify 在插件执行前播报“start <description>”。这对于进度时间较长的插件作为反馈很有用。(所有插件)
  • stopnotify 播报“finish <description>”。这对于没有输出的插件作为反馈很有用。(所有插件)
  • blockcall 不要在一个线程中启动插件。要小心,因为它会锁定 Orca 直到插件完成。默认情况下,每个插件都在专用线程中运行。(所有插件)
  • error 播报返回的错误。(所有插件)
  • supressoutput 忽略 STDOUT 的输出。这对于可能具有 UI 且不将输出传递到 STDOUT 的插件很有用。(仅限子进程插件)
  • parameters_<parameter1> [parameter2] [parameter3]... 将参数传递给插件。(仅限子进程插件)
  • exec 在加载时运行插件一次。主要用于高级插件。(所有插件)
  • loadmodule 不作为子进程插件加载,而是将其加载为高级插件。(仅限高级插件)

示例

  • Plugin name__-__startnotify__+__control__+__alt__+__key_n.sh 使用 orca+ctrl+alt+n 运行,并播报进程的开始。
  • PluginName__-__error__+__stopnotify__+__shift__+__key_y.py 使用 orca+shift+m 运行,并播报完成。还会读取出现的错误。
  • Plugin_Name__-__key_m.py 使用 orca+m 运行。
  • Plugin_Name__-__exec.py 在 Orca 启动时运行一次。

插件类型

基本上有两种不同类型的插件。

子进程插件

子进程插件是简单的插件,也是默认类型。它们可以是任何类型的应用程序或脚本,它们写入 STDOUT 或 STDERR。Orca 执行插件,从 STDOUT/STDERR 读取,并在按下定义的快捷键或在屏幕阅读器启动时通过 exec 执行插件时,向用户播报结果。

需求
  • 执行权限
  • key_<key>exec 必须在文件名中定义。
示例

按下 orca+y 时说“Hello World”:文件名:Hello_world__-__key_y.sh

#!/bin/sh
echo "Hello World"

高级插件

这些类型的插件使用 spec.loader.exec_module 加载。您可以通过在文件名中使用 loadmodule 来加载它们。它们在 Orca 启动时就完全集成到 Orca 中。高级插件功能更强大,因为您可以在 Orca 上下文中进行操作。它们与 orca-customizations.py 非常相似。

需求
  • 用 python3 编写的正确代码
  • 文件扩展名 .py
  • 在文件名中使用 loadmodule
  • 文件名中必须定义 key_<key>exec
示例

配置 Orca 在加载插件时说/盲文显示“bang”而不是“!”。文件名:replace_chnames__-__loadmodule__+__exec.py

import orca.orca
orca.chnames.chnames["!"] = "bang"

插件托管

您也可以托管插件,使其可以通过插件管理器进行安装。如果您想托管插件,请阅读:/usr/share/SOPS/tools/hosting.txt

默认在线资源是: https://stormdragon.tk/orca-plugins/index.php[死链 2023-09-16—域名未解析]