Skip to main content

a fork of Tyler Spivey's tdsr with some minor maintainability improvements from community members

Project description

TDSR

This is a console-based screen reader. It has been tested under macOS, Linux and FreeBSD. It might also run on other *nix systems, but this hasn't been tested.

What works

  • Reading output
  • Reading by line, word and character
  • cursor keys (waits some amount of time and speaks)

Note

Compatibility is not guaranteed between versions.

Requirements

  • Python 3
  • pyte
  • speech server

Installation on macOS

  1. Install Python 3. If using Homebrew, brew install python3.
  2. Install pipx. If using homebrew, brew install pipx.
  3. pipx install tdsr

Installation on Linux

  1. Install Python 3 and Speech Dispatcher. They should be available from your package manager. You may also need to install Speech Dispatcher's Python bindings, if they were packaged separately by your distro.

Terminal setup

Open Terminal preferences, under Profiles check Use Option as Meta key.

Keys

(alt refers to the meta key.)

  • alt u, i, o - read previous, current, next line
  • alt j, k, l - read previous, current, next word
  • alt m, comma, dot - read previous, current, next character
  • alt k twice - spell current word
  • alt comma twice - say current character phonetically
  • alt c - config.
  • alt q - quiet mode on/off. When on, text is not automatically read.
  • alt r - start/end selection.
  • alt v - copy mode. Press l to copy the line the review cursor is on, or s to copy the screen.

Configuration

Once in the config menu, you can use:

  • r - set rate.
  • v - set volume (value between 0 and 100).
  • p - toggle symbol processing.
  • d - set cursor delay (in MS). The default is 20.
  • l - Toggle pausing at newlines.
  • s - Toggle repeated symbols
  • Enter - exit, saving the configuration.

Symbols

Symbols can be added in the configuration file (~/.config/tdsr/tdsr.cfg), under the symbols section.

The format is:

character code = name

Because of how the config system works, it's best to do this with one TDSR open, then exit and re-launch to see the changes.

Plugins

Custom key binds and handlers can be added via the plugins and commands section of the config files and a python module in the plugins directory that exports the following method signature:

# Name: parse_output
# Parameters: an array of strings (the lines from the terminal)
# Returns: an array of strings (the things to speak)
def parse_output(lines):
    return ["a list of things to say"]

Config file

In ~/.config/tdsr/tdsr.cfg you add to the plugins and commands section to modify the shortcut and terminal command that has been run

Required: [plugins] The plugin section maps to a letter you press with alt to trigger the plugin.

Optional: [commands] The command section is a regex of the command you ran previous to triggering the plugin (this minimizes processing time)

Optional: A regex to indicate the start of your prompt line in your terminal

Example

To add a shortcut for alt d to trigger a plugin called my_plugin add the following under [plugins]

my_plugin = d

If you have sub folders, separate them with a dot e.g. for plugins/me/my_plugin

me.my_plugin = d

To specify a command of echo "hi" (which makes parsing slightly more efficient) add the following under [commands]

my_plugin = echo "hi"

Use dots for sub folders, like the plugin config. You can use a regular expression to make it more flexible, e.g. to specify a command of echo "hi" or echo "bye"

my_plugin = echo "(hi|bye)"

The default prompt is match anything, if you use zsh you can use the following regular expression under [speech]:

prompt = ^➜\s{2}.+✗?

Errors

If you hear "error loading plugin" followed by an error, you can launch tdsr in debug mode

~/tdsr --debug

And search the logs for "Error loading plugin" to see more details

Repeating symbols

Symbols you would like condensed down to "42 =" instead of "= = = =" you can specify under the speech section

repeated_symbols_values = -_=!

License

Copyright (C) 2016, 2017 Tyler Spivey

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Changes after 2024 are from @stormdragon2976 and @jessebot.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tdsr2-0.1.0.tar.gz (26.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tdsr2-0.1.0-py3-none-any.whl (25.9 kB view details)

Uploaded Python 3

File details

Details for the file tdsr2-0.1.0.tar.gz.

File metadata

  • Download URL: tdsr2-0.1.0.tar.gz
  • Upload date:
  • Size: 26.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.11.12 Darwin/23.6.0

File hashes

Hashes for tdsr2-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ccb8e28343ed498ffee7808923085d12a9db9b464091764809ef18f1aac5007f
MD5 88df503be70c6e17f45673896566dcfa
BLAKE2b-256 f0796b2716e24b5a4bca62803ebf8dd12d065931ea01c8f2948b58d80c6e82da

See more details on using hashes here.

File details

Details for the file tdsr2-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: tdsr2-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 25.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.11.12 Darwin/23.6.0

File hashes

Hashes for tdsr2-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 74cc339909443227c7fd7a1ccfa94eba3ce4f9cc5320c3e62a3b96bd505c1152
MD5 0adba25c06a5e8361ee29f639f6e34bd
BLAKE2b-256 95b3bab22c9f68ae7affce76b63e5e8e42aeb4a6ca7a2a76a638ec6a809ca3bb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page