From b37b747ab15f70ad4012d3a2a3916a173d7e63b8 Mon Sep 17 00:00:00 2001 From: chrys Date: Fri, 29 Sep 2017 03:34:19 +0200 Subject: [PATCH] make navigation always verbose --- ...0-word_echo.py => 60000-word_echo_type.py} | 27 ++++------ .../61000-word_echo_navigation.py | 54 +++++++++++++++++++ 2 files changed, 64 insertions(+), 17 deletions(-) rename src/fenrir/commands/onCursorChange/{60000-word_echo.py => 60000-word_echo_type.py} (64%) create mode 100644 src/fenrir/commands/onCursorChange/61000-word_echo_navigation.py diff --git a/src/fenrir/commands/onCursorChange/60000-word_echo.py b/src/fenrir/commands/onCursorChange/60000-word_echo_type.py similarity index 64% rename from src/fenrir/commands/onCursorChange/60000-word_echo.py rename to src/fenrir/commands/onCursorChange/60000-word_echo_type.py index 6d713010..995dd85f 100644 --- a/src/fenrir/commands/onCursorChange/60000-word_echo.py +++ b/src/fenrir/commands/onCursorChange/60000-word_echo_type.py @@ -22,7 +22,9 @@ class command(): # is it enabled? if not self.env['runtime']['settingsManager'].getSettingAsBool('keyboard', 'wordEcho'): return - + # is naviation? + if self.env['screen']['newCursor']['x'] - self.env['screen']['oldCursor']['x'] != 1: + return # just when cursor move worddetection is needed if not self.env['runtime']['cursorManager'].isCursorHorizontalMove(): return @@ -41,22 +43,13 @@ class command(): # is there a word? if currWord == '': return - - # navigate by word (i.e. CTRL + Arrow left/right) - if abs(self.env['screen']['oldCursor']['x'] - self.env['screen']['newCursor']['x']) > 1: - # at the start of a word - if (x + len(currWord) != self.env['screen']['newCursor']['x']) and \ - (self.env['screen']['newCursor']['x'] != x): - return - - # navigate by char (left/ right) - else: - # at the end of a word - if not newContent[self.env['screen']['newCursor']['x']].isspace(): - return - if (x + len(currWord) != self.env['screen']['newCursor']['x']) and \ - (x + len(currWord) != self.env['screen']['newCursor']['x']-1): - return + # at the end of a word + if not newContent[self.env['screen']['newCursor']['x']].isspace(): + return + # at the end of a word + if (x + len(currWord) != self.env['screen']['newCursor']['x']) and \ + (x + len(currWord) != self.env['screen']['newCursor']['x']-1): + return self.env['runtime']['outputManager'].presentText(currWord, interrupt=True, flush=False) diff --git a/src/fenrir/commands/onCursorChange/61000-word_echo_navigation.py b/src/fenrir/commands/onCursorChange/61000-word_echo_navigation.py new file mode 100644 index 00000000..69963a15 --- /dev/null +++ b/src/fenrir/commands/onCursorChange/61000-word_echo_navigation.py @@ -0,0 +1,54 @@ +#!/bin/python +# -*- coding: utf-8 -*- + +# Fenrir TTY screen reader +# By Chrys, Storm Dragon, and contributers. + +from core import debug +from utils import word_utils +import string + +class command(): + def __init__(self): + pass + def initialize(self, environment): + self.env = environment + def shutdown(self): + pass + def getDescription(self): + return 'No Description found' + + def run(self): + # is navigation? + if not abs(self.env['screen']['oldCursor']['x'] - self.env['screen']['newCursor']['x']) > 1: + return + + # just when cursor move worddetection is needed + if not self.env['runtime']['cursorManager'].isCursorHorizontalMove(): + return + # for now no new line + if self.env['runtime']['cursorManager'].isCursorVerticalMove(): + return + # currently writing + if self.env['runtime']['screenManager'].isDelta(): + return + + # get the word + newContent = self.env['screen']['newContentText'].split('\n')[self.env['screen']['newCursor']['y']] + x, y, currWord, endOfScreen, lineBreak = \ + word_utils.getCurrentWord(self.env['screen']['newCursor']['x'], 0, newContent) + + # is there a word? + if currWord == '': + return + + # at the start of a word + if (x + len(currWord) != self.env['screen']['newCursor']['x']) and \ + (self.env['screen']['newCursor']['x'] != x): + return + + self.env['runtime']['outputManager'].presentText(currWord, interrupt=True, flush=False) + + def setCallback(self, callback): + pass +