Simple Orca 插件系统

出自 ArchWiki

通过 Simple Orca 插件系统 (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/SOPSP/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。当按下定义的快捷键或在启动屏幕阅读器时通过 exec 执行插件时,Orca 执行插件,从 STDOUT/STDERR 读取并将结果告知用户。

要求
  • 执行权限
  • 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 ⓘ]