diff --git a/src/fenrirscreenreader/commands/vmenu-navigation/page_down_vmenu.py b/src/fenrirscreenreader/commands/vmenu-navigation/page_down_vmenu.py new file mode 100644 index 00000000..2e6e1550 --- /dev/null +++ b/src/fenrirscreenreader/commands/vmenu-navigation/page_down_vmenu.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +# Fenrir TTY screen reader +# By Chrys, Storm Dragon, and contributers. + + +class command(): + def __init__(self): + pass + def initialize(self, environment): + self.env = environment + def shutdown(self): + pass + def getDescription(self): + return _('jump down 10% in v menu') + def run(self): + self.env['runtime']['vmenuManager'].pageDown() + text = self.env['runtime']['vmenuManager'].getCurrentEntry() + self.env['runtime']['outputManager'].presentText(text, interrupt=True) + def setCallback(self, callback): + pass \ No newline at end of file diff --git a/src/fenrirscreenreader/commands/vmenu-navigation/page_up_vmenu.py b/src/fenrirscreenreader/commands/vmenu-navigation/page_up_vmenu.py new file mode 100644 index 00000000..c1c78ffa --- /dev/null +++ b/src/fenrirscreenreader/commands/vmenu-navigation/page_up_vmenu.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +# Fenrir TTY screen reader +# By Chrys, Storm Dragon, and contributers. + + +class command(): + def __init__(self): + pass + def initialize(self, environment): + self.env = environment + def shutdown(self): + pass + def getDescription(self): + return _('jump up 10% in v menu') + def run(self): + self.env['runtime']['vmenuManager'].pageUp() + text = self.env['runtime']['vmenuManager'].getCurrentEntry() + self.env['runtime']['outputManager'].presentText(text, interrupt=True) + def setCallback(self, callback): + pass \ No newline at end of file diff --git a/src/fenrirscreenreader/core/vmenuManager.py b/src/fenrirscreenreader/core/vmenuManager.py index 80b40cd6..e3712e74 100755 --- a/src/fenrirscreenreader/core/vmenuManager.py +++ b/src/fenrirscreenreader/core/vmenuManager.py @@ -138,6 +138,9 @@ class vmenuManager(): self.env['bindings'][str([1, ['KEY_X']])] = 'SEARCH_X' self.env['bindings'][str([1, ['KEY_Y']])] = 'SEARCH_Y' self.env['bindings'][str([1, ['KEY_Z']])] = 'SEARCH_Z' + # page navigation + self.env['bindings'][str([1, ['KEY_PAGEUP']])] = 'PAGE_UP_VMENU' + self.env['bindings'][str([1, ['KEY_PAGEDOWN']])] = 'PAGE_DOWN_VMENU' except Exception as e: print(e) else: @@ -226,6 +229,32 @@ class vmenuManager(): else: self.currIndex[len(self.currIndex) - 1] -= 1 return True + + def pageUp(self): + if self.currIndex == None: + return False + menuSize = len(self.getNestedByPath(self.menuDict, self.currIndex[:-1])) + if menuSize <= 1: + return False + jumpSize = max(1, int(menuSize * 0.1)) # 10% of menu size, minimum 1 + newIndex = self.currIndex[len(self.currIndex) - 1] - jumpSize + if newIndex < 0: + newIndex = 0 + self.currIndex[len(self.currIndex) - 1] = newIndex + return True + + def pageDown(self): + if self.currIndex == None: + return False + menuSize = len(self.getNestedByPath(self.menuDict, self.currIndex[:-1])) + if menuSize <= 1: + return False + jumpSize = max(1, int(menuSize * 0.1)) # 10% of menu size, minimum 1 + newIndex = self.currIndex[len(self.currIndex) - 1] + jumpSize + if newIndex >= menuSize: + newIndex = menuSize - 1 + self.currIndex[len(self.currIndex) - 1] = newIndex + return True def getCurrentEntry(self): return self.getKeysByPath(self.menuDict, self.currIndex)[self.currIndex[-1]] diff --git a/src/fenrirscreenreader/fenrirVersion.py b/src/fenrirscreenreader/fenrirVersion.py index a43bb685..104d931a 100644 --- a/src/fenrirscreenreader/fenrirVersion.py +++ b/src/fenrirscreenreader/fenrirVersion.py @@ -4,5 +4,5 @@ # Fenrir TTY screen reader # By Chrys, Storm Dragon, and contributers. -version = "2025.06.15" +version = "2025.06.16" codeName = "testing"